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

47
Teoría – Alejandro Gonzalez PROGRAMACIÓN I

Upload: desideria-basa

Post on 29-Jan-2016

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

Teoría – Alejandro Gonzalez

PROGRAMACIÓN I

Page 2: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

¿Qué vimos ?

Problema del Mundo Real

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

ModeloModelo Diseño ModularDiseño Modular

Page 3: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseñ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

Page 4: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

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

Page 5: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

¿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

Page 6: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

¿Cómo asignamos valores a variables?

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

Page 7: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 8: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 9: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

Teoría – Alejandro Gonzalez

Estructuras de Control en Pascal

Page 10: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 11: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

Page 12: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

Page 13: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

Page 14: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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?

Page 15: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 16: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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?

Page 17: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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 ?

Page 18: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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...

Page 19: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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;

Page 20: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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?

Page 21: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

?

Page 22: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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?

Page 23: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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…

Page 24: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 25: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 26: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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?

Page 27: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

Page 28: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

Page 29: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

Estructuras de Control - REPETICION

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

Page 30: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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 ?

Page 31: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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 ?

Page 32: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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?

Page 33: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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).

Page 34: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 35: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 36: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 37: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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!!)

Page 38: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

Page 39: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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;

Page 40: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 41: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 42: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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

Page 43: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

Estructuras de Control - ITERACION

EN EL ROBOT…No existe EN PASCAL…

repeat accion1until (condicion)

Page 44: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 45: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.

Page 46: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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)

Page 47: Teoría – Alejandro Gonzalez PROGRAMACIÓN I. ¿Qué vimos ? Problema del Mundo Real Problema del Mundo Real Análisis Solución Diseño Modelo Diseño Modular

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.