Curso de TURBO PASCAL

Entrega Nº 2

11 de Diciembre de 1998

Autor : Manuel Vergel
Para : La Web del Programador

 

Para no ser tan tediosa esta sección procurare no ahondar con demasiados comentarios que puedan confundir al lector. Lo que pretendere es hacerlo practico...

Para empezar tenemos que hacer un programa que despliegue en la pantalla un mensaje cualquiera, por ejemplo: "Hola Como estan, esto es una prueba".
La siguiente forma seria utilizar el writeln, para enviar la cadena a la pantalla:

Program prueba;
Uses crt;
Begin
      Writeln('Hola Como estan, esto es una prueba');
End.

Si corren asi como esta el programa, no van a visualizar nada, ya que el compilador ejecuta la instrucción de writeln y se sigue con la siguiente instrucción, en este caso el "end", para que el programa se detenga, tenemos varias herramientas:

Program prueba;
Uses crt;
Begin
      Writeln('Hola Como estan, esto es una prueba');
      Readln;
End.

Como ven utilize el readln y este comando de turbo pascal, me permite que el programa se detenga hasta que se presione enter, porque espera hasta que se presione esta tecla.

Program prueba;
Uses crt;
Begin
      Writeln('Hola Como estan, esto es una prueba');
      Keypressed;
End.

El Keypressed me sirve a mi para que se detenga el programa, hasta que yo presione una tecla cualquiera...

Program prueba;
Uses crt;
Begin
      Writeln('Hola Como estan, esto es una prueba');
      Delay(1000);
End.

El Delay lo utilizo para que el programa quede suspendido por tantos milisegundos que uno quiera, en este caso tardara un segundo. Se puede incrementar o disminuir los milisegundos, como uno desee...

Ahora lo que haremos es poner el mensaje en forma llamativa, la letra de color amarillo y con un fondo azul para toda la pantalla:

Program prueba;
Uses crt;
Begin
      Textcolor(yellow);
      Textbackground(blue);
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
End.

Como salida del programa ustedes veran la letra y el fondo como antes había mencionado, pero que pasa con toda la demas pantalla, ¿Por qué no cambio de color?, lo que ocurrio fue que se le indico al compilador que todo lo que se escribiera en la pantalla tuviera estas propiedades, para que toda el fondo de la pantalla fuera del mismo color, lo que se tiene que hacer es esto:

Program prueba;
Uses crt;
Begin
      Clrscr;
      Textcolor(yellow);
      Textbackground(blue);
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
End.

Necesitamos que este mensaje aparezca por lo menos 10 veces en la pantalla y que tarde 100 milisegundos: se puede hacer de varias maneras una de ellas y la no recomendada es colocar 10 veces el writeln y el delay,

Program prueba;
Uses crt;
Begin
      Clrscr;
      Textcolor(yellow);
      Textbackground(blue);
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
      Writeln('Hola Como estan, esto es una prueba');
      Readkey;
End.

O se puede hacer asi,

Program prueba;
Uses crt;
Var i:integer;
Begin
      Clrscr;
      Textcolor(yellow);
      Textbackground(blue);
      For i:=1 to 10 do
      begin
            Writeln('Hola Como estan, esto es una prueba');
            Readkey;
      End;
End.

Creo que se ve la diferencia... aquí utilizamos un ciclo For, que es el que permitira repetir cuantas veces queramos, una instrucción o varias instrucciones.

Hay otros tipos de ciclos en turbo pascal:

  1. Repeat
  2. While
  3. For

Muchos de mis amigos, incluyendome a mi, en un un principio no sabiamos cual era la diferencia entre estos ciclos, siempre utilizabamos el ciclo repeat, ya que era el más "facíl". Ahora con el paso del tiempo y con ayuda de algunos libros y por supuesto de practica entedimos cual era su caracteristica.

  1. El ciclo repeat, su propiedad es que se ejecuta tan siquiera una sola vez.
  2. El ciclo While, su propiedad es que puede o no puede ejecutarse.
  3. El ciclo for , su propiedad es que se ejecuta un número determinado de veces.

Ahora para que tengas una mejor perspectiva de lo antes mencionado, coloco estos ejemplos:

Ejemplo de los 3 ciclos:

Program ciclos;
Uses crt;
Var i:byte;
Begin
      Clrscr; i:=1;
      Repeat
      Writeln('Estas dentro del ciclo Repeat...');
      Readkey;
      Until i=1;
      While i<>1 do
      Begin
            Writeln('Este mensaje no saldra nunca en pantalla');
            Writeln('solo si colocas antes del while a I:=0');
            I:=1;
      End;
      For i:=1 to 5 do
      Begin
            Writeln('Estas dentro del ciclo for, este mensaje lo veras 5 veces');
            Readkey;
      End;
End.

Este fue un ejemplo de cómo funcionan estos ciclos, si se te hace un poquito dificil de comprender como realmente funcionan, en el editor de turbo pascal existe un menu, para compilar paso a paso. Checalo la tecla es F7 presionala cuantas veces quieras y observa detenidamente la ejecución de tu programa. Tambien hay otra herramienta muy buena que es la de observar el contenido de las variables en tiempo de ejecución de tu programa, no creas que es cosa del otro mundo, que tendras que añadir codigo, ¡para nada! Presiona CTRL+F7, y tan solo colocael nombre de la variable que quieres observar. Y con F7 ejecuta el programa y facilmente observaras como las variables adquieren otro valor, cuando en el programa se lo indicas...

Bueno vamos a dejar un poco esto, aquí les doy un sencillo codigo de cómo crear y leer un archivo de texto...

Program texto;
Uses crt;
Const Enter=#13; {el 13 es el numero que le corresponde en codigo ascci al Enter}
Esc=#27; {el 27 es el numero que le corresponde en codigo ascci al Esc}
Var
      f:text;
      nombre,linea:string;
      tecla:char;
Begin
      Clrscr;
      Write('Dame el nombre del archivo:');
      Readln(nombre);
      Assign(f, nombre);
      Rewrite(f);
      Linea:='';
      Repeat
            Tecla:=upcase(readkey);
            Write(tecla);
            Linea:=linea+tecla;
            Case tecla of
            Enter:Begin
                  Write(f,linea);
                  Linea:='';
                  Writeln;
            End;
      End;
      Until tecla=Esc;
      Close(f);
      Reset(f);
      While not eof(f) do
      Begin
            Readln(f,linea);
            Writeln(linea);
      End;
      Close(f);
End.

 

Bueno tendre que explicar un poquito de los comandos que utilizo en este codigo,

¿Qué es el Text?
Para no complicarlos con los diferentes tipos de archivos que existen en turbo pascal, solo lo que les digo por el momento es que estoy declarando una variable de tipo archivo de texto.

Yo declaro después una variable de tipo string, llamada linea, que es la que voy a utiliza para leer y grabar los datos al archivo. Necesito un variable para guardar el nombre del archivo que voy abirr, en este caso la variable llamada nombre.

Ya en el programa principal yo solicito al usuario que ingrese el nombre del archivo para crearlo. Y con el assign, asigno a la variable f la referencia al archivo fisico. Con el rewrite le indico a la computadora que cree el archivo de texto, con el nombre que le introduci (Precaucion: si existe un archivo con el nombre que tu le introducistes en tu programa, este se perdera ya que el rewrite sobrescribe, borra, elimina toda la información que tengas en ese archivo.), despues a linea le asigno una cadena nula, la cadena nula quiere decir que no existe ningun carácter. Despues leo del teclado, imprimo en pantalla la tecla que pulsastes y se la anexo a la varibale linea. Luego con un Case determino que tipo de tecla oprimi en este caso solo me interesa la tecla enter, ya que en un editor de texto, nosotros al pulsar un enter hacemos un retorno de carro, es decir pasamos a la siguiente linea. En caso que la tecla que pulso fue enter, se manda al archivo lo que contenga la variable Linea, utilizando el writeln, hacemos mención que deseamos mandarlo al archivo de texto la linea que desaemos. Despues se inicializa con nada a linea y se manda un writeln, para que el cursor se posicione en la siguiente linea en la pantalla. Aquí nosotros utilizamos un ciclo repeat y este solo podra salirse, si nosotros pulsamos la tecla Esc. Al hacer esto, tenemos que cerrar el archivo, ya que si se abre, se tiene que cerrar. No se puede dejar abierto ya que puede ocurrir de que los datos no se salven o que el archivo guarde basura=datos que nosotros no introducimos.

Ahora para leer el archivo nosotros lo tenemos que abrir, y lo hacemos con el Reset, esto es lo contrario de Rewrite, ya que el reset solo abre el archivo, si lo encuentra, si no lo encuentra na hace nada. Despues utilizamos un ciclo While para leer tantas veces como lineas tenga el archivo, en este caso el "while not eof (f) do" significa "Mientras que no sea el fin del archivo hacer", (not=negacion eof=fin de archivo f=archivo ") , el readln sirve para leer desde teclado, como para leer del archivo de texto, especificamos que readln(f,linea); "leer del archivo una linea", ya despues la mandamos a desplegar la linea a pantalla. Y lo unico que hace falta es cerrar el archivo y listo, creo que no es muy dificil, ¿verdad?.

 

Autor : Manuel Vergel
Para : La Web del Programador