Seden 4 Preseminario

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Seden 4 Preseminario as PDF for free.

More details

  • Words: 2,691
  • Pages: 10
POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1 SEMINARIO DE ENCUENTRO # 4 Estructuras Repetitivas TEMAS Creación de ciclos. Seguimiento y depuración de ciclos. Solución de problemas con ciclos CICLOS Generalmente al hacer referencia a programas de computador, se piensa en tareas repetitivas, programas o máquinas que realizan millones y millones de cálculos para encontrar un resultado. Con el manejo de estructuras secuenciales y condicionales, es posible diseñar programas que realicen muchísimas instrucciones, pero para ello sería necesario escribir muchísimas líneas de código. Esto no sería muy útil, pues resultaría más complicado escribir las instrucciones para realizar todos los cálculos necesarios que realizar los cálculos manualmente, o al menos sin la ayuda del computador. Qué puede hacerse cuando es necesario resolver un problema en el que es indispensable realizar muchos cálculos ? Debe recurrirse a procesos repetitivos o cíclicos en los que se repitan las operaciones necesarias. Esto se hace a través de estructuras repetitivas, iterativas o cíclicas. Existen distintos tipos de estructuras repetitivas, pero su objetivo siempre es el mismo : ejecutar un conjunto o bloque de instrucciones varias veces, la diferencia entre estas estructuras está en su sintaxis y en lo apropiadas que son para la realización de tareas específicas y diferentes. Normalmente cuando se utiliza un ciclo, quiere repetirse un conjunto de instrucciones, pero no se repetirán las mismas instrucciones con los mismos datos, pues se produciría siempre el mismo resultado, la situación mas común es que se repitan las mismas instrucciones, pero se modifiquen los datos sobre los que están operando. Al diseñar un algoritmo que involucre el uso de estructuras repetitivas, debe prestarse especial atención a cuáles son las instrucciones que deben repetirse, qué datos se modificarán en cada ejecución de éstas instrucciones y cuántas veces se ejecutarán estas instrucciones. CICLOS MIENTRAS Cualquier ciclo involucra la ejecución repetida de un conjunto de instrucciones (que constituyen el cuerpo del ciclo o bucle). El programador controla la cantidad de veces que se ejecutará el cuerpo del ciclo, y los valores que se modificarán en cada iteración del mismo. Los ciclos mientras contienen dos partes : una expresión de prueba o condición y el cuerpo del ciclo como tal. Cuando el flujo del algoritmo alcanza una instrucción mientras, se prueba la condición, si la condición es verdadera, se ejecuta el cuerpo del ciclo y se continúa la ejecución Luís Fernando González Alvarán 1 / 10

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1 del mismo hasta que la condición se haga falsa. Cuando la condición es falsa, no se ejecuta el cuerpo del ciclo y el flujo del algoritmo se transfiere a la siguiente instrucción después de la finalización del ciclo (fin_mientras).

Algoritmo CicloMientras La palabra reservada mientras indica el comienzo del ciclo. Va Variables seguida de una condición que entero: i sirve como expresión de prueba. condició inicio i  1 mientras (i<=5) hacer El cuerpo del ciclo se escribir ("Iteración ", i) repite mientras la condición sea i  i + 1 verdadera. fin_mientras Fin del fin Ejemplo

SALIDA

PREGUNTAS ORIENTADORAS. Estudie el algoritmo de ejemplo y la salida producida por él para determinar cómo opera un ciclo mientras.

Iteración Iteración Iteración Iteración Iteración

1 2 3 4 5

Esta es la salida que se producirá en pantalla al seguir el algoritmo anterior.

