prolo5z


/* grafi5.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* attivazione grafica con TURTLE */
domains
  intero= integer
  angolo= integer
Predicates
  disegna(Intero,Intero,Intero,intero)
  /*  inizio linee,numero disegni,angolo */
Goal 
  graphics(1,7,1),attribute(1),
  disegna(100,100,100,10).
Clauses
  disegna(Riga1,Colonna1,Contatore,Angolo) :-
     Contatore>0,!,
     pendown,
     pencolor(5),
     right(Angolo),
     forward(2000),
     Colonna2=Colonna1+20,
     Riga2=Riga1+20,
     Angolo2=Angolo+10,
     Contatore2=Contatore-1,
     disegna(Riga2,Colonna2,Contatore2,Angolo2).
  Disegna(_,_,0,0) :-sound(100,500),cursor(18,2).
     


/* grafi6.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* attivazione grafica con TURTLE */
/* disegna quadrato o triangolo */
domains
  intero= integer
  angolo= integer
Predicates
  disegna(Intero,Intero,Intero,intero)
  /*  inizio linee,numero disegni,angolo */
Goal 
  graphics(1,7,1),attribute(1),
  disegna(100,100,4,90).
  /* 3,120 per triangolo */
  /* 4,90 per quadrato */
Clauses
  disegna(Riga1,Colonna1,Contatore,Angolo) :-
     Contatore>0,!,
     pendown,
     pencolor(5),
     right(Angolo),
     forward(10000),
     Colonna2=Colonna1+20,
     Riga2=Riga1+20,
     Contatore2=Contatore-1,
     disegna(Riga2,Colonna2,Contatore2,Angolo).
  Disegna(_,_,0,0) :-sound(100,500),cursor(18,2).
     


/* grafi7.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* attivazione grafica con DOT e LINE */
domains
  intero= integer
Predicates
  disegna(Intero,Intero,Intero)
Goal 
  graphics(1,7,1),attribute(1),
  disegna(100,100,100).
Clauses
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore=2,
  line(Riga1,2000,Riga1,10000,3),
  dot(Riga1,Colonna1,Colore),
  Riga2=Riga1+200,
  Colonna2=Colonna1+200,
  N2=N-1,
  disegna(Riga2,Colonna2,N2).


/* sencos1.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna COSINUSOIDE e sinusoide con DOT  */
domains
  intero= integer
Predicates
  disegna(Intero,Intero,Intero)
Goal 
  graphics(1,7,1),attribute(1),
  write("\tCosinusoide-Sinusoide\n\n"),
  line(16000,1000,16000,32000,7),
  line(1000,1000,30000,1000,7),
  disegna(16000,1000,1440).
Clauses
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore=2,
  Riga2=16000+round(5000*sin(N*3.14/180)),
  Riga3=16000+round(5000*cos(N*3.14/180)),
  dot(Riga3,Colonna1,7),
  dot(Riga2,Colonna1,Colore),
  Colonna2=Colonna1+20,
  N2=N-1,
  disegna(Riga1,Colonna2,N2).
  disegna(_,_,_).


/* sencos2.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna COSINUSOIDE e sinusoide piena con Line  */
domains
  intero= integer
Predicates
  disegna(Intero,Intero,Intero)
Goal 
  graphics(1,7,1),attribute(1),
  write("\tCosinusoide-Sinusoide\n\n"),
  line(16000,1000,16000,32000,7),
  line(1000,1000,30000,1000,7),
  disegna(16000,1000,1440).
Clauses
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore=2,
  Riga2=16000+round(5000*sin(N*3.14/180)),
  Riga3=16000+round(5000*cos(N*3.14/180)),
  line(16000,Colonna1,Riga3,Colonna1,7),
  line(16000,Colonna1,Riga2,Colonna1,Colore),
  Colonna2=Colonna1+20,
  N2=N-1,
  disegna(Riga1,Colonna2,N2).
  disegna(_,_,_).


/* seno1.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna SINUSOIDE con LINE e DOT */
domains
  intero= integer
Predicates
  disegna(Intero,Intero,Intero)
Goal 
  graphics(1,7,1),attribute(1),
  line(16000,1000,16000,32000,7),
  disegna(22000,1000,1440).
Clauses
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore=2,
  dot(Riga1,Colonna1,Colore),
  Riga2=Riga1+100*sin(N*3.14/180),
  Colonna2=Colonna1+20,
  N2=N-1,
  disegna(Riga2,Colonna2,N2).


/* trigono1.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna COSINUSOIDE e sinusoide con DOT  */
domains
  intero= integer
  
Predicates
  disegna(Intero,Intero,Intero)
  assi
    
Goal 
  graphics(1,7,1),attribute(1),
  write("\tCosinusoide-Sinusoide\n\n"),
  assi,
  disegna(16000,1000,1440).
Clauses
  assi:-
  RH1=16000,CH1=1000,RH2=16000,CH2=32000,
  RV1=1000,CV1=1000,RV2=30000,CV2=1000,
  line(RH1,CH1,RH2,CH2,7),
  line(RV1,CV1,RV2,CV2,7).
  
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore1=2,
  Colore2=7,
  R=16000,
  Scala=5000,
  Riga2=R+round(Scala*sin(N*3.14/180)),
  Riga3=R+round(Scala*cos(N*3.14/180)),
  dot(Riga3,Colonna1,Colore1),
  dot(Riga2,Colonna1,Colore2),
  Colonna2=Colonna1+20,
  N2=N-1,
  disegna(Riga1,Colonna2,N2).
  disegna(_,_,_).


/* trigono2.pro  */
/* Questo programma richiede una scheda EGA o CGA */
/* Non Š supportata la scheda Hercules!  */
/* disegna due sinusoidi con Line  */
domains
  intero= integer
  
Predicates
  disegna(Intero,Intero,Intero)
  assi
  fine    
Goal 
  graphics(1,7,1),attribute(2),
  /* prova 1,2,3,4,5 per primo parametro */
  
  write("\t\tOpposizione\n\n"),
  assi,
  disegna(16000,1000,1440),
  fine.
Clauses
  assi:-
  RH1=16000,CH1=1000,RH2=16000,CH2=32000,
  RV1=1000,CV1=1000,RV2=30000,CV2=1000,
  line(RH1,CH1,RH2,CH2,7),
  line(RV1,CV1,RV2,CV2,7).
  
  disegna(Riga1,Colonna1,N):-
  N>0,!,
  Colore1=2,Colore2=5,
  R=16000,
  Scalax=6000,Scalay=6000,
  Seno1=R+round(Scalax*sin(N*3.14/180)),
  Seno2=R-round(Scalay*sin(N*3.14/180)),
  line(R,Colonna1,Seno1,Colonna1,Colore1),
  line(R,Colonna1,Seno2,Colonna1,Colore2),
  N2=N-1,
  Colonna2=Colonna1+20,
  disegna(Riga1,Colonna2,N2).
  disegna(_,_,_).
  fine:- sound(100,500),
  cursor(19,2).