§ 3.11. Ўқиш-ёзиш операторлари
Паскал-программа ЭҲМнинг операцион системасининг кенгайтирилган муҳитида бажарилади. Операцион система рамзий равишда input ва output деб номланувчи стандарт матнли файллар орқали программани ЭҲМнинг ўқиш-ёзиш қурилмалари билан боғлайди.
Асосан, берилганларни киритиш учун терминал клавиатураси ёки дисклардан (эгилувчан, қаттиқ, лазерли) ва бошқалардан фойдаланилади. Маълумотларни чиқариш учун эса дисплей экранидан, принтердан ва бошқа қурилмалардан фойдаланилади.
Масалан, операцион система input стандарт матнли файлни терминал клавиатураси билан боғлади. Умумий ҳолда киритиш стандарт процедураларига мурожаат қилиш қуйидагича ёзилади:
read(x1,x2,. . . ,xn);
readln(x1,x2,. . . ,xn);
бу ерда xi - киритилаётганлар рўйхатидаги элемент. Киритилаётганлар руйхатидаги элемент сифатида фақат ўзгарувчи ишлатиш мумкин. Киритилаётган қийматлар сифатида эса char, real, integer турдаги қийматлар ишлатиш мумкин. Паскалда берилганларни киритишда қуйидагича келишилган:
а) киритилаётган қийматнинг тури read процедурасининг фактик параметри сифатида ишлатилган ўзгарувчининг тури билан мос келиши керак;
б)агар битта read киритиш процедурада параметрлар сифатида бир нечта ўзгарувчи ёзилса, у ҳолда бир қанча қийинчиликлар пайдо бўлади. Бу қийинчиликлар киритилаётган қийматлар бир-биридан қандайдир ажратувчилар ёрдамида ажратилишлари керак бўлгани билан боғлиқ. Бу ажратувчилар сифатида ишлатилаётган белгиларнинг кўриниши операцион система ва алгоритмик тилнинг амалга оширишига боғлиқ. Асосан, сонли қийматларни киритишда, уларни бир биридан ажратиш учун "пробел" ишлатилади. Read киритиш процедурасидаги ўзгарувчиларнинг тури бири сонли (real ёки integer), бошқаси белги бўлса, у ҳолда тушинмовчилик туғилади. Бу ҳолда ЭҲМ "пробел"-ни ажратувчи ёки белги сифатида тушуниши мумкин.
в) input стандарт файлдан фақат char, integer, real турдаги қийматларни киритиш мумкин. Бошқа турдаги қийматларни(boolean ҳам) программа тузиш йўли билан киритилади.
1-мисол
var A,B,C: real;
K,N: byte;
...
Read(A,B,C,K,N);{0.5 1.6 -19.1 6 4}
Киритиш процедураси мантиқий типга тегишли Eoln функцияси билан боғланган: Маълумки, Eoln функция сатр элементларини киритиш тугаганда true, акс ҳолда false қийматини қабул қилади.
2-мисол.
Var K,I: integer;
...
Readln; I:қ0;
while not Eoln do
begin
Read(K);
I:=I+1
end;
К га бутун қийматлар киритилади ва уларнинг сони ҳисобланади. Бу цикл сатрнинг охири Enter клавишаси учрагунча давом эттирилади.
Масалан: 4 5 13 14 Enter
Output стандарт матнли файлига чиқариш write, writeln чиқариш процедуралари ёрдамида бажарилади.
write(x1,x2,. . . ,xn) кўринишидаги оператор қуйидаги операторлар кетма-кетлигига эквивалент
write(x1), write(x2),. . . ,write(xn);
бу ерда ҳар бир операторда фақат битта элемент чиқарилаяпти. Шунинг учун, биз фақат write(x) кўринишидаги операторни кўрамиз.
Чиқарилаётган элемент қуйидаги уч кўринишдан биттаси бўлиши мумкин:
e
e:m
e:m:n
бу ерда е - ифода (char,real,integer ёки boolean турдаги), сатрли ўзгармас ёки сатрли ўзгарувчи, m ва n эса мусбат бутун қиймат қабул қиладиган ифодалар.
Маълумотларни сатрлар бўйича жойлаштириш учун writeln(янги сатрга ўтиш) ёки writeln(x1, x2,...,xn) (чиқариш ва янги сатрга ўтиш) процедуралардан фойдаланамиз.
3-мисол.
var A, B: real;
I, N: integer;
C: char;
...
I: =0; N: =I+1;
A: =0.25; B: =Sqrt(A); C: =’#’;
Writeln(I,’ ‘,N); { 0 1}
Writeln(A,B); { 2.5000000000E-01 5.0000000000E-01}
Writeln(A,Sqrt(A)); { 2.5000000000E-01 5.0000000000E-01}
Writeln(N+5,C); { 6#}
Write(MaxInt);{32767- integer туридаги максимал бутун сон }
4-мисол.
var A,B: real;
I,N: integer;
C: char;
I: =0; N: =I+1;
A: =0.25; B: =Sqrt(A); C: =’#’;
Writeln(A:5:2,B:6:2); { 0.25 0.50}
Writeln(‘I=’,I:4); {I= 0}
Writeln(C:4); { #}
Writeln(‘B=’,Sqrt(A):6:2); {B= 0.50}
Writeln(‘***************’); {***************}
Writeln(‘*A=’,A:4:2,’*B=’,B:4:2,’*’);{*A=0.25*B=0.50*}
Writeln(‘***************’); {***************}
Do'stlaringiz bilan baham: |