Está en la página 1de 42

Trabajo realizado por :

Patricia García Gómez

Francesc Nadal i Aura


1
Índice
1. INTRODUCCIÓN ..................................................................................................................................3
2. ESTRUCTURA GENERAL DE LOS PROGRAMAS .......................................................................4

2
1. Introducción

El pascal es un lenguaje de programación de alto nivel y de


propósito general que ha derivado del “ALGOL-60” y fue diseñado
para enseñar técnicas de programación estructurada. Es de alto nivel
porque su repertorio de instrucciones lo hacen próximo a los
lenguajes humanos y a los procesos humanos de pensamiento. Sus
instrucciones o sentencias se componen de expresiones de apariencia
algebraica y de ciertas palabras inglesas como BEGIN, END, READ,
WRITE, IF, THEN, REPEAT, WHILE, DO.
La programación orientada a objetos o POO (OOP según
sus siglas en inglés) es un paradigma de programación que
usa objetos y sus interacciones, para diseñar aplicaciones y
programas informáticos. Está basado en varias técnicas,
incluyendo herencia, abstracción, polimorfismo y encapsulamiento.
Su uso se popularizó a principios de la década de los años 1990. En la
actualidad, existe variedad de lenguajes de programación que
soportan la orientación a objetos.
En este manual vamos a hablar del programa Free Pascal.
El Free Pascal es un compilador Pascal portable, libre y de código
abierto, que representa una alternativa a los productos comerciales
Turbo Pascal y Delphi.

3
A continuación detallaremos como usar este programa sin tener
noción alguna de programación.

2. 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

4
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

2.1 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.

5
- 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.

6
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 de arriban 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.

2.2 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.

7
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 (;).

8
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
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.

2.3 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:

9
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.

2.4 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

10
2.5 Funciones

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 especifica y que puede regresar un
valor a la parte principal del programa u otra función o procedimiento
que la invoque.
Hay dos tipos de funciones:

2.5.1 Sentencias

La parte ejecutable de un programa está formada por


sentencias que constituyen la expresión de algoritmos que, aplicados
a las estructuras de datos diseñadas, producen acciones enfocadas a
la obtención de resultados útiles.
En Pascal, las sentencias ejecutables se pueden clasificar en simples
y estructuradas.

Sentencias simples: - Asignación.


- Sentencia vacía.
- Llamada a procedimiento.
- Sentencia GOTO.
Sentencias estructuradas: - Sentencia compuesta.
- Condicionales: IF-THEN-ELSE
- Repetitivas: WHILE, REPEAT,
FOR.

Las sentencias estructuradas contienen a sentencias simples o


a otras sentencias estructuradas que deben ser ejecutadas en orden,
de forma repetitiva o cuando se cumplen condiciones determinadas.

11
Una sentencia estructurada se puede usar en cualquier lugar donde
está permitida una sentencia simple. En lo sucesivo se usará el
término sentencia para designar a una sentencia simple o
estructurada indistintamente.

Sentencias simples:
- Asignación:
Reemplaza el valor actual de una variable o función por otro
valor especificado por una expresión.
En tiempo de ejecución, se evalúa la expresión y el resultado se
asigna a la variable representada a la izquierda del signo ( := ).
Como identificador se puede usar el nombre de una función o de
cualquier variable.
La variable (o función) y la expresión deben ser del mismo tipo,
admitiéndose solamente las siguientes excepciones:
1. Que el tipo de la variable sea real y el tipo de la expresión: entero o
un subrango de entero
2. Que el tipo de la expresión sea un subrango del tipo de la variable
y viceversa
Este tipo de sentencia se expresa en Pascal de la forma :=.

- Sentencia vacía:
No produce otro efecto que avanzar el control de la ejecución
del programa a la sentencia siguiente.
Se puede representar por dos delimitadores (;) seguidos.
Un caso de sentencia vacía se presenta cuando se escribe el punto y
coma después del último componente de una sentencia compuesta.
También se suele presentar en las sentencias IF-THEN-ELSE anidadas.

- Sentencia GOTO:
La sentencia GOTO produce la bifurcación incodicional del
control a una sentencia identificada por una etiqueta específica.
La sentencia GOTO debe estar dentro del alcance de declaración de la
etiqueta. Con GOTO no se puede saltar al interior de una sentencia
estructurada desde fuera.
En los tratados sobre PASCAL se recomienda vivamente NO USAR
esta sentencia porque rompe la estructura de los programas. En
algunos compiladores no está implementada.

A continuación expondremos un ejemplo de dicha sentencia:

