Vous êtes sur la page 1sur 96

Pascal

Es un lenguaje de alto nivel desarrollado en


Alemania a fines de la dcada del 70 por Niklaus
Wirth. La idea fue crear un lenguaje que permitiese
la enseanza y el aprendizaje de la programacin. A
tal fin, la sintaxis del Pascal es muy similar a la del
idioma ingls y los programas son fciles de leer e
interpretar. Adems, Pascal no toma en
consideracin el hecho que las letras estn en
maysculas o minsculas.

Compiladores
En el Laboratorio de Informtica se emplea el
compilador de Pascal de Borland, que ofrece
muchas facilidades para el aprendizaje, como el
realzado de sintaxis y la ubicacin de los errores en
la lnea de cdigo en que ocurren.
Para uso en la casa, existen varios compiladores
gratis en Internet; se recomienda BloodShed
DevPascal, disponible en http://www.bloodshed.nu.
Algunos detalles sobre su uso aparecen en http
://www.intec.edu.do/~ceis/pascal/

Tres conceptos fundamentales


Antes de ver en mayor detalle el lenguaje de
programacin Pascal, es bueno tener claro que son :
las constantes,
las variables y
los identificadores.
Para eso debe tener una nocin (por vaga que sea)
de programa.

Qu es un programa?
Un programa no es ms que una serie de lneas de
texto, cada una de las cuales contiene alguna
definicin sobre la informacin a ser usada en el
programa o bien alguna instruccin que se desea que
la computadora ejecute.

Definiciones (1)
Constante:
como su nombre lo indica, es un valor que a lo
largo de la ejecucin de un programa no vara.
Variable:
este es un espacio o contenedor, es como un vaso,
que puede almacenar diversos valores durante la
ejecucin del programa.

Definiciones (2)
Identificador:
Es una combinacin de letras, nmeros y el caracter
'_', pudiendo empezar con cualquiera de ellos
excepto nmeros.
Es un concepto muy importante en Pascal, ya que
sirve para nombrar las constantes, las variables e
incluso el mismo programa.

Tipos de Datos
En Pascal se debe especificar a la computadora qu
clase de datos va a contener una variable.
A simple vista, podemos distinguir entre una palabra
como 'Hola' o un nmero como 47.
La computadora no puede hacer esto, as que se le
debe decir qu tipo de datos se pondr en cada
variable. Una vez hecho esto, no puede almacenarse
un valor de cualquier tipo en esa variable, sino de
algunos tipos

Tipos de Datos (I)


Integer: nmero entero entre -32,768 y
32,767
LongInt: nmero entero entre -2*10^31 y
2*10^31 - 1
Real: nmero con coma decimal entre
2.9*10-39^y 1.7*10^38
String: cadena de caracteres (conjunto de
nmeros, letras, smbolos; palabras y
frases)

Tipos de Datos (II)

Char: un caracter (un dgito o una


letra o un smbolo)
Boolean: Pueden tomar dos valores True (verdadero)
False (falso).

Existen otros tipos de datos

Tipos Ordinales
Un tipo ordinal representa una secuencia ordenada
de valores individuales, a los que se pueden aplicar
los conceptos de predecesor y sucesor (Ej. enteros,
carcter, booleanos).
En cada tipo de datos ordinales hay un primer valor
y un ltimo valor.

Tipos Definidos por el Usuario


Existen dos tipos de datos simples definidos por el
usuario:
Tipos enumerados: Se componen de una lista de
identificadores encerrados entre parntesis y
separados por comas.
Tipos subrango: Es un subconjunto de un tipo
ordinal (enteros, boolean, carcter y enumerado)
que se especifica indicando el primero y el ltimo
elemento del conjunto.

Tipos Enumerados
Los tipos enumerados son ordinales. Cada uno
lleva asociado un nmero entero: al primero se le
asigna el O, al segundo un 1, y as sucesivamente,
por lo que no es independiente el orden de
declaracin.
Un valor de tipo enumerado no puede pertenecer
a dos declaraciones de tipo distintas y no pueden
leerse desde teclado, ni escribirse en pantalla.

