Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porBudi Hermanto Modificado hace 6 años
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
Presentaciones similares
© 2025 SlidePlayer.es Inc.
All rights reserved.