Академический Документы
Профессиональный Документы
Культура Документы
2
1. Introducción
3
A continuación detallaremos como usar este programa sin tener
noción alguna de programación.
siguiente:
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.
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.
6
Si por el contrario tienes errores en la pantalla aparecerán los errores
que tienes y en qué líneas están:
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.
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.
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.
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
10
2.5 Funciones
2.5.1 Sentencias
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.
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
- 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.
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);
16
La secuencia detallada de operaciones que sigue dicha
sentencia es la siguiente:
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);
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".
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);
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 ‘);
- 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);
- Función Trunc:
La función trunc se usa para truncar un número real. La sintaxis de
dicha función es la siguiente:
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:
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.
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:
- 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:
- La función Length:
La función Length proporciona la longitud lógica de una cadena de
caracteres.
3.1 Saludo
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
Program Suma;
Uses crt;
Begin
Clrscr;
Write(‘ X ’);
Readkey;
End.
3.2 Suma
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
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.
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.
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
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.
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
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.
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.
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
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
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
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.
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
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’);.
Begin
Clrscr;
Writeln(‘ X ’);
Read(nom);
Write(‘ X ’, length(nom),’ X ’);
Readkey;
End.
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
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