END;
Operatorlar bulimida xech bulmaganda funksiyaning nomiga kiymat beruvchi bitta operator bulishi kerak. Kaytarilish Nuqtasiga oxirgi uzlashtirish natijasi kaytariladi.
Funksiyaga murojaat argumentlar ruyxati keltirilgan nom orkali amalga oshiriladi.Xar bir argument nomda ko’rsatilgan formal parametrlarga mos bulib, tipi xam bir xil bulishi kerak. Misol sifatida funksiyani darajaga kutarishni kurib chikamiz:
PROGRAM DemoPower;
VAR
Z:real;
FUNCTION Power(X,Y:real): real;
BEGIN
Power:= Exp(Y* Ln(X))
END;
BEGIN
Z:=5.31;
Write(Power(Z,4.0)); { Z ning kiymatini 4-chi darajaga kutarish}
END. { DemoPower }
Parametrlar
Parametrlarni ifodalashda ikki xil formadan foydalaniladi. Birinchisida parametrlar va tiplar ruyxatini keltirish kerak:
PROCEDURE DataIn (X,Y:real);
Bunda X va Y lar kiymatlari protseduraga chakirib junatiladi.Ikkinchi formasida parametrlar ruyxati VAR suzi yordamida keltiriladi:
PROCEDURE DataOut (VAR A,B,C : integer);
VAR A,V,S larni kiymatlari protsedura bajarilgandan sung kaytarilishini ko’rsatadi.
Aralash forma xam bulish extimoli bor:
PROCEDURE DataInOut (X,Y:real; VAR A,B,C : integer);
Tayanch so`z va iboralar: Chr, Ord,Dec,Inc,Pred,Succ, Random, PROCEDURE
FUNCTION
Nazorat savollari:
Protsedura nima ?
Funksiya nima ?
Protsedura va funksiyaning farki nimada ?
Standart biblioteka moduli nima?
Standart arifmetik funksiyalarga nimalar kiradi?
Protsedura parametrlari nima?
Funksiya qanday yeziladi?
Funksiya tanasi nima?
Foydalanuvchining protsedura va funksiyalari kanady tuziladi?
Maxsus protsedura va funksiyalarga nimalar kiradi?
Ma’ruza .№15 Modullar tashkili va moxiyati.. Crt va Dos modullari bilan ishlash
Reja
Crt modulining vazifasi
Matnli rejimlar
Ranglarni, klaviaturani, ovozni boshkarish
Dos modulining vazifasi.
Crt modulining vazifasi
Matinli rejimlar, grafika rejimlari
Shaxsiy kompyuterning ekranidagi tasvirlar displey adapteri yordamida paydo buladi. Adapterning o’rnatilishiga karab, displey matn yeki grafika rejimida ishlashi mumkin. Matn rejimi CRT, moduli orkali grafika rejimi esa GRAPH. moduli orkali amalga oshiriladi.
CRT moduli Turbo-Pascal integrallashgan sistemasining asosiy kismlaridan biri xisoblanadi. U displey adapterining ish rejimini, ekran buferiga tuppadan- tugri kiritish , belgilarni ekranda anik ko’rsatish va kompyuterni normal ishlashi uchun zarur bulgan boshka vazifalarni bajaradi.
CRT ni foydalanuvchi dasturiga ulash standart kator Ko’rinishida amalga oshiriladi.
USES Crt;
CRT moduli ulanishi bilan foydalanuvchi undagi xamma standart vositalardan foydalanish imkoniyatiga ega buladi.
Matnli rejimni o’rnatish
Belgi, piksel, matnli rejimlarni o’rnatish, matnli shrift.
Matnli rejimlar shaxsiy kompyuterning kodli tablitsa belgilarini yeritish uchun xizmat kiladi. U ekrandagi belgilar soni va belgilar katori bilan xarakterlanadi. Boshkarishning eng kichik ulchov birligi sifatida belgi kabul kilinadi. Belgi bir nechta Nuqtalardan (piksel) tuziladi. Adapterlarning xamma tiplari matnli rejimni ushlab turadi.
Matnli rejimni o’rnatish TextMode(Mode: integer) standart protsedurasi yerdasida amalga oshiriladi.
Mode rejimining imkoniyatlari 12.1. tablitsada ko’rsatilgan. Kiymatlar (BW40,CO40,...) nomli konstantalar yeki (0,1,...) rejim tartib nomerlari orkali beriladi.
Misol.
TextMode(CO80);
TextMode(2);
Tabl. 12.1. Personal kompyuterning standart matnli rejimlari
Monitor
|
Ekran
|
Rang
|
Adapter
|
Segment
|
Konstanta
|
Rejim tartib nomeri
|
Ch/B
|
40x25
|
16/8
|
CGA
EGA
|
B800
|
BW40
|
0
|
Sv
|
40x25
|
16/8
|
CGA
EGA
|
B800
|
CO40
|
1
|
Ch/B
|
80x25
|
16/8
|
CGA
EGA
|
B800
|
BW80
|
2
|
Sv
|
80x25
|
16/8
|
CGA
EGA
|
B800
|
CO80
|
3
|
Ch/B
|
80x25
|
3
|
MA
EGA
|
B800
|
Mono
|
7
|
CRT modulining ichida Word ulchovli, adapter displeyining matn rejimiga tegishli bulgan LastMode uzgaruvchisi buladi. U matn tartib nomerini, tekshiruvchi oxirgi o’rnatgan matn rejimining tartib nomerini uz ichiga oladi:
Write('Mainli rejim', LastMode)
grafika rejimidan matn rejimiga kaytish uchun esa,
TextMode(LastMode) dan foydalnialdi.
CRT modulida maxsus Font8x8 = 256 konstantasi bulib,u kengaytirilgan matnli rejimlarni initsalizatsiyalash (nomerlash) uchun xizmat kiladi. Bu EGA (Enhanced Graphics Adapter) va VGA (Virtual Graphics Array) adapterli displeylarga tegishlidir.
Bu adapterlar 43- va 50- katorli tekstli rejimlarda ishlaydi.
Adapterlarning turli modifikatsiyalari ekran katorini 120 ta begigacha kenegaytirish imkoniyatini beradi. 8x8 ulchovli matnli shriftlarni yuklashda , matnli rejimning 80x43 va 80x50. kengaytmalari o’rnatilishi mumkin.
Misol.
TextMode(Font8x8+CO80) -
Ekranni tozalash
ClrScr, ClrEol, DelLine, InsLine,
ClrScr - Ekranni yoki joriy darchani tula tozalab, kursorni ekranning chap yukori burchagiga o’rnatadi (1,1 koordinatalar).
ClrEol - kursor turgan joydan boshlab satr oxirigacha turgan xamma belgilarni uchiradi.
DelLine - kursor turgan katordagi xamma ma’lumotlarni uchiradi, pastdagi xamma katorlar bitta pozitsiya yukoriga kutariladi.
InsLine - kursor turgan joyda bush katorni ekran pozitsiyasiga kushadi, pastdagi xamma katorlar bitta pozitsiya pastga tushadi.
Kursorni boshkarish
Kursorni boshkarish, kursor koordinatalari
Write protsedurasi kursorni ekran buylab siljitish vazifasini bajaradi.
Axborotni chikarish paytida kursorni ekranning xoxlagan pozitsiyasiga yunaltirish uchun Turbo Pascal tilida maxsus moslamalardan foydalaniladi.
GoToXY(X,Y:byte)
Bu protsedura kursorni X (ustun) va U(kator) koordinatalarida berilgan pozitsiyaga siljitadi.
Misol.
ClrScr; { Ekranni tozalash}
GoToXY(33,4); {kursorni 4- kator markaziga junatish }
Write('Boshkaruvchi dastur');
Funksii WhereX: byte i WhereY: byte funksiyalari joriy darchaga nisbatan X- yoki Y-kursor koordinatalari kiymatlarini aniklashga yordam beradi.
Misol.
Write('Kursor ustunda joylashgan ',WhereX);
Write('Kursor katorda joylashgan ',WhereY);
Rabotu GoToXY ning ishlash prinsipini kuyidagi dastur misolida kurib chiamiz.
PROGRAM DemoCrt;
USES Crt;
VAR
Row, Col : byte;
BEGIN
ClrScr;
Col := 1;
FOR Row := 1 TO 25 DO BEGIN
GoToXY(Col,Rov);
write('Dioganal buyicha chikarish');
Col := Col+2
END;
FOR Row := 1 TO 25 DO Delay(100); { Ushlab turish }
Col:=6;
FOR Row := 1 TO 25 DO BEGIN
GoToXY(Col,Rov);
ClrEol; { ClrEol buyicha tozalash}
Write('Uzib olib tashlash);
Col := Col+2;
END;
END. { DemoCrt }
Dasturda DemoCrt komandasi xamma operatsiyalar bajarilishida, ekranda kursorni joylashuvini uzgartiradi.
Rangni boshkarish
Belgilarni uchib-yonishi, fon, yoritish intensivligi
Matnli rejimlarda ishlashda rangli displey zkranida chikayotgan belgilar 16 (0-15) ta ranglardan birortasini kabul kilishi mumkin. Ekran foni 8 (0-7) ta rangdan birortasini kabul kilishi mumkin. Belgilar rangini o’rnatish uchun TextColor , fon uchun esa TextBackGround protseduralari xizmat kiladi.
Belgilarni uchib-yonishini tashkillash imkniyati xam mavjud..
Monoxrom displeylar bilan ishlashda fakat ikkita kora va ok ranglardan foydalanish mumkin, lekin Turbo Pascal tilida belgilarni ekranga chikarish uchun kushimcha imkoniyatlar mavjud:
begilar yoritish intensivligi bilan farklanishi mumkin;
ok randagi belgilar kora fonga , yoki teskarisi bulishi mumkin;
belgilarni ekranda yoritilish intensivligi kutarilib- pasayib turishi mumkin (bunga belgilarni uchib-yonish xususiyati deyiladi).
80x25 ulchovli matn rejimi ekranga 2000 (80*25 = 2000) ta belgini chikarish imkoniyatiga ega. Xar bitta belgi uchun xotirada 2 bayt joy ajratiladi:
1 tasi begining uzi uchun va
1 tasi belgining rang atributi uchun.
Shunga kura, ekran buferining umumiy xotirasi 2000*2=4000 bayt buladi. Amalda bu kiymat (adres kulayligi uchun) 4096 bayt = 4 Kbayt ga teng.
Simvollar va fonlar diapazoni mosligiga kura , standart protseduralarning kiymat parametrlari kuyidagicha o’rnatiladi:
TextColor(Color:byte) - chikayotgan belgilar rangini o’rnatadi;
TextBackGround(Color:byte) - fon rangini o’rnatadi.
Parametrlar kiymati konstantalar bilan (masalan, Yellow,Red ) yoki ularning son kiymatlari bilan berilishi mumkin.
Misol.
TextColor(Yellow);
TextBackGround(Red);
Write('Kizil fonda sarik rang');
Reversiv tasvirlarni xam ekranga chikarish mumkin, buning uchun fon rangi bilan belgi rangi urnini almashtirish zarur. Yukoridagi keltirilgan misol uchun reversiv tasvir kuyidagi komandalar orkali teriladi:
TextColor(LightRed);
TextBackGround(Brown);
Write('Reversiv chikarish');
Misol.
TextColor(Yellow+Blink);
Write('Uchib-yonuvchi sarik belgilar');
TextColor(12+16);
Write('Uchib-yonuvchi och kizil belgilar');
TextColor(6);
Write('Uchib-yonmaydigan jigar rang belgilar');
Protsedurы TextColor va TextBackGround protseduralari TextAttr uzgaruvchisi bilan uzviy boglangan. TextAttr uzgaruvchisi rang atributining joriy kiymatini uz ichiga oladi. TextAtt uzgaruvchisining kiymatlarini o’rnatish ,TextColor va TextBackGround protseduralari birga ishlatilgandagina effek beradi..Masalan, kuyidagi dasturni bajarilishi bir xil natijani beradi:
1 2
TextColor(Yellow+Blink); ¦ TextAttr:=Yellow+Blink +Red shl 4;
TextBackGriund(Red); ¦
Yoriklikni boshkarish
LowVideo, NormVideo, HighVideo
Yoriklikni boshkarish uchun LowVideo, NormVideo, HighVideo standart protseduralari ishlatiladi.
Uchchala protsedura xam TextAttr uzgaruvchisining mos kiymatlarini o’rnatish uchun xizmat kiladi.
LowVideo - ekrandagi belgilarning minimal yoruklik rejimini o’rnatadi. Rejim NormVideo protsedurasi yordamida olib tashlanmaguncha ishlaydi. Protseduraninig xarakati TextAttr:= TextAttr AND $F7 operatorining xarakatiga ekvivilentdir.
Misol.
LowVideo;
Write ('MS-DOS 4.01');
Predlojeniye "MS-DOS 4.01" suzi eranga minimal yoruklik bilan chikariladi.
NormVideo - ekrndgi belilarning normal yoruklik rejimini o’rnatadi.
Misol.
LowVideo;
Write ('MS-DOS 4.01');
NormVideo; { LowVideo rejimini yukotadi}
Write ('Operatsion sistema');
"Operatsionnaya sistema" suzi ekranga normal yoruklikdagi yozuvlarda chikadi.
HighVideo - yoruklikning maksimal rejimini o’rnatadi.. Protsedura TextAttr:= TextAttr OR $08 operatori kabi ishlaydi.
Misol.
LowVideo;
Write ('MS-DOS 4.01');
NormVideo;
Write ('Operatsion sistema ');
HighVideo; { NormVideo rejimini yukotadi}
Write ('shaxsiy kompyuterlar uchun');
"Shaxsiy kompyuterlar uchun " suzi ekranga maksimal yoruklikdagi yozuvlarda chikadi.
Matnli darchalar
Darcha, Sound, NoSound, Delay
CRT moduli dastur ishi davomida axborotni ekranga chikarish uchu n ekrandan tula emas, kisman foydalanish imkonini beradi Ekranning bu kismini darcha deb ataladi. Darchananing ulchovi foydalanuvchi tomonidan aniklanadi, lekin uning ulchovi ekran ulchovidan ortik bulmasligi kerak.Darchalarni tashkil kilish uchun Turbo-Pascal tilida Window(X1,Y1,X2,Y2) protsedurasidan foydalaniladi:
bu yerda X1, Y1 - yukori chap darcha burchak koordinatalari, X2, Y2 -lar pastki ung darcha burchak koordinatalari.. Tula ekran koordinatalari (1,1,80,25) ga teng minimal -bir katorga bir ustun.
Misol.
Window(1,1,80,25); { Darcha - tula ekran }
Window(19,7,59,16); { Ekran markazidagi darcha}
Window protsedurasi aktivlashgandan sung , CRT moduli joriy darcha ulchovlari kayd kilingan WindMin va WindMax uzgaruvchilarini ishga tushiradi.
Bu kiymatlardan darchalar sistemasini tashkillashda foydalanish mumkin. Masalan, joriy darchaning X- va Y- yukori ung burchak koordinatalarini aniklash uchun kuyidagi ifoda kullaniladi:
X := Lo(WindMin);
Y := Hi(WindMin);
Xuddi shu usulda joriy darchaning ung past burchak koordinatalarini aniklash mumkin. Writeln, Write, Readln, Read, Window, GoToXY, ClrScr, InsLine, DelLine, WhereX, WhereY protsedura va funsiyalari joriy darchaga nisbatan uzlariga birikrtirilgan xarakatlarni bajaradilar. Matn darchalari bilan ishlashni kuyidagi misolda kurib utamiz.
PROGRAM DemoRandomWindow;
USES Crt;
VAR
X, Y, I : byte;
BEGIN
NormVideo;
ClrScr;
FOR I:= 1 to 40 DO BEGIN
X:= Succ(Random(80));
Y:= Succ(Random(25));
Window(X,Y,X+Random(20),Y+Random(8));
TextBackGround(Random(8));
ClrScr;
Write('Darchaga chikarsh',^G, I);
Delay(300)
END;
END. { DemoRandomWindow }
Ushbu dastur 40 ta darchani generatsiya kiladi, chegara va fon tasodifiy tanlanadi.
Darchalar koordinatasini saklash uchun kuydagi strukturadan foydalaniladi:
TYPE
WinRecord = RECORD
XupLeft,
YupLeft,
XlowRight,
YupRight : byte;
END;
CONST
MaxWin = 10;
VAR
WinMas : array[1..MaxWin] of WinRecord;
Darchalar kupicha dasturlarda matnli axbortni skrollinlash (kayirish) uchun ishlatiladi. Bu protsessni InsLine va DelLine protseduralari yordamida xam bajarish mumkin.
PROGRAM DemoInsLine;
USES Crt;
VAR
I : byte;
BEGIN
Window(20,6,60,15);
ClrScr;
FOR I:= 1 TO 10 DO
Write('Darchaga chikish');
FOR I:= 1 TO 5 DO BEGIN
GoToXY(1,1);
InsLine;
Write('Katorni kushish');
Delay(500);
END;
END. { DemoInsLine }
Tovushli effektni xosil kilish uchun Turbo Pascal da CRT modulining Sound, NoSound va Delay standart funksiyalaridan foydalanamiz.
Sound(I: word) - shaxsiy kompyuterning tovush NoSound protsedurasi bilan olib tashlanmaguncha generatsiyalanib turadi.
NoSound - Sound protsedurasi bilan berilgan tovush rejimini olib tashlash..
Delay - bu protsedura tovush kancha vakt davom etishi mumkinligini aniklydi.
Misol.
BEGIN
Sound(500);
Delay(2000);
NoSound
END;
Bu misolda 555 Gs li tovush signali 2 s (2000 ms) davom etishi mumkin.
Klaviaturani boshkarish
Skanirlash kodi, begili tugmachalar, boshkaruv tugmachalari, kengaytirilgan kod, ReadKey, KeyPressed, surish tugmachalari,
Standart klaviaturalarda uch tipdagi tugmachalar mavjud:
belgili (xarflar, sonlar);
boshkaruv (funksional tugmachalar, kursorni surish, kushish, yukotish va bokalar);
surish Ctrl, Alt, NumLock, CapsLock va boshkalar.
Biror -bir tugmacha bosilganda klaviatura mikroprotsessori shaxsiy kompyuterlar standartiga mos kodni tanlaydi va bu kod Turbo Pascal sistemasida skanerlash kodiga aylantiriladi. Skanerlash kodini analiz kilish mumkin va u klaviaturani boshkarish algoritmining asosi xisoblanadi.
Belgili tugmachalar bosilganda bittagina kiymatni kaytaradi va bu kiymat oddiy kod deb aytiladi.
Boshkarish klaishalari bosilganda ikkita kiymatni kaytaradi , ulardan birinchisi 0 (mana shu bokarish klavishvsining xususiyatiga kiradi), ikinchisi esa- tugmacha bosilgandagi kattalik. Maxsus tugmachalarning kaytarish kodlarini kengaytirilgan deb kabul kilinadi. Klaviaturani boshkarish CRT modulining maxsus ReadKey va KeyPressed funksiyalari yordamida bajariladi..
ReadKey funksiyasi belgilarni klaviaturadan ukib, Char tipidagi kiymatlarni kaytaradi.
KeyPressed. funksiyasi biron tugmacha bosilganda True ni, aks xolda False ni kaytaradi.
Belgili va boshkarish klavishlarini skanerlash kodlarini kuyidagi misolda kurib chikamiz.
PROGRAM DemoScanCode;
USES Crt;
CONST
Null = #0;
Esc = #27;
F1 = #59;
F10 = #68;
InsKey = #82;
VAR
ExtendKey: boolean;
Ch: char;
FUNCTION GetKey: char;
{ funksiya klavish bosilishini kutib turadi }
VAR
Ch: char;
BEGIN
ExtendKey:= False;
Ch:= ReadKey;
IF Ch = Null THEN BEGIN
ExtendKey:= True;
Ch:= ReadKey
END;
GetKey:= Ch
END; { GetKey }
BEGIN { DemoScanCode }
ClrScr;
REPEAT
Ch := GetKey;
IF NOT ExtendKey THEN
Writeln('Kodli belgi tugmachasi bosilgan ', byte(Ch))
ELSE
CASE Ch OF
F1..F10 : Writeln(' Funksional klavish bosilgan');
InsKey : Writeln(' bosilgan')
ELSE Writeln('Kengaytirilgan kod #00+', byte(Ch));
END; { case }
UNTIL (Ch <> Esc);
END. { DemoScanCode }
Endi siljish tugmachasini qanday ishlashini kurib chikamiz. Misol tarikasida SIF (NumLock) klavishini kurib chikamiz.
Agar baytlarni 0 dan 7 gacha bitlar yigindisi deb karalsa, NumLock ga $0000:$0417 absalyut adresli baytning 5- biti tugri keladi. NumLock klavishining ishlash dasturi kuyidagicha:
PROGRAM DemoNumLock;
USES Crt;
CONST
Esc = #27;
VAR
Ch : char;
ShiftByte: byte absolute $0000:$0417;
BEGIN
REPEAT
IF KeyPressed THEN
Ch:= ReadKey;
IF ShiftByte AND $20 <> 0 THEN
Write(' NumLock tugmachasi bosilgan');
UNTIL Ch <> Esc;
END. { DemoNumLock }
Dos moduli
Sitemali vakt va kun bilan ishlash protsedura va funksiyalari, DiskFree, DiskSize, Fexpand, FSearch, FindFirst, FindNext, fayl atributlari,
Dos moduli - turli DOS funksiyalarini ishlatish vositalarini uz ichiga oladi. Bu modulda juda kup protsedura va funksiyalar mavjud , lekin eng kup tarkalganlari va ushbu modulga kirmaydigan protseduralarni kurib chikamiz.
Sistemali kun va vakt bilan ishlash uchun protsedura va funksiyalar:
procedure SetTime (Hour, Min, Sec,Sec100: word) - sistemali vaktni o’rnatadi. Bu yerda, Hour - vaktni beradi, Min - minutlar, Sec - sekundlar, Sec100 - sekundning yuzdan bir bulagi.
procedure GetTime(var Hour, Min, Sec, Sec100: Word) - sitemali vaktni kaytaradi.
Kaytarilayotgan uzgaruvchilarning chegara kiymati : Hour 0..23, Min 0..59, Sec 0..59, i Sec100 0..99.
procedure GetDate(var Year, Month, Day, DayOfWeek: Word) - sitemali kunni kaytaradi. Year - yil, Month- oy , Day - kun, DayOfWeek - xafta kunlari.
Kaytarilayotgan uzgaruvchilarning chegara kiymati: Year 1980..2099, Month 1..12, Day 1..31, i DayOfWeek 0..6 (bu yerda 0 - Yakshanba).
procedure SetDate (Year, Month, Day: Word) - sitemali kunni o’rnatadi. Uzgaruvchilarning kiymatlari GetDate protseduasidagi kiymatlarga teng.
Disklar bilan ishlash uchun protsedura va funksiyalar:
function DiskFree(Drive: Byte): Longint - ko’rsatilgan Drive diskini xotiradagi bush xajmini baytlardagi xajmini kaytaradi.
Bu yerda Drive uzgaruvchisi - disk:
0 joriy disk
1 A disk
2 V disk
3 S disk
va xokozo.
function DiskSize(Drive: Byte): Longint - ko’rsatilgan Drive diskini tula xajmini kaytaradi.
Bu yerda Drive uzgaruvchisi- disk:
0 joriy disk
1 A disk A
2 V disk B
3 S disk C
va xokozo.
Fayllar bilan ishlash uchun protsedura va funksiyalar:
function FExpand (Path: PathStr): PathStr - fayl nomini kengaytiradi.
Vazifasi : Fayl nomini Path parametri orkali berilgan, tula fayl nomigacha kengaytiradi.
Natijada olingan nom yozuv xarflariga aylantirilib, diskovodlarning xarfiy belgilarini uz ichiga oladi. Bular: ikki Nuqta, ildiz katalogga kirish yuli va fayl nomi.
C:\SOURCE\PAS ni joriy disk va katalog deb faraz kilamiz, u xolda FExpand protsedurasi kuyidagi kiymatlarni beradi:
FExpand('test.pas') = 'C:\SOURCE\PAS\TEST.PAS'
FExpand('../*.TPU') = 'C:\SOURCE\*.TPU'
FExpand('c:\bin\turbo.exe') = 'C:\BIN\TURBO.EXE'
Rrocedure FSplit(Path: PathStr; var Dir: DirStr; var Name: NameStr; var Ext: ExtStr) - lar fayl nomini uchta komponentaga buladi.
Path parametri orkali berilgan fayl nomi uchta komponentaga bulinadi Dir uzgaruvchisi uchun diskovodning xarfiy belgisi va katalogga kirish marshruti o’rnatiladi. Name uzgaruvchisi fay nomi kiymatini uzlashtiradi, Ext esa fayl nomi kengaymasini uzlashtiradi..
PathStr, DirStr, ExtStr va NameStr tiplari Dos. modulida aniklangan.
Fayl nomini komponentalarga bulishda FSplit protsedurasi xech qanday belgilar kushmiydi va uchirmaydi. Natijaviy Dir, Name va Ext kiymatlarni birlashtirishda berilgan marshrut olinadi.
function Fsearch (Path: PathStr; L: String): PathStr funksiya kataloglar ruyxatidan faylni axtaradi.
Path- bu axtarilayotgan fayl nomi ,L -kataloglar ruyxati.
procedure FindFirst(Path: String; Attr: Byte; var S:SearchRec);
Berilgan yozuvdagi birinchi yozuvni axtaradi.
Bu protsedurada Path urniga *, ? ni kullash mumkin.. Attr - izlanilayotgan fayl atributi.
Natija SearchRec yozuviga kaytadi.
Misol:
uses Dos;
var
DirInfo : SearchRec;
begin
FindFirst('*.PAS', Archive, DirInfo); { DIR kabi*.PAS }
while DosError = 0 do
begin
Writeln(DirInfo.Name);
FindNext(DirInfo);
end;
end.
procedure FindNext(var s: SearchRec);
Vazifasi: Fayl atributlariga va nomiga mos keyingi yozuvlarni kaytaradi.
Fayl atributlari ruyxati:
ReadOnly $01 - fakat ukiщ uchun
Hidden $02 - yashirin
SysFile $04 - sistemali VolumeID $08 - tom metkasi Directory $10 - katalog
Archive $20 - arxivli
AnyFile $3F - xar qanday fayl
Tayanch so`z va iboralar: LowVideo, NormVideo, HighVideo, Sitemali vakt va kun bilan ishlash protsedura va funksiyalari, DiskFree, DiskSize, Fexpand, FSearch, FindFirst, FindNext, fayl atributlari, Skanirlash kodi, begili tugmachalar, boshkaruv tugmachalari, kengaytirilgan kod, ReadKey, KeyPressed, surish tugmachalari,
Darcha, Sound, NoSound, Delay
Nazorat savollari:
1.Belgi nima?
2.Matnli rejim qanday o’rnatiladi?
3.Ekranni tozalash qanday amalga oshiriladi?
4.Kursor qanday boshkariladi?
5.Kursor koordinatalari qanday o’rnatiladi?
6.Belgilarni uchirib- yondiri qanday bajariladi?
7. LowVideo ning vazifasi nima?
8.Klaviaturani boshkarish qanday amlga oshiriladi?
9. ReadKey va KeyPressed funksiyalarining vazifalari nima?
10. Dos moduli nima?
11. Sistemali kun va vakt bilan ishlash uchun protsedura va funksiyalarining vazifalari nima?
12. Disklar bilan ishlash uchun qanday protsedura va funksiyalar mavjud?