Write, Writeln, Read, Readln y GotoXY

Antes de continuar avanzando voy a explicar estos procedimientos, así que voy a lo que te interesa: ¿Cómo se utilizan?..

Write
Su principal función es la de mostrar mensajes en pantalla para poder interactuar con en usuario, ademas de permitirnos crear la interfaz gráfica del programa, entre otras.
Su estructura es: Write ('Aquí va el texto que se mostrara en pantalla');

Writeln
Su finalidad es la misma que el anterior, solo que el próximo texto en escribirse en pantalla se escribirá en una línea inferior.
Su estructura es: Writeln ('');

Read
Se utiliza cuando pedimos al usuario que ingrese texto, números o lo que se necesite para continuar con la ejecución.
Su estructura es: Read (Aquí va una variable donde se guardará lo ingresado por el usuario);

Readln
Exactamente igual al anterior solo que lo próximo en aparecer en pantalla se escribirá en la siguiente línea.
Su estructura es: Readln ();

GotoXY
Este procedimiento sirve para mover el cursor a las coordenadas de la pantalla virtual que necesitemos, ademas si se combina con Write podemos mostrar un mensaje en cualquier parte de la pantalla. Es un procedimiento muy útil para la creación de la interfaz gráfica.
Su forma de declarar es: GotoXY (Coordenada X, Coordenada Y);
Coordenada X: número de la columna (Hasta 80, en TurboPascal)
Coordenada Y: número de la fila (Hasta 25, en TurboPascal).

Ejemplos
Integremos todo esto en un ejemplo de un menú para un programa escrito con TurboPascal.
Aquí hay otro ejemplo




Program Menu;
Uses Crt;
Var
   Sal:Char;
   Selec:Shortint;
   Esc,Tecla:Boolean;

Procedure Menu;
Var
  y:Shortint;
  Des:Char;

 Procedure Creditos;
 Begin
   Clrscr;Textcolor(15);Gotoxy(33,5);
   Writeln ('Ejemplo de "MENU"');
   Gotoxy(27,7);
   Writeln ('----------------------------');
   Gotoxy(34,9);
   Writeln ('Proyecto 2009');
   Gotoxy (19,12);
   Writeln ('Hecho en Pascal, compilado con Turbo Pascal');
   Gotoxy(25,15);
   Writeln ('Programado por:  Matias Correnti');
   Gotoxy(24,24);Textcolor(11);
   Writeln ('PULSE UNA UNA TECLA PARA REGRESAR');Readkey;
 End;

 Procedure escfondo;
 Var :Shortint;
 Begin
   clrscr;textbackground(3);textcolor(8);
   For := 1 to 12 do
    Begin
      gotoXY(21,y);
      write('°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°');
      gotoXY(21,25-y);
      write('°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°');
      gotoXY(1,13-y);
      write('°°°°°°°°°°°°°°°°°°°°');
      gotoXY(1,12+y);
      write('°°°°°°°°°°°°°°°°°°°°');
      gotoXY(63,12+y);
      write('°°°°°°°°°°°°°°°°°°');
      gotoXY(63,13-y);
      write('°°°°°°°°°°°°°°°°°°');
    End;
   For := 5 to 20 do
     Begin
       textbackground(LightGray);
       gotoXY(25,y);writeln('                                  ');
       textbackground(0);
       If y < 20
         Then
           Begin
             gotoXY(59,2+y);writeln(' ');
           End;
     End;
   gotoXY(28,21);writeln('                               ');
 End;

 Procedure escmenu;
 Begin
   textcolor(12);textbackground(lightgray);
   gotoXY(40,6);writeln('MENU');textcolor(0);
   gotoXY(33,8);writeln('          ');
   gotoXY(34,8);writeln('Opcion 1');
   gotoXY(33,10);writeln('          ');
   gotoXY(34,10);writeln('Opcion 2');
   gotoXY(33,12);writeln('          ');
   gotoXY(34,12);writeln('Opcion 3');
   gotoXY(33,14);writeln('          ');
   gotoXY(34,14);writeln('Opcion 4');
   gotoXY(33,16);writeln('          ');
   gotoXY(34,16);writeln('Creditos');
   gotoXY(33,18);writeln('       ');
   gotoXY(34,18);writeln('Salir');
 End;

 Procedure escselec;
 Begin
   textbackground(9);textcolor(0);
   Case Selec of
     1:begin
         gotoXY(33,8);writeln('          ');
         gotoXY(34,8);writeln('Opcion 1');
       end;
     2:begin
         gotoXY(33,10);writeln('          ');
         gotoXY(34,10);writeln('Opcion 2');
       end;
     3:begin
         gotoXY(33,12);writeln('          ');
         gotoXY(34,12);writeln('Opcion 3');
       end;
     4:begin
         gotoXY(33,14);writeln('          ');
         gotoXY(34,14);writeln('Opcion 4');
       end;
     5:begin
         gotoXY(33,16);writeln('          ');
         gotoXY(34,16);writeln('Creditos');
       end;
     6:begin
         gotoXY(33,18);writeln('       ');
         gotoXY(34,18);writeln('Salir');
       end;
   end; {Case}
   textcolor(2);textbackground(15);
 End;

