Beruflich Dokumente
Kultur Dokumente
Operadores
Contenido
[ocultar]
o o
o o
o o
5 Bucles
o o o o
6.1 Sentencia goto 6.2 Sentencia exit 6.3 Sentencia return 6.4 Sentencia abort
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:
Paralela:
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
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.
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.
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.
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]
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.
Ejemplo[editar]
for I in 1..N loop V(I) := 0; end loop; -- I se itera desde 1 hasta N.
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.
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 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 abort[editar]
Se utiliza slo para tareas. Implica la terminacin incondicional de las tareas que se especifiquen. Su notacin sintctica es: