linkedin facebook linkedin facebook nod32

Paskalda belgilar va qatorlar

Muallif: Mengliyev Sh.

Qo`shilgan sana: 2015-01-14

Paskalda belgilar va qatorlar

1.Kirish
SHunday masalalar borki ularni matnlar ustida ish bajaribgina hal etish mumkin. Masalan, fayldagi matnlar ichidan biror bir ism yoki familiyani izlash kerak yoki bir xil ma’lumotni boshqa bir ma’lumotga almashtirish kerak yoki ular ustida biror bir operatsiyalarni bajarish kerak bo‘lsin deylik. Dasturlashda bunday masalalarni echishda belgilar va qatorlardan foydalanishga to‘g‘ri keladi. Dasturlashda ularni ishlatishda belgi va qatorli tipdagi maxsus o‘zgaruvchilar yoki o‘zgarmaslardan foydalaniladi.

2.Belgilar va ularni qayta ishlash
Maxsus belgilarni qayta ishlash va saqlash uchun CHAR tipdagi o‘zgaruvchilar ishlatiladi. CHAR tipdagi o‘zgaruvchilar qiymati istalgan belgi bo‘lishi mumkin. Belgili tipdagi o‘zgaruvchilar dasturning bosh qismida o‘zgaruvchilarni e’lon qilish bo‘limida quyidagicha ko‘rsatilishi kerak:
Var
nom: CHAR;
bu erda nom – belgili tipdagi o‘zgaruvchi nomi.
Misollar:
Var
Otv: Char;
Ch, Cr: Char;
Boshqa o‘zgaruvchilar kabi belgili tipidpgi o‘zgaruvchilar ham kiritish  (READ) yoki yuborish (qiymat berish) operatorlari yordamida qiymatga ega bo‘lishi mumkin. Agar CHAR tipdagi o‘zgaruvchilar qiymat berish operatsiyasining natijasida qiymat qabul qilishi kerak bo‘lsa, u holda yuborish operatsiyasining o‘ng tomonida CHAR tipdagi ifoda bo‘lishi yoki belgili (simvolli) o‘zgaruvchi yoki belgili o‘zgarmas bo‘lishi kerak. Simvolli o‘zgarmas ochiluvchi va yopiluvchi kavichka ichida yoziladi.
Masalan, quyidagi dastur natijasida o‘zgaruvchi c1 o‘zgarmas qiymat, c2 o‘zgaruvchi c1 qiymatini qabul qiladi, keyin esa otvet o‘zgaruvchi qiymati klaviaturadan kiritiladi. Bunda otvet o‘zgaruvchi qiymati sifatida bitta belgi berilishi kerak bo‘ladi. Masalan “Da” belgisi kiritilsa otvet o‘zgaruvchisi “D” qiymatni qabul qiladi.

 Var
c1,c2,otvet: Char;
Begin
c1:=`*`;
c2:=c1;
Write (`Siz dastur tuzishni o‘rganishni xohlaysizmi?`);
Readln(otvet);
Writeln (`Sizning javobingaz:`, otvet);
End.

CHAR tipdagi o‘zgaruvchini boshqa bir CHAR tipidagi o‘zgaruvchi bilan yoki belgili o‘zgarmas bilan taqqoslash mumkin. Taqqoslash shunga asoslanganki, har bir belgiga mos son qo‘yilgan.
`0`<`1`<…<`9`<…<`A`<`B`<…<`Z`<`a`<`b`<…<`z`
Xuddi shunday kril alfavitida ham har bir belgiga mos son berilgan:
`A`<`B`<…<`YU`<`YA`<`a`<`b`<…<`ya`
Belgili o‘zgaruvchi va o‘zgarmaslarni shartli operatorlarda ham ishlatish mumkin. Masalan, quyidagi dasturda otvet o‘zgaruvchisi dastur so‘roviga javob berishni tekshirishda ishlatilmoqda.

Var
otvet: Char;
Begin
….
Writeln (`Hisoblsh davom ettirilsinmi? (d/n)`);
Readln(otvet);
If (otvet=`d`) or (otvet=`D`) Then begin

End;
End.

Har bir belgi son bilan kodlashtirilgan. Agar dasturda klaviaturada yo‘q belgini ekrandan kiritish kerak bo‘lsa, u holda CHR funksiyasidan foydalaniladi. Masalan, Ch:=CHR(218); operatorining bajarilishi natijasida Ch belgili o‘zgaruvchi `é` belgisini o‘zlashtiradi.
Quyidagi dastur 0 dan 128 gacha bo‘lgan belgilar kodirovkasi jadvalini ekranga chiqaradi. Bu kodlardan 7 sidan boshlab 13 gachasi xizmatchi, masalan 7 kodi bilan kiritilgagn belgi tovush signalini beradi, 13 kodi esa yangi qatorga o‘tish buyrug‘ini chaqiradi.

Var
ch: Char;              {belgi}
Dec: Integer;        {belgining o‘nlikdagi kodi}
i, j: Integer;
Begin
Dec:=0;
For  i:=0 to 16 do
Begin
Dec:=i;
For j:=1 to 8 do {sakkizta qator }
Begin
If (Dec<7) Or (Dec>=14) Then
Write (Dec:4,’-‘,’ ‘,Chr(Dec):1,Chr(179))
Else   {7 dan 14 gacha belgidan chiqmaydi}
Write (Dec:4,’-  ‘,Chr(179));
Dec:=Dec+16;
End;
Writeln;    {yangi qatorga o‘tish}
End;
End.

Quyidagi dastur matnlarni chiqarishni rasmiylatirish, ya’ni bezashda CHR funksiyasini ishlatadi.

Var
t1, tr, b1, br, g, v: Char;                  
i: Integer;
Begin
t1:=Chr(218);                { yuqori chap burchak belgisi }
tr:=Chr(191);                { yuqori o‘ng burchak belgisi }
b1:=Chr(192);               { pastki chap burchak belgisi }
br:=Chr(217);                { pastki o‘ng burchak belgisi }
g:=Chr(196);                 { gorizontal to‘g‘ri chiziq }
v:=Chr(179);                 { vertikal chiziq }
Write (t1);
For i:=1 to 32 do Write(g);
Writeln(tr);
Writeln (v, ’       Ramka chizish uchun CHR        ’, v);
Writeln (v, ’funksiyasini ishlatishga misol’, v);
Write (b1);
For i:=1 to 32 do Write(g);
Writeln (br);
End.

Tovush signalini 7 kodi bilan ekran orqali kiritishni, masalan dasturda ma’lumotni kiritishda agar xatolik yuz berganda yoki nato‘g‘ri ma’lumot kiritilganda ishlatish mumkin. Quyidagi dastur parolni tekshiradi, agar parol nato‘g‘ri bo‘lsa Kompyuter dinamikasi tovush signalini beradi.

  Label
Bye;
Var
Password: Integer;
Begin
Write (‘Parolь’);   Readln (Password);
If Password<>377 then
Begin Writeln (Chr(7), ‘Parol nato‘g‘ri!’);
Goto Bye;
End;
Bye:
End.

 4.Belgili massivlar
Ketma-ketlikdagi belgilarni qayta ishlash va saqlash uchun belgili massivlarni ishlatish mumkin. Masalan, dasturda klaviaturadan familiyalarni kiritish kerak bo‘lsin. Odatda bunday masalani echishda belgili massivga ketma-ketlikdagi belgilarni kiritish bilan amalga oshiriladi. Bunda kiritilgan belgilar qatori familiyadagi harflarning soniga teng olinadi. Agar Buf belgili massiv SIZE o‘lchamga ega bo‘lsa, u holda eng sodda usulda massiv elementlarini FOR operatori yordamida kiritish mumkin:
For i:=1 to SIZE do Read (Buf[i]);
Dasturda belgili massivni kiritishda ancha effektiv bo‘lgan EOLN (End Of Line) qurilgan funksiyasidan foydalanish mumkin. Bu funksiya agar massivga belgi kiritilgan bo‘lsa TRUE qiymatni qaytaradi. Agar birorta ham belgi kiritilmagan bo‘lsa funksiya klaviaturadan kiritishni kutadi.
Quyidagi dasturda belgili massiv elementlarini kiritishda EOLN funksiyasi ishlatilgan.

         const
SIZE=30;
Var
Buf: Array[1..Size] of Char;
n: Integer;     {kiritilgan qatorning real uzunligi}
Begin
Write (‘->’);
n:=0;
Repeat
If Not EOLN then Begin  n:=n+1; Read (Buf[n]); End;
Until EOLN OR (n=Size);
Writeln (‘Kiritilgan qator uzunligi ‘, n, ‘belgilar.’);
End.

 

4.Qatorlar va ularni qayta ishlash funksiyalari
Paskal tilida ketma-ketlikda berilgan belgilar qator deyiladi. Qatorlar dastur boshida STRING so‘zi bilan e’lon qilinadi. Har qanday STRING tipidagi o‘zgaruvchi ketma-ketlikdagi belgilar uzunligi 255 tadan oshmagan belgili qiymatlarni qabul qiladi. Qatorli tipdagi o‘zgaruvchilar dastur boshida quyidagicha ko‘rsatilishi kerak:
Var
     nom: STRING;
yoki
    nom: STRING [uzunlik];
bu erda nom – qator tipdagi o‘zgaruvchi nomi.
Misollar:
Var
name: STRING [30];
Buff, RT: STRING;
Agar e’lon qilinganda o‘zgaruvchi uzunligi ko‘rsatilmasa, unda qator uzunligi 255 belgiga teng deb qabul qilinadi. Qatorli o‘zgarmas ochiluvchi va yopiluvchi kavichka ichida yoziladi. Masalan,
Parol:=’sekret’;   yoki    Parol:=’1997’;
STRING tipdagi o‘zgaruvchini boshqa bir STRING tipidagi o‘zgaruvchi bilan yoki qatorli o‘zgarmas bilan =, <, >, <=, >=, <> operatorlari yordamida taqqoslash mumkin.
Quyidagi dastur parol so‘raydi, agar parol to‘g‘ri kiritilgan bo‘lsa familiyani kiritish kerak bo‘ladi.

Var 
Name: String[30];
Parol: String[6];
Begin
Write (‘Parol (6 belgi)?’);
Readln(Parol);
If Parol=’sekret’ then begin
Write (‘Sizning familiyangiz?’);
Readln(Name);
Writeln(Name, ‘, Sizga ruxsat berildi.’);
End
Else Writeln(‘Parolь nato‘g‘ri! Sizga ruxsat yo‘q!’);
End.                           

Taqqoslash operatsiyasidan tashqari qatorli o‘zgaruvchilar va o‘zgarmaslar ustida qo‘shish amalini ham bajarish mumkin. Masalan:
F_Name:=’Ivanov’;
L_Name:=’Ivan’;
Ful_name:=F_Name+L_Name;
Bunda Ful_Name o‘zgaruvchi ‘IvanovIvan’ qiymatni oladi.
Turbo Pascal qatorlarni qayta ishlashda qo‘llaniladigan bir necha protsedura va funksiyalarga ega.
         LENGTH funksiyasi.  Bu funksiya bitta qator tipli o‘zgaruvchi - parametrga ega bo‘lib, qator uzunligini qaytaradi. Qaytariladigan funksiya qiymati butun sondan iborat, u qatordagi bulgilar sonini aniqlaydi. Agar qator boshida yoki oxirida bo‘shliqlar bo‘lsa ularni hisobga olmaydi. Masalan, LENGTH(‘Ivanov’) funksiya qiymati 6 ga teng,  LENGTH(‘  Ivanov Ivan   ’)  funksiya qiymati 11 ga teng.
         DELETE protsedurasi.  Bu protsedura qatorning ma’lum bir qismini yo‘qotadi. Umumiy holda bu protsedura quyidagicha yoziladi:
Delete (qator,p,n);
bu erda qator – qator tipdagi o‘zgaruvchi; p – o‘chirilishi kerak bo‘lgan boshlang‘ich belgining nomeri; n – o‘chiriladigan qator bo‘lagi uzunligi. Misol:
S:=’Shahar Sankt-Peterburg’;
Delete (S,8,6);                                 
Natija ‘Shahar Peterburg’ bo‘ladi.                              
POS funksiyasi.  Bu funksiya qatorda qator bo‘lagining joyini aniqlaydi. Umumiy holda bu funksiya quyidagicha yoziladi:
POS (qatorbo‘lagi, qator);
bu erda qatorbo‘lagi – qatordan topilishi kerak bo‘lgan qator tipidagi o‘zgaruvchi yoki o‘zgarmas. Misol:
p:=POS(’Pe’, ‘Sankt-Peterburg’);
Bunda o‘zgaruvchi p qiymati 7 ga teng bo‘ladi. Agar izlanayotgan qator bo‘lagi bo‘lmasa funksiya nul qiymat qaytaradi.
COPY funksiyasi.  Bu funksiya qatordan fragment, ya’ni bo‘lak ajratib oladi. Umumiy holda bu funksiya quyidagicha yoziladi:
COPY (qator, p, n);
bu erda qator – qator tipidagi o‘zgaruvchi yoki o‘zgarmas; p – qator bo‘lagi boshlanadigan qatordagi birinchi belgi nomeri; n – qator bo‘lagi uzunligi. Misol:
st:=’Muxandis Ahmedov’;Fam:=Copy(st, 10, 7);
Bunda o‘zgaruvchi Fam qiymati ‘Ahmedov’ bo‘ladi.
         VAL protsedurasi.  Bu protsedura qator ko‘rinishida berilgan sonlarni oddiy songa o‘zgartiradi (o‘tkazadi). Umumiy holda bu protsedura quyidagicha yoziladi:
VAL (qator, son, kod);
bu erda qator – sonni tasvirlovchi qator tipdagi o‘zgaruvchi yoki o‘zgarmas; son – qatordagi sonni o‘zlashtiruvchi o‘zgaruvchi; kod – protsedura qaytaradigan xatolik kodi. Agar qatorda berilgan son oddiy songa o‘tkazilgan bo‘lsa xatolik kodi nulga teng bo‘ladi. Misol:
S:=’891.01’;  VAL (S, R, kod);                            

Natija R=891.01 bo‘ladi.  

1351 marta o`qildi.

Foydalanuvchi ismi: Nizomiddin 203-guruh
Qo`shilgan sana: 2015-04-18

123456789

Foydalanuvchi ismi: Nizomiddin 203-guruh
Qo`shilgan sana: 2015-04-18

123456789

Parol:
Eslab qolish.


Ro`yhatdan o`tish

testing

+998915878681

Siz o`z maxsulotingizni 3D reklama ko`rinishda bo`lishini xohlaysizmi? Unda xamkorlik qilamiz.

3D Reklama


Рейтинг@Mail.ru
Рейтинг@Mail.ru

Besucherzahler
счетчик посещений