12
Sentencias estructuradas:
- Sentencia compuesta:
Es una agrupación de sentencias que pueden ejecutarse
secuencialmente como si fuesen una sentencia simple.
Expresión: begin
(sentencia) ;
....
end

Se pueden agrupar sentencias simples y estructuradas, que


pueden ser compuestas a su vez.
Las sentencias componentes deben de estar separadas por el
delimitador (;). No es necesario escribirlo entre la última sentencia y
el delimitador END, pero es recomendable hacerlo para que no se
olvide en caso de añadir otras sentencias posteriormente.

- 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.

13
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 logaritmo es:

14
A continuación expondremos un ejemplo donde se utiliza dicha
sentencia:

- 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.

15
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);

Puedes añadir las sentencias que desees. N será el número


de
sentencia que hayas decidido poner o requieras para
realizar
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
la
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
del
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 logaritmo que sigue la sentencia while es el siguiente:

16
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.

A continuación expondremos un ejemplo de dicha sentencia:

17
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:

18
A continuación expondremos un ejemplo 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).
19
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ón
repetitiva 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 de
completarse, 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)
20
Y por último expondremos un ejemplo de dicha
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.

2.5.2 Funciones de formato

Función Text Color:

21
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);

Y así es como quedará al ejecutar el programa:

22
- 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 ‘);

A continuación expondremos un ejemplo:


En esta foto vemos como hay que expresarlo cuando se está creado
el programa:

Y en esta otra cómo queda cuando se está ejecutando dicho


programa:

Como observamos en el ejemplo anterior, si se quiere que al


ejecutarse el programa escriba en la línea siguiente se tendrá que
poner un ln siguiendo al write.

- Función Read:

23
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 ir seguida de ln.

- 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.

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

24
- Función div:
En Pascal se puede dividir dos números y te proporciona el
resultado, o también se puede vivir 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.
25
Número al azar que va del 0 a X:

Número al azar del 1 a X:

- La función Length:
La función Length proporciona la longitud lógica de una cadena de
caracteres.

3. Teoría llevada a la práctica

3.1 Saludo

Empezamos escribiendo en nombre del programa, en este caso


Saludo, a continuación declaramos la biblioteca crt;
Empezamos el programa con un Begin y en la línea siguiente, escribimos
un clrscr; para que a la hora de ejecutar el programa nos borre toda la
información del FreePascal.
En la línea siguiente escribimos un Write (‘ ’) o Writreln(‘ ’), este
ultimo hace que al escribir lo que le previamente hemos introducido nos
vaya a la siguiente línea del programa; con el texto que queremos que
salga en la pantalla.

26
Acabamos con un readkey;, el programa espera hasta que pulses
cualquier tecla y un End. para finalizar el programa.
Con todo lo descrito anteriormente, el programa una vez ejecutado, nos
escribe en la pantalla lo que hemos introducido en el Write

Esquema del programa

Program Suma;
Uses crt;

Begin
Clrscr;
Write(‘ X ’);
Readkey;
End.

3.2 Suma

Empezamos nombrando el programa como queramos, en este


caso se llamará suma.
Declaramos la biblioteca que vamos a utilizar, crt.
Declaramos 3 variables a utilizar, n1 (1º sumando), n2 (el 2º
sumando) y rs (el resultado de la suma).
Una vez que por pantalla nos salga “Ingrese el 1º número a sumar”
utilizamos un Read(n1) o Readln(n1), este último para ir a la línea
siguiente, para que el programa lo lea y posteriormente los sume.
Después de que nos lea el 2º número (n2), al la variable -rs- le
asignamos con “: = “ la suma de (n1) y (n2) .
Cuando queremos que el programa nos escriba el resultado, dentro
del write escribimos depuse del la parte que va entre las comillas, ‘ X
27
’, escribimos una coma y seguidamente ponemos rs. De esta manera
hacemos que el programa escriba de manera automatica el resultado,
si que nosotros tengamos que hacer nada.
Con todo lo descrito anteriormente el programa nos pide dos numeros
y seguidamente los suma y nos saca el resultado por pantalla.

Estructura programa

Progam Suma;
Uses crt;
Var
N1, n2, rs: integer;

Begin
clrscr;
Write(‘ X ’);
Readln(n1);
Write(‘ X ’);
Readln(n2);
rs: n1+n2;
Write(‘ X ’,rs);
readkey;
End.

3.3 Rectángulo

Empezamos nombrando el programa como queramos, en este


caso se llamará rectángulo.
Declaramos la biblioteca que vamos a utilizar, crt.

