John Angie

John Angie

jueves, 31 de marzo de 2011

PROCEDIMIENTOS

PROCEDIMIENTOS

Un procedimiento es un grupo de sentencias que realizan una tarea concreta. En lugar de reescribir el código completo de esa tarea cada vez que se necesite, únicamente se hace una referencia al procedimiento. Estos pueden recibir o enviar información el programa principal, técnicamente se conoce como PASO DE PARAMETROS, que puede ser POR TRANSFERENCIA o POR VALOR.
Sintaxis
Procedure NOMBRE_DEL_PROCEDIMIENTO
CONSTANTES
TIPOS
VARIABLES
PROCEDIMIENTOS Y FUNCIONES
BEGIN
{Bloque de instrucciones}
END;

FUNCIONES

FUNCIONES

Las funciones son, al igual que los procedimientos, un conjunto de sentencias que se ejecutan constantemente, la diferencia entre éstas y los procedimientos es que las funciones regresan un valor. La declaración de las funciones se realiza de la siguiente forma: FUNCTION nombre (parámetros): tipo_ de _datos; A continuación se escribe el contenido de la función como una sentencia normal (sencilla o compuesta), normalmente terminando con la igualación de la función al valor que regresará. Ejemplo:
Function Promedio (A, B : Real) : Real; {Promedio De Dos Números Reales}
Begin
Promedio := (A + B) / 2;
End;
Uso De Las Funciones
Como Las Funciones Devuelven Un Valor Específico La Forma Más Usual De Utilizarlas Es Por Medio De Asignaciones De Una Variable A La Función. Ejemplo:
Program Funciones;
Var
X, Y, Z : Real;
Function Promedio (A, B : Real) : Real;
{Promedio De Dos Números Reales}
Begin
Promedio:= (A + B) / 2;
End;

Begin{Inicio Del Programa Principal}
{A Continuación Inicializamos Las Variables}
X := 12.78;
Y := 6.38;
Z := Promedio (X, Y);
{Iguala Z Al Valor Devuelto Por La Función Promedio De X, Y}
Writeln('El Promedio De ',X,' Y ',Y,' Es: ',Z); {Impresión De La Información}

lunes, 28 de marzo de 2011

Arreglos

 Arreglos (array)

Arreglos unidimensionales y multidimensionales: 

Los arreglos son una colección de variables del mismo tipo que se referencian utilizando un nombre común. Un arreglo consta de posiciones de memoria contigua. La dirección más baja corresponde al primer elemento y la más alta al último. Un arreglo puede tener una o varias dimensiones


Un arreglo está formado por un número fijo de elementos contíguos de un mismo tipo. Al tipo se le llama tipo base del arreglo. Los datos individuales se llaman elementos del arreglo.

Para definir un tipo estructurado arreglo, se debe especificar el tipo base y el número de elementos.

Un array se caracteríza por :

Almacenar los elementos del array en posiciones de memoria contínua

Tener un único nombre de variable que representa a todos los elementos, y éstos a su vez se diferencían por un índice o subíndice.

Acceso directo o aleatorio a los elementos individuales del array.
Los arrays se clasifican en :

Unidimensionales (vectores o listas)
Multidimensionales ( tablas o matrices)


El formato para definir un tipo array es :

nombre_array = array [tipo subíndice] of tipo
nombre_array   identificador válido
tipo subíndice puede ser de tipo ordinal:
     boolean o char, un tipo
               enumerado o un tipo subrango.
               Existe un elemento por cada
               valor del tipo subíndice
tipo           describe el tipo de cada elemento
               del vector; todos los elementos
               de un vector son del mismo tipo
Las variables de tipo array se declaran en la sección Var o Type.



Declaración en Var:

Var
  nombres   : array[1..30] of string[30];
  calif     : array[1..30] of real;
  numero    : array[0..100] of 1..100;
Declaración en Type:

Type
  nombres   : array[1..30] of string[30];
  calif     : array[1..30] of real;
  numero    : array[0..100] of 1..100;
Var
  nom       : nombres;
  califica  : calif;
  num       : numero;
Arrays unidimensionales

Un array de una dimensión (vector o lista) es un tipo de datos estructurado compuesto de un número de elementos finitos, tamaño fijo y elementos homogéneos.

