La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

INFORMATICA DEL CBU Clase 9 Año 2016 FUNCIONES ARREGLOS.

Presentaciones similares


Presentación del tema: "INFORMATICA DEL CBU Clase 9 Año 2016 FUNCIONES ARREGLOS."— Transcripción de la presentación:

1 INFORMATICA DEL CBU Clase 9 Año 2016 FUNCIONES ARREGLOS

2 PRIMERA PARTE PROCEDIMIENTOS PROCEDURE. Parámetros por valor.
Parámetros por referencia. Mg. Ing. Fátima Martínez

3 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

4 Palabra clave PROCEDURE
PROCEDURE nombre ([parámetros formales]); Bloque Declarativo Begin Bloque de Instrucciones End; Mg. Ing. Fátima Martínez

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

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

7 Problema. Determine el Mayor
Mg. Ing. Fátima Martínez

8 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

9 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

10 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

11 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

12 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

13 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

14 SEGUNDA PARTE FUNCIONES Funciones Estándares. FUNCTION.
Llamada a una Función. Mg. Ing. Fátima Martínez

15 Función Devuelve un valor de manera explícita. Comienza con la palabra clave Function seguida a continuación de un nombre. Sigue con una lista de parámetros entre paréntesis. Finaliza con : tipo de valor que retorna.

16 FUNCIONES ESTÁNDARES Con o sin parámetros:
Write (Temperatura, Altura, presión); F := chr(67); Read (Numero); Clrscr(); Area := PI *sqr (Radio); X := round(X); Distancia := sqrt(sqr(x) + sqr(y));

17 Function Instrucciones localizadas entre Begin y End;
Function Nombre(Param1:Tipo1; Param2:Tipo2) : Tipo; El control no vuelve al programa de llamada hasta que se ejecute una instrucción End; Tipo de función, especifica el tipo de dato que devuelve. Mg. Ing. Fátima Martínez 17

18 Function Begin End; Function Nombre(Param1:Tipo1; Param2:Tipo2): Tipo;
Var variable : tipo1; Begin (*Operaciones*); Nombre := resultado; // así devuelve valor End;

19 EJEMPLO de FUNCION Function Potencia(base: double; exp: integer): double; var i:integer; Pot: double; begin Pot := 1; // inicializa if (exp>0) then for i:=1 to exp do Pot := Pot * base; else Sigue->

20 if (exp< 0 ) then exp := -1*exp; for i:=1 to exp do begin
Pot := Pot * base; end; // del for Pot := 1/Pot; End; // del if Potencia := Pot; // devuelve valor End; // de la fn Mg. Ing. Fátima Martínez

21 LLAMADA A UNA FUNCIÓN Para ejecutar o llamar una función:
Nombre([argumentos]) Los paréntesis se incluyen aunque no tenga argumentos. Argumentos: variables o expresiones que se pasan a la función. Se separan con coma. Número y tipo de argumentos deben coincidir con número y tipo de parámetros de la función. Se utiliza su nombre en una expresión: impuestos := ImpuesTotales(5000); Writeln(ImpuesTotales(5000)); 21

22 Ejemplo de llamada a Función
(* En el bloque principal *) Begin clrscr; writeln('Ingrese Base y un exponente entero '); readln(a,b); P:=Potencia(a,b); writeln(P:2:4); Readkey; End. writeln(Potencia(a,b));

23 Valor devuelto en el nombre de la función
Function QueComer (DiaSemana: String, Hora: integer) : String; Begin (*Devuelve el menú de acuerdo al día y la hora*) If DíaSemana = ‘Viernes’ then QueComer := ‘Pescado’; Else QueComer := ‘Pollo’; End ; If Hora > 4 Then QueComer := ‘Demasiado tarde’ ; 23

24 Problema 1 Se tiene un circunferencia de Radio R = 50.
Generar 100 circunferencias con centros aleatorios, cuyas coordenadas son xg e yg y radio r = 10. Determinar y mostrar cuantos se encuentran dentro de la circunferencia.

25 r = 10 R = 50

26 COMIEZO DE ALGORITMO FIN DE ALGORITMO. CIRCULOS
cant:=0; rg := 10; R := 50; Para cont := 1 Hasta 100 Hacer Comienzo xg ← Aleatorio (80-(-80)+1); yg ← Aleatorio(60-(-60)+1); dist ← RaizCuadrada( xg yg 2 ); dist ← dist + rg; Si (dist < R) Entonces cant ← cant + 1; Fin; Escribir ('Cantidad Dentro= ', cant); FIN DE ALGORITMO. CIRCULOS

27 Procedimientos VS Funciones
Son invocados por su nombre. Pueden recibir argumentos. Devuelven un valor cuando devuelven el control. Se suelen utilizar para llevar a cabo cálculos. PROCEDIMIENTOS Son invocados por su nombre. Pueden recibir argumentos. No devuelven un valor cuando devuelven el control. Se suelen utilizar para recibir o procesar entradas, mostrar salidas. Mg. Ing. Fátima Martínez

