teoría – alejandro gonzalez programaciÓn i. ¿qué vimos ? problema del mundo real problema del...

Post on 29-Jan-2016

221 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Teoría – Alejandro Gonzalez

PROGRAMACIÓN I

¿Qué vimos ?

Problema del Mundo Real

Problema del Mundo Real AnálisisAnálisis SoluciónSoluciónDiseñoDiseño

ModeloModelo Diseño ModularDiseño Modular

Qué vimos ?

AnálisisInstrucciones

Datos

+

Restringidas por el lenguaje de Programación

Programa

Pertenecen a un TIPO de Datos

CONSTANTES

VARIABLES

Numéricas

Lógicas

Caracter

Temas Asignación de valores a una variable Estructuras de control

Secuencia Selección Decisión Repetición Iteración: precondicional – postcondicional

¿Cómo asignamos valores a variables?

HASTA AHORA…

Program uno;

Var

num:integer;

Begin

num:= 8;

End.

Program uno;

Var

num:integer;

Begin

read (num);

End.

ASIGNACIÓN

¿Cómo asignamos valores a variables?

Read: se usa para leer datos (por defecto desde teclado) y asignarlos a las variables correspondientes.

Salida en Pascal

Write: se usa para mostrar información en pantalla. Puede ser, por ejemplo, el contenido de una variable. Pueden ser de tipo entero, real, char. Los datos a mostrar si son más de uno deben ir separados por coma.

Salida en Pascal

program ejemploWrite; var a,b,c: integer; Begin

Read(a); b:= a * 4; write (b); write (‘El valor de b es:’ ,b);End.

Teoría – Alejandro Gonzalez

Estructuras de Control en Pascal

Estructuras de Control - Concepto

Veremos que este conjunto debe contener como mínimo:

secuencia decisión / selección iteración

Todos los lenguajes de programación tienen un conjunto mínimo de instrucciones que permiten especificar el control del algoritmo que se quiere implementar.

Estructuras de Control - SECUENCIA

La forma de ejecución más simple, está representada por una sucesión de operaciones (por ej. asignaciones), en la que el orden de ejecución coincide con el orden físico de aparición de las instrucciones. Program ejemplo;

var a,b,res: integer; begin read (a); b:= 100; res := a + b; end;

a b res

8 100 108

Estructuras de Control - DECISIÓN En un algoritmo representativo de un problema

real es prácticamente imposible que todo sea secuencial. Es necesario tomar decisiones en función de los datos del problema.

¿Evaluar condición?

Se procesan las Instrucciones por la

alternativa verdadera

Se procesan lasInstrucciones por la

alternativa falsa

Falsa Verdadera

Estructuras de Control - DECISIÓN EN EL ROBOT…si (condición) accion accion ----

si (condición) accion accion sino accion

EN PASCAL…if (condición) then accion

if (condición) then accionelse accion

EN PASCAL…if (condición) then begin accion; accion; endelse accion

Estructuras de Control - DECISIÓN

Ejemplo: escriba un programa que le permita determinar e informar si la suma de dos números enteros leídos es mayor a 20, en caso contrario, debe informarse que la suma es menor

¿Cómo leo números?.¿Cómo determino si la suma es mayor a 20?¿Cómo informo el resultado?

Estructuras de Control - DECISIÓN

Program uno;Var num1, num2,res: integer;Begin read (num1); read (num2); res:= num1 + num2; if (res > 20) then write (“La suma superó el valor 20”) else write (“La suma no superó el valor 20”)End.

Estructuras de Control - DECISIÓN

Ejercicio 1: escriba un algoritmo que le permita determinar e informar si un número leído desde teclado es par.

¿Cómo leo el número?.¿Cómo determino si es par?¿Cómo informo el resultado?

Estructuras de Control - DECISIÓN

Program uno;Var resto,num1:integer;Begin read (num1); resto:= num1 MOD 2; if (resto = 0) then write (‘El número es par’) else write (‘El número es impar’);End.

Program uno;Var num1:integer;Begin read (num1); if (num1 MOD 2 = 0) then write (‘El número es par’) else write (‘El número es impar’);End.

¿Lo vemos en el Free Pascal ?

¿Lo vemos en el Free Pascal ?

Estructuras de Control – SELECCION

Permite realizar una o más acciones dependiendo de cuál de todas las condiciones evaluadas es verdadera.

Ejecutar acciones cuando Variable_

Decisión =posibilidad 1

Evalúa la Variable_Decisión

Ejecutar accionescuando Variable_

Decisión=posibilidad 2

Ejecutar acciones cuando Variable_

Decisión = posiblidad N...

Estructuras de Control - SELECCION

EN EL ROBOT…No hay

EN PASCAL…case variable of posibilidad 1: accion 1; posibilidad 2: begin accion 2; accion 3 ; end else accion;end;

