Programación en Ada (Basico)

download Programación en Ada (Basico)

of 151

description

Programación básica en el lenguaje Ada

Transcript of Programación en Ada (Basico)

  • Sistemas de Tiempo RealAda Bsico

    EVI

    R

    UN

    S DAD DE

    ET

    NEI

    RO

    **

    Z

    V

    EN

    E

    A

    LEU

    I

    Seccin de Sist. Digitales y ControlDepartamento de Electricidad

    Escuela de Ingeniera y Ciencias AplicadasUniversidad de Oriente

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Porqu Ada?

    "Uno puede pensar de Smalltalk que es flexible yseguro pero no eficiente, de C++ que es flexible yeficiente pero no seguro, y de Ada 83 que es seguro yeficiente pero no flexible. Ada 95 rene lo mejor delas tres palabras, el es seguro, eficiente y flexible...".

  • Porqu Ada?

    "Uno puede pensar de Smalltalk que es flexible yseguro pero no eficiente, de C++ que es flexible yeficiente pero no seguro, y de Ada 83 que es seguro yeficiente pero no flexible. Ada 95 rene lo mejor delas tres palabras, el es seguro, eficiente y flexible...".1

    1Barnes. Concurrency in Ada. Addinson-Wesley Publishers. 1996.

  • Objetivos

    Conocer las caractersticas generales de un len-guaje de programacin de tiempo real.Conocer algunas caractersticas especficas de unlenguaje de programacin de tiempo real.Aplicar las particularidades de los lenguajes de pro-gramacin de tiempo real a la estructura de los sis-temas de control industrial.

  • Objetivos

    Conocer las caractersticas generales de un len-guaje de programacin de tiempo real.Conocer algunas caractersticas especficas de unlenguaje de programacin de tiempo real.Aplicar las particularidades de los lenguajes de pro-gramacin de tiempo real a la estructura de los sis-temas de control industrial.

  • Objetivos

    Conocer las caractersticas generales de un len-guaje de programacin de tiempo real.Conocer algunas caractersticas especficas de unlenguaje de programacin de tiempo real.Aplicar las particularidades de los lenguajes de pro-gramacin de tiempo real a la estructura de los sis-temas de control industrial.

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales:

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales:

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales:

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales:

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales:

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales:

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales: (Fortran, Pascal, C, PL/M,...).

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales: (Fortran, Pascal, C, PL/M,...).

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales: (Fortran, Pascal, C, PL/M,...).

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales: (Fortran, Pascal, C, PL/M,...).

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes:

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales: (Fortran, Pascal, C, PL/M,...).

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes: (Modula, Ada, RTJava, ...)

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales: (Fortran, Pascal, C, PL/M,...).

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes: (Modula, Ada, RTJava, ...)

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Lenguajes de Programacin para STR

    Hay tres clases de lenguajes de inters para Sistemas deTiempo Real:

    Lenguajes ensambladores:

    Trabajan directamente con los registros de memria de la m-quina.Flexibles y eficientes.Slo cumplen el acceso a bajo nivel.

    Lenguajes secuenciales: (Fortran, Pascal, C, PL/M,...).

    Necesitan un SO para concurrencia y tiempo real.Se tienen que hacer llamadas al sistema.

    Lenguajes concurrentes: (Modula, Ada, RTJava, ...)

    Concurrencia y tiempo real incluidos en el lenguaje.Las tareas son parte del programa global.

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Caractersticas necesarias

    Concurrencia.Modelo de datos orientado a objetos.Acceso a bajo nivel (interrupciones, etc.).Manejadores de dispositivos.Gestin del tiempo.Actividades peridicas.Actividades espordicas.Planificacin.Gestin de recursos compartidos.Fiabilidad y tolerancia a fallas.Adems de transportables, eficientes, .....

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Ada

    Ada es un lenguaje de programacin robusto usado a travsdel mundo en aplicaciones de control de procesos, en unadiversidad de areas.El nombre es en honor a la persona considerada mundial-mente como el primer programador, la Condesa de Lovelace,Augusta Ada Byron King.Alumna de la matemtica inglesa Mary Somerville (traduc-tora de los trabajos de Laplace), escribi en 1841, a los 26aos de edad, un "plan" para que la Mquina Anlitica, deBabbage, pudiera calcular los nmeros de Bernoulli. Este seconsidera el primer programa de computacin.En su artculo, publicado en 1843, la llamada "mujer de lasideas universales" o la "princesa de los paralelogramos", co-menta que esta mquina podra ser usada, adems, paraproducir grficos y componer msica compleja.

  • Ada

    Ada es un lenguaje de programacin robusto usado a travsdel mundo en aplicaciones de control de procesos, en unadiversidad de areas.El nombre es en honor a la persona considerada mundial-mente como el primer programador, la Condesa de Lovelace,Augusta Ada Byron King.Alumna de la matemtica inglesa Mary Somerville (traduc-tora de los trabajos de Laplace), escribi en 1841, a los 26aos de edad, un "plan" para que la Mquina Anlitica, deBabbage, pudiera calcular los nmeros de Bernoulli. Este seconsidera el primer programa de computacin.En su artculo, publicado en 1843, la llamada "mujer de lasideas universales" o la "princesa de los paralelogramos", co-menta que esta mquina podra ser usada, adems, paraproducir grficos y componer msica compleja.

  • Ada

    Ada es un lenguaje de programacin robusto usado a travsdel mundo en aplicaciones de control de procesos, en unadiversidad de areas.El nombre es en honor a la persona considerada mundial-mente como el primer programador, la Condesa de Lovelace,Augusta Ada Byron King.Alumna de la matemtica inglesa Mary Somerville (traduc-tora de los trabajos de Laplace), escribi en 1841, a los 26aos de edad, un "plan" para que la Mquina Anlitica, deBabbage, pudiera calcular los nmeros de Bernoulli. Este seconsidera el primer programa de computacin.En su artculo, publicado en 1843, la llamada "mujer de lasideas universales" o la "princesa de los paralelogramos", co-menta que esta mquina podra ser usada, adems, paraproducir grficos y componer msica compleja.

  • Ada

    Ada es un lenguaje de programacin robusto usado a travsdel mundo en aplicaciones de control de procesos, en unadiversidad de areas.El nombre es en honor a la persona considerada mundial-mente como el primer programador, la Condesa de Lovelace,Augusta Ada Byron King.Alumna de la matemtica inglesa Mary Somerville (traduc-tora de los trabajos de Laplace), escribi en 1841, a los 26aos de edad, un "plan" para que la Mquina Anlitica, deBabbage, pudiera calcular los nmeros de Bernoulli. Este seconsidera el primer programa de computacin.En su artculo, publicado en 1843, la llamada "mujer de lasideas universales" o la "princesa de los paralelogramos", co-menta que esta mquina podra ser usada, adems, paraproducir grficos y componer msica compleja.

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • Origen

    En 1974, el USDoD inicia un proyecto para la unificacin,bajo un slo lenguaje, del desarrollo de todos sus proyectos.Entre otras, este debera cubrir las necesidades de los siste-mas militares de guiado de misiles; es decir, servicios:

    Seguros y robustos (safety-critical).Distribuidos (distributed).De tiempo real crticos (Hard RTS).

    Por tanto, se requera del lenguaje:Ocurrencia mnima de errores de programacin (strong ty-ping).Procesamiento de excepciones (Fault-Tolerance).Alta estructuracin.Concurrencia.Gestin de tiempo.Acceso a bajo nivel.Alta eficiencia.

  • 1983 - 1995

    Despues de 9 aos de desarrollo y aplicacin, parte del pro-yecto fue dado a conocer como Ada 83, y se convirti en unestndar de ANSI en 1983: ANSI/MIL-STD 1815.El USDoD y la NATO exigan el uso de este lenguaje en losproyectos que contrataban (el Ada mandate).Este mandato termin en USA en 1997, cuando comenzarona usar productos COTS (Commercial Off The Shelf).Durante aos, parte del proyecto fue mantenido de formaabierta y gratuita (GNAT) por la NYU y la USAAF.En 1995, despus de la primera revisin (1987), bajo el nom-bre de Ada 95, pasa a convertirse en el primer lenguaje deprogramacin estandarizado orientado a objetos, bajo la nor-ma ANSI/ISO/IEC 8652:1995.

  • 1983 - 1995

    Despues de 9 aos de desarrollo y aplicacin, parte del pro-yecto fue dado a conocer como Ada 83, y se convirti en unestndar de ANSI en 1983: ANSI/MIL-STD 1815.El USDoD y la NATO exigan el uso de este lenguaje en losproyectos que contrataban (el Ada mandate).Este mandato termin en USA en 1997, cuando comenzarona usar productos COTS (Commercial Off The Shelf).Durante aos, parte del proyecto fue mantenido de formaabierta y gratuita (GNAT) por la NYU y la USAAF.En 1995, despus de la primera revisin (1987), bajo el nom-bre de Ada 95, pasa a convertirse en el primer lenguaje deprogramacin estandarizado orientado a objetos, bajo la nor-ma ANSI/ISO/IEC 8652:1995.

  • 1983 - 1995

    Despues de 9 aos de desarrollo y aplicacin, parte del pro-yecto fue dado a conocer como Ada 83, y se convirti en unestndar de ANSI en 1983: ANSI/MIL-STD 1815.El USDoD y la NATO exigan el uso de este lenguaje en losproyectos que contrataban (el Ada mandate).Este mandato termin en USA en 1997, cuando comenzarona usar productos COTS (Commercial Off The Shelf).Durante aos, parte del proyecto fue mantenido de formaabierta y gratuita (GNAT) por la NYU y la USAAF.En 1995, despus de la primera revisin (1987), bajo el nom-bre de Ada 95, pasa a convertirse en el primer lenguaje deprogramacin estandarizado orientado a objetos, bajo la nor-ma ANSI/ISO/IEC 8652:1995.

  • 1983 - 1995

    Despues de 9 aos de desarrollo y aplicacin, parte del pro-yecto fue dado a conocer como Ada 83, y se convirti en unestndar de ANSI en 1983: ANSI/MIL-STD 1815.El USDoD y la NATO exigan el uso de este lenguaje en losproyectos que contrataban (el Ada mandate).Este mandato termin en USA en 1997, cuando comenzarona usar productos COTS (Commercial Off The Shelf).Durante aos, parte del proyecto fue mantenido de formaabierta y gratuita (GNAT) por la NYU y la USAAF.En 1995, despus de la primera revisin (1987), bajo el nom-bre de Ada 95, pasa a convertirse en el primer lenguaje deprogramacin estandarizado orientado a objetos, bajo la nor-ma ANSI/ISO/IEC 8652:1995.

  • 1983 - 1995

    Despues de 9 aos de desarrollo y aplicacin, parte del pro-yecto fue dado a conocer como Ada 83, y se convirti en unestndar de ANSI en 1983: ANSI/MIL-STD 1815.El USDoD y la NATO exigan el uso de este lenguaje en losproyectos que contrataban (el Ada mandate).Este mandato termin en USA en 1997, cuando comenzarona usar productos COTS (Commercial Off The Shelf).Durante aos, parte del proyecto fue mantenido de formaabierta y gratuita (GNAT) por la NYU y la USAAF.En 1995, despus de la primera revisin (1987), bajo el nom-bre de Ada 95, pasa a convertirse en el primer lenguaje deprogramacin estandarizado orientado a objetos, bajo la nor-ma ANSI/ISO/IEC 8652:1995.

  • 2001 ...

    En 2001, la norma se actualiza, con pequeas correcciones,denominndose: ANSI/ISO/IEC 8652:1995/Cor 1:2001.En esta misma fecha, la NYU abandona el soporte al pro-grama GNAT el cual est ahora bajo responsabilidad de AdaCore Technology, compaia que preserva una versin GPLdel compilador.La USAAF, prosigue con algn tipo de soporte pblico, co-mo las interfaces grficas de desarrollo (IDE), lo cual hacesuponer que el lenguaje sigue activo en el campo militar.En 2005 ISO, ACM SigAda y Ada-Europe acuerdan promoverAda bajo la norma ISO/IEC 8652:2005(E).A comienzos de 2007 se publica la ltima revisin al Manualde Referencias ISO/IEC 8652:2007(E) Ed. 3En septiembre 2010 el Ada-WG introduce una mejora de se-guridad Ada.Specific information for vulnerabilities.

  • 2001 ...

    En 2001, la norma se actualiza, con pequeas correcciones,denominndose: ANSI/ISO/IEC 8652:1995/Cor 1:2001.En esta misma fecha, la NYU abandona el soporte al pro-grama GNAT el cual est ahora bajo responsabilidad de AdaCore Technology, compaia que preserva una versin GPLdel compilador.La USAAF, prosigue con algn tipo de soporte pblico, co-mo las interfaces grficas de desarrollo (IDE), lo cual hacesuponer que el lenguaje sigue activo en el campo militar.En 2005 ISO, ACM SigAda y Ada-Europe acuerdan promoverAda bajo la norma ISO/IEC 8652:2005(E).A comienzos de 2007 se publica la ltima revisin al Manualde Referencias ISO/IEC 8652:2007(E) Ed. 3En septiembre 2010 el Ada-WG introduce una mejora de se-guridad Ada.Specific information for vulnerabilities.

  • 2001 ...

    En 2001, la norma se actualiza, con pequeas correcciones,denominndose: ANSI/ISO/IEC 8652:1995/Cor 1:2001.En esta misma fecha, la NYU abandona el soporte al pro-grama GNAT el cual est ahora bajo responsabilidad de AdaCore Technology, compaia que preserva una versin GPLdel compilador.La USAAF, prosigue con algn tipo de soporte pblico, co-mo las interfaces grficas de desarrollo (IDE), lo cual hacesuponer que el lenguaje sigue activo en el campo militar.En 2005 ISO, ACM SigAda y Ada-Europe acuerdan promoverAda bajo la norma ISO/IEC 8652:2005(E).A comienzos de 2007 se publica la ltima revisin al Manualde Referencias ISO/IEC 8652:2007(E) Ed. 3En septiembre 2010 el Ada-WG introduce una mejora de se-guridad Ada.Specific information for vulnerabilities.

  • 2001 ...

    En 2001, la norma se actualiza, con pequeas correcciones,denominndose: ANSI/ISO/IEC 8652:1995/Cor 1:2001.En esta misma fecha, la NYU abandona el soporte al pro-grama GNAT el cual est ahora bajo responsabilidad de AdaCore Technology, compaia que preserva una versin GPLdel compilador.La USAAF, prosigue con algn tipo de soporte pblico, co-mo las interfaces grficas de desarrollo (IDE), lo cual hacesuponer que el lenguaje sigue activo en el campo militar.En 2005 ISO, ACM SigAda y Ada-Europe acuerdan promoverAda bajo la norma ISO/IEC 8652:2005(E).A comienzos de 2007 se publica la ltima revisin al Manualde Referencias ISO/IEC 8652:2007(E) Ed. 3En septiembre 2010 el Ada-WG introduce una mejora de se-guridad Ada.Specific information for vulnerabilities.

  • 2001 ...

    En 2001, la norma se actualiza, con pequeas correcciones,denominndose: ANSI/ISO/IEC 8652:1995/Cor 1:2001.En esta misma fecha, la NYU abandona el soporte al pro-grama GNAT el cual est ahora bajo responsabilidad de AdaCore Technology, compaia que preserva una versin GPLdel compilador.La USAAF, prosigue con algn tipo de soporte pblico, co-mo las interfaces grficas de desarrollo (IDE), lo cual hacesuponer que el lenguaje sigue activo en el campo militar.En 2005 ISO, ACM SigAda y Ada-Europe acuerdan promoverAda bajo la norma ISO/IEC 8652:2005(E).A comienzos de 2007 se publica la ltima revisin al Manualde Referencias ISO/IEC 8652:2007(E) Ed. 3En septiembre 2010 el Ada-WG introduce una mejora de se-guridad Ada.Specific information for vulnerabilities.

  • 2001 ...

    En 2001, la norma se actualiza, con pequeas correcciones,denominndose: ANSI/ISO/IEC 8652:1995/Cor 1:2001.En esta misma fecha, la NYU abandona el soporte al pro-grama GNAT el cual est ahora bajo responsabilidad de AdaCore Technology, compaia que preserva una versin GPLdel compilador.La USAAF, prosigue con algn tipo de soporte pblico, co-mo las interfaces grficas de desarrollo (IDE), lo cual hacesuponer que el lenguaje sigue activo en el campo militar.En 2005 ISO, ACM SigAda y Ada-Europe acuerdan promoverAda bajo la norma ISO/IEC 8652:2005(E).A comienzos de 2007 se publica la ltima revisin al Manualde Referencias ISO/IEC 8652:2007(E) Ed. 3En septiembre 2010 el Ada-WG introduce una mejora de se-guridad Ada.Specific information for vulnerabilities.

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • La Norma ISO

    La norma ISO define:Ncleo comn a todas las implementaciones.Anexos (mediante paquetes de bibliotecas y mecanismos deimplementacin, que no son parte de la base del lenguaje):

    Sistemas de Tiempo Real.Sistemas Distribuidos.Sistemas de Informacin.Programacin de Sistemas.Clculo numrico.

  • La Norma ISO

    La norma ISO define:Ncleo comn a todas las implementaciones.Anexos (mediante paquetes de bibliotecas y mecanismos deimplementacin, que no son parte de la base del lenguaje):

    Sistemas de Tiempo Real.Sistemas Distribuidos.Sistemas de Informacin.Programacin de Sistemas.Clculo numrico.

  • La Norma ISO

    La norma ISO define:Ncleo comn a todas las implementaciones.Anexos (mediante paquetes de bibliotecas y mecanismos deimplementacin, que no son parte de la base del lenguaje):

    Sistemas de Tiempo Real.Sistemas Distribuidos.Sistemas de Informacin.Programacin de Sistemas.Clculo numrico.

  • La Norma ISO

    La norma ISO define:Ncleo comn a todas las implementaciones.Anexos (mediante paquetes de bibliotecas y mecanismos deimplementacin, que no son parte de la base del lenguaje):

    Sistemas de Tiempo Real.Sistemas Distribuidos.Sistemas de Informacin.Programacin de Sistemas.Clculo numrico.

  • La Norma ISO

    La norma ISO define:Ncleo comn a todas las implementaciones.Anexos (mediante paquetes de bibliotecas y mecanismos deimplementacin, que no son parte de la base del lenguaje):

    Sistemas de Tiempo Real.Sistemas Distribuidos.Sistemas de Informacin.Programacin de Sistemas.Clculo numrico.

  • La Norma ISO

    La norma ISO define:Ncleo comn a todas las implementaciones.Anexos (mediante paquetes de bibliotecas y mecanismos deimplementacin, que no son parte de la base del lenguaje):

    Sistemas de Tiempo Real.Sistemas Distribuidos.Sistemas de Informacin.Programacin de Sistemas.Clculo numrico.

  • La Norma ISO

    La norma ISO define:Ncleo comn a todas las implementaciones.Anexos (mediante paquetes de bibliotecas y mecanismos deimplementacin, que no son parte de la base del lenguaje):

    Sistemas de Tiempo Real.Sistemas Distribuidos.Sistemas de Informacin.Programacin de Sistemas.Clculo numrico.

  • La Norma ISO

    La norma ISO define:Ncleo comn a todas las implementaciones.Anexos (mediante paquetes de bibliotecas y mecanismos deimplementacin, que no son parte de la base del lenguaje):

    Sistemas de Tiempo Real.Sistemas Distribuidos.Sistemas de Informacin.Programacin de Sistemas.Clculo numrico.

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • El Primer Programa

    with Ada.Text_IO;procedure p01 is

    - - Mi primer programabegin

    Ada.Text_IO.Put_Line( " Hola a todos !" );end p01;

    with Ada.Text_IO; use Ada.Text_IOprocedure p01 isbegin

    Put_Line( " Hola a todos !" );end p01;

  • El Primer Programa

    with Ada.Text_IO;procedure p01 is

    - - Mi primer programabegin

    Ada.Text_IO.Put_Line( " Hola a todos !" );end p01;

    with Ada.Text_IO; use Ada.Text_IOprocedure p01 isbegin

    Put_Line( " Hola a todos !" );end p01;

  • Estructura de un programa (Bloque)

    with (opcional)procedure nombre isdeclare

    (opcional)begin

    exception

    (opcio-nal)end [identificador_de_bloque]

  • Ejemplo 1 (Con error de compilacin)

    with Ada.Text_IO; use Ada.Text_IO;procedure p02 is

    I, J, K, L, M : Integer := 30;F, G : Float;Factor : constant := 1000;

    beginJ := L + 10;F := 0.0;G := F + L; - - ILEGALG := F + Float(L); - - LegalK := Integer(F) + L; - - LegalFactor := 1000; - - ILEGAL

    exceptionwhen Numeric_Error =>

    Put_Line("Ha ocurrido un error");end p02;

  • Ejemplo 2

    with ada.text_io, ada.integer_text_io;use ada.text_io, ada.integer_text_io;procedure p03 is

    X, Y, Z : Natural;begin

    X := 15; Y := 10;Z := X - Y;Put("Valor de Z ="); Put(Z);New_Line;Z := Y - X;Put("Nuevo valor de Z ="); Put(Z);New_Line;

    end p03;

    Valor de Z = 5raised Constraint Errorp03.adb:11range check failed

  • Ejemplo 3

    with ada.text_io, ada.integer_text_io;use ada.text_io, ada.integer_text_io;procedure p03 is

    X, Y, Z : Natural;begin

    X := 15; Y := 10;Z := X - Y;Put("Valor de Z ="); Put(Z);New_Line;Z := Y - X;Put("Nuevo valor de Z ="); Put(Z);New_Line;

    exceptionwhen Numeric_Error =>Put_Line("Error numrico");

    end p03;

    Valor de Z = 5Error numrico

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Tipos de Datos

    Un tipo de datos es una conjunto de valores y un conjunto deoperaciones que se pueden efectuar con los valores del tipo.Los valores se definen por su estructura y restricciones.Las operaciones dan siempre resultados dentro del tipo co-rrecto.No se pueden usar valores de un tipo en operaciones de otrotipo sin efectuar una conversin de tipo explcita.

  • Tipos de Datos

    Un tipo de datos es una conjunto de valores y un conjunto deoperaciones que se pueden efectuar con los valores del tipo.Los valores se definen por su estructura y restricciones.Las operaciones dan siempre resultados dentro del tipo co-rrecto.No se pueden usar valores de un tipo en operaciones de otrotipo sin efectuar una conversin de tipo explcita.

  • Tipos de Datos

    Un tipo de datos es una conjunto de valores y un conjunto deoperaciones que se pueden efectuar con los valores del tipo.Los valores se definen por su estructura y restricciones.Las operaciones dan siempre resultados dentro del tipo co-rrecto.No se pueden usar valores de un tipo en operaciones de otrotipo sin efectuar una conversin de tipo explcita.

  • Tipos de Datos

    Un tipo de datos es una conjunto de valores y un conjunto deoperaciones que se pueden efectuar con los valores del tipo.Los valores se definen por su estructura y restricciones.Las operaciones dan siempre resultados dentro del tipo co-rrecto.No se pueden usar valores de un tipo en operaciones de otrotipo sin efectuar una conversin de tipo explcita.

  • Clasificacin de los Tipos de Datos

    Numericos

    Tipos

    Elementales

    Acceso Escalares

    Discretos

    Enumerables

    Caracteres Booleanos Otros

    Enteros

    Modulares Con signo

    Reales

    C. Flotante C. Fija

    Ordinarios Decimales

    Compuestos

    Cadenas Registros Etiquetados Privados Tareas Protegidos

  • Tipos FundamentalesAda Descripcin Equivalente CCharacter caracter charInteger entero de 32 bits intNatural Cero o entero positivoPositive Entero PositivoLong_Integer Entero largo longLong_Long_Integer Entero largo (64 bits) long_longShort_Integer Entero pequeo (16 bits) shortShort_Short_Integer Entero pequeo (8 bits) charFloat Real floatLong_Float Real grande dobleLong_Long_Float Real muy grande long doubleShort_Float Real pequeoFixed Real de coma fijaString Cadena de longitud fija char array

  • Tipos Reales

    Coma flotante. Precisin relativa (nmero de decimales) yun intervalo de valores determinados. El tipo Float es el pre-definido y el intervalo de valores depende de la implementa-cin.type Longitud is digits 5 range 0.0 .. 100.0;Coma fija. Precisin absoluta (diferencia entre dos valoresconsecutivos) y un intervalo de valores especificados. Per-mite hacer sumas y restas sin perder precisin.

    Ordinariostype Incremento_Voltaje is delta 0.125 range 0.0 .. 6.250;Decimalestype Milesima is delta 0.001 digits 3;

    - - delta debe ser una potencia de 10- - valores entre -1.0 y 1.0

  • Tipos Reales

    Coma flotante. Precisin relativa (nmero de decimales) yun intervalo de valores determinados. El tipo Float es el pre-definido y el intervalo de valores depende de la implementa-cin.type Longitud is digits 5 range 0.0 .. 100.0;Coma fija. Precisin absoluta (diferencia entre dos valoresconsecutivos) y un intervalo de valores especificados. Per-mite hacer sumas y restas sin perder precisin.

    Ordinariostype Incremento_Voltaje is delta 0.125 range 0.0 .. 6.250;Decimalestype Milesima is delta 0.001 digits 3;

    - - delta debe ser una potencia de 10- - valores entre -1.0 y 1.0

  • Tipos Reales

    Coma flotante. Precisin relativa (nmero de decimales) yun intervalo de valores determinados. El tipo Float es el pre-definido y el intervalo de valores depende de la implementa-cin.type Longitud is digits 5 range 0.0 .. 100.0;Coma fija. Precisin absoluta (diferencia entre dos valoresconsecutivos) y un intervalo de valores especificados. Per-mite hacer sumas y restas sin perder precisin.

    Ordinariostype Incremento_Voltaje is delta 0.125 range 0.0 .. 6.250;Decimalestype Milesima is delta 0.001 digits 3;

    - - delta debe ser una potencia de 10- - valores entre -1.0 y 1.0

  • Tipos Reales

    Coma flotante. Precisin relativa (nmero de decimales) yun intervalo de valores determinados. El tipo Float es el pre-definido y el intervalo de valores depende de la implementa-cin.type Longitud is digits 5 range 0.0 .. 100.0;Coma fija. Precisin absoluta (diferencia entre dos valoresconsecutivos) y un intervalo de valores especificados. Per-mite hacer sumas y restas sin perder precisin.

    Ordinariostype Incremento_Voltaje is delta 0.125 range 0.0 .. 6.250;Decimalestype Milesima is delta 0.001 digits 3;

    - - delta debe ser una potencia de 10- - valores entre -1.0 y 1.0

  • Tipos Reales

    Coma flotante. Precisin relativa (nmero de decimales) yun intervalo de valores determinados. El tipo Float es el pre-definido y el intervalo de valores depende de la implementa-cin.type Longitud is digits 5 range 0.0 .. 100.0;Coma fija. Precisin absoluta (diferencia entre dos valoresconsecutivos) y un intervalo de valores especificados. Per-mite hacer sumas y restas sin perder precisin.

    Ordinariostype Incremento_Voltaje is delta 0.125 range 0.0 .. 6.250;Decimalestype Milesima is delta 0.001 digits 3;

    - - delta debe ser una potencia de 10- - valores entre -1.0 y 1.0

  • Tipos nuevos y subtipos

    Ada Descripcin Ctype Crea un nuevo tipo de datos typedefsubtype Crea una variacin de un tipo existente

  • Tipos nuevos y subtipos

    Ada Descripcin Ctype Crea un nuevo tipo de datos typedefsubtype Crea una variacin de un tipo existente

    type Arcoiris is (Rojo, Naranja, Amarillo, Verde, Azul, Indigo, Violeta);

  • Tipos nuevos y subtipos

    Ada Descripcin Ctype Crea un nuevo tipo de datos typedefsubtype Crea una variacin de un tipo existente

    type Arcoiris is (Rojo, Naranja, Amarillo, Verde, Azul, Indigo, Violeta);

    subtype BCD is Natural range 0..9;

  • Tipos Modulares

    Si el resultado de una operacin de un tipo normal produceun valor que excede su capacidad se produce un desborda-miento (numeric overflow).A : Integer:A := IntegerMax + 1; Error de DesbordamientoAda proporciona un tipo modular, el cual nunca se desborda:type Byte is mod 256; Valores entre 0 y 255A : Byte:A := ByteMax + 1; A = ByteMin, es decir 0

  • Tipos Modulares

    Si el resultado de una operacin de un tipo normal produceun valor que excede su capacidad se produce un desborda-miento (numeric overflow).A : Integer:A := IntegerMax + 1; Error de DesbordamientoAda proporciona un tipo modular, el cual nunca se desborda:type Byte is mod 256; Valores entre 0 y 255A : Byte:A := ByteMax + 1; A = ByteMin, es decir 0

  • Tipos Modulares

    Si el resultado de una operacin de un tipo normal produceun valor que excede su capacidad se produce un desborda-miento (numeric overflow).A : Integer:A := IntegerMax + 1; Error de DesbordamientoAda proporciona un tipo modular, el cual nunca se desborda:type Byte is mod 256; Valores entre 0 y 255A : Byte:A := ByteMax + 1; A = ByteMin, es decir 0

  • Tipos Modulares

    Si el resultado de una operacin de un tipo normal produceun valor que excede su capacidad se produce un desborda-miento (numeric overflow).A : Integer:A := IntegerMax + 1; Error de DesbordamientoAda proporciona un tipo modular, el cual nunca se desborda:type Byte is mod 256; Valores entre 0 y 255A : Byte:A := ByteMax + 1; A = ByteMin, es decir 0

  • Tipos Agregados (Arreglos)

    Los arreglos son tablas de valores de dimensiones y tama-os acotados.type Vector is array(0..3) of float;type Arreglo is array(0..1, 0..2) of float;a los que se les pueden asignar valores al momento de sucreacin:v1 : Vector := (0.0, 1.5, 3.75, 4.3);v2 : Vector := (2.55, others => 1.0);v3 : Vector := (2 => 2.54, others => 3.1);a1 : Arreglo := ( (1.0, 2.0, 3.0), (4.0, 5.0, 6.0) );a2 : Arreglo := ( (others => 0.0), (others => 0.0) );

  • Tipos Agregados (Arreglos)

    Los arreglos son tablas de valores de dimensiones y tama-os acotados.type Vector is array(0..3) of float;type Arreglo is array(0..1, 0..2) of float;a los que se les pueden asignar valores al momento de sucreacin:v1 : Vector := (0.0, 1.5, 3.75, 4.3);v2 : Vector := (2.55, others => 1.0);v3 : Vector := (2 => 2.54, others => 3.1);a1 : Arreglo := ( (1.0, 2.0, 3.0), (4.0, 5.0, 6.0) );a2 : Arreglo := ( (others => 0.0), (others => 0.0) );

  • Tipos Agregados (Arreglos)

    Los arreglos son tablas de valores de dimensiones y tama-os acotados.type Vector is array(0..3) of float;type Arreglo is array(0..1, 0..2) of float;a los que se les pueden asignar valores al momento de sucreacin:v1 : Vector := (0.0, 1.5, 3.75, 4.3);v2 : Vector := (2.55, others => 1.0);v3 : Vector := (2 => 2.54, others => 3.1);a1 : Arreglo := ( (1.0, 2.0, 3.0), (4.0, 5.0, 6.0) );a2 : Arreglo := ( (others => 0.0), (others => 0.0) );

  • Tipos Agregados (Arreglos)

    Los arreglos son tablas de valores de dimensiones y tama-os acotados.type Vector is array(0..3) of float;type Arreglo is array(0..1, 0..2) of float;a los que se les pueden asignar valores al momento de sucreacin:v1 : Vector := (0.0, 1.5, 3.75, 4.3);v2 : Vector := (2.55, others => 1.0);v3 : Vector := (2 => 2.54, others => 3.1);a1 : Arreglo := ( (1.0, 2.0, 3.0), (4.0, 5.0, 6.0) );a2 : Arreglo := ( (others => 0.0), (others => 0.0) );

  • Tipos Agregados (Arreglos y Registros)

    El contenido de una posicin dentro de un arreglo se obtieneindicando su ndice:Put_Line( v3(2)img );Put_Line( a1(1,2)img );Los registros son colecciones de informacin relacionada,donde cada subseccin se denomina campo:type Lectura_Sensor is record

    codigo : String(1..10);valor : Float;cuenta : Integer;

    end record;

  • Tipos Agregados (Arreglos y Registros)

    El contenido de una posicin dentro de un arreglo se obtieneindicando su ndice:Put_Line( v3(2)img );Put_Line( a1(1,2)img );Los registros son colecciones de informacin relacionada,donde cada subseccin se denomina campo:type Lectura_Sensor is record

    codigo : String(1..10);valor : Float;cuenta : Integer;

    end record;

  • Tipos Agregados (Arreglos y Registros)

    El contenido de una posicin dentro de un arreglo se obtieneindicando su ndice:Put_Line( v3(2)img );Put_Line( a1(1,2)img );Los registros son colecciones de informacin relacionada,donde cada subseccin se denomina campo:type Lectura_Sensor is record

    codigo : String(1..10);valor : Float;cuenta : Integer;

    end record;

  • Tipos Agregados (Arreglos y Registros)

    El contenido de una posicin dentro de un arreglo se obtieneindicando su ndice:Put_Line( v3(2)img );Put_Line( a1(1,2)img );Los registros son colecciones de informacin relacionada,donde cada subseccin se denomina campo:type Lectura_Sensor is record

    codigo : String(1..10);valor : Float;cuenta : Integer;

    end record;

  • Tipos Agregados (Registros)

    Es posible asignarle valores por defecto:type Lectura_Sensor is record

    codigo : String(1..10) := ( others => );valor : Float := 0.0;cuenta : Integer := 0;

    end record;y las variables pueden recibir valores iniciales al momento desu declaracin:s1 : Lectura_Sensor := ("FT-04001 ", 0.0, 0);Los campos son accesados usando el nombre del record, unpunto y el nombre del campo:s1.cuenta := 15;

  • Tipos Agregados (Registros)

    Es posible asignarle valores por defecto:type Lectura_Sensor is record

    codigo : String(1..10) := ( others => );valor : Float := 0.0;cuenta : Integer := 0;

    end record;y las variables pueden recibir valores iniciales al momento desu declaracin:s1 : Lectura_Sensor := ("FT-04001 ", 0.0, 0);Los campos son accesados usando el nombre del record, unpunto y el nombre del campo:s1.cuenta := 15;

  • Tipos Agregados (Registros)

    Es posible asignarle valores por defecto:type Lectura_Sensor is record

    codigo : String(1..10) := ( others => );valor : Float := 0.0;cuenta : Integer := 0;

    end record;y las variables pueden recibir valores iniciales al momento desu declaracin:s1 : Lectura_Sensor := ("FT-04001 ", 0.0, 0);Los campos son accesados usando el nombre del record, unpunto y el nombre del campo:s1.cuenta := 15;

  • Tipos Agregados (Registros)

    Es posible asignarle valores por defecto:type Lectura_Sensor is record

    codigo : String(1..10) := ( others => );valor : Float := 0.0;cuenta : Integer := 0;

    end record;y las variables pueden recibir valores iniciales al momento desu declaracin:s1 : Lectura_Sensor := ("FT-04001 ", 0.0, 0);Los campos son accesados usando el nombre del record, unpunto y el nombre del campo:s1.cuenta := 15;

  • Tipos Agregados (Registros)

    Es posible asignarle valores por defecto:type Lectura_Sensor is record

    codigo : String(1..10) := ( others => );valor : Float := 0.0;cuenta : Integer := 0;

    end record;y las variables pueden recibir valores iniciales al momento desu declaracin:s1 : Lectura_Sensor := ("FT-04001 ", 0.0, 0);Los campos son accesados usando el nombre del record, unpunto y el nombre del campo:s1.cuenta := 15;

  • Tipos Agregados (Registros)

    Es posible asignarle valores por defecto:type Lectura_Sensor is record

    codigo : String(1..10) := ( others => );valor : Float := 0.0;cuenta : Integer := 0;

    end record;y las variables pueden recibir valores iniciales al momento desu declaracin:s1 : Lectura_Sensor := ("FT-04001 ", 0.0, 0);Los campos son accesados usando el nombre del record, unpunto y el nombre del campo:s1.cuenta := 15;

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Atributos de los Tipos

    Atributo DescripcinAddress Direccin de un identificadorAdjacent Valor adyacente a un valor del tipo flotanteCallable Verdadero si una tarea puede ser llamadaCeiling Redondeo hacia arriba de un valor flotanteComponent_Size Tamao de un arreglo en bitsFirst Primer ndice en un arregloFloor Redondeo hacia abajo de un valor flotanteImage Cadena imagen de un enteroInput Convierte un valor a una cadenaLast Ultimo ndice de una cadenaLength Nmero de elementos en un arreglo

  • Atributos de los Tipos 2

    Atributo DescripcinMachine_Emax Mximo exponente para un nmero real en su equipoMachine_Emin Mnimo exponente para un nmero real en su equipoMachine_Mantissa Tamao de la mantisa, en bits, en su equipoMachine_Radix Base numrica de trabajoMax Valor mximo en su equipoMin Valor mnimo en su equipoModel Modelo de su procesadorPos Posicin en un tipo discretoPred Valor previo de un tipo discretoRange Rango de valores para un tipoSucc Valor posterior de un tipo discreto

  • Atributos de los Tipos 3

    Atributo DescripcinTerminated Verdadero si una tarea ha finalizadoVal Valor de un tipo discreto en una cierta posicinValid Determina si una expresin tiene un resultado legalValue Convierte una cadena a un valor

  • Atributos de los Tipos (GNAT)

    Atributo DescripinAbort_Signal Excepcin. Tarea abortadaImg Contraccin para ImageMachine_Bits Para compatibilidad con otros compiladoresMax_Interrupt_Priority Mxima prioridad de interrupcionesMax_Priority Mxima prioridad de TareasMechanism_Code Como pasan los parmetros a un subprogramaObject_Size Tamao de un objetoPassed_By_Reference Verdadero si el tipo es pasado por referenciaRange_Length Nmero de valores en un tipo discretoTick Unidad de tiempoType_Class Proporciona la clase bsica de un tipoValue_Size Nmero de bits para representar un tipo

  • Atributos de Tipo (Ejemplo 1)

    ...Put_Line( "El primer entero es: " & integerfirstimg );Put_Line( "El ltimo entero es: " & integerlastimg );Put_Line( "El flotante ms pequeo es: " & floatsmallimg );Put_Line( "El flotante ms grande es: " & floatlargeimg );Put_Line( "El tamao de la mantisa es: " & floatmantissaimg );Put_Line( "El tamao de la mantisa del CPU es: " &floatmachine_mantissaimg );Put_Line( "El nmero de dgitos en flotante es: " &integerimage(floatdigits) );...

  • Atributos de Tipo (Ejemplo 1_1)

    El primer entero es: -2147483648El ltimo entero es: 2147483647El flotante ms pequeo es: 2.58493941422821148E-26El flotante ms grande es: 1.93428038904620299E+25El tamao de la mantisa es: 21El tamao de la mantisa del CPU es: 24El nmero de dgitos en flotante es: 6

  • Atributos de Tipo (Ejemplo 2)

    with Ada.Text_IO; use Ada.Text_IO;procedure p05 is

    type Sensor is (Temperatura, PRESION, FLUJO, PH, NIVEL);begin

    Put_Line("Los Sensores disponibles son :");for i in SensorFirst .. SensorLast loop

    Put(iimg); Put(" ");end loop;Put_Line( "El primer Sensor es " & Sensorfirstimg );Put_Line( "El ltimo Sensor es " & Sensorlastimg );Put_Line( "El Sensor de Flujo est en posicin : " & Sensorpos(Flujo)img );Put_Line( "El segundo Sensor es : " & Sensorval(1)img );Put_Line( "El que sigue al Sensor de Flujo es : " & Sensorsucc(Flujo)img );Put_Line( "Antes del Sensor de flujo est : " & Sensorpred(Flujo)img );

    end p05;

  • Atributos de Tipo (Ejemplo 2_2)

    Los Sensores disponibles son :TEMPERATURA PRESIN FLUJO PH NIVELEl primer Sensor es TEMPERATURAEl ltimo Sensor es NIVELEl Sensor de Flujo est en posicin : 2El segundo Sensor es : PRESINEl que sigue al Sensor de Flujo es : PHAntes del Sensor de flujo est : PRESIN

  • Atributos de Tipo (Ejemplo 3)

    with Ada.Text_IO;procedure p06 is

    subtype Bcd is Natural range 0 .. 9;package Bcd_Io is new Ada.Text_IO.Integer_IO (Bcd);

    beginAda.Text_IO.Put_Line("Los dgitos BCD son :");for Digito in 0 .. BcdLast loop

    Bcd_Io.Put(Digito); Ada.Text_IO.Put(", ");Bcd_Io.Put (Digito, Width => 4, Base => 2);Ada.Text_IO.New_Line;

    end loop;Ada.Text_IO.New_Line;

    end p06;

  • Atributos de Tipo (Ejemplo 3_2)

    Los dgitos BCD son :0, 2#0#1, 2#1#2, 2#10#3, 2#11#4, 2#100#5, 2#101#6, 2#110#7, 2#111#8, 2#1000#9, 2#1001#

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Operaciones y Expresiones

    Ada Descripcin Cand Conjuncin Lgica &&or Disyuncin Lgica ||xor Disyuncin Excluyente ^not Negacin Lgica ~= Igualdad ==/= Desigual !=abs Valor absoluto absmod Mdulo entero %

  • Operaciones y Expresiones (2)

    Sin equivalencias en el lenguaje C

    Ada Descripcin Crem Residuo flotanteand then "y entonces"or else "o de lo contrario"in Valor en el rangonot in Valor fuera de rango

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Estructuras de Control y Seleccin

    Ada Descripcin Cif Ejecucin condicional iffor Bucle de ejecucin iterativa forwhile Bucle de ejecucin iterativa preevaluada whileloop Bucle de ejecucin indefinidaexit Salida de un bucle breakcase Ejecucin condicional estructurada switchgoto Salto incondicional goto

  • if y case

    if A>=B and C=D+E then...Bloque de Cdigoend if;

  • if y case

    if A>=B and C=D+E then...Bloque de Cdigoend if;

    if A>=B and C=D+E then...Bloque de Cdigoelse...Bloque de Cdigoend if;

  • if y case

    if A>=B and C=D+E then...Bloque de Cdigoend if;

    if A>=B and C=D+E then...Bloque de Cdigoelseif G=H+P then...Bloque de Cdigoelseif Q>R or S=B and C=D+E then...Bloque de Cdigoelse...Bloque de Cdigoend if;

  • if y case

    if A>=B and C=D+E then...Bloque de Cdigoend if;

    if A>=B and C=D+E then...Bloque de Cdigoelseif G=H+P then...Bloque de Cdigoelseif Q>R or S=B and C=D+E then...Bloque de Cdigoelse...Bloque de Cdigoend if;

    case Orden is...when A => ......when B or b => ......when w .. z => ......when others => nullend case;

  • Bucles

    while A>=B loop...Bloque de Cdigoend loop;

  • Bucles

    while A>=B loop...Bloque de Cdigoend loop;

    for I in 1..10 loop...Bloque de Cdigoend loop;

  • Bucles

    while A>=B loop...Bloque de Cdigoend loop;

    loop...Bloque de Cdigo...if condicin then......exit...end if;end loop;

    for I in 1..10 loop...Bloque de Cdigoend loop;

  • Bucles

    while A>=B loop...Bloque de Cdigoend loop;

    loop...Bloque de Cdigo...if condicin then......exit...end if;end loop;

    for I in 1..10 loop...Bloque de Cdigoend loop;

    for I in reverse 1..10 loop...Bloque de Cdigoend loop;

  • Bucles 2

    Bucle1:loop...Bloque de Cdigo

    Bucle2:loop...Bloque de Cdigo

    if emergencia thengoto Ayuda

    end if;end loop;

    end loop;

    Put("Estamos graves");

    Bucle1:loop...Bloque de Cdigo...Bucle2:...loop......Bloque de Cdigo......exit Bucle1 when em...end loop;end loop;

  • Bucles 2

    Bucle1:loop...Bloque de Cdigo

    Bucle2:loop...Bloque de Cdigo

    if emergencia thengoto Ayuda

    end if;end loop;

    end loop;

    Put("Estamos graves");

    Bucle1:loop...Bloque de Cdigo...Bucle2:...loop......Bloque de Cdigo......exit Bucle1 when em...end loop;end loop;

  • Contenido

    1 Introduccin.

    2 Lenguajes

    3 AdaOrigenLa Norma ISO

    4 ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas

  • Subprogramas

    Ada Descripcin Cprocedure Subprograma parametrizado void f(...);

    que no regresa un valor en [algunas veces]la llamada, pero si puedehacerlo en los parmteros

    function Subprograma parametrizado type f(...);que regresa un valor enla llamada. No puedehacerlo en los parmteros

  • Subprogramas (Parmetros)

    Modo Descripcin procedure functionin Variable de entrada x x

    tratada como constanteout Variable de salida x

    regresada por el subprorama.in out Variable que ingresa al x

    subprograma, es cambiada, yregresa cuando elsubprograma termina.

  • Subprogramas (Especificacin)

    Los distintos componentes estn formados por:Una Especificacin.Un Cuerpo.

  • Subprogramas (Especificacin)

    Los distintos componentes estn formados por:Una Especificacin.Un Cuerpo.

  • Subprogramas (Especificacin)

    Los distintos componentes estn formados por:Una Especificacin.Un Cuerpo.

  • Subprogramas (Especificacin)

    Los distintos componentes estn formados por:Una Especificacin.Un Cuerpo.

    Especificacin (ejemplo):function Doble(N : in Integer) return Integer;procedure Doble(N : in Integer; S : out Integer);

  • Subprogramas (Especificacin)

    Los distintos componentes estn formados por:Una Especificacin.Un Cuerpo.

    Especificacin (ejemplo):function Doble(N : in Integer) return Integer;procedure Doble(N : in Integer; S : out Integer);

    y se utilizan:X, W, N : Integer;N := 5;X := Doble(N);Doble(N, W);

  • Subprogramas (Cuerpo)

    Un Cuerpo.

    function Doble(N : in Integer) return Integer isrespuesta : Integer;

    beginrespuesta := 2*Nreturn repuesta;

    end Doble;

    procedure Doble(N : in Integer; S : out Integer) isbegin

    S := 2*Nend Doble;

  • Subprogramas (Cuerpo)

    Un Cuerpo.

    function Doble(N : in Integer) return Integer isrespuesta : Integer;

    beginrespuesta := 2*Nreturn repuesta;

    end Doble;

    procedure Doble(N : in Integer; S : out Integer) isbegin

    S := 2*Nend Doble;

    Introduccin.LenguajesAdaOrigenLa Norma ISO

    ProgramacinTipos de datosAtributosOperaciones y expresionesEstructuras de Control y SeleccinSubprogramas