LEYENDO DESDE TECLADO Y ESCRIBIENDO EN EL MONITOR

cd.gif (1746 bytes)Hay muchas formas de introducir información en una computadora, desde teclado, con el mouse, desde disco flexible, con una unidad de CD-ROM, y un sin número de mecanismos que por ahora no alcanzo a mencionar; del mismo modo también hay múltiples formas de sacar información, por el monitor, la impresoraPRINTERB.gif (4682 bytes), un módem, entre otros. En este capítulo se explica como leer información desde el teclado y desplegar esta en la pantalla de tu computadora, mas adelante veremos el uso de otros mecanismos.

READ(Nombre_Variable)

Este comando para el programa y espera a que el usuario introduzca un dato, el cual sera almacenado en la variable "Nombre_Variable"; como es READ se lee la información y se queda en la misma linea.

 

READLN(Nombre_Variable)

Este comando hace exactamente lo mismo que el anterior, solo que se produce un salto de linea.

 

WRITE(Nombre_Variable)

Este comando escribe el contenido de la variable "Nombre_Variable" sin producir salto de linea.

 

WRITELN(Nombre_Variable)

Similar al anterior pero con salto de linea.

 

Program segundo;

Uses crt;

Var

Cualquier_texto : string;

Begin

Clrscr;

Write(‘Escribe lo que quieras y termina con [ENTER]’);

Readln(Cualquier_texto);

Writeln(‘El texto que escribiste es el siguiente:‘, Cualquier_texto );

Readln;

End.

 

FORMATOS PARA WRITE, WRITELN, READ, READLN

Para estos dos comandos se pueden usar salidas formateadas con el fin de mejorar el aspecto de presentación en la pantalla; un monitor en modo texto, tiene 80 columnas por 25 filas, que se numeran desde el 0 hasta la 79 en el caso de las primeras y de 0 a 24 para las últimas. Con este programita entenderás mejor la diferencia entre columnas y filas

Ver Código Fuente

Ver Ejecutable

Cuando se necesite imprimir por pantalla información de tipo REAL, se puede indicar cuantas posiciones decimales se mostraran; ejemplo:

FORMATO

SALIDA EN PANTALLA

Write(1/3); 3.3333333333E-0001
Write(1/3:4:3); 0.333

ESCRIBIENDO CÓDIGOS ASCII

 Si se quiere escribir cualquier carácter de la tabla ASCII, basta con anteponer el carácter "#" a cualquier número comprendido entre 0 y 255, ejemplo:

