Pascal (lenguaje de programación)

Pascal
Desarrollador(es)
Niklaus Wirth
Información general
Extensiones comunes .pas .pp
Paradigma Imperativo (Procedural), Estructurado
Apareció en 1970
Diseñado por Niklaus Wirth
Tipo de dato Fuerte, Estático
Implementaciones Múltiples
Dialectos Object Pascal, Oxygene
Influido por ALGOL
Ha influido a C, Java, C#, Modula, Oberon
Sistema operativo Multiplataforma
[editar datos en Wikidata]

Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth entre los años 1968 y 1969 y publicado en 1970. Su objetivo era crear un lenguaje que facilitara el aprendizaje de programación a sus alumnos, utilizando la programación estructurada y estructuración de datos. Sin embargo con el tiempo su utilización excedió el ámbito académico para convertirse en una herramienta para la creación de aplicaciones de todo tipo.

Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente tipado. Esto implica que:

  1. El código está dividido en porciones fácilmente legibles llamadas funciones o procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada en oposición al antiguo estilo de programación monolítica.
  2. El tipo de dato de todas las variables debe ser declarado previamente para que su uso quede habilitado.

El nombre de Pascal fue escogido en honor al matemático francés Blaise Pascal.

Características únicas

Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición; la asignación a variables de valores de tipo incompatible no están autorizadas (en C, en cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente porque el tipo es desconocido; y también evita la necesidad de notación húngara, que vienen a ser prefijos que se añaden a los nombres de las variables y que indican su tipo.

Implementaciones

Las primeras versiones del compilador de Pascal, entre ellas la más distribuida fue UCSD Pascal, traducían el lenguaje en código para una máquina virtual llamada máquina-P. La gran ventaja de este enfoque es que para tener un compilador de Pascal en una nueva arquitectura de máquina solo hacía falta reimplementar la máquina-P. Como consecuencia de esto, solo una pequeña parte del intérprete tenía que ser reescrita hacia muchas arquitecturas.

En los años 1980, Anders Hejlsberg escribió el compilador Blue Label Pascal para la Nascom-2. Más tarde fue a trabajar para Borland y reescribió su compilador que se convirtió en Turbo Pascal para la IBM PC. Este nuevo compilador se vendió por $49, un precio orientado a la distribución masiva.

El económico compilador de Borland tuvo una larga influencia en la comunidad de Pascal que comenzó a utilizarlo principalmente en el IBM PC. En busca de un lenguaje estructurado muchos aficionados al PC reemplazaron el BASIC por este producto. Dado que Turbo Pascal sólo estaba disponible para una arquitectura, traducía directamente hacia el código máquina del Intel 8088, logrando construir programas que se ejecutaban mucho más rápidamente que los producidos en los esquemas interpretados.

Durante los años 1990, estuvo disponible la tecnología para construir compiladores que pudieran producir código para diferentes arquitecturas de hardware. Esto permitió que los compiladores de Pascal tradujeran directamente al código de la arquitectura en que corre.

Con Turbo Pascal versión 5.5, Borland agregó programación orientada a objetos a Pascal.

Sin embargo, Borland después decidió mejorar esa extensión del lenguaje introduciendo su producto Delphi, diseñado a partir de estándar Object Pascal, propuesto por Apple como base. Borland también lo llamó Object Pascal en las primeras versiones, pero cambió el nombre a 'lenguaje de programación Delphi' en sus últimas versiones.

Ejemplos

Hola Mundo

Un sencillo ejemplo del programa Hola Mundo:

PROGRAM HolaMundo (OUTPUT);
BEGIN
  WriteLn('¡Hola Mundo!');
  { Es imprescindible añadir el carácter ";" tras el
    último comando de un bloque.  Añadirlo hace que se
    incluya un "elemento nulo" al programa. }
END.

Suma

 
PROGRAM Suma (INPUT, OUTPUT);

VAR
  1, 2: INTEGER;                                                              

BEGIN
  Write ('ingrese un numero: '); ReadLn (Sumando1);
  Write ('ingrese otro numero
: '); ReadLn (Sumando2);
  WriteLn ('La suma es: ', Sumando1 + Sumando2);
  Write ('Pulse [Intro] para finalizar...');
  ReadLn
END.

Raíz cuadrada

PROGRAM Raiz (INPUT, OUTPUT);
(* Obtener la raíz cuadrada de un número real x cualquiera.*)

VAR 
  Valor, Resultado: REAL;
BEGIN
  WriteLn ('** Calcular la raíz cuadrada **');
  Write ('Introduzca el valor: '); ReadLn (Valor);
(* Raíz cuadrada del valor absoluto de x para evitar raíces imaginarias *)
  Resultado := sqrt (abs (Valor));
  Write ('La raíz cuadrada de ', Valor, ' es ');
  IF Valor < 0 THEN (* Si es negativo, el resultado es imaginario *)
    WriteLn (Resultado ,'i')
  ELSE
    WriteLn (Resultado);
  Write ('Pulse [Intro] para finalizar...');
END.

Bucles

Un ejemplo de bucle:

PROGRAM MultiplosDe3 (INPUT, OUTPUT);

VAR
  Numero, Cnt: INTEGER;

BEGIN
  Cnt := 0;
  Write  ('Entra el primer número de la serie: '); ReadLn (Numero);
  WHILE Numero <> 0 DO
  BEGIN
    IF (Numero MOD 3) = 0 THEN
      INC (Cnt);
    Write ('Dame otro numero (0 para terminar): '); ReadLn (Numero);
  END;
  WriteLn ('La cantidad de múltiplos de 3 ingresados es ', Cnt);
  Write ('Pulse [Intro] para finalizar...');
END.

Un ejemplo de bucle:

program tabla;
uses crt;
var
i,n:integer;
begin
 clrscr;
 for i:=1 to 10 do
  begin
   write(´ingrese  la tabla de mutliplicar que desea ver: ´);
   readln(n);
   writeln( i,´ x´,n,´ =´,i*n);
  end;
readln;
end.

Funciones y recursividad

PROGRAM CalcularFactorial (INPUT, OUTPUT);

(* Función que calcula el factorial de n (n!) de forma recursiva. *)
  FUNCTION Factorial (CONST N: INTEGER): INTEGER;
  BEGIN
    IF N > 1 THEN
      Factorial := N * (Factorial (N - 1))
    ELSE
      Factorial := N;
  END;

VAR
  Base: INTEGER;
BEGIN
  Write ('Valor de N: '); ReadLn (Base);
  WriteLn ('N! = ', Factorial (Base));
  Write ('Pulse [Intro] para finalizar...');
END.

Vectores

PROGRAM NotasDeAlumnos;
uses crt;
Type
vecalumnos = array [1..40] of string;
var
Nombre, Apellido: vecalumnos;
Nota: array [1..40] of real;
Begin
clrscr; /*Limpia pantalla*/
For i:= 1 to 40 do
  begin
   write(´Ingrese Nombre: ´);
   readln(Nombre[i]);
   write(´Ingrese Apellido: ´);
   readln(Apellido[i]);
   write(´Ingrese Nota: ´);
   readln(Nota[i]);
  end;
For i:= 1 to 40 do
  begin
  write(Nombre[i], ´ ´,Apellido[i]);
  if (Nota[i] >=7) then
  writeln(´ aprobó´)
  else
  writeln(´ no aprobó´);
  end;
writeln(´´);
Write ('Pulse [Intro] para finalizar...');
Readln;
end.

Compilador

Varios compiladores de Pascal están disponibles para el uso del público en general:

Actualidad

Actualmente sigue utilizándose este lenguaje en el desarrollo de aplicaciones, gracias a la aparición de herramientas de desarrollo para nuevas plataformas como Oxygene o Smart Mobile Studio y la modernización de compiladores y entornos más antiguos como Delphi, Free Pascal y Lazarus. Hoy en día se usa el compilador Free Pascal y similares para enseñar programación en las escuelas.[1] También se usan compiladores más antiguos como el Turbo Pascal.[2]

Véase también

Referencias

  1. «PP4S: Pascal Programming For Schools.» (en inglés). Consultado el 14 de diciembre de 2013.
  2. «Sitio web de Programación 1 de la Facultad de Ingeniería (Universidad de la República - Uruguay)». Consultado el 24 de octubre de 2012.

Enlaces externos

This article is issued from Wikipedia - version of the Wednesday, February 03, 2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.