Aprendiendo a programar con Free Pascal I/Versión para imprimir
Aprendiendo a programar con Free Pascal I
Objetivos
El principal objetivo de este libro, es dar a conocer los principios básicos de la programación, utilizando para ello el Compilador FreePascal. El libro esta dirigido a aquellas personas o usuarios que desean aprender a programar una computadora, y que no han tenido ningún tipo de experiencia al respecto.
En este libro se cubrira, lo que es la programación estructurada, ya que es el medio adecuado para poder enseñar la sintaxis del lenguaje.
Contenido
- Introducción
- Palabras reservadas, identificadores
- Tipos de Datos Simples
- Operadores para Tipos de Datos Simples
- Estructuras de Control
- Tipos de Datos Estructurados
- Constantes
- Archivos
- La Unidad System
- Funciones y procedimientos
- Creación de Unidades o Librerias
Introducción
1. Introducción
- Antes de Empezar
- La Computadora
- ¿Qué es un programa?
- Etapas para el diseño de un programa
- Instalación del compilador
- Dos programas de ejemplo
- Formas de escribir un programa
- Comentarios
- Variables
- Salida por pantalla
- Lectura de datos
- Ejercicios
Antes de Empezar
1. Antes de Empezar
Antes de empezar a leer este libro, necesitarás conocer el uso correcto y adecuado de tu computadora. No me refiero simplemente a encender y apagar tu computadora, ni mucho menos a navegar por internet.
Lo que debes saber para aprender a programar es como administrar tus carpetas y archivos, desde tu Sistema Operativo (linux o Windows), Instalar un programa y conocer un Editor de texto; por favor no confundir Editor de texto con Procesador de texto. Un Editor de texto es un programa que permite escribir y modificar archivos compuestos únicamente por texto sin formato.
También es necesario que sepas usar el intérprete de comandos de tu S.O. (linux o Windows).
Para aprender a programar, se usará los procesadores de texto más simples, que en la mayoría de los casos ya se encuentran instalados en el Sistema Operativo :
- Bloc de Notas. (Windows).
- Gedit. (linux - Entorno gráfico GNOME).
- KEdit. (linux - Entorno gráfico KDE).
Estos editores de texto no ofrecen características avanzadas como : Autocompletado, Marcadores etc. y otras características adicionales. Si te sientes seguro y preparado para usar Editores de textos con características avanzadas y de uso más complejo, te recomiendo probar con los siguientes Editores de texto:
- Notepad++. (http://notepad-plus.sourceforge.net). Windows.
- Programmers Notepad. (http://www.pnotepad.org). Windows.
- PsPad. (http://www.pspad.com/es). Windows.
- Vim. (http://www.vim.org). Linux y Windows.
- Xemacs. (http://www.xemacs.org). Linux y Windows
Editores de texto existen muchos, lo más importante es que debes usar el que mejor conoces.
La Computadora
La Computadora
La computadora es un aparato electrónico utilizado para procesar datos y obtener resultados. Los datos se pueden introducir en la computadora, para luego indicarle a la computadora, mediante instrucciones, que procese los datos para producir una salida o un resultado.
Para introducir los datos en la computadora se usan los dispositvos de entrada, para procesar los datos mediante instrucciones, se usan los dispositivos de procesamiento ó C.P.U., y para poder representar los resultados, se usan los dispositivos de salida.
Dispositivos o Componentes de una computadora
Toda computadora consta de cinco componentes principales, como mínimno :
- Dispositivos de Entrada.- Los dispositivos de entrada como su nombre lo indica, sirven para introducir datos en la computadora, para luego ser procesados. Los datos se leen de los dispositivos de entrada y se almacenan en la memoria interna. Los dispositivos de entrada mas usados son : el teclado, el escáner, el ratón, lápices ópticos, lectores de código de barras, palanca de mandos (joystick), etc.
- Unidad Central de Proceso UCP ó C.P.U..- Esta unidad se encarga de procesar los datos ingresados. A las C.P.U. también se les conoce como microprocesadores. Entre las C.P.U. más populares en el mercado de las computadoras personales, tenemos los microprocesadores intel (pentium, Xeon, etc.) y los AMD.
- La memoria central o interna.- La memoria interna se usa para almacenar, los datos y las instrucciones temporalmente, que usarán los microprocesadores para obtener un resultado. Tambien se usan para guardar los resultados, para posteriormente procesarlos como nuevos datos. A estas memorias se les conoce como memorias volátiles, porque cuando se apaga la computadora, los datos e instrucciones se borran. Todas las memorias internas son en la actualidad electrónicas y sirven como nexo entre el microprocesador y las memorias externas. En la actualidad los microprocesadores para mantener su velocidad de procesamiento sólo trabajan con memorias internas.
- Las memorias Externas ó Unidades de Almacenamiento.- Las memorias externas son las encargadas de almacenar los datos, y las instrucciones que usarán los microprocesadores. A diferencia de las anteriores, estas mantienen almacenado los datos e instrucciones después de apagarse la computadora. Las memorias más usadas son las memorias USB, el disco duro, los CD y DVD de datos, existiendo otras más.
- Dispositivos de Salida.- Estos dispositivos permiten representar los resultados de los datos ya procesados. Los dispositivos más usados son : El monitor, la impresora, los parlantes, trazadores gráficos (plotters), etc.
¿Qué es un programa?
¿Qué es un programa ?
Para que el microprocesador realice procesos sobre los datos, necesitará que el usuario le indique las instrucciones en un orden lógico para trabajar sobre los datos. Ese conjunto de instrucciones se conoce como programa, y a las personas que hacen los programas se les conoce como programadores.
Para crear los programas, se necesitan de los lenguajes de programación.
Un lenguaje de programación es el conjunto de reglas sintácticas y semánticas, que nos indica como debemos escribir las instrucciones de un programa, para que el microprocesador las pueda echar a andar ó ejecutar.
Los microprocesadores son capaces de ejecutar un programa, escrito en un lenguaje de programación fijo, llamado lenguaje máquina.
Por ser los lenguajes máquina, difíciles de escribir, aparecieron los lenguajes ensamblador, los lenguajes ensamblador ofrecían cierta facilidad, en comparación con los anteriores, pero aun así no eran muy fáciles de usar, para escribir programas de mayor complejidad, entonces aparecieron los lenguajes de alto nivel, como C, C++, Pascal, Java, C#, etc.
Llamamos Código Fuente, al programa escrito con un Editor de texto, que luego será convertido a un programa en lenguaje máquina por un compilador.
El compilador, es un programa que se encarga de convertir el código fuente, escrito en un lenguaje de programación como C++,Pascal, etc.
Un lenguaje de programación no es un lenguaje informático. El concepto de lenguaje informático engloba a otros lenguajes, por ejemplo los lenguajes de marcación como el HTML.
Etapas para el Diseño de un programa
Etapas para el Diseño de un programa
El proceso de programación consta, teóricamente, de tres partes :
- El Analisis. Consiste en detallar qué tiene que hacer el programa o, dicho de otra forma, concretar qué problemas tiene que resolver nuestro programa.
- El diseño. En la fase de diseño se define los pasos que se realizarán para solucionar el problema, algunos serán más rápidos, otros más lentos, más simples o más complejos.
- La implementación. Consiste en la Edición, compilación y depuración del diseño del programa en un lenguaje de programación especifico.
Instalación del Compilador
Instalación del Compilador
Descargar el Compilador
- El compilador se puede descargar gratuitamente desde el área de descarga de la web principal de FreePascal : (http://www.freepascal.org/download.var).
- Se tiene que descargar el compilador para el Sistema Operativo o plataforma que se desea usar :
- fpc-2.0.4.i386-win32.exe para Win32
(ftp://ftp.freepascal.org/pub/fpc/dist/i386-win32-2.0.4/fpc-2.0.4.i386-win32.exe) - fpc-2.0.4.i386-linux.tar para linux
(ftp://ftp.freepascal.org/pub/fpc/dist/i386-linux-2.0.4/fpc-2.0.4.i386-linux.tar) - fpc-2.0.4.x86_64-linux.tar para linux con microprocesadores de 64 bits como : AMD64 o x86_64
(ftp://ftp.freepascal.org/pub/fpc/dist/x86_64-linux-2.0.4/fpc-2.0.4.x86_64-linux.tar)
- fpc-2.0.4.i386-win32.exe para Win32
Instalar el Compilador
- Windows
- Simplemente ejecute el programa fpc-2.0.4.i386-win32.exe y siga los pasos que le vaya indicando el asistente.
- Por omisión o defecto el compilador se instala en C:\FPC\2.0.4
- linux
- Simplemente debes descomprimir el archivo fpc-2.0.4.i386-linux.tar, en la carpeta donde se descargo, después ejecutar el script install.sh.
- Para descomprimir el archivo : tar -xvf fpc-2.0.4.i386-linux.tar
- Para instalarlo : sh install.sh
- Por omisión o defecto el compilador se instala en /usr/local.
Dos programas de Ejemplo
Dos Programas de Ejemplo
Para explicar el diseño de un programa usando las etapas antes mencionadas : Analisis, Diseño, Implementación. En este capitulo se crearán dos programas de ejemplo. El primero tendra como problema, Mostrar el mensaje "Bienvenido a mi Mundo" en pantalla; y el segundo sumar los números 45 y 89. No es necesario seguir las etapas antes mencionadas para problemas sencillos como los programas que se crearán a continuación, pero el proposito de explicarlas, nos ayudará a entender como usarlas, para posteriormente encontrar soluciones a problemas de mayor complejidad.
Programa 01 : Mostrar el Mensaje "Bienvenido a mi Mundo" en pantalla
- Analisis
- Como el problema es bastante sencillo, lo que se pide es mostrar el mensaje "Bienvenido a mi Mundo", en esta etapa se determina las siguientes cosas que hará el programa :
- 1. El programa ha de mostra el mensaje ni bien se ejecute.
- 2. Una vez terminado debera volver el control al Sistema Operativo.
- Diseño
- En esta etapa se describe con mas detalles, definiendo exactamente los pasos a realizar por el programa, esto se puede hacer del siguiente modo :
Inicio Imprimir Por Pantalla 'Bienvenido a mi mundo' Fin
Figura 1 : Diseño del programa que muestra el mensaje "Bienvenido a mi Mundo"
- En el diseño se puede hacer uso de un falso lenguaje, con una serie de normas léxicas y gramaticales parecidas al lenguaje de programación, pero sin llegar a la rigidez de los mismos, el objetivo es acercarnos más a lo que será el programa en un determinado lenguaje de programación.
- Implementación
- En esta parte tenemos que convertir nuestro diseño ya en un programa especifico.
- Usando su editor de texto preferido escriba el siguiente Código Fuente :
Begin Write('Bienvenido a mi mundo') End.
Figura 2 : Código Fuente del programa que muestra el mensaje "Bienvenido a mi Mundo"
- Guardelo en el disco duro con el nombre Bienvenido.pp, hasta aquí ya hemos logrado editar nuestro programa, usando como lenguaje de programación Pascal.
- Todo programa en Pascal empieza con la palabra "Begin", y termina con la palabra "End", seguido del punto. Con estas palabras le indicamos a la computadora en donde comienza y termina nuestro programa.
- Para escribir el mensaje "Bienvendo a mi Mundo", se hace uso de un rutina llama "Write", esta rutina imprime en la pantalla del computador cualquier dato (sólo números o textos), que se coloque dentro de los parentesis. Las comillas simples que encierran el mensaje a mostrar, le indica a la rutina "Write", que los datos son textos ó una cadena de caracteres.
- Para compilar nuestro código fuente, ingresamos al interprete de comandos y ecribimos la siguiente orden :
fpc Bienvenido.pp
Figura 3 : Compilando el Código Fuente Bienvenido.pp
- En la parte de Implementación se debe Depurar el programa, que consiste en hacer una serie de pruebas para saber si funciona correctamente, en este ejemplo lo que se tiene que hacer es ejecutar el programa desde el interprete de comandos; escribiendo el nombre del programa, que en este caso tendra el nombre del archivo que contiene el código Fuente (Bienvenido).
- Pueden existir dos tipos de errores : Los errores durante la compìlación, que ocurren cuando en el código fuente se escribio incorrectamente, como por ejemplo se olvido de escribir el punto, las comillas, escribio mal la palabra "Begin" etc.; y los errores de programación que ocurren cuando se hizo un mal analisis en la solución del problema, uno de los errores más comunes es la división de un número entre cero.
Programa 02 : Sumar los números 45 y 89
- Analisis
- Diseño
- Implementación
Inicio Fin de un programa
Aprendiendo a programar con Free Pascal I/Introducción/Inicio Fin de un programa
Comentarios
Comentarios
Los comentarios, son textos que se escriben dentro del programa para recordar que hacia determinada sentencia o instrucción en el programa. támbien se usan para indicar la autoría del programa, la fecha de creación, y otras cosas afines. Los comentarios en Pascal pueden estar compuesto por una o varias líneas, y están encerrados entre (* y *) ó { y }. A continuación, un ejemplo de un programa con comentarios :
{ Autor : Luis Del aguila Version : 1.0 Descripcion del programa : Este programa muestra un mensaje por pantalla } PROGRAM Saludo; BEGIN Write('Hola otra vez') (* Instruccion que muestra el mensaje por pantalla *) END.
Figura 12 : Programa usando Comentarios.
También se pueden escribir comentarios de una sola línea, en estos casos al comentario se le antecede dos líneas de división //, a continuación un ejemplo más.
{ Autor : Luis Del aguila Version : 1.0 Descripcion del programa : Este programa muestra un mensaje por pantalla } PROGRAM Saludo; BEGIN Write('Hola otra vez') // Instruccion que muestra el mensaje por pantalla END.
Figura 13 : Programa usando Comentario de una línea.
Los comentarios no generán código ejecutable.
Variables
Variables
Las variables son espacios de memoria reservado que sirven para guardar datos numericos o textos. Para acceder a una variable hacemos uso de los identificadores, y para asignar un valor a una variable hacemos uso de los dos puntos con igual (:=). Para indicarle al compilador que queremos crear una variable en memoria hacemos uso de la palabra reservada Var.
Como ejemplo haremos un programa que nos permita sumar dos numeros 5 y 5, el resultado lo guardaremos en la variable identificada como "A" y después le sumaremos un 8, a dicha variable.
PROGRAM Sumador; VAR A : integer; BEGIN A:=5+5; A:=A+8; Write(A) END.
Figura 14 : Programa que usa una variable.
La sentencia Var A : integer; es la encargada de reservar un espacio en la memoria para la variable identificandola o nombrandola con la letra "A". Con el identificador integer, le indicamos que los datos que va a usar la variable son datos de tipo entero, comprendidos en el rango de -32768 a 32767. Los dos puntos (:) se usan para asignar un tipo de dato a la variable. Los dos puntos con igual (:=), se usan para asignar datos a la variable.
La sentencia A:=5+5;, suma el 5 con el 5 y el resultado es guardado en la variable "A", para su uso posterior. Hasta aqui el programa ha guardado en la variable "A" el numero 10.
La sentencia A:=A+8;, hace uso de la variable "A" sumandole el numero 8, y después el resultado lo asigna a la varaible "A", remplazando de esta manera el 10 por el 18.
La sentencia Write(A), muestra el último valor de "A", que en este caso sería 18.
En caso se necesite el uso de más variables, se declarán los identificadores de la mismas usando para ello la coma (,), tal como se muestra en el siguiente ejemplo :
PROGRAM Sumador; VAR A,B,C : integer; BEGIN A:=5; B:=8; C:=A+A+B; Write(C) END.
Figura 15 : Programa que usa más variables.
El programa dara el mismo resultado, pero en esta ocasión, la variable "A" mantedra su valor, al igual que "B" y "C" sin ser reemplazadas.
Los identificadores de las variables pueden ser escritos usando letras y números, pueden estar compuestos de 1 o más caracteres. Por ejemplo, a la variable "C", se le puede identificar o nombrar como "resultado", y a las otras como : "Op1" y "Op2".
PROGRAM Sumador; VAR Op1,Op2,resultado : integer; BEGIN Op1:=5; Op2:=8; resultado:=Op1+Op2; Write(resultado) END.
Figura 16 : Programa usando identificadores de más caracteres.
Los nombres o identificadores de una variable no son sensibles a mayusuculas y minusculas, esto quiere decir que "resultado", se pudo escribir dentro del programa del siguiente modo : Resultado, RESULTADO, ReSuLtAdO, etc. Es importante que para nombrar o identificar una variable los nombres de las variables no deben empezar con números.
Las variables, no solamente pueden almacenar datos numericos, tambien pueden guardar textos hasta un máximo de 255 caracteres. Se hace uso del identificador String, para indicar que la variable guardará textos.
Para asignar datos de tipo texto a las variables se usan los dos puntos con igual (:=) encerrando entre comillas simples el texto. El siguiente programa almacena en una variable el mensaje : Bienvenido a mi mundo.
PROGRAM Sumador; VAR Mensaje : String; BEGIN Mensaje:='Bienvenido a mi Mundo'; Write(Mensaje) END.
Figura 17 : Programa que usa variables de tipo texto.
Asignación de datos a variables
Aprendiendo a programar con Free Pascal I/Introducción/Asignación de datos a variables
Salida por pantalla
Salida por pantalla
Write y Writeln, son las rutinas que se usan para mostrar datos numéricos o textos por pantalla.
La diferencia entre la primera y la segunda, es que Writeln, coloca un salto de línea después de mostrar los datos por pantalla. Cuando queremos mostrar datos de tipo texto por pantalla, estos deben estar encerrados entre comillas simples; pero cuando queremos mostrar datos numéricos, se escriben de manera directa.
PROGRAM Sumador; BEGIN Write(4568); Write('Hola como estan') END.
Figura 18 : Programa usando Write con datos numéricos y caracteres.
Podemos hacer que la rutina Write muestre textos con datos numéricos simplemente separándolos por comas. El siguiente programa muestra el resultado de sumar dos números almacenados en las variables Op1 y Op2.
PROGRAM Sumador; VAR Op1,Op2,resultado:integer; BEGIN Op1:=5; Op2:=5; resultado:=Op1+Op2; Write('El resultado de la suma es : ', resultado) END.
Figura 19 : Programa usando Write para mostrar textos con datos numéricos .
El siguiente programa hace uso de las rutinas Writeln, para mostrar los valores de las variables Op1 y Op2.
PROGRAM Sumador; VAR Op1,Op2,resultado:integer; BEGIN Op1:=5; Op2:=5; resultado:=Op1+Op2; Writeln('Op1 = ',Op1); Writeln('Op2 = ',Op2); Write('El resultado de la suma es : ', resultado) END.
Figura 20 : Programa usando Writeln para mostrar los valores de las variables Op1 y Op2 .
El programa anterior nos dará como resultado lo siguiente :
Op1 = 5 Op2 = 5 El resultado de la suma es : 10
Figura 21 : Resultado de la salida del programa de la Fig 19 .
Si hubiésemos usado Write a diferencia de Writeln obtendremos el siguiente resultado :
Op1 = 5Op2 = 5El resultado de la suma es : 10
Figura 22 : Resultado de la salida del programa de la Fig 19 usando Write.
Ambas rutinas se usan para mostrar datos por pantalla, y combinándolos podemos hacer que muestren los datos de una manera más adecuada.
El siguiente programa es un ejemplo de ASCII ART.
Que usando las rutinas writeln, símbolos y espacios en blanco, nos muestra un cisne.
PROGRAM ASCIIART; BEGIN Writeln(' (@_'); Writeln('\\\_\'); Writeln('<____)') END.
Figura 23 : Programa ejemplo de ASCIIART.
El programa anterior también se puede escribir usando variables de tipo texto. A continuación el ejemplo :
PROGRAM ASCIIART; VAR Linea01,Linea02,Linea03:String; BEGIN Linea01:=' (@_'; Linea02:='\\\_\'; Linea03:='<____)'; Writeln(Linea01); Writeln(Linea02); Writeln(Linea03) END.
Figura 24 : Programa ejemplo de ASCIIART usando variables.
Lectura de datos
Lectura de datos
La lectura de datos se realiza con Readln. La lectura de datos acaba cuando se presiona la tecla Enter. Cuando se hace una lectura de datos, los datos leídos se almacenan en las variables declaradas. Haremos un programa que nos pida por teclado dos números, luego los sume y nos muestre como resultado la operación realizada.
PROGRAM Suma; VAR Op1,Op2,resultado : integer; BEGIN Write('Ingrese por teclado operando 1 : '); Readln(Op1); //lectura de datos Write('Ingrese por teclado operando 2 : '); Readln(Op2); //lectura de datos resultado:=Op1+Op2; Writeln('La suma es : ',resultado); END.
Figura 25 : Programa ejemplo de Lectura de datos.
La primero que hace el programa es mostrarnos el mensaje : Ingrese por teclado operando 1 : , esto se hace con la rutina write, la rutina readln hará una pausa en el programa, hasta que el usuario, ingrese el dato que solicita y presione la tecla enter. Es muy común en pascal hacer un pausa hasta que se presione enter usando readln sin ninguna variable entre los paréntesis. El siguiente programa muestra el mismo ejemplo, pero esta solicita al usuario que presione enter para finalizar el programa.
PROGRAM Suma; VAR Op1,Op2,resultado : integer; BEGIN Write('Ingrese por teclado operando 1 : '); Readln(Op1); //lectura de datos Write('Ingrese por teclado operando 2 : '); Readln(Op2); //lectura de datos resultado:=Op1+Op2; Writeln('La suma es : ',resultado); Write('presione enter para terminar ...'); Readln END.
Figura 26 : Programa ejemplo de Lectura de datos, con pausa para terminar el programa.
También se pueden hacer lectura de datos de tipo textos. A continuación un ejemplo que pide al usuario que ingrese su nombre y después el programa, le mostrará un mensaje saludándolo.
PROGRAM MensajeBienvenida; VAR Nombre : String; BEGIN Write('Ingrese su nombre : '); Readln(Nombre); //lectura de datos Writeln('Hola ',Nombre,', Bienvenido a mi mundo'); Write('presione enter para terminar ...'); Readln END.
Figura 27 : Programa ejemplo de Lectura de datos de tipo texto.
Algo importante, Cuando el programa hace una lectura de datos numéricos y se ingresa un dato de tipo texto, entonces se generará un error interrumpiéndose el programa, lo mismo sucede en caso contrario. Es importante entender que si el programa pide datos de tipo numérico se deben ingresar números y cuando pide datos de tipo texto se deben ingresar datos de tipo texto.
Tipos de Datos Simples
Tipos de Datos Simples
- Datos numericos Simples
- Datos numericos Reales
- Datos de textos
- Datos Booleanos
- Datos Enumerados
- Datos Subrango
- Rutinas Ord y Chr
- Compatibilidad y Solapamiento
Estructuras de Control
Estructuras de Control
- ¿Que son las estructuras de control?
- IF then else
- Case
- While
- Repeat
- For to Do
- For Downto do