Write(#176);

La anterior expresión despliega el carácter ‘ ’

Este programa te muestra los códigos ASCII

Ver Código Fuente

Ver Ejecutable

 

MANEJO DE COLORES Y POSICIONES EN LA PANTALLA

Hay múltiples procedimientos que permiten "decorar", y hacer más llamativo un programa, estas están contenidas en la unidad CRT.colors2.gif (2462 bytes)

Textmode

Este permite cambiar el modo de video. Cada que tu corres un programa bajo modo texto, se tienen 80 columnas por 25 filas en color, pues bien eso también se puede alterar.
En la siguiente tabla te muestro las diferentes constantes definidas por Turbo Pascal para indicar el modo de pantalla que se utilizará:

Constante

Valor

Modo De Video

BW40

0

40x25 Blanco y negro en tarjeta de COLOR

CO40

1

40x25 COLOR

BW80

2

80x25 Blanco y negro en tarjeta de COLOR

CO80

3

80x25 COLOR (Este es el modo por defecto)

Mono

7

80x25 Monocromático

Ejemplo:

Program Cambio_de_modo;

Uses crt;

Begin

Writeln('Este es el modo normal');

Readln;

Textmode(CO40);{Pasa el modo texto a 40 columnas en color}

Writeln('Este es el modo CO40');

Readln;

Writeln('De nuevo en el modo normal');

End.

COLORES

Las constantes definidas para los colores son:

Primer Plano Y Fondo

Primer Plano

Constante

Valor

Color

Constante

Valor

Color

Black

0

Negro

Dark gray

8

Gris Oscuro

Blue

1

Azul

Light Blue

9

Azul claro

Green

2

Verde

Light Green

10

Verde claro

Cyan

3

Cyan

Light Cyan

11

Cyan claro

Red

4

Rojo

Light Red

12

Rojo claro

Magenta

5

Magenta

Light Magenta

13

Magenta claro

Brown

6

Café

Yellow

14

Amarillo

Light Gray

7

Gris claro

White

15

Blanco

 

Si se quiere hacer que el texto brinque se le adiciona al color la palabra blink o el numero 132.

Por ejemplo :

textcolor(lightblue+132);

o tambien textcolor(lightblue+blink);

La unidad CRT provee un conjunto de variables utilizadas para modificar aspectos referentes a entradas de teclado, modo de la pantalla, etc. A continuación se listan las principales con su función específica.

CheckBreak

Tipo : boolean. Cuando el contenido de esta variable es True se encuentra activada la terminación de un programa por medio de las teclas Crtl-Break. Si se cambia su valor a False se desactiva esta opción.

Su valor por defecto es True.

LastMode

Tipo : Word La variable LastMode contiene el valor del modo de texto actual. Se inicializa al momento de iniciar el programa y se utiliza comunmente para restaurar el modo original al momento de terminar el programa, ejemplo:

Program cambio_de_modos;

uses crt;

var

Video_original: integer;

begin

CheckBreak:=False; { Apaga el chequeo de Contrl-C }

Video_original:=LastMode; { Recuerda el mod de video original }

TextMode(Lo(LastMode)+Font8x8); { Pasa a 43 o 50 lineas sobre EGA/VGA }

write('Este es un modo de video pequeñito');

readln;

textmode(CO40); {Pasa a modo 40 x 25}

write('Este es un modo de video enorme');

readln;

textmode(Video_original); {Vuelve al modo normal}

write('Este es el modo de video normal');

readln;

end.

ClrEol

Este procedimiento borra todos los caracteres de la linea actual desde la posición del cursor hasta el final de la linea. Ejemplo:

Program Uso_del_clreol;

Uses Crt;
Var columnas, filas : Integer;

Begin

{Se hace un dos ciclos que recorren totalmente la pantalla imprimiendo el carácter #219 del código ASCII}

For Columnas := 1 To 80 Do
For Filas := 1 To 24 Do

Begin

Gotoxy(Columnas,Filas); {Se ubica en la columna, fila específica }
Write('_ ');{Imprime el codigo Ascii #219}

End;

Gotoxy(2,4); Clreol;{Se ubica en la columna 2, fila 4 y limpia hasta la columna 80}

Gotoxy(12,10); Clreol; {Se ubica en la columna 12, fila 10 y limpia hasta la columna 80}

End.

ClrScr;

Se utiliza para borrar la pantalla completa o la ventana actual.

Delay(Espera : Word);

Detiene la ejecución del programa durante un tiempo especificado en la variable Espera en milisegundos. El intervalo válido es desde 0 hasta 65535 (Pues es de tipo WORD), la precisión del retardo depende de la precisión del reloj interno de la computadora. Ejemplo:

Program Uso_del_clreol_pero_con_delay;

Uses Crt;
Var columnas, filas : Integer;

Begin

{Se hace un dos ciclos que recorren totalmente la pantalla imprimiendo el carácter #219 del código ASCII}

For Columnas := 1 To 80 Do
For Filas := 1 To 24 Do

Begin

Gotoxy(Columnas,Filas);{Se ubica en la columna, fila específica }
Write('µ ');{Imprime el codigo Ascii #219}

Delay(20);{Hace un retardo de 20 milisegundos}

End;

Gotoxy(2,4); Clreol;{Se ubica en la columna 2, fila 4 y limpia hasta la columna 80}

Gotoxy(12,10); Clreol; {Se ubica en la columna 12, fila 10 y limpia hasta la columna 80}

End.

DelLine;

Borra la linea donde se encuentra el cursor y las lineas inferiores suben una posición. Ejemplo:

Program Borra_Linea;
Uses Crt;
Var Linea : Integer;
Begin
Clrscr;
For Linea:= 1 To 10 Do Writeln('Linea Número: ', Linea);
Writeln('Presione Cualquier tecla para eliminar la linea # 3');
Readkey;
Gotoxy(0,3);
Delline;
Writeln('La linea #3 fue borrada');
Readkey;rea
End.

GotoXY(Columna, fila : Byte);

Ubica el cursor en las coordenadas especificadas por Columna y Fila.
La variable Columna representa el valor de X partiendo de izquierda a derecha.

Estas son las columnas

La variable fila representa el valor de Y partiendo de arriba hacia abajo.

Que fila tan demorada

Con el siguiente programa entenderás mejor el uso del procedimiento GOTOXY(Columna,fila) y la diferencia entre columnas(X) y filas(Y).

 

Ver Código Fuente

Ver Ejecutable

HighVideo;

Activa la pantalla de video de alta intensidad.

InsLine;

Inserta una linea en blanco en la posición actual del cursor.

LowVideo;

Activa la pantalla de video de baja intensidad.

NormVideo;

Restaura los atributos de primer plano y fondo a los colores originales establecidos cuando arrancó el programa.

NoSound;

Desactiva el sonido iniciado con el procedimiento Sound.

Sound (Frecuencia : Word);

Activa el parlante interno del computador en una frecuencia determinada por el valor de Frecuencia. Para desactivarlo es obligatorio ejecutar el procedimiento NoSound o de lo contrario tu computador pitara como loco hasta que lo resetees o lo apagues.

tu tururutu tu tu!!

A continuación te presento dos programas que hacen uso del procedimiento SOUND :

piano.gif (2901 bytes)PIANOpiano.gif (2901 bytes)

Ver Código Fuente

Ver Ejecutable

Codificador Morse

Ver Código Fuente

Ver Ejecutable

TextBackGround (Color : byte);

Se utiliza para seleccionar el color del fondo de la pantalla. Los valores que puede utilizar son del 0 al 7, también es posible utilizar las constantes predefinidas para los colores como YELLOW, BLUE, RED, entre otras. Hay que destacar que este procedimiento se usa en conjunto con el procedimiento CLRSCR para que tenga efecto el cambio.

Ejemplo:

Program cambio_de_color;

Uses crt;

Begin

Clrscr;

Writeln('Estamos con fondo normal');

Readln;

Textbackground(BLUE);

Clrscr;

Writeln('Ahora el fondo es azul');

Readln;

End.

TextColor (Color: Byte);

Se usa para seleccionar el color del texto en la pantalla, al igual que TextBackGround también se pueden usar utilizar las constantes predefinidas para los colores como LIGHTMAGENTA, LIGHTGREEN, BROWN entre otros.

Para que quede mas claro el manejo de los procedimientos textbackground y textcolor, aquí te presento un programita que permite escoger el color del fondo deseado. Espero sea de tu agrado

Ver Código Fuente

 Ver Ejecutable

Window (x1, y1, x2, y2 : Byte);

Define las coordenadas de la ventana de texto activa; x1 y y1 son las coordenadas de la esquina superior izquierda, x2 y y2 son las coordenadas de la esquina inferior derecha.

El siguiente programa ilustra la forma como crear ventanas:

Ver Código Fuente

 Ver Ejecutable

Ya que estudiaste los procedimientos, ahora te presento las funciones de la unidad CRT

KeyPressed

Tipo: Boolean
La función KeyPressed devuelve el valor de True si se pulsó alguna tecla y false si no se ha presionado ninguna.
Este pequeño programa funciona hasta que el usuario presiona una tecla
Program uso_del_keypressed;
Uses crt;
Var
Contador : byte
Begin
Clrscr; Contador:=0;
Repeat
Contador:=contador+1;
Writeln(contador);
If contador>=100 then contador:=0;
Until keypressed;
End.

ReadKey

Tipo: Char
Esta función lee un caracter del teclado, se usa mucho para leer teclas de dirección, teclas de control y de funciones, un ejemplo práctico de esta función es el piano que se mostró anteriormente.

WhereX

Tipo: Byte
WhereX devuelve el número de la columna donde se encuentra el cursor.

WhereY

Tipo: Byte
La función WhereY devuelve el número de la fila donde se encuentra el cursor.

 

 

A continuación te muestro un programa que hace uso de estas múltiples funciones y procedimientos:

{1}program manejo_de_pantalla;

{2}uses crt;

{3}var

{4} nombre : string[30];

{5} edad : byte;

{6} peso : real;

{7}begin

{8} textbackground(LIGHTBLUE);

{9} clrscr;

{10} gotoxy(10,2);

{11} textcolor(YELLOW);

{12} write('ENTRADA DE DATOS');

{13} textcolor(WHITE);

{14} gotoxy(1,4);

{15} write('Digita tu nombre : ');

{16} gotoxy(20,4);

{17} read(nombre);

{18} gotoxy(1,5);

{19} write('Digita tu edad : ');

{20} gotoxy(20,5);

{21} read(edad);

{22} gotoxy(1,6);

{23} write('Digita tu peso : ');

{24} gotoxy(20,6);

{25} read(peso);

{26} textbackground(BLACK);

{27} clrscr;

{28} gotoxy(10,2);

{29} write('IMPRESION DE DATOS');

{30} gotoxy(2,4);

{31} write('NOMBRE....: ',nombre);

{32} gotoxy(2,5);

{33} write('EDAD......: ',edad);

{34} gotoxy(2,6);

{35} write('PESO......: ',peso:2:2);

{36} readkey;

{37}end.

Explicación

{1}Linea de identificación de programa

{2}Uso de la unidad CRT

{3}Comienzo de definición de variables

{4}Declaración de la variable NOMBRE de tipo STRING

{5} Declaración de la variable EDAD de tipo BYTE

{6} Declaración de la variable PESO de tipo REAL

{7}Inicio del bloque principal del programa

{8}Se cambia el color del fondo a azul brillante

{9}Se limpia la pantalla

{10}Se ubica el cursor en la columna 10 fila 2

{11}Cambiamos el color del texto a AMARILLO

{12}Se imprime en la pantalla el letrero "ENTRADA DE DATOS"

{13}Se cambia el color del texto a blanco.

{14}Se ubica el cursor en la posición columna 1, fila 4

{15}Se imprime en la pantalla el letrero ‘DIGITA TU NOMBRE’ {16}Se ubica el cursor en la columna 20 fila 4

{17}Se lee la información de tipo cadena que será almacenada en la variable NOMBRE

{18}Se ubica el cursor en la columna 1 fila 5

{19} Se imprime en la pantalla el letrero ‘DIGITA TU EDAD’

{20} Se ubica el cursor en la columna 20 fila 5

{21} Se lee la información de tipo BYTE que será almacenada en la variable EDAD

{22} Se ubica el cursor en la columna 1 fila 6

{23} Se imprime en la pantalla el letrero ‘DIGITA TU PESO’

{24}Se ubica el cursor en la columna 20 fila 6

{25} Se lee la información de tipo REAL que será almacenada en la variable PESO

{26}Se cambia el color del fondo a negro

{27}Se limpia la pantalla con la función CLRSCR para que tenga efecto el cambio de color establecido por la función TEXTBACKGROUND (BLACK)

{28}Se ubica el cursor en la columna 10 fila 2

{29}Se imprime en la pantalla el letrero ‘IMPRESIÓN DE DATOS’

{30}Se ubica el cursor en la columna 2 fila 4

{31}Se imprime el texto ‘NOMBRE’ y el contenido de la variable NOMBRE leido anteriormente

{32}Se ubica el cursor en la columna 2 fila 5

{33}Se imprime el texto ‘EDAD’ y el contenido de la variable EDAD leido anteriormente

{34} Se ubica el cursor en la columna 2 fila 6

{35} Se imprime el texto ‘PESO’ y el contenido de la variable PESO leido anteriormente

{36}Con la función READKEY se hace una espera hasta que el usuario presione cualquier tecla.

{37}Este es el final del programa.


Anterior Pulsa aquí para regresar

Siguiente Pulsa aquí para continuar

Indice Presiona aquí para regresar al índice