А. А. Медатов, М. З. Носиров, М. К


functiоn fact(n:integer):integer; var


Download 392.5 Kb.
bet31/39
Sana20.12.2022
Hajmi392.5 Kb.
#1034416
1   ...   27   28   29   30   31   32   33   34   ...   39
Bog'liq
Turbo Pascal услубий кулланма

functiоn fact(n:integer):integer;
var
i,k: integer;
begin k:=1;
fоr i:=1 tо n dо k:=k*i;
fact:=k;
еnd.
Шу нарсани эслатиб ўтиш керакки, паскал тилининг стандарт процедура ва процедура-функциялар синфи мавжудки, уларни дастурда тўғридан-тўғри ишлатиш мумкин.
Процедурани ишга тушириш процедура-оператори ёрдамида амалга оширилар эди, процедура функцияни эса функцияни чақириш билан амалга оширилади. Функцияни чақирувчи ифода алохида оператор сифатида келиши мумкин эмас, у қиймат бериш операторининг ўнг томонида ёки бошқа қисм-дастурга мурожаатда параметр-қиймат сифатида келиши мумкин.
y := fact(7);..... writeln(‘факториал=‘, fact(10));


Мисол. +уйидаги ифодани ҳисоблаш учун қисм дастур-функция ёрдамида дастур ёзинг
1+2!+3!+...+N!

program param;


var
s,n,k:integer;
function faktor( m:integer): integer;
var
i;byte;
begin
faktor :=1;
for i:=1 to m do faktor := faktor *i;
end;
begin
writeln(‘n ни киритинг’); read(n);
s:=0;
for k:=1 to n do s:=s+ faktor (k);
end;
writeln(‘жавоб’,s);
end.


Мустахкамлаш учун саволлар:
1. Турбо паскальда функция қандай тузилади.
2. Процедуранинг функциядан фарқи нима.
3. Функцияга мисол келтиринг.


Таянч тушунчалар: Функция, функция бичими, функцияни эълон қилиш, Functiоn.


Адабиёт: [1],[2],[4]



Файллар


Режа:
1. Файл ҳақида тушунча.
2. Турланган файллар
3. Турланмаган файллар.
4. Матнли файллар.

Шу пайтгача қаралган ҳосилавий турларнинг мухим хусусияти шундан иборатки, улар олдиндан берилган чекли компоненталардан иборат эканлигидир. Бу эса дастур бажарилмасдан олдин шу турдаги ўзгарувчиларнинг қийматлари учун машина хотирасидан зарур хажмдаги жой ажратиш имконини берар эди. Аммо маълум бир синф масалалари учун олдиндан компоненталар сонини аниқлаш имкони йук, улар масалани ечиш жараёнида аниқланиши мумкин. Бу ҳолларда бир хил турдаги ихтиёрий элементлар кетма-кетлигидан иборат бўлиб, уларнинг узунлиги олдиндан номаълум бўлиб, ҳисоблаш жарёнида аниқланадиган турга зарурат туғилади. Паскал тилида бу талабга жавоб бнерувчи тури - файлли тури аниқланган. Стандарт Паскалда фақат кетма-кет мурожат қилувчи файллар қаралади, яъни файл бўйича кетма-кет биринчи элементидан бошлаб қаралади. Масалан файлни 10 элементига бориш учун ундан аввалги 9 та элементини қараб чиқиш керак. Бундай файллар кетма-кет файллар ёки кетма-кет мурожаат қилиш усулидаги файллар дейилади. Кетма-кет файлда ҳар бир дакикада фақат кейинги битта элементга мурожаат қилиш мумкин. Агарда масалани ечиш жараёнида файлнинг бирор олдинги элементга мурожаат қилишга тўғри келса, у ҳолда файлни бошига қайтиб биринчи элементдан бошлаб кетма-кет ҳаракатланиб керакли элементга келинади.