Supongamos que desea conservar las edades de 10 personas. Para almacenar estas edades se necesita reservar 10 posiciones de memoria, darle un nombre al array, y a cada persona asignarle su edad correspondiente.





Nombre del vector  edades
Subíndice          [1],[2],...
Contenido          edades[2]= 28
Ejemplo:

Program Vector_edades;
 {El siguiente programa captura  20 edades
  y las muestra en forma ascendente por medio
  de arrays}
Uses Crt;
Const
  MaxPersonas = 10;
Var
  edades   : array [1..MaxPersonas] of byte;
  i,j,paso : byte;
begin
  ClrScr;
  {lectura de array}
  for i:=1 to MaxPersonas do
  begin
    gotoxy(10,5);
    ClrEol;
    Write('Edad de la ',i,' persona : ');
    ReadLn(edades[i])
  end;
  {ordenación}
  for i:=1 to MaxPersonas-1 do
    begin
      for j:=i+1 to MaxPersonas do
        begin
          if edades[i]>edades[j] then
            begin
              paso     :=edades[i];
              edades[i]:=edades[j];
              edades[j]:=paso
            end
        end;
      WriteLn(edades[i]) {escritura del array}
    end;
   Readkey
end.
Arrays paralelos

Dos o más arrays que utilizan el mismo subíndice para referirse a términos homólogos se llaman arrays paralelos.

Basados en el programa anterior se tienen las edades de 'x' personas, para saber a que persona se refiere dicha edad se puede usar otro arreglo en forma paralela y asociarle los nombres de manera simultánea con las edades.





Ejemplo:

Program Paralelo_edades;
 {El siguiente programa captura 10 edades
  y nombres por medio de arrays paralelos y
  los muestra ordenados en forma ascendente}
Uses Crt;
Const
  MaxPersonas = 10;
Var
  edades       :array [1..MaxPersonas] of byte;
  nombres      :array [1..MaxPersonas] of string [10];
  aux_nom      :string[10];
  i,j,aux_edad :byte;
begin
  ClrScr;
  {lectura de arrays paralelos de manera simultánea}
  for i:=1 to MaxPersonas do
    begin
      gotoxy(10,5);
      ClrEol;
      Write(i,'.- Nombre : ','Edad : ');
      gotoxy(23,5);ReadLn(nombres[i]) ;
      gotoxy(48,5);ReadLn(edades[i])
    end;
  {ordenación}
  for i:=1 to MaxPersonas-1 do
    begin
      for j:=i+1 to MaxPersonas do
        begin
          if edades[i]>edades[j] then
            begin
              aux_edad  :=edades[i];
              edades[i] :=edades[j];
              edades[j] :=aux_edad;
              aux_nom   :=nombres[i];
              nombres[i]:=nombres[j];
              nombres[j]:=aux_nom
            end
        end;
      WriteLn(nombres[i]:10,' ',edades[i]:3)
      {escritura de los arrays paralelos}
    end;
  Readkey
end.
Arrays bidimensionales (tablas)

Un array bidimensional (tabla o matríz) es un array con dos índices, al igual que los vectores que deben ser ordinales o tipo subrango.



Para localizar o almacenar un valor en el array se deben especificar dos posiciones (dos subíndices), uno para la fila y otro para la columna.

Formato:

identificador = array [índice1, indice 2] of tipo de elemento
identificador = array [ índice 1 ] of array [ indice 2 ] of tipo de elemento
Supongase que se desea almacenar las calificaciones de 5 alumnos obtenidas en 3 examenes y mostrar en orden ascendente sus promedios respectivamente. En este caso se usará un array bidimensional (tabla o matríz) de 5 filas y 4 columnas en la cual se almacenará las calificaciones de 3 examenes en 3 columnas y la cuarta columna se utilizará para almacenar su promedio respectivo, además de un array unidimensional (vector) donde en forma paralela se almacenarán los nombres de los alumnos de la siguiente forma :



Ejemplo:

Program Matriz_Vector;
 {El siguiente programa captura las calificaciones
 de 5 alumnos en 3 examenes, y despliega en pantalla
 los promedios ordenados en forma descendente }
Uses Crt;
Const
  MaxAlumno = 5;
  MaxExamen = 4;{Columna 4 almacena el promedio}
Var
  Alumno     :array[1..MaxAlumno]              of string[10];
  examen     :array[1..MaxAlumno,1..MaxExamen] of real;
  aux_examen :array[1..MaxExamen]              of real;
{reserva 20 posiciones de memoria de datos reales :
5 filas por 4 columnas}
  promedio     :real;
  aux_alumno   :string [10];
  i,j,col,ren  :byte;
begin
  ClrScr;
  {lectura de arrays paralelos de manera simultánea}
  gotoxy(5,5);Write('Nombre');
  gotoxy(20,5);Write('Examen1 Examen2 Examen3 Promedio');
  col:=5;ren:=6;
  for i:=1 to MaxAlumno do
    begin
      gotoxy(col,ren);
      ReadLn(alumno[i]); {lectura de vector}
      col:=22;promedio:=0;
      for j:=1 to MaxExamen-1 do
        begin
          gotoxy(col,ren);
          ReadLn(examen[i,j]); {lectura de matríz}
          promedio:=promedio+examen[i,j];
          col:=col+10
        end;
      examen[i,j+1]:=promedio/3;
      gotoxy(col,ren);Write(promedio/3:3:2);
      inc(ren);
      col:=5
    end;
  {ordenación}
  for i:=1 to MaxAlumno-1 do
  for j:=i+1 to MaxAlumno do
    begin
      if examen[i,MaxExamen]<examen[j,MaxExamen] then
        begin
          {intercambio de nombres en vector}
          aux_alumno:=alumno[i];
          alumno[i] :=alumno[j];
          alumno[j] :=aux_alumno;
          {intercambio de calificaciones en matríz}
          move(examen[i],aux_examen,SizeOf(aux_examen));
          move(examen[j],examen[i],SizeOf(aux_examen));
          move(aux_examen,examen[j],SizeOf(aux_examen))
        end
    end;
  {recorrido de matríz y vector}
  gotoxy(25,14);Write('Datos ordenados');
  gotoxy(5,16);Write('Nombre');
  gotoxy(20,16);Write('Examen1 Examen2 Examen3 Promedio');
  col:=5;ren:=17;
  for i:=1 to MaxAlumno do
    begin
      gotoxy(col,ren);
      Write(alumno[i]);
      col:=22;
      for j:=1 to MaxExamen do
        begin
          gotoxy(col,ren);
          Write(examen[i,j]:3:2);
          col:=col+10
        end;
      col:=5;
      inc(ren)
    end;
  readkey
end.

Arrays multidimensionales

Turbo Pascal no limita el número de dimensiones de un array, pero sí que debe estar declarado el tipo de cada subíndice.

Formato :



identificador = array [índice1] of array [índice 2]..
of array [índice n] of tipo de elemento
identificador = array [índice 1, índice 2,...,índice n] of tipo de elemento
Ampliando el ejemplo anterior supongase que ahora deseamos capturar calificaciones para 3 materias en cuyo caso aplicaremos un array tridimensional. De la siguiente forma :



(nombre,examen,materia)

Ejemplo:

Program Tridimensional;
 {El siguiente programa captura calificaciones
 de 5 alumnos en 3 examenes de 3 materias
 distintas, y despliega en pantalla los promedios
 ordenados en forma descendente }
Uses Crt;
Const
  MaxAlumno  = 5;
  MaxExamen  = 4; {Columna 4 almacena el promedio}
  MaxMateria = 3;
  materia    : array[1..3]of string[8]=('Fisica','Ingles','Historia');
Var
  Alumno     : array [1..MaxAlumno] of string[10];
  examen     : array [1..MaxAlumno,1..MaxExamen,1..MaxMateria] of real;
  aux_examen : array [1..MaxExamen]of real;
  {reserva 60 posiciones de memoria de datos reales :
   5 filas por 4 columnas y 3 dimensiones}
  promedio   :real;
  aux_alumno :string [10];
  i,j,k,col,ren : byte;
