5.1. Belgili ma`lumotlar
Belgili ma`lumotlarni saqlash va qayta ishlash uchun Ansichar tipi (har biri sakkiz razryadli ikkilik sanoq sistemasida kodlanadigan ANSI tizimi) va WideChar tipidagi (har bir belgisi ikki bayt bilan kodlanadigan Unicode tizimi) o`zgaruvchilardan foydalaniladi.
Windows operatsion sistemasi asosan ANSI kodlash usulidan foydalanadi. Rus alifbesini o`z ichiga olgan ANSI jadvali Windows-1251 deb ataladi. Quyida undagi ayrim belgi va ularga mos kodlar keltiriladi.
Ayrim xizmatchi belgilar 5.1-jadval
Kod
|
Belgi
|
Kod
|
Belgi
|
9
|
Tabulyatsiya
|
27
|
Enter
|
11
|
Yangi satr
|
32
|
Bo`sh joy
|
13
|
Abzats oxiri
|
|
|
32-127 kodli belgilar 5.2-jadval
kod
|
Belgi
|
kod
|
belgi
|
kod
|
Belgi
|
kod
|
Belgi
|
32
|
Bo`sh joy
|
56
|
8
|
80
|
R
|
104
|
h
|
33
|
!
|
57
|
9
|
81
|
Q
|
105
|
i
|
34
|
"
|
58
|
:
|
82
|
R
|
106
|
j
|
35
|
#
|
59
|
;
|
83
|
S
|
107
|
k
|
36
|
$
|
60
|
<
|
84
|
T
|
108
|
l
|
37
|
%
|
61
|
|
85
|
U
|
109
|
m
|
38
|
&
|
62
|
>
|
86
|
V
|
110
|
n
|
39
|
'
|
63
|
7
|
87
|
W
|
111
|
o
|
40
|
(
|
64
|
@
|
88
|
X
|
112
|
p
|
41
|
)
|
65
|
A
|
89
|
Y
|
113
|
q
|
42
|
*
|
66
|
B
|
90
|
Z
|
114
|
r
|
43
|
|
67
|
C
|
91
|
[
|
115
|
s
|
44
|
,
|
68
|
D
|
92
|
Ғ
|
116
|
t
|
45
|
-
|
69
|
E
|
93
|
]
|
117
|
u
|
46
|
,
|
70
|
F
|
94
|
^
|
118
|
v
|
47
|
|
71
|
G
|
95
|
_
|
119
|
w
|
48
|
0
|
72
|
H
|
96
|
'
|
120
|
x
|
49
|
1
|
73
|
I
|
97
|
A
|
121
|
u
|
50
|
2
|
74
|
J
|
98
|
B
|
122
|
z
|
51
|
3
|
75
|
K
|
99
|
S
|
123
|
[
|
52
|
4
|
76
|
L
|
100
|
D
|
124
|
|
53
|
5
|
77
|
M
|
101
|
E
|
125
|
]
|
54
|
6
|
78
|
N
|
102
|
F
|
126
|
~
|
55
|
7
|
79
|
O
|
103
|
G
|
|
|
Dastlab versiyalari bilan moslikni ta`minlash uchun AnsiChar ga ekvivalent bo`lgan Char tipidan foydalanish mumkin.
Belgili tipdagi o`zgaruvchining qiymati bitta belgidan iborat bo`lib, u lotin va rus alifbesi xarflari, raqamlar, tinish belgilari, qisqa qilib aytganda, 5.1, 5.2-jadvallardagi kabi belgilardan iborat bo`lishi mumkin.
Belgili tipdagi o`zgaruvchilarni e`lon qilish umumiy ko`rinishda quyidagicha yoziladi:
Nom: char;
Bu yerda nom – belgili tipdagi o`zgaruvchining nomi; char – belgili tipning kalit so`zi. Masalan:
x: char; ch, y9: char;
Sonli o`zgaruvchilar kabi Char tipidagi o`zgaruvchilarga ham qiymat berish mumkin. Bu holda : belgisidan o`ng tomonda char tipidagi ma`lumot (masalan, belgi, belgili konstanta, char tipidagi o`zgaruvchi yoki ifoda) kelishi lozim. Belgielgili konstantalar apostrof belgisi bilan yoziladi.
x:=’9’; c1 : '*'; s2 : c1;
buyruqlari bajarilganidan so`ng, s1 - o`zgaruvchi * ni qiymat qilib oladi, s2 esa c1 ning qiymatini oladi.
Char tipidagi o`zgaruvchilarni shu tipidagi boshqa ma`lumotlar bilan taqqoslash mumkin. Bu taqqoslashda har bir belgiga qandaydir son mos qo`yilganligi e’tiborga olinadi (5.1, 5.2-jadvallar). Masalan: 'A' belgisiga 'a' ga qaraganda kichikroq son mos keladi. Shunday qilib,
'0'<'1'<..<'9'<..<'A'<'B'<..<'Z'<'a'<'b'<..<'z'.
Rus alifbesi xarflariga lotin xarflariga qaraganda katta sonlar mos keladi. Bunda quyidagi munosabatlar o`rinli:
'A'<'Б'<'В'<..<'Ю'<'Я'<'a'<'б'<'в'<...<'ю'<'я'
Belgi o`rniga uning kodidan ham foydalanish mumkin. Faqat bu kod oldiga # operatorini qo`yish lozim. Masalan, 'А' konstantasi o`rniga #65 deb yoziladi. Bu usul odatda xizmatchi belgilar yoki klaviaturadan kiritib bo`lmaydigan belgilar uchun qo`llanadi. Masalan, yangi satrga o`tish uchun "abzats oxiri" belgisi o`rniga #13 tarzidagi yozuv qo`llanadi.
Belgili ma`lumotlarni qayta ishlashda Chr va Ord funtsiyalaridan foydalaniladi. Chr funksiyasi parametriga mos keladigan belgini qimat qilib oladi. Masalan, c:chr(32) ; buyrug’i bajarilganda, s ning qiymati "bo`sh joy" ga teng (5.1-jadval).
Ord funksiyasi parametr sifatida ko`rsatilgan belgi kodini aniqlaydi. Masalan, k : ord('*') ; buyrug’i bajarilganda k ning qiymati "*" belgisi kodi bo`lgan songa (42) teng bo`ladi.
5.1-listingdagi kod ekranga rus alifbosi xarflarini chiqarish uchun mo`ljallangan. Dastur interfeysi 4.1-rasmda keltirilgan.
Bu dasturda asosiy ishni OnActivate protsedurasi bajaradi. U ilova oynasi faollashganda ishga tushadi. Shu sababli TForm1.FormActivate protsedurasi forma ekranda ochilgan zahoti avtomatik tarzda ishga tushadi.
5.1-listing. Rus xarflari jadvali
procedure TForm1.FormActivate(Sender: TObject);
var st: string; jadval belgilar satri sifatida hosil qilinadi
dec: byte; belgi kodi
i, j: integer; jadvaldagi satr va ustun nomeri
begin
st : '';
dec : 192;
for i : 0 to 15 do o`n oltita satr
|
|
5.1-rasm. Ilova oynasi forma tashkil qilinayotganda
|
5.2-rasm. Ilova oynasi ish vaqtida
|
begin
dec : i 192;
for j : 1 to 4 do to`rtta ustun
begin
st : st chr(dec) '-' IntToStr(dec) ' ';
dec : dec 16;
end;
st : st #13; ekranning yangi satrga o`tish
end;
Label1.caption : st;
end;
end.
Rus xarflari ilova formasida faqat bitta Label1 komponentasiga joylashtirilgan. Jadval ustunlari bir hil kenglikka ega bo`lishi uchun Label1.Font.Name hususiyatiga barcha belgilari bir kattalikda bo`lgan shrift, masalan, Courier New Cyr qiymati beriladi. Dastur oynasi 5.2-rasmda berilgan.
5.2. Satrlar
Satrlar Shortstring, Longstring hamda Widestring tipidagi ma`lumot sifatida berilishi mumkin. Bu tiplar bir-biridan bitta satrga yozish mumkin bo`lgan belgilarning eng ko`p soni, o`zgaruvchilar uchun xotiradan ajratiladigan joy hamda belgilarni korlash usullari bilan farqlanadi.
Shortstring tipidaga o`zgaruvchi uchun xotiradan joy statik ajratiladi. Bunday satrdagi belgilarning eng ko`p soni 255 tadan oshmaydi. Longstring va widestring tipidagi o`zgaruvchilar uchun xotira dinamik usulda, ya`ni dasturning bajarilishi vaqtida ajratiladi. Shuning uchun bunday satrlarning uzunligi chegaralanmaydi.
Bulardan tashqari, dasturlarda universal String satrli tipidan ham foydalanish mumkin. U Shortstring tipiga ekvivalent.
Satrli tipdagi o`zgaruvchilar quyidagicha e`lon qilinadi:
Nom: String; yoki Nom: String [uzunlik];
Bu yerda Nom – o`zgaruvchi nomi: string - satrli tip uchun kalit so`z; [uzunlik] – satrning eng katta uzunligini ko`rsatuvchi butun son. Masalan:
a, b: string; name: string[30];
Agar starli o`zgaruvchi e`lonida satr uzunligi ko`rsatilmagan bo`lsa, u holda uning uzunligini 255 ga teng deb qabul qilinadi.
Dastur matnida, satr hisoblangan belgilar ketma-ketligi apostrof (' ') belgilari orasida ko`rsatiladi. Masalan, parol satrli o`zgaruvchisiga qiymat berish ifodasini quyidagicha yozish mumkin:
parol : 'Mahfiy sir'; yoki parol : '2006';
Shuni alohida ta`kidlash kerakki, Parol : 2006; buyrug’i noto`g’ri, chunki parol satrli, 2006 esa butun sonli tipga mansub. Bunday buyruqlar kompilyatsiya qilish jarayonida uchrab qolsa, ekranga
incompatible types: 'Char' and 'Integer'
(Char va Integer tiplari bir-biriga mos emas)
ko`rinishidagi axborot chiqariladi.
Satrli tipdagi ma`lumotlarni shu tipdagi boshqa satrlar bilan , <, >, <, > munosabat belgilari yordamida taqqoslash mumkin. Satrlar dastlabki belgilaridan boshlab belgima-belgi taqqoslanadi. Agar satrlarning xamma belgilari bir hil bo`lsa, bunday satrlar o`zaro teng deb qaraladi. Dastlabki belgilaridan boshlab, bir hil pozitsiyadagi belgilari har hil bo`lsa, bu satrlar ichida bir hil bo`lmagan birinchi belgi uchragan pozitsiyada qaysi satr belgisi kattaroq kodga ega bo`lsa, shu satr katta hisoblanadi Quyidagi jadvalda satrlarni taqqoslashga misollar keltiramiz:
Satrlarni taqqoslash 5.4-jadval
1-satr
|
2-satr
|
Taqqoslash natijasi
|
Aliev
|
Aliev
|
Bu satrlar teng
|
Vorisova
|
vorisova
|
1-satrdan 2-satr katta
|
Amirov
|
Amirova
|
1-satr 2-satrdan kichik
|
Basic
|
Delphi
|
1-satr 2-satrdan katta
|
Satrli ma`lumotlar ustida taqqoslash amalidan tashqari, qo`shish amalini ham bajarish mumkin. Satrlarni qo`shganda shu satrlardan birinchisining o`ng tomoniga ikkinchisini yonma-yon yozish natijasida yangi satr hosil bo`ladi. Masalan,
Familiyasi : 'Aliev' ; Ismi : 'Vali';
ful_name : Familiyasi ' ' Ismi;
amallari bajarilganda, ful_name o`zgaruvchining qiymati 'Aliev Vali' ga teng.
Satrli ma`lumotning biror belgisini ko`rsatish uchun uning nomi va kvadrat qavslar ichida shu belgining nomeri yoziladi. Masalan, yuqoridagi ful_name o`zgaruvchisi uchun ful_name[8] yozuvi "a" belgisini bildiradi.
5.3. Sartlar ustida amallar bajarish
Delphi tilida satrlar bilan ishlash uchun bir qator metodlar kiritilgan bo’lib, ular ikki guruhga - sonli va satrli qiymat oladigan metodlarga bo`lingan. Dastlab sonli qiymat oladigan metodlarni ko`raylik.
Length funksiyasi berilgan satrning uzunligini aniqlash uchun xizmat qiladi. Bu funksiyaning argumenti satr tipidagi ifoda bo’lib, qiymati satrdagi belgilar soniga teng bo`ladi. Masalan,
n : length('Aliev');
m : length('Delphi tili');
buyruqlari bajarilganda n va m o`zgaruvchilarning qiymatlari mos ravishda 5 va 11 ga teng bo`ladi.
Eslatma: "Bo`sh joy" ham bitta belgi hisoblanadi.
Pos funksiyasi bir satr ikkichisining tarkibida uchraydimi yoki yo`qmi? degan savolga javob beradi. Bu funksiya umumiy ko`rinishda quyidagicha yoziladi:
pos (1-satr, 2-satr) ;
bu yerda 1-satr — satr tipidagi o`zgaruvchi yoki konstanta bo`lib, uni satr tipidagi 2-satr takribidan qidiriladi. 2-satr ning tarkibida nechanchi posit-siyadan boshlab 1-satr ning uchrashi pos funksiyasining qiymatini aniqlaydi. Agar uchramasa bu funksiya qiymati nolga teng. Masalan,
r : pos('til', 'Delphi tili');
q : pos('Basic', 'Delphi tili');
buyruqlari bajarilganda, r – ning qiymati 8 ga, q - esa 0 teng bo`ladi.
Val metodi harfiy kattaliklarni sonli kattalikka aylantirish uchun xizmat qiladi. Bu protsedura umumiy ko`rinishda quyidagicha yoziladi:
Val(satr, a, b);
Bu yerda satr - satr tipidagi ma`lumot; a - satr ning birinchi raqam bo`lmagan belgisigacha turgan raqamlar ketma-ketligi ifodalaydigan butun son, b - satr ning birinchi raqam bo`lmagan belgisi turgan pozitsiyani ko`rsatuvchi butun son bo`lib, xatolik kodli deb ataladi.
Val(satr, a, b) metodiga namunalar:
-
satr
|
a
|
b
|
12345
|
12345
|
0
|
1236,86565
|
1236
|
5
|
0,1276
|
0
|
2
|
-12,23
|
12
|
4
|
14.57
|
14
|
4
|
%14.445
|
0
|
1
|
F12.13
|
0
|
1
|
Endi satrli qiymat oladigan funksiya va protseduralarni ko`raylik.
Soncat funksiyasi bir nechta satrlarni qo`shib, bitta satrga yig’ish uchun xizmat qiladi. Uning umumiy ko`rinishi quyidagicha:
Satr : concat(satr1, ... satrN);
Bu yerda satr1, ... satrN – bitta satrga yig’iladigan satrli o`zgaruvchi yoki konstantalar; satr – natijaviy satr. Masalan,
st1 : 'Delphi '; st2 : ' juda boy '; st3 :'til!';
st : concat(st1, st2, st3);
buyruqlari bajarilganidan so`ng, st o`zgaruvchining qiymati "Delphi juda boy til!" ga teng bo`ladi.
Delete metodi satrning ma`lum bir qismini o`chirishga imkon beradi. Bu protsedura umumiy ko`rinishda quyidagicha yoziladi:
delete(satr, n, m)
bu yerda satr - satr tipidagi o`zgaruvchi yoki konstanta; n - o`chiriladigan belgining nomeri; m – o`chiriladigan belgilar soni. Masalan,
N : 'Toshkent shahri go`zal'; delete(n, 9, 6);
buyruqlari bajarilsa, n – ning qiymati 'Toshkent go`zal' ga teng bo`ladi.
Quyida keltirilayotgan while tsikli st satri boshida kelgan “bo`sh joy” belgilarini o`chiradi:
while(pos(' ', st) 1) do delete (st, 1, 1);
Bo`sh joylarni delete (st, 1, 1) protsedurasi o`chiradi.
Copy funksiyasi funksiyasi satrning ma`lum bir qismini ajratib olish uchun ishlatiladi. U umumiy ko`rinishda quyidagicha yoziladi:
Copy( satr, n, m ) ;
bu yerda satr – qismi ajratib olinadigan satr yoki satr tipidagi o`zgaruvchi; n - ajratish boshlanadigan birinchi belgining o`rni; m – ajratib olinadigan belgilar soni. Masalan,
st : 'Professor Olimov'; fam : copy(st, 11, 6) ;
bo`lsa, fam o`zgaruvchisi "Olimov" ga teng bo`ladi.
6-BOB. KONSOL ILOVALAR
Konsolli ilovalar deganda MS DOS operatsion sistemasi (yoki DOS oynasi) uchun mo`ljallangan dasturlash tushuniladi. Bu holda kiritish qurilmasi – klaviatura, chiqarish qurilmasi esa monitordan iborat bo’ladi.
Konsolli ilovalar dasturlashning umumiy masalalarini hal qilishda juda ham qulay hisoblanadi. Chunki, bunda asosiy e`tabor inregfeysga emas, balki masala uchun dastur ishlab chiqishga qaratiladi.
6.1. Kiritish va chiqarish buyruqlari
Ayrim masalalarni yechish jarayonida uning shartida berilgan ma`lumotlarni klaviatura orqali kiritishga to`g’ri keladi.
Read operatori o`zgaruvchilarga qiymatlarni klaviatura orqali kiritish uchun mo`ljallangan bo`lib, umumiy ko`rinishda quyidagicha yoziladi:
read (o`zgaruvchilar ro`yxati);
Ro`yxatdagi o`zgaruvchilar bir-biridan vergul bilan ajratiladi. Masalan:
read (r, k, h); .
Read buyrug’ini bajargan EHM ishdan to`xtaydi va ro`yxatda ko`rsatilgan barcha o`zgaruvchilar uchun qiymat kiritilishini kutadi. Klaviaturadan kiritilayotgan ma`lumotlar bir-biridan bo`sh joy belgisi bilan ajratiladi. Bu ma`lumotlar tartibiga mos ravishda berilgan ro`yxat-dagi o`zgaruvchilarga qiymat qilib beriladi. Boshqacha aytganda, birinchi kiritilgan ma`lumot ro`yxatdagi birinchi o`zgaruvchiga, ikkinchi ma`lumot ikkinchisiga va xokazo tartibda beriladi. Aytaylik, yuqoridagi operator uchun klaviaturadan quyidagi ma`lumotlar kiritilgan bo`lsin:
2.34 15 Delphi
U xolda r ga 2.34, k ga 15, h ga esa «Delphi» qiymatlari beriladi va dasturning keyingi buyruqlari o`zgaruvchilarning ana shu qiymatlari uchun bajariladi.
Qiymat olayotgan o`zgaruvchi bilan unga berilayotgan qiymat bir xil tipga mansub bo`lishi lozim. Char yoki string tipidagi ma`lumot kiritilayotganda ularni apostrof orasiga olish shart emas. Real tipida ma`lumot uchun butun sonlarni xam kiritishga ruxsat beriladi. Boolean tipidagi ma`lumot sifatida faqat false yoki true qiymatlaridan birini kiritish mumkin.
Klaviaturadan kiritilgan ma`lumotlar soni Read operatorida berilgan ro`xatdagi o`zgaruvchilar sonidan kam bo`lmasligi lozim. Aks holda, ro`yxatdagi qaysidir o`zgaruvchi qiymat olmagani sababli navbatdagi operatorlar o`tmay turaveradi.
Agar kiritilgan ma`lumotlar soni Read operatori bilan ko`rsatilgan o`zgaruvchilar sonidan ko`p bo’lsa, buning zarari yo`q. Chunki ortiqcha qiymatlar yoki navbatdagi Read dagi o`zgaruvchilarga qiymat qilib beriladi, yoki shunchaki tashlab yuboriladi. . Masalan, bitta dasturda
Read (a, b, c); Read (x, y);
operatorlariga javoban klaviaturadan
2.3 -1.5 2.4 22 -0.05 4.125
ma`lumotlari kiritilgan bo`lsa, a , b, c, x, y o’zgaruvchilar mos ravishda 2.3, -1.5, 2.4, 22 va -0.05 qiymatlari beriladi. Ortiqcha kiritilgan 4.125 dan esa EHM foydalanmaydi.
Readln opereatori ro`yxatda ko`rsatilgan o`zgaruvchilarga qiymat kiritilganidan so`ng, kursorni yangi satr boshiga o`tkazib qo`yadi. Bu xolda ortiqcha ma`lumotlar tashlab yuboriladi, navbatdagi Read yoki Readln yordamida berilgan o`zgaruvchilarga esa qiymat qilib yangi satr boshida kiritilgan ma`lumotlar olinadi. Masalan:
Readln (a, b, c); Read (x, y);
operatorlari uchun klaviatura orqali
2.3 -1.5 2.4 22 3.75
-0.05 4.125
ko`rinishidagi ma`lumotlar kiritilgan bo`lsa, a, b, c o`zgaruvchilar mos ravishda 2.3, -1.5, 2.4 qiymatlarini olsa, x bilan y o`zgaruvchilar -0.05 va 4.125 ni oladi.
Write operatori turli hisoblash natijalari, matnlar hamda arifmetik ifodalarning qiymatlarini monitorga chiqarish uchun hizmat qiladi va umumiy holda quyidagicha yoziladi:
write(chiqariladigan ma`lumotlar ro`yxati); .
Chiqariladigan ma`lumotlar bir-biridan vergul bilan ajratiladi.
Monitorga chiqarish kerak bo`lgan matnlar apostrof belgisi bilan ko`rsatiladi. Masalan:
write (‘Delphi tili’);
buyrug’i bajarilganda ekranga
Delphi tili
yozuvi chiqariladi.
Write operatori yordamida Delphi dasturlash tili qoidalari bilan yozilgan arifmetik ifodalar qiymatini ham hisoblash mumkin. Masalan:
Write(3*4+15/3-10.5)
buyrug’i qavslar ichida berilgan ifodaning qiymati bo`lgan
6.500000000E-00
sonini ekranga chiqaradi.
Agar write yordamida ekranga chiqarish talab qilingan ma`lumotlar sifatida o`zgaruvchilar ro`yxati berilgan bo`lsa, u holda bu o`zgaruvchilarning qiymatlari eHM xotirasidan qidirib topiladi va monitorga uzatiladi. Faraz qilaylik, biror dasturning bajarilishi davomida x, y, z o`zgaruvchilar mos ravishda 23, 123.12, 'Delphi' qiymatlarini olgan bo`lsin. U holda
write (x, y, z);
operatori bajarilganda ekranga
2.300000000E-011,2312000000E-02Delphi
ma`lumotlari chiqariladi. Bu yozuvlardan ko`rinib turibdiki, ekrandagi sonli ma`lumotlar o`qish va tushunish uchun bir oz noqulay. Buning oldini olish uchun ekranga chiqariladigan sonli ma`lumotlarni ma`lum bir o`lchamga solishga (formatlashga) to`g’ri keladi. O`lcham odatda ikkita butun sondan iborat bo`lib, birinchisi umumiy raqamlar sonini, ikkinchisi esa kasr qismidagi raqamlar sonini belgilaydi. O`lcham formatlanayotgan o`zgaruvchidan keyin ikki nuqta (:) orqali aniqlanadi va faqat shu o`zgaruvchigagina tegishli bo`ladi. Yuqoridagi ma`lumotlarnip formatlab, ekranga uzataylik:
write(x:4:2, y:6:2, z);
Bu buyruq ta`sirida ma`lumotlar quyidagi ko`rinishda ekranga chiqariladi:
23.00 123.12 Delphi
Ekranda (ko`rsatkich) kursor mavjud bo`lib, u ma`lumotlarni qaysi joydan boshlab kiritish (chiqarish) kerakligini ko`rsatadi. Navbatdagi ma`lumot kursor turgan joydan boshlab kiritiladi (chiqariladi).
Writeln operatori talab qilingan ma`lumotlarni ekranga chiqarganidan so`ng kursorni yangi satr boshiga o`tkazadi. Masalan:
write (x); write (y); write (z);
buyruqlari ma`lumotlarni
2.300000000E-011,2312000000E-02Delphi
ko`rinishida ekranga chiqarsa,
writeln(x); writeln(y); write(z);
buyruqlari ma`lumotlarni ekranga
2.300000000E-01
1,2312000000E-02
Delphi
tarzida chiqarilishini ta`minlaydi.
Readln va writeln operatorlaridan hech qanday argumentsiz ham foydalanish mumkin. Bu xolda Readln buyrug’i ENTER tugmasini bosilishini kutadi va kursorni yangi satrning boshiga o`tkazadi, writeln esa shunchaki kursorni yangi satrning boshiga ko`chiradi.
Eslatma: Agar klaviaturadan kiritilayotgan ma`lumot bilan uni qiymat qilib oladigan o`zgaruvchi tiplari bir-biriga mos bo`lmasa, dastur o`z ishini to`htatadi va ekranga hatolik haqida axborot chiqariladi.
6.2. Konsolli ilovalar yaratish
Konsolli ilovalar ishlab chiqish uchun dastlab File menyusidan New Other Application, so`ngra New/New Items tugmalari yordamida ochilgan oynadan Console Application tugmasini chertiladi. Bunda ekranda Projectl.dpr oynasi ochiladi. Bu oynada konsolli ilovalarning bosh protsedurasi joylashgan (6.2-rasm). Bu oynada dastur buyruqlarini kiritish mumkin.
Konsolli ilovalar program buyrug’i bilan boshlanadi. So`ngra dasturning nomi yoziladi. Dastlab u boshlang’ich loyixa nomi bilan bir hil bo`ladi. Dastur matnini saqlash vaqtida u dasturchi qo`ygan nom bilan avtomatik tarzda almashtirib qo`yiladi.
Shuni yodda tutish kerakkki, konsolli ilovalarni Windows da yaratiladi, DOS dasturi kabi ishlatiladi. DOS da ASCII kodlash usuli, Windows da esa ANSI usuli qo`llangani uchun, ularda kirill alifbesi
6.1-rasm. Konsolli ilovalar bosh protsedurasining shabloni
xarflarining kodlari bir-biridan farq qiladi. Shu sababli, konsolli ilovalarda kirill alifbesidagi matn o`rniga boshqa matn chiqariladi. Buning oldini olish uchun konsolli ilovalarda ma`lumotlarni lotin alifbesida chiqarish tavsiya qilinadi.
Zarurat bo`lganda konsolli ilovalar yordamida kirill alibesidagi axborotlarni ekranga chiqarish uchun ANSI-satrni ASCII-satriga o`tkazuvchi qayta kodlash mumkin. Agar bu funksiyani RUS deb atasak, ma`lumotlarni kirill alifbesidagi ma`lumotlarni ekranga chiqarish buyruqlari quyidagicha ko`rinishda bo`ladi:
writeln(Rus('Delphi tili ajoyib til''));
6.1-listingda namuna sifatida foydalanuvchi kiritgan og’irlikni funt o`lchov birligidan kilogrammga o`tkazish dasturi keltirilmoqda. Ma`lumotlarni ekranga chiqarish uchun ANSI-satrni ASCII-satriga o`tkazuvchi qayta kodlash funksiyasi RUS dan foydalaniladi.
6.1-listing. Og’irlikni funtdan kilogrammga o`tkazish
program funt_k;
{$APPTYPE CONSOLE}
function Rus(mes: string):string; qayta kodlash funksiyasi
Var i: integer; qayta kodlanayotgan belgi nomeri
begin
for i : 1 to length(mes) do
case mes[i] of
'A'..'p' : mes[i] : Chr(Ord(mes[i]) - 64);
'r'..'я' : mes[i] : Chr (Ord(mes [i] ) -16);
end;
rus : mes;
end;
Asosiy dastur
Var f : real; funtdagi og’irlik
w : real; grammdagi og’irlik
k : integer; kilogrammlar
g : integer; grammlar
begin
writeln(Rus('Funt va kilogrammlar'));
writeln(Rus('Og’irlikni funtda kiriting va ni bosing'));
write('> ');
readln(f);
w : f * 409.5; Bir funt funt - bu 409,5 gr.
if w > 1000 then begin
k : Trunc(w 1000); g : Round(w - k*1000);
end else
begin k : 0; g : Round(w) ; end;
write(f:4:2, Rus(' f. - bu '));
if k > 1 then write(k, Rus(' kg. '));
writeln(g, Rus(' rp.'));
write(Rus('Ishni tugatish uchun ni bosing')); readln;
end.
Dasturdagi {$APPTYPE CONSOLE} ko`rsatmasi kompilyatorga taaluuqli. Unga rioya qilgan kompilyator dasturni konsolli ilovalar kabi generatsiya qiladi.
Konsolli ilovalarni kompilyatsiya qilish uchun ProjectCompile buyruqlari tanlanadi. Muvaffaqiyatli kompilyatsiyadan keyin, dasturni RunRun buyrug’i bilan ishga tushiriladi. Konsolli ilovalar ishga tushganda ekranda DOS-dasturlarning standart oynasi ochiladi. (6.2-rasm).
Konsolli ilova loyihalarini saqlab qo`yish uchun FileSave buyrug’i chertilganda ekranda Save Project dialog oynasi ochiladi va unga loyixa nomini kiritish mumkin.
6.2-rasm. Konsolli ilovalar ishlayotgan DOS-oyna
7-BOB. MASSIVLAR
7.1. Massivlarni e`lon qilish
Jadval kattaliklari yoki massivlar bir xil tipdagi va ko`plab sondagi ma`lumotlarni saqlash hamda qayta ishlash uchun mo`ljallangan. Masalan: familiyalar ro`yxati, talabalar olgan baholar, oylararo o`rtacha xarorat va hokazolarni massiv sifatida qabul qilish mumkin.
Massiv — bu ma`lumotlarning ma`lum bir strukturaga ega bo`lgan, bir hil tipdagi va umumiy nomga ega bo`lgan turi hisoblanadi. Mazmuni va shakli bir hil bo`lgan katta hajmdagi jadval, ro`yxat kabi ma`lumotlarni massivlarda saqlash katta afzalliklarga ega.
Massivlarni umumiy holda quyidagicha e`lon qilish mumkin:
Nom: array [quyi indeks .. yuqori indeks] of tip;
Bu yerda nom - massiv nomi; array – massivni anglatuvchi xizmatchi so`z; quyi indeks .. yuqori indeks – massiv elementlari indekslarining o`zgarish diapazoni; tip - elementlar tipi. Masalan:
Temper : array[1..31] of real;
Koef : array[0. .2] of integer;
Name : array[1..30] of string[25];
Indeks sifatida konstanta yoki butun tipdagi ifodadan foydalanish mumkin. Masalan:
komanda [ 1] : 'Paxtakor';
d : koef[1] -4*koef[2];
ShowMessage(name[n 1]);
Massivlar e`lonida uning elementlariga qiymatlar berish mumkin. Bu holda e`loni quyidagicha yoziladi:
Nom : array [quyi indeks .. yuqori indeks ] of tip (ro`yxat);
bu yerda ro`yxat – qiymatlar. Masalan :
a: array[10] of integer (0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
Jamoa: array[1..3] of String[10] ('Paxtakor', 'Neftchi', 'Nasaf');
Initsializatsiya ro`yxatidagi elementlar soni massiv o`lchamlariga mos bo`lishi kerak. Aks holda kompilyator bu haqda
Number of elements differs from declaration
(elementlar soni e`londa ko`rsatilganiga mos emas)
tarzidagi axborotni ekranga chiqaradi.
Do'stlaringiz bilan baham: |