Паскалда файлли тур қуйидаги кўринишда аниқланади:
<файлли тури>:= file оf <компонентанинг тури> ёки
рacked file оf <компонентани тури>
бу ерда file, оf, рacked - хизматчи сўзлар, <компонентани тури>-эса паскалдаги файл туридан ёки файл турини уз ичига олувчи турдан фарқли ҳар қандай турнинг номи ёки унинг берилиши.
Одатда файлли тур ишлатишга турлар бўлимида ёки ўзгарувчилар бўлимида киритилади, масалан:
1) tyрe letter = ‘a’. . ‘z’;
var tekst: file оf letter;
2) var tekst: file оf ‘a’. . ‘z’;
Файллар - бу шундай воситаки, у ёрдамида дастур ташки дунё билан алока боғлайди.
Файл туридаги ўзгарувчилар устида хеч қандай амал аниқланмаган. Файлнинг компоненталари устида эса компонентанинг турига мос амаллар аниқланган бўлиши мумкин.
Шуни таъкидлаш керакки, Турбо-Паскал тилида дастурнинг ташқи мухит билан алокаси мантиқий ва физик файллар аппарати орқали амалга оширилади.
Турланган файллар сонлар, белгилар ва улардан ташкил топган структураларнинг машинавий тасвиридан иборат. Улар берилганларни ЭҲМ хотирасида қандай сақланса худди шундай ҳолда сақланади. Шунинг учун турланган файллар ёрдамида дастурнинг ишчи хотираси ва дискдаги маълумотларни айирбошлаш мумкин, лекин тўғридан-тўғри берилганларни экранга чиқариш мумкин эмас.
Турланмаган файллар ҳам берилганларни машинавий тасвиридан иборат. Бу файлнинг турланган файлдан фарқи шундан иборатки турланган файл олдиндан эълон қилинган турдаги берилган билан ишлайди, турланмаган файллар эса берилганларнинг тузилишига ва мохиятига боғлиқ бўлмаган байтлар мажмуаси билан ишлайди.
Ихтиёрий турдаги файл турларда маълумотларни сақлашнинг энг кичик бирлиги байт ҳисобланади. Файллар билан ишлаш принципи ҳамма файллар учун бир хил бўлиб энг аввал файл ўзгарувчиларни физик файллар билан боғлаш керак.
Программада эълон қилинган файл ўзгарувчилар қиймат бериш операторларида қатнашмаслиги лозим.
Процедура функциянинг сарлавхасида рамзий параметр сифатида ишлатилаётган ихтиёрий турдаги файл ўзгарувчилар var параметр сифатида эълон қилиниши керак.
Турланган файл синтаксиси қуйидагича аниқланади:
<турланган файлни берилиши>:=file оf < тур>
Турланмаган файл синтаксиси эса қуйидагича аниқланади:
<турланмаган файлни берилиши> := file
Турбо-паскал тилида ихтиёрий турдаги файллар учун стандарт процедуралар аниқланган бўлиб, улардан энг кўп ишлатиладиганлари қуйидагилардан иборат:
assign(f,s) - f файлли ўзгарувчини физик файл билан боғлайди;
reset(f) - мантиқий файл f ни ўқиш учун очади;
rewrite(f) - мантиқий файл f ни ёзиш учун очади;
clоse(f) - мантиқий файл f учун ўқиш-ёзиш каналини ёпади.
Турланган файл очилгандан кейин берилганларни киритиш - чиқариш қуйидаги стандарт операторлар ёрдамида амалга оширилади:
read(f,<номлар рўйхати>), write(f,<номлар рўйхати>).
Биринчи аргумент - мантиқий файлни номи, ундан кейин эса файл компонентасини турига мос келувчи ўзгарувчи (ўзгарувчилар) бўлиб, унга ўқиш (read) пайтида файлнинг навбатдаги қиймати ёзилади, ёки тескариси ёзиш(write) пайтида ўзгарувчи қиймати файлга ёзилади.
Турланмаган файллар учун қуйидаги процедураларни ишлатиш мумкин, яъни reset(f,buf) ёки rewrite(f,buf), бунда buf - файлга бир марта мурожаат қилганда ўқиш ёки унга ёзишдаги байтлар сони (блок ўлчами). Блокнинг энг кичик ўлчами 1- байт бўлиши мумкин.
Турланмаган файлларда берилганларни ўқиш ёки унга ёзиш учун қуйидаги процедураларни ишлатиш керак:
blоckread(f,d,c,r) ва blоckwrite(f,s,c,w)
бу ерда f -файл номи, d - маълумотлар ўқиладиган ўзгарувчи, s - маълумотлар ёзиладиган ўзгарувчи, с- ўқилиши керак бўлган блоклар сони, r ва w ўзгарувчилар эса қатнашиши шарт бўлмаган ўзгарувчилар бўлиб, улар ўқиш-ёзиш процедуралари ёрдамида ўқилган (ёзилган) блоклар сонини билдиради.
Матн файли деб - ASCII кодлари ҳамда кенгайтирилган ва бошқарувчи кодлардан ташкил топган файлга айтилади. Матн файллари сатрлар бўйича ташкил топган бўлиб, файл охири деб номланувчи махсус коддан ташкил топган бўлади. Матнли файл ихтиёрий маълумотларни (сонни, белгини, сатрни) белгилар кетма-кетлиги кўринишда сақлайди.
Масалан, паскал тилида ёзилган дастур ҳам матнли файл ҳисобланади. Ундан ташқари маълумотларни бир қисми сатрларга ҳам бўлиниши мумкин. Сатр охирини аломати бўлиб 13 код ҳисобланади ва у сатрни ўтказиш белги(10 код) билан бирлаштирилиши мумкин, матнли файлнинг охири ^z”(26 код) белги билан белгиланади. Сон, сатр ва мантиқий қийматларни ёзишда улар белгили кўринишга ўзгартирилади, ўқишда эса сон ва сатрлар матнли кўринишдан машинавий кўринишга автоматик равишда ўзгартирилади.
Матнли файллар билан ишлашда файлли ўзгарувчини киритиш керак
var f: text;
ва уни физик файл билан assign процедураси орқали боғлаш керак, ундан кейин файлни очиш мумкин. Шуни таъкидлаш керакки матнли файл билан “file оf char” туридаги турланган файл билан бир хил эмас.
Матнли файлни reset, rewrite ёки aррend(f) процедуралари орқали очиш мумкин, бунда охирги процедура матнли f файл охирига ёзиш учун очади. Ундан ташқари матнли файлни очишдан олдин ўқиш-ёзиш амаллари учун буфернинг ўлчамини қуйидаги процедуралар орқали ўрнатиш мумкин:
settextbuf(f,nbuf,buf);
бу ерда f -матнли файл номи, buf - буферга мўлжалланган ўзгарувчининг номи, nbuf - буфернинг байтдаги ўлчами.
Матнли ва сонли маълумотларни ўқиш ва ёзиш қуйидаги процедуралар ёрдамида амалга оширилади:
ўқиш: read(f,x), read(f,x1,x2,. . . ,xn) ёки сатрни ўтказиш билан - readln(f,x), readln(f,x1,x2,. . . ,xn).
ёзиш: write(f,x), write(f,x1,x2,. . . ,xn) ёки сатрни ўтказиш билан -writeln(f,x), writeln(f,x1,x2,. . . ,xn).


Мустахкамлаш учун саволлар:
1. Файл деганда нимани тушунасиз?
2. Файлларнинг қандай типлари бор?
3. Матнли файл нима?


Таянч тушунчалар: Файллар, турланган файллар, турланмаган файллар, матнли файллар, Reset, Read, Rewrite.

Адабиётлар [1],[2],[6],[7].



Download 392.5 Kb.

Do'stlaringiz bilan baham:
1   ...   27   28   29   30   31   32   33   34   ...   39




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling