ALGORITMOS
CONTENIDO
INTRODUCCION ESTRUCTURA DE UN ALGORITMO ESTRUCTURS DE CONTROL CONDICIONALES COMENTARIOS INSTRUCCIN DE SALTO (vaya_a) CONTADORES ACUMULADORES ESTRUCTURS DE CONTROL CONDICIONALES REPETITIVAS
Que es un algoritmo?
Secuencia de pasos o instrucciones, realizados en un orden determinado, con un fin claramente definido
Hombre ejecuta algoritmos constantemente Cajero automtico Ir a clase Lenguaje algortmico, permite plasmar claramente los pasos o instrucciones
Lenguaje algortmico (sencillo, formal, transicin)
Javascript: Lenguaje interpretado embebido en una pgina web HTML.
Estructura de un algoritmo Que hay?
<script type=text/javascript >
Instrucciones ejecutables Instrucciones no ejecutables Entrada de datos Procesamiento de datos Presentacin de resultados Los algoritmos son sensibles Tiene significado especial dentro a minsculas / maysculas. del algoritmo yDELIMITADORES por lo tanto su uso es restringido. No implican ejecucin de accin alguna. Uso obligatorio Palabras reservadas
</script>
Estructura de un algoritmo
Tiene significado especial dentro del <html> algoritmo y por lo tanto su uso es <head> restringido. </head> <body> <a href=http://www.escuelaing.edu.co>ECI</a> <script type="text/javascript"> DELIMITADORES document.write('Hola Mundo'); </script> <input type="button" id="send" value="Trx" /> </body> </html> Cuerpo del algoritmo
Palabras reversadas
Palabras propias del lenguaje
Palabras reservadas script var
Variables
Lugares de memoria donde se pueden almacenar datos
Caracterstica de las variables
Nombre
Tipo
Referencia a un espacio de memoria especfico. Representativo al contenido.
entero real Naturaleza del dato carcter Cadena de caracteres
Contenido
Dato almacenado
Una variable existe si tiene asignado un espacio de memoria
Declaracin de variables
Antes de cualquier instruccin ejecutable
Instrucciones declarativas No ejecutables (no afectan
contenido de variables, solo reserva memoria)
Cadena_de caracter
Palabras reservadas NO pueden ser utilizadas como nombres de variables.
var tipo lista_de_variables
real entero
Declaracin de variables
Al ejecutar este algoritmo se genera
Ej:
<html> <head> </head> <body> <script type="text/javascript"> var nombre, edad, altura, casado, genero; nombre='FRANCISCO'; edad=10; altura=1.80; casado=true; genero='M' ; </script> </body> </html>
A la variable no se le ha definido tipo ni valor basura
ENTORNO DE MEMORIA
Se solicita espacio en memoria para cinco variables.
Variable nombre edad altura casado genero
Tipo ? ? ? ? ?
Contenido ? ? ? ? ?
El tipo de variable es de acurdo con el valor asignado.
Instruccin de asignacin
Instruccin de asignacin
nombre = x edad = 8
Tipo de variable
caracter caracter
Observacin sobre la instruccin
Es vlida e implica el cambio del contenido de la variable nombre por el carcter . Es vlida e implica el cambio del contenido de la variable edad por el carcter 8.
Permite cambiar el contenido de una variable x
edad = x caracter
Operaciones aritmticas solo con variables numricas
Es vlida siempre y cuando la variable exista y sea de tipo carcter. Implica el cambio del contenido de la variable edad por el contenido
de la variable .
pais = Colombia campeon
cadena_de 20
Es vlida e implica el cambio del contenido de la variable pais por la cadena de caracteres
Colombia campeon
valor = 3 saldo = b cadena_de 10 cadena_de 12 Es vlida e implica el cambio del contenido de la variable valor por la cadena de caracteres 3. Es vlida siempre y cuando la variable exista y sea de tipo cadena de caracteres. Implica el cambio del contenido de la variable saldo por el contenido de la variable
b.
Instruccin de asignacin
Variables numricas a=5 5=a a == 5 5 != a a=d
Entorno de memoria para Inicializar una variable
significa definir su contenido (con instrucciones de asignacin)
Contenido de la variable a es cambiado por el contenido de la variable d
a=8 d=a
a=8 d=d+a
Operadores aritmticos
Suma
Resta Multiplicacin
+
*
variable
Constante Variable Expresin
Divisin
Ej: Sumar los nmeros 7 y 20
<html> <head> <title> SUMAR DOS NUMEROS </title> </head> <body> <script type="text/javascript"> var resultado ; resultado = 7 + 20 ; </script> </body> </html>
Entorno de memoria Terminacin anormal de un algoritmo aborto Otra forma de hacer el algoritmo
Operaciones entre enteros y reales
Tener presente tanto la operacin como los tipos de los operandos (entero / real)
1 --- = 0.5 2 Instruccin Operandos n1 res = n1 + n2 entero n2 entero La parte decimal se indica con punto (.) Resultado res entero Para la divisin, si los operandos son enteros, se trunca la parte decimal (1/2=0) Observaciones
res = n1 - n2
res = n1 * n2 res = n1 / n2
entero
real real
real
entero real
real
real real
Operaciones entre enteros y reales
Supngase que las variables op1 y op2 son enteras y que op3 es real.
Instruccin
Operandos op1 op2 op3
7 13.8
Resultado res
-2.8 102
Observaciones
res = op1+op2-op3
Por lo menos uno de los operandos es real, por lo tanto el resultado es un real
res = op1/op2 + 101
Como op1 y op2 son enteras, op1/op2 da 1 y no 1.5
Aunque op1 es entero op1/2.0 da 2.5, por que 2.0 es una constante real Como op2 es una variable entera y 3 es una constante entera, op2/3 da un entero.
res = op3*2 op1/2.0
1.5
res = op1 + op2/3 17 14
21
Ejercicios
Instrucciones de entrada o salida
Generalizar suma_de_7_y_20
Usuario vs. Computador (usuario hace los requerimientos y se beneficia del algoritmo)
Instrucciones de i/o
Instruccin de entrada
document.write( a, b, c );
Instruccin de salida
document.write(grupo 1 de SPPC );
Permite la comunicacin del usuario con la mquina. Consiste en almacenar en una variable el ( valor document.write edad:, suministrado por el usuario. Una lectura implica una asignacin.
prompt
document.write
Permite la comunicacin de la mquina con el usuario.
a);
variable=prompt( ',' ) ;
20 = prompt( ingrese nombre, ) ; ?
document.write( a, b, c ); document.write( sppc-1 ); document.write( edad:, a );
1. Sumar dos nmeros.
Prueba de escritorio
Ejecucin de un algoritmo es hacer las veces de mquina Su efecto se refleja en la pantalla y en el entorno de memoria.
<html> <head> <title> SUMAR DOS NUMEROS </title> </head> <body> <script type="text/javascript"> var num1,num2,suma document.write( 'Suma de dos numeros cualesquiera ) ; document.write( Por favor dame el primer nmero. ); num1 = prompt( Numero 1 ) ; document.write( Por favor dame el segundo nmero. ); num1 = prompt( Numero 1 ) ; Suma = num1 + num2 document.write( num1,'+',num2,'=',suma ) ; document.write( 'Suma de dos numeros finalizada' ) ;
Qu pasa si el usuario ingresa un valor real en lugar de uno entero? PRUEBA DE ESCRITORIO Cmo seria la versin de esta solucin para nmeros reales?, y si ingresa nmeros Instruccin Efecto enteros? Cmo condicionar el algoritmo a suma de Tipo Cont dos nmeros enterosVar positivos? El espacio de memoria Suma de dos reservado para Necesitamos la forma de condicionar lalas13 num1 entero ? el Por favor dame el Porvariables favor dame num1, num2 y nmeros 13 + -4 = 9 realizacin de la suma. suma quedan libres segundo nmero num2 entero ? -4 finalizada primer nmero
Para establecer relacin entre los operandos suma relacionales entero 9 ? necesitamos los operadores . Para exigir que la condicin ser positivo sea satisfecha por ambos operandos se requiere de los conectores lgicos.
</script> </body> </html>
Operadores relacionales
Permiten establecer relaciones entre los operandos.
CONDICIONES
Operador
Descripcin
== >
< != >= <=
Igual que Mayor que
Menor que Diferente de Mayor o igual que Menor o igual que
Conectores lgicos
Permiten la creacin de condiciones compuestas
&&, ||
Condicin simple Condicin num1 sea mayor que cero num2 sea mayor que cero Restringir la suma a operandos positivos Expresin num1 > 0 num2 > 0 num1 > 0 && num2 > 0 Condicin simple
Necesitamos una nos permita preguntar si la condicin se satisface.
Condicin compuesta herramienta que
Estructuras de control condicionales
Permite que la realizacin de una o ms acciones este sujeta a la satisfaccin/cumplimiento de una o ms condiciones
Estructuras de control condicional NO REPETITIVA
Estructuras de control condicional REPETITIVA
Estructuras de control condicional NO repetitiva if simple
Se utiliza cuando el cumplimiento de la condicin o de las condiciones implica la ejecucin de una sola instruccin. Por que al cumplirse la condicin la
instruccin se ejecuta una y solo una vez
if ( condicin o condiciones ) instruccin
Evaluacin e dos o ms condiciones conectadas con y o con if ( k >0) c1 c2 c1 y c2 c1 c2 document.write( k,es un nmero positivo. ) ; F F F F F F V V
V
V
F
V
F
V
V
V
Ejercicios
Construya la condicin o las condiciones que permitan evaluar si: El valor de la variable m est entre -2 y 10. (m -2 &6 m 10 ) El valor de la variable m es un nmero par que pertenece al intervalo (c,d]. ( (m/2)*2 = m && (m > c && m d) ) El valor de la variable m debe ser 2 veces el valor de la variable n si el valor de n es negativo. Si n es positivo, m debe ser 10 veces el valor de n. ( (m=2*n && n < 0) || (m=10*n && n>0) )
Estructuras de control condicional NO repetitiva if simple
<script type=text/javascrpt > var num1,num2,suma; document.write( Suma de dos nmeros cualesquiera ); document.write( Por favor dame el primer nmero. ); num1 = prompt( priemr numero ) ;
<script type=text/javascrpt > var num1,num2,suma; document.write( Suma de dos nmeros positivos cualesquiera ); document.write(Por favor dame el primer nmero. ); num1 = prompt( primer numero ); document.write(Por favor dame el segundo nmero. ); num2 = prompt( segundo numero );
document.write( Por favor dame el segundo nmero. ); num2 = prompt( segundo numero ) ;
suma = num1 + num2 document.write( num1,+,num2,=,suma); document.write( Suma de dos nmeros finalizada ); </script>
if ( num1 > 0 && num2 > 0 ) if ( num1 > 0 && num2 > 0 )
document.write(suma,=,num1,+,num2 ); document.write(Suma de dos nmeros finalizada ); </script> suma = num1 + num2;
Estructuras de control condicional NO repetitiva if de bloque
Se utiliza cuando el cumplimiento de la condicin o de las condiciones implica la ejecucin de una o ms instrucciones.
if ( condicin o condiciones ) {
Estructuras de control condicional NO repetitiva if de bloque
<script type=text/javascrpt> var num1,num2,suma; document.write( Suma de dos numeros positivos cualesquiera ); num1 = prompt( Por favor dame el primer numero. ); num2 = prompt( Por favor dame el segundo numero. );
if ( num1 > 0 && num2 > 0 ) { }
suma = num1 + num2; document.write(suma,=,num1,+,num2 );
document.write(Suma de dos nmeros finalizada ); </script>
Estructuras de control condicional NO repetitiva if de bloque
suma_dos_numeros_enteros_positivos <script type=text/javascript> var num1,num2,suma, resp, nombre ; if ( num1 > 0 && num2 > 0 ) { suma = num1 + num2 document.write( suma,=,num1,+,num2 ) ; } if ( num1 0 || num2 0 ) document.write( Uno o los dos nmeros es(son) negativo(s) o cero ) ; document.write( nombre,, hasta luego. ) ; document.write( Tarea finalizada. ) ; } if ( resp s && resp S ) { escriba Bueno ser en otra ocasin. } </script> document.write( nombre,, por favor dame el segundo nmero. ) ; num2 = prompt( Numero ) ;
document.write( Suma de dos nmeros positivos cualesquiera Deseas intentarlo (s:si, cualquier otro caracter: no) ) ; resp = prompt ( Continuar ) ;
if ( resp = s || resp = S ) { document.write( Cual es tu nombre? ) ; nombre = prompt( Nombre ) ; document.write( nombre,, por favor dame el primer nmero. ) ; num1 = prompt( Numero1 ) ;
Estructuras de control condicional NO repetitiva if de bloque con opcin else
Permite ordenar la ejecucin de una o ms instrucciones en caso de que la condicin no se cumpla.
Si SI se cumple la if ( condicin o condiciones ) { condicin
} else {
Solo se ejecuta uno de los dos Si NO se cumple la condicin
Estructuras de control condicional NO repetitiva if de bloque con opcin else
<script type=text/javascript > } var num1,num2,suma, resp, nombre ; resp = prompt( Suma de dos nmeros positivos cualesquiera Deseas intentarlo (s:si, cualquier otro caracter: no) ) ; if ( resp = s || resp = S ) { nombre = prompt( Cual es tu nombre? ) ; num1 = prompt( nombre,, por favor dame el primer nmero. ) ; num1 = prompt( nombre,, por favor dame el segundo nmero. ) ; if ( num1 > 0 && num2 > 0 ) { suma = num1 + num2 document.write( suma,=,num1,+,num2 ) ; } else { document.write( nombre,, hasta luego. ) ; document.write( Tarea finalizada. ) ; document.write( Alguno de los nmero es a cero.) ;
} else { document.write( Bueno ser en otra ocasin. ) ; }
</script>
Estructuras de control condicional NO repetitiva if de bloque con opcin else
if ( ) {
if ( ) { if ( ) }
if ( ) { if ( ) {
if ( ) instruccin
} else {
} else { } if ( ) instruccin if ( ) {
}
} else { } } }
COMENTARIOS
Anotaciones que se hacen en el algoritmo con el fin de documentarlo o hacer aclaraciones sobre partes complejas del mismo.
//
Directorio de variables: Descripcin del uso que se le da a cada variable dentro del algoritmo.
<script type=text/javascript> // Suma de dos nmeros var num1,num2,suma ; // Directorio de variables // num1: primer nmero // num2: segundo nmero // suma: resultado de num1 + num2 dcoment.write( Suma de dos nmeros positivos cualesquiera ) ; num1=prompt(primer numero ) ; // primer nmero num2 = prompt(segundo numero ) ; // segundo nmero // Verifica que los dos nmeros sean positivos, // para realizar la suma y escribir el resultado. if ( num1 > 0 && num2 > 0 ) { suma = num1 + num2 document.write( suma,=,num1,+,num2) ; } document.write( Suma de dos nmeros finalizada); </script>
COMENTARIOS
<script type=text/javascript> // escriba Que hace este algoritmo
</script>
Estructuras de control condicionales repetitivas
Permiten alterar la secuencia de ejecucin del algoritmo. Son repetitivas por que al cumplirse la condicin, su cuerpo de instrucciones se ejecutar automticamente hasta que la evaluacin de la condicin deje de ser verdadera. A cada ejecucin del cuerpo de la estructura de control condicional repetitiva se le llama Iteracin.
Estructuras de control condicionales repetitivas while (mientras que)
Permite ordenar la ejecucin de una o ms instrucciones en caso de que la condicin se cumpla.
Verdadera
while ( condicin o condiciones ) {
Caulquier instruccin. Recomendaciones:
Variables de control
No utilizar instrucciones CICLO: que modifiquen aquellas variables utilizadas en la Posibilidad de condicin (cicloejecutar infinito). una serie
de instrucciones ms de una vez.
Ejercicios
Pedir nmeros a un usuario hasta que el nmero dado sea negativo.
<script type=text/javascript> // Nmeros negativos var num; // Directorio de variables // num: nmero a ser analizado document.write( Digite nmeros hasta que ingresar negativo ) ; num = 0; while ( num >= 0 ) { document.write( Por favor dame un nmero. ) ; num = prompt(numero ) ; // cualquier nmero } document.write( Ingresaste el nmero negativo, num ) ; </script>
Ejercicios
(Contador y Acumulador)
1. 2. 3. 4. Imprimir por pantalla los nmeros del 1 al 100. Imprimir por pantalla los nmeros pares del 1 al 100. Imprimir por pantalla la suma de los nmeros del 1 al 100. Calcular la edad y la matrcula promedio para n estudiantes. <script type=text/javascript> var num; 1ro. Inicializacin
de la variable de control document.write( Serie de numeros del 1 al 100 );
num = 1;
2do. Condicin
while( num <= 100 ) {
document.write( num + ); num = num + 1; 3ro. Manejo de la variable_de_control
document.write(FIN ); </script>
Ejercicios
1. Para n nmeros ingresados por el usuario diga:
Cuantos son pares Cuantos son impares Valor de la sumatorio de los nmeros pares Valor de la sumatoria de los nmeros impares
2. Calcular iterativamente la suma 1+2+3+ ...+n, donde n es un valor dado. Validar que n > 1. 3. Para el siguiente par de funciones, encontrar el valor de N tal que f(N) > g(N):
f(N) = 20*N + 100 g(N) = N + 2*N + 17
Ejercicios
4. 5. 6. 7. 8. Dada una cantidad de nmeros n, decir cuanto nmeros son mayores que cero y cuantos son menores que cero. Decir cuantas veces el usuario ingresa la frase Hola Mundo. Escribir por pantalla la palabra SPPC1 tantas veces como el usuario lo desee. Dada una cantidad de nmeros n, calcular su suma y su media aritmtica. Haga prueba de escritorio al siguiente algoritmo:
ejercicio_8 empiece entero cont,lim
lim 10 cont 1 mq ( cont < lim ) haga escriba cont cont cont + 1 lim lim + 1 fin_mq escriba Valor de cont: , cont escriba Fin del ejercicio 8 pare termine
Ejercicios
9. De n nmeros dados, sumar los que son menores que un nmero dado y multiplicar los que sean mayores o iguales a ese valor dado. 10. Averiguar la longitud y la cantidad de vocales que hay en un texto que finaliza con el caracter asterisco (*). 11. Construya un algoritmo que pida los lmites de un intervalo y escriba los nmeros reales que pertenecen a el, de 0.1 en 0.1. 12. Construya un algoritmo que genere una secuencia de nmeros como la que se muestra en el ejemplo, de acuerdo con el valor de un entero positivo ingresado por el usuario. Ej 1:
Valor entero suministrado por el usuario: 4 Resultado: 1 2 2 3 3 3 4 4 4 4 Valor entero suministrado por el usuario: 5 Resultado: 1 2 2 3 3 3 4 4 4 4 5 5 5 5 5
Ej 2:
Ejercicios
13. Generar la tabla de multiplicar que el usuario desee. El multiplicador deber variar desde 0 hasta 9. 14. Generar las tablas de multiplicar del 1 al h, donde h > 0 y el multiplicador va de 0 a 9. 15. Escriba un algoritmo que genere la siguiente secuencia de nmeros enteros : Valor dado por el usuario: 5 1335555777777779999999999999999 El valor entero positivo es el nico dato que el usuario tiene que suministrar. 16. Escriba un algoritmo que genere la siguiente secuencia de nmeros enteros : Valor dado por el usuario: 4 1 4 4 9 9 9 16 16 16 16 El valor entero positivo es el nico dato que el usuario tiene que suministrar. 17. Hacer un algoritmo que genere los primeros 11 trminos de la serie de Fibonacci. 18. Obtener el resultado de las siguientes operaciones sin utilizar los operadores de multiplicacin y divisin.
m/n m*n
Estructuras de control condicionales repetitivas 1ro. Inicializacin for
for( expr1 ; expr2 ; expr3 ) {
3ro. Se incrementa en 1 la variable_de_control CICLO:
Posibilidad de ejecutar una serie 2do. Condicin implcitade instrucciones ms de una vez. variable_de_control valor_final
expr1: Se evala incondicionalmente una vez al principio del bucle. expr2: Se evala al principio de cada interaccin, si se evala como TRUE, el bucle continua, y se ejecutan las instrucciones que conforman el cuerpo del for. Si se evala como FALSE, la ejecucin de las instrucciones del cuerpo del for termina. expr3: Se ejecuta al final de cada iteracin.
Estructuras de control condicionales repetitivas for
Ejemplos
for( i=1 ; i <= 5 ; i=i+1 ) { document.write( Colombia ) ; } num = 1 ; for( i=1 ; i<=4 ; i=i+1 ) { document.write( num ) ; num = num + 1 ; } for( i=-7 ; i < -1 ; i=i+1 ) { document.write( i ) ; } for( i=5 ; i < 1 ; i=i+1 ) { document.write( i ) ; }
Escriba los nmeros impares del 1 al 100 (utilizando estructura para)
Escriba los nmeros impares del 1 al 100 (utilizando estructura while)
Quiz
Generar las tablas de multiplicar del 1 al 9, donde laprimera tabla que se debe mostrar es la que el usuario desee. NOTA: El multiplicador deber variar desde 0 hasta 9. Ej: Nmero dado por el usuario n=5 La primera tabla debe ser la del 5, seguida por las tablas del 1, 2, 3, 4, 6, 7, 8 y 9
5X0 5x1 ... 5x9
1x0 1x1 ... 1x9
2x0 2x1 ... 2x9
3x0 3x1 ... 3x9
4x0 4x1 ... 4x9
6x0 6x1 ... 6x9
7x0 7x1 ... 7x9
8x0 8x1 ... 8x9
9x0 9x1 ... 9x9
Ejercicios
Pruebas de escritorio <script type=text/javascript> var cont, num ; num = 3 ; cont = 15 ; while( cont >= 2 ) { document.write( num ) ; num = num + 3 ; cont = cont 7 ; } </script> 1. 2. Qu hace el algoritmo? Valor final de las variables num y cont? <script type=text/javascript> var cont ; for( cont=1 ; cont<=100 ; cont=cont+1 ) { document.write( Quien mal anda, mal acaba. ) ; } </script> 1. 2. Que hace el algritmo? Valor final de la variable cont?
Ejercicios
Pruebas de escritorio <script type=text/javascript> var x, m ; x=3; for( m=2+x ; m <= 10 ; m=m+2 9 { document.write( m 9 ; } </script> 1. 2. Que hace el algoritmo? Valor final de las variables x y m? Pedir un nmero entero positivo n a un usuario y hacer lo sgte: Si el nmero es par, que escriba los nmeros de 1 a n asi: n = 10 1 10 2 9 3 8 4 7 5 6 Si el nmero es impar, que escriba los nmeros de 1 a n asi: n=7 49 25 9 1
Quiz
Hacer un algoritmo que simule el comportamiento de un reloj digital, imprimiendo la hora, minutos y segundos de un da desde las 00:00:00 horas hasta las 23:59:59 horas Hacer prueba de escritorio.