28
Declaramos las variables a utilizar: base(b1), altura(h2) y área(ar);
todas de carácter integer (numero entero con signo).
Escribimos una breve introducción de que es lo que el progrma nos va
a hacer.
Escribimos un Writeln(); para dejar una línea en blanco entre linea y
linea que saldra en el programa.
Seguidamente después de un write en el que nos pida que
ingresemos la base, una vez escrita y mediante un readln le decimos
al programa que esa sera la variable b1 [readln(b1)].
Seguidamente le escribimos la altura después que un write nos lo
vuelva a perdir y con un readln hacemos los mismos pasos descritos
para la base.
A la variable ar (area), le asignamos que es la suma de b1(base)
+h2(alura).
Una vez calculada, el programa, mediante un write nos la muestra por
la pantalla.
Con todo lo descrito anteriormente, el programa nos pide que le
ingresemos la base y altura de cualquier rectangulo y el nos calcula
no area.

Estructura del programa

Progam Rectángulo;
Uses crt;
Var
b1, h2, ar: integer;

Begin
clrscr;
Writeln(‘ X ’);
Writeln();
Writeln(‘ X ’);
Write(‘ X ’);
Readln(b1);
Write(‘ X ’);
Readln(h2);
ar:= b1+b2;
Write(‘ X ’,ar);
readkey;
End.

3.4 Círculo

29
Empezamos nombrando el programa como queramos, en este
caso se llamará circulo.
Declaramos la biblioteca que vamos a utilizar, crt.
Declaramos las variables a utilizar: radio(ra), longitud(long), área(ar)
de tipo real.
Definimos una constante (pi) como 3,1415926, para que a la hora de
escribira lo tengamos que poner si valor cada vez y tambien para no
ponerla en en las variable, pues ya la hemos definido anteriormente
como constante.
Empezamos el programa con un write donde nos explica en que
consitira el programa.
Seguidamente después de un write en el que nos pida que
ingresemos la el radio de la circunferencia, utilizamos un read para
que el valor que hemos escrito lo tome como “ra”.
Una vez teniento “ra”, le asigamos a la variable ar(area)
pi*radio*radio (ra^2).
Una vez haya hecho el calculo, le decimos que nos lo escriba por
pantalla.
Despues que que nos haya sacado por pantalla el área de la
circunferencia, le asignamos a la variable long(longitud) 2*pi*radio.
Una ves hecho el cálculo, le decimos que nos lo muestre por la
pantalla.
En los 2 resultados, area y longitud, le decimos al programa que nos
lo ponga solo con 3 decimales significativos de la marena siguiente:
(ar / long) :0:3 .
Con lo descrito anteriormente el programa nos pide que ingresemos
el radio de una circunferencia y seguidamente nos calcula el área y la
longiud.

Esquema del programa

Progam Circle;
Uses crt;

30
Const pi=3.1415926;
Var
ra, long, ar: real;

Begin
clrscr;
Writeln(‘ X ’);
Writeln();
Write(‘ X ’);
Writeln();
Readln(ra);
Ar:=pi*ra*ra;
Write(‘ X ’,ar:0:3);
Writeln();
Long:=2*pi*ra;
Write(‘ X ’,long:0:3);
readkey;
End.

3.5 Positivo

Empezamos nombrando el programa como queramos, en este caso se


llamará Positivo.
Declaramos la biblioteca que vamos a utilizar, crt.
Declaramos las variables a utilizar: num de tipo: integer.
Escribimos en pantalla que el usuario nos ingrese un número.
Con un readln el programa lee el número. Seguidamente imponemos
una condicion, en este caso utilizamos el “If” una sentencia que lo
que hace es: si la variable introducida cumple la condición, haga una
cosa (If X <,>,<=,>= etc Y then) y si no, que haga la otra (else).
En este caso imponemos que si la variable num es >0 que nos escriba
por pantalla que el número es positivo; si el número introducido nos

31
es >0 entonces el programa nos escribe que el número es 0 o
negativo.
Con todo lo destrito anteriormente le programa nos pide que
ingresemos un numero y nos dira si es positivo o negativo.

Estructura del programa

Progam Positivo;
Uses crt;
Var
num: integer;

Begin
clrscr;
Write(‘ X ’);
Readln(num);
If num>0 then
Writeln(‘ X ’);
else
Write(‘ X ’);
readkey;
End.

3.6 Vectores

Empezamos nombrando el programa como queramos, en este


caso se llamará Positivo.
Declaramos la biblioteca que vamos a utilizar, crt.

32
Declaramos las variables a utilizar: vac: array[1..5] of real (hemos
declarado un vector de longitud 5) y n1, n2: real.
Escribimos por pantalla lo que el programa nos va a hacer, en este
caso hacer la media de un vector de 5 elementos.
Introducimos los 5 elementos, a la hora de escribir el read tenemos
que especificarle que el valor introducido es 1 de los 5 elementos de
la variable vec, se especifica de la siguiente manera Readln(vec[1]),
Readln(vec[2]), Readln(vec[3]) hasta 5.
Despues de introducir los 5 elementos del vector, a la variable n1 le
asigamos la suma de los 5 elementos
(vec[1]+vec[2]+vec[3]+vec[4]+vec[5]) y a la variable n2:= n1/5 (la
media de la suma de los elementos vectoriales).
Despues sacamos por pantalla el resultado de la suma vectorial(n1)
con extensión “:0:2” y hacemos lo mismo con la media(n2) tambien
con extensión “:0:2”.
Con todo lo descrito anteriormente, el programa nos pide que
introduzcamos 5 elementos de un vector y posteriormente nos
calculara la suma vertorial y la media.

Estructura del programa

Program MediadleVector:
Uses crt;
Var
vec: array[1..5] of real;
n1, n2 :real;
Begin
clrscr;
Write(‘ X ’);
Write(‘ X ’);
Realln(vec[1]);
Write(‘ X ’);
Realln(vec[2]);
Write(‘ X ’);
Realln(vec[3]);
Write(‘ X ’);
Realln(vec[4]);
Write(‘ X ’);
Realln(vec[5]);
n1:=vec[1]+ vec[2]+ vec[3]+ vec[4]+ vec[5];
n2:=n1/5
Wrtieln(‘ X ’,n1:0:2);
Writeln(‘ X ’,n2:0:2);
Readkey;

End.

3.7 Saludo 2

33
Empezamos nombrando el programa como queramos, en este
caso se llamará Saludo2.
Declaramos la biblioteca que vamos a utilizar, crt.
Declaramos las variables a utilizar: nombre: ansistring (definimos una
cadena de caracteres de longitud variable) y edad: integer.
Empezamos con un write donde nos pregunta por nuestro nombre, lo
introducimos y lo lee mediante un readln.
Seguidamente con otro write nos muestra en pantalla: Hola , nombre,
Como estas?, esto se hace de la siguiente manera _Writeln(‘!Hola¡’,
variable nombre,’ ¿Cómo estas?’);_
Luego hacemos lo mismo con la variable edad, nos la puide, la
introducimos, la lee y en el siguiente read la incluimos para que nos
la muestre por pantalla.
Con todo lo descrito anteriormente, el programa nos piede nuestro
nombre y nuestra edad para luego entablar una “conversación
predefinida” con nuestros datos introducidos.

Estructura del programa

Program Saludo2;
Uses crt;
Var
nombre: ansistring;
edad: integer;
Begin
clrsrc;
Write(‘ X ’);
Readln(nombre);
Writeln(‘ X ’,nombre, ‘ X ’);
Writeln(‘ X ’);
Readln(edad);

34
Writeln(‘ X ’,edad);
Readkey;
End.

3.8 Concatenar

Empezamos nombrando el programa como queramos, en este


caso se llamará Concatenar.
Declaramos la biblioteca que vamos a utilizar, crt.
Declaramos las variables a utilizar: t1, t2, sum :ansistring.
Empezamos con un write donde nos pida que estribamos un texto,
seguidamente un readln lo lee y otro write nos vuelve a pedir un 2º
texto con si correspondiente read.
Despues haber introducido los 2 textos a la variable sum se le asigna
la suma de t1+t2.
Mediante la funcion Gotoxy (una funcion que nos permite llevar lo que
queremos que salga en pantalla a unas coordenadas del eje carteiano
concretas) en este caso queremos llevarlo a la posición (15,9) y lo
hacemos de la siguiente manera Gotoxy(15,9).
Una ves escrito la funcion goto, escribimos un write para que nos
muestre los dos textos juntos y en las coordenadas (15,9).
Con todo lo descrito anteriormente, el programa nos pide que
escribamos 2 textos y posteriormente los junta y los lleva a una
posición determinada del la pantalla.

Estructura del programa

Program Concatenar;
Uses crt;
Var

35
t1, t2, sumv: ansistring;
Begin
clrsrc;
Write(‘ X ’);
Read(t1);
Write(‘ X ’);
Read(t2);
Sum:=t1+t2:
Gotoxy(15,9);
Write(sum);
Readkey;
End.

3.9 Azar

Hemos creado un programa que te dice numero de la loeteria.


