SlideShare una empresa de Scribd logo
1 de 10
Descargar para leer sin conexión
Programación Distribuida y en Tiempo Real
EJERCICIO 1. TIPOS DE DATOS ENTEROS
Escribir un programa en ADA con las siguientes características:
1.Defina los tres tipos de datos siguientes:
• A: entero dentro del intervalo [-120, 120].
• B: entero dentro del intervalo [0, 50]
• C: entero sin signo de 1 byte.
2.Inicialice tres variables (una por cada tipo de dato definido) y
calcule las operaciones:
• A + B
• A + C
• B + C
3.Imprima por pantalla los resultados de cada una de las operaciones
anteriores.
with Ada.Text_IO;
use Ada.Text_IO;
procedure Ejercicio1 is --procedimiento principal
package Integer_InOut is new Integer_IO(Integer);
use Integer_InOut;
subtype A is integer range -120 .. 120;-- Entero de rango -120-120
subtype B is integer range 0 .. 50; -- Entero de rango 0 a 50
subtype C is integer range 0 .. Integer'last; --Entero sin signo
de rango 0 a último entero permitido
--Parte de declaraciones
varA : A := -42;
varB : B := 25;
varC : C := 100;
begin --Cuerpo de sentencias ejecutables
put("El valor A es:");
put(varA);
New_line;
put_line("El valor B es:");
put(varB);
New_line;
put("El valor C es:");
put(varC);
New_line;
put_line("El valor A + B es:");
put(varA + varB);
Francisco Manuel García Vallejo Página 1 de 10
Programación Distribuida y en Tiempo Real
New_line;
put_line("El valor A + C es:");
put(varA + varC);
New_line;
put_line("El valor B + C es:");
put(varB + varC);
end;
Francisco Manuel García Vallejo Página 2 de 10
Programación Distribuida y en Tiempo Real
EJERCICIO 2. TIPOS DE DATOS DISCRETOS
Escribir un programa en ADA que defina un tipo de datos discreto
llamado “Semáforo” que pueda tomar los valores {Rojo, Amarillo,
Verde}.
with Ada.Text_IO;
use Ada.Text_IO;
procedure Ejercicio2 is --procedimiento principal
type Semaforo is (Rojo, Amarillo, Verde); -- Creamos el tipo
enumerado Semaforo con los tres valores
package Semaforo_IO is new Enumeration_IO(Semaforo); -- Lo
utilizamos para poder realizar entradas y salidas con los tipos
enumerados
use Semaforo_IO;
--Parte de declaraciones
varA : Semaforo := Semaforo'val(1); --Creamos una variable
tipo semaforo, cuyo valor lo asignamos por la posicion que ocupa,
en este caso he dicho posición 1 que corresponde al segundo
elemeno
varB : Semaforo := Amarillo; --Creamos una variable tipo
semaforo asignadole un valor directamente
varC : Semaforo := Semaforo'last; --Creamos una variable tipo
semaforo cuyo valor es el ultimo
begin
--Cuerpo de sentencias ejecutables
put(varA); --Mostramos por pantalla el contenido de la
variable
New_line;
put(varB);
New_line;
put(varC);
New_line;
put_line("Ejercicio 2");
end;
Francisco Manuel García Vallejo Página 3 de 10
Programación Distribuida y en Tiempo Real
EJERCICIO 3. TIPOS DE DATOS REALES
Escribir un programa en ADA con las siguientes características:
1.Defina los tipos de datos siguientes:
• A: coma fija dentro del intervalo [-50, 50] con precisión 0.01.
• B: coma flotante dentro del intervalo [-200, 200] con tres dígitos
decimales.
2.Inicialice dos variables (una por cada tipo de dato definido) y calcule
la operación A + B.
3.Imprima por pantalla el resultado de la operación anterior.
with Ada.Text_IO;
use Ada.Text_IO;
procedure Ejercicio3 is
-- Necesario para leer/escribir Reales Float.
type Float_B is digits 3 range -2.0E2 .. 2.0E2;
--Float_B_IO sirve para reales en coma flotante
use Float_B_IO;
type Float_A is delta 0.01 range -100.00 .. 100.00;
--Coma fija decimal
subtype Fija_A is Floatfija_A is range -50.00 .. 50.00;
package Float_A_IO is new Float_IO(Float_A);
--Float_B_IO sirve para reales en coma flotante
use Float_A_IO;
A : Fija_A := Fija_A'last;
B : Float_B := Float_B'first;
begin
put_line("El valor A es:");
--put(A);
put_line("El valor B es:");
put(B);
put_line("El valor B + B es:");
Float_B(A)
put(A + B);
end ;
Francisco Manuel García Vallejo Página 4 de 10
Programación Distribuida y en Tiempo Real
EJERCICIO 4. ARRAYS
Escribir un programa en ADA con las siguientes características:
1. Defina los tipos de datos siguientes:
1. A: vector de 150 posiciones de datos reales.
2. B: matriz de tres dimensiones con tamaño 200x200x200 de
datos enteros.
3. C: vector de datos reales con cualquier tamaño.
2. Inicialice tres variables (una por cada tipo de dato definido) a 0.
3. Imprimir por pantalla el resultado.
with Ada.Text_IO;
use Ada.Text_IO;
procedure Ejercicio4 is
posicionesA : constant Integer := 150;
--Creamos la constante que nos indica le numero de valores del
vector A
type VectorA is array(0 .. posicionesA-1) of Float;
posicionesB : constant Integer := 199;
type MatrizB is array( 0 .. posicionesB , 0 .. posicionesB , 0 ..
posicionesB ) of Integer;
type VectorC is array( integer range <> ) of Float;
--package Float_IO is new Float_IO(Float);
--Float_IO sirve para reales en coma flotante
--use Float_IO;
--package Integer_IO is new Integer_IO(Integer);
--Float_IO sirve para enteros
--use Integer_IO;
A : VectorA := (0.0, others => 0.0);
B : MatrizB := (others => (others => (others => 0)));
C : VectorC(1 .. 10) := (others => 0.0);
begin
put_line("Ejercicio 4");
--Put_Line(B(50,50,50)'Img);
end;
--Compila Bien pero al ejecutarlo se produce un desbordamiento
Francisco Manuel García Vallejo Página 5 de 10
Programación Distribuida y en Tiempo Real
EJERCICIO 5. CADENAS
Escribir un programa en ADA con las siguientes características:
1. Inicialice una constante de tipo cadena que contenga la
expresión “TIEMPO REAL”.
2. Imprimir por pantalla la constante anterior.
with Ada.Text_IO;use Ada.Text_IO;
procedure Ejercicio5 is
tiemporeal : constant String := "TIEMPO REAL";
begin
put_line("Ejercicio 5");
Put(tiemporeal);
end;
Francisco Manuel García Vallejo Página 6 de 10
Programación Distribuida y en Tiempo Real
EJERCICIO 6. REGISTROS
Escribir un programa en ADA con las siguientes características:
1. Definir el tipo de datos “Datos_personales” con los siguientes
campos:
1. Nombre: cadena de texto
2. Apellidos: cadena de texto
3. Fecha de nacimiento: registro con día, mes y año.
2. Inicializar una variable del tipo definido con tus datos
personales.
3. Imprimir por pantalla la variable definida anteriormente.
with Ada.Text_IO;use Ada.Text_IO;
procedure ejercicio6 is
package Integer_InOut is new Integer_IO(Integer);
use Integer_InOut;
type NombreMes is
(Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octu
bre,Noviembre,Diciembre);
type TipoDia is new Integer range 1 .. 31;
type TipoAnio is new Integer range 0 .. 4000;
type Date is
record
Dia : TipoDia;
Mes : NombreMes;
Anio : TipoAnio;
end record;
type Personal is
record
Nombre : String(1 .. 20) ;
Apellidos : String(1 .. 20);
Nacimiento : Date;
end record;
yo : Personal;
Francisco Manuel García Vallejo Página 7 de 10
Programación Distribuida y en Tiempo Real
begin
-- yo := (Nombre => "Francisco Manuel ", Apellidos => "Garcia
Vallejo ", Nacimiento => (Dia => 21, Mes => Diciembre, Anio
=>1968) );
yo.Nombre := "Francisco Manuel " ;
yo.Apellidos := "Garcia Vallejo ";
yo.Nacimiento := (21,Diciembre,1968) ;
put_line( "Ejercicio 6" );
put_line( "Mi nombre es: " );
put_line( yo.Nombre );
put_line( "Mis apellidos son: " );
put_line( yo.Apellidos );
put_line( "Nací el día: " );
put_line( yo.Nacimiento.Dia'Img );
put_line( "Nací el més: " );
put_line( yo.Nacimiento.Mes'Img );
put_line( yo.Nacimiento.Anio'Img );
end ejercicio6 ;
Francisco Manuel García Vallejo Página 8 de 10
Programación Distribuida y en Tiempo Real
EJERCICIO 7. TIPOS DINÁMICOS
Escribir un programa en ADA con las siguientes características:
1. Definir un tipo de datos “Nodo” para elaborar una lista enlazada
de elementos tipo “Datos_personales” definido en el ejercicio
anterior.
2. Inicializar una variable de tipo “Nodo” con tus datos personales.
3. Imprimir por pantalla la variable definida anterior
with Ada.Text_IO;use Ada.Text_IO;
procedure Ejercicio7 is
package Integer_InOut is new Integer_IO(Integer);
use Integer_InOut;
type NombreMes is
(Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octu
bre,Noviembre,Diciembre);
type TipoDia is new Integer range 1 .. 31;
type TipoAnio is new Integer range 0 .. 4000;
type Date is
record
Dia : TipoDia;
Mes : NombreMes;
Anio : TipoAnio;
end record;
type Personal is
record
Nombre : String(1 .. 20) ;
Apellidos : String(1 .. 20);
Nacimiento : Date;
end record;
type Nodo is access Personal;
yo : Personal;
liEnPersonal : Nodo;
Francisco Manuel García Vallejo Página 9 de 10
Programación Distribuida y en Tiempo Real
begin
-- yo := (Nombre => "Francisco Manuel ", Apellidos => "Garcia
Vallejo ", Nacimiento => (Dia => 21, Mes => Diciembre, Anio
=>1968) );
liEnPersonal := new Personal;
yo.Nombre := "Francisco Manuel " ;
yo.Apellidos := "Garcia Vallejo ";
yo.Nacimiento := (21,Diciembre,1968) ;
liEnPersonal.all.Nombre := "Francisco Manuel " ;
liEnPersonal.all.Apellidos := "Garcia Vallejo ";
liEnPersonal.all.Nacimiento := (21,Diciembre,1968) ;
put_line( "Ejercicio 7: Con el Registro Yo del Ejercicio 6" );
put_line( "Mi nombre es: " );
put_line( yo.Nombre );
put_line( "Mis apellidos son: " );
put_line( yo.Apellidos );
put_line( "Nací el día: " );
put_line( yo.Nacimiento.Dia'Img );
put_line( "Nací el més: " );
put_line( yo.Nacimiento.Mes'Img );
put_line( "Nací el año: " );
put_line( yo.Nacimiento.Anio'Img );
put_line( "Ejercicio 7: Con La lista enlazada del tipo Nodo" );
put_line( "Mi nombre es: " );
put_line( liEnPersonal.Nombre );
put_line( "Mis apellidos son: " );
put_line( liEnPersonal.Apellidos );
put_line( "Nací el día: " );
put_line( liEnPersonal.Nacimiento.Dia'Img );
put_line( "Nací el més: " );
put_line( liEnPersonal.Nacimiento.Mes'Img );
put_line( "Nací el año: " );
put_line( liEnPersonal.Nacimiento.Anio'Img );
end Ejercicio7 ;
Francisco Manuel García Vallejo Página 10 de 10

Más contenido relacionado

La actualidad más candente

Arrays and structures
Arrays and structuresArrays and structures
Arrays and structures
Mohd Arif
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
innovalabcun
 
Tutorial membuat database menggunakan vb
Tutorial membuat database menggunakan vbTutorial membuat database menggunakan vb
Tutorial membuat database menggunakan vb
eva nurvaizah
 
Ejercicio completo colegio
Ejercicio completo colegioEjercicio completo colegio
Ejercicio completo colegio
gusanchez2668
 
Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++
EdsonRc
 
Understanding java streams
Understanding java streamsUnderstanding java streams
Understanding java streams
Shahjahan Samoon
 

La actualidad más candente (20)

Java Stack Data Structure.pptx
Java Stack Data Structure.pptxJava Stack Data Structure.pptx
Java Stack Data Structure.pptx
 
Keywords, identifiers ,datatypes in C++
Keywords, identifiers ,datatypes in C++Keywords, identifiers ,datatypes in C++
Keywords, identifiers ,datatypes in C++
 
Arrays and structures
Arrays and structuresArrays and structures
Arrays and structures
 
10 programas de if
10 programas de if10 programas de if
10 programas de if
 
Practicas
PracticasPracticas
Practicas
 
Listas doblemente enlazadas
Listas doblemente enlazadasListas doblemente enlazadas
Listas doblemente enlazadas
 
Uso de Excepciones en JAVA
Uso de Excepciones en JAVAUso de Excepciones en JAVA
Uso de Excepciones en JAVA
 
, Programacion java
, Programacion  java, Programacion  java
, Programacion java
 
Tutorial membuat database menggunakan vb
Tutorial membuat database menggunakan vbTutorial membuat database menggunakan vb
Tutorial membuat database menggunakan vb
 
Ejercicio completo colegio
Ejercicio completo colegioEjercicio completo colegio
Ejercicio completo colegio
 
Ejercicios de programacion if - switch-case
Ejercicios de programacion   if  -   switch-caseEjercicios de programacion   if  -   switch-case
Ejercicios de programacion if - switch-case
 
Representacion memoria estatica y memoria dinámica
Representacion memoria estatica y memoria dinámicaRepresentacion memoria estatica y memoria dinámica
Representacion memoria estatica y memoria dinámica
 
Codigo para implementar pilas en java
Codigo para implementar pilas en javaCodigo para implementar pilas en java
Codigo para implementar pilas en java
 
C decision making and looping.
C decision making and looping.C decision making and looping.
C decision making and looping.
 
Sql alias
Sql aliasSql alias
Sql alias
 
Ejercicios de XSD
Ejercicios de XSDEjercicios de XSD
Ejercicios de XSD
 
Algoritmos 50 ejemplos
Algoritmos 50 ejemplosAlgoritmos 50 ejemplos
Algoritmos 50 ejemplos
 
Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++Archivos secuenciales-indexados C++
Archivos secuenciales-indexados C++
 
Understanding java streams
Understanding java streamsUnderstanding java streams
Understanding java streams
 
Ejercicios de algoritmos
Ejercicios de algoritmosEjercicios de algoritmos
Ejercicios de algoritmos
 

Similar a Ejercicio ADA Tipos de Datos en ADA (20)

Visual Basic
Visual BasicVisual Basic
Visual Basic
 
Aa javaaa intro
Aa javaaa introAa javaaa intro
Aa javaaa intro
 
Trabajo grupal de ciclos repetitivos
Trabajo grupal de ciclos repetitivosTrabajo grupal de ciclos repetitivos
Trabajo grupal de ciclos repetitivos
 
Plataformas tecnologicas introduccion visual studio clase 1 - 4
Plataformas tecnologicas introduccion visual studio   clase 1 - 4Plataformas tecnologicas introduccion visual studio   clase 1 - 4
Plataformas tecnologicas introduccion visual studio clase 1 - 4
 
Dfd
DfdDfd
Dfd
 
MANUAL DFD
MANUAL DFDMANUAL DFD
MANUAL DFD
 
Dfd, manual1
Dfd, manual1Dfd, manual1
Dfd, manual1
 
MANUAL 6
MANUAL 6MANUAL 6
MANUAL 6
 
Diagramas de flujo1 dfd
Diagramas de flujo1 dfdDiagramas de flujo1 dfd
Diagramas de flujo1 dfd
 
Diagramas de flujo
Diagramas de flujo Diagramas de flujo
Diagramas de flujo
 
Diagramas de flujo1
Diagramas de flujo1Diagramas de flujo1
Diagramas de flujo1
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Manual de DFD_3
Manual de DFD_3Manual de DFD_3
Manual de DFD_3
 
Manual de dfd
Manual de dfd Manual de dfd
Manual de dfd
 
Diagramas de flujo
Diagramas de flujoDiagramas de flujo
Diagramas de flujo
 
Manual de dfd
Manual de dfdManual de dfd
Manual de dfd
 
MANUAL DFD
MANUAL DFDMANUAL DFD
MANUAL DFD
 
MANUAL DE DFD
MANUAL DE DFD MANUAL DE DFD
MANUAL DE DFD
 
MANUAL DE DFD
MANUAL DE DFDMANUAL DE DFD
MANUAL DE DFD
 
Manual dfd 3
Manual dfd 3Manual dfd 3
Manual dfd 3
 

Último

2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
candy torres
 
Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdf
Gonella
 
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdfinforme-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
AndreaTurell
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
Wilian24
 
Lineamientos de la Escuela de la Confianza SJA Ccesa.pptx
Lineamientos de la Escuela de la Confianza  SJA  Ccesa.pptxLineamientos de la Escuela de la Confianza  SJA  Ccesa.pptx
Lineamientos de la Escuela de la Confianza SJA Ccesa.pptx
Demetrio Ccesa Rayme
 

Último (20)

Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024Tema 17. Biología de los microorganismos 2024
Tema 17. Biología de los microorganismos 2024
 
La Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración AmbientalLa Sostenibilidad Corporativa. Administración Ambiental
La Sostenibilidad Corporativa. Administración Ambiental
 
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdfPlan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
Plan-de-la-Patria-2019-2025- TERCER PLAN SOCIALISTA DE LA NACIÓN.pdf
 
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
2° SEM32 WORD PLANEACIÓN PROYECTOS DARUKEL 23-24.docx
 
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN  PARÍS. Por JAVIER SOL...
ACERTIJO LA RUTA DEL MARATÓN OLÍMPICO DEL NÚMERO PI EN PARÍS. Por JAVIER SOL...
 
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docxUNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
UNIDAD DIDACTICA nivel inicial EL SUPERMERCADO.docx
 
Apunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdfApunte clase teorica propiedades de la Madera.pdf
Apunte clase teorica propiedades de la Madera.pdf
 
PP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomasPP_Comunicacion en Salud: Objetivación de signos y síntomas
PP_Comunicacion en Salud: Objetivación de signos y síntomas
 
Los dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la VerdadLos dos testigos. Testifican de la Verdad
Los dos testigos. Testifican de la Verdad
 
La Evaluacion Formativa SM6 Ccesa007.pdf
La Evaluacion Formativa SM6  Ccesa007.pdfLa Evaluacion Formativa SM6  Ccesa007.pdf
La Evaluacion Formativa SM6 Ccesa007.pdf
 
Santa Criz de Eslava, la más monumental de las ciudades romanas de Navarra
Santa Criz de Eslava, la más monumental de las ciudades romanas de NavarraSanta Criz de Eslava, la más monumental de las ciudades romanas de Navarra
Santa Criz de Eslava, la más monumental de las ciudades romanas de Navarra
 
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdfinforme-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
informe-de-laboratorio-metodos-de-separacion-de-mezclas.pdf
 
6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria6°_GRADO_-_MAYO_06 para sexto grado de primaria
6°_GRADO_-_MAYO_06 para sexto grado de primaria
 
Sesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdfSesión de clase APC: Los dos testigos.pdf
Sesión de clase APC: Los dos testigos.pdf
 
Lineamientos de la Escuela de la Confianza SJA Ccesa.pptx
Lineamientos de la Escuela de la Confianza  SJA  Ccesa.pptxLineamientos de la Escuela de la Confianza  SJA  Ccesa.pptx
Lineamientos de la Escuela de la Confianza SJA Ccesa.pptx
 
EFEMERIDES DEL MES DE MAYO PERIODICO MURAL.pdf
EFEMERIDES DEL MES DE MAYO PERIODICO MURAL.pdfEFEMERIDES DEL MES DE MAYO PERIODICO MURAL.pdf
EFEMERIDES DEL MES DE MAYO PERIODICO MURAL.pdf
 
Actividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docxActividades para el 11 de Mayo día del himno.docx
Actividades para el 11 de Mayo día del himno.docx
 
1ERGRA~2.PDF EVALUACION DIAGNOSTICA 2024
1ERGRA~2.PDF EVALUACION DIAGNOSTICA 20241ERGRA~2.PDF EVALUACION DIAGNOSTICA 2024
1ERGRA~2.PDF EVALUACION DIAGNOSTICA 2024
 
sesion de aprendizaje 1 SEC. 13- 17 MAYO 2024 comunicación.pdf
sesion de aprendizaje 1 SEC. 13- 17  MAYO  2024 comunicación.pdfsesion de aprendizaje 1 SEC. 13- 17  MAYO  2024 comunicación.pdf
sesion de aprendizaje 1 SEC. 13- 17 MAYO 2024 comunicación.pdf
 
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdfTÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
TÉCNICAS OBSERVACIONALES Y TEXTUALES.pdf
 

Ejercicio ADA Tipos de Datos en ADA

  • 1. Programación Distribuida y en Tiempo Real EJERCICIO 1. TIPOS DE DATOS ENTEROS Escribir un programa en ADA con las siguientes características: 1.Defina los tres tipos de datos siguientes: • A: entero dentro del intervalo [-120, 120]. • B: entero dentro del intervalo [0, 50] • C: entero sin signo de 1 byte. 2.Inicialice tres variables (una por cada tipo de dato definido) y calcule las operaciones: • A + B • A + C • B + C 3.Imprima por pantalla los resultados de cada una de las operaciones anteriores. with Ada.Text_IO; use Ada.Text_IO; procedure Ejercicio1 is --procedimiento principal package Integer_InOut is new Integer_IO(Integer); use Integer_InOut; subtype A is integer range -120 .. 120;-- Entero de rango -120-120 subtype B is integer range 0 .. 50; -- Entero de rango 0 a 50 subtype C is integer range 0 .. Integer'last; --Entero sin signo de rango 0 a último entero permitido --Parte de declaraciones varA : A := -42; varB : B := 25; varC : C := 100; begin --Cuerpo de sentencias ejecutables put("El valor A es:"); put(varA); New_line; put_line("El valor B es:"); put(varB); New_line; put("El valor C es:"); put(varC); New_line; put_line("El valor A + B es:"); put(varA + varB); Francisco Manuel García Vallejo Página 1 de 10
  • 2. Programación Distribuida y en Tiempo Real New_line; put_line("El valor A + C es:"); put(varA + varC); New_line; put_line("El valor B + C es:"); put(varB + varC); end; Francisco Manuel García Vallejo Página 2 de 10
  • 3. Programación Distribuida y en Tiempo Real EJERCICIO 2. TIPOS DE DATOS DISCRETOS Escribir un programa en ADA que defina un tipo de datos discreto llamado “Semáforo” que pueda tomar los valores {Rojo, Amarillo, Verde}. with Ada.Text_IO; use Ada.Text_IO; procedure Ejercicio2 is --procedimiento principal type Semaforo is (Rojo, Amarillo, Verde); -- Creamos el tipo enumerado Semaforo con los tres valores package Semaforo_IO is new Enumeration_IO(Semaforo); -- Lo utilizamos para poder realizar entradas y salidas con los tipos enumerados use Semaforo_IO; --Parte de declaraciones varA : Semaforo := Semaforo'val(1); --Creamos una variable tipo semaforo, cuyo valor lo asignamos por la posicion que ocupa, en este caso he dicho posición 1 que corresponde al segundo elemeno varB : Semaforo := Amarillo; --Creamos una variable tipo semaforo asignadole un valor directamente varC : Semaforo := Semaforo'last; --Creamos una variable tipo semaforo cuyo valor es el ultimo begin --Cuerpo de sentencias ejecutables put(varA); --Mostramos por pantalla el contenido de la variable New_line; put(varB); New_line; put(varC); New_line; put_line("Ejercicio 2"); end; Francisco Manuel García Vallejo Página 3 de 10
  • 4. Programación Distribuida y en Tiempo Real EJERCICIO 3. TIPOS DE DATOS REALES Escribir un programa en ADA con las siguientes características: 1.Defina los tipos de datos siguientes: • A: coma fija dentro del intervalo [-50, 50] con precisión 0.01. • B: coma flotante dentro del intervalo [-200, 200] con tres dígitos decimales. 2.Inicialice dos variables (una por cada tipo de dato definido) y calcule la operación A + B. 3.Imprima por pantalla el resultado de la operación anterior. with Ada.Text_IO; use Ada.Text_IO; procedure Ejercicio3 is -- Necesario para leer/escribir Reales Float. type Float_B is digits 3 range -2.0E2 .. 2.0E2; --Float_B_IO sirve para reales en coma flotante use Float_B_IO; type Float_A is delta 0.01 range -100.00 .. 100.00; --Coma fija decimal subtype Fija_A is Floatfija_A is range -50.00 .. 50.00; package Float_A_IO is new Float_IO(Float_A); --Float_B_IO sirve para reales en coma flotante use Float_A_IO; A : Fija_A := Fija_A'last; B : Float_B := Float_B'first; begin put_line("El valor A es:"); --put(A); put_line("El valor B es:"); put(B); put_line("El valor B + B es:"); Float_B(A) put(A + B); end ; Francisco Manuel García Vallejo Página 4 de 10
  • 5. Programación Distribuida y en Tiempo Real EJERCICIO 4. ARRAYS Escribir un programa en ADA con las siguientes características: 1. Defina los tipos de datos siguientes: 1. A: vector de 150 posiciones de datos reales. 2. B: matriz de tres dimensiones con tamaño 200x200x200 de datos enteros. 3. C: vector de datos reales con cualquier tamaño. 2. Inicialice tres variables (una por cada tipo de dato definido) a 0. 3. Imprimir por pantalla el resultado. with Ada.Text_IO; use Ada.Text_IO; procedure Ejercicio4 is posicionesA : constant Integer := 150; --Creamos la constante que nos indica le numero de valores del vector A type VectorA is array(0 .. posicionesA-1) of Float; posicionesB : constant Integer := 199; type MatrizB is array( 0 .. posicionesB , 0 .. posicionesB , 0 .. posicionesB ) of Integer; type VectorC is array( integer range <> ) of Float; --package Float_IO is new Float_IO(Float); --Float_IO sirve para reales en coma flotante --use Float_IO; --package Integer_IO is new Integer_IO(Integer); --Float_IO sirve para enteros --use Integer_IO; A : VectorA := (0.0, others => 0.0); B : MatrizB := (others => (others => (others => 0))); C : VectorC(1 .. 10) := (others => 0.0); begin put_line("Ejercicio 4"); --Put_Line(B(50,50,50)'Img); end; --Compila Bien pero al ejecutarlo se produce un desbordamiento Francisco Manuel García Vallejo Página 5 de 10
  • 6. Programación Distribuida y en Tiempo Real EJERCICIO 5. CADENAS Escribir un programa en ADA con las siguientes características: 1. Inicialice una constante de tipo cadena que contenga la expresión “TIEMPO REAL”. 2. Imprimir por pantalla la constante anterior. with Ada.Text_IO;use Ada.Text_IO; procedure Ejercicio5 is tiemporeal : constant String := "TIEMPO REAL"; begin put_line("Ejercicio 5"); Put(tiemporeal); end; Francisco Manuel García Vallejo Página 6 de 10
  • 7. Programación Distribuida y en Tiempo Real EJERCICIO 6. REGISTROS Escribir un programa en ADA con las siguientes características: 1. Definir el tipo de datos “Datos_personales” con los siguientes campos: 1. Nombre: cadena de texto 2. Apellidos: cadena de texto 3. Fecha de nacimiento: registro con día, mes y año. 2. Inicializar una variable del tipo definido con tus datos personales. 3. Imprimir por pantalla la variable definida anteriormente. with Ada.Text_IO;use Ada.Text_IO; procedure ejercicio6 is package Integer_InOut is new Integer_IO(Integer); use Integer_InOut; type NombreMes is (Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octu bre,Noviembre,Diciembre); type TipoDia is new Integer range 1 .. 31; type TipoAnio is new Integer range 0 .. 4000; type Date is record Dia : TipoDia; Mes : NombreMes; Anio : TipoAnio; end record; type Personal is record Nombre : String(1 .. 20) ; Apellidos : String(1 .. 20); Nacimiento : Date; end record; yo : Personal; Francisco Manuel García Vallejo Página 7 de 10
  • 8. Programación Distribuida y en Tiempo Real begin -- yo := (Nombre => "Francisco Manuel ", Apellidos => "Garcia Vallejo ", Nacimiento => (Dia => 21, Mes => Diciembre, Anio =>1968) ); yo.Nombre := "Francisco Manuel " ; yo.Apellidos := "Garcia Vallejo "; yo.Nacimiento := (21,Diciembre,1968) ; put_line( "Ejercicio 6" ); put_line( "Mi nombre es: " ); put_line( yo.Nombre ); put_line( "Mis apellidos son: " ); put_line( yo.Apellidos ); put_line( "Nací el día: " ); put_line( yo.Nacimiento.Dia'Img ); put_line( "Nací el més: " ); put_line( yo.Nacimiento.Mes'Img ); put_line( yo.Nacimiento.Anio'Img ); end ejercicio6 ; Francisco Manuel García Vallejo Página 8 de 10
  • 9. Programación Distribuida y en Tiempo Real EJERCICIO 7. TIPOS DINÁMICOS Escribir un programa en ADA con las siguientes características: 1. Definir un tipo de datos “Nodo” para elaborar una lista enlazada de elementos tipo “Datos_personales” definido en el ejercicio anterior. 2. Inicializar una variable de tipo “Nodo” con tus datos personales. 3. Imprimir por pantalla la variable definida anterior with Ada.Text_IO;use Ada.Text_IO; procedure Ejercicio7 is package Integer_InOut is new Integer_IO(Integer); use Integer_InOut; type NombreMes is (Enero,Febrero,Marzo,Abril,Mayo,Junio,Julio,Agosto,Septiembre,Octu bre,Noviembre,Diciembre); type TipoDia is new Integer range 1 .. 31; type TipoAnio is new Integer range 0 .. 4000; type Date is record Dia : TipoDia; Mes : NombreMes; Anio : TipoAnio; end record; type Personal is record Nombre : String(1 .. 20) ; Apellidos : String(1 .. 20); Nacimiento : Date; end record; type Nodo is access Personal; yo : Personal; liEnPersonal : Nodo; Francisco Manuel García Vallejo Página 9 de 10
  • 10. Programación Distribuida y en Tiempo Real begin -- yo := (Nombre => "Francisco Manuel ", Apellidos => "Garcia Vallejo ", Nacimiento => (Dia => 21, Mes => Diciembre, Anio =>1968) ); liEnPersonal := new Personal; yo.Nombre := "Francisco Manuel " ; yo.Apellidos := "Garcia Vallejo "; yo.Nacimiento := (21,Diciembre,1968) ; liEnPersonal.all.Nombre := "Francisco Manuel " ; liEnPersonal.all.Apellidos := "Garcia Vallejo "; liEnPersonal.all.Nacimiento := (21,Diciembre,1968) ; put_line( "Ejercicio 7: Con el Registro Yo del Ejercicio 6" ); put_line( "Mi nombre es: " ); put_line( yo.Nombre ); put_line( "Mis apellidos son: " ); put_line( yo.Apellidos ); put_line( "Nací el día: " ); put_line( yo.Nacimiento.Dia'Img ); put_line( "Nací el més: " ); put_line( yo.Nacimiento.Mes'Img ); put_line( "Nací el año: " ); put_line( yo.Nacimiento.Anio'Img ); put_line( "Ejercicio 7: Con La lista enlazada del tipo Nodo" ); put_line( "Mi nombre es: " ); put_line( liEnPersonal.Nombre ); put_line( "Mis apellidos son: " ); put_line( liEnPersonal.Apellidos ); put_line( "Nací el día: " ); put_line( liEnPersonal.Nacimiento.Dia'Img ); put_line( "Nací el més: " ); put_line( liEnPersonal.Nacimiento.Mes'Img ); put_line( "Nací el año: " ); put_line( liEnPersonal.Nacimiento.Anio'Img ); end Ejercicio7 ; Francisco Manuel García Vallejo Página 10 de 10