ciclos

17
Lógica de Programación Estructuras Repetitivas: ciclos Grupo 248 Docente: Ma. Eugenia Morales M. Institución Universitaria de Envigado Facultad de Ingenierías

Upload: memoralesiue

Post on 23-Jun-2015

942 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ciclos

Lógica de ProgramaciónEstructuras Repetitivas: ciclos

Grupo 248Docente: Ma. Eugenia Morales M.

Institución Universitaria de EnvigadoFacultad de Ingenierías

Page 2: Ciclos

Temáticas:Estructuras Repetitivas:

◦Representación◦Funcionamiento

Ciclo MientrasCiclo ParaCiclo Repita Hasta

Page 3: Ciclos

Elementos básicos:

CONTADOR: Área de trabajo cuyo incremento o decremento es definido. El término contador está asociado con la acción de contar. Ejemplo: la registradora de un bus cuenta el número de pasajeros que suben a éste durante un determinado tiempo o recorrido.

ACUMULADOR: Área de trabajo donde se almacena un valor que puede ser variable. El término acumulador tiene de acumular (sumar cantidades). Por ejemplo: la caja registradora de un almacén suma cantidades diferentes de pagos, al final de la jornada muestra un acumulado o suma de los valores registrados.

PROMEDIO: Resultado de la división de la suma de unas variables (acumulador) dividida por el número de variables sumadas (contador). ( PROMEDIO = ACUMULADOR/CONTADOR). Cuando el ejercicio pide un promedio se debe inicializar un Acumulador y un Contador. Generalmente la operación del promedio se realiza por fuera del ciclo.

REGISTRO CENTINELA: Es el último registro que contiene una señal de fin de archivo, no se procesa. Cuando se utiliza el registro centinela se debe leer antes del ciclo el primer registro; una vez se procese éste se realiza la lectura del siguiente (antes del fin del ciclo). No hay que utilizar contador para controlar el final del ciclo.

REGISTRO IDENTIFICADOR: Indica el número de iteraciones que deben realizarse en un ciclo. Se lee antes del ciclo, necesita de un contador para controlar cuando se terminan de procesar todos los registros indicados en el registro identificador.

Page 4: Ciclos

Estructuras Repetitivas

