Kitob uchta qismdan iborat. "Strukturali dasturlash", "Obyektli-yo’nalishli dasturlash", "Standart kutubxonalar"



Download 333,2 Kb.
bet34/90
Sana10.07.2022
Hajmi333,2 Kb.
#770437
1   ...   30   31   32   33   34   35   36   37   ...   90
Bog'liq
C majmua

Eslatma. E'lonlarni to'g'ri talqin etish uchun “suffiks prefiksdan mahkamroq bog'langan” mnemonik qoidani eslab qolish lozim. Agar o'zgaruvchini tavsiflashda bir vaqtda prefiks * (ko'rsatgich) va suffiks [] (massiv) dan foydalanilsa, u holda o'zgaruvchi int *p[10] – intga 10 ta ko'rsatgichlar massiviga ko'rsatgich emas, ko'rsatgichlar massivi sifatida talqin etiladi.
Satrlar
Satr nol – simvol bilan tugaydigan simvollar massividan iborat. Nol – simvol bu 0 ga teng kodli simvol, u boshqaruvchi ‘\0’ ketma-ketlik ko'rinishida yoziladi. Nol – simvol joylashishiga qarab satrning haqiqiy uzunligi aniqlanadi. Satrni satr literali bilan initsializatsiyalash mumkin.
char str[10] = "Vasia";
// nomerlari 0 dan 9 gacha bo'lgan 10 ta element ajratilgan
// birinchi elementlar – 'V', 'a', 's', 'i', 'a', '\0'
Bu misloda satrga 10 bayt ajratiladi, ulardan 5 tasi satr simvoliga, oltinchisi nol – simvolga ajratilgan. Agar satr aniqlanganda initsializatsiyalansa, uning o'lchamini tashlab yuborish mumkin (kompilyatorning o'zi mos baytlar sonini ajratadi):
char str[10] = "Vasia"; // 6 bayt ajratilgan va to'ldirilgan
Operator
char *str = "Vasia";
operator satr o'zgaruvchini yaratmaydi, o'zgartish mumkin bo'lmagan satr konstantga ko'rsatgichni yaratadi (misol uchun str[1]='o' operator yo'l qo'yilmaydi).
Satr literali oldidagi tenglik belgisi qiymat berishni emas, initsializatsiyani bildiradi. Bir satrni ikkinchisiga berish amali aniqlanmagan (chunki satr massiv hisoblanadi) va sikl yoki standart kutubxona funksiyalari yordamida bajarilishi mumkin. Kutubxona nusxalash, taqqoslash, satrlarni birlashtirish, qismsatrni izlash, satr uzunligini aniqlash va h.k.lar imkoniyatlarini beradi, hamda klaviatura va fayldan satrlarni va alohida simvollarni kiritish maxsus funksiyalarini o'z ichiga oladi.
Misol. Dastur parolni uch martadan ko'p so'ramaydi.
#include
#include
int main () {
char s[80], passw[] = "kuku"; // passw – etalon parol
// *passw = "kuku" kabi tasvirlash mumkin
int i, k = 0;
for (i = 0; !k && i<3; i++) {
printf ("\n parolni kiriting: \n");
gets(s); // satrni kiritish funksiyasi
if (strstr(s.passw))k = 1; // satrlarni taqqoslash funksiyasi
}
if (k) prinf("\n parol qabul qilindi");
else printf("\n parol qabul qilinmadi");
return 0;
}
Satrlar bilan ishlashda ko'pincha ko'rsatgichlar ishlatiladi.


DIQQAT
Satrlar bilan ishlashda tarqalgan xatolarni nol – simvol yo'qligi va satrni ko'rib chiqishda ko'rsatgichning uning chegarasidan chiqib ketishi.
src satrini dest satriga nusxalashni qaraymiz. Algoritmi quyidagi ko'rinishga ega:
char src[10], dest[10];

for (int i = 0; i<=strlen(src); i++) dest[i] = src[i];
Satr uzunligi strlen funksiyasi yordamida aniqlanadi, u nol – simvolni izlashni bajarib uzunlikni hisoblaydi. Shunday qilib, satr 2 marta qaraladi. Nol – simvol tekshirishni bevosita dasturda bajarish samarali bo'ladi. Indeks oshishini ko'rsatgichlar inkrementi bilan almashtirish mumkin (buning uchun src satrga dinamik xotira ajratish lozim, hamda qo'shimcha ko'rsatgich aniqlash va uni dest satr boshi adresi bilan initsializatsiyalash talab qilinadi).
#include
int main () {
char *src = new char [10];
char *dest = new char [10], *d = dest;
cin >> src;
while ( *src != 0) *d++ = *src++;
*d = 0; // tuvallovchi nol
cout << dest;
return 0;
}
Siklda satrlar elementlari simvoldan keying qiymat berish bir vaqtda ko'rsatgichlarni inkrementlash bilan amalga oshiriladi. Qiymat berish amali natijasi – uzatilayotgan qiymat, uning o'zi sikl jarayonida tekshiriladi, shuning uchun qiymat berishni shart o'rniga nolga teng emasligiga tekshirishni esa tashlab yuborish mumkin (bunda tugallovchi nol siklda nusxalanadi va uni berish uchun alohida operator talab etilmaydi). Natijada satrni nusxalash sikli
while ( *d++ = *src++);
ko'rinishini oladi. Satrlar bilan ishlashning ikkala usuli (massivlar yoki ko'rsatgichlar orqali) qulay, lekin o'zining plus va minuslariga ega, lekin umumiy holda kutubxona funksiyalaridan yoki C++ kutubxonasidagi indekslashtirish, qiymat berish, taqqoslash, qo'shish, satrlarni birlashirish va qism satrlarni izlash hamda C – satrlarni almashtirish, ya'ni char tipidagi massivlarni stringga va aksincha almashtirishlarni ta'minlaydigan string sinfidan foydalanish maqsadga muvofiq.

Download 333,2 Kb.

Do'stlaringiz bilan baham:
1   ...   30   31   32   33   34   35   36   37   ...   90




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