La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Tema 6: Estructuras de Control

Presentaciones similares


Presentación del tema: "Tema 6: Estructuras de Control"— Transcripción de la presentación:

1 Tema 6: Estructuras de Control
Programación de Computadores (IWI-131) Tema 6: Estructuras de Control Luis Pizarro Q.

2 1. Estructuras de Control Selectivas
Existen 4 tipos de estructuras de control selectivas: 1. IF THEN 2. IF THEN ELSE 3. IF’s anidados 4. CASE OF Luis Pizarro Q. ©2003

3 1. Estructuras de Control Selectivas
IF THEN (si entonces) Simple IF <condición> THEN acción; cond acción TRUE FALSE Si <condición> = TRUE se ejecuta la acción. Compuesto IF <condición> THEN BEGIN acción1; .... acciónN END; cond acción1 TRUE FALSE acciónN . Sin punto y coma la acción antes de END Luis Pizarro Q. ©2003

4 Ejemplo de Programa Selectivo
Escriba un programa que calcule el valor absoluto de la diferencia del cuadrado de 2 cantidades si la primera es múltiplo de 3 y su raíz no es mayor que el doble de la segunda cantidad. Aquí se utiliza un IF THEN simple PROGRAM Calculo; VAR x, y: REAL; BEGIN WRITE(‘Ingrese 2 cantidades: ’); READLN(x,y); IF (x MOD 3 = 0) AND NOT (SQRT(x) > 2*y) THEN WRITELN(‘El resultado es: ’,ABS(SQR(x)-SQR(y))) END. Si la condición no se cumple el programa no devuelve resultado alguno. Luis Pizarro Q. ©2003

5 1. Estructuras de Control Selectivas
IF THEN ELSE (si entonces, si no) Simple IF <condición> THEN acción1 ELSE acción2; Si <condición> = TRUE se ejecuta la acción. Sin punto y coma la acción antes de ELSE cond acción2 FALSE TRUE acción1 Caso compuesto se deduce de lo anterior. Luis Pizarro Q. ©2003

6 Ejemplo de Programa Selectivo
Determinar si un número entero es par o impar. PROGRAM Par_o_Impar; VAR x: INTEGER; BEGIN WRITE(‘Ingrese Número: ’); READLN(x); IF x MOD 2 = 0 THEN WRITELN(‘El número es par’) ELSE WRITELN(‘El número es impar’) END. Aquí se utiliza un IF THEN ELSE simple Luis Pizarro Q. ©2003

7 1. Estructuras de Control Selectivas
IF’s anidados Simple IF <cond 1> THEN IF <cond 2> THEN acción1 ELSE acción2 IF <cond 3> THEN acción3 acción4; No se coloca punto y coma en las acciones antes de ELSE y END c1 acc2 FALSE TRUE acc1 c2 c3 acc4 acc3 Caso compuesto se deduce de lo anterior. Luis Pizarro Q. ©2003

8 Ejemplo de Programa Selectivo
Buscar el mínimo de tres números. PROGRAM Minimo; VAR x,y,z,min: INTEGER; BEGIN WRITE(‘Ingrese tres números: ’); READLN(x,y,z); IF x < y THEN IF x < z THEN min:=x ELSE min:=z IF y < z THEN min:=y min:=z; WRITELN(‘El mínimo es: ’,min) END. Aquí se utilizan IF’s anidados Luis Pizarro Q. ©2003

9 1. Estructuras de Control Selectivas
CASE OF (en caso de). Selección Múltiple CASE <variable> OF altern1: acción1; altern2: BEGIN acción21; ...... acción2N END; alternM: acciónM ELSE acciónElse var acc1 alt1 acc21 acc2N . accM alt2 altM accelse ELSE . . . Luis Pizarro Q. ©2003

