+ All Categories
Home > Documents > Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en...

Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en...

Date post: 24-Sep-2018
Category:
Upload: ngophuc
View: 216 times
Download: 0 times
Share this document with a friend
34
Introducci´ on Ciclo para Ciclo mientras Introducci´ on a los Computadores (CNM-130) Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem´ aticas Facultad de Ciencias Exactas y Naturales Universidad de Antioquia Copyleft 2012. Reproducci´on permitida bajo los erminos de la licencia de documentaci´on libre GNU.
Transcript
Page 1: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Introduccion a los Computadores (CNM-130)Estructuras de control repetitivas en FreeMat

Alejandro Piedrahita H.

Instituto de MatematicasFacultad de Ciencias Exactas y Naturales

Universidad de Antioquia

Copyleft «2012. Reproduccion permitida bajo los

terminos de la licencia de documentacion libre GNU.

Page 2: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Contenido

1 Introduccion

2 Estructura repetitiva para

3 Estructura repetitiva mientras

Page 3: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Estructuras de control repetitivas

Las estructuras de control permiten modificar el flujo de ejecucionde las instrucciones de un algoritmo o programa

Se utilizan cuando en el desarrollo de la solucion de un problema sehace necesario ejecutar una serie de instrucciones un numero repetidode veces

El conjunto de instrucciones que se ejecuta repetidamente se llamaciclo o bucle

Cada vez que se ejecuta el bucle se dice que se ha producido unaiteracion

Los bucles constituyen, junto con las sentencias condicionales, lospilares de la programacion estructurada.

Caracterısticas de los ciclos

Deben incluir una condicion de parada

Deben finalizar luego de un numero finito de veces

Page 4: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Tipos de estructuras repetitivas

Ciclo para (for)

Se conoce a priori el numero de veces que se debe repetir el conjunto deinstrucciones

El numero de repeticiones no depende de las sentencias contenidas en elciclo

Ciclo mientras (while)

No se conoce a priori el numero de veces que se debe repetir el conjuntode instrucciones

La condicion de parada se evalua antes de ejecutarse el ciclo

El numero de repeticiones puede depender de las sentencias contenidasen el ciclo

Ciclo repetir (do)

No se conoce a priori el numero de veces que se debe repetir el conjuntode instrucciones

Se ejecuta primero el ciclo y luego se evalua la condicion de parada

El numero de repeticiones puede depender de las sentencias contenidasen el ciclo

Page 5: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Estructura repetitiva para

El ciclo para es una estructura de control en la que se puede indicar elnumero maximo de iteraciones

Elementos del bucle:

V: variable de control del ciclo

VI: valor inicial

VF: valor final

ID: incremento o decremento

Figura: General Figura: DFD

Sintaxis en FreeMat

for V=VI:ID:VF

sentencias

end

Page 6: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.1

Ejemplo 2.1

Realice una algoritmo (FreeMat) que imprima los enteros desde el 1 hastael 10. No utilice estructuras repetitivas.

Solucion

naturales1.m

disp(1);disp(2);disp(3);disp(4);disp(5);disp(6);disp(7);disp(8);disp(9);disp(10);

Page 7: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.2

Ejemplo 2.2

Resuelva el ejemplo (2.1) utilizando estructuras repetitivas. Implementelo enFreeMat.

Solucion

naturales2.m

for i=1:10

disp(i);

end

Page 8: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.3

Ejemplo 2.3

Realice una algoritmo (FreeMat) que imprima los enteros impares desde el1 hasta el 10.

Solucion

naturales2.m

for i=1:2:10

disp(i);

end

Page 9: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.4

Ejemplo 2.4

Realice una algoritmo (FreeMat) que imprima los enteros desde el 10 hastael 1.

Solucion

naturales2.m

for i=10:-1:1

disp(i);

end

Page 10: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Contadores

Contador: variable que se incrementa o decrementa de formaconstante cada vez que se ejecuta la instruccion que lo contiene

Utilizacion:

Cuentan las veces que ocurre un determinado suceso