Tipos Enumerados. Ejemplos


Type

Estaciones = (primavera, verano, otoo, invierno);


Colores = (rojo, amarillo, verde, azul, violeta);

Tipos Subrango. Ejemplos


Notacin:
Type
Identificador = primerelemento..ultimoelemento;
Ejemplos:
Type Dias = 1..31;
Meses = 1..12;

Asignacin de tipos a variables


Para decirle a Pascal el tipo de una variable,
se usa una de las siguientes palabras clave
en el lugar indicado en el esqueleto del
programa.
Ejemplo:
var i: integer;
a: boolean;

Esqueleto de un Programa en
Pascal (I)
Todos los programas de Pascal comparten ciertas
caractersticas comunes, algunas de las cuales son
opcionales. Esto se llama esqueleto del programa y
se muestra a continuacin.

Convencin
En este esqueleto, lo que se ponga entre signos de
mayor y menor (<>) indicarn elementos que
deben reemplazarse en un programa real.

Esqueleto de un Programa en
Pascal (II)
Program <identificador>;
Uses WinCrt;
Const {constantes}
<identificador> = <valor>;
Var {variables}
<identificador> : <tipo>;
Begin {instrucciones}
...
End.

Componentes del Esqueleto de


un programa (I)
La lnea Program es opcional y sirve para ponerle un nombre
al programa.
La lnea Uses WinCrt es una forma de que Pascal active la
capacidad de leer desde el teclado y de escribir hacia la
pantalla; en Windows, se hace esto sobre una pequea
ventana blanca, y en DOS sobre la pantalla completa (se debe
escribir 'Uses Crt' en compiladores de DOS).

Componentes del Esqueleto de


un programa (II)
Las secciones llamadas Const y Var son para declarar las
constantes y las variables, respectivamente.
Son opcionales e intercambiables. Se pone un identificador
que ser el nombre con el que, tanto Pascal como el
programador, la conocern.

A una constante no se le especifica el tipo, slo el


valor.
A una variable no se le puede dar un valor cuando
se la declara.

Componentes del Esqueleto de


un programa (III)
La seccin entre las palabras Begin y End es la parte
principal del programa y es aqu donde van las
instrucciones del programa.
Estas palabras actan como parntesis. Se requieren
las dos pero adems pueden ponerse ms dentro de
stas, siempre poniendo primero el Begin y luego el
End, de manera que en un programa correctamente
escrito, haya tantos Begins como Ends.
El ltimo End debe terminar con un punto, para que
Pascal sepa que el programa ha terminado.

Componentes del Esqueleto de


un programa (IV)
Al final de varias lneas del esqueleto aparece un
punto y coma. En general, todas las lneas de cdigo
Pascal terminan en punto y coma, a menos que
terminen en una palabra reservada (no obstante, las
lneas que terminan en un End que no sea el ltimo
del programa deben llevar punto y coma).
Las palabras entre llaves ({}) son comentarios, y
Pascal las ignora por completo. Son una forma
valiosa de incluir informacin para los humanos
dentro del cdigo para la computadora.

Operaciones de Entrada/Salida
Sentencias de salida o escritura.
Write o Writeln (NombreArchivo, Nomvarl ,Nomvar2...):
Realizan conversin de tipos de datos antes de que la salida
llegue al archivo de salida. Las variables o argumentos de
esta sentencia pueden ser: expresiones. constantes o variables
numricas, de carcter, de cadena o booleanas.

Operaciones de Entrada/Salida
Sentencias de salida o escritura.
Formatos: Write o Writeln (argumento)
Write o Writeln (argumcnto:m)
Write o Writeln (argumento:m:n)
Donde m es el nmero de caracteres que ocupar la
salida ajustando la informacin a la derecha, y n slo
se emplea cuando el argumento es numrico real
indica el nmero de caracteres que ocupar en la
salida la parte decimal.