10 Ejemplo de Programa Selectivo Múltiple
Escribir un programa que permita obtener la nota de alguno de sus tres certámenes, asumiendo que éstas ya han sido ingresadas al programa. PROGRAM Notas; VAR numero: INTEGER; BEGIN WRITE(‘Ingrese número de certamen: ’); READLN(numero); CASE numero OF 1: WRITELN(‘Certamen 1: ’,60); 2: WRITELN(‘Certamen 2: ’,70); 3: WRITELN(‘Certamen 3: ’,80); ELSE WRITELN(‘Debe ingresar un número entre 1 y 3’) END END. Luis Pizarro Q. ©2003

11 Ejemplo de Programa Selectivo Múltiple
Ver si un dígito ingresado es par o impar. PROGRAM Par_o_Impar; VAR caracter: CHAR; BEGIN WRITE(‘Ingrese un dígito: ’); READLN(caracter); CASE caracter OF ‘0’, ‘2’, ‘4’, ‘6’, ‘8’: WRITE(‘Par’); ‘1’, ‘3’, ‘5’, ‘7’, ‘9’: WRITE(‘Impar’) ELSE WRITE(‘No es dígito’) END END. Luis Pizarro Q. ©2003

12 Ejemplo General Calcular área y perímetro de alguna de las siguientes figuras: cuadrado, círculo, triángulo equilátero; a pedido del usuario. PROGRAM Area_y_Perimetro; TYPE figura = (cuadrado,circulo,triangulo); VAR f: figura; A, P: REAL ; L: REAL; R: REAL ; BEGIN WRITE(‘Seleccione una de las siguientes figuras ’); WRITE(‘cuadrado, circulo, triangulo: ’); READLN(f); A := 0; P := 0; CASE f OF cuadrado: BEGIN WRITE(‘Ingrese lado del cuadrado: ’); READLN(L); IF L > 0 THEN A := SQR(L); P := 4*L END ELSE WRITELN(‘El lado debe ser positivo.’) END; Entre el BEGIN y el END hay 3 sentencias: WRITE, READLN y IF THEN ELSE. Luis Pizarro Q. ©2003

13 Ejemplo General circulo: BEGIN WRITE(‘Ingrese radio del círculo: ’);
READLN(R); IF R > 0 THEN BEGIN A := 3.14*SQR(R); P := 2*3.14*R END ELSE WRITELN(‘El radio debe ser positivo.’) END; triangulo: BEGIN WRITE(‘Ingrese lado del triángulo: ’); READLN(L); IF L > 0 THEN A := SQRT(3) / 4 * SQR(L); P := 3*L WRITELN(‘El lado debe ser positivo.’) ELSE WRITELN(‘Nombre no válido.’) END; {fin del CASE} IF (A > 0) AND (P > 0) THEN WRITELN(‘Area: ’, A, ‘ Perímetro: ’, P) END. Luis Pizarro Q. ©2003

14 Ejercicios de Programación
Escriba un programa que calcule el promedio de sus certámenes y le permita averiguar si ud. aprobará el curso o no. Escriba un programa que ordene de mayor a menor 3 números. Escriba un programa que resuelva la ecuación ax2+bx+c=0. Escriba un programa que permita resolver un sistema de ecuaciones de 2x2. Control 1: Miércoles 19 en clases. Luis Pizarro Q. ©2003

15 2. Estructuras de Control Repetitivas
Existen 3 tipos de estructuras de control repetitivas: 1. WHILE 2. REPEAT 3. FOR TO (FOR DOWNTO) Luis Pizarro Q. ©2003

16 2. Estructuras de Control Repetitivas
WHILE (mientras) Simple WHILE <condición> DO acción; Compuesto WHILE <condición> DO BEGIN acción1; .... acciónN END; Si <condición> es TRUE se ejecuta la acción. cond acción TRUE FALSE cond acción1 TRUE FALSE acciónN . Luis Pizarro Q. ©2003

17 Ejemplo: Uso de WHILE Escribir un programa que sume todos los números ingresados por el usuario hasta que se lea el 0. PROGRAM Sumar; VAR numero,suma: INTEGER; BEGIN suma:=0; WRITE(‘Ingrese número: ’); READLN(numero); WHILE numero <> 0 DO suma:=suma + numero; END; WRITELN(‘La suma es: ’,suma) END. Luis Pizarro Q. ©2003

