Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida Pascal - La struttura iterativa For...to...do

Guida Pascal

Capitolo 9° - La struttura iterativa For...to...do

<< Precedente Prossimo >>
Program Esempio4;
Uses Crt;
Var soldi,incremento,percentuale:longint;
    anni,i:word;

begin
    clrscr;
    write(Inserire lammontare attuale del denaro: );
    readln(soldi);
    write(Inserire linteresse mensile del denaro: );
    readln(percentuale);
    write(Inserire il numero di anni: );
    readln(anni);
    for i:=1 to anni do
      begin
      (*Serve un div (divisione intera) perchè il risultato
      è un numero intero*)
      incremento:=soldi*percentuale div 100;
      soldi:=soldi+incremento;
      end;
    write(Fra ,anni, anni possederai ,soldi, euro.);
readln
end.


Questo programma è molto più alla vostra portata.
Iniziamo subito con il dire che, dopo la parola for, ci vuole lassegnamento ad una variabile di un valore (in questo caso i:=1). Questa stessa variabile verrà incrementata automaticamente dal computer ad ogni step e, una volta uguale al numero (o alla variabile) dopo il to (in questo caso anni), il ciclo terminerà.
Lincremento è la percentuale detta dellammontare totale (incremento:soldi=percentuale:100) ed è stato calcolato mediante una semplice proporzione.
Da notare è anche il fatto che il valore di una variabile può essere incrementato anche usando la stessa variabile come riferimento. Infatti lalgebra non permetterebbe espressioni del tipo x=x+q, perché, risolvendo lequazione, si otterrebbe 0=q e sarebbe (con q diverso da 0) una cosa assurda (se invece q fosse 0, verrebbe x=x, che è abbastanza ovvio). Il Pascal invece, come del resto tutti gli altri linguaggi, permette questa sintassi, molto comoda (anche se non la migliore, infatti, linguaggi di alto livello come il C++ e il Vb.Net, nonché il Java, hanno una sintassi ancora più breve, x+=q, che equivale a quanto scritto in precedenza).
Tornando a noi, il ciclo for...to...do ripete un blocco di istruzioni un numero determinato di volte, ragion per cui, sono assolutamente vietati valori reali decimali prima e dopo il to.
In pratica, scrivere:

For i:=5 to n do
  begin
  ...
  end;

equivale a scrivere:

i:=5;
repeat
...
i:=i+1;
until i=n+1;

oppure:

i:=5;
while i<=n do
  begin
  ...
  end;

Un ultima nota: il ciclo for...to...do assegna un valore ad una variabile e poi lo incrementa sempre di 1 ad ogni step. Esiste, però, anche il costrutto for...downto...do, che, invece di incrementare lindice, lo decrementa.

E' da notare che i cicli infinti con il for sono molto rari da trovare: infatti solo in casi come:

for i:=1 to 12 do
  begin
  (*istruzioni varie*)
  i:=i-1;
  end;


Infatti ad ogni step, la i viene incrementata e decrementata, ossia non cambia mai e rimane sempre uguale a sè stessa. Un altro caso strano è questo:

for i:=2 to 11 do
  begin
  (*istruzioni varie*)
  i:=i+1;
  end;


Infatti, dato che il valore iniziale di i + pari, la stessa i viene incrementata due volte ad ogni step, da che risulta che ogni volta l'incremento sarà di 2 e perciò non potrà mai assumere valori dispari: nella conta di salterà l'11 e perciò i non sarà mai uguale al limite prefissato e si entrerà in un ciclo infitito.
<< Precedente Prossimo >>
A proposito dell'autore

Programmatore e analista .NET 2005/2008/2010 (in particolare C# e VB.NET), anche nell'implementazione Mono per Linux. Conoscenze approfondite di Pascal, PHP, XML, HTML 4.01/5, CSS 2.1/3, Javascript (e jQuery). Conoscenze buone di C, LUA, GML, Ruby, XNA, AJAX e Assembly 68000. Competenze basilari di C++, SQL, Hlsl, Java.