prolo18

iterazione e cicli vari

/* ciclo1.pro */
/* stampa numeri crescenti e decrescenti */
domains
 Contatore ,Contatore1 = integer
predicates
 calcola(Contatore)
 calcola1(Contatore)
 
 goal makewindow(1,7,7,"stampa numeri da 10 a 1",1,1,20,70),
 calcola(10),
 sound(400,600),
 clearwindow(),
 removewindow(),
 makewindow(1,6,2,"numeri da 1 a 14",1,1,20,60),
 calcola1(1).
 
clauses
 calcola(Contatore) :-   
  Contatore>0,!,
  write(Contatore),nl,
  Contatore2=Contatore-1,
  calcola(Contatore2).
calcola(0).
  
 calcola1(Contatore1):-
  Contatore1<15,!,
  write(Contatore1),nl,
  Contatore3=Contatore1+1,
  calcola1(Contatore3).  
 calcola1(0). 

/* ciclo2.pro */
/* stampa numeri pari e dispari */
domains
 Contatore ,Contatore1 = integer
predicates
 calcola(Contatore)
 calcola1(Contatore)
 
 goal makewindow(1,7,7,"stampa numeri pari",1,1,20,70),
 calcola(2),
 sound(400,600),
 clearwindow(),
 removewindow(),
 makewindow(1,6,2,"numeri dispari",1,1,20,60),
 calcola1(1).
 
clauses
 calcola(Contatore) :-   
  Contatore<20,!,
  write(Contatore),nl,
  Contatore2=Contatore+2,
  calcola(Contatore2).
calcola(_).
  
 calcola1(Contatore1):-
  Contatore1<20,!,
  write(Contatore1),nl,
  Contatore3=Contatore1+2,
  calcola1(Contatore3).  
 calcola1(0). 

/* ciclo3.pro */
/* richiesta numeri ed esecuzione prodotto */
domains
 Contatore,N = integer
predicates
 calcola(Contatore)
 
 goal makewindow(1,7,7,"esegue prodotto",1,1,20,70),
 calcola(1),
 sound(400,600).
 
clauses
 calcola(Contatore) :-   
  Contatore<6,!,
  write("scrivi numero intero:"),readint(N),
  Prodotto=Contatore*N,
  write("contatore..",Contatore,"..prodotto=",
  Prodotto),nl,
  write("--------------------------"),nl,
  Contatore2=Contatore+1,
  calcola(Contatore2).
calcola(_).
  

 


/* ciclo4.pro */
/* richiesta dati tipo stringa */
domains
 Contatore = integer
 Nome = string
 
predicates
 calcola(Contatore)
 
 goal makewindow(1,7,7,"richiesta dati",1,1,20,70),
 calcola(1),
 sound(400,600).
 
clauses
 calcola(Contatore) :-   
  Contatore<6,!,
  write("scrivi nome persona:"),readln(Nome),
  write("contatore..",Contatore,"..nome=",
  Nome),nl,
  write("--------------------------"),nl,
  Contatore2=Contatore+1,
  calcola(Contatore2).
calcola(_).