EXPLICACIÓN : En la sintaxis de la estructura repetitiva mientras, se incluyen las palabras reservadas mientras, hacer, SINTAXIS fin_mientras. El encabezado de la estructura repetitiva está mientras (condicion) hacer determinado por las palabras mientras y hacer, entre sentencia1 ellas, debe incluirse una expresión de prueba, o sentencia2 condición, que debe ser una expresión lógica válida, tal ... como ocurre para las estructuras selectivas. sentenciaz La palabra reservada fin_mientras indica la finalización fin_mientras del ciclo. Entre las palabras hacer y fin_mientras, se incluyen todas las sentencias que deben ejecutarse cuando la condición sea verdadera (mientras la condición sea verdadera). Este conjunto de sentencias se conocen como cuerpo del ciclo ó cuerpo del bucle. OPERACIÓN DE UN CICLO MIENTRAS Cuando en el flujo del programa se alcanza el encabezado del ciclo (mientras (condicion) hacer), se prueba la condición, si esta es verdadera se ejecuta el cuerpo del ciclo, si esta es Luís Fernando González Alvarán 2 / 10

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1 falsa, se transfiere el control de flujo a la siguiente línea después del final del ciclo (fin_mientras). Cuando se ejecuta el ciclo, y se alcanza la línea fin_mientras, se vuelve al comienzo del ciclo y se prueba nuevamente la condición. El proceso se repite hasta que la condición sea falsa y se termine la ejecución del ciclo.

condicio

fals

verdade ra cuerpo del

La condición siempre se evalúa una vez mas que lo que se ejecuta el cuerpo del ciclo. Cuando la condición es falsa, el cuerpo del ciclo no se ejecuta y se continúa la ejecución del algoritmo en la siguiente instrucción. Cada ejecución del cuerpo del ciclo se conoce como iteración, así, en el ejemplo anterior, se presentan 5 iteraciones. Para conseguir el correcto funcionamiento de un ciclo mientras, debe garantizarse que la condición puede probarse inicialmente, así que es necesario inicializar las variables involucradas en esta condición antes de llegar al ciclo, adicionalmente, es necesario que dentro del cuerpo del ciclo se modifique la o las variables involucradas en la condición, para garantizar que en algún momento la condición sea falsa y el ciclo dejará de ejecutarse.

CICLOS QUE NUNCA SE EJECUTAN Puesto que al utilizar los ciclos mientras, siempre se prueba la condición, antes de definir si se ejecuta o no el cuerpo del ciclo, es posible que éste ciclo nunca se ejecute. Esto ocurrirá si la condición (expresión de prueba) es falsa inicialmente. EJEMPLO :

Algoritmo Mientras01 Variables entero : i inicio i  10 mientras (i<10) hacer escribir ("El valor de i es : ",i) i  i + 1 fin_mientras fin

EXPLICACIÓN Este ciclo nunca se ejecuta, porque inicialmente la condición ( i < 10 ) es falsa, pues i tiene exactamente el valor de 10, ya que la condición es falsa, no se ejecuta el cuerpo del ciclo ni siquiera una vez, aunque la condición si se probó una vez para determinar que el cuerpo del ciclo no se ejecutaría.

PREGUNTAS DE REVISIÓN Modifique el algoritmo anterior para que el ciclo se ejecute al menos una vez y muestre los valores de i entre 10 y 20 inclusive. Luís Fernando González Alvarán 3 / 10

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

CICLOS INFINITOS Se producen ciclos o bucles infinitos, cuando la condición siempre es verdadera, con certeza este no sería el objetivo al diseñar un algoritmo. Este tipo de situaciones deben evitarse a toda costa. EXPLICACIÓN

Algoritmo Mientras02 Variables entero : i inicio i 10 mientras (i<=10) hacer escribir ("El valor de i es : ",i) i i - 1 fin_mientras fin

Inicialmente la condición es verdadera, pues i tiene el valor de 10, así que la condición ( i <=10 ) es verdadera. Se entra a ejecutar el cuerpo del ciclo, así que se muestra el primer mensaje y se ejecuta la instrucción i  i – 1, de modo que i tomará el valor de 9. El ciclo se seguirá ejecutando y la variable i se seguirá decrementando

ANATOMÍA DE UN CICLO MIENTRAS ALGORITMO

Algoritmo mientras03 Variables entero : i, doble inicio i 10

inicializac condición

mientras ( i > 0 ) hacer doble i * 2 escribir ( i, " x 2 = ", doble) i i – 1 fin_mientras actualizac fin

OBSERVACIO N Para este ciclo, i es la variable de control. Está involucrada en tres sentencias indispensables para el correcto funcionamiento del ciclo: inicialización expresión de prueba (condición ). actualización.

