Referat Instructiunea De Citire
Mai jos puteti citi fragmente din
Referat Instructiunea De Citire si de asemenea puteti face
Download Referat Instructiunea de citireCiteste fragmente din Referat Instructiunea De Citire
Instrucţiunea de citire
În mod obişnuit, tastatura este desemnată ca dispozitiv-standard de
intrare.
Citirea datelor de la tastatură se realizează prin apelul procedurilor
predefinite read sau readln. Aceste două proceduri aparţin unit-ului
System care este deasemenea predefinit(nu trebuie de declarat). Lista
parametrilor actuali a unui apel read sau readln poate să includă
variabile de tip integer, real, char ÅŸi string.
Astfel apelul read(x) are următorul efect. Dacă variabila x este de
tip integer sau real, atunci este citit întregul şir de caractere
care reprezintă valoarea întreagă sau reală. Dacă x este de tip
char, procedura citeÅŸte un singur caracter.
Apelul read(x1 , x2, …,xn) este echivalent cu read(x1); read(x2); …
;read(xn).
Datele numerice introduse de la tastatură trebuie separate prin
spaţii sau caractere sfârşit de linie. Spaţiile dinaintea unei
valori numerice sunt ignorate. Şirul de caractere care reprezintă o
valoare numerică se conformează sintaxei constantelor numerice de
tipul respectiv. În caz contrar, este semnalată o eroare de
intrare-ieÅŸire.
De exemplu, fie programul:
Program exemplu;{Citirea datelor numerice de la tastatură}
Var i, j : integer;
x,y:real;
begin
read(i, j, x, y);
writeln( AÅ£i introdus: );
writeln( i= , i);
writeln( j= , j);
writeln( x= , x);
writeln( y= , y);
end.
În care sunt citite de la tastatură valorile variabilelor i, j, x, y.
După lansarea programului în execuţie, utilizatorul tastează:
1
2
3.0
4.0
Pe ecran se va afiÅŸa:
AÅ£i introdus:
i=1
j=2
x=3.0000000000E+00
y=4.0000000000E+00
Acelaşi efect se va obţine şi la tastarea numerelor într-o singură
linie:
1 2 3.0 4.0
Procedura readln citeşte datele în acelaşi mod ca şi procedura
read. Însă, după citirea ultimei valori, restul caracterelor din
linia curentă se ignoră. Pentru exemplificare, prezentăm programul
următor:
Program exemplu1; {Apelul procedurii readln}
Var i, j :integer;
x,y : real;
begin
writeln( Apelul procedurii read );
read(i, j);
read(x, y);
writeln( AÅ£i introdus: );
writeln( i= , i, j= , j, x= , x, y= , y);
writeln( Apelul procedurii readln );
readln(i,j);
readln(x, y);
writeln( AÅ£i introdus: );
writeln( i= , i, j= , j, x= , x, y= , y);
end.
La execuţia instrucţiunilor read(i, j);read(x, y); valorile numerice
din linia introdusă de utilizator
1 2 3 4
vor fi atribuite variabilelor respectiv i, j, x, y. La execuţia
instrucţiunii readln(i, j); valorile numerice 1şi 2 din linia 1 2 3
4 vor fi atribuite variabilelor i ÅŸi j. ÃŽn continuare
calculatorul execută instrucţiunea readln(x, y); adică va aştepta
introducerea unor valori pentru x ÅŸi y.
Mentionăm faptul că apelul procedurii readln fără parametri va
forţa calculatorul să aştepte acţionarea tastei . Acest apel
se utilizează pentru a suspenda derularea programului, oferindu-i
utilizatorului posibilitatea să analizeze rezultatele afişate anterior
pe ecran. În programul de mai jos observăm că acesta se termină cu
instrucţiunea readln. Ce rol are ea? După ce un program îşi încheie
execuţia, se revine în mod automat în mediul în care se găseşte
textul sursă. Rezultatele se pot vizualiza tastând ALT+F5. Pentru ca
revenirea să nu se facă automat (să avem timp să vedem rezultatul),
vom utiliza instrucţiunea readln fără parametri. Efectul? Se va
aştepta să se tasteze . În acest timp, avem posibilitatea să
vedem ce s-a tipărit.
Program exemplu;
Begin
$
(
0
4
<
D
P
t
‚
Ì
ÃŽ
è
ø
þ
N
Z
^
d
f
p
r
t
Å“
¨
ª
¼
¾
Ö
Ø
Ü
V
>
Þ
iteln(6);
Readln;
End.
Pentru a înlesni introducerea datelor, se recomandă ca apelurile
read(…) şi readln(…) să fie precedate de afişarea unor mesaje
sugestive. Exemple:
Write( Daţi două numere: ); readln(x, y);
Write( Daţi un număr întreg: ); readln(i);
Write( x= ); readln(x);
Write( Răspundeţi cu D sau N: ); readln(c);
Unii începători sau cunoscători ai limbajului BASIC cred că se
poate face o citire în felul următor: readln( Dati n= , n); iar
alţii nu sesizează diferenţa între un şir şi valoarea
identificatorului: readln( n );.
În cazul în care valoarea introdusă nu corespunde tipului variabilei
declarate se va semnala o eroare de execuţie şi astfel se va ieşi
automat din program. Pentru a evita această ieşire se poate testa
dacă datele introduse corespund tipului variabilei respective prin
introducerea înaintea instrucţiunii read sau readln a directivei {$i-}
şi după instrucţiune - {$i+}. Aceste directive fac posibilă
continuarea rulării programului fară a ieşi din el. Şi pentru a
verifica dacă valoarea introdusă este corectă, verificăm prin
intermediul funcţiei predefinite IOResult care va returna un numar
diferit în cazul unei erori, şi va returna 0 dacă nu există nici o
eroare. Ca exemplificare vom prezenta programul următor:
Program ex;
Var a:integer;
Begin
Writeln( Daţi o valoare pentru a! );
{$i-} readln(a);{$i+}
if IOResult<>0 then writeln( AÅ£i introdus greÅŸit! )
else begin a:=a+1; {marim valoarea lui a cu o unitate}
writeln( a= , a); end;
end.
Program exemplu;
Astfel dacă în lipsa directivelor {$i-} şi {$i+} dăm lui a
valoarea bicaz care este de tipul string se va semnala o eroare ÅŸi se
va ieşi automat din program. Dar în prezenţa lor programul va rula
în continuare afişînd mesajul Aţi introdus greşit. Dacă valoarea
introdusă e de tipul integer se va mări valoarea variabilei cu o
unitate ÅŸi se va afiÅŸa noua valoare.
O largă întrebuinţare o au procedurile read şi readln în
prelucrarea fiÅŸierelor.
Ştim că pentru deschiderea unui fişier pentru citire se apelează
procedura reset(f) unde lui f îi este atribuit fişierul de tipul
respectiv(text sau fişiere cu tip).Însă citirea datelor din fişier
se face printr-o apelare de forma read(f, v), iar în cazul fişierelor
de tip text se permite şi apelarea readln(f,v) , care reprezintă
citirea sffărşitului de linie din fişier.
O simplă apelare de tipul readln(f) va avea ca efect trecerea în
fişier la linia următoare. O instrucţiune de forma
readln(f,v1,v2,…,vn) este echivalentă cu secvenţa de instrucţiuni
read(f,v1,v2,…,vn);readln(f); . Programul ce urmează afişează
conţinutul fişierului FILE.TXT pe ecran.
Var f:text; c:char;
Begin
Assign(f, FILE.TXT );
Reset(f);
While not eof(f) do
Begin
While not eoln(f) do
Begin
Read(f, c); {citeÅŸte c din f}
Write(c);
End;
Readln(f); {trece la linia următoare din f}
Writeln;
End;
Close(f);
Readln;
End.
Astfel fără de instrucţiunea de citire nu ne putem lipsi practic în
nici un program Pascal.
ì¥Â@