Controlan la ejecucion de un bucle que se realiza un determinadonumero de veces.

Inicializacion: todo contador debe tomar un valor inicial antes de serusado

Sintaxis de un contador:

Variable Contador ← Variable Contador + constante

Variable Contador ← Variable Contador - constante

o tambien

Variable Contador = Variable Contador + constante

Variable Contador = Variable Contador - constante

Page 11: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.5

Ejemplo 2.5

Realice un algoritmo (FreeMat) que lea N numeros enteros desde el tecladoy cuente cuantos de ellos son ceros.

Solucion

Datos:

N: variable de tipo entero que representa el numero de datos que seingresan

NUM: variable de tipo entero, se utilizara para almacenar los valores delos enteros ingresados.

Variables de salida:

NUMCEROS: variable de tipo entero que actuara de contador, cuenta elnumero de ceros

Page 12: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.5

cuenta ceros.m

N = input("Ingrese el numero de datos: ");

NUMCEROS = 0; % inicializa el contador

for i=1:N

NUM = input("Ingrese numero: ");

if NUM == 0

NUMCEROS = NUMCEROS + 1;

end

end

disp(NUMCEROS)

Page 13: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Acumuladores

Acumulador: variable que almacena un valor que se incrementa odecrementa de forma variable durante un proceso repetitivo.

Sintaxis de un acumulador:

Variable Acumulador ← Variable Acumulador + variable

Variable Acumulador ← Variable Acumulador - variable

Variable Acumulador ← Variable Acumulador * variable

Inicializacion: todo acumulador debe tomar un valor inicial antes de serusado

Cuando el acumulador varıa por suma sucesiva de variables se inicializaa 0:

Variable Acumulador ← 0

Cuando el acumulador varıa por producto sucesiva de variables seinicializa a 1:

Variable Acumulador ← 1

Page 14: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.6

Ejemplo 2.6

Realice un algoritmo (FreeMat) que sume los numeros enteros desde 1 hastaN .

Solucion

Datos:

N: variable de tipo entero que representa el entero hasta donde serealiza la suma

SUMA: variable de tipo entero que actuara de acumulador; almacena lasuma de los primeros N numeros naturales

1 + 2 + · · · + N

Variables de salida:

SUMA

Page 15: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.5

sumaN.m

N = input("Ingrese enteros a sumar: ");

SUMA = 0; % inicializa acumulador

for i=1:N

SUMA = SUMA+i;

end

disp(SUMA);

Page 16: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.7

Ejemplo 2.7

El factorial de un numero entero no negativo n se define como

n! = 1 · 2 · · · (n− 1) · n , con 0! = 1 y 1! = 1

Escriba un algoritmo que calcule el factorial de un entero N ≥ 1 eimplementelo en FreeMat.

Solucion

Datos:

N: variable de tipo entero que representa el entero hasta donde serealiza el producto

PROD: variable de tipo entero que actuara de acumulador; almacena elproducto de los primeros N numeros naturales

1 * 2 * · · · * N

Variables de salida:

PROD

Page 17: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 2.7

factorial.m

N = input("Ingrese enteros a multiplicar: ");

PROD = 1; % inicializa acumulador

for i=1:N

PROD = PROD*i;

endfor

disp(PROD);

Page 18: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Estructura repetitiva mientras

La estructura repetitiva mientras (while) es utilizada en un ciclocuando no sabemos el numero de veces que este se ha de repetir

Elementos del bucle:

EXPRESION: sentencia booleana que determina si se ejecuta el bucle

INSTRUCCIONES: sentencias a ejecutar si EXPRESION es verdadera

Figura: General Figura: DFD

Sintaxis en FreeMat

while EXPRESION

INSTRUCCIONES

endwhile

Page 19: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 3.1

Ejemplo 3.1

Realice un algoritmo en FreeDFD que le solicite al usuario un entero; cuandoel numero proporcionado sea 666 se debe imprimir el mensaje “adivinaste”.

Solucion

NUM: variable de tipo real

Mientras NUM sea distinto a 666, lapregunta continua

