Ma'ruza №1 Paskal tilining umumiy tavsifi


Umumiy ma’lumotlar Protsedura, funksiya, protseduralar strukturasi



Download 336,5 Kb.
bet9/9
Sana03.01.2020
Hajmi336,5 Kb.
#31913
1   2   3   4   5   6   7   8   9
Bog'liq
Ma'ruza №1 Paskal tilining umumiy tavsifi

Umumiy ma’lumotlar

Protsedura, funksiya, protseduralar strukturasi

Turbo Pascal tilida kismiy dasturlarni kullash protsedura va funksiyalar orkali amalga oshiriladi..

Protsedura - bu dasturning nomlangan kismi xisoblanib, uni nomi bilan chakiriladi va ular ustida ishlash yoki ma’lum operatsiyalar bajarish mumkin. Protsedura strukturasi dastur strukturasiga uxshash buladi. Protsedura ifodada operant xolatda uchrashi mumkin emas.

Funksiya protseduraga uxshash lekin ikki xil farki bor, birinchisi funksiya chakirish tugmasiga skalyar kiymatlarini uzatadi va ikkinchisi, funksiyaning nomi ifodada operant sifatida katnashadi.

Turbo Pascal tilining funksiya va protseduralari ikkita gruppaga bulinadi: foydalanuvchi tomonidan aniklangan va ilgari mavjud bulgan protsedura va funksiyalar. Birinchisi foydalanuvchi tomonidan nomlanadi va chakiriladi. Ikkinchisi tilning tarkibiga kirib? uni fakat kuyilgan nomi buyicha chakiriladi.

Xamma standart vositalar maxsus biblioteka modullarida saklanadi va ular sistema nomlariga ega buladi. Protsedura protsedura nomi va protsedura tanasidan iborat buladi.

Standart biblioteka modullari


Modul, System, Crt, Dos,Graph, Graph3, Overlay, Printer, Turbo3

Turbo Pascal 6.0 sistemasiga sakkizta modullar kiradi: System, Crt, Dos Graph, Graph3, Overlay, Printer, Turbo3 va Turbo Vision maxsus bibliotekasining System moduli oddiy xolatda ulanadi, kolgan modullarni dasturchi USES rezervlashgan suzi orkali ulashi mumkin.


USES Crt, Dos, Printer;
Xar bitta modulning vazifasini kiskacha kurib chikamiz.
System - Turbo Pascal 6.0; ning yuragi xisoblanib , unda kolgan xamma modullarning ishlashini ta’minlovchi dasturlar saklanadi.
Srt - displey adapterining ish rejimini o’rnatadi.
Dos - moduli MS-DOS ning xamma manbalaridan foydalanish imkoniyatini beruvchi funksiya va protseduralarni uz ichiga oladi.
Graph3 - Turbo Pascal 3.0. ning standart grafik funksiyalarida foydalanish imkoniyatini beradi.
Overlay - overley dasturlar tuzish vositalarini saklaydi.
Rrinter - chop etish kurilmalariga tez utishni ta’minlaydi.
Turbo3 - Turbo Pascal 3.0 versiyasi bilan maksimal moslikni ta’minlaydi.
Graph - grafik imkoniyatlaridan foydalanishda SGA, YeGA, VGA, NERS, IBM 3270, MSGA i ATT6300 adapterlarining efektiv ishlashini ta’minlaydi.
Turbo Vision – foydalanuvchining interfeysini yaratish uchun mujjal kism dasturlar bibliotekasi.
System moduli dasturga aftomatik ulanadi, shuning uchun uning nomi USES bulimida ko’rsatilmaydi va uchun uning funksiya va protseduralaridan foydalanish mumkin.

Maxsus kurilgan protsedura va funksiyalar



Matematik funksiyalar, skalyar funksiya va protseduralar, tiplarni uzgartiruvchi funksiyalar, maxsus protsedura va funksiyalar.

Arifmetik protsedura va funksiyalar

Abs(X:real/integer):real/integer - X ni absolyut kiymatini xisoblash, natija tipi parametr tipiga mos.


ArcTan(X:real):real - X radianga teng bulgan tangens burchagini xisoblash.
Cos(X:real):real - kosinusni xisoblash, X parametri burchakni radianlardagi kiymatini beradi..
Exp(X:real):real - X eksponentani xisoblash.
Frac(X:real):real - X ni kasr kismini xisoblash.
Int(X:real):real - X ni butun kismini xisoblash.
Ln(X:real):real - X ni natural logarifimini xisoblash.
Pi:real – Pi ni kiymatini kaytaradi. (3.141592653897932385).
Sin(X:real):real - Sinusni xisoblash . X burchakni radianlardagi kiymatini beradi.

