viernes, 11 de marzo de 2011

Pascal, La Historia y descripcion.

Pascal fue diseñado alrededor de 1970 por Niclaus Wirth, quien lo diseñó para ser un lenguaje cómodo para la enseñanza de los fundamentos de la programación. Como un lenguaje de programación educativo, Pascal ha mostrado gran capacidad. Además muchos estudiantes que han programado en él, han llegado a ser programadores profesionales. Pascal ha sido ampliamente adaptado para programación de sistemas y aplicaciones.
Las razones del éxito de Pascal son claras : su simplicidad y compactes le permite que sea aprendido por novatos en pocos meses, y por experimentados programadores en pocas semanas. Su juiciosa selección del programa de control de estructuras provee soporte efectivo para programación estructurada. Su gran variedad de tipos de datos permite que los datos sean descritos detalladamente. Finalmente, Pascal ha sido cuidadosamente diseñado para ser simple y eficiente de implementar, y su libre disponibilidad de implementación de modelos permite el uso del lenguaje expandirse rápidamente. Tambien es cierto que Pascal pudo haber sido diseñado mejor; pero sus fallas son tan instructivas como su éxito.
La combinación de tipos de registros, registros variantes, arreglos y punteros, permiten que una gran variedad de estructuras de datos sean definidas, creadas y manipuladas.
Pascal es estáticamente tipeado y la verificación de tipos en tiempo de compilación permite eliminar una gran cantidad de errores de programación.

Errores como intentar indexar un arreglo con un valor fuera del rango, o intentar seguir el puntero ni, pueden ser detectados en tiempo de ejecución.
* Podemos definir un subrango de un tipo primitivo discreto existente.
* Podemos elegir cualquier tipo primitivo discreto para el índice de un arreglo.
* Podemos elegir libremente el tipo de los componentes de un arreglo.
* Podemos usar conjuntos como elementos de un tipo primitivo discreto.
También se ilustra que el comando For puede ser usado para iterar sobre los índice de cualquier arreglo o sobre el rango de elementos potenciales de cualquier conjunto.
Se desea declarar un drectorio telefónico que pueda buscar eficientemente por nombres y por números. A el directorio es representado por un par de árboles binarios.
Esta es una estructura de datos medianamente complicada, pero las definiciones de tipos declaradas hacen la estructura razonablemente clara. Muchos tipos punteros son usados acá, y sería fácil confundirlos en operaciones con punteros; pero cualquier error de asignaciones de punteros en Pascal, sería prevenido por una verificación de tipos en tiempo de ejecución.
Por esto, programar punteros en Pascal, es más seguro que en cualquier otro lenguaje con punteros sin tipos (como en el PL/I). Los punteros son usados en la implementación de objetos y tipos abstractos donde la explícita manipulación de punteros es localizada y escondida. Los punteros tienen dos tipos de roles distintos : el 1º es implementar tipos recursivos; y el 2º es compartir tipos de datos. Es por eso que los punteros ahorran almacenamiento, pero más importante es que reducen el riesgo de la inconsistencia de los datos. El primer caso sería redundante si el lenguaje de programación soporta tipos recursivos directamente.
Se deben tener en cuenta que los tipos primitivos no fueron bien entendidos cuando Pascal fue diseñado. Además el criterio de diseño de Wirth fue hacer un modelo simple de computación que permita a los programadores ver que tan eficientemente sus programas correrán. Visto de esta manera, el hecho de no proveer tipos recursivos directos, en Pascal fue razonable.
El repertorio de expresiones de Pascal es muy limitado. No tiene expresiones condicionales de ninguna clase y no tiene expresiones en bloque. No tiene expresiones no triviales de tipos compuestos, debido al seguro de los agregados y al hecho de que las funciones no pueden devolver resultados compuestos.
Estas omisiones fuerzan al programador a usar comandos en situaciones donde las expresiones podrían haber sido suficientes. Por ejemplo la única forma de construir un valor de registro o arreglo, es asignando uno a uno los componentes de una variable arreglo o registro. Más aún el cuerpo de una función es, en efecto, un comando. Pascal es, consecuentemente, un lenguaje de programación muy imperativo.
Pascal tiene un gran repertorio de comandos. Los comandos fi y cásese proveen para ejecuciones condicionales. Los comandos repita y hile se proveen para iteraciones indefinidas y el comando For para iteraciones finitas. Estos comandos pueden ser compuestos libremente.
La única forma de programar el más general control de flujo en Pascal es usando el secuenciador goteo. Pascal restringe su uso para evitar los malos abusos, como saltar dentro de un loo o dentro de un bloque. Los programadores pueden el secuenciador goteo en una forma disciplinada, por ejemplo para escapar de loores y bloques pero aún es muy posible su abuso para escribir programas enredados.

El Turbo Pascal es un Lenguaje de alto nivel desarrollado a principios de los años 70 por Nyklaus Wirth, en la Universidad Técnica de Zurich, Suiza; para enseñar programación estructurada.

