Está en la página 1de 4

Nociones bsicas

n Todas las sentencias deben terminar en punto y coma (;)


excepto la ltima sentencia que termina con punto (.)
n Los programas en Pascal se componen de:
n Cabecera:
PROGRAM identificador;
Declaraciones
PASCAL
n
CONST
Iden_cte = valor_cte;
VAR
Iden_var : tipo_var;
n Sentencias
n Se pueden incluir comentarios en cualquier parte de un programa
pero deben delimitarse con llaves o con parntesis y asterisco:
{ esto es un comentario }
(* y esto tambin *)
PASCAL 2

Estructura bsica de un
Variables y Constantes
programa en Pascal
n Los identificadores son nombres para referenciar variables, cons tantes
y funciones. Se forman con letras (A-Z), nmeros (0-9) y smbolo de PROGRAM nombre;
subrayado ( _ ) pero deben comenzar con una letra. Pueden tener CONST
cualquier longitud pero slo se reconocen los 63 primeros caracteres nom_cte1 = valor1;
n Los tipos de datos bsicos utilizados en Pascal son: MMMMMMMMMMMMMMMMMMMMM
n INTEGER: Entero
nom_cteN = valorN;
n REAL: Real
VAR
n CHAR: Carcter
n BOOLEAN: Lgico/Booleano nom_var1 : tipo1;
n STRING: Cadena de caracteres MMMMMMMMMMMMMMMMMMMMM
n En Pascal, las variables deben declararse antes de ser utilizadas en nom_varN : tipoN;
una seccin de declaracin de variables dentro del programa. Esta BEGIN
seccin comienza con la palabra VAR MMMMMMMMMMMMMMMMMMMMM
n Las constantes tambin deben inicializarse en la seccin de sentencias;
declaracin de constantes. Esta seccin comienza con la palabra MMMMMMMMMMMMMMMMMMMMM
CONST
END.
PASCAL 3 PASCAL 4

Estructuras secuenciales Estructuras condicionales


Si el grupo Sentencias en caso
Operacin de asignacin IF condicin THEN n
n verdadero (y/o Sentencias en caso
BEGIN falso) est formado por una nica
var := exp ;
Sentencias en caso verdadero sentencia, el par BEGIN -END no es
n Operacin de Entrada/Lectura: END necesario
IF condicin THEN
READ(lista parmetros); [ELSE
S1
READLN(lista parmetros); BEGIN [ELSE
Sentencias en caso falso S2];
n Operacin de Salida/Escritura: END]; n Sentencia CASE
WRITE(lista parmetros); n Ntese que el ; nicamente se CASE var O F
WRITELN(lista parmetros); pone al final de la sentencia IF- Valor_1:S1;
THEN-ELSE Valor_2:S2;
WRITELN; MMMMMMMMMMMMMMM
Valor_n:Sn;
END;

PASCAL 5 PASCAL 6

1
Estructuras repetitivas Otros temas
n Para dar formato de salida a los nmeros reales:
n Bucle FOR n Si cuerpo del bucle (en la WRITE(exp_real:n_col:n_dec)
FOR var:=inicio TO/DOWNTO fin DO sentencia FOR y WHILE) est
BEGIN formado por una nica donde n_col es el nmero de columnas/posiciones que va a ocupar
Cuerpo del bucle sentencia, el par BEGIN- END
END; el nmero y n_dec el nmero de decimales que queremos mostrar
no es necesario
n Bucle WHILE en pantalla
n Ntese que la sentencia
WHILE condicin DO REPEAT-UNTIL no necesita un n Para hacer uso de unidades (libreras con funciones y
BEGIN par BEGIN- END puesto que el procedimientos predefinidos) se utiliza la siguiente sentencia entre
Cuerpo del bucle cuerpo del bucle queda la cabecera y la seccin de declaracin del programa:
END; perfectamente delimitado con PROGRAM nombre;
REPEAT al principio y UNTIL al
n Bucle REPEAT-UNTIL USES unidad;
final
REPEAT CONST
Cuerpo del bucle MMMMMMMMMMMMMMMMMMMMM
UNTIL condicin;

PASCAL 7 PASCAL 8

Declaracin de funciones y
Seccin TYPE
procedimientos
FUNCTION ident_func (parmetros formales):tipo;
{Declaracin variables locales}
n Se utiliza para declarar nuevos tipos de datos o
BEGIN renombrar tipos ya definidos
Sentencias; TYPE
ident_func :=expresin; nombre-1 = tipo-1;
END; nombre-2 = tipo-2;

PROCEDURE ident_proc (parmetros formales);
{Declaracin variables locales}

BEGIN
nombre-N = tipo-N;
Sentencias;
END; n tipo-i es un tipo de datos predefinido o definido
por el usuario

PASCAL 9 PASCAL 10

Uso de Unidades Unidad System


n ABS(X): Valor absoluto de X
ARCTAN(X): Arcotangente de X
n Las unidades se utilizan para crear libreras de funciones y n
n CHR(X): Carcter cuyo nmero ordinal es X
procedimientos que permitan la programacin modular n CONCAT(S1 ,S2... Sn): Concatena en una nica cadena todas las cadenas que toma como argumento
n Adems de las unidades diseadas por el propio programador, n COPY(S,X,Y): Devuelve una subcadena de longitud Y comenzando en la posicin X de la cadena S
Pascal incluye sus propias unidades que permiten la utilizacin de n COS(X): Coseno de X
EXP(X): Nmero e elevado a X
ciertas funciones y procedimientos generales, de inters para el n

LENGTH(S ): Nmero de caracteres de la cadena S


programador que nos facilitan el trabajo y mejoran la apariencia n
n LN(X): Logaritmo Neperiano de X
final de cualquier aplicacin n ODD(X): Devuelve TRUE si X es impar
PROGRAM nombre; n POS(S1 ,S2): Devuelve la posicin del primer carcter de S1 en S2, siempre que S1 se encuentre
incluida en S2
USES unidad;
n RANDOM(X): Devuelve un nmero aleatorio entre 0 y X-1. Si no se especifica el argumento X, devuelve
CONST un nmero real entre 0.0 y 1.0
MMMMMMMMMMMMMMMMMMMMM n RANDOMIZE: Inicializa la semilla para el generador de nmeros aleatorios
n ROUND(X) : Redondea X
n nicamente la unidad System
System,, que implementa rutinas b
bsicas, no n SIN(X): Seno de X
necesita ser especificada en la cl
clusula USES ya que Pascal n SQR(X ): Cuadrado de X
autom
autom ticamente la utiliza en cualquier programa o unidad n SQRT(X): Raz cuadrada de X
n TRUNC(X): Trunca X
n UPCASE(C): Convierte el carcter C a maysculas

PASCAL 11 PASCAL 12

2
Ejemplos Unidad Crt
n CLRSCR: limpia la pantalla dejando el curso en la esquina superior izquierda de la
pantalla.
Generacin de nmeros aleatorios Convertir a maysculas n DELAY(X): Espera X milisegundos antes de empezar a ejecutar la siguiente sentencia
(realiza una pausa de X milisegundos).

PROGRAM aleatorio; PROGRAM mayus ; n GOTOXY(X,Y): Sita el cursor en la columna X y fila Y. El valor de X vara de 1 a 80 y
el de Y de 1 a 24.
VAR VAR n KEYPRESSED: Devuelve TRUE si se ha pulsado alguna tecla del teclado y FALSE en
s : STRING; otro caso.
R:INTEGER; HIGHVIDEO: Selecciona el modo de alta intensidad de caracteres.
i : INTEGER; n
BEGIN n LOWVIDEO: Selecciona el modo de baja intensidad de caracteres.
BEGIN NORMVIDEO: Selecciona el modo normal de intensidad de caracteres.
RANDOMIZE; n
WRITE('Introduzca una cadena n NOSOUND: Desactiva un sonido realizado con SOUND.
REPEAT de caracteres: '); n SOUND(X): Emite un sonido de X hertzios de frecuencia. El sonido contin a hasta que
se desactiva con NOSOUND.
R:=RANDOM(10); READ(s);
TEXTBACKGROUND(X) : Inicializa el color de fondo al color X. X es una expresin qu e
FOR i := 1 TO LENGTH(s) DO n
WRITELN (R); devuelve un valor entre 0 y 7, correspondiente con los valores de las ocho primeras
UNTIL (R=0); s[i] := UPCASE(s[i]); constantes de color
TEXTCOLOR(X): Inicializa el color del texto al color X. X es una expresin que
WRITELN('La cadena en n
END. devuelve un valor entero
maysculas es : ',s); n READKEY: Lee un nico carcter del teclado.
END. n WHEREX: Devuelve la coordenada x de la posicin actual del cursor.
n WHEREY: Devuelve la coordenada y de la posicin actual del cursor.
PASCAL 13 PASCAL 14

Ejemplos Tipos de datos estructurados


n Arrays n Instruccin WITH para registros
Colores del texto Uso de Keypressed n Declaracin WITH nombre_reg DO
Ident_array:ARRAY[inicio..fin]
Ident_array:ARRAY[inicio..fin] OF tipo; BEGIN
n Ejemplos instrucciones
PROGRAM colores; PROGRAM aleatorio2; Vector:ARRAY[1..50]
Vector:ARRAY [1..50] OF INTEGER; END;
USES Crt; USES Crt; Matriz:ARRAY[1..4]
Matriz:ARRAY [1..4] OF ARRAY[1..6] OF REAL; n Ejemplo: la siguiente instruccin WITH
VAR i:INTEGER; WITH empleado DO
VAR n Registros
BEGIN
BEGIN n Declaracin: nombre:=Alma Caro Ruiz;
R:INTEGER; Ident_reg:: RECORD
Ident_reg
FOR i:=0 TO 31 DO sexo:=M;
BEGIN BEGIN lista de campos edad:=35;
END;
TextColor(i); RANDOMIZE; salario:=1250;
n Ejemplos casado:=F
casado: =F;;
TextBackground(0); REPEAT empleado: RECORD END;
WRITELN('Color del texto ',i); R:=RANDOM(1001); nombre:STRING[30]; Es equivalente a
sexo:CHAR ;
READKEY; WRITELN (R); edad:INTEGER ;
empleado.nombre:=Alma
empleado.nombre :=Alma Caro Ruiz;
END; empleado.sexo:=M;
empleado.sexo :=M;
UNTIL KEYPRESSED; salario:REAL; empleado.edad:=35;
empleado.edad :=35;
NORMVIDEO; END. casado:BOOLEAN; empleado.salario:=1250;
empleado.salario :=1250;
END;
WRITELN('Vuelve a texto normal'); empleado.casado::=F
empleado.casado =F;;
END.

PASCAL 15 PASCAL 16

Ficheros Operaciones sobre ficheros


n Asignacin Assign(vfic,cadena);
Assign(vfic,cadena);
n Ficheros de texto n Apertura para lectura Reset(vfic);
Reset(vfic );
n Declaracin n Creacin para escritura Rewrite(vfic);
Rewrite(vfic );
vfic:TEXT;;
vfic:TEXT n Apertura para escritura Append(vfic);
Append(vfic ); (solo ficheros de texto)
n Se puede utilizar el concepto de lnea (EOLN, n Lectura de datos Read(vfic,l-- parmetros);
Read(vfic,l
READLN, WRITELN)
n Escritura de datos Write(vfic,l--parmetros);
Write(vfic,l
n Los elementos del fichero son caracteres
n Cierre Close(vfic);
Close(vfic );
n Ficheros binarios n Fin de archivo EOF(vfic);
EOF(vfic );
n Declaracin n Posicionar el apuntador Seek ( vfic , numReg );
vfic:FILE OF tipo;
n Posicin del apuntador entero:=
entero:=Filepos ( vfic );
n Los elementos del fichero son registros
n N de registros totales entero:=
entero:=Filesize ( vfic );

PASCAL 17 PASCAL 18

3
Ejemplo de uso de ficheros
Ejemplo de uso de ficheros de
binarios
texto PROGRAM crea_fic ; WHILE codigo >0 DO
BEGIN
TYPE
PROGRAM BorradoEspacio
BorradoEspacio;; WHILE NOT eoln
eoln(( ArchEntrada ) DO WRITE(Introduzca nombre del empleado);
CONST TEmpleado= RECORD
BEGIN READLN(nombre);
READLN(nombre );
Codigo:Integer;;
Codigo:Integer
Espacio = ' '; read(( ArchEntrada
read ArchEntrada,, C a r ); REPEAT
Nombre:string[30];
Nombre:string [30];
VAR ActualNoEspacio := Car <> Espacio; WRITE(Introduzca edad del empleado);
Edad:Integer;;
Edad:Integer
ArchEntrada,, ArchSalida : text ;
ArchEntrada IF ActualNoEspacio OR READLN(edad);
READLN(edad );
PrevioNoEspacio THEN sueldo:real;;
sueldo:real
Car : char
char;; UNTIL (edad>18) AND (edad<70);
PrevioNoEspacio : boolean ; write ( ArchSalida
ArchSalida,, C a r ); END;
WRITE(Introduzca sueldo del empleado);
PrevioNoEspacio := ActualNoEspacio ; TF_emp=FILE OF TEmpleado
TEmpleado;;
ActualNoEspacio : boolean ; READLN(sueldo );
END {WHILE NOT eoln eoln};
}; VAR
BEGIN WRITE(F_emp,emp);
WRITE(F_emp,emp );
assign(ArchEntrada,entrada.txt);
assign(ArchEntrada,entrada.txt ); emp:TEmpleado ;
WRITE(Introduzca cdigo de empleado
writeln ( ArchSalida ); F_emp:TF_emp;;
F_emp:TF_emp
assign(ArchSalida,salida.txt);
assign(ArchSalida,salida.txt ); (0 para terminar));
readln(( ArchEntrada ) ;
readln BEGIN
reset (ArchEntrada
(ArchEntrada ); READLN(codigo );
rewrite( ArchSalida ) ; END; {WHILE NOT eof eof}} assign(F_emp,empleado.dat);
assign(F_emp ,empleado.dat);
END;
close(ArchSalida ); rewrite(F_emp);
rewrite(F_emp );
WHILE NOT eof ( ArchEntrada ) DO END; {* Fin del WITH *}
close(ArchEntrada ); WITH emp D O
BEGIN WRITELN(FICHERO DE EMPLEADOS CREADO);
PrevioNoEspacio := false; END. BEGIN
CLOSE(F_emp);
CLOSE(F_emp );
WRITE(Introduzca cdigo de
empleado (0 para terminar)); END.
READLN(codigo );

PASCAL 19 PASCAL 20

Control de Errores de Ejemplo de uso de directivas I/O


Entrada/Salida PROGRAM consulta_fic ; ELSE
uses crtcrt;; BEGIN
n Directiva {$I
{$I-- } y { $I+
$I+}} TYPE
TEmpleado= RECORD
WHILE NOT EOF(F_emp ) DO
BEGIN
n Por defecto la directiva Input
Input/Output
/Output Checking est Codigo:Integer;;
Codigo:Integer READ(F_emp,, emp
READ(F_emp emp)) ;
activada lo que cualquier error en un procedimiento de Nombre:string[30];
Nombre:string
Edad:Integer;;
Edad:Integer
[30]; WRITELN('Cdigo: ',emp.codigo
',emp.codigo)) ;
WRITELN('Nombre: ',emp.nombre
',emp.nombre );
entrada/salida causa la terminacin inmediata del sueldo:real;;
sueldo:real WRITELN('Edad: ',emp.edad
',emp.edad)) ;
programa visualizando el error cometido END; WRITELN('Sueldo: ',emp.sueldo
',emp.sueldo :0:2);
TF_emp=FILE OF TEmpleado
TEmpleado;; WRITELN;
n Se desactiva para pasar el control de errores de entrada/ VAR readkey ;
salida al usuario. En este caso es el usuario el encargado emp:TEmpleado ; END;
de gestionar los errores producidos por los procedimientos BEGIN
F_emp:TF_emp;;
F_emp:TF_emp WRITELN('* FIN DE LA CONSULTA**');
CLOSE(F_emp);
CLOSE(F_emp );
de I/O clrscr;;
clrscr END;
n Para ello, se consulta el valor de la funcin IOResult que {$I
assign(F_emp,, 'empleado.dat
assign(F_emp
$I-- }
'empleado.dat');
'); {$I+
$I+}}
END.
devuelve el error cometido o cero si no se ha producido reset(F_emp)) ;
reset(F_emp
error IF IOResult <> 0 THEN
writeln ('ERROR AL ABRIR FICHERO')

PASCAL 21 PASCAL 22

Tipos numricos
TIPOS ENTEROS
TIPO RANGO BYTES
Shortint -128..127 8bits,con signo
Integer -32768..32767 16 bits, con signo
Longint -2147483648..2147483647 32 bit, con signo
Byte 0..255 8 bits, sin signo
Word 0..65535 16 bits, con signo
TIPOS REALES
TIPO RANGO BYTES
Real 2.9 x 10-39 .. 1.7x 1038 6
Single 1.5 x 10 -45 .. 3.4 x1038 4
Double 5.0 x 10 -324 .. 1.7 x10308 8
Extended 3.4 x 10 -4932 .. 1.1 x104932 10
Comp - (263 ) + 1 .. (263 ) - 1 8

PASCAL 23

También podría gustarte