La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Subprogramas –Encabezamiento –Declaraciones –Cuerpo –Encabezamiento.

Presentaciones similares


Presentación del tema: "Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Subprogramas –Encabezamiento –Declaraciones –Cuerpo –Encabezamiento."— Transcripción de la presentación:

1 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Subprogramas –Encabezamiento –Declaraciones –Cuerpo –Encabezamiento –Declaraciones –Cuerpo procedure Hello is -- declaraciones begin Put("Hello world"); end Hello; function Func return Boolean is -- declaraciones begin --... return True; end Func;

2 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde2 Encabezamiento –procedure NombreProc (lista de parámetros formales) is –function NombreFunc (lista de parámetros formales) return TipoRetorno is Parámetro formal –Cada parámetro formal está definido por Nombre (identificador) Modo de pasaje de parámetro: in, out, in out Tipo Lista de parámetros formales –(P1: in integer; P2, P3: out character; P4, P5: in out boolean) Parámetros formales de una función Sólo modo in

3 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde3 Invocación a procedimientos procedure Swap(A, B: in out Integer) is Aux: Integer := A; begin A := B; B := Aux; end Swap; –Un parámetro actual para cada parámetro formal Notación posicional Swap(I, J); Notación nombrada Swap(A => I, B => J); Swap(B => J, A => I); Swap(I, B => J); Swap(J, A => I); -- ilegal:posicionales antes que nombrados

4 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde4 Invocación a funciones function Sumatoria(N: in integer) return integer is Total: integer := 0; begin for I in 1..N loop Total := Total + I; end loop; return Total; end Sumatoria; –Un parámetro actual para cada parámetro formal Notación posicional I := Sumatoria(4); I := Sumatoria(4) * Sumatoria(8) + 5; Put(Sumatoria(4)); Notación nombrada I := Sumatoria(N => 4);

5 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde5 Valores de parámetros por default –Los in pueden tener valor por default procedure Put(Item: in integer; Width: in integer := 0); Put(5, 3); --..5 Put(5); -- 5 –Ejemplo procedure TresP(A: in integer := 10; B: in out integer; C: out integer); TresP(5, Y, Z); TresP(X, Y, Z); TresP(B => Y, C => Z); TresP(, Y, Z); -- ilegal

6 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde6 Valores de parámetros por default –Ejemplo (Olsen, Whitehill) with Text_IO; use Text_IO; procedure Clase2_ParamDefault is package IntIO is new Integer_IO(integer); use IntIO; N: integer; procedure P(A: in integer := N * 2) is begin Put(A); end P; begin P(5); -- 5, N * 2 no es evaluado N := 5; P; -- 10 N := 3; P; -- 6 end Clase2_ParamDefault;

7 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde7 Bloques –Conjunto de sentencias agrupadas –Permite declaraciones con alcance, visibilidad y tiempo de vida limitados al cuerpo del bloque --... begin I := J; --... end; --... procedure Clase2_Bloque is I, J: integer; begin I := 1; J := 2; --... declare Temp: integer := I; begin I := J; J := Temp; end; --... end Clase2_Bloque;

8 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde8 Labels –Bloques –Loops NombreBloque: declare Temp: integer := I; begin I := J; J := Temp; end NombreBloque; NombreLoop: loop -- sentencias exit NombreLoop when Condicion; -- sentencias end loop NombreLoop; NombreWhile: while Condicion loop -- sentencias end loop NombreWhile;

9 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde9 Recursión function Sumatoria(N: in integer) return integer is Total: integer := 0; begin if N > 0 then Total := N + Sumatoria(N - 1); end if; return Total; end Sumatoria;

10 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde10 Recursión mutua procedure P1(N: in integer); procedure P2(A, B: in integer) is begin --... P1(A + B); --... end P2; procedure P1(N: in integer) is begin --... P2(N, N * 4); --... end P1;

11 Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde11 Visibilidad, alcance de identificadores Cadenas estática y dinámica. Alcance estático with Text_IO; use Text_IO; procedure Clase2_Visibilidad is package IntIO is new Integer_IO(integer); use IntIO; I: integer := 1; procedure H is begin Put(I); end H; procedure G is I: integer := 2; begin H; Put(I); end G; begin G; end Clase2_Visibilidad; Programa I = 1 Invocación de G I = 2 Invocación de H


Descargar ppt "Seminario de Lenguajes A – Opción Ada Seminario de Lenguajes A – Opción Ada – Raúl Champredonde1 Subprogramas –Encabezamiento –Declaraciones –Cuerpo –Encabezamiento."

Presentaciones similares


Anuncios Google