numero.m

NUM = input("Ingrese un numero: ");

while NUM 6= 666

NUM = input("Ingrese un numero: ");

end

printf("Adivinaste!");

Page 20: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 3.2

Ejemplo 3.2

Realice un algoritmo (FreeMat) que calcule el promedio de los primeros N

numeros naturales. Utilice las estructurtas repetitivas mientras y para.

Solucion

Variables:

N: variable de tipo entero, almacena el ultimo entero

NUM: variable de tipo entero, almacena uno a uno cada numero a sumar

SUM: variable de tipo entero que actuara de acumulador, almacena lasuma de los naturales

PROM: variable de tipo real, almacena almacena el promedio de losdatos

Page 21: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 3.2

promedio mientras.m

N = input("Ingrese N: ");

NUM = 1;

SUM = 0;

while NUM <= N

SUM = SUM + NUM;

NUM = NUM + 1;

end

PROM = SUM/N;

printf("Promedio = %g \n", PROM);

promedio para.m

N = input("Ingrese N: ");

SUM = 0;

for i=1:N

SUM = SUM + i;

end

PROM = SUM/N;

printf("Promedio = %g \n", PROM);

Page 22: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Dato Centinela

Centinela: valor particular que no pertenece al rango de valoresadmitidos como validos para una variable

Permiten finalizar un proceso de entrada de datos

Ejemplos:

1 Proceso: leer numeros positivos; Centinela = -1

2 Proceso: leer los 10 primeros enteros pares positivos; Centinela = 22

3 Proceso: leer nombres de personas; Centinela = "FIN"

Page 23: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 3.3: dato centinela

Ejemplo 3.3

Realice un algoritmo (FreeMat) que reciba por teclado enteros positivos ysume los pares.

Solucion

Datos:

NUM: variable de tipo entero, se utilizara para almacenar los enterosingresados

-1: dato centinela que se utilizara para finalizar el algoritmo

Variables de salida:

SUMAPARES: variable de tipo entero que actuara de acumulador,almacena la suma de los pares

Page 24: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

suma pares.m

NUM = input("Ingrese numero: ");

SUMAPARES = 0; % inicializa acumulador

while NUM != -1

if rem(NUM,2) == 0

SUMAPARES = SUMAPARES + NUM;

endif

NUM = input("Ingrese numero: ");

end

disp(SUMAPARES)

Page 25: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Variables tipo bandera o “switche”

Banderas: variables booleanas; determinan dos alternativas a seguirdentro del algoritmo

Posibles valores de las banderas:

"VERDADERO" o "FALSO"

"SI" o "NO"

1 o 0

Usos de las banderas:

Controlan el flujo logico de un programa

Permiten variar la secuencia de ejecucion del algoritmo dependiendo desu valor en cada instante

Dependiendo de su valor, determinan si el algoritmo ha pasado por undetermnado punto

Salir de un ciclo

Ejecutar una u otra accion dependiendo de su valor

Page 26: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 3.4: variable bandera

Ejemplo 3.4

Realice un algoritmo (FreeMat) que genere los primeros N terminos de lasucesion

17 , 15 , 18 , 16 , 19 , 17 , 20 , 18 , 21 , . . .

Solucion

Variables:

NT: variable de tipo entero; numero de terminos a generar

CONT: variable de tipo entero que actuara de contador para controlar elciclo

TER: variable de tipo entero, almacena cada termino de la sucesion

BAN: variable de tipo bandera, selecciona si se suma -2 o +3 a TER

Page 27: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

sucesion mientras.m

NT = input("Ingrese numero de terminos: ");

TER = 17; % primer termino

CONT = 1; % inicializa contador

BAN = 1; % inicializa bandera

while CONT <= NT

disp(TER);

if BAN == 1

TER = TER - 2;

BAN = 2;

else

TER = TER + 3;

BAN = 1;

end

CONT = CONT + 1;

end

sucesion para.m

NT = input("Ingrese numero de terminos: ");

TER = 17; % primer termino

BAN = 1; % inicializa bandera

