INFORMATICA DEL CBU Clase 8 Año 2016 PROCEDIMIENTOS
PRIMERA PARTE ESTRUCTURAS de DECISION: ESTRUCUTURAS DE REPETICIÓN: IF THEN ELSE CASE OF ESTRUCUTURAS DE REPETICIÓN: WHILE….DO REPEAT….UNTIL FOR Mg. Ing. Fátima Martínez
Estructura de Decisión. IF THEN ELSE if (Condición) then begin Acción afirmativa; end else Acción negativa; end; Si (Condición) Entonces comienzo Acción afirmativa Fin Sino Acción negativa Mg. Ing. Fátima Martínez
Mg. Ing. Fátima Martínez
Estructura de Decisión. CASE OF CASE expresión OF lista de rótulos 1: sentencias 1; lista de rótulos 2: sentencias 2; lista de rótulos 3: sentencias 3; … lista de rótulos n: sentencias n; END; Mg. Ing. Fátima Martínez
CASE OF. Diagrama de flujo Mg. Ing. Fátima Martínez
Ejemplo CASE readln(Nota); CASE Nota of 1, 2, 3: writeln('Insuficiente'); 4, 5 : writeln(‘Suficiente'); 6, 7: writeln(‘Bueno'); 8, 9: writeln(‘Distinguido'); 10: writeln(‘Sobresaliente'); END; Mg. Ing. Fátima Martínez
readln(opcion); CASE opcion of 1: Begin instrucciones; End; 2: Begin Mg. Ing. Fátima Martínez
Problema 1: Escribir una programa que contenga el siguiente menú: conversión de dólares a pesos. conversión de libras a kilogramos. conversión de kilómetros a millas. fin de menú. seleccionar opción. Mg. Ing. Fátima Martínez
Diagrama de flujo de CASE Eje_CASE Mg. Ing. Fátima Martínez
Estructuras de Repetición. Bloque FOR For Contador := ValorMayor DownTo ValorMenor Do Begin Instrucciones ejecutables; End; For Contador := ValorInicial TO ValorFinal Do Begin Instrucciones ejecutables; End; Mg. Ing. Fátima Martínez
Ejemplo: Sumar los primeros 10 números consecutivos uses crt; BEGIN (* main o principal*) Suma := 0; For Contador := 1 To 10 do begin Suma := Suma + Contador; end; writeln (‘La suma es = ’, Suma); END. Mg. Ing. Fátima Martínez
Ejemplo For Presenta los primeros 20 números de la serie de Fibonacci. Utiliza la Estructura de Control: For Programa Fibo Mg. Ing. Fátima Martínez
REPEAT UNTIL REPEAT UNTIL (condición) Acciones; Mg. Ing. Fátima Martínez
WHILE DO WHILE (condición) Do Begin end; Acciones; Mg. Ing. Fátima Martínez
MIENTRAS REPETIR HASTA Mg. Ing. Fátima Martínez
SEGUNDA PARTE SOLUCIÓN DEL PROBLEMA TÉCNICA Divide y Conquistarás ANALISIS DEL PROBLEMA MODULARIZACIÓN Los subprogramas Procedimientos Llamadas a procedimientos LOS PARÁMETROS Pasar parámetros Por valor. Por referencia. Mg. Ing. Fátima Martínez
La solución del problema Dividir el problema en subproblemas más sencillos de resolver. Refinamiento paso a paso o sucesivos: proceso para descomponer el problema principal en etapas o subproblemas más sencillos. Método denominado diseño descendente (Top Down). Mg. Ing. Fátima Martínez
DIVIDE & CONQUER (Divide y Conquistarás) Técnica que permite resolver un problema descomponiéndolo en problemas parciales. Mediante la combinación parcial de las soluciones de sus subproblemas. Los subproblemas deben ser independientes entre si para conseguir un resultado eficiente. Mg. Ing. Fátima Martínez
DIVIDE & CONQUER PROBLEMA PROBLEMA 2 PROBLEMA 1 PROBLEMA 3 Mg. Ing. Fátima Martínez
DIVIDE & CONQUER PROBLEMA 1 PROBLEMA 1.2 PROBLEMA 1.1 PROBLEMA 1.3 Mg. Ing. Fátima Martínez
Análisis del problema El cálculo del área del rectángulo: Entrada de datos (altura, base). Proceso el cálculo del área = base x altura. Salida de datos (base, altura, área). Mg. Ing. Fátima Martínez
23
METODO TOP DOWN Descomposición de un programa en subprogramas concisos e individuales. Cada parte representa una parte bien definida del problema total. El Subprograma puede ser definido una vez y llamado luego desde varios puntos diferentes del programa. Cada vez que el subprograma sea invocado podrá procesar u conjunto diferente de datos. Mg. Ing. Fátima Martínez
SUBPROGRAMAS Porción del código dentro de un programa más grande. Rutinas o conjuntos de instrucciones que realizan una labor específica. Pueden ser invocados, llamados, desde cualquier punto del programa principal, más de una vez. Se les puede proporcionarles información (datos) a través de parámetros. Esa información va a ser procesada dentro del subprograma. Si ese proceso genera otra información, ésta puede ser devuelta al punto desde donde se invocó el módulo y el programa continuará ejecutándose desde ese punto. Mg. Ing. Fátima Martínez
VENTAJAS Ahorra tiempo de desarrollo. Disminuye el tamaño de los programas. Aumenta la claridad en la lectura de los programas. Disminuye la posibilidad de error. Facilita la reutilización del código en otros programas. Mg. Ing. Fátima Martínez
Procedimientos Se los invoca mediante un nombre de procedimiento seguido de una lista (opcional) de parámetros. Al invocar al procedimiento se puede transferir cualquier número de datos o ninguno. No devuelven un valor cuando devuelven el control. Se suelen utilizar para recibir o procesar entradas, mostrar salidas. Mg. Ing. Fátima Martínez
Procedimientos Se ejecutan las instrucciones entre las sentencias: Begin y End; El control no vuelve al programa de llamada hasta que se ejecuta una instrucción End; Los parámetros: pueden representar información que se proporciona al procedimiento. bajos ciertas condiciones, información devuelta por el procedimiento Mg. Ing. Fátima Martínez
Palabra clave PROCEDURE PROCEDURE nombre ([parámetros formales]); Bloque Declarativo Begin Bloque de Instrucciones End; Mg. Ing. Fátima Martínez
Problema. Determine el Mayor Mg. Ing. Fátima Martínez
Ejemplo de PROCEDURE Program Mayor; uses crt; (*-------------------------------------------------------*) Procedure Maximo(A,B,C: integer); var Max: integer; Begin If (A>B) and (A>C) then Max := A; if (B>A) and (B>C) then Max := B; if (C>A) and (C>B) then Max := C; writeln('El mayor es ', Max); End; Mg. Ing. Fátima Martínez
Llamadas a Procedimiento Se escribe el nombre del procedimiento en el lugar donde queremos que se ejecute. Si el procedimiento contiene parámetros, éstos deberán ser pasados entre paréntesis. Mg. Ing. Fátima Martínez 32
Llamadas a Procedimiento (*------------------------------------*) var a, b, c: integer; Begin (*Bloque principal*) clrscr; repeat write ('Ingrese 3 enteros. Para terminar ingrese 0'); readln(a, b, c); Maximo(a, b, c); (*Llamada a procedimiento*) until ((a=0) and (b=0) and (c=0)); End. Mayor Mg. Ing. Fátima Martínez
Parámetros formales y actuales Permiten intercambiar información entre un procedimiento y su punto de referencia. Los datos que se transfieren pueden ser variables, constantes y expresiones. Cada dato se transfiere entre un parámetro actual y un parámetro formal. Parámetros formales: en la cabecera del procedimiento. Valores que el procedimiento espera que se transfiera. Parámetros actuales: en el punto de invocación. Mg. Ing. Fátima Martínez 34
Declaración de parámetros Se declaran igual que las variables especificando: un nombre, un tipo de datos y un mecanismo para pasar parámetros (por valor o por referencia). Mg. Ing. Fátima Martínez 35
Parámetros formales Si la cantidad de parámetros formales es numerosa, puede recurrirse a la sintaxis clásica de un bloque declarativo: Procedure Nombre ( Parámetro1 : tipo1; Parámetro2 : tipo2; .............................. Parámetron : tipo_n ) Mg. Ing. Fátima Martínez
Muy importante Los parámetros actuales (desde la invocación) deben corresponderse… En cantidad. En tipo En orden Con los parámetros formales que espera la declarativa formal del subprograma. Mg. Ing. Fátima Martínez
Identificadores locales Dentro del procedimiento puede haber un bloque de identificadores que requiera el subprograma para su funcionamiento. const ............ var .............. Estos identificadores y los parámetros formales, se denominan identificadores locales. Tienen vida mientras el procedimiento se halle en ejecución. Mg. Ing. Fátima Martínez
Parámetros por Valor Se denominan también parámetros de entrada. Actúan como una copia de aquél que es enviado desde el punto de invocación. Cualquier cambio realizado en el procedimiento no afecta a la variable original. Mg. Ing. Fátima Martínez
Parámetros por Referencia Los parámetros formales reciben las direcciones de memoria que referencian a los valores de los parámetros actuales. No es una copia sino el original. Cualquier cambio dentro de la rutina afecta la variable original. En la sintaxis el identificador va precedido de la palabra reservada var. Mg. Ing. Fátima Martínez
Ejemplo de parámetros por referencia Program Uso_Parametro_Referencia ; uses crt; (*-----------------------------------------------------*) Procedure Suma(x,y:integer; Var Result:integer); begin Result:=x+y; end; (*-----------------------------------------------------* ) Mg. Ing. Fátima Martínez
Ejemplo var a,b,R: integer; (*--------------------------------------*) Begin (*--- Main ----*) clrscr; a:=10; b:=4; Suma(a,b,R); (*Invoca al proced.*) writeln('a+b=',R); readkey; End. Mg. Ing. Fátima Martínez
IMPORTANTE Un procedimiento puede o no devolver un valor al punto desde donde fue invocado (bloque principal u otro subprograma). Si devuelve un valor, el parámetro que devuelva esa información deberá ser pasado por referencia. Mg. Ing. Fátima Martínez
Más de un parámetro de retorno PROGRAM Inverso_Opuesto; uses crt; (*------------------------------------------------------------------*) PROCEDURE Inv_Op (x:integer; var Inv: single; var Op:integer); begin if x<>0 then begin Inv:=1/x; Op:=-x; end else begin writeln('Cero no tiene inverso. El puesto es 0'); end; End; (*-------------------- Principal --------------------------------------*) Inv_Op(N,I,O); writeln('N= ', N, ' Su inverso ',I:2:2, ' Su Opuesto ', O); InversOp Mg. Ing. Fátima Martínez
TERCERA PARTE Variable especial: Bandera Generación de números aleatorios. Randomize Función Random() Variable especial: Bandera Mg. Ing. Fátima Martínez
Randomize, Random N := random(Valor) Aleatorios Capicua Función Random() un Generador de números aleatorios. Randomize: REINICIALIZA el secuenciador para que siempre arranque de valores diferentes y NO REPITA siempre la misma serie aleatoria. N := random(Valor) Aleatorios El valor aleatorio que se genera está comprendido entre 0 y Valor – 1 n:=100 + random(101) Números entre 100 y 200 n:=500 – random(51) Números entre 500 y 450 Capicua Mg. Ing. Fátima Martínez
Bandera En programación, hace referencia a una variable interruptor. También denominada interruptor o conmutador es una variable que puede tomar uno de dos valores: verdadero o falso. Permite comunicar información de una parte a otra del programa. Bandera Mg. Ing. Fátima Martínez