Sqr(X) - X ni butun va xakikiy kiymatini darajaga kutarish. Natija tipi parametr tipiga mos.


Sqrt(X:real):real - X dan ildiz chikarishni xisoblash.
Random:real - 0..0.99 diapazondagi tasodifiy sonlar kiymatini geniratsiyalaydi.
Random(I:word):word - 0..I diapazondagi tasodifiy sonlar kiymatini geniratsiyalaydi.
Randomize - tasodifiy sonlar geniratori bazasini uzgartirish.

Skalyar protsedura va funksiyalar

Dec(X{,n}) - X ni butun sonli kiymatini n ga kamaytiradi. Majburiy bulmagan n parametri yuk bulsa X birga kamayadi.


Inc(X{,n}) - X ni butun sonli kiymatini n ga ortiradi. Majburiy bulmagan n parametri yuk bulsa X birga ortadi.
Pred(S) - funksiya tip kiymatlari ruyxatidagi S ning elementini kaytaradi Natija tipi parametr tipiga mos buladi. Agar S element bulmasa, dasturda uzilish buladi.
Succ(S) - funksiya tip kiymatlari ruyxtida S dan keyin keladigan kiymatlarni kaytaradi. Natija tipi parametr tipiga mos buladi. Agarda, S dan keyin keladigan kiymatlar yuk bulsa , dasturda uzilish buladi.

Odd(I:integer):boolean - Agar I tok bulsa True ni kaytaradi, juft bulsa, False ni kaytaradi.



Tiplarni uzgartiruvchi funksiyalar

Chr(I:byte):char - kiymati birga teng bulgan axborot almashish standart kod belgisingi kaytaradi. Agar parametr kiymati 255 dan katta bulsa dasturda uzilish buladi.


Ord(S):longint - S tipda aniklangan tuplamdagi S kiymatni tartib nomerini kaytaradi.
Round(X:real):longint - X ni butun songacha chegaralangan kiymatini kaytaradi..
Trunc(X:real):longint - X ga teng yoki kichik bulgan sonni kiymatini kaytaradi.

Dasturni boshkarish protseduralari.


Delay(I:word) - dastur bajarilishini I millisekundga ushlab kolish.
Exit - bajariluvchi blokdan atrof muxitga utish. Agarda joriy blok, protsedura yoki funksiya bulsa, u xolda chikish tashki blokga buladi. Agarda Exit asosiy dasturning operator kismida ko’rsatilgan bulsa , dastur uz ishini tugatib, boshkaruv sistema dasturiga utkaziladi.

Halt(N:word) - dastur bajarilishini tuxtatish va boshkaruvni sistema dasturiga utkazish (agarda PAS-fayli bajarilsa) yoki DOS ga (agarda EXE-fayli bajarilsa). N - operatsion sistemaga uzatiladigan dasturni tugallash kodi.

RunError(ErrCode:word) - dastur bajarilishini va bajarish vakti xatoligini generatsiyalash. ErrCode - xatolik tartib nomerini uz ichiga olgan, byte tipi parametri.

Maxsus protsedura va funksiyalar


FillChar(P,Dl,Z) - asosiy xotirani baytma-bayt berilgan kiymatlar bilan tuldiradi va eng tezkor ishlovchi protseduralardan biri xisoblanadi. Tuldirish P da ko’rsatilgan birinchi baytdan boshlanib, Dl parametrida berilgan ulchovga teng buladi. P - xar qanday tidagi uzgaruvchi, Dl - uzunlikni ko’rsatuvchi butun ifoda.
Move(P1,P2,Dl) - asosiy xotiradagilarni P1 uzgaruvchining birinchi baytidan boshlab P2 ning birinchi baytidan boshlangan oblastga junatadi. Oblastlar uzunligi Dl parametri yordamida aniklanadi. P1 va P2 -xar qanday tidagi uzgaruvchi, Dl - butun ifoda.
Hi(I:integer):byte - I ning katta baytini ajratib, natijaning kichik baytiga joylashtiradi.Katta bayt natijasi 0 ga teng.
Lo(I:integer):byte - I ning kichik baytini ajratib, natijaning kichik baytiga joylashtiradi.Katta bayt natijasi 0 ga teng
ParamCount : string - dasturda buyruk katorida berilgan parametrlar sonini kaytaradi.
ParamStr (n:word) : string - buyruk katorida ko’rsatilgan parametrni kaytaradi.
SizeOf(IT):word - asosiy xotira xajmini baytlarda xisoblaydi.

IT - uzgaruvchining yoki berilganlar tipining identifikatori.