18 Ejemplo: Uso de WHILE Escribir un programa que sume todos los números ingresados por el usuario hasta que se lea el 0. (Otra manera) PROGRAM Sumar; VAR numero,suma: INTEGER; seguir: BOOLEAN; BEGIN suma:=0; seguir:=TRUE; WHILE seguir DO WRITE(‘Ingrese número: ’); READLN(numero); IF numero <> 0 THEN suma:=suma + numero ELSE seguir:=FALSE END; WRITELN(‘La suma es: ’,suma) END. Luis Pizarro Q. ©2003

19 2. Estructuras de Control Repetitivas
REPEAT (repetir) REPEAT acción1; ..... acciónN; UNTIL <condición>; Si <condición> = TRUE termina su ejecución. cond acción1 TRUE FALSE acciónN . Obs: no necesita BEGIN ni END. Luis Pizarro Q. ©2003

20 Ejemplo: Uso de REPEAT Escribir un programa que determine si un número es perfecto. (cuando la suma de sus divisores es el mismo número) PROGRAM Perfecto; VAR numero,suma,divisor: INTEGER; BEGIN suma:=1; {ya que 1 siempre es divisor} WRITE(‘Ingrese número: ’); READLN(numero); IF numero > 0 THEN divisor:=2; REPEAT IF numero MOD divisor = 0 THEN suma:=suma+divisor; divisor:=divisor+1; UNTIL divisor >= numero-1; IF suma = numero THEN WRITELN(‘El número ’,numero, ‘ es perfecto’) ELSE WRITELN(‘El número ’,numero, ‘ no es perfecto’) END WRITELN(‘Debe ingresar un número positivo ’) END. Luis Pizarro Q. ©2003

21 2. Estructuras de Control Repetitivas
FOR (para) Compuesto FOR variable := inicio TO (DOWNTO) final DO BEGIN acción1; .... acciónN END; acción1 acciónN . Inicializa-actualiza variable Obs: variable se va incrementando (decrementando) en 1 (-1) desde inicio hasta final. Luis Pizarro Q. ©2003

22 Ejemplo: Uso de FOR Calcular la sumatoria PROGRAM Sumatoria; VAR
n,i: INTEGER; suma: REAL; BEGIN suma:=0; WRITE(‘Ingrese límite superior de la sumatoria: ’); READLN(n); FOR i:= 1 TO n DO suma:= suma + 1/i; WRITELN(‘La sumatoria es: ’,suma:5:2) END. Luis Pizarro Q. ©2003

23 Ejemplo: Uso de FOR Escribir un programa que calcule el factorial de un número. PROGRAM Factorial; VAR numero,factorial,contador: INTEGER; BEGIN factorial:=1; WRITE(‘Ingrese un número positivo: ’); READLN(numero); IF numero > 1 THEN FOR contador:= numero DOWNTO 1 DO factorial:= factorial * contador; WRITELN(‘El factorial de ’,numero, ‘ es: ’,factorial) END. Luis Pizarro Q. ©2003

24 Ejemplo: Uso de FOR Calcular la productoria de todos los números pares hasta 30. PROGRAM Productoria; VAR producto,i: INTEGER; BEGIN producto:=1; FOR i:= 2 TO 30 STEP 2 DO producto:= producto * i; WRITELN(‘La productoria es ’,producto) END. Luis Pizarro Q. ©2003

25 Ejercicios de Programación
Escriba un programa que imprima N términos de la serie de Fibonacci 1,1,2,3,5,8,13,21,... Calcule la potencia de un número, por ejemplo, xy. Hacerlo mediante 2 formas distintas (WHILE, REPEAT, FOR) Calcule cuántos términos debe tener al menos la sumatoria para que se cumpla donde L es ingresado por el usuario. Luis Pizarro Q. ©2003

26 Tema 6: Estructuras de Control
Programación de Computadores (IWI-131) Tema 6: Estructuras de Control Luis Pizarro Q.


Descargar ppt "Tema 6: Estructuras de Control"

Presentaciones similares


Anuncios Google