Curso de Pascal por Nacho Cabanes.
Tema 0. Introducción.
Hay distintos lenguajes que nos permiten dar instrucciones a un ordenador (un programa de ordenador es básicamente eso: un conjunto de órdenes para un ordenador).
El lenguaje más directo es el propio del ordenador, llamado "lenguaje de máquina" o "código máquina", formado por secuencias de ceros y unos. Este lenguaje es muy poco intuitivo para nosotros, y difícil de usar. Por ello se recurre a otros lenguajes más avanzados, más cercanos al propio lenguaje humano (lenguajes de alto nivel), y es entonces el mismo ordenador el que se encarga de convertirlo a algo que pueda manejar directamente.
Se puede distinguir dos tipos de lenguajes, según se realice esta conversión:
- En los intérpretes, cada instrucción que contiene el programa se va convirtiendo a código máquina antes de ejecutarla, lo que hace que sean más lentos (a cambio, los intérpretes suelen ser más fáciles de crear, lo que permite que sean baratos y que puedan funcionar en ordenadores con menor potencia).
- En los compiladores, se convierte todo el programa en bloque a código máquina y después se ejecuta. Así, hay que esperar más que en un intérprete para comenzar a ver trabajar el programa, pero después éste funciona mucho más rápido (a cambio, los compiladores son más caros y suelen requerir ordenadores más potentes).
Hay lenguajes para los que sólo hay disponibles intérpretes, otros para los que sólo existen compiladores, y otros en los que se puede elegir entre ambos. La mayoría de los lenguajes actuales son compilados, y el entorno de desarrollo suele incluir:
- Un editor para escribir o revisar los programas.
- El compilador propiamente dicho, que los convierte a código máquina.
- Otros módulos auxiliares, como enlazadores (linkers) para unir distintos subprogramas, y depuradores (debuggers) para ayudar a descubrir errores.
Es cada vez más frecuente que todos estos pasos se puedan dar desde un único “entorno integrado”. Por ejemplo, el entorno de Turbo Pascal 7 tiene la siguiente apariencia:
Algunos de los lenguajes
más difundidos son:
- BASIC, que durante mucho tiempo se ha considerado un buen lenguaje para comenzar a aprender, por su sencillez, aunque se podía tender a crear programas poco legibles. A pesar de esta "sencillez" hay versiones muy potentes, incluso para programar en entornos gráficos como Windows.
- COBOL, que fue muy utilizado para negocios (para crear software de gestión, que tuviese que manipular grandes cantidades de datos), aunque últimamente está bastante en desuso.
- FORTRAN, concebido para ingeniería, operaciones matemáticas, etc. También va quedando desplazado.
- Ensamblador, muy cercano al código máquina (es un lenguaje de "bajo nivel"), pero sustituye las secuencias de ceros y unos (bits) por palabras más fáciles de recordar, como MOV, ADD, CALL o JMP.
- C, uno de los mejor considerados actualmente (junto con C++ y Java, que mencionaremos a continuación), porque no es demasiado difícil de aprender y permite un grado de control del ordenador muy alto, combinando características de lenguajes de alto y bajo nivel. Además, es muy transportable: existe un estándar, el ANSI C, lo que asegura que se pueden convertir programas en C de un ordenador a otro o de un sistema operativo a otro con bastante menos esfuerzo que en otros lenguajes.
- C++, un lenguaje desarrollado a partir de C, que permite Programación Orientada a Objetos, por lo que resulta más adecuado para proyectos de una cierta envergadura.
- Java, desarrollado a su vez a partir de C++, que elimina algunos de sus inconvenientes, y ha alcanzado una gran difusión gracias a su empleo en Internet.
- PASCAL, el lenguaje estructurado por excelencia (ya se irá viendo qué es esto más adelante), y que en algunas versiones tiene una potencia comparable a la del lenguaje C, como es el caso de Turbo Pascal en programación para DOS y de Delphi en la programación para Windows. Frente al C tiene el inconveniente de que es menos portable, y la ventaja de que en el caso concreto de la programación para DOS, Turbo Pascal no tiene nada que envidiar la mayoría de versiones del lenguaje C en cuanto a potencia, y además resulta más fácil de aprender, es muy rápido, crea ficheros EXE más pequeños, etc., mientras que en la programación para Windows, Delphi es una muy buena herramienta para crear aplicaciones de calidad en un tiempo razonablemente breve.
Dos conceptos que se mencionan mucho al hablar de programación son "programación estructurada" y "programación orientada a objetos".
La programación estructurada consiste en dotar al programa de un cierto orden, dividiéndolo en bloques independientes unos de otros, que se encargan de cada una de las tareas necesarias. Esto hace un programa más fácil de leer y modificar.
La programación orientada a objetos se tratará más adelante, cuando ya se tenga una buena base de programación "convencional". Como simple comentario, para que vayan sonando las cosas a conocidas, diré que "Objects Pascal" es el nombre que se suele dar a un lenguaje Pascal que permita programación orientada a objetos (como es el caso de Turbo Pascal), y que "C++" es una ampliación del lenguaje C, que también soporta P.O.O.
En lo que sigue vamos a ver los fundamentos de la programación en Pascal, primero intentando ceñirnos al Pascal estándar, y luego ampliando con las mejoras que incluye Turbo Pascal, la versión más difundida.
Los primeros programas, los más sencillos, se podrán compilar con
cualquier versión del lenguaje Pascal (o casi), aunque la mayoría de los más
avanzados (los que incluyan manejo de gráficos, por ejemplo) estarán creados
pensando en el que posiblemente sea en estos momentos el compilador de
Pascal más usado: Free Pascal, o bien en el clásico Turbo Pascal 7.0 para
Dos.