Begin
  If Esc
    Then
      begin
        escfondo;
        escmenu;
        Esc := False;
      end;
  If Tecla
    Then escselec
    Else Tecla := True;
  gotoxy(41,51); Des := READKEY;
  textbackground(0);textcolor(15);
  If Des = #13
    Then
      Case Selec of
        1:begin
            clrscr;
            Esc := True; {No hace nada ==> Regresa a Menu}
            Selec := 1;
          end;
        2:begin
            clrscr;
            Esc := True; {No hace nada ==> Regresa a Menu}
            Selec := 1;
          end;
        3:begin
            clrscr;
            Esc := True; {No hace nada ==> Regresa a Menu}
            Selec := 1;
          end;
        4:begin
            clrscr;
            Esc := True; {No hace nada ==> Regresa a Menu}
            Selec := 1;
          end;
        5:begin
            clrscr;
            Creditos;
            Esc := True; {Muestra los Creditos ==> Regresa a Menu}
            Selec := 1;
          end;
        6:begin
            Repeat
              Clrscr; gotoXY(25,12);
              write ('Esta seguro que quiere salir? (S/N) ');
              Sal := Readkey; Esc := True; Selec := 1;
            Until (Sal = #83) or (Sal = #78);
          end;
      End {Case}
    Else
      If Des = #0
        Then Tecla := False;
      Case Des of
        #72:begin {Arriba}
              If Selec = 1
                then Selec := 6
                else Selec := Selec - 1;
              escmenu;
            end;
        #80:begin {Abajo}
              If Selec = 6
                then Selec := 1
                else Selec := Selec + 1;
              escmenu;
            end;
      End; {Case}
End;  {Menu}

Begin
  Clrscr;
   Tecla := True; Esc := True; Selec := 1;
    Repeat
      Menu;
    Until (Sal = #83);
  Clrscr;
End.



En este ejemplo hay cosas que aún no vimos, pero no hay que desesperar si no entiendes nada del código, con tiempo y práctica veras que no es muy difícil de entender ni de escribirlo.

Para aclara un poco el código he escrito algunas cosas con colores, para poder marcarlos más adelante, ya que lo usaremos como ejemplo para explicar otras estructuras que no he explicado.

Por el momento aclaremos que marca cada color.
Azul: Son las variables que he declarado para poder operar.
Rojo: Son las llamadas a los procedimientos cuyos nombres también están en rojo.
Verde agua: Son las estructuras Case, If,  Repeat y For. También está la estructura While que no aparece en este ejemplo.
Aquí hay un While

Para finalizar la única forma de aprender y de ver como se comporta cada estructura es practicando y probando diferentes formas de resolver una situación, ya que siempre hay otro modo de resolver las cosas.

No hay comentarios.:

Publicar un comentario