guida

Guida Pascal - 45. Compilatori

45. Esempi

Qui di seguito trovate due programmi creati interamente da me.
Il primo è un cronometro digitale con interfaccia grafica, il secondo è invece un programma che suona la famosissima canzone Merry Christmas.

program Cronometro;
uses crt,graph;
var x,i:integer;
    tick,num1,num2,num3,num4:integer;
    tasto:char;

procedure Grafica;
var a,b:integer;
begin
a:=detect;
initgraph(a,b,'');
if graphresult<>grok then begin
writeln('Errore di inizializzazione Driver Grafici');
clearviewport;
end;
end;

procedure Colore;
var a:byte;
begin
randomize;
setcolor(random(15-1));
end;

procedure Linea1;
begin
line(x+50,45,x+150,45);
end;

procedure Linea2;
begin
line(x+50,145,x+150,145);
end;

procedure Linea3;
begin
line(x+50,50,x+50,140);
end;

procedure Linea4;
begin
line(x+150,50,x+150,140);
end;

procedure Linea5;
begin
line(x+50,240,x+150,240);
end;

procedure Linea6;
begin
line(x+150,150,x+150,235);
end;

procedure Linea7;
begin
line(x+50,150,x+50,235);
end;

procedure Numero1;
begin
Linea4;Linea6;
end;

procedure Numero2;
begin
Linea1;Linea4;Linea2;Linea7;Linea5;
end;

procedure Numero3;
begin
Linea1;Linea4;Linea2;Linea6;Linea5;
end;

procedure Numero4;
begin
Linea3;Linea4;Linea2;Linea6;
end;

procedure Numero5;
begin
Linea1;Linea3;Linea2;Linea6;Linea5;
end;

procedure Numero6;
begin
Linea1;Linea3;Linea2;Linea7;Linea6;Linea5;
end;

procedure Numero7;
begin
Linea1;Linea4;Linea6;
end;

procedure Numero8;
begin
Linea1;Linea2;Linea3;Linea4;Linea5;Linea6;Linea7;
end;

procedure Numero9;
begin
Linea1;Linea3;Linea4;Linea2;Linea6;Linea5;
end;

procedure Numero0;
begin
Linea1;Linea3;Linea4;Linea5;Linea6;Linea7;
end;


procedure TickTock;
begin
  repeat
    repeat
     tick:=0;
     num4:=0;
     num3:=0;
     repeat
     sound(1000);
     delay(100);
     nosound;
      if keypressed then
      tasto:=readkey;
                  if ord(tasto)=114 then
		     begin
		     outtextxy(200,320,'Premi qualsiasi altro tasto per continuare');
                     delay(3000);
		     num4:=0;
		     num3:=0;
		     num2:=0;
		     num1:=0;
		     tick:=0;
		     end;
		     if ord(tasto)=105 then
		       begin
		       outtextxy(190,320,'Premi qualsiasi altro tasto per continuare');
		       repeat until keypressed
		     end;
                   if  ord(tasto)=117 then
		       begin
                       sound(1500);
                       delay(100);
                       nosound;
                       halt;
                       end;
   		       clearviewport;
		       outtextxy(160,300,'Ripartire "R"');
		       outtextxy(310,300,'Interrompere "I"');
                       outtextxy(460,300,'Uscire "U"');

      x:=430;
      if num4=10 then
       begin
        case tick of
         10:begin
             num3:=1;
             num4:=0;
            end;
         20:begin
             num3:=2;
             num4:=0;
            end;
         30:begin
             num3:=3;
             num4:=0;
            end;
         40:begin
             num3:=4;
             num4:=0;
            end;
         50:begin
             num3:=5;
             num4:=0;
            end;
       end;
      end;
      case num4 of
       0: Numero0;
       1: Numero1;
       2: Numero2;
       3: Numero3;
       4: Numero4;
       5: Numero5;
       6: Numero6;
       7: Numero7;
       8: Numero8;
       9: Numero9;
      end;
      x:=290;
      case num3 of
       0: Numero0;
       1: Numero1;
       2: Numero2;
       3: Numero3;
       4: Numero4;
       5: Numero5;
      end;
      x:=120;
      case num2 of
       0: Numero0;
       1: Numero1;
       2: Numero2;
       3: Numero3;
       4: Numero4;
       5: Numero5;
       6: Numero6;
       7: Numero7;
       8: Numero8;
       9: Numero9;
      end;
      x:=0;
      case num1 of
       0: Numero0;
       1: Numero1;
       2: Numero2;
       3: Numero3;
       4: Numero4;
       5: Numero5;
      end;
      delay(1000);
      num4:=num4+1;
      tick:=tick+1;
     until num4=11;
     num2:=num2+1;
    until num2=10;
    num1:=num1+1;
    num2:=0;
  until num1=6;
end;

begin
grafica;
colore;
tick:=0;
num4:=0;
num3:=0;
num2:=0;
num1:=0;
ticktock;
end.
program MerryChristmas;
uses crt;
const
DoMin: Integer=261;
Re   : Integer=293;
Mi   : Integer=329;
Fa   : Integer=349;
Sol  : Integer=392;
La   : Integer=440;
Si   : Integer=493;
DoMag: Integer=523;
begin
randomize;
repeat
sound(domin);
delay(500);
sound(fa);
delay(500);
sound(fa);
delay(250);
sound(sol);
delay(250);
delay(50);
sound(fa);
delay(250);
sound(mi);
delay(250);
sound(re);
delay(500);
sound(re);
delay(500);
sound(re);
delay(500);
sound(sol);
delay(250);
sound(la);
delay(250);
delay(50);
sound(sol);
delay(250);
sound(fa);
delay(250);
sound(mi);
delay(500);
sound(domin);
delay(500);
sound(domin);
delay(500);
sound(la);
delay(500);
sound(la);
delay(250);
sound(si);
delay(250);
delay(50);
sound(la);
delay(250);
sound(sol);
delay(250);
sound(fa);
delay(500);
sound(re);
delay(500);
sound(domin);
delay(250);
sound(domin);
delay(250);
delay(50);
sound(re);
delay(500);
sound(sol);
delay(500);
sound(mi);
delay(500);
sound(fa);
delay(1000);
sound(domin);
delay(500);
sound(fa);
delay(500);
sound(fa);
delay(500);
sound(fa);
delay(500);
sound(mi);
delay(1000);
sound(mi);
delay(500);
sound(fa);
delay(500);
sound(mi);
delay(500);
sound(re);
delay(500);
sound(domin);
delay(1000);
sound(sol);
delay(500);
sound(la);
delay(500);
sound(sol);
delay(500);
sound(fa);
delay(500);
sound(domag);
delay(500);
sound(domin);
delay(500);
sound(domin);
delay(250);
sound(domin);
delay(250);
sound(re);
delay(500);
sound(sol);
delay(500);
sound(mi);
delay(500);
sound(fa);
delay(1000);
nosound;
until
keypressed;
end.