28 Variables Globales y Locales
Ámbito de una variable: región donde se encuentra declarada. En Declaraciones Generales: Globales. Pueden ser utilizadas interiormente o exteriormente. Internamente o localmente: Locales. No pueden ser utilizadas exteriormente. Usar variables globales o locales depende del la necesidad del programa. Puede utilizarse el mismo identificador para entidades diferentes en lugares diferentes. Mg. Ing. Fátima Martínez 28

29 Locales: accesibles dentro un bloque de código.
Globales a nivel del código fuera de un bloque. Var factor: integer; Function Factorial(numero: integer): Longint; var producto: Longint; begin If numero <= 1 Then Factorial := 1 Else begin producto := 1; For factor := 2 To numero begin producto := producto * factor; End; Factorial := producto; Global Local Factorial Mg. Ing. Fátima Martínez 29

30 TERCERA PARTE ARREGLOS ARRAY. Unidimensionales: Vectores.
Declarar arreglos. Type: tipo de datos definido por el usuario. Operaciones con vectores. Asignación. Mg. Ing. Fátima Martínez

31 ARREGLOS Datos simples: Datos estructurados: Arreglos
Integer, Real, Char, Boolean. Cada variable representa un sólo dato individual. Datos estructurados: Arreglos Colección finita de datos (variables) del mismo tipo. Un único identificador representa a múltiples datos individuales. Pueden ser manipulados colectiva o individualmente. Mg. Ing. Fátima Martínez

32 Mg. Ing. Fátima del C. Martínez
ARREGLOS (ARRAY) Se le asigna una cantidad fija de memoria. Se almacenan en posiciones contiguas de memoria. El mismo identificador (nombre de variable). Cada elemento identificado por un índice. El número de índices determina su dimensionalidad. Acceso directo a cada elemento del arreglo: x[1], x[2], x[3]… x[n] Mg. Ing. Fátima del C. Martínez 11/17/2018

33 Mg. Ing. Fátima del C. Martínez
Vectores Arreglo unidimensional (lista). 7.50 4.75 6.55 5.25 6 (1) (2) (3) (4) (…) (n) Calificaciones Nombre del vector: Calificaciones Subíndice: [2] Contenido: Calificaciones[2] := 7.50 Mg. Ing. Fátima del C. Martínez 11/17/2018

34 Declarar ARREGLOS Su índice comienza en 1. Se declaran especificando:
Nombre del arreglo. Tamaño. Tipo de datos de los elementos del arreglo. Su índice comienza en 1. Mg. Ing. Fátima Martínez

35 Declaración formal de un arreglo
En una declaración de variable: Var nombreArreglo: array[tipo de indice] Of tipo Ejemplo: Arreglo de 100 elementos de tipo real Var lista : array[1..100] Of real; Crear un “alias” mediante una declarativa type: Type Vect = array[1..100] Of real; Var lista: Vect; Mg. Ing. Fátima Martínez

36 OPERACIONES CON VECTORES
Asignación: igual a cualquier variable, pero poniendo el número de índice del elemento entre [ ]. Var Notas: Vect; For i := 1 To 100 begin Notas[i] := 1 + random(10); suma = suma + Notas[i]; End; Promedio := suma/100; NOTAS Mg. Ing. Fátima del C. Martínez 11/17/2018

37 Ejemplo 1 Considerar el vector lista de 100 elementos.
Examinar el valor de cada elemento del arreglo y escribir aquellos valores que sean negativos. For cuenta:=1 To 100 do If lista[cuenta]<0 Then writeln(cuenta:3, lista[cuenta]:4:2); Mg. Ing. Fátima Martínez

38 Ejemplo 2 Leer una lista de N cantidades de temperaturas.
Calcular la media y obtener la desviación de cada uno de las temperaturas respecto de la media: desviación = x[i] - media Mg. Ing. Fátima Martínez

39 Modularización del programa
Escribiremos procedimientos distintos para: Leer los datos de la lista. Calcular la media. Calcular la desviación y guardarla en otro vector. Mostrar el vector de la lista. Mostrar el vector de la desviación. Mg. Ing. Fátima Martínez

40 Leer datos de la lista Emplearemos un bucle: For i:=1 To final do
Begin write(‘La temperatura ’,i, ‘ -> ’); readln(lista[i]); End; Mg. Ing. Fátima Martínez

41 Calcular la media suma:=0; For i:=1 To final do Begin
suma := suma + lista[i]; End; media := suma/final; Mg. Ing. Fátima Martínez

42 Calcular las desviaciones
For i:=1 To final do Begin desviacion[i]:= media - lista[i]; End; Mg. Ing. Fátima Martínez

43 Mostrar resultados Writeln(‘Temperaturas: ’); For i:=1 To final do
write(lista[i]:5:2); Writeln(); Writeln(‘Media: ’, media); Writeln(); Writeln(‘Desviaciones: ’); write(desviacion[i]:5:2); Desviaciones Mg. Ing. Fátima Martínez

44 Ejemplo 3 Pasar una cadena de caracteres a mayúsculas considerando el CODIGO ASCII de los caracteres. Codigo ASCII Mayusculas Mg. Ing. Fátima Martínez


Descargar ppt "INFORMATICA DEL CBU Clase 9 Año 2016 FUNCIONES ARREGLOS."

Presentaciones similares


Anuncios Google