La variable que se utiliza para establecer la condición del ciclo, se denomina también variable de control del ciclo debido a que su valor determina si el cuerpo del ciclo se ejecuta o no. La variable de control del ciclo debe ser: •

inicializada : Es decir, esta variable debe tener un valor antes de que se alcance la instrucción mientras, de forma que la condición pueda ser evaluada con el valor real de la variable de control.

Luís Fernando González Alvarán 4 / 10

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1 • •

comprobada : Antes de la ejecución del cuerpo del ciclo, se prueba la condición establecida a través de la variable de control. La variable de control está incluida en la expresión de prueba que constituye la condición. actualizada : El valor de la variable de control debe modificarse dentro del cuerpo del ciclo, para que en cada iteración, su valor se modifique y sea posible salir del ciclo en el momento en el que la condición deje de ser verdadera. Si la variable de control no se actualiza, el ciclo se ejecutará siempre, lo que se denomina un ciclo infinito. La actualización puede hacerse por medio de operaciones de asignación o de operaciones de lectura.

Luís Fernando González Alvarán 5 / 10

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1 PREGUNTAS DE REVISIÓN 1. Realice un seguimiento del ejemplo anterior (Algoritmo mientras03) y determine: • Cuántas veces se ejecuta el cuerpo del ciclo, es decir, cuántas iteraciones se producen ? • Cuántas veces se prueba la condición ? • Cuál es la salida producida por el algoritmo ? • Qué ocurriría si se modifica la condición y en su lugar se utiliza ( i<>0 )? 2. Respecto al algoritmo mientras03, qué ocurriría si se modifica la sentencia de actualización y en su lugar se utiliza i  i +1 ? 3. Escriba un algoritmo que utilice una estructura mientras para calcular el cuadrado de los números comprendidos entre 10 y 20. 4. Modifique el algoritmo del punto anterior, para que se calcule la raíz cuadrada de los números terminados en 0 entre 10 y 100 ( 10, 20, 30, ...100) VARIABLES USADAS EN CICLOS Contador: Un elemento cuyo valor se incrementa o decrementa en un valor constante en cada iteración de un bucle, y se utiliza para controlar la condición del bucle. Se usan fundamentalmente para contar, por lo tanto son valores enteros.

contador  contador + 1 Acumulador: Es una variable que también se suele usar en los bucles y que se incrementa o decrementa en cada iteración del bucle, pero no en una cantidad constante. Su función es almacenar valores numéricos que generalmente se suman o multiplican en cada iteración, así que son valores reales o enteros.

suma  suma

+ numero

Bandera (interruptor o flag): Es una variable de tipo lógico que sirve como indicador de una determinada información y que solo puede tomar uno de dos valores que se utilizan para determinar el valor de verdad de una condición. Centinela : Mas que una variable, es un valor que puede tomar una variable, que se usa para controlar un ciclo : El ciclo se ejecutará siempre que la variable no tome el valor centinela. Normalmente se elige como centinela un valor fuera del rango de datos válidos. EJEMPLO : CICLO CONTROLADO POR CONTADOR

Algoritmo mientras04 Variables entero : cont, num, sum inicio cont 0 sum 0 mientras (cont <> 3) hacer escribir ("Numero = ?") leer ( num ) sum sum + num cont cont + 1 fin_mientras escribir ("Suma = ", sum) Luís fin Fernando González Alvarán 6 / 10

EXPLICACIÓN : La variable de control del ciclo es cont y se utiliza como contador : Cada vez que se ejecuta el cuerpo del ciclo, ésta variable se incrementa en 1 (uno). Nota : Tradicionalmente, se utilizan como contadores las variables i, j y k. Sin embargo, es posible utilizar cualquier variable de tipo entero como contador.

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

PRUEBA DE ESCRITORIO cont 0

sum 0

num

Pantalla Numero = ? 5

5 5 1

Numero = ? 2 2 7

2

Numero = ? 6 6 13

3

Suma = 13