Operaciones de Entrada/Salida
Sentencia de entrada o lectura.
Read o Readln (NombreArchivo,Nomvarl ,Nomvar2..);

Operadores Aritmticos
Operador

Funcin
Operador unario.
Invierte el signo.
+

Operador binario suma.

Operador binario resta.

*
producto.

Operador binario

/
Operador binario
divisin real.
div
Operador binario
divisin entera.

Operador de asignacin
La combinacin de smbolos := es el operador de
asignacin y sirve, al igual que el ReadLn, para
darle valor a una variable.
El valor que se da a la variable no se lee del teclado,
sino que se toma de una constante, de otra variable,
o de una expresin aritmtica (situadas a la derecha
del operador de asignacin) y se copia hacia la
variable cuyo nombre est a la izquierda.

Concepto y clasificacin de
estructuras

Las estructuras se clasifican de acuerdo a varios


criterios.
Respecto al nmero de componentes, las
estructuras se clasifican en estticas (el nmero de
componentes es fijo) y dinmicas (el nmero de
componentes vara durante la ejecucin del
programa
Respecto al tipo de componentes, las estructuras
suelen formarse o bien por combinacin de datos de
distinto tipo (registros) o bien por la repeticin de
datos del mismo tipo (arrays, conjuntos, etc..).

La Estructura Array
Es una estructura homognea de datos de tamao
constante accediendo a cada uno de sus elementos
mediante un identificador comn y uno o varios
ndices.
Todos los elementos del array son del mismo tipo.
El nmero de ellos no vara durante la ejecucin
del programa.

La Estructura Array
Accedemos a un elemento de la estructura
mediante un identificador comn, el nombre del
array, y con el valor que toman uno o varios ndices.
Al nmero de ndices necesarios para designar un
elemento del array se le denomina dimensin del
array.
El nmero mximo de valores posibles que puede
tomar cada ndice se denomina rango de esa
dimensin o ndice. Los valores han de ser
consecutivos, por lo que el ndice ha de ser de un
tipo ordinal

Declaracin de tipos y
variables Array
La declaracin ms general de un array es la siguiente:
Type
Rango1 = tipoordinal1;
Rango2 = tipoordinal2;
...
rangon = tipoordinaln;
tipobase = (*cualquier predefinido o definido por el
usuario*)
tipoarray = array [rango1,rango2,...,rangon] of tipobase,

Ejemplo 1
Arreglo de una dimensin:
const n = 10;
var arr: array [1..n] of integer;

Ejemplo 2
Arreglo de varias dimensiones: Para almacenar las notas
correspondiente a todos los alumnos de un colegio.
Suponiendo lo siguiente:
Numero de cursos 5
Grupos por curso 3
Numero de evaluaciones 3
Numero de asignaturas 6
Numero de alumnos por curso 20

Ejemplo 2.1
Const
Numcurso=5;
Numasig=6;
Numalum=20;
Type
Cursos=1.. nurneurso;
Grupos='A'..'C';
Eval=(primera,segunda,tercera);
Asign=1.. numasin;
Alum=1. .numalum;
Tiponotas=array[cursos,grupos,eval,asign,alum] of real;

Ejemplo 2.2
Var
Notas: tiponotas;
Curso: cursos;
Grupo: grupos;
Evaluacion: eval;
Materia: asign;
Alumno: alum;
Con los elementos de un array podemos realizar las mismas
operaciones que el tipo base al que pertenecen.

String: Cadenas de Caracteres


Las cadenas de caracteres son arrays especiales.
Una cadena de caracteres (string) consiste en una
serie o secuencia de caracteres cuyo nmero
(longitud) puede estar entre 0 y 255.
Se puede definir la longitud de la cadena poniendo
string [n] donde n est entre 0 y 255.
Longitud fsica: corresponde al mximo nmero de
caracteres que puede almacenar.
Longitud lgica: corresponde al nmero
caracteres que tiene en un instante determinado.

de

Operaciones y Tratamiento de
cadenas
Las dos operaciones bsicas son:
Comparacin
Concatenacin.
Operador de concatenacin (+) Se utiliza para reunir
varias cadenas en una sola
Ejemplo: Cad1:='esto es un ejemplo';
Cad2:='de concatenacin de cadenas';
Cadr:=cad1+cad2;
Write (cadr);
esto es un ejemplo de concatenacin de cadenas

Operaciones y Tratamiento de
cadenas
La funcin concat realiza la misma funcin que el operador
de concatenacin. La sintaxis es:
Function concat (cad1,cad2,...:string): string;
La cadena vaca o nula se representa con dos caracteres
apstrofes seguidos ' '.
El acceso a los elementos de una cadena individualmente se
hace como si fuera un array.
Ejemplo: cad1:='ejemplo';
cad1[1] devuelve el primer elemento, la letra e.

Operaciones y Tratamiento de
cadenas
La funcin Length proporciona la longitud lgica
de una cadena de caracteres.
Ejemplo:
Longitud:=length(cad1);
La variable longitud tomara el valor 7.

Funciones de tratamiento de
cadenas
Instruccin

Funcin

COPY

Extrae una subcadena de caracteres de otra


cadena de caracteres

Copy (cadl,po,num)

po: primera posicin del caracter a extraer.


Num: nmero de caracteres que se extraen.
Po y Num deben ser enteros

POS

Determina si una cadena es subcadena de


otra, en caso afirmativo devuelve la posicin
donde comienza la subcadena, en caso
negativo devolvera cero.

Pos (subcadena,cadena)
DELETE

Delete (Cad,Po,Num)

Suprime el numero de caracteres que le


digamos de una cadena a partir de la posicin
que le indiquemos

Funciones de tratamiento de
cadenas
Instruccin

Funcin

INSERT

Inserta una cadena de caracteres en otra a partir de


una posicion dada.

Insert (subcadena,destino,posicion)
Subcadena: Cadena a insertar
Destino: Cadena donde se va a insertar
Posicion: Lugar a partir del cual se va a insertar
UPCASE

Devuelve el caracter mayscula

Upcase(x)
Donde x es una variable de tipo char.
STR
Str(valor,cad)

Convierte un valor numrico a la correspondiente


cadena de caracteres que lo representa.

Funciones de tratamiento de
cadenas
Instruccin

Funcin

VAL

Procedimiento inverso a Str, es decir, devuelve el valor


numrico de una cadena.

Val(cad,variable,codigo)
Cad: la cadena a convertir en valor numrico.
Variable: el numero que se obtenga.
Codigo: cero si se ha podido convertir.

Funciones Predefinidas
Instruccin

Funcin

Abs(x)

Proporciona el valor absoluto de una variable numrica x.

ArcTan(x)

El arco cuya tangente es x.

Chr(x)

Devuelve el carcter ASCII de un entero entre O y 255.

Cos(x)

Proporciona el valor del coseno de x.

Exp(x)

La exponencial de x(eX).

Frac(x)

Parte decimal de x.

Int(x)

Parte entera de x.

Ln(x)

Logaritmo neperiano de x.

Odd(x)

True si x es impar, y false si es par.

Ord(x)

Ordinal de una variable tipo ordinal x.

Pred(x)

Ordinal anterior a la variable ordinal x.

Funciones Predefinidas
Instruccin

Funcin.

Round(x)

Entero ms prximo al valor x.

Succ(x)

Ordinal siguiente a la variable ordinal x.

Sin(x)

Seno de x.

Sqr(x)

Cuadrado de x.

Sqrt(x)

Raiz cuadrada de x, para x>=O.

Trunc(x)

Parte entera de x.

Estructuras de Control
Se denominan estructuras de control a aquellas que
determinan qu instrucciones deben ejecutarse y qu
nmero de veces.
Existen dos tipos de estructuras de control:
alternativas o de seleccin
repetitivas o de iteracin.

Estructuras Alternativas
Son aquellas que bifurcan o dirigen la ejecucin de
un programa hacia un grupo de sentencias u otro
dependiendo del resultado de una condicin. Las
dos sentencias alternativas de Pascal son:
Sentencia alternativa simple IF-THEN-ELSE
Sentencia alternativa mltiple CASE-OF.

IF THEN ELSE
IF (expresin lgica o booleana)
THEN
Sentencia1 (simple o compuesta)
ELSE
Sentencia2 (simple o compuesta);

Ejemplo
Ejemplo:
IF n>O then Writeln (`Nmero positivo');
IF n>O then
Writeln (`Nmero positivo')
ELSE
Writeln (`Negativo o cero');
No puede existir un punto y coma inmediatamente antes de
una palabra ELSE ya que sera interpretado como final de
IF.

CASE OF
CASE (expresin o variable) OF
(lista de constantes1):(sentencia1);
(lista de conslantes2):(sentencia2);
(lista de constantes3):(senteneia3);
...
(lista de constantesN):(sentenciaN);
ELSE (SENTENCIA)
...
END;

Ejemplo
Program menu;
Var Numerodia: integer;
Begin
Write('introduzca el ordinal de un da laborable de la semana:'); Readln
(numerodia);
Write (`Hoy es ');
Case numerodia Of
1:Writeln ('Lunes');
2:Writeln ('Martes');
3:Writeln ('Miercoles');
4:Writeln ('Jueves');
5:Writeln ('Viernes');
6:Writeln ('Sbado')
Else Writeln ('Domingo!!! No es da laborable');
End.

Estructuras Repetitivas
Son aquellas que crean un bucle (repeticin continua de un
conjunto de instrucciones) en la ejecucin de un programa
respecto de un grupo de sentencias en funcin de una
condicin.
Las tres sentencias repetitivas de Turbo Pascal son:
SENTENCIA WHILE
SENTENCIA REPEAT-UNTIL
SENTENCIA FOR
CUNDO SE USA CADA UNO

Sentencia While
Indica al ordenador que se ejecuten una o ms
sentencias mientras se cumpla una determinada
condicin establecida por una variable o expresin
booleana.

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

Sentencia While
WHILE condicin DO
BEGIN
(sentencia1);
...
(sentenciaN);
END;
WHILE condicin DO
(sentencia);

Caractersticas del Bucle


While
Se ejecuta mientras la condicin sea verdadera, y dentro
del bucle debe existir, por lo menos, una sentencia que
modifique el valor de la variable o expresin, de lo
contrario se puede producir una situacin de bucle infinito.
Si la expresin lgica es falsa al comenzar el bucle, ste no
se realizar.

Ejemplo
Escribir los N primeros nmeros naturales, donde N es un valor
introducido por el usuario.
Program escribeenteros;
Var N,contador: integer;
Begin
Write ('Introduzca numero mximo de enteros: ');
Readln (N);
Contador:=1;
While contador<=N do
Begin
Write (contador:5); Contador:=contador+1;
End;
Writeln ('Fin de programa. Contador = ',contador);
End.

Sentencia Repeat Until


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

Sentencia Repeat Until


REPEAT
begin
(Sentencia);
(Sentencia);
...
end;
UNTIL condicin;

Caractersticas del Bucle


Repeat
Se ejecutan siempre una vez, por lo menos, y la
terminacin del bucle se produce cuando el valor de
la expresin lgica o condicin de salida es
verdadera. Se ejecuta hasta que la expresin es
verdadera, es decir, se ejecuta mientras la expresin
sea falsa.

Ejemplo
Program escribeenteros;
Var N,contador:integer;
Begin
Write ('Introduzca nmero mximo de enteros: ');
Readin (N);
Contador:= O;
Repeat
Contador:=contador+1;
Write (contador:5)
Until contador = N;
Writeln ('Fin de programa. Contador = ',contador)
End.

Sentencia For
Repite la ejecucin de una o varias sentencias un
nmero 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).

Sentencia For
Formato ascendente:
FOR variablecontrol:=valorinicial TO valorfinal DO
(sentencia);
Formato descendente:
FOR variablecontrol:=valorincial DOWNTO valorfinal DO
(sentencia);
donde (sentencia) puede ser una sentencia simple o compuesta.

Caractersticas del Bucle For


Aunque a primera vista pueda resultar ms atractivo FOR,
existen limitaciones en su aplicacin 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 nmero de iteraciones de un bucle FOR siempre es fijo y
se conoce de antemano:
Valor final - Valor inicial +1.

Ejemplo
Program escribeenteros;
Var N,contador: integer;
Begin
Write ('Introduzca numero mximo de enteros: ');
Readln (N);
For contador:=1 to n do
Write (contador:5);
Writeln
End.

Cundo Utilizar
While/Repeat/For
Utilizar la sentencia o estructura FOR cuando se

conozca el nmero de iteraciones, y siempre que la


variable de control de bucle sea de tipo ordinal.
Utilizar la estructura REPEAT-UNTIL cuando el bucle

se realice por lo menos una vez.


En todos los dems casos utilizar la sentencia WHILE

Registros
Un registro es una estructura heterognea de datos,
denominados campos y a los que accedemos por nombre.
Al igual que cualquier otro dato, el tipo registro (Record)
antes de poder ser utilizado debe ser declarado en la
seccin de tipos.
La nica operacin (a parte de la lectura) que se puede
realizar con una variable registro como tal es la
asignacin, es decir, se pueden copiar todos los campos
de una variable registro a otra variable registro del
mismo tipo. Adems un registro puede ser pasado como
parmetro a una funcin o procedimiento.

Ejemplo
Type
Tiporegistro = record
Campo 1 :tipol;
.
.
Campo N : tipoN;
End;
Var
Registro1 : tiporegistro;

Ejemplo
Type
Empleado = record
NbrApell : string;
EstadoCivil: (casado, viudo, soltero,
divorciado);
Sexo: (M, F);
Antig: integer;
Salario: real;
End;
Var
emp1 : Empleado;
begin
NbrApell:= 'Eduardo Lopez';
emp1.EstadoCivil:= casado;
emp1.Salario:= 450.86
end

Procedimientos y Funciones
Pascal ofrece dos herramientas bsicas para realizar
programacin descendente:
los procedimientos (procedure)
las funciones (function),
a los que nos referiremos genricamente con el
trmino de subprogramas. Turbo pascal incorpora
adems el concepto de unidad (unit), que permite
aprovechar mdulos independientes ya compilados.

Los Parmetros
Los parmetros son canales de comunicacin para
pasar datos entre programas y subprogramas en
ambos sentidos.
Los parmetros van asociados a variables
constantes, expresiones, etc., y por tanto, se indican
mediante los correspondientes identificadores o
expresiones.

Los Parmetros
Los parmetros que se utilizan en la llamada o
invocacin al subprograma se denominan
parmetros actuales, reales o argumentos, y son los
que entregan la informacin al subprograma.
Los parmetros que la reciben en el subprograma se
denominan parmetros formales o ficticios y se
declaran en la cabecera del subprograma.

Los Parmetros
En una llamada a un subprograma tiene que verificarse que:
El nmero de parmetros formales debe ser igual al de
actuales.
Los parmetros que ocupen el mismo orden en cada una de
las Listas deben ser compatibles en tipo.

Declaracin de parmetros
formales
Se declaran encerrados entre parntesis, indicando el
identificador y el tipo correspondiente asociado a
cada uno, separados por ':', y terminando en ';'. La
palabra reservada VAR precediendo a un
identificador de parmetro formal indica al
compilador que el paso del parmetro es pro Variable.
Su ausencia u omisin indica que el paso de
parmetro se realiza por VALOR.

Estructura, declaracin y empleo de


procedimientos y funciones

Se declaran inmediatamente despus de las variables del


programa principal, teniendo la precaucin de que si un
subprograma referencia o llama a otro, el referenciado debe
declararse primero.

Declaracin de procedimiento
Cabecera

procedure nombreproced (lista de parmetros);

Declaraciones
Locales

const
Type...
Var...
Declaracin de otros procedimientos y funciones

Cuerpo

begin
...
end; (*obseiwar; final de procedimiento*)

Ejemplo: Procedimiento
Ejemplo.:
Procedure Identificador (PF1 :tipol ;PF2:tpo2; var PW:tipo3);
PFl y PF2 se pasan por valor.
PF3 se pasa por variable.

Declaracin de funcin
Cabecera

function nombrefunc (lista de parmet.):tiporetornado;

Declaraciones const
Locales
Type...
Var...
Declaracin de otros procedimientos y funciones
Cuerpo

begin
...

Nombrefunc:=valorderetorno;
end;

Ejemplo: Funcin
Ejemplo.:
function Identificadorf (PF1 :tipol ;PF2:tpo2):integer;
PFl y PF2 se pasan por valor.

Llamada a un procedimiento
Se realiza desde el programa principal indicando
el identificador del procedimiento seguido de la
lista de parmetros actuales encerrados entre
parntesis y separados por comas.
Ejemplo:
Identificador (PAl ,PA2,PA3)

Llamada a una funcin


Se realiza desde el programa principal indicando el
identificador de la funcin seguido de la lista de
parmetros actuales encerrados entre parntesis y
separados por comas. Asignndolo a una variable o
invocndolo dentro de una condicin.
Ejemplo:
a := Identificadorf (PAl ,PA2);
if (Identificadorf (PAl ,PA2) > 10) then ...

Ejemplo - Declaracin
Ejemplo: Procedimiento para intercambiar los valores de
dos variables.
Procedure intercambio (var pfl ,p12:integer);
Var Aux:integer; {variable local uso exclusivo en
procedimiento}
Begin
Aux := pfl;
Pfl := pf2;
Pfl := aux
End;

Ejemplo - Invocacin
{La llamada a este procedimiento se hara ...}
{... por ejemplo desde el siguiente programa:}
Program Uno;
Uses crt;
Var Entero 1 ,entero2 : integer;
Procedure intercambio (var pfl ,p12:integer);
...
begin
clrscr; {*borrado de pantalla*}
Write ('introduzca 2 variables enteras: ');
Readln(entero1,entero2);
Writeln ('valores de las variables antes de la llamada');
Writeln ('Entero 1 = ',enterol,'entero 2 = ',entero2);
intercambio (enterol,entero2); {llamada al procedimiento}
Writeln ('Valor de las variables despus de la llamada');
Writeln ('entero 1 = ',enterol,'entero 2 = ',entero2);
end;

Ejemplo
Ejemplo: Funcin que, dados dos nmeros a y b, retorna
a*b si a<b, sino retorna a+b
Function suma_prod (a, b:integer): integer;
Begin
if a<b then suma_prod:=a*b
else suma_prod:=a+b;
End;

Funciones o procedimientos?
Deben utilizarse funciones cuando solo
tenga que devolverse un solo valor
simple al programa llamador. En todos
los
dems
casos
utilizaremos
procedimientos.

Archivos
Un archivo es una estructura homognea de datos
consistente en una secuencia de elementos llamados
registros, todos del mismo tipo, ya sea simple o
estructurado. Un archivo se almacena en un dispositivo
auxiliar (discos, cintas, etc), de forma que los datos
obtenidos antes, durante y despus del procesamiento de los
datos, no se pierden. Para declarar una variable archivo es
necesario definir previamente la naturaleza de sus registros.

Ejemplo
Type
Tiporegistro = record
Campo 1 :tipol;
.
.
Campo N : tipoN;
End;
Tipoarchivo = file of tiporegistro.
Var
Archivol : tipoarchivo;
Registro1 : tiporegistro;

Operaciones bsicas con


archivos
Instruccin

Operacin

ASSIGN

Este procedimiento asigna un archivo lgico con su


archivo fsico correspondiente. Despus de la
asignacin, cualquier operacin sobre la variable
archivo afectar al archivo Dos correspondiente.

Assign (Vararch,nomarch);
RESET

Procedimiento que abre un archivo para lectura


posicionando el puntero de lectura del archivo en el
primer elemento del archivo, y poniendo la variable
booleana EOF asociada al archivo a False, o en la
marca de fin de archivo s el archivo esta vaco, en
cuyo caso la variable EOF toma el valor True. No se
puede modificar el contenido de ningn registro.

RESET (nomvararchivo);

Operaciones bsicas con


archivos
Instruccin

Operacin

IORESULT

Funcin que devuelve el nmero del tipo de error


cometido en el tratamiento de archivos. Si no hay
ningn error devuelve O.

REWRITE

El procedimiento Rewrite abre un archivo para


escritura destruyendo el contenido del archivo si
este ya existe. No es posible ver datos de un archivo
que est abierto con este procedimiento, ya que
borra los datos existentes.

Operaciones bsicas con


archivos
Instruccin
READ

Operacin
Este procedimiento se utiliza para introducir el
contenido de un registro del archivo en una variable de
memoria definida del mismo tipo de dato que el
registro ledo.
READ (nomvararchivo,nomvarreg);
EOF

EOF (vararchivo)

En la lectura del ltimo registro el salto del puntero


posiciona ste sobre la marca de fin de archivo,
colocando la funcin lgica EOF "fin de archivo"
asociada a cada archivo a verdadero.

Ejemplo
While not eof(pruebas) do
Begin
Read (pruebas,info);
Write (info);
End;
WRITE: El procedimiento write escribe en un registro del archivo
el contenido de una variable de memoria definida del
mismo tipo.
WRITE (nomvararchivo,nomvarreg);

Archivos de acceso directo (I)


Estn formados por registros del mismo formato y
longitud por lo que permiten el acceso a un registro
especifico mediante un nmero asociado al mismo,
que se denomina su nmero de registro lgico. El
nmero asociado es de tipo longint y se asigna al
primer registro lgico el valor O. Para que un
archivo pueda ser tratado por posicionamiento o
acceso directo debe residir obligatoriamente en un
dispositivo de almacenamiento de este tipo.

Archivos de acceso directo


(II)
La declaracin de un archivo de acceso directo es
idntica a la de otros archivos y slo se distingue
de ellos por las funciones de posicionamiento en
un registro. El contenido de un archivo directo se
almacena en disco bajo forma binaria comprimida
y no es visualizable directamente en pantalla,
como los archivos de texto, con la orden TYPE de
DOS o con editores.

Operaciones de archivo (I)


Las principales operaciones de archivos de acceso directo
que se usan en Pascal son:
RESET Abrir archivo existente.
REWRITE
Abrir
un
archivo
nuevo.
Son dos procedimientos para abrir el archivo de acceso
directo, ya sea con un procedimiento u otro, el archivo se
abrir para lectura y escritura.
FILESIZE Tamao del archivo en formato longint, indica
el nmero de registros almacenados. Si el fichero est vaco
devuelve el valor O.

Operaciones de archivo (II)


SEEK Permite seleccionar un registro especfico del archivo
por su nmero de registro, para su uso en una operacin de
lectura o escritura.
READ Lectura del registro actual.
WRITE Escritura sobre el registro actual.
CLOSE Cerrar el archivo.

Tratamiento de archivos desde


Turbo Pascal
El Turbo Pascal permite manipular archivos y
directorios en disco de modo similar al sistema
operativo Ms-DOS. Pudiendose realizar las
siguientes operaciones con archivos y directorios:
Erase(nomvararchivo)
Rename(nomvararchivo,'nombrenuevoarchivo')
Chdir (directorio)
Mkdir (directorio)
Rmdir (directorio)
Getdir(unidad,camino)

Tratamiento de archivos
desde Turbo Pascal
Unidad = 0 unidad de arranque
Unidad = 1 A:
Unidad = 2 B:
Unidad = 3 C:
Camino contiene el directorio actual.
Getdir obtiene la unidad y el camino del directorio actual de
una unidad y lo almacena en las variables unidad, de tipo
byte y cambio de tipo String.

Vous aimerez peut-être aussi