GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
Introducción
La presente guía presenta un acercamiento teórico a las bases que permiten desarrollar las competencias necesarias para crear un algoritmo, y al final presentan ejercicios que deben ser entregados como muestra de que ha comprendido la temática presentada. El acercamiento teórico se da en tres secciones que deben ser estudiadas en forma secuencial, y que no están atadas a ningún tipo de lenguaje específico por ser de carácter general. Su objetivo será permitir el desarrollo en cada aprendiz de la lógica necesaria para abordar y comprender cualquier programa. Cualquier inquietud con gusto será resuelta.
SECCIÓN I Uso de las Estructuras de Control
Los computadores, como cualquier máquina, están diseñados para realizar tareas repetitivas. Es por ello que nuestros programas pueden aprovecharse de este principio para realizar una determinada secuencia de instrucciones un cierto número de veces. Para ello, utilizamos las estructuras de control llamadas en ciclos que nos ayudan, usando unas pocas líneas, a realizar una tarea incluida dentro del ciclo un cierto número de veces definido por nosotros mismos. En sí, las estructuras de control nos permiten cambiar el orden de las declaraciones ejecutadas en nuestros programas, en donde se exige en muchas ocasiones la repetición de acciones sucesivas o la elección de una determinada secuencia y no de otra dependiendo de las condiciones específicas de la ejecución. Es por eso que hay dos tipos de estructuras de control: 1. Estructuras de iteración o repetición: Nos permite ejecutar secciones específicas de código una cantidad determinada de veces. 2. Estructuras de selección: Nos permite seleccionar secciones específicas de código para ser ejecutadas a partir de una condición.
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
1. Estructuras de iteración o repetición
1.1.Ciclo while
Sin duda el ciclo más utilizado y el más sencillo. Lo usamos para ejecutar las instrucciones contenidas en su interior siempre y cuando la condición definida sea verdadera.
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
1.2.Ciclo do/while
Este tipo de bucle no difiere en exceso del anterior. La sintaxis es la siguiente:
La diferencia con respecto a los bucles while es que este tipo de bucle evalúa la condición al final con lo cual, incluso si la condición es falsa desde el principio, éste se ejecuta al menos una vez.
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
1.3.Ciclo for Donde: • •
• •
expresión1 es la iniciación del bucle. Sólo se ejecuta una vez, al principio, cuando el flujo del programa llega al bucle. expresión2 es la condición. Mientras que expresión2 se evalúe a cierto, el bucle estará iterando. Se evalúa al inicio de cada iteración, y si no se verifica la condición la siguiente iteración ya no se realiza y finaliza el bucle, continuando la ejecución del programa con el resto del código de después del for. expresión3 es el paso de iteración. Se ejecuta después de cada iteración, y generalmente modifica el valor de alguna variable (separadas por comas si hay más de una). comandos son todas las instrucciones a ejecutar (terminadas en punto y coma) cuando se cumple la condición de entrada al ciclo.
Esta es la sintaxis:
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
2. Estructuras de selección
2.1. Las condiciones if Cuando queremos que el programa, llegado a un cierto punto, tome un camino concreto en determinados casos y otro diferente si las condiciones de ejecución difieren, nos servimos del conjunto de instrucciones if, else y elseif. La estructura de base de este tipo de instrucciones es la siguiente:
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
Llegados a este punto, el programa verificará el cumplimiento o no de la condición. Si la condición es cierta las instrucciones 1 y 2 serán ejecutadas. De lo contrario (else), se ejecutará la instrucción X.
Esta estructura de base puede complicarse un poco más si tenemos cuenta que no necesariamente todo es blanco o negro y que muchas posibilidades pueden darse. En estos casos hablamos por lo tanto de “condiciones anidadas” que tendrían una estructura del siguiente tipo:
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
Si la condición1 se cumple se ejecutarán las instrucciones 1 y 2, de lo contrario (elseif) se pregunta si es cierta la condición2, en cuyo caso se harán las instrucciones A y B, y si tampoco es cierta la condición2 (else) se ejecutará la instrucción X.
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
De este modo podríamos introducir tantas condiciones como queramos dentro de una condición principal. Sin embargo cuando empezamos a tener varias condiciones anidadas, como acabamos de ver, puede ser más recomendable emplear la estructura switch debido a que esta no genera tantos retardos.
2.2. Estructura switch El flujo procede linealmente de arriba a abajo, comparando el valor de la variable con cada valor de los case, y ejecutando el código asociado si se cumple la condición. Es decir si el valor de variable es valor1 se ejecutarán los comandos1, los cuales son una o más instrucciones terminadas en punto y coma. Si variable no es igual al valor1 el flujo de programa comparará con valor2, y seguirá comparando hasta que encuentre una coincidencia. En caso de que no se cumpla ninguna, se ejecuta el código asociado a la cláusula default. El comportamiento sería similar a tener un if por cada case, uno detrás del otro. Hay que destacar que cuando se termina de ejecutar el código de un case, si no se finaliza el switch explícitamente con un break, se continúa ejecutando el código del siguiente case aunque no se cumpla la condición, hasta que se llegue al final del bloque switch o se finalice este con un break. Por eso siempre se debe terminar un case con un break. Su sintaxis es:
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
SECCIÓN II Uso de los diagramas de flujo y ejemplos
Hasta el momento ya se ha visto como es la representación de las estructuras de control en diagramas de flujo, sin embargo al momento de diseñar un programa son necesarios otros símbolos que se describen a continuación:
Símbolo
Descripción Indica el inicio y el final de nuestro diagrama de flujo. También puede ser un poco más ovalado. Indica la entrada y salida de datos. Símbolo de proceso y nos indica la asignación de un valor en la memoria (asignación a una variable) y/o la ejecución de una operación aritmética. Indica la salida de información por impresora. Conector dentro de página. Representa la continuidad del diagrama dentro de la misma página. Conector fuera de página. Representa la continuidad del diagrama en otra página. Indica la salida de información en la pantalla o monitor. Símbolo de decisión. Indica la realización de una comparación de valores.
Ejemplos: Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
1. Función que suma 2 números: 2. Función que hace una operación aritmética según el valor de la variable día, que contiene los días de la semana, y muestra el resultado: Lunes: suma, Martes: resta Miércoles: multiplica Jueves: No calcula ningún valor Viernes: Divide Sábado y domingo: Muestra el resultado en 0 Esta función usa la estructura Switch. 3. Función que suma los 5 primeros números pares de manera acumulativa y muestra el resultado si son mayores que 5. Esta función usa las estructuras For e If .
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
GUÍA DE APRENDIZAJE 2 Programación Módulo configuración de dispositivos activos
Inicio de la función que suma
El usuario ingresa el primer número y se guarda en una variable llamada num1
El usuario ingresa el primer número y se guarda en una variable llamada num2
Se realiza la operación entre los números num1 y num2 almacenados en memoria, y se guarda en otra variable llamada suma.
Se muestra en pantalla el resultado de la operación almacenado en una variable llamada suma
Símbolo de fin (se omitió)
Elaborado por Lina Mckoll Hernández Instructora Teleinformática
Di día es miércoles se multiplican los números y se va mostrar Result=15 Si día es jueves no se hace ningún proceso y se va a mostrar Result=15. Result no cambia porque es una variable a la que ya se le había asignado el valor 15 anteriormente, y hasta no reescribir otro valor, este no cambiará. Si día es vienes se dividen los números y se va a mostrar Result=1.66 Si día no es ninguno de los anteriores el flujo del programa va a la default que es llevar un cero a Result. Luego se va a mostrar este resultado. Se muestra el valor de Result, el cual cambia dependiendo del día. Se termina con el símbolo de fin.
Después de que el usuario ingresa los números (ejemplo sea 5 y 3): Si el día es lunes se suman los números y se va amostrar Result= 8. Si día es martes se restan los números y se va a mostrar Result=2
En esta función las variables implicadas son “i” y “pares”. Una vez el programa inicie esperará hasta que la “i” tenga el valor de 0 (expresion1 según el ejemplo de la pagina3). Primer ciclo i=0: Cuando esta condición se cumpla preguntará si la i es menor que 5 (expresion2 según el ejemplo de la pagina3), y como esta condición es verdadera pues i=0 en la primera iteración, el programa ingresará y le llevará a pares el valor 2 (pares=2*i + 2 = 2*0 +2). Después preguntará si el valor de pares es mayor que 5, lo cual es falso porque pares=2. Por tanto pasa a incrementar el valor de i en una unidad, es decir i=1 (expresión 3 del ejemplo de la página 4). Segundo ciclo i=1: Nuevamente el programa preguntará si la i es menor que 5 (expresion2 según el ejemplo de la pagina3), y como esta condición es verdadera pues i=1 en la segunda iteración, el programa ingresará y le llevará a pares el valor 4 (pares=2*i + 2 = 2*1 +2). Después preguntará si el valor de pares es mayor que 5, lo cual es falso porque pares=4. Por tanto pasa a incrementar el valor de i en una unidad, es decir i=2 (expresión 3 del ejemplo de la página 4). Tercer ciclo i=2: Nuevamente el programa preguntará si la i es menor que 5 (expresion2 según el ejemplo de la pagina3), y como esta condición es verdadera pues i=2 en la tercera iteración, el programa ingresará y le llevará a pares el valor 6 (pares=2*i + 2 = 2*2 +2). Después preguntará si el valor de pares es mayor que 5, lo cual es verdadero porque pares=6. Por tanto mostrara el valor de pares y pasará luego a incrementar el valor de i en una unidad, es decir i=3 (expresión 3 del ejemplo de la página 4). Cuarto ciclo i=3: Nuevamente el programa preguntará si la i es menor que 5 (expresion2 según el ejemplo de la pagina3), y como esta condición es verdadera pues i=3 en la cuarta iteración, el programa ingresará y le llevará a pares el valor 8 (pares=2*i + 2 = 2*3 +2). Después preguntará si el valor de pares es mayor que 5, lo cual es verdadero porque pares=8. Por tanto mostrará el valor de pares y pasará luego a incrementar el valor de la “i” en una unidad, es decir i=4 (expresión 3 del ejemplo de la página 4).
Quinto ciclo i=4: Nuevamente el programa preguntará si la i es menor que 5 (expresion2 según el ejemplo de la pagina3), y como esta condición es verdadera pues i=4 en la quinta iteración, el programa ingresará y le llevará a pares el valor 10 (pares=2*i + 2 = 2*4 +2). Después preguntará si el valor de pares es mayor que 5, lo cual es verdadero porque pares=10. Por tanto mostrara el valor de pares y pasará luego a incrementar el valor de i en una unidad, es decir i=5 (expresión 3 del ejemplo de la página 4). Sexto ciclo i=5: Nuevamente el programa preguntará si la i es menor que 5 (expresion2 según el ejemplo de la pagina3), y como esta condición es falsa pues i=5 en la sexta iteración, el programa NO ingresará por lo que no habrá un sexto ciclo, y se termina la función. Escrito a manera de programa, este ejemplo queda de la siguiente manera: 1 Function ejemplo( ) 2 { 3 for(i=0;i<5;i++) 4 { 5 Pares=(2*i)+2; 6 if (pares>5) 7 { 8 document.write(pares); 9 } 10 i=i+1; 11 } 12 } 1 Declaración de la función 2 Llave que abre la función 3 Declaración del for: Se inicia cuando i sea 0, Se repetirá hasta cuando i deje de ser menor que 5 Cada que se ejecute una vez el ciclo la i aumentara en 1. (Esta última línea se puede omitir pues ya está en en 10) 4 Llave que abre el for 5 Asignación a la variable Pares 6 Declaración de condicional que se ejecutara solo si pares es mayor que 5 7 Llave que abre el if. 8 comando para publicar en pantalla un mensaje, variable, etc. Con él se muestra el valor de pares. 9 Llave que cierra el if 10 Tercera expresión de la declaración del for en la línea 3. Con esto incrementamos la i en una unidad. i=i+1 es lo mismo que tener i++. 11 Llave para cerrar el for. 12 Llave para cerrar la función.
SECCIÓN III Otros ejemplos…Análisis de flujo
Variable: Las variables son identificadoras que hacen referencia a un lugar de la memoria en donde se almacena un dato. Una variable está asociada a un tipo de datos, el cual y en función del tamaño del mismo determina la cantidad de bytes que serán necesarios para almacenar la variable. Generalmente las variables se definen al comienzo de un programa. Función: Una función es un conjunto de líneas de código que realizan una tarea específica y puede retornar un valor. Las funciones pueden tomar parámetros que modifiquen su funcionamiento. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código. A continuación se muestra un algoritmo que asigna ciertos valores a las variables, y cuya finalidad es solo su entrenamiento en el seguimiento del flujo de un programa determinado: var var var var
x=4; y=0; z=0; m=100;
//declaración de las variables implicadas en el algoritmo y //su inicialización en un valor determinado, este valor se //asigna la primera vez carga el programa
for (i=0; i<=20; i++) { x=x+1; y=x+10; z=y-1; switch (x) { case 8: m=10; break; case 9: y=y-10; z=y; break;
//declaración del for: inicia cuando i=0 //y continuara ejecutándose hasta que i no sea <=20 //asignación a variable: a x le llevamos el valor de x+1 //note que todas las asignaciones terminan en “;” //switch que dependerá del valor de la variable x //cuando x vale 8 tomara hará que //m sea 10 y luego buscará¡ la palabra break //cuando encuentra break se sale del caso x=8 y se //va al final del switch, es decir donde se cierra //la llave del switch
case 10: x=0: break; default: m=m-1; } if (x=y) { i=20; } else { m=m+10; } }
//cuando x no es ninguno de los casos anteriores //entra acá y a m le lleva el valor de m -1 //en esta línea se cierra el switch con la llave //este if también hace parte del bucle for, acá //preguntamos si los valores de x y de y son iguales //en caso de que sea cierto el algoritmo hará i=20 y // no preguntara por el else que significa "sino" //si x no es igual a y, viene acá y entra a ejecutar lo //que este entre las llaves, es decir m=m+10. //cuando solo se va a ejecutar una instrucción se //pueden omitir las llaves //justo antes de terminar un ciclo del bucle for, la variable //que lo controla, es decir la "i" se incrementa en 1 porque //escribimos i++ en la declaración inicial del for. //Después de incrementar la variable controladora del for //el programa vuelve a la declaración del for (arriba) y se //preguntará si el valor de la variable i que tiene
//almacenada en memoria cumple la condición de ser menor o //igual 20, si esto no se cumple no ejecutará nuevamente el //for y el bucle termina.
Cada una de las variables tiene un espacio asignado en memoria, el cual irá cambiando dinámicamente según el flujo del programa. A continuación se muestra una tabla con los valores de las variables. El valor más a la derecha indica el último asignado. Variable\Ciclo i x y z m
0 0 4 0 0 100
1 0/1 5 15 14 99/109
2 1/2 6 16 15 108/118
3 2/3 7 17 16 117/127
4 3/4 8 18 17 137
5 6 4 /20/21 9 19/9 18/9 137
Observaciones: La situación más interesante se presenta en la columna del 5° ciclo. En ella la “i” tenia inicialmente el valor de 4, que se obtuvo al termina el ciclo 4°. Las primeras instrucciones ejecutadas dentro del for son las asignaciones a las variables “x”, “y” y “z”, donde se otorgan los valores 9, 29 y 18 respectivamente. Al entrar al switch, se cumple el segundo caso en el que x=9 ejecutándose las instrucciones asociadas. De ahí que “y” y “z” también queden con el valor de 9. La última estructura incluida en el for es un if, que pregunta si “x” y “y” tienen el mismo valor. Esta condición es verdadera, pues se acabaron de modificar los valores de “y” y “z”, por tanto se realiza la instrucción asociada a esta condición: llevarle a “i” el valor 20. Siguiendo el flujo del programa nos encontramos con la llave que cierra el for, por tanto no hay nada más para ejecutar. Pero recuerde que antes de finalizar el ciclo siempre se incrementa la variable controladora que en este caso en “i”, “i” actualmente vale 20, así que al incrementarla quedará valiendo 21. Después de hacer el incremento en la variable controladora del for, el flujo del programa vuelve a la declaración del for para evaluar la segunda expresión o condición: “i<=20”, ¿se cumple? ¡Claro que no!,” i “ya ha sobrepasado este valor y una nueva repetición no podrá darse, el bucle for ha llegado a su fin.
SECCIÓN IV Ejercicios •
Llene la tabla con los estados de las variables si x=5, y =10, z=0, y m=10. Bajo estas condiciones, ¿cuántos ciclos tendrá el bucle for?
•
Cree un diagrama de flujo para representar el algoritmo que permite multiplicar un par de números ingresados por un usuario. Los números deben multiplicarse usando sumas sucesivas. Es decir 2*4=2+2+2+2. Cuando el resultado ya haya sido calculado mostrarlo en pantalla. Escriba el programa representado por el diagrama de flujo.
•
Cree el diagrama de flujo que permite operar dos números ingresados por el usuario, y mostrar el resultado. Usted tiene ya las funciones que se encargan de sumar, restar, multiplicar y dividir. Puede considerar cada una como un bloque de proceso. Nota: el usuario sigue la siguiente secuencia para ingresar los datos: Primer numero Signo de la operación Segundo numero Signo de igual. Escriba el programa representado por el diagrama de flujo.