begin
  ClrScr;
  {lectura de arrays paralelos de manera simultánea}
  for k:=1 to MaxMateria do
    begin
      ClrScr;
      gotoxy(34,3);Write(materia[k]);
      gotoxy(5,5);Write('Nombre');
      gotoxy(20,5);Write('Examen1 Examen2 Examen3 Promedio');
      col:=5;ren:=6;
      for i:=1 to MaxAlumno do
        begin
          gotoxy(col,ren);
          if k=1 then
            ReadLn(alumno[i]) {lectura de vector}
          else
            Write(alumno[i]);
          col:=22;promedio:=0;
          for j:=1 to MaxExamen-1 do
            begin
              gotoxy(col,ren);
              ReadLn(examen[i,j,k]); {lectura de matríz}
              promedio:=promedio+examen[i,j,k];
              col:=col+10
            end;
          examen[i,j+1,k]:=promedio/3;
          gotoxy(col,ren);Write(promedio/3:3:2);
          inc(ren);
          col:=5
        end;
      gotoxy(15,22);
      Write('Presione una tecla para continuar....');
      ReadKey
    end;
  {ordenación}
  for k:=1 to MaxMateria do
    for i:=1 to MaxAlumno-1 do
      for j:=i+1 to MaxAlumno do
        begin
          if examen[i,MaxExamen,k]<examen[j,MaxExamen,k] then
            begin
              {intercambio de nombres en vector}
              aux_alumno:=alumno[i];
              alumno[i] :=alumno[j];
              alumno[j] :=aux_alumno;
              {intercambio de calificaciones en matríz}
              move(examen[i,k],aux_examen,SizeOf(aux_examen));
              move(examen[j,k],examen[i,k],SizeOf(aux_examen));
              move(aux_examen,examen[j,k],SizeOf(aux_examen))
            end
        end;
  {recorrido de matríz y vector}
  for k:=1 to MaxMateria do
    begin
      ClrScr;
      gotoxy(35,4);Write(materia[k]);
      gotoxy(25,5);Write('Datos ordenados');
      gotoxy(5,6);Write('Nombre');
      gotoxy(20,6);Write('Examen1 Examen2 Examen3 Promedio');
      col:=5;ren:=7;
      for i:=1 to MaxAlumno do
        begin
          gotoxy(col,ren);
          Write(alumno[i]);
          col:=22;
          for j:=1 to MaxExamen do
            begin
              gotoxy(col,ren);
              Write(examen[i,j,k]:3:2);
              col:=col+10
            end;
          col:=5;
          inc(ren)
        end;
      gotoxy(15,22);
      Write('Presione una tecla para continuar....');
      readkey
    end
end.

miércoles, 23 de febrero de 2011

15. Estructuras de control en programación:

Estructuras secuenciales
Las instrucciones se siguen en una secuencia fija que normalmente viene dada por el número de renglón. Es decir que las instrucciones se ejecutan de arriba hacia abajo. Las instrucciones se ejecutan dependiendo de la condición dada dentro del algoritmo.
Estructuras de control condicionales el if y el case, muy distintas entre si. El nombre estructuras de control designa a distintos bucles en la programación que permiten modificar como se ejecuta el programa, dependiendo de las condiciones u orden de repetición que se le indique al programa.
Estas funcionan de la siguiente manera, se activan cuando la condición que se les impone resulta ser verdadera, en caso contrario, se ejecuta una alternativa o se sigue adelante con el resto del programa.
Empecemos por la principal y más simple, el if:
if significa “si es que”, por lo tanto es bien intuitivo su uso; analiza una expresión, si resulta ser verdadera, entonces ejecuta este curso de acciones, en caso contrario, este otro curso. La sintaxis más básica para esta estructura es la siguiente:
if (condición) then
lo que queremos que ocurra
end if
Donde dice condición, va una sentencia lógica, esta debe ir siempre entre paréntesis. La forma más simple de mostrar esto es con un ejemplo e ir explicándolo.
Estructuras repetitivas: se utiliza cuando se quiere que un conjunto de instrucciones se ejecuten un cierto número finito de veces dentro de un pseudocódigo o programa, existen dos tipos de estructuras repetitivas la primera en donde se tiene establecido el número de veces que un grupo de acciones se van a ejecutar (20, 5, 2 veces), y la segunda en la que el número de repeticiones es desconocido y se hará hasta que se cumpla o no cierta condición.



14. Tipos de errores en programación