Swap(I:integer):integer - I parametri bilan berilgan butun sonli ifoda ichidagilarini katta va kichik baytlar orasida almashtiradi.

Foydalanuvchining protsedura va funksiyalari


Foydalanuvchining protsedura va funksiyalari modulli dasturlashning asosi xisoblanadi. Masalani kismlarga bulib , mantikiy asoslangan modullarni protsedura va funksiya sifatida karab, dasturchi amaliyotda kup kullaniladigan sistemali yondoshuvning asosiy prinsiplarini kullaydi.

Protseduralar



Protseduralarning ifodalanishi, protseduraning sarlavxasi (nomi), protseduraning tanasi, formal parametrlar ruyxati
Protsedura protsedura sarlavxasi (nomi) va tanasidan iborat. Protseduraning sarlavxasi PROCEDURE rezervlashgan suzdan boshlanib, protseduraga nom berilib, kavs ichida xar bir parametrlarning tiplari ko’rsatilgan formal parametrlar ruyxati keltiriladi. Protseduraning nomi - programma chegarasidagi identifikator. Protsedura tanasi strukturasi buyicha dasturga uxshagan lokal blokdan tashkil topadi. Belgi, konstanta, tiplar va boshkalar shu protsedura chegarasida xakikiydir.Protsedura tanasida turli global konstanta va uzgaruvchilar kullanilishi mumkin.
PROCEDURE (Formal parametrlar);

CONST ...;

TYPE ...;

VAR ...;


BEGIN

END;
Misol tarikasida, dastur ishini tuxtatuvchi va mavjud xatolar tugrisida ma’lumot beruvchi protsedurani kurib chikamiz :


PROCEDURE Abort(Msg: string);

BEGIN


Writeln('Xato: ', Msg);

Halt(1);


END;
Protsedura uz-uzidan ishlamaydi , buning uchun protsedurani nomi buyicha chakirib , shu tipdagi bor parametrlarni formal parametrlar kabi ko’rsatib utish kerak.Formal parametrlar tipi va mikdori bor parametrlar mikdoriga teng. Misol sifatida kuyidagi dasturni kurib chikamiz:
PROGRAM DemoProc;

{ Unta kiritilgan butun musbat sonlar yigandisini xisobla, agar kiritlgan son manfiy bulsa, bajarishni tuxtat).

CONST

Limit = 10; { kiritilayotgan sonlar chegarasi }



VAR

Count, Item, Sum: integer; {$I ABORT.PAS } { ABORT.PAS fayli matniga ulanish}

BEGIN

Count:= 0;



Sum:= 0;

WHILE (Count < Limit) DO BEGIN { siklni bajrilish sharti }

Count:= Count+1;

Write('Vvedite ', Count, '-oye butun son: ');

Readln(Item);

IF Item < 0 THEN

Abort('manfiy son kiritilgan'); { protsedurani chakirish }

Sum:= Sum+Item;

END;

Writeln('Kiritlgan sonlar yigindisi ', Sum);



END.

Funksiyalar


Funksiyani ifodalash,funksiya sarlavxasi (nomi), funksiya tanasi, formal parametrlar ruyxati, chakirilish Nuqtasining funksiya yordamida kaytarilgan kiymatmi tipi.
Foydalanuvchi tomonidan aniklangan funksiya sarlavxa va tanadan iborat buladi.Sarlavxa FUNCTION suzidan boshlanib, kavs ichida funksiyaning identifikatori, formal parametrlarning majburiy bulmagan ruyxati va funksiya tomonidan kaytarilgan kiymatning tipi ko’rsatiladi. Funksiyaning tanasi strukturasi buyicha dasturga uxshagan lokal blokdan tashkil topadi:
FUNCTION (Formal parametrlar) : ;

CONST ...;

TYPE ...;

VAR ...;


BEGIN

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:

  1. Protsedura nima ?

  2. Funksiya nima ?

  3. Protsedura va funksiyaning farki nimada ?

  4. Standart biblioteka moduli nima?

  5. Standart arifmetik funksiyalarga nimalar kiradi?

  6. Protsedura parametrlari nima?

  7. Funksiya qanday yeziladi?

  8. Funksiya tanasi nima?

  9. Foydalanuvchining protsedura va funksiyalari kanady tuziladi?

  10. Maxsus protsedura va funksiyalarga nimalar kiradi?


Ma’ruza .№15 Modullar tashkili va moxiyati.. Crt va Dos modullari bilan ishlash

Reja


  1. Crt modulining vazifasi

  2. Matnli rejimlar

  3. Ranglarni, klaviaturani, ovozni boshkarish

  4. 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?

Download 336,5 Kb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9




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

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish