Differenze tra le versioni di "Pascal/Istruzioni di controllo"

+ esercizi
m (fix)
(+ esercizi)
 
È importante notare che le istruzioni del ciclo '''Repeat Until''' verranno eseguite almeno una volta poiché la condizione viene verificata alla fine, dopo il codice del ciclo; un ciclo '''While''', essendo la sua condizione testata prima dell'esecuzione del codice associato al ciclo, potrebbe, se questa risulta falsa, non fare nulla e riprendere dalle istruzioni che si trovano dopo il ciclo. Questo può risultare utile in particolari casi come in altri può essere causa di bug.
 
== Esercizi ==
* Scrivere un programma che stampi la tabellina del numero immesso dall'utente
{{cassetto|titolo=Soluzione|testo=
<source lang=pascal>
program tabelline;
uses crt;
var tab, i, ris: integer;
begin
clrscr;
write('Che tabellina vuoi che ti stampi? '); readln(tab);
for i:=0 to 10 do
begin
ris:=tab*i;
writeln(tab, ' x ', i, ' = ', ris );
end;
readln;
end.
</source>
}}
* Scrivere un programma "indovina il numero". Il programma deve chiedere all'utente un numero, scegliere casualmente un numero tra 1 e il numero fornito. L'utente dovrà quindi indovinare il numero pensato dal computer: ad ogni tentativo, il computer deve dire se il tentativo è maggiore o minore del numero pensato.
{{cassetto|titolo=Soluzione|testo=
<source lang=pascal>
program indovina;
var max, x, t: integer;
begin
randomize;
write('Per inizializzare il gioco, scegli il limite massimo: '); readln(max);
x := trunc(random() * max) + 1;
 
repeat
write(' >>> '); readln(t);
if t > x then
writeln(t, ' e'' troppo grande! Riprova');
if t < x then
writeln(t, ' e'' troppo piccolo! Riprova');
if t = x then
writeln('Complimenti! ', t, ' e'' il numero esatto!');
until t = x;
readln;
end.
</source>
}}
[[Image:Monte-Carlo method pi.svg|thumb|right|150px|Rappresentazione grafica del metodo Monte Carlo applicato al calcolo di pi greco]]
* Scrivere un programma per il calcolo di π <math>\pi</math> usando il ''metodo di Montecarlo''. Questo metodo consiste nell'estrarre casualmente due punti in un quadrato e verificare se il punto è dentro o fuori l'arco di circonferenza i cui due lati coincidono con due lati del quadrato.<br/>Consigli: considerare un quadrato di raggio unitario; dato il punto di coordinate ''x'' e ''y'', questo si trova dentro al cerchi se vale la relazione <math>\sqrt[2]{ x^2 + y^2 } < 1 </math>.
{{cassetto|titolo=Soluzione|testo=
<source lang=pascal>
{CALCOLA il valore di pigreco usando il metodo di montecarlo}
program pigreco;
uses crt;
var i, n, dentro : integer;
x, y , pi : real;
begin
randomize;
clrscr;
write('Quanti punti vuoi estrarre? ');
readln(n);
 
dentro:=0;
for i := 1 to n do
begin
{estrae un punto nel quadrato di raggio unitario}
x:=random();
y:=random();
if (x*x + y*y) < 1 then
dentro:=dentro + 1;
end;
 
{abbiamo valutato un quarto di cerchio}
writeln('Valore approssimato di pi greco: ', (4 * dentro / n):10:8);
readln;
end.
</source>
}}
* Scrivere un programma per determinare il valore di un radicale tramite tentavi successivi, in questo modo: il programma chiede con quale indice si vuole lavorare; successivamente, chiederà all'utente un'approssimazione della radice, e mostrerà la potenza del numero immesso secondo l'indice. In questo modo, in base al valore della potenza, l'utente potrà ritentare proponendo un numero maggiore o minore di quello immesso. Il programma termina quando l'utente immette 0.
{{cassetto|titolo=Soluzione|testo=
<source lang=pascal>
program radici;
uses crt;
var num: real;
exp, i, ris: integer;
begin
clrscr;
write('Con che indice vuoi lavorare? ');
readln(exp);
writeln('Digitare 0 per uscire dal programma');
writeln;
repeat
readln(num);
ris := 1;
for i:=1 to esponente-1 do
begin
ris:=ris * base;
writeln(ris:1:10);
writeln;
until num=0;
end.
</source>
}}
 
[[Categoria:Pascal|Istruzioni di controllo]]
8 469

contributi