La estructura iterativa o de repetición permite ejecutar una o varias instrucciones, un número determinado de veces o, indefinidamente, mientras se cumpla una condición. Esta estructura ayuda a simplificar los algoritmos.. (Fuente: http://www.eduteka.org/pdfdir/AlgoritmosProgramacion.pdf )

Para poder implementar acciones que deben ejecutarse repetidamente se utilizan los ciclos o bucles y se llama iteración el hecho de repetir la ejecución de unas determinadas acciones. Estos se utilizan en un programa cuando se necesita repetir varias veces una serie de acciones o instrucciones.

Las dos principales preguntas que se deben hacer al diseñar un bucle son:

◦ Que contiene el bucle? ◦ Cuántas veces hay que repetir?◦ Cuándo y/o cómo termina el bucle?

Page 5: Ciclos

Ciclo MIENTRAS QUE…

Se utiliza para ejecutar repetitivamente un conjunto o bloque de instrucciones mientras se cumple una condición específica.

Permite ejecutar repetitivamente el conjunto de instrucciones hasta que una variable, contador llegue a su valor límite.

Sintáxis:Variable = Valor inicial; MQ (condición) Haga Bloque de instrucciones;

incremento;

Fin_MQDónde:Variable: Se inicializa la variable que controla el ciclo (contador, centinela o suiche).Condición: Se evalúa que sea afirmativa.Incremento: incrementar el contador o leer la variable centinela o la variable suiche.

Page 6: Ciclos

Ejemplo Ciclo MQ con Contador:

Problema: Realizar un procedimiento que genere e imprima los números de 0 al 500

X = Contador generador de los númerosSub_GENERAR (Int:X)Inicio X = 0; //Se inicializa el contador MQ (X < 500) Haga Esc X; X = X + 1; // O se puede escribir X++; Fin_MQFin

Page 7: Ciclos

Ejemplo Ciclo MQ con Centinela:

Problema: Realizar un procedimiento que lea nombre y edad de los 20 estudiantes de un grupo.

Ed = Variable Int que será el centinelaSub_Datos (Int:Ed; String: Nom[20])Inicio Esc “Ingrese edad o 0 para salir”; Lea Ed; //Se lee la variable centinela MQ (Ed != 0) Haga Esc “Ingrese nombre”; Lea Nom;

Esc Nom,” “, Ed; Esc “Ingrese edad o 0 para salir”; Lea Ed; //Se lee de nuevo la variable centinela;

Fin_MQFin

Page 8: Ciclos

Ejemplo Ciclo MQ con SW:

Problema: Realizar un procedimiento que lea e imprima N números.

Sw = Variable suiche que controla el cicloSub_Numeros (Int:Num)Inicio Sw = ‘s’; //Se inicializa el suiche MQ (Sw == `s`) Haga Esc “Digite Número: “, Lea Num; Esc “Desea otro número s/n: “; Lea Sw;

ConvMin (Sw); //Función para convertir Sw a minúscula

Fin_MQFin

Page 9: Ciclos

Ciclo PARA:

Ejecuta repetitivamente un conjunto o bloque de instrucciones que se conoce de antemano y que por lo tanto no requiere de condición de salida; el contador para contar el número de iteraciones se incrementa o decrementa de modo automático en un valor constante.

Sintáxis:PARA (X = vi hasta vf, incremento) Bloque de instrucciones;Fin_PARA

Dónde:X: Variable contador que controla el ciclovi: Valor inicialvf: Valor final (tope del contador.Incremento: si no se expresa otro valor, el incremento por defecto es 1.

Page 10: Ciclos

Ejemplo Ciclo Para con incremento automático de 1:

Problema: Realizar un procedimiento que genere e imprima los números de 0 al 500

X = Contador generador de los númerosSub_GENERAR (Int:X)Inicio Para (X = 1, 500) Haga Esc X; Fin_ParaFin

Page 11: Ciclos

Ejemplo Ciclo Para con incremento diferente a 1:

Problema: Realizar un procedimiento que genere e imprima los primeros 10 números pares

X = Contador de los primeros 10 pares (se ejecuta 10 veces del 2 al 20Sub_GENERAR (Int:X)Inicio Para (X = 2, 20, 2) Haga Esc X; Fin_ParaFin

Page 12: Ciclos

Ejemplo Ciclo Para con decremento:

Problema: Realizar un procedimiento que genere e imprima los números del 50 al 0

X = Contador generador de los númerosSub_GENERAR (Int:X)Inicio Para (X = 50, 0, -1) Haga Esc X; Fin_ParaFin

Page 13: Ciclos

Ciclo Repita Hasta:

Ejecuta repetitivamente un conjunto o bloque de instrucciones hasta que se cumpla una condición determinada que puede verificarse al principio o la final del ciclo. Se ejecuta mientras el valor de la condición es falso, justo lo contrario al ciclo mientras.

La estructura repetir se ejecuta al menos una vez, ya que cuando la instrucción repetir se ejecuta solo se evalúa después de ejecutar la las instrucciones que hay en el bucle

Sintáxis: Variable = valor inicial; REPITA

Bloque de instrucciones;Incremento;

HASTA (condición ==verdadera); //Fin_REPITADonde:Variable: Se inicializa la variable que controla el ciclo (contador, centinela o suiche).Incremento: incrementar el contador o leer la variable centinela o la variable suiche.Condición: Se evalúa que sea afirmativa.

; Se cierra el ciclo con el punto y coma.

Page 14: Ciclos

Ejemplo Ciclo REPITA con Contador:

Problema: Realizar un procedimiento que genere e imprima los números de 0 al 500

X = Contador generador de los númerosSub_GENERAR (Int:X)Inicio X = 0; //Se inicializa el contador REPITA Esc X; X = X + 1; // O se puede escribir X++; HASTA (X == 500);Fin

Page 15: Ciclos

Ejemplo Ciclo REPITA con Centinela:

Problema: Realizar un procedimiento que lea nombre y edad de los 20 estudiantes de un grupo.

Ed = Variable Int que será el centinelaSub_Datos (Int:Ed; String: Nom[20])Inicio

REPITAEsc “Ingrese nombre”; Lea Nom;Esc “Ingrese edad o 0 para salir”; Lea Ed; //Se lee la variable centinela

Esc Nom,” “, Ed;

HASTA (Ed == 0);Fin

Page 16: Ciclos

Ejemplo Ciclo REPITA con SW:

Problema: Realizar un procedimiento que lea e imprima N números.

Sw = Variable suiche que controla el cicloSub_Numeros (Int:Num)Inicio Sw = ‘s’; //Se inicializa el suiche

REPITA Esc “Digite Número: “, Lea Num; Esc “Desea otro número s/n: “; Lea Sw;

ConvMin (Sw); //Función para convertir Sw a minúscula

HASTA (Sw == `n`); Fin

Page 17: Ciclos

Ejercicios con ciclos controlados por contador:

1. Leer el nombre y la edad de 20 personas y mostrarle a cada una si puede votar o no.

2. Leer 20 números y mostrar de cada uno si es par su cuadrado, si es impar su cubo. Imprimir la suma de los números.

3. Deducir de 100 números leídos desde el teclado si son positivos, negativos o iguales a Cero (0). Mostrar al final la suma de los positivos y la suma de los negativos.

4. Leer 100 números e imprimir para cada uno si es par o impar. Mostrar al final el promedio de los pares y el promedio de los impares

5. Se tiene el nombre y la nota de los 20 estudiantes de un grupo en el quiz de lógica, imprimir para cada uno si ganó o perdió el examen. Mostrar al final el promedio de la nota, la nota más alta y la nota más baja.

6. Calcular la nota definitiva de 30 estudiantes, teniendo en cuenta que el seguimiento 60% y cada examen un 20%. Mostrar para cada uno sí ganó, perdió o habilita (nota >2.6 y nota < 3.0). Imprimir la nota promedio de la asignatura, la nota más alta y la nota más baja.

7. Leer edad y sexo de 50 personas. Mostrar al final cuántos son hombres y cuántos son mujeres. Promedio de edad de hombres y promedio de edad de mujeres.