EJEMPLO Diseñar un algoritmo que muestre en orden descendente todos los números impares comprendidos en un intervalo definido por el usuario. ANÁLISIS: Modelaje Datos de entrada : Dos números enteros que determinarán el intervalo. Datos de salida : Todos los números impares en el intervalo definido. E/S/ A E

Descripción

E

Segundo número para definir el intervalo

S

Cada uno de los números impares en el intervalo Variable para intercambiar a y b si es necesario

A

Primer número para definir el intervalo

Identificad Tipo or A enter o B enter o Impar enter o Aux enter o

Especificación PRE : { a >=a}

∈ Z, b ∈ Z }

POS: { a = ∅, b = ∅, impar

∈ Z / impar mod 2 = 1, b>= impar

Plan de solución inicio pedir al usuario los límites del intervalo (a, b) si los números son diferentes (a <> b) entonces si a > b entonces aux  a ab b  aux Luís Fernando González Alvarán 7 / 10

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1 fin_si si b mod 2 = 0 entonces bb-1 fin_si impar  b utilizar un ciclo controlado por contador que empiece en b y termine en a, decrementándose de 2 en 2 , para generar los impares en el intervalo y mostrarlos en orden descendente si_no no hay un intervalo porque los números son iguales fin_si fin PREGUNTAS ORIENTADORAS A continuación se muestra el algoritmo correspondiente a este ejemplo. • Identifique : o la variable de control del ciclo. o sentencia de inicialización de la variable de control. o sentencia de actualización de la variable de control. • Puede decirse, en este caso, que la variable de control es un contador ? • Realice el seguimiento del algoritmo suponiendo que los valores de entrada son 10 y 4 respectivamente. Cuántas veces se ejecuta el ciclo ? • Al finalizar el algoritmo, cuál es el valor de la variable impar ?

Algoritmo Impares_A_B Variables entero : a, b, impar, aux inicio escribir ("Límites del intervalo") escribir ("Primer número = ") leer (a) escribir ("Segundo número = ") leer (b) si (a <> b) entonces si (a > b) entonces aux a a b b aux fin_si si (b mod 2 = 0) entonces b b – 1 fin_si impar b mientras (impar >= a) hacer escribir (impar) impar impar - 2 fin_mientras si_no escribir ("Los números son iguales") fin_si fin Luís Fernando González Alvarán 8 / 10

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1

PRUEBA DE ESCRITORIO a

b

impar

Luís Fernando González Alvarán 9 / 10

aux

Pantalla

Ciclos

POLITÉCNICO COLOMBNIANO JAIME ISAZA CADAVID Fundamentos de Programación 1 EJERCICIOS 1. Diseñe un algoritmo que permita calcular el promedio de los números pares en un intervalo establecido por el usuario. 2. Diseñe un algoritmo que permita realizar el cálculo la multiplicación de dos números enteros, a x b, utilizando sumas. 3. Se desea calcular la nómina de una empresa con N empleados. Para cada empleado se conoce su nombre y código. El código corresponde a una letra A para ejecutivos, B para asesores comerciales y C para el resto del personal. Los ejecutivos tendrán un incremento del 7.5% de su sueldo anterior, los asesores comerciales tendrán un incremento de 4.5% sobre su sueldo anterior si su promedio de ventas mensuales es inferior a $ 3500000, pero tendrán un incremento del 8% si su promedio de ventas mensuales es de al menos $ 3500000. Los empleados con código C tendrán un aumento del 8.7% sobre su sueldo anterior. Se conoce tanto el sueldo anterior para cada clase de empleado así como el promedio de ventas mensuales para cada uno de los empleados de código B. Al solicitar esta información no se conoce con certeza la cantidad de empleados de cada tipo. El programa debe calcular el nuevo sueldo para cada empleado, el total de la nómina mensual de la empresa y el porcentaje de esta nómina correspondiente a cada uno de los tipos de empleados.

Luís Fernando González Alvarán 10 / 10

Ciclos

Related Documents

Seden 4 Preseminario
November 2019 5
Seden 6
November 2019 11
Seden 5
November 2019 10
Seden 7 Sesion 1
November 2019 8
Seden 7 Sesion 2
November 2019 8
Seden 2 Sesion 1
November 2019 4