Para ello hemos tenido que introducir la función randomize y después
num:=random(100) para que nos sacara número al azar entre 0 y
100.
El resto del programa es lo normal, lo de siempre. Writeln para el
programa pida algo, y readln para que el programa lo identifique y lo
exponga después junto con la variable que le he asignado, que en
este caso ha sido real (números reales).

Estructura del programa

Program Concatenar;
Uses crt;
Var
Nom, num1,num2,num3, num4, num5, num6 :interger;

Begin
clrsrc;
Write(‘ X ’);
Readln(nom);
Writeln(‘ X ’);

36
Writeln();
Randomize;
num1:=random(49)+1;
Writeln(‘ X ’,num1);
num2:=random(49)+1;
Writeln(‘ X ’,num2);
Num3:=random(49)+1;
Writeln(‘ X ’,num3);
Readkey;
End.

3.10 Redondeo

En este ejercicio hemos hecho que el programa nos pida un


número entero y después nos ponga su valor original, su valor
truncado, su valor redondeado. Después nos sume, multiplique y
divida con otro número del mismo tipo de variable, y pidiéndonos dos
números reales nos de la diferencia entre ambos, una división normal,
otra donde después le pedimos el resto y te lo da y el opuesto de
unos de ellos.

37
Para ello primero hemos pedido una variable real con los dos
primeros números. Con el primer número, mediante las funciones
round y trunc hemos conseguido redondearlo y que el programa nos
de su valor así y truncarlo. - antes de eso hemos añadido la función
formato para así poner los decimales que queramos y lo hemos hecho
poniendo el número y :0:2 siendo el segundo número el número de
decimales que hemos querido que tuviera.
Después hemos ingresado el otro número y mediando writeln hemos
hecho la suma, el producto y la división. Todo esto añadiendo la
función de formato, pues son números reales y si queremos que salga
un determinado número de decimales hay que ponerlo.
A continuación hemos introducido dos números enteros con la
variable integer y los hemos ido dividiendo y demás como antes he
dicho y el programa después nos da esos valores. Aquí no se pone la
función formato.

3.11 Mayor de edad

El siguiente ejemplo consiste en que el programa pide el


nombre, la edad y después te dice cómo te llamas y si eres mayor de
edad o no.
Respecto a lo de pedir el nombre y la edad lo hemos hecho como
siempre, con un writeln.
Después para decir si la persona es mayor de edad o no, hemos
utilizado la función if / else. Hemos puesto if K<18 k="">18 te diga
que eres mayor de edad.

38
Los dos procesos de que si eres o no mayor de edad según sea K hay
que ponerlos con un begin y un end para que el programa lo realice
después correctamente.

3.12 Contraseña

Este ejercicio consiste en que el programa te pide el nombre de


usuario, si es Juan que pida una contraseña, y si no es Juan que salga
que el programa se autodestruiría en 10 segundos. Y después si se
introduce el nombre de usuario correcto que te pide la contraseña de
cuatro dígitos y si lo haces bien sale por la pantalla bienvenido y si no
que la contraseña es incorrecta.
Todo esto se ha hecho con la función if / else.

3.13 Cadenas

39
El funcionamiento de este programa es sencillo.
Mediante la funcion “length” podemos contar cuantos caracteres
hemos escrito (contando los espacios).
Este son los pasos:
Nos sale en pantalla que escribamos nuestros nombre.
Con un read lo lee y en el write donde nos diga cuandos caracteres
tiene nuestro nombre incluimos la funcion length de la siguiente
manera:
Write(‘Tu nombre completo tiene : ‘, length(nom)’letras’);.

Estructura del programa

Begin
Clrscr;
Writeln(‘ X ’);
Read(nom);
Write(‘ X ’, length(nom),’ X ’);
Readkey;
End.

3.14 Sentencia For

40
La sentencia for nos permite que desde un intervalo numerico haga
una cosa y cuando llege al final podemos decirle que haga lo
contrario a lo anterior con un dowto.
El programa que hemos tomado como ejemplo es que la funcion nos
muestre por pantalla numeros del 1 al 10 y que cuando llege al 10
que lo haga de manera viceversa, del 10 al 1.
Tambien hemos tenido que usar un Begin dentro de otro debido a que
dentro de un for solo puede haber escrito una linea de programa pero
si dentro del for empezamos un begin podemos escribir tantas lineas
de programa como queramos.
La funcion downto es la mencionada anteriormente (desde 10
hasta1).

3.15 Letra

Mediante este programa podemos averiguar el codigo Ascii.

41
En este caso hemos averiguado el codigo Ascii de las letras desde la a
hasta la z (mayusculas y minusculas).
Todo esto lo hemos hecho con la funcion chr y la funcion ord.

42