Programación y Pascal.

Uso del programa        

Ejecutar el programa.        

Guardar y Abrir programas.        

Estructura general de los programas        

Teclas de acceso rapido        

Sentencias básicas de Pascal.        

TABLA DE COLORES        

Sentencias ‘Avanzadas’.        

Tipos de variables        

Tipo Real        

Tipo Entero        

Tipo Carácter        

Tipo Cadena (ansistring)        

Estructura Array        

Constantes        

Funciones        

Función Text Color:        

- Función Write:        

- Función Read:        

- Función Trunc:        

- Función round:        

- Función delay:        

- Función div:        

- Función mod:        

- Funciones básicas de cálculo:        

- Función Random:        

Funciones y procedimientos        

Algoritmo de las sentencias:        

- Sentencia compuesta:        

- Sentencias condicionales:        

Sentencia if-then-else:        

- Sentencias repetitivas:        

Sentencia While:        

Sentencia REPEAT – UNTIL:        

Sentencia FOR:        

Uso del programa

Si queremos utilizar el programa, nada más abrirlo nos sale esta ventana de inicio. Para abrir una hoja nueva solo tendremos que darle a file > new

De la barra de arriba utilizamos, sobretodo, la primera “File”. Open lo utilizaremos para abrir archivos que tengamos guardados y save o save as, para guardar una vez finalizado, o por si algún motivo no nos ha dado tiempo a acabar guardarlo y continuar el próximo día.

Una vez terminado el programa lo que tenemos que hacer es compilarlo, esto nos sirve para que FreePascal nos diga si hay algún error en nuestro programa, como puede ser por ejemplo: olvidarnos de un punto y coma o de poner el end. al final del programa, etc. Conpilar es tan fácil como presionar a la vez Alt+F9, y el programa nos compilará. Cuando termine pueden ocurrir las dos siguintes cosas:

Ejecutar el programa.

Una vez que no nos de errores al compilar el programa podremos ejecutarlo. Para esto solo tendremos que presionar las teclas Ctrl+F9 y el programa se nos ejecutara en una ventana de ms2. Si queremos salir del programa sin tener que esperar a que se acaba solo tendremos que presionar las teclas Ctrl+C. Tendremos que tener en cuenta que si no hemos guardado el programa antes de ejecutarlo nos pedirá que lo guardemos para esto lee el siguiente apartado

Guardar y Abrir programas.

Si es la primera vez que guardamos el programa nos saldrá la siguiente ventana:

Donde tendremos que poner el nombre del programa y el lugar donde lo queremos guardar. Si no es la primera vez que lo guardamos solo tendremos que presionar F2 y se guardará automáticamente.

En la carpeta donde se guarde nuestro archivo de pascal se nos crearan 4 archivos:

El primer archivo es el que se abre en pascal, el segundo es el .exe, es decir, el ejecutable que nos abre el programa directa mente. El tercero es una copia de seguridad y el último es la copia de la compilación.

Para abrir los archivos ya guardados solo tendremos que iniciar el pascal y fijarnos en la pestaña de file de la que hemos hablado anteriormente. Una vez aquí le damos a open y nos aparecerá esta ventana:

Donde  tendremos que buscar el archivo y seleccionarlo y lo abrirá automáticamente en Pascal.

Estructura general de los programas

        Todos los programas creados en Free Pascal tienen una estructura general, fija en todos los programas. Dicha estructura es la siguiente:

 

En primer lugar empezamos el programa con la palabra Program e introducimos el nombre del programa a realizar.

A continuación introducimos el apartado Uses, donde declaramos las bibliotecas que tengamos la necesidad de utilizar. En la mayoría de casos utilizaremos la biblioteca crt.

Antes de comenzar la estructura para el programa con un begin introducimos las variables. El apartado lo introducimos con la palabra

Var, donde declaramos todas la variables que vayamos a usar y de que tipo son las susodichas.

Siempre que empezamos la parte operativa  las líneas del programa van dentro del conjunto de Begin […] End.

Dentro del conjunto Begin/End, es donde procederemos a escribir tantas líneas de programa como nos hagan falta. En este apartado es donde pondremos las sentencias, las funciones de formato, y en definitiva todo lo que haya que escribir para crear el programa.

Por último, después de begin introduciremos un clrscr; para que el programa nos borre información del programa cuando vayamos a ejecutarlo. Esta es la información que borra:

Y antes del End siempre se pone un readkey; lo cual sirve para que el ordenador espere hasta que el usuario tecleé una tecla para continuar con el programa.

SIEMPRE después de cada línea de programa debemos poner “ ; ”. Dentro del conjunto

Teclas de acceso rapido

Pantalla de edición y pantalla de ejecución.

Las teclas que hemos usado en los programas de acceso rápido son:

- Alt. + F5: Esta tecla rápida nos permite cambiar de la pantalla de edición a la pantalla de ejecución, y ver qué hace el programa con las instrucciones que le hemos dado.

- ctrl. + F5: Esta tecla sirve para mover la pantalla de edición.

- ctrl. + F9: Con esta tecla rápida nos permite poner el programa en ejecución.

- Alt. + F9: Con la combinación de estas teclas compilamos el programa, y comprobamos si las instrucciones están correctamente hechas.

Si las instrucciones que le damos están correctas nos aparece en pantalla un recuadro, donde pondrá: Press any key. Esto quiere decir que el programa está esperando a que pulses una tecla cualquiera, ya que no tienes ningún error y está todo correcto.

Si por el contrario tienes errores en la pantalla aparecerán los errores que tienes y en qué líneas están:

En la pantalla te pone cuántos errores tienes – en el caso del ejemplo dos – en el apartado “Total errors”, y en la pantalla verde de abajo te escribe cuales son los errores y en qué líneas se encuentran – en este ejemplo el error se encuentra en la línea 36,5 y se trata de que falta un; al final de un writeln- .

- F2: Con esta tecla se guarda el programa que se haya realizado hasta ese momento de forma instantánea.

Sentencias básicas de Pascal.

Program suma;

uses crt;

A continuación una lista de funciones, que pondrás utilizar a lo largo de tus programas y que mas tarde veras aplicado en los ejemplos, y sus significados:

     

FUNCIÓN

SIGNIFICADO

write

Escribir

writeln

Escribir  y  pasar de línea

read

Leer

readln

Leer y pasar de línea

if …then

else

Condicional.  Then:Si se cumple la condición

                      Else:Si no se cumple la condición

While … do

Mientras se cumpla la condición debe realizar el proceso.

Repeat… until

Repite la acción hasta cierta condición o acto.

delay

Pausa el programa  durante ‘x’ segundos

textcolor

Cambia  el color del texto

for

Bucle para un número determinado de ciclos

randomize

Prepara el programa para generar números al azar

random

Elige números al azar

gotoxy

Ir a  una determinada coordenada

lenght

Longitud de caracteres

sqrt

Raíz cuadrada

div

División entera

mod

Resto de la división

round

Redondear el número

trunc

Truncar el número

lenght

Determina  la longitud de las palabras

TABLA DE COLORES

tabla de los códigos de colores para su utilización en los programas:

Colores para primer plano y fondo:

Colores para primer plano:

Constante

Valor

Color

Constante

Valor

Color

Black

0

Negro

Dark grey

8

Gris oscuro

Blue

1

Azul

Light blue

9

Azul claro

Green

2

Verde

Light green

10

Verde claro

Cyan

3

Cyan

Light cyan

11

Cyan claro

Red

4

Rojo

Light red

12

Rojo claro

Magenta

5

Magenta

Light magenta

13

Magenta claro

Brown

6

Marrón

Yellow

14

Amarillo

Light grey

7

Gris claro

white

15

Blanco

Sentencias ‘Avanzadas’.

Tipos de variables

Son varios los tipos de variables que podemos introducir según el programa que vayamos a realizar posteriormente. En esta sección se declaran todas las variables asociando a cada una un identificador, un tipo y, opcionalmente, un valor inicial.

Se pueden combinar varios identificadores en una misma declaración de variable si se trata de variables del mismo tipo. Si se declara valor inicial, afectará a todas.

Las variables pueden ser para números enteros, no enteros, para letras o nombres y constantes.

A continuación explicamos las variables más frecuentes y que hemos utilizado nosotros:

Tipo Real