Estructuras de Control - SELECCION

Ejercicio 2: escriba un algoritmo que lea dos números reales y un carácter desde teclado, e informe el resultado de aplicar la operación que indica el carácter, a los números leídos.

¿Cómo determino qué operación hay que hacer?

Estructuras de Control - SELECCION

Program dos;Var num2,num1,res:real; op: char;Begin read (num1); read (num2); read (op); if (op = ‘+’) then res:= num1 + num2 else if (op = ‘-’) then res:= num1 - num2 else if (op = ‘*’) then res:= num1 * num2 else if (op = ‘/’) then res:= num1 / num2Write (“El resultado es:”, res);End.

Program dos;Var num2,num1,res:real; op: char;Begin read (num1); read (num2); read (op); case op of ‘+’: res:= num1 + num2; ‘-’: res:= num1 - num2; ‘*’: res:= num1 * num2; ‘/’: res:= num1 / num2; end;write (“El resultado es:”, res);End.

¿Qué pasa si leo cualquier otro carácter?

¿Lo vemos en el Free Pascal

?

¿Lo vemos en el Free Pascal

?

Estructuras de Control - SELECCION

Ejercicio 3: escriba un algoritmo que lea un carácter e informe que tipo de carácter leyó (numérico, letra minúscula, letra mayúscula o símbolo especial).

¿Cómo determino qué tipo es?

Estructuras de Control - SELECCION

Program tres;Var car: char;Begin read (car); if (car=‘a’) or (car=‘b’) or (car=‘c’)… then write (“El carácter leído es una letra minúscula”) else if (car=‘A’) or (car=‘B’) or (car=‘C’)… then write (“El carácter leído es una letra mayúscula”) else if (car=‘0’) or (car=‘1’) or (car=‘2’)… then write (“El carácter leído es un número”) else write (“El carácter leído es un símbolo especial”)End.

Program tres;Var car: char;Begin read (car); case car of ‘a’: write (“El carácter leído es una letra minúscula”); ‘b’:write (“El carácter leído es una letra minúscula”); … ‘A’: write (“El carácter leído es una letra mayúscula”); ‘B’:write (“El carácter leído es una letra mayúscula”); … ‘0’: write (“El carácter leído es número”); ‘1’: write (“El carácter leído es un número”); … else write (“El carácter leído es un símbolo”);End.

Esto resulta un

problema…

Estructuras de Control - SELECCION

Program tres;Var car: char;Begin

read (car); case car of ‘a’..’z’: write (“El carácter leído es una letra minúscula”);

‘A’..’Z’: write (“El carácter leído es una letra mayúscula”);

‘0’..’9’: write (“El carácter leído es número”);

else write (“El carácter leído es un símbolo”);

End.

Estructuras de Control - SELECCION

La variable de decisión debe ser de tipo ordinal.

Puede haber más de un valor en cada una de las entradas.

Un valor debe aparecer en una sola de las entradas.

Deben incluirse todas las posibilidades.

Estructuras de Control - SELECCION

Para pensar:Si ahora suponemos que lo que se quiere hacer es contar aquellas personas que tienen peso entre 48,5 y 50,5, las que tienen entre 60 y 75,5 y las que tienen entre 90 y 103,5

¿Puedo utilizar una estructura de control de selección CASE?

Estructuras de Control - REPETICION

Es una extensión natural de la secuencia. Consiste en repetir un número fijo y conocido de veces una o más acciones.

Se Repitió N veces?

no

si

Ejecutar el bloque de instrucciones del lazo

Estructuras de Control - REPETICION

EN EL ROBOT…repetir 4 accion 1 accion 2

repetir variable accion 1 accion 2

EN PASCAL…

¿Qué son? ¿Qué representan?

For indice := valor_inicial to valor_final do

begin

accion 1;

accion 2;

end;Palabras Clave

Estructuras de Control - REPETICION

Ejercicio 4: realizar un algoritmo que calcule la suma de los números entre el 1 y el 20.

Estructuras de Control - REPETICION

Program cuatro; var i,suma: integer; begin suma:= 0; for i:= 1 to 20 do suma:= suma + i;end.

¿Qué sucede con i después de que el for se termina?

¿Puedo modificar i?

¿Lo vemos en el Free Pascal ?

¿Lo vemos en el Free Pascal ?

Estructuras de Control - REPETICIONEjemplo 1: For indice := ‘A’ to ‘H’

do accion

¿De qué tipo es índice?¿Cuántas veces se ejecuta el for?

Ejemplo 2:For índice := FALSE to TRUE do Begin Acciones End;

Ejemplo 3:For índice := 20 to 18 do acciones

¿De qué tipo es índice?¿Cuántas veces se ejecuta el for?