El nombre fue elegido en honor de Blaise Pascal (1623-1662), un brillante científico y matemático francés entre cuyos logros se encuentra la primera máquina calculadora mecánica en el mundo.
Consta de tres partes especificas:  Sintaxis, Estatutos, Instrucción y Programa.

  • La Sintaxis son reglas que deben seguirse en la escritura de cada parte de un programa.
  • Los Estatutos son comandos de Pascal diseñados para un propósito específico.
  • La Instrucción es una forma de indicarle a la computadora que se necesita llevar a cabo. Las instrucciones se forman con los estatutos de Pascal correspondientes y siguiendo las reglas de sintaxis que Pascal determine.
  • El Programa es el conjunto de instrucciones que indican a la computadora lo que se necesite se lleve a cabo. Es necesario que se especifiquen de acuerdo a la sintaxis de Pascal y en el orden lógico apropiado.
Estructuras de un programa escrito en Pascal

La estructura básica de esteprograma tiene el siguiente formato:
* Cabecera o encabezado.
* Declaración o parte declarativa.
* Cuerpo del programa o parte de sentencias.
PROGRAM identificador; (*encabezado del programa*)
VAR (*parte declarativa*)
BEGIN
instrucciones (*cuerpo del programa*)
END.

Opcionalmente pueden usarse comentarios en el programa, éstos no forman parte de él, pueden colocarse en cualquier parte del programa y deben ir entre paréntesis y asterisco (* Comentario*) o entre llaves.

Palabras reservadas

Estas son palabras que sólo pueden ser usadas para un propósito específico, pues tienen un significado estándar predefinido. En la estructura básica las palabras "negrita" son palabras reservadas en Pascal. La lista completa la pueden encontrar en cualquier libro de Pascal.
Identificadores creados por el programador
Palabras creadas por el programador para ser usadas en un programa. Ejemplo: identificador para dar nombre al programa, nombres de variables, etc. ... Deben cumplir con las siguientes reglas:
1) Siempre debe comenzar con una letra del abecedario.
2) Después de la primera letra, puede tener más letras y/o dígitos y/o el carácter de subrayado (__). No hay distinción entre mayúsculas y minúsculas.
3) No puede ser palabra reservada.
4) Solamente los primeros 63 caracteres serán válidos o identificados.

El computador es una herramienta poderosa. La información puede almacenarse es la memoria y manejarse a velocidades excepcionalmente altas para producir resultados.

Podemos describirle al computador una tarea de manejo de datos presentándole una lista de instrucciones que deben ser llevadas a cabo. Una vez que esta lista le ha sido proporcionada al computador, este puede llevar a cabo dichas instrucciones.
Al principio de elaborar una lista de instrucciones se le llama programación. Escribir un programa de computador es muy similar a describirle las reglas de un juego a gente que nunca lo ha jugado, para que las aplique. En ambos casos se requiere de un lenguaje de descripción intangible por todas las partes involucradas en la comunicación. Por ejemplo, las reglas del juego deben ser escritas en algún lenguaje y después se leen y se aplican.
Tanto el inventor del juego como aquellos que desean jugarlo, deben estar familiarizados con el lenguaje de descripción utilizado.

Los lenguajes utilizados para la comunicación entre el hombre y el computador se llama lenguajes de programación. Todas las instrucciones presentadas al computador deben ser representadas y combinadas de acuerdo con las reglas de sintaxis del lenguaje de programación. Sin embargo, hay una diferencia significativa entre el lenguaje de programación y un lenguaje como el español, el ingles o el ruso: las reglas de un lenguaje de programación son muy precisas y no se permiten excepciones ¨ o ¨ambiguedades¨.

En Pascal podemos declarar constantes, tipos, variables y abstracciones de funciones y procedimientos. Las declaraciones sólo pueden ser ubicadas en la cabecera de los bloques. En Pascal los bloques van dentro de una función, un procedimiento o dentro del programa principal; entonces los programadores están obligados a poner todas sus declaraciones en lugares comparativamente pequeños. Además las declaraciones de Pascal deben ser agrupadas por clases; esto hace dificultoso mantener relacionadas todas las declaraciones.
Pascal es un típico lenguaje de programación imperativo ya que soporta sólo abstracciones de procedimientos y funciones. Las abstracciones en Pascal no son valores deprimiera clase. Ellos pueden ser pasados como argumentos de otras abstracciones, pero no pueden ser asignados o usados como componentes de tipos compuestos.
Hay cuatro mecanismos de variable : parámetros por valor, variable, procedural y funcional. Estos permiten que los valores, referencias a variables, abstracciones de procedimientos y funciones puedan ser pasados como argumentos.
Los procedimientos y funciones son solamente clases de módulos que soporta Pascal. El concepto de encapsulamiento no esta definido o soportado directamente en Pascal, pero puede ser usado en programas de Pascal muy particulares.

Esta es una imagen de Pascal: Click!

Este es un ejemplo de una compilacion de Pascal en su version Turbo: Click!