Professional Documents
Culture Documents
1. Lazarus y Pascal
Lazarus es un Entorno de programación, no un lenguaje. Son las ventanas y herramientas que
tenemos disponibles. Está basado en el lenguaje Object Pascal, que se utiliza para escribir el
Lazarus reduce al mínimo la cantidad de código que es necesario escribir para construir un
programa, gracias a la utilización de componentes. Estos son objetos que tienen ya un
comportamiento preprogramado, que nosotros utilizamos como ladrillos para armar las
aplicaciones.
Las tareas recurrentes, reutilizables, vienen pre-programadas de antemano, como por ejemplo
hacer que un botón se “hunda” cuando se hace click sobre él. Pero para indicar qué debe hacer
nuestro programa al hundirse el botón... necesitamos escribir las instrucciones adecuadas.
Lazarus utiliza el lenguaje Pascal, pero podemos encontrar otros entornos muy parecidos que
utilizan C++ (C++ Builder) o Java (JBuilder), por ejemplo. Este código se ejecuta en respuesta a
los eventos que ocurren en el sistema, como por ejemplo la anterior pulsación del botón.
Esta obra está bajo una
2. El lenguaje Pascal
En un lenguaje no estructurado (como BASIC) un programa es una secuencia de líneas. En un
lenguaje estructurado (como Pascal), el programa se compone de una serie de bloques o
estructuras. A su vez, cada una de estas estructuras se compone de líneas de código.
En un lenguaje no estructurado, el flujo de la ejecución pasa de una línea a la siguiente; a menos
que la instrucción actual indique un salto o bifurcación a otra línea diferente, alterando la
secuencia de órdenes.
En un lenguaje estructurado, se ejecutan secuencialmente los bloques. A su vez dentro de los
bloques se ejecuta línea por línea, pero sin posibilidad de “saltar” de un bloque a otro en cualquier
momento. Debemos terminar la ejecución de un bloque para pasar al siguiente.
Tenemos la posibilidad de anidar bloques, pero siguiendo a rajatabla la regla que dice que cada
bloque debe estar contenido completamente dentro de otro, o totalmente fuera.
Podemos llamar a un bloque desde otro, pero este segundo bloque deberá terminar su ejecución
antes de volver al original que lo llamó; esencialmente, podemos considerar que el segundo
bloque estaba dentro del primero.
El siguiente gráfico muestra la diferencia fundamental entre los dos tipos de lenguajes:
1
Se trata de una alternativa libre y gratuita, desarrollada como proyecto de software libre a partir de Free
Pascal.
2
Recordemos que los eventos son las cosas que suceden en el entorno: el movimiento del ratón, la
presión de una tecla, etc.
2/26
Pascal
programa que lo hace compilador. Es necesario compilar el programa entero luego de cada
modificación, lo que en ocasiones puede demorar el proceso. La gran ventaja de este tipo de
lenguajes es la velocidad de ejecución; dado que el procesador no debe consumir tiempo
traduciendo las líneas escritas porque ese paso ya ha sido cumplido, el código se ejecuta
directamente.
Pascal (el lenguaje que utiliza Lazarus) es un lenguaje compilado. No obstante, el compilador es
sumamente rápido; la generación del ejecutable no demanda mucho tiempo y permite probar
rápidamente los cambios introducidos. Además, como veremos luego, el programa se divide en
unidades funcionales, cada una de las cuales se compila por separado. Al modificar una parte del
programa, sólo hay que recompilar las unidades que se vean afectadas; esto acelera aún más el
proceso de traducción.
3
Existe también lo que podríamos considerar una tercera forma de compilación, a medio camino
entre las otras dos: la compilación de un código intermedio independiente del procesador entre el código
máquina y el lenguaje de alto nivel, ejecutado por un núcleo intérprete especial. Esta es la técnica utilizada
por Java.
3/26
Pascal
Ejemplo:
Un programa de nombre Ejemplo debería tener al menos las siguientes líneas:
Program Ejemplo;
Begin
End.
Este programa no hace nada; sin embargo, el compilador creará un archivo ejecutable sin señales
de error.
Este tipo de programas se denominan aplicaciones de consola, y en Windows se abrirá una
ventana de DOS donde correrá nuestro programa. No es el tipo de programas que uno espera
crear con Lazarus.
La sintaxis general de un programa en Pascal es la siguiente:
CONST
Declaración de constantes;
TYPE
Declaración de tipos de datos definidos por el usuario;
VAR
Esta obra está bajo una
Declaración de variables;
4/26
Pascal
Figura 2
5/26
Pascal
El archivo de Proyecto de Consola cuya extensión es .LPI y el archivo .PAS que contiene el código
de nuestro programa.
Figura 3
Esta obra está bajo una
7. Variables y Constantes
Los datos de un programa se almacenan en posiciones de memoria. Dependiendo si esos valores
pueden cambiar en el transcurso de un programa o no, Pascal clasifica estas posiciones como
Variables o Constantes respectivamente.
Los nombres utilizados para identificar constantes y variables deben seguir ciertas reglas:
Pueden tener hasta 32 caracteres de longitud.
Deben empezar con una letra o guión bajo (_), y puede continuar con una secuencia de
números, letras y/o guión bajo (_).
No se distinguen entre mayúsculas y minúsculas.
Las variables o constantes deben ser declaradas antes de ser utilizadas, en secciones destinadas a
tal efecto: la cláusula var indica que comienza una zona de declaración de variables, mientras la
cláusula const se usa para especificar la zona de declaración de constantes.
Las variables se declararán de la siguiente forma:
Var
nombreVar1: TipoDato;
nombreVar2: TipoDato;
6/26
Pascal
Al declarar las variables debemos especificar claramente el tipo de datos que contendrán, porque
el compilador necesita esta información para traducir el programa a código de máquina (por
ejemplo, para saber cuanto espacio reservar para cada variable).
Ejemplo:
En el programa Ejemplo utilizaremos una variable de tipo entero que llamaremos a. Entonces,
agregamos al programa anterior la sección de declaración de variables indicada por la cláusula
var:
Program Ejemplo;
Var
a:Integer;
Begin {Cuerpo del programa principal}
End.
al encontrar el identificador de otra zona. En el ejemplo anterior la cláusula begin indica que
comienza el bloque principal del programa, terminando por lo tanto la zona de declaración de
variables.
Podemos definir más de una variable del mismo tipo en una sola línea, por ejemplo si en el listado
anterior queremos otra variable b también de tipo entero podríamos escribirlo de cualquiera de las
formas siguientes:
Begin Begin
End. End.
Variables Globales: se agregará una sección var antes de la cláusula begin y después de la
cláusula uses del programa, para declarar allí las variables globales.
Variables Locales: se agregará una nueva sección var en el procedimiento en cuestión, después
de la palabra procedure y antes de la palabra begin del mismo, análogo para las funciones.
Nota: más adelante, en este mismo apunte, profundizaremos este tema.
8. Tipos de datos
Estos son algunos de los diferentes tipos de datos que se les puede asignar a las variables en
TipoDato (para mayor detalle sobre ver Apunte 2 – Object Pascal: Tipos de Datos).
Tamaño
Tipo Valores que puede contener
en Bytes
Byte Números enteros entre 0 y 255 1
7/26
Pascal
Números en coma flotante con hasta 8 dígitos. 4
Single
1.5E-45 .. 3.4E38
Números en coma flotante con hasta 16 dígitos. 8
Double
5.0E-324 .. 1.7E308
Boolean True o False 1
El lenguaje Pascal exige una concordancia exacta en los tipos de datos que intervengan en una
misma expresión. Esto significa que no podemos, por ejemplo, sumar una palabra con un número
(¡algo que por otro lado nos suena bastante lógico!).
Se dice que es un lenguaje fuertemente tipificado (o tipado) ya que obliga a declarar cada una
de las variables mencionadas dentro de un programa. En los tipos numéricos se puede asignar un
valor de un tipo a una variable de un tipo superior, que lo contenga. Por ejemplo podemos asignar
inversa.
será algún dato del tipo que esa variable pueda guardar.
Supongamos que definí las siguientes variables y una sección var en mi programa:
var
numero : integer;
pepe : integer;
esCero : Boolean;
miFrase : String;
Entonces, debajo del begin del programa, se podrán hacer las siguientes asignaciones de valores
válidas, por ejemplo:
numero := 56; {Aquí la variable numero toma el valor 56}
pepe := numero;
esCero := True;
miFrase := ‘Esto es un texto’;
Pero no serán válidas las siguientes asignaciones:
pepe := ‘Hola’;
numero := 3,14;
esCero := 6;
miFrase := 34;
8/26
Pascal
variable1 := 67;
Hay ocasiones en que tendremos la necesidad de agrupar las sentencias en un bloque,
necesitaremos entonces crear una instrucción compuesta: un bloque begin..end.
Una sola
Tres
instrucción
instrucciones El punto y coma de la
compuesta.
simples. sentencia anterior a la
cláusula END no es
necesario.
Ejemplo:
La sentencia if..then va seguida de una sola instrucción. Si debemos ejecutar varios pasos,
debemos crear una instrucción compuesta encerrando el bloque entre begin y end. Lo mismo
Las expresiones de Pascal pueden utilizar cualquiera de los símbolos convencionales para las
operaciones básicas: +, -, *, /, además de funciones (porciones de código) que devuelvan un
valor de tipo compatible.
Ejemplo
Dadas las siguientes variables…
var
a: integer;
b: real;
c: single;
… podemos escribir las siguientes expresiones:
b:= a*3;
c:= Sin(a*Pi/180); {seno en grados; el resultado siempre es real}
b:= Sqrt(b*23-a*a); {Raíz cuadrada; el resultado siempre es real}
9/26
Pascal
En los dos últimos casos, no se podría asignar el resultado de la operación a la variable a porque
por definición, las funciones utilizadas devuelven valores reales.
Como los operadores + y – tienen la misma precedencia, se evaluará primero el término de más a
la izquierda, es decir, primero X – Y, luego al resultado de la resta se le sumará Z.
Podemos usar paréntesis para determinar otro orden en el cálculo de la expresión, por ejemplo,
en la expresión (X + Y) * Z, podremos sumar primero y luego multiplicar el resultado de dicha
suma por Z.
Supongamos la expresión X = Y or X = Z.
La interpretación deseada de dicha expresión es claramente (X = Y) or (X = Z); pero sin
paréntesis, Pascal usará las reglas de precedencia, por lo que entenderá (X = (Y or X)) = Z.
Var
b: real;
begin
b:= Sqrt(Sin(25*Pi/180));{b es igual al cuadrado de seno de 25 grados}
10/26
Pascal
function Sin(X: Extended): Extended;
Vemos que entre paréntesis se declara una variable: esta variable existe únicamente dentro de la
función, e indica el valor que tenemos que entregar a la función para su proceso. En este caso,
cualquier valor que pasemos a la función entre los paréntesis se asignará dentro de la función a
una variable X. A nosotros, usuarios de la función, no nos interesan los nombres que ésta les
asigna a sus parámetros; únicamente tenemos que tener cuidado de enviar el tipo correcto de
dato para cada parámetro.
El tipo de dato que se indica después de los dos puntos finales nos dice qué tipo de datos
devuelve la función.
Las funciones pueden esperar más de un parámetro; en este caso, en la definición se listan todos
y cuando la llamamos debemos enviar cada dato en el orden que se define.
Lazarus trae definidas un montón de funciones como las anteriores. Están organizadas en
distintos módulos -unidades- por lo que para utilizarlas debemos incluir la unidad correspondiente
en nuestro código (sección USES de un programa en Object Lazarus).
write(“n”);
write(“a”);
writeln(“n”);
writeln(“a”);
write(numero);
writeLn();
11/26
Pascal
Imprimirá por pantalla:
Esta sentencia lo que hace es esperar que el usuario ingrese un valor (o más) y cuando éste
apriete Enter, guarda el valor ingresado en la variable que le hemos dado (nombrevar).
Atención!! Para el ejemplo del read anterior, si el usuario ingresara más de un valor antes de
presionar Enter, se asignaría el primer valor a la variable nombrevar y los valores restantes
quedarían pendientes en un buffer de memoria asignándoselos a las próximas sentencias read que
aparezcan. En ocasiones esto suelo provocar comportamientos inesperados en nuestros
programas.
Para evitar que quede algún dato pendiente en el buffer de memoria se utiliza la sentencia:
ReadLn(nombrevar);
Esta obra está bajo una
la cual asigna a nombrevar un dato ingresado por el usuario y luego “limpia”, “borra” el buffer de
memoria (dedicado para almacenar la entrada de datos).
Supongamos que deseamos que el usuario ingrese dos números, los cuales guardaremos en
variables: (asumimos definidas en su correspondiente sección var las variables que aparecen)
write(‘Ingrese el primer numero:’);
readln(num1);
write(‘Ingrese el segundo numero:’);
readln(num2);
12/26
Pascal
Notar:
El else es opcional.
EJEMPLO 1 – IF SIMPLE
Program Ejemplo1;
var
n : integer;
begin
writeln(‘Ingrese un número:’);
readln(n);
If ((n>1) and (n< 10)) then
write(‘Ha ingresado un número mayor que 1 y menor que 10’);
end.
NOTA: observe el uso del punto y coma final sólo después de la última sentencia. Al momento de
encontrar este signo de puntuación (si no se está dentro de una sentencia compuesta) el
compilador asume que termina la instrucción if. Por lo tanto antes del else no va el punto y coma
(de lo contrario el compilador terminaría la orden if en ese momento y se encontraría con una
sentencia else que no tiene significado por sí sola).
13/26
Pascal
La sintaxis es la siguiente:
EJEMPLO 3 – CASE
Se puede indicar un rango de valores escribiendo el primer valor seguido por dos puntos y luego
el último valor del rango:
Program Ejemplo3;
var
n: integer;
begin
ReadLn(n);
case n of
1..9: Write('El número ingresado esta entre 1 y 9');
Esta obra está bajo una
10..20: Begin
Write('El número ingresado esta entre 10 y 20');
Write('El número ingresado tiene dos dígitos');
End;
0: Write('El número ingresado es cero');
else
Write('El número ingresado es mayor que 20');
end;
end.
EJEMPLO 4 – CASE
También se puede indicar la misma acción para varios valores, simplemente listándolos en la
misma línea:
Program Ejemplo4;
var
n: integer;
begin
ReadLn (n);
case n of
1,3,5,7,9: Write('El número ingresado es impar');
2,4,6,8: Write('El número ingresado es par');
0: Write('El número ingresado es cero');
else
Write('Error! El número debía ser de una sola cifra');
end;
end.
14/26
Pascal
EJEMPLO 5 – CASE
Program Ejemplo6;
var
a: char;
begin
ReadLn(a);
case a of
'a','e','i','o','u': Write('La letra es una vocal');
else
Write('No es una vocal');
end;
end.
sentencia;
Notas:
Esta instrucción ejecuta una sola sentencia, que puede ser simple o compuesta.
La variableContador debe ser de tipo ordinal y no puede alterarse dentro del bloque a repetir
(no puede aparecer del lado izquierdo de una asignación).
Al contrario de otros lenguajes, no es posible especificar un paso diferente de uno.
La comprobación del límite se produce antes de ejecutar la sentencia interna, por lo que puede
ser que el bucle no se ejecute nunca.
En el caso de TO, si el valor inicial es mayor que el valor final, la sentencia FOR no se ejecuta
ninguna vez. En el caso de DOWNTO, si el valor inicial es menor que el valor final, la sentencia
FOR no se ejecuta ninguna vez. El valor de la variable de control es indefinido al finalizar
normalmente la sentencia FOR.
15/26
Pascal
La variable de control debe declararse igual que cualquier otra variable y que su tipo debe ser
ordinal.
EJEMPLO 6 – FOR
Este programa mostrará todos los números desde el 1 hasta el 35 en pantalla, uno por línea, en
forma creciente (1, 2, 3, 4…)
Program Ejemplo7;
var
i : integer;
begin
for i := 1 to 35 do
writeln(i);
end.
Este programa mostrará todos los números desde el 2 hasta el 40 en pantalla, uno por línea, en
forma decreciente (40, 39, 38, 37… 2)
Program Ejemplo8;
var
k : integer;
begin
for k := 40 downto 2 do
writeln(k);
end.
Esta obra está bajo una
while ( condición ) do
sentencia;
EJEMPLO 8 - WHILE
Este programa suma los 10 primeros números naturales.
Notemos que en este ejemplo fue necesario utilizar begin..end porque dentro del bucle se debían
ejecutar dos sentencias.
Program SumaNaturales;
var
suma,n : integer;
begin
16/26
Pascal
n:=1;
suma := 0;
while (n<=10) do
begin
suma := suma + n;
n:=n+1
end;
writeln(‘La suma desde 1 hasta 10 es igual a: ’, suma);
end.
repeat
until ( condición );
La condición que va a controlar la ejecución del bucle se evalúa al final, entrando al bucle al
menos una vez.
Se comienza el bucle ejecutando las sentencias (no se comprueba la condición hasta el final) y al
llegar a la cláusula until (hasta) comprueba si se cumple la condición. Si se cumple (la condición
devuelve verdadero) se sale del bucle; caso contrario se repite desde la sentencia1.
Esta obra está bajo una
EJEMPLO 9 – REPEAT/UNTIL
Este programa suma todos los números ingresados por el usuario. Cuando el usuario ingresa 0
significa que ya no ingresará más y el programa ha de mostrar la suma total.
Program SumarNumeros;
var
suma, n : integer;
begin
suma := 0;
repeat
ReadLn(n)
suma := suma + n;
until n = 0;
writeln(‘La suma es igual a: ’, suma);
end.
17/26
Pascal
Un subprograma (procedimiento o función) es, entonces, un conjunto de instrucciones al que se
asigna un nombre. Este grupo de instrucciones realiza una tarea específica y se ejecuta cada vez
que se invoca su nombre (invocación/llamada a subprograma). Por ejemplo, los
procedimientos predefinidos READLN y WRITELN están diseñados para realizar operaciones de
entrada y salida.
El proceso de descomposición de un problema en módulos se conoce como modularización y a
la programación relativa a ellos programación modular.
Un subprograma se declara una sola vez pero puede ser utilizado, mediante llamadas, todas las
veces que se quiera desde el resto de código de nuestro programa. La finalidad principal es evitar
la repetición de un código que va a ser usado varias veces, aislándolo y asignándole un nombre
que facilite tanto su ejecución repetida como su posible modificación.
Una rutina es independiente del resto del programa por lo que también facilita el diseño, el
seguimiento y la corrección de un programa. Pueden además almacenarse independientemente en
colecciones llamadas librerías o unidades, lo cual permite que sean utilizadas en cualquier
programa. De hecho, existen funciones y procedimientos que vienen ya construidos para el
lenguaje de programación Object Pascal (Cos, Sin, Exp, ReadLn, WriteLn, ClrScr...), que
están almacenados en distintas unidades (System, Crt, Graph...) y que el programador puede
emplear en sus programas4.
Tanto procedimientos como funciones deben estar declarados antes de poder ser
referenciados.
Ventajas de la programación modular:
Los subalgoritmos permiten a los programadores desarrollar soluciones de problemas
complejos, a través del método descendente.
Los programas son más fáciles de comprender, debido a la independencia entre las unidades de
programas.
Esta obra está bajo una
Los subprogramas se escriben una sola vez, pero puede usarse en muchos puntos de un
programa.
Con el uso de los subprogramas se facilita la localización de un error.
El tamaño total del programa será menor que si se escribiera el código completo de la operación
cada vez que se necesita.
M SentenciaMn-1
P SentenciaP1
…
SentenciaP1
…
SentenciaM n-1
P …
SentenciaPFin
SentenciaM n+1
SentenciaPFin SentenciaMn+1
…
Procedimientos
Un procedimiento, como ya dijimos, es un módulo que forma parte de un programa y realiza una
tarea específica.
4
Para leer acerca de cómo crear módulos véase: Apunte 4 –Creación de Unidades.pdf
18/26
Pascal
Un procedimiento puede devolver 0, 1 ó más datos de salida.
La declaración/definición de un procedimiento tiene la siguiente forma:
Un procedimiento puede tener sus propias variables las cuales se declaran en la sección var del
propio procedimiento. Estas se llaman variables locales. El espacio de memoria para estas
ejecución) del mismo. Así, las variables locales para un procedimiento sólo se pueden usar en el
cuerpo del procedimiento y no en el cuerpo principal del programa.
Un procedimiento se invoca en el programa principal o en otros subprogramas escribiendo su
nombre:
nombreProc(parámetros actuales);
Funciones
Una función, así como un procedimiento, es un módulo que forma parte de un programa y realiza
una tarea específica. En particular, una función se asemeja bastante a la idea matemática de
función con argumentos: calcula como resultado un valor simple y único a partir de otros valores
dados como argumentos.
19/26
Pascal
El identificador de la función asume un valor, por lo tanto, dicho nombre debe tener asociado
un tipo de dato.
La declaración/definición de una función tiene la siguiente forma: Tipo de dato
del resultado
que devuelve
Function NombreFunc (lista de parámetros formales): Tipo; la función.
<declaración de variables, procedimientos y funciones locales>
Begin
<sentencias del cuerpo de la función>
NombreFunc := valor resultado de la función
End;
exponente
Ejemplo: función para calcular base (Por ejemplo: 23=8)
x = potencia(2 , 3)
Es obligatorio que haya el mismo número de parámetros formales que actuales, y además
estos deben ser del mismo tipo (o un tipo compatible) y aparecer en el mismo orden, ya que
la correspondencia se realiza según la posición en la que aparecen.
20/26
Pascal
Función versus Procedimiento
Semejanzas
Una función normalmente devuelven un solo valor a la unidad de programa (programa principal
u otro subprograma) que la referencia. Los procedimientos suelen devolver más de un valor, o
pueden no devolver ninguno si solamente realizan alguna tarea, como una operación de salida.
Mientras que a un procedimiento se le llama mediante una instrucción de llamada a
procedimiento, a una función se la llama usando su nombre en una expresión. Es decir:
* Una función puede ser utilizada dentro de una sentencia de asignación, o dentro de una
condición que esté en cualquiera de las estructuras while, if, etc.
* Una llamada a procedimiento, en cambio, va en una sentencia exclusiva para llamarlo (y no
se puede poner ni en una asignación, ni en condiciones booleanas), como por ejemplo, el
procedimiento write para escribir mensajes en pantalla.
Puesto que se debe asociar un valor al número de una función, también se le debe asociar un
tipo. Por tanto, la cabecera de una función debe incluir un identificador de tipo que especifique
el tipo del resultado. Sin embargo, no se asocia ningún valor con el nombre de un
Esta obra está bajo una
21/26
Pascal
Paso por VALOR
El paso de parámetros por valor consiste en enviar una COPIA del valor de la variable al
subprograma llamado/invocado.
Los cambios a la copia no afectan el valor de la variable original una vez que se terminó de
ejecutar el subprograma. De esta manera se asegura que el valor de la variable original sólo
puede ser modificado por el módulo que la declaró.
Un parámetro por valor actúa como una variable local del subprograma (con la particularidad de
que su valor será inicializado por el módulo llamador).
En Object Pascal, por defecto, los parámetros se consideran pasados por valor.
Los cambios que se hagan sobre a un parámetro por referencia persistirán después de la
ejecución de la función.
Aquí la/el función/procedimiento recibe exactamente la variable enviada, no una copia; si algo se
le hace al parámetro, se le está haciendo directamente a la variable.
En Object Pascal a los parámetros pasados por referencia se les antepone la cláusula VAR.
Ejemplo:
Program UnoDosTres;
Var
T,Z: Integer;
Esta obra está bajo una
22/26
Pascal
20. Ambito (o tiempo de vida) de variables y demás identificadores
Según el lugar donde son declaradas puede haber dos tipos de variables:
Si dos variables, una global y una local, tienen el mismo nombre, la local prevalecerá sobre la
global dentro del subprograma en que ha sido declarada.
El uso de variables locales tiene muchas ventajas. En particular, hace a los subprogramas
independientes, con la comunicación entre el programa principal y los subprogramas manipulados
necesitamos conocer lo que hace y no tenemos que estar preocupados por su diseño, es decir,
cómo están programados.
Ahora bien, esta noción de “local” y “global” es extensiva a cualquier identificador (variables,
constantes, procedimientos, funciones y tipos).
de la siguiente manera:
Identificadores locales de F1 a, i
Identificadores locales de F2 t, m
23/26
Pascal
F1 pero no al revés, ya que la función F2 se declara después que F1. Es decir, sólo puede
emplearse lo que esté previamente declarado en el código del programa.
Anidamiento de rutinas (procedimientos y/o funciones)
Por otro lado, en un programa pueden existir subrutinas definidas dentro de otras. Esto es lo que
se conoce como anidamiento y da lugar a la existencia de una jerarquía de niveles y de una serie
de reglas que permiten determinar qué elementos se pueden utilizar en un determinado punto del
programa. Por ejemplo, en el programa mostrado a continuación se han declarado varias rutinas
anidadas.
En el programa principal pueden emplearse las
variables globales a y b y los procedimientos,
también globales, pro1 y pro4.
En el cuerpo del procedimiento pro1 pueden
utilizarse el parámetro formal c, las variables
locales d y e y los procedimientos locales
24/26
Pascal
Power(b, e) Devuelve be, se debe incorporar en la parte uses del programa la palabra Math,
que hace referencia a una unit donde está implementada la función power.
Dec(n) Decrementa una variable del tipo integer. (procedimiento)
Inc(n) Incrementa una variable del tipo integer. (procedimiento)
Succ(n) Devuelve el sucesor de un valor entero.
Int(x) Devuelve la parte entera de un número real x.
Trunc(x) Trunca un número real x a un entero.
Round(x) Devuelve el entero más próximo al valor de x; si la parte decimal de x es menor que
0.5 devuelve lo mismo que trunc (x), el entero inferior. Si la parte decimal de x es mayor que
0.5 devuelve el entero siguiente9.
Val(s) Convierte de String a formato numérico; devuelve el valor numérico de una cadena de
caracteres s, ó 0 si la cadena s no contiene un número válido.
25/26
Esta obra está bajo una
Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional
Pascal
26/26
Introducción a la Programación – Prof. Laura Kees – Año 2015