¿De qué tipo es índice?¿Cuántas veces se ejecuta el for?

¿Lo vemos en el Free

Pascal ?

¿Lo vemos en el Free

Pascal ?

Estructuras de Control - REPETICION

Ejemplo 4:

For índice := 20 downto 18 do

begin

accion;

accion;

End;

¿De qué tipo es índice?¿Cuántas veces se ejecuta el for?

Estructuras de Control - REPETICION

Consideraciones acerca de la variable índice en Pascal:

La variable de control debe ser de tipo ordinal (entero, boolean, char).No debe modificarse dentro del lazo Error Los incrementos ó decrementos y testeos son implícitosAl terminar el ciclo, la variable índice no tiene un valor definido (su uso se limita a la repetición).

Estructuras de Control - REPETICION

Ejercicio 5: realizar un algoritmo que lea 55 valores que representan sueldos de los 55 docentes de la Facultad e informe el monto total que debe pagar la facultad.

Estructuras de Control - REPETICION

Program cinco;Var sueldo, total: real; i:integer;Begin total:= 0; for i:= 1 to 55 do begin read(sueldo); total:= total + sueldo; end; write (total);End.

Estructuras de Control - ITERACION

Puede ocurrir que se desee ejecutar un bloque de instrucciones desconociendo el número exacto de veces que se ejecutan.

Para estos casos existen en la mayoría de los lenguajes de programación estructurada, las estructuras de control iterativas condicionales.

Como su nombre lo indica las acciones se ejecutan dependiendo de la evaluación de la condición.

Estructuras de Control - ITERACION

Precondicionales.

Evalúan la condición y luego ejecutan el bloque de acciones. (Como el mientras del robot)

Postcondicionales.

Ejecutan el bloque de acciones y luego evalúan la condición. (NUEVO!!)

Estructuras de Control - ITERACION

Las estructuras iterativas pre-condicionales primero evalúan la condición y si es verdadera se ejecuta el bloque de acciones.

Dicho bloque se pueda ejecutar 0, 1 ó más veces.

Evalúa la condición

Se ejecutan las acciones correspondientes

VerdaderaFalsa

Estructuras de Control - ITERACION

EN EL ROBOT…mientras (condicion) accion 1 accion 2

EN PASCAL…while condicion do accion1

while condicion do begin accion 1; accion 2; end;

Estructuras de Control - ITERACION

Ejercicio 5: realizar un programa que lea números hasta leer el número 8. Al finalizar informar la suma de todos los números leídos.

Estructuras de Control - ITERACION

Program cinco;

Var

num,total:integer;

Begin

total:= 0;

read (num)

while (num <> 8) do

begin

total:= total + num;

read(num);

end;

write(total);

End.

Estructuras de Control - ITERACION

En cuanto a las estructuras iterativas post-condicionales, primero se ejecuta el bloque de acciones y luego se evalúa la condición. A diferencia de la estructura iterativa pre-condicional, el bloque de acciones se ejecuta 1 ó más veces.

Se ejecutan las acciones del bloque

Evaluar la condición

Falsa Verdadera

Estructuras de Control - ITERACION

EN EL ROBOT…No existe EN PASCAL…

repeat accion1until (condicion)

Estructuras de Control - ITERACION

Ejercicio 5: realizar un programa que lea números hasta leer el número 8. Al finalizar informar la suma de todos los números leídos.

NO ES ADECUADO UN REPEAT UNTIL

Ejercicio 6: realizar un programa que lea números hasta leer el número 8 (debe procesarse). Al finalizar informar la suma de todos los números leídos.

Estructuras de Control - ITERACION

Program seis;Var num,total:integer;Begin total:= 0; read (num); while (num <> 8) do begin total:= total + num; read(num); end; total:= total + num; write (total);End.

Program seis;Var num,total:integer;Begin total:= 0; repeat read (num); total:= total + num; until (total = 8) write (total);End.

Estructuras de Control - ITERACION

Precondicionales:Se utiliza el while.Evalúan la condición y luego ejecutan el bloque de Realiza las acciones mientras la condición es verdadera. Se ejecuta 0,1 o más veces.

Postcondicionales:Se utiliza el repeat until.Ejecuta el bloque de acciones y luego evalúa la condición.Realiza las acciones mientras la condición es falsa. Se ejecuta 1 o más veces. (como mínimo 1 vez)

REALIZAR LOS SIGUIENTES EJERCICIOS

1. Se lee una secuencia de caracteres terminada en ‘-’. Se pide

contar todos los caracteres ‘a’ que aparecen en la secuencia, y

calcular el porcentaje de ‘a’ sobre el total de caracteres.

2. Se leen números hasta ingresar el cero. Para cada uno se

pide informar su sumatoria.

top related