for CONT=1:NT

disp(TER);

if BAN == 1

TER = TER - 2;

BAN = 2;

else

TER = TER + 3;

BAN = 1;

end

end

Page 28: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 3.5: variable bandera

Ejemplo 3.5

Realice un algoritmo (FreeMat) que lea desde el teclado enteros positivos ysume los multiplos de 3. El algoritmo debe finalizar al ingresar un numeronegativo.

Solucion

Variables:

CONTINUAR: variable de tipo bandera, determina cuando finaliza elalgoritmo

NUM: variable de tipo entero; almacena el entero ingresado en cadaiteracion

SUMA: variable de tipo entero que actuara de acumulador, almacena lasuma de los multiplos de 3

Page 29: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

multiplos3.m

CONTINUAR = "si"; % inicializa bandera

SUMA = 0; % inicializa acumulador

while strcmp(CONTINUAR,"si")

NUM = input("Ingrese entero: ");

if NUM < 0

CONTINUAR = "no";

elseif rem(NUM,3) == 0

SUMA = SUMA + NUM;

end

end

disp(SUMA);

Page 30: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 3.6: ruptura de ciclos

Ejemplo 3.6

Realice un algoritmo (FreeMat) que lea desde el teclado N enteros y sedetenga cuando al menos uno de los numeros leidos sea cero.

Solucion

Variables:

N: variable de tipo entero, almacena el numero de enteros a ingresar

k: variable de tipo entero que actuara de contador del ciclo

ENCONTRADO: variable de tipo bandera, determina cuando finaliza elalgoritmo; si ENCONTRADO==F el algoritmo continua, si ENCONTRADO==V elalgoritmo llega a su fin

NUM: variable de tipo entero; almacena el entero ingresado en cadaiteracion

Page 31: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

ruptura ciclo.m

N = input("Numero de terminos a ingresar: ");

ENCONTRADO = "F"; % inicializa bandera

k = 1; % inicializa contador del ciclo

while (k<=N) & strcmp(ENCONTRADO,"F")

NUM = input("Ingrese entero: ");

if NUM == 0

ENCONTRADO = "V";

else

k = k + 1;

end

end

if strcmp(ENCONTRADO,"V")

disp("Al menos uno es cero");

else

disp("Ninguno es cero");

end

Page 32: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Ejemplo 3.7: maximo y mınimo

Ejemplo 3.7

Como parte de un experimento un biologo requiere tomar la temperaturaexterior de un lugar cada hora por un perıodo de 6 horas. Realice unalgoritmo (FreeMat) que reciba como datos las temperaturas tomadas ydetermine la mayor y la menor.

Solucion

Variables:

TEMP: variable de tipo real, almacena la temperatura medida en cadahora

MAX: variable de tipo real, almacena la mayor temperatura leida

MIN: variable de tipo real, almacena la menor temperatura leida

Page 33: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

max min.m

TEMP = input("Ingrese temperatura: ");

k = 2; % inicializa contador del bucle

MAX = TEMP; % inicializa MAX

MIN = TEMP; % inicializa MIN

while k <= 6

TEMP = input("Ingrese temperatura: ");

if TEMP > MAX

MAX = TEMP;

elseif TEMP < MIN

MIN = TEMP;

end

k = k + 1;

end

printf("El maximo es %g y el mınimo...es %g \n", MAX, MIN);

Page 34: Introducci on a los Computadores (CNM-130) Estructuras … · Estructuras de control repetitivas en FreeMat Alejandro Piedrahita H. Instituto de Matem aticas Facultad de Ciencias

Introduccion Ciclo para Ciclo mientras

Referencias

O. CairoMetodologıa de la programacionSegunda edicion. Alfaomega Grupo Editor, S.A., 2005

M.A. CriadoProgramacion en lenguajes estructuradosAlfaomega Grupo Editor, S.A. de C.V. Primera Edicion, 2006

J.W. EatonGNU Octave: A high-level interactive language for numericalcomputationsNetwork Theory Ltd., 2002


Recommended