sintax1

/* sintax1.pro */
/* esempio sintassi prolog */
nowarnings
domains
N = integer
Reale = real
L = char
Stringa1,Stringa2,Tolta = string
include "menu.pro"
predicates
fine
pulisci
finestra
elabora1(integer)
elabora2(integer)
elabora3(integer)
termine1(integer)
termine2(integer)
termine3(integer)
scelta(integer)
scelta1(integer)
scelta2(integer)
scelta3(integer)
elabora(integer)
azione1
azione2
azione3
azione4
azione5
azione6
azione
finestra1
termine(integer)
goal finestra,azione.
clauses
  finestra:-
  makewindow(1,5,1,"",1,1,17,60),
  makewindow(2,7,1,"",15,40,5,40).
  
  pulisci:-
  shiftwindow(2),beep,
  write("premi ENTER per proseguire"),
  readchar(_),clearwindow,shiftwindow(1),
  clearwindow.
  finestra1:-shiftwindow(1),clearwindow.   
  azione:-
  menu(2,40,[funzioni_matematiche,
  richiesta_dati,funzioni_stringa,
  funzioni_conversione,
  funzioni_scrittura,
  funzioni_schermo,fine],Scelta),
  elabora(Scelta),
  termine(Scelta),!.
  elabora(0).
  elabora(1):-Scelta(1).
  elabora(2):-Scelta(2).
  elabora(3):-Scelta(3).
  elabora(4):-Scelta(4).
  elabora(5):-Scelta(5).
  elabora(6):-Scelta(6).
  termine(7).
  termine(0).
  Scelta(1):-azione1.
  Scelta(2):-azione2.
  Scelta(3):-azione3.
  Scelta(4):-azione4.
  Scelta(5):-azione5.
  Scelta(6):-azione6.
  Scelta(7):-fine.
  
  azione1:-
   clearwindow,
   menu(2,30,[funzioni_matematiche,
   menu_principale],Scelta),
   elabora1(Scelta),
   termine1(Scelta),!.
   elabora1(0).
   elabora1(1):-scelta1(1).
   elabora1(2):-scelta1(2).
   termine1(2).
   termine1(0).
   scelta1(1):-
   finestra1,
   write("funzioni matematiche\n"),
   X=10,Y=4,
   Somma=X+Y,Differenza=X-Y,Prodotto=X*Y,
   Quoziente=X/Y,Divisione=X div Y,
   Resto=X mod Y,
   write("numeri da elaborare:",X,"..",Y),nl,
   write("somma.......+........",Somma),nl,
   write("differenza..-........",Differenza),nl,
   write("prodotto....*........",Prodotto),nl,
   write("quoziente.../........",Quoziente),nl,
   write("divisione...div........",Divisione),nl,
   write("resto.......mod........",Resto),nl,
   write("-------------------------------"),nl,
   Radice=sqrt(100),Quadrato=X*X,
   Cubo=Quadrato*X,Esponenziale=exp(Y),
   Arrotondamento=round(77.98),
   Assoluto=abs(-6),
   write("sqrt(100).........",Radice),nl,
   write("quadrato 10*10....",Quadrato),nl,
   write("cubo=quadrato*X...",Cubo),nl,
   write("esponenz. exp(4)..",Esponenziale),nl,
   write("round(77.98)......",Arrotondamento),nl,
   write("assoluto abs(-6) .",Assoluto),nl,
   Random(R),
   write("random(reale).....",R),nl,
   pulisci,
   Loga10=log(100)/log(10),
   Lona=Ln(100),Seno=sin(30*3.14/180),
   Coseno=cos(30*3.14/180),
   Tangente=tan(30*3.14/180),
   Arcotangente=arctan(1),
   write("log(100)/log(10)..",Loga10),nl,
   write("ln(100)...........",Lona),nl,
   write("sin(30*3.14/180)..",Seno),nl,
   write("cos(30*3.14/180)..",Coseno),nl,
   write("tan(30*3.14/180)..",Tangente),nl,
   write("arctan(1).........",Arcotangente),nl,
   pulisci,
   azione1.
   scelta1(2):-write("ritorno a menu principale\n"),
      azione.                                        
      
   azione2:-
      clearwindow,
      menu(5,50,[richiesta_dati,
      torna_a_menu_principale],
      Scelta),
      elabora2(Scelta),
      termine2(Scelta),!.
      elabora2(0).
      elabora2(1):-scelta2(1).
      elabora2(2):-scelta2(2).
      termine2(2).
      termine2(0).
      scelta2(1):-
      finestra1,
      write("richiesta di dati\n"),
      write("readint(Intero)\n"),readint(Intero),
      write("readreal(Reale)\n"),readreal(Reale),
      write("readln(Stringa)\n"),readln(Stringa),
      write("readchar(Carattere)\n"),readchar(C), 
      write(C),
      pulisci,
      beep,azione2.
      scelta2(2):-write("ritorno a menu principale\n "),
      beep,azione.
      
 azione3:-
 clearwindow,
 menu(6,40,[funzioni_stringa,menu_principale],Scelta),
      elabora3(Scelta),
      termine3(Scelta),!.
      elabora3(0).
      elabora3(1):-scelta3(1).
      elabora3(2):-scelta3(2).
      termine3(2).
      termine3(0).
      scelta3(1):-
      finestra1,
      write("funzioni stringa \n"),
      Stringa1="padovano",
      write("frontchar(Stringa1,CHAR,Stringa2 "),nl,
      frontchar(Stringa1,Carattere,Stringa2),
      write(Stringa1,"\t",Carattere,"\t",Stringa2),nl,
      write("-------------------------"),nl,
      write("str_len(Stringa,Integer) "),nl,        
      str_len(Stringa1,N),
      write(Stringa1,"\t",N),nl,
      write("------------------------"),nl,
      S1="maria",S2="rosa",
      write("concat(S1,S2,S3) "),nl,
      concat(S1,S2,S3),
      write(S1,"\t",S2,"\t",S3),nl,
      write("------------------------"),nl,      
      Nome1=maria,
      isname(Nome1),
      write("isname(nome1)  "),write(Nome1),nl,
      Nome2="asia",
      isname(Nome2),
      write("isname(nome2)  "),write(Nome2),nl,
      write("------------------------"),nl,
      write("frontstr(numero,SQ,Tolta,Residua)"),nl,
      SQ=americano,
      frontstr(3,SQ,Tolta,Residua),
      write(SQ,"\t",Tolta,"\t",Residua),
      pulisci,
      beep,azione3.
      scelta3(2):-write("torna a menu principale\n"),
      beep,azione.     
   
   azione4:-
      finestra1,
      write(" funzioni_conversione,menu_principale "),nl,
      char_int('A',N),
      write("char_int(char,integer)..A..N....."),
      write(N),nl,
      str_int("65",M),
      write("str_int(string,integer)..65..M.."),
      write(N),nl,
      str_char(a,Carattere),
      write("str_char(string,char)..a..Carat..."),
      write(Carattere),nl,
      str_real("123.456",Reale),
      write("str_real(string,Real)..123.456..R..."),
      write(Reale),nl,
      upper_lower("AMERICA",Sm),
      write("upper_lower(string,string)..AMERICA.Sm.."),
      write(Sm),nl,
      pulisci,
      beep,azione.      
   azione5:-
      finestra1,
      write("funzioni scrittura \n"),
      write("write(6)...... "),write(6),nl,
      X=10,
      write("write(X)...10.."),write(X),nl,
      S="America e asia",
      write("write(S)..America e asia .."),
      write(S),nl,
      pulisci,
      azione.
      
   azione6:-
      finestra1,
      write("funzioni video e cursore \n"),
      write("scr_char(3,4,'a'..."),scr_char(3,4,'a'),nl,
      scr_char(3,10,'A'),readchar(_),
      write("scr_attr(3,10,4)...."),scr_attr(3,10,4),nl,      
      cursor(6,6),write("asiatica"),nl,
      field_str(6,6,3,S),
      cursor(6,46),write(S),nl,
      write("field_str(6,6,3,asiatica "),nl,
      cursor(8,6),write("america e asia"),nl,
      field_attr(8,6,4,3),
      write("field_attr(8,6,4,3).."),nl,
      pulisci,      
      write("cursor(riga,colonna).."),
      cursor(10,10),
      write("cursorform(1,6)..."),nl,
      cursorform(1,6),nl,
      write("attribute(2)  "),nl,
      attribute(2),write("colore assegnato"),nl,
      pulisci,
      attribute(6),
      cursorform(4,4),
      pulisci,
      write("attivazione sonora"),nl,
      write("sound(Durata,Altezza)..sound(100,500)"),nl,
      sound(100,500),
      write("segnale con BEEP "),beep,beep,nl,
      write("luce pulsante 128+codice colore "),nl,
      attribute(132),
      write("rosso pulsante 132" ),nl,
      attribute(4),write("rosso normale 4"),nl,
      write("date(Anno,Mese,Giorno)..."),nl,
      date(Anno,Mese,Giorno),
      write(Anno,"\t",Mese,"\t",Giorno),nl,
      write("time(Ora,Minuti,Secondi,Centesimi)"),nl,
      time(Ora,Minuti,Secondi,Centesimi),
      write(Ora,"\t",Minuti,"\t",Secondi,"\t",Centesimi),nl,
      pulisci,
      write("edit(Stringa1,Stringa2).."),nl,
      write("premi ENTER "),
      beep,readchar(_),
      Sa="stringa originaria:premi ESC",
      edit(Sa,Sb),
      pulisci,
      write("display(Stringa).."),nl,
      Sc="stringa per display:premi ESC",
      display(Sc),
      pulisci,
      write("dir(A:,*.*,INDICE).."),nl,
      write("premi ENTER ora e dopo la DIR "),
      readchar(_),
      disk("A:"),
      dir("A:","*.*",INDICE),
      pulisci,
      azione.
   fine:-
   clearwindow,
   write("fine prove\n"),beep.