[program]Tutorial Pascal - Lectia 3 - Meniu interactiv text

[program]Tutorial Pascal - Lectia 3 - Meniu interactiv text

Postby DarkByte » 19 Jan 2010, 09:28

Program exemplu


Lectia 3 (din tutorialele de Pascal)


Acesta este un exemplu de program (mic) care arata o parte din potentialul primelor trei tutoriale de Pascal postate pana in acest moment.

Creat si testat doar pe Borland Pascal 7.0, deci sa nu va aud ;))

Aici e codul:
  1. uses crt;
  2. const spaced = '    ';
  3.       select = '  * ';
  4. var c: char;
  5.     sel: integer;
  6. begin
  7.   clrscr;
  8.   c := #0;
  9.   sel := 1;
  10.   {afisam meniul initial}
  11.   TextColor(Yellow);
  12.   TextBackground(Blue); {galben pe albastru pentru optiunea selectata}
  13.   WriteLn(select, '1. BitCell.info');
  14.  
  15.   TextColor(LightGray);
  16.   TextBackground(Black);
  17.   WriteLn(spaced, '2. a doua optiune'); {gri deschis pe negru pentru restul}
  18.   WriteLn(spaced, '3. a treia optiune');
  19.   WriteLn(spaced, '4. a patra optiune');
  20.   WriteLn(spaced, '5. a cincea optiune');
  21.   WriteLn(spaced, '6. a sasea optiune');
  22.   WriteLn(spaced, '7. a saptea optiune');
  23.   WriteLn(#13#10, 'Press Esc to Exit ...');
  24.  
  25.   repeat
  26.     c := ReadKey; {asteptam o tasta}
  27.     case c of
  28.       #0:          {daca e tasta cu cod extins}
  29.         begin
  30.           c := ReadKey; {citim codul extins al tastei}
  31.           case c of
  32.             #72:  {0 - 72 = codul tastei sageata sus}
  33.               begin
  34.                 if sel > 1 then {nu putem selecta 0 sau mai mic}
  35.                   sel := sel - 1;
  36.               end;
  37.             #80:  {0 - 80 = codul tastei sageata jos}
  38.               begin
  39.                 if sel < 7 then {nu putem selecta mai mult de 7}
  40.                   sel := sel + 1;
  41.               end;
  42.             else writeln('0 - ', ord(c));
  43.           end;
  44.           clrscr;
  45.  
  46.           WriteLn(spaced, '1. BitCell.info');
  47.           WriteLn(spaced, '2. a doua optiune');
  48.           WriteLn(spaced, '3. a treia optiune');
  49.           WriteLn(spaced, '4. a patra optiune');
  50.           WriteLn(spaced, '5. a cincea optiune');
  51.           WriteLn(spaced, '6. a sasea optiune');
  52.           WriteLn(spaced, '7. a saptea optiune');
  53.           WriteLn(#13#10, 'Press Esc to Exit ...');
  54.           GotoXY(1, sel);
  55.  
  56.           TextColor(Yellow);
  57.           TextBackground(Blue);
  58.           case sel of
  59.             1: WriteLn(select, '1. BitCell.info');
  60.             2: WriteLn(select, '2. a doua optiune');
  61.             3: WriteLn(select, '3. a treia optiune');
  62.             4: WriteLn(select, '4. a patra optiune');
  63.             5: WriteLn(select, '5. a cincea optiune');
  64.             6: WriteLn(select, '6. a sasea optiune');
  65.             7: WriteLn(select, '7. a saptea optiune');
  66.           end;
  67.           TextColor(LightGray);
  68.           TextBackground(Black);
  69.         end;
  70. {      else WriteLn(ord(c));} {comentat pentru a nu afisa codul tastei apasate}
  71.     end;
  72.  
  73.   until (c = #27); {caracterul cu codul ASCII 27 corespunde tastei Esc}
  74.                    {deci folosim tasta Esc pentru a iesi din program}
  75. end.


Niste explicatii:
  • uses crt; - este vorba de biblioteca (unit) de functii si proceduri care faciliteaza lucrul in modul text in Pascal. Daca linia asta lipseste nu veti putea folosi o parte din functiile si procedurile de prin program.
  • ClrScr - (clear screen) sterge orice text de pe ecran si readuce culorile de afisare la valorile predefinite.
  • TextColor - seteaza culoarea textului (in modul text). Definita in unitul CRT.
  • TextBackGround - seteaza culoarea fondului (in modul text). Definita in unitul CRT.
  • ReadKey - asteapta apasarea unei taste si returneaza caracterul apasat (nu "prinde" taste gen Ctrl, Shift, CapsLock, etc). Daca tasta are cod extins (tastele functional, sagetile, etc), atunci va returna 0 si va trebui ca functia ReadKey sa fie apelata din nou pentru a primi codul extins al tastei.
  • GotoXY - seteaza pozitia cursorului de text. Determina locul de pornire pentru urmatoarea afisare.

Screenshot-uri din timpul rularii programului:
meniu pascal

meniu text


Surse si executabil -

Sper sa va placa :)

Daca aveti intrebari sau nelamuriri, puteti intreba aici.

7 points / 1 votes
Image

If you can't learn to do something well, learn to enjoy doing it poorly !
User avatar
DarkByte
Admin
 
Joined: 29 Dec 2009
Points: 71

Return to Tutoriale Pascal

Who is online

Users browsing this forum: No registered users and 0 guests