Sie sind auf Seite 1von 7

Programacin en Ada Sentencias y estructuras de control

Programacin en Ada/Sentencias y estructuras de control

Operadores

Sentencias y estructuras de control

Contenido
[ocultar]

1 Clasificacin de sentencias 2 Bloques

o o

2.1 Definicin 2.2 Ejemplo

3 Sentencia de seleccin (if)

o o

3.1 Definicin 3.2 Ejemplo

4 Sentencia de seleccin por casos (case)

o o

4.1 Definicin 4.2 Ejemplo

5 Bucles

5.1 Sentencia de bucle simple (loop)

5.1.1 Definicin 5.1.2 Ejemplo

5.2 Sentencia de bucle iterativo (for)

5.2.1 Definicin 5.2.2 Ejemplo

5.3 Sentencia de bucle condicional (while)

5.3.1 Definicin 5.3.2 Ejemplo

6 Otras sentencias de control (goto, exit, return, abort)

o o o o

6.1 Sentencia goto 6.2 Sentencia exit 6.3 Sentencia return 6.4 Sentencia abort

7 Manual de referencia de Ada

Clasificacin de sentencias[editar]

Simple:

Secuencial:

Nula (null). Asignacin (X := Y;) Llamada a procedimiento. Cdigo. Llamada a punto de entrada (entry). En procesamiento paralelo. Espera (delay). Terminacin abrupta (abort). En procesamiento paralelo.

Control:

Terminacin de bucle (exit). Salto a etiquetas (goto). No recomendable. Elevacin de excepcin (raise). Retorno de subprograma (return).

Compuesta:

Secuencial:

Bloque. Sentencia if. Sentencia case. Bucle (loop).

Paralela:

Sentencia accept. Sentencia select.

Bloques[editar]
Ada distingue entre declaraciones, que introducen identificadores nuevos, y sentencias, que no lo hacen. El fragmento de texto ms simple que incluye declaraciones y sentencias es un bloque.

Definicin[editar]
bloque ::= [ identificador : ] [ declare parte_declarativa ] begin sentencias [ exception manejador_de_excepcin

{ manejador_de_excepcin } ] end [ identificador ] ;

Ejemplo[editar]
-- Supuestas X e Y declaradas con anterioridad de tipo Float: declare Temp: Float; begin Temp := X; X := Y; Y := Temp; end; -- Esta variable slo es visible dentro del bloque. -- Se intercambian 2 variables.

Destacar que un bloque es una sentencia y cuando se ejecuta se elaboran las declaraciones contenidas en su parte declarativa (entre declare y begin) y despus se ejecutan las sentencias del cuerpo (entre begin y end). El mbito de las variables declaradas en un bloque finaliza cuando termina dicho bloque.

Sentencia de seleccin (if)[editar]

Flujo de control if-then-else

Definicin[editar]
sentencia_seleccin ::= if condicin then secuencia_de_sentencias [ { elsif condicin then secuencia_de_sentencias } ] [ else secuencia_de_sentencias ] end if ;

with Ada.Text_Io,Ada.Integer_Text_Io; use Ada.Text_Io,Ada.Integer_Text_Io; procedure comptar_LA is cp,c: character; n: integer; begin Put("Escribe una frase"); Put(c); n := 0; cp := ' '; get(c); --si cp es espacio seguir leyendo while c /= '.' loop bucle if cp = 'L' and c = 'A' then n := n+1; end if; -- si cp es L y c es A incrementar n y finalizar el if cp := c; Get(c); --igualamos cp a c para proceder y c sigue al proxima caracter end loop; --FINALIZAMOS BUCLE Put("El numero de palabras de la frase es"); --enseamos en pantalla variable n Put(n); end comptar_LA; --mientras c sea diferente del PUNTO entrar en --inicializamos n a cero --pedimos y recojemos texto --declaramos las variables

Ejemplo[editar]
if Hoy = DOM then Maana := LUN; elsif Hoy /= SAB then Laborable := True; else -- Cualquier otro caso. Maana := TDa'Succ(Hoy); end if; -- Si no es domingo ni sbado. -- Si hoy es domingo.

Sentencia de seleccin por casos (case)[editar]

Flujo de control de la estructura case

Definicin[editar]
sentencia_seleccin_por_casos ::= case expresin is alternativa_caso { alternativa_caso } end case ; alternativa_caso ::= when eleccin { | eleccin } => secuencia_de_sentencias eleccin ::= expresin_simple | rango_discreto | others

Ejemplo[editar]
case Hoy is when MIE..VIE => Entrenar_duro; when MAR | SAB => Entrenar_poco; when DOM => Competir; alternativa. end case; when others => Descansar; -- Rango. -- Varias elecciones.

-- Una eleccin. -- Debe ser nica y la ltima

Bucles[editar]
Sentencia de bucle simple (loop)[editar]
Definicin[editar]
sentencia_bucle_simple ::= [ identificador_bucle : ] loop secuencia_de_sentencias end loop [ identificador_bucle ] ;

Ejemplo[editar]

Vida: loop Trabajar; Comer; Dormir;

-- El bucle dura indefinidamente.

end loop Vida;

Este bucle slo se puede abandonar si alguno de los procedimientos levanta una excepcin. El bucle simple a menudo se acompaa de una sentencia exit para abandonar el bucle cuando se cumple una condicin.

loop Alimentar_Caldera; Monitorizar_Sensor; exit when Temperatura_Ideal; end loop;

Sentencia de bucle iterativo (for)[editar]


Definicin[editar]
sentencia_bucle_iterativo ::= [ identificador_bucle : ] for parmetros_for loop secuencia_de_sentencias end loop [ identificador_bucle ] ; parmetros_for ::= identificador in [ reverse ] rango_discreto

Ejemplo[editar]
for I in 1..N loop V(I) := 0; end loop; -- I se itera desde 1 hasta N.

Sentencia de bucle condicional (while)[editar]


Definicin[editar]
sentencia_bucle_iterativo ::= [ identificador_bucle : ] while condicin loop secuencia_de_sentencias end loop [ identificador_bucle ] ;

Ejemplo[editar]

I := 1; while I > N loop V(I) := 0; I := I + 1; end loop; -- Se hace el bucle mientras se cumpla la condicin.

Otras sentencias de control (goto, exit, return, abort)[editar]


Sentencia goto[editar]
Antes de nada, decir que la utilizacin de sentencias goto se desaconseja totalmente. Ada posee estructuras de control adecuadas para evitar su uso. Si se soporta su utilizacin es por si se quiere traducir de otro lenguaje a Ada automticamente. Se especifica una etiqueta entre los smbolos << y >>, por ejemplo, <<Salto>>. Se realiza el salto a dicha etiqueta con la sentencia goto Salto; que transferira el control a la siguiente sentencia despus de la etiqueta. No puede usarse para transferir control fuera de un subprograma.

Sentencia exit[editar]
Termina el bucle nombrado en la sentencia o, si no aparece, el bucle ms prximo que la contiene. Su notacin sintctica es:

sentencia_exit ::= exit [ nombre_bucle ] [ when condicin ] ;

Sentencia return[editar]
Termina la ejecucin del subprograma ms prximo que la contiene, tanto en procedimientos como en funciones donde, adems, se utiliza para devolver el resultado de dicha funcin. Su notacin sintctica es:

sentencia_return ::= return [ expresin ] ;

Sentencia abort[editar]
Se utiliza slo para tareas. Implica la terminacin incondicional de las tareas que se especifiquen. Su notacin sintctica es:

sentencia_abort ::= abort nombre_tarea { , nombre_tarea } ;

Das könnte Ihnen auch gefallen