Pascal/Input e Output: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Ramac (discussione | contributi)
sistemo
Ramac (discussione | contributi)
+ esercizi
Riga 3:
Finalmente ci occupiamo del grande problema dell''''input-output'''.<br/>Gran parte delle funzioni di input-output sono contenute nella libreria standard di Pascal. Queste funzioni sono tipicamente:
*''read()'' e ''readln()'' che permettono di leggere l'input dell'utente da tastiera inserendo fra le parentesi il nome della variabile in cui vogliamo salvare il dato. La differenza consiste nel cursore, che nel caso di un'istruzione ''read'' continua sulla stessa riga mentre nel caso di ''readln'' va a capo.
*''write()'' e ''writeln()'' che permettono, come già visto in precedenza, di stampare su schermo il contenuto delle parentesi. Anche in questo caso la differenza è relativa all'andare a capo.
 
== Un semplice esempio per iniziare ==
Un semplice esempio basato sull'uso delle variabili e dell'input-output potrebbe essere un modo per personalizzare un programma, salvando in una stringa il nome dell'utente per inserirlo nelle domande.
<source lang=pascal>
Line 30 ⟶ 31:
* stampa del messaggio di benvenuto
* altra funzione dipendente dalla libreria ''crt'' che permette di leggere un solo carattere qualunque da tastiera. Vedremo che questa funzione è molto utilizzata per risolvere un problema riguardo all'esecuzione dei programmi compilati finora.
== Readread e Readlnreadln ==
L'istruzione assegna il valore immesso dall'utente nella variabile specificata tra parentesi. Il contenuto delle parentesi che seguono l'istruzione ''read'' o ''readln'' può essere una o più variabili. Nel secondo caso, in fase di esecuzione, i diversi valori di input vanno inseriti separandoli con uno spazio.
 
== Writewrite e Writelnwriteln ==
Il contenuto della parentesi che seguono l'istruzione ''writeln'' può essere sia un'espressione (stringa o numerica), sia una variabile sia una combinazione.<br/>
La parte testuale è compresa tra due apici; per separare il testo dalle variabili si usa una virgola, come nell'esempio precedente.
Line 89 ⟶ 90:
 
== Esercizi ==
* Scrivere un programma che applichi l<nowiki>'</nowiki>''algoritmo dello scambio''. Il programma deve chiedere all'utente i valori da inserire in due variabili, scambiare il contenuto delle variabili e poi stamparle (nello stesso ordine in cui le ha chieste). L'utente vedrà così scambiato l'ordine dei valori inseriti.
{{cassetto|titolo=Esempio|testo=
* Il programma chiede di immettere due numeri. Immetto come ''num1'' <code>10</code> e come ''num2''</code> 30.
* Il programma scambia i valori delle variabili ''num1'' e ''num2''.
* Vengono stampati i valori di ''num1'' e ''num2''. Vedrò quindi prima <code>30</code> e poi <code>10</code>.
}}
{{cassetto|titolo=Soluzione proposta|testo=
<source lang=pascal>
program scambio;
var num1, num2, tmp: integer;
begin
{chiedo due valori}
writeln('Dammi due numeri che te li scambio');
write('num1: '); readln(num1);
write('num2: '); readln(num2);
writeln; {lascia una riga bianca}
 
{scambio i valori}
tmp := num1;
num1 := num2;
num2 := tmp;
 
{li stampo}
write('num1: ', num1);
write('num2: ', num2);
readln;
end.
</source>
}}
* Scrivere un programma che legga un numero e lo stampi formattandolo, chiedendo all'utente quante cifre utilizzare per i decimali.
{{cassetto|titolo=Soluzione proposta|testo=
<source lang=pascal>
program formatta_decimali;