De Sintaxis, ocurren cuando el código se construye incorrectamente, por ejemplo se escribe mal una sentencia o se omite o se requiere de cierta puntación, o no se escriben estructuras completas como por ejemplo un If sin End If o un For sin Next. 

Para ayudar a minimizar este tipo de errores Visual Basic cuenta con la opción Auto Syntax Check para habilitarla seleccione:
Menu principal Tools » Options » Editor tab » Options » Auto Syntax Check.

En Tiempo de Ejecución, ocurren cuando una sentencia sintácticamente válida intenta una operación que es imposible de realizar, por ejemplo tratar de leer datos de un archivo inexistente o dividir entre 0. 

De lógica, ocurren cuando una aplicación no realiza lo esperado, este tipo de errores son especialmente difíciles de encontrar porque sintácticamente puede ser código válido y ejecutarse sin realizar ninguna operación inválida pero producir resultados incorrectos siendo la única forma de verificar su funcionamiento es probar y analizar los resultados. 

13. Lenguajes de programación más populares a través de la historia. Descripción y ejemplo.

Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulación directa de punteros o memoria.

Ejemplo:
1 // Demostración de BoxLayout.
2 import java.awt.*;
3 import java.awt.event.*;
4 import javax.swing.*;
5
6 public class DemoBoxLayout extends JFrame {
7
8    // configurar GUI
9    public DemoBoxLayout()
10    {
11       super( "Demo de BoxLayout" );
12
13       // crear contenedores Box con esquema BoxLayout
14       Box horizontal1 = Box.createHorizontalBox();
15       Box vertical1 = Box.createVerticalBox();
16       Box horizontal2 = Box.createHorizontalBox();
17       Box vertical2 = Box.createVerticalBox();
18
19       final int TAMANIO = 3; // número de botones en cada contenedor Box
20
21       // agregar botones al objeto Box horizontal1
22       for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ )
23          horizontal1.add( new JButton( "Botón " + cuenta ) );
24
25       // crear montante y agregar botones al objeto Box vertical1
26       for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) {
27          vertical1.add( Box.createVerticalStrut( 25 ) );
28          vertical1.add( new JButton( "Botón " + cuenta ) );
29       }
30
31       // crear pegamento horizontal y agregar botones al objeto Box horizontal2
32       for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) {
33          horizontal2.add( Box.createHorizontalGlue() );
34          horizontal2.add( new JButton( "Botón " + cuenta ) );
35       }
36
37       // crear área rígida y agregar botones al objeto Box vertical2
38       for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) {
39          vertical2.add( Box.createRigidArea( new Dimension( 12, 8 ) ) );
40          vertical2.add( new JButton( "Botón " + cuenta ) );
41       }
42
43       // crear pegamento vertical y agregar botones al panel
44       JPanel panel = new JPanel();
45       panel.setLayout( new BoxLayout( panel, BoxLayout.Y_AXIS ) );
46
47       for ( int cuenta = 0; cuenta < TAMANIO; cuenta++ ) {
48          panel.add( Box.createGlue() );
49          panel.add( new JButton( "Botón " + cuenta ) );
50       }
51
52       // crear un objeto JTabbedPane
53       JTabbedPane fichas = new JTabbedPane(
54          JTabbedPane.TOP, JTabbedPane.SCROLL_TAB_LAYOUT );
55
56       // colocar cada contendor en panel con fichas
57       fichas.addTab( "Cuadro horizontal", horizontal1 );
58       fichas.addTab( "Cuadro vertical con montantes", vertical1 );
59       fichas.addTab( "Cuadro horizontal con pegamento", horizontal2 );
60       fichas.addTab( "Cuadro vertical con áreas rígidas", vertical2 );
61       fichas.addTab( "Cuadro vertical con pegamento", panel );
62
63       getContentPane().add( fichas );  // colocar panel con fichas en el panel de contenido
64
65       setSize( 400, 220 );
66       setVisible( true );
67
68    } // fin del constructor
69
70    public static void main( String args[] )
71    {
72       DemoBoxLayout aplicacion = new DemoBoxLayout();
73       aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
74    }
75
76 } // fin de la clase DemoBoxLayout
VISUAL BASIC
Visual Basic es un lenguaje de programación orientado a eventos, desarrollado por el alemán Alan Cooper para Microsoft. Este lenguaje de programación es un dialecto de BASIC, con importantes agregados. Su primera versión fue presentada en 1991, con la intención de simplificar la programación utilizando un ambiente de desarrollo completamente gráfico que facilitara la creación de interfaces gráficas y, en cierta medida, también la programación misma.
Ejemplo:
El siguiente fragmento de código muestra un cuadro de mensaje, en una ventana, que dice "Hola mundo!":
Private Sub Form_Load()
    ' Ejecuta un simple box de mensaje que dice "Hola mundo!"
    MsgBox "Hola mundo!"
End Sub

HTML:
HTML, siglas de HyperText Markup Language (Lenguaje de Marcado de Hipertexto), es el lenguaje de marcado predominante para la elaboración de páginas web. Es usado para describir la estructura y el contenido en forma de texto, así como para complementar el texto con objetos tales como imágenes. HTML se escribe en forma de "etiquetas", rodeadas por corchetes angulares (<,>). HTML también puede describir, hasta un cierto punto, la apariencia de un documento, y puede incluir un script (por ejemplo JavaScript), el cual puede afectar el comportamiento de navegadores web y otros procesadores de HTML.
Ejemplo:



<html>
        <head>
                <title>ejemplo de comentario</title>
        </head>
        <body>
                Esta línea no es un comentario.
                <!-- esta si es un comentario -->
                Esta no.
                <!-- 
                    esta si ...
                    y esta también
                -->
        </body>
</html>

12. Clasificación de los lenguajes de programación, según


Bajo nivel: El lenguaje ensamblador fue el primer lenguaje de programación que trato de sustituir el lenguaje máquina por otro mucho más parecido al de los seres humanos.  En este lenguaje se conoce como programa fuente a un programa de instrucciones escrito en lenguaje ensamblador por el programador, y programa objeto es la traducción a lenguaje máquina del programa fuente. Los lenguajes de este tipo pueden crear programas muy rápidos, pero son difíciles de aprender, son específicos de cada procesador, si nos llevamos el programa a otro computador será preciso reescribir el programa desde el comienzo.
 El Lenguaje Máquina: es el lenguaje de programación que entiende directamente   la computadora o máquina. Este lenguaje de programación utiliza el alfabeto binario, es decir, el 0 y el 1. Con estos dos únicos dígitos, conocidos como bits, forma lo que se conoce como cadenas binarias (combinaciones de ceros y unos).
Alto nivel: Este tipo de lenguajes de programación son independientes de la máquina, lo podemos usar en cualquier computador con muy pocas modificaciones o sin ellas, son muy similares al lenguaje humano, pero precisan de un programa interprete o compilador que traduzca este lenguaje de programación de alto nivel a uno de bajo nivel como el lenguaje de máquina que la computadora pueda entender. Los lenguajes de programación de alto nivel son más fáciles de aprender porque se usan palabras o comandos del lenguaje natural, como por ejemplo del inglés. Este es el caso del BASIC, el lenguaje de programación más conocido.

b. Imperativos, declarativos, orientados a objetos, naturales
Lenguajes de programación imperativos: entre ellos tenemos el Cobol, Pascal, C y Ada.
       Lenguajes de programación declarativos: el Lisp y el Prolog.
Lenguajes de programación orientados a objetos: el Smalltalk y el C++.
Lenguajes de programación orientados al problema: son aquellos lenguajes específicos para gestión.
Lenguajes de programación naturales: son los nuevos lenguajes que pretender aproximar el diseño y la construcción de programas al lenguaje de las personas.

c.Primera, segunda, tercera, cuarta y quinta generación

       Lenguajes de programación de primera generación: el lenguaje máquina y el ensamblador.
       Lenguajes de programación de segunda generación: los primeros lenguajes de programación de alto nivel imperativo (FROTRAN, COBOL).
       Lenguajes de programación de tercera generación: son lenguajes de programación de alto nivel imperativo pero mucho más utilizados y vigentes en la actualidad (ALGOL 8, PL/I, PASCAL, MODULA).
       Lenguajes de programación de cuarta generación: usados en aplicaciones de gestión y manejo de bases de datos (NATURAL, SQL).
      Lenguajes de programación de quinta generación: creados para la inteligencia artificial y para el procesamiento de lenguajes naturales (LISP, PROLOG).