La variable de tipo Real se expresa en el programa - después de introducir la variable seguida de una coma – con dos puntos (:) y la palabra Real, y punto y coma (;).

Con ello declaramos la variable de tipo real, la cual va de 0 a +∞, es decir, números reales.

En este tipo de variable si queremos que el programa nos de el número con un número determinado de decimales tendremos que introducir K:0:2 – por ejemplo -, siento K el número real, cero el número de cifras significativas, en este caso el cero quería decir que cogiera todas, y 2 el número de decimales que después tendría el número cuando ejecutaras el programa.

Sin embargo, si queremos introducir varias variables del tipo real no hace falta que recurramos a poner en diferentes líneas cada variable seguida de la palabra Real. Podemos poner varias variables con una coma y la siguiente variable. Cómo podemos observar en la foto anterior.

Tipo Entero

La variable de tipo entero se expresa en el programa - después de introducir la variable seguida de una coma – con dos puntos (:) y la palabra Integer, y punto y coma (;).

De este modo declaramos la variable como un número entero, el cual puede ser negativo o positivo, pero siempre entero.

En este tipo de variable no hace falta determinarle cuales son el número de decimales que quieres obtener pues los números enteros son sin decimales.

Los valores de tipo integer se representan con dígitos decimales. No se admiten ni el punto ni la coma. También se pueden usar enteros negativos pero hay que tener en cuenta que un entero negativo como -32, por ejemplo, no es una constante, es una expresión formada por el signo (-) y el valor entero 32. El uso de enteros negativos en expresiones aritméticas complejas puede dar lugar a resultados distintos de los esperados si no se interpreta bien esta cuestión.

Las operaciones de entrada (lectura) permiten suministrar el signo "más" o "menos" con los valores enteros. En las operaciones de salida, el signo de los valores negativos se incluye automáticamente.

Los datos de tipo integer pueden ser sometidos a operaciones aritméticas.

Las variables se pondrán de la misma forma que las de tipo real:

Tipo Carácter

La variable de tipo carácter se expresa en el programa - después de introducir la variable seguida de una coma – con dos puntos (:) y la palabra Char, y punto y coma (;).

El tipo Char depende del código de caracteres empleado por la máquina. El más utilizado es el código ASCII. Una variable o constante tipo Char puede contener un solo carácter especificado entre apóstrofes.

Las variables quedaran en el programa de la siguiente forma:

Tipo Cadena (ansistring)

La única variable de tipo cadena que hemos utilizado es Ansistring. Ésta corresponde a las nuevas cadenas largas, de longitud variable. Estas cadenas son asignadas de forma dinámica, incluyen un contador de referencias, e implementan la técnica de copia por escritura (copy-on-write). El tamaño de tales cadenas es casi ilimitado, pues pueden almacenar hasta dos millardos de caracteres. También están basados en el tipo ANSIChar.

Estructura Array

Es una estructura homogénea de datos de tamaño constante accediendo a cada uno de sus elementos mediante un identificador común y uno o varios índices.

Todos los elementos del array son del mismo tipo. Además el número de ellos no varía durante la ejecución del programa.

En la estructura Array accedemos a un elemento de la estructura mediante un identificador común, el nombre del array, y con el valor que toman uno o varios índices. Al número de índices necesarios para

designar un elemento del array se le denomina dimensión del array.

El número máximo de valores posibles que puede tomar cada índice se denomina rango de esa dimensión o índice. Los valores han de ser consecutivos, por lo que el índice ha de ser de un tipo ordinal.

Los componentes de un "array" pueden estar estructurados. Una variable de tipo "array" cuyos componentes también son "arrays" se llama matriz.

A continuación expondremos un ejemplo de dicha estructura:

Como se puede observar en el ejemplo nosotros hemos utilizado la estructura Array para decirle al programa cuántos son los vectores que utilizaremos para realizar el programa. En este ejemplo han sido 5, por eso pone: array [1…5].

En pascal para decir que lo que queremos exponer va de a hasta b se pone entre medias tres puntos. Siendo a y b los límites que queramos establecer.

Constantes

Una constante es un dato cuyo valor no puede cambiar durante la ejecución del programa. Recibe un valor en el momento de la compilación y este permanece inalterado durante todo el programa.

Las constantes se declaran en una sección que comienza con la palabra reservada const. Después de declarar una constante ya puedes usarla en el cuerpo principal del programa. Tienen varios usos: ser miembro en una expresión, en una comparación, asignar su valor a una variable, etc.

Las constantes tiene lugar a continuación de las variables y la estructura array

Funciones

 Función Text Color:

La función text color cambia el color de fuente de todo lo que imprimas en pantalla hasta que no definas un nuevo color. Estos son los valores que puedes incluir:

Con dichos colores cada vez que se quiera que el texto que vaya a salir

en pantalla lo haga de un determinado color se pondrá:

                      Text color(color deseado);

- Función Write:

El procedimiento write escribe en un registro del archivo el contenido de una variable de memoria definida del mismo tipo.

Cuando el usuario está creando el programa y quiere que salga algún, variable, etc… usará la función write. Dicha función sacará lo que haya dentro de ella en la pantalla de ejecución cuando se esté llevando a cabo el programa.

Si queremos – por ejemplo – el programa pide un dato al usuario y después queremos que aparezca seguido de lo que se ha escrito en esta función, o  queremos que aparezca una variable determinada lo único que hay que hacer es cerrar con ‘, poner una coma y la variable. Si  dicha variable se pone al final del write no hará falta poner nada más, si por el contrario se quiere seguir escribiendo habrá que poner otra coma, una ‘ y continuar escribiendo.

La sintaxis de la función es:

                Write (‘ texto que se quiere que salga en pantalla ‘);

Si se quiere que al ejecutarse el programa escriba en la línea siguiente se tendrá que poner writeln.

- Función Read:

La función read sirve para ingresar en el programa aquellas variables introducidas por el usuario que está utilizando el programa. Dichas variables será las respuestas que se dará a lo que el programa pide y que se utilizan después para seguir con éste.

La sintaxis de la función read es:

                     Read (variable que quieras ingresar en el programa);

Esta función puede ser sustituida incluyendo la variable en la función write.

En esta función también puede readln.

- Función Trunc:

La función trunc se usa para truncar un número real. La sintaxis de dicha función es la siguiente:

                  Trunc (la variable que quieras truncar);

Esta función sólo puede ser utilizada con las variables real. Pues cualquier otro tipo de variable no se podría truncar.

- Función round:

La función round se usa para truncar un número real. La sintaxis de dicha función es la siguiente:

                  round (la variable que quieras redondear);

Esta función sólo puede ser utilizada con las variables real e integer. Pues cualquier otro tipo de variable no se podría redondear.

- Función delay:

El programa Pascal cuando está en ejecución espera a que el usuario presione una tecla para continuar con su función. Una opción a esto es la función delay. Dicha función hace que el programa siga en ejecución cada cierto tiempo. Tiempo que se impondrá en la edición del programa.

El tiempo será programa con una constante. Y después a lo largo del programa se pondrá la siguiente sintaxis para hacerlo después funcionar:

             Delay (t) , siendo t el tiempo.

- Función div:

En Pascal se puede dividir dos números y  te proporciona el resultado, o también se puede divivir y que aparte del resultado se obtenga el resto. Para hacer esto últimos se utiliza la función div.

En resumen en el caso de la división, no importando los números que dividamos, el resultado será un número real, para obtener un resultado entero, debemos de utilizar el operador div.

La sintaxis la exponemos en el siguiente ejemplo:

- Función mod:

Esta función sirve para que Pascal calcule y saque por pantalla el resto de una división en número entero.

A continuación expondremos un ejemplo de dicha función:

- Funciones básicas de cálculo:

Las funciones básicas de pascal para realizar programas son:

Para sumar dos variables se utilizará +, para restarlas -, para multiplicarlas * y para dividirlas /.

- Función Random:

Si queremos realizar números al azar para algún programa con Free Pascal debemos utilizar la función Random.

La sintaxis de dicha función es:

             Randomize;

             P(siendo P la variable):=Random(hasta el número que queremos

                                                                        que elija al azar)

En esta función cuando queremos – por ejemplo – que los números al azar sean del cero al 30 tenemos que poner en el paréntesis 29, es decir, un número menos del que queremos. Y así irá del 0 hasta el número que queramos.

Sin embargo, si quieres que sea a partir del uno debemos sumar 1 fuera del paréntesis. Random(nº)+1;

Funciones y procedimientos

A la hora de hacer un programa ligeramente grande existen determinados procesos que se pueden concebir de forma independiente, y que son más sencillos de resolver que el problema entero. Además, estos suelen ser realizados repetidas veces a lo largo de la ejecución del programa. Estos procesos se pueden agrupar en una función, definida para que no tengamos que repetir una y otra vez ese código en nuestros scripts, sino que simplemente llamamos a la función y ella se encarga de hacer todo lo que debe.

            Así que podemos ver una función como una serie de instrucciones que englobamos dentro de un mismo proceso. Este proceso se podrá luego ejecutar desde cualquier otro sitio con solo llamarlo. Por ejemplo, en una página web puede haber una función para cambiar el color del fondo y desde cualquier punto de la página podríamos llamarla para que nos cambie el color cuando lo deseemos.

Una función es un modulo de un programa separado del cuerpo principal, que realiza una tarea específica y que puede regresar un valor a la parte principal del programa u otra función o procedimiento que la invoque.

Algoritmo de las sentencias:

- Sentencia compuesta:

Es una agrupación de sentencias que pueden ejecutarse secuencialmente como si fuesen una sentencia simple.

                Expresión:     begin

                                           (sentencia) ;

                                            ....

                                       end

- Sentencias condicionales:

Las sentencias condicionales producen la ejecución de una sentencia según el valor de una expresión de control. La sentencia de condición que nosotros hemos dado es:

          Sentencia if-then-else:

La expresión que sigue a IF representa la condición a evaluar. La sentencia que sigue a THEN se ejecuta sólo si el valor de la condición es TRUE; en caso contrario se ejecuta la sentencia que sigue a ELSE (o no se ejecuta ninguna si no hay parte ELSE).  

La sentencia detallada de operaciones es la siguiente:

1. Evaluar la condición.

2. Si es TRUE : ejecutar la parte THEN, y seguir con el paso 4.

3. Si es FALSE : ejecutar la parte ELSE, y seguir con el paso 4.

4. Continuar con el resto del programa. No se puede suponer nada sobre el valor de la condición.

El objeto de una clausula THEN o ELSE puede ser una sentencia simple o estructurada, incluso otra sentencia IF-THEN-ELSE. Este caso se interpreta como si los delimitadores BEGIN y END estuvieran incluidos

Hay que notar que después de THEN y ELSE no debe escribirse el punto y coma. Si se escribe precediendo a ELSE, se terminará  allí la sentencia IF y se producirá un error de compilación.

Cuando se anidan varias sentencias IF, hay que tener en cuenta que la clausula ELSE afecta a la IF-THEN más próxima.

                La sintaxis de dicha sentencia es:

                                                if (expresión lógica) then

                                                           (sentencia1)

                                                else

                                                           (sentencia2)

                Y el algoritmo es:

- Sentencias repetitivas:

Permiten programar la repetición de un grupo de sentencias mediante la construcción denominada CICLO o BUCLE. El grupo de sentencias que tienen que repetirse se llama "rango" del ciclo. El número de veces que ha de repetirse el rango está determinado por la "sentencia de control" de ciclo. También suele existir una sentencia "final de ciclo" que indica el final de las sentencias que componen el rango.

Hay dos formas de ciclo: el ciclo condicional y el ciclo con contador.

En PASCAL, el ciclo condicional se consigue con las sentencias WHILE y REPEAT; y para el ciclo con contador está la sentencia FOR.

            Sentencia While:

                 Indica al ordenador que se ejecuten una o más sentencias  mientras se cumpla una determinada condición. La condición  viene determinada por una variable o expresión booleana.

                       Formato:

                                        while (condición) do

                                                     begin

                                                           (sentencia1);

                                                            ...

                                                          (sentencia2);  

                                                     end;

                                        while (condición) do

                                                          (sentencia);

Esta sentencia comprueba inicialmente si la condición es verdadera. Si la condición es verdadera se ejecutan las  sentencias mientras la condición de su enunciado sea verdadera y finaliza cuando la condición es falsa. Dado que condición puede ser falsa inicialmente, es decir antes de comenzar el bucle, habrá casos en que el bucle no se ejecute.

Las características del bucle while son:

- Se ejecuta mientras la condición sea verdadera, y dentro bucle debe existir, por lo menos, una sentencia que modifique el valor de la variable o expresión, de lo contrario se puede producir una situación de bucle infinito. Si la expresión lógica es falsa al comenzar el bucle, éste no se realizará.

- Para ejecutar un grupo de sentencias, hay que construir una  sentencia compuesta con los delimitadores BEGIN y END.

                 El algoritmo que sigue la sentencia while es el siguiente:

La secuencia detallada de operaciones que sigue dicha sentencia es la siguiente:

1. Evaluar la condición. Si es FALSE, seguir con el paso 4.

2. Ejecutar la sentencia componente, sabiendo que la condición es TRUE.

3. Volver al paso 1.

4. Sabiendo que la condición es FALSE, seguir con el resto del  programa.

          Sentencia REPEAT – UNTIL:

Ejecuta las sentencias comprendidas entre las palabras  reservadas REPEAT y UNTIL hasta que la expresión o variable  sea verdadera.

                               Formato:

                                   repeat

                                            begin

                                                   (Sentencia);

                                                   (Sentencia);

                                                     ...

                                            end;

                                   until (condición);

Las características del bucle repeat son:

- Se ejecutan siempre una vez, por lo menos, y la terminación del bucle se produce cuando el valor de la expresión lógica o condición de salida es verdadera. Se ejecuta hasta que la expresión es verdadera, es decir, se ejecuta mientras la expresión sea falsa.

Entre las palabras reservadas REPEAT y UNTIL se pueden escribir varias sentencias sin necesidad de utilizar los delimitadores BEGIN y END. Aquí actúa UNTIL como indicador de final de rango.

En la ejecución, la expresión es evaluada después de que han sido ejecutadas las sentencias; por tanto, el rango del  bucle se ejecuta una vez, por lo menos, siempre.

A continuación expondremos el logaritmo de dicha sentencia:

              Sentencia FOR:

Repite la ejecución de una o varias sentencias un número fijo de veces previamente establecido.

Necesita una variable de control del bucle que es necesariamente de tipo ordinal, ya que el bucle se ejecuta   mientras la variable de control toma una serie consecutiva de valores de tipo ordinal, comprendidos entre dos valores extremos (inferior y superior).

Las características del bucle FOR son:

Aunque a primera vista pueda resultar más atractivo FOR,   existen limitaciones en su aplicación ya que en el bucle FOR siempre se incrementa o decrementa (de uno en uno) los valores de la variable de control de bucle y no de dos en dos o de tres en tres, o con valores fraccionarios.

El número de iteraciones de un bucle FOR siempre es fijo y  se conoce de antemano: Valor final - Valor inicial +1.

En resumen permite construir bucles repetitivos controlados  por un contador. Con FOR se especifica la ejecuciónrepetitiva de una sentencia según el valor de una variable de control que se incrementa o decrementa automáticamente.

Las sentencias que se repiten (rango del bucle) no deben   modificar el valor de la variable de control.

El test de final de bucle se realiza antes de ejecutarse la sentencia FOR; por tanto, es posible que el bucle no se ejecute ninguna vez.

En la forma TO, si la variable de control tiene un valor menor o igual que el valor final, se ejecuta el bucle y se incrementa el valor de la variable de control. Cuando el valor de la variable de control es mayor que el valor final, se      da por terminada la ejecución del bucle.

Cuando el bucle termina de forma natural (se completa), el valor de la variable de control queda indefinido. Si termina  por la acción de una sentencia GOTO, antes decompletarse, la variable de control retiene el último valor  asignado.

La sentencia FOR proporciona el modo más natural para operar con "arrays".

A continuación expondremos la sintaxis y el algoritmo de dicha sentencia:

for (variable_control := valor_inicial) to (valor_final) do 

                   (sentencia)

Respecto a estas tres sentencias deberemos utilizar la sentencia o estructura FOR cuando se conozca el número de iteraciones, y siempre que la variable de control de bucle sea de tipo ordinal. Se deberá utilizar la estructura REPEAT-UNTIL cuando el bucle se realice por lo menos una vez, y en todos los demás casos utilizar la sentencia WHILE.