Загрузил Dilmurod Khasanov

Dasturlash 4 maruza

Реклама
DASTURLASH I
4-HAFTA
Mavzu: Mantiqiy tur, mantiqiy opetarotlar, If shartli
operatori.
Hafta
Mavzu
Mashg‘ulo So
t turi
at
4-Ma’ruza
Tarmoqlanuv
4chi hisoblash
hafta jarayonlarini
dasturlash
2
Mashg‘ulot mazmuni
Mantiqiy tur, mantiqiy opetarotlar, If
shartli operatori
Lab_4.1
2 Mantiqiy amallar bilan ishlash
Lab_4.2
2
Lab_4.3
Tuzilgan dasturni avtomatik tarzda
2 onlayn tekshiruvchi dastur yordamida
nazorat ishini topshirish
2
4-Mustaqil
ish
If shatrli operatoridan foydalanib dastur
yozish
Topshiriqda berilgan savollarga javob
yozish
1 Test savollariga javob berish
5
Dastur tuzishga
bajarish
doir
topshiriqlarni
4-MA’RUZA
MAVZU: MANTIQIY TUR, MANTIQIY
OPETAROTLAR, IF SHARTLI OPERATORI.
Reja:
1. Ma’ruzaga kirish;
2. bool ma’lumot turi;
3. if – shart operatori;
4. Ikki tarmoqli if-else operatori;
5. Xatoliklar va kutilmagan holalar;
6. Mantiqiy operatorlar;
7. Amaliy qism: soliqlarni hisoblash
Kalit so‘zlar:
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
✓
algoritm
bo‘lish operatori
butun tur
C-stili
dizayn tizimi
haqiqiy nuqtali
raqam
haqiqiy tur
identifikator
ifodalash
ifodani belgilash
ikkilik tur
increment kod va
test
increment operator
KIN
ma’lumot turi
o‘zgarmas
o‘zgarmas kalit
so‘z
o‘zgaruvchi
✓ o‘zgaruvchi
maydoni
✓ o‘zgaruvchilarni
e’lon qilish
✓ oddiy tur
✓ operandlar
✓ operator
✓ operatorni
belgilash
✓ operatorni
taqsimlash
✓ postdekrement
✓ postinkrement
✓ predekrement
✓ preinkrement
✓ psevdokod
✓ qisqa tur
✓ so‘zma-so‘z
✓ talablar
spesifikatsiyasi
✓ tizim tahlili
✓
✓
✓
✓
toshish
toshmagan
UNIX davri
uzun tur
yashirin tur
1. Ma’ruzaga kirish
Key Point. Dastur shartlarga asoslangan holda hisoblash operatorlari orqali
qaror qilishi mumkin.
Yuqoridagi ma’ruzalarda keltirilgan yuzani topish masalasi uchun tuzilgan
dasturda agar radiusga manfiy qiymat kiritilsa dastur nomutanosib natija chiqaradi.
Aytaylik, agar manfiy qiymat kiritilsa dasturning ishlashini xohlamaymiz. Bunday
vaziyatda nima qilish mumkin?
Barcha yuqori darajali dasturlash tillaridagi kabi C++ tilida ham bir qancha
alternativ variantlar ichidan tanlash va shu orqali dastur yo`nalishini boshqarish
mumkin bo`lgan tanlash operatorlari mavjud. Yuzani topish masalasi uchun
tuzilgan dasturda yuzaning qiymatini kiritish, hisoblash va natijani chiqarish
ko`rsatmalari kiritilgan satrlar o`rniga quyidagicha satrlarni qo`yish mumkin:
if(radius < 0)
{
cout << "Noto`g`ri qiymat kiritildi!"<< endl;
}
else
{
yuza = radius * radius * PI;
cout << "Aylana yuzasi" << radius << "
bo`yicha"<< yuza << ” ga teng” << endl;
}
radius
Shuningdek, tanlash operatorlari shartlarni qo`llashda mantiqiy ifodalardan
ham foydalanadi. Mantiqiy ifoda – true (rost) yoki false (yolg`on) qiymatlarini
qabul qilish orqali hisoblash operatori. Quyida mantiqiy turlar va u bilan bog`liq
operatorlar bilan tanishib chiqamiz.
2. bool ma’lumot turi
Key Point. bool ma’lumot turi o`zgaruvchini true (rost) yoki false (yolg`on)
qiymatlari bilan e’lon qiladi.
Doira radiusining qiymati 0 dan katta, 0 ga teng yoki 0 dan kichik ekanligini
ikki xil qiymat orqali qanday aniqlash mumkin? C++ ikki xil qiymatdan foydalanish
orqali yo`nalishga erishish uchun oltita taqqoslash operatorlarini taqdim etadi (4.1jadvaj).
4.1-jadvaj. Taqqoslash operatorlari.
Ogohlantirish: Taqqoslash jarayonida ikki tomonning tengligini tekshirish
uchun ikkita tenglik belgisi (==)dan foydalanish zarur. Bitta tenglik belgisi (=)
ta’minlash operatori hisoblanadi.
true va false – mantiqiy qiymatlar bo`lib, xuddi 1 va 0 ga o`shaydi. Ular
dasturlash tilida kalit so`zlardir va ulardan ismlar sifatida foydalanib bo`lmaydi.
Ichki fonda C++ true qiymati o`rniga 1 ni va false qiymati o`rniga 0 ni
ishlatadi. Agar konsol oynada mantiqiy qiymat kiritsak, agar u rost (true) bo`lsa
dastur ekranga 1 ni chiqaradi, agar yolg`on (false) bo`lsa, 0 ni chiqaradi.
Masalan,
cout << (4 < 5);
1 ni ko`rsatadi, chunki 4 < 5 (4 ning 5 dan kichikligi) rost.
cout << (4 > 5);
0 ni ko`rsatadi, chunki 4 > 5 (4 ning 5 dan kattaligi) yolg`on.
Eslatma. Dasturda bool o`zgaruvchiga sonli qoymatlarni ham berish mumkin.
Bunda 0 dan boshqa ixiyoriy son true qiymat, 0 ning o`zi false qiymat qabul qiladi.
Misol uchu, quyidagi ta’minlash operatorlaridan keyin b1 va b3 lar true, b2 esa
false qiymatga ega bo`ladi:
boolb1 = -1.5; // bool b1 = true bilan bir xil
boolb2 = 0; // bool b2 = false bilan bir xil
boolb3 = 1.5; // bool b3 = true bilan bir xil
Nazorat.
4.1. Oltita taqqoslash operatorlarini ayting.
4.2. Quyidagi mantiqiy ifodalar natijasiga ko`ra x ning 1 ga tengligini taxmin
qiling:
(x
(x
(x
(x
(x
> 0)
< 0)
!= 0)
>= 0)
!= 1)
4.3. Quyidagi kod chiqaruvchi natijani ayting:
bool b = true;
int i = b;
cout << b << endl;
cout << i << endl;
4.1. if – shart operatori
Key Point. if – shart operatori dasturga hisoblash uchun maxsus alternative
tanlov qismni belgilovchi tuzilma.
Dastur tuzish davomida ko`p hollarda masalani yechimini topish bir nechta
holatlar uchun bajarilishiga duch kelamiz. C++ da tanlash operatorlarining bie
necha xili mavjud: bir yo`nalishli if operatori, ikki yo`nalishli if-else operatori,
ichma-ich if operatorlar, switch operatori va shartli ifodalar.
Bir yo`nalishli if operatori shart faqat bitta (true) bo`lgan holatlarda ishlaydi.
Uning yozilish qoidasi quyidagicha:
if (mantiqiy ifoda)
{
ko`rsatma satri (s);
}
4.1 (a) rasmdagi blok-sxemada C++ da if operatorining ishlash tartibi
tasvirlangan. Blok-sxema – dasturdagi qadamlar va bajarilish qismlarini
ko`rsatkichli chiziqcha yordamida bog`lagan holda tasvirlovchi diagramma. Bu
shakllardagi bajarilish qismlari o`zida operatsiyalarni ifodalaydi va yo`nalish
chiziqlari dasturning boshqaruv yo`lini ko`rsatadi. Romb shakli mantiqiy qiymatni
aniqlash uchun va to`rtburchak shakli ko`rsatmalarni bajarishni ko`rsatish uchun
foydalaniladi.
4.1-rasm. Agar mantiqiy ifoda rost qiymatni qabul qilsa, if operatori berilgan
ko`rsatmani ishga tushiradi
Agar mantiqiy ifoda true qiymat qabul qilsa, blok ichidagi ko`rsatmalar
bajariladi. Misol sifatida quyidagi kodni ko`rib chiqamiz:
if(radius >= 0)
{
yuza = radius * radius * PI;
cout << "Aylana yuzasi" << radius <<
bo`yicha"<< yuza << ” ga teng” << endl;
"
radius
}
4.1(b) – rasmda agar radiusning qiymati 0 dan katta yoki 0 ga teng bo`lsa blok
ichidagi ko`rsatma bajariladi, ushbu ikki shartdan boshqa holatda blokdagi
ko`rsatma bajarilmaydi.
Mantiqiy ifoda qavslar ichida yozilishi kerak. Quyida keltirilgan (a) shakldagi
koddagi mantiqiy ifoda noto`g`ri yozilgan, (b) shakldagi kodda esa to`g`ri yozilgan.
Shart operatorining bajarilishida uning tanasini belgilash uchun figural qavslar
({ va })dan foydalanish mumkin. Agar dasturda faqat bir yoqlama shart operatori
bo`lsa va undan keyin ushbu shartga tegishli bo`lgan boshqa bajariluvchi ifodalar
bo`lmasa bu qavslardan foydalanish shart emas. Bunga quyidagicha misol keltirish
mumkin:
Quyidagi kodli ro`yxatda foydalanuvchi tomonidan butun son kiritilishi
ko`rsatilgan. Agar son 5 ga qoldiqsiz bo`linsa “5 ga karrali” degan gap, agar 2 ga
qoldiqsiz bo`linsa, “Juft son” degan gap ekranga chiqariladi.
3.1-kodli royxat. ifoperator.cpp
1 #include<iostream>
2 using namespacestd;
3
4 int main()
5 {
6 // Foydalanuvchini butun son kiritishga undash
7 int son;
8 cout << "Butun sonni kiriting: ";
9 cin >> son;
10
11 if (son % 5 == 0)
12 cout << "5 ga karrali"<< endl;
13
14 if(son % 2== 0)
15 cout << "Juft son"<< endl;
16
17 return 0;
18 }
Butun sonni kiriting: 4
Juft son
Butun sonni kiriting: 30
5 ga karrali
Juft son
4.4. Ikki tarmoqli if-else operatori
Key Point. Ikki tarmoqli if-else operatori berilgan mantiqiy ifodaning true yoki
false qiymat qabul qilganda operatsiya bajarishga mo`ljallangan.
Bir tarmoqli if operatori agar mantiqiy ifoda rost qiymat qabul qilsa, dastur
bosqichini operatsiya bajarishga yo`naltiradi. Mantiqiy ifoda yolg`on qiymat qabul
qilganda esa hech qanday operatsiya bajarilmaydi. Ammo qo`yilgan shartning
bajarilmagan holatida ham biror operatsiya amalga oshirilishi lozim bo`ladigan
masalalar ham bor. Bunda ikki tarmoqli if - else operatoridan foydalanishimiz
mumkin. Bu operator mantiqiy turning true yoki false qiymati uchun dastur
oqimini bir-biridan farq qiluvchi ikki xil vazifaning bajarilishiga yo`naltiradi.
Quyida ikki tarmoqli if - else operatorining yozilish qoidasi keltirilgan:
if(mantiqiy ifoda)
{
mantiqiy ifoda rost qiymat olgandagi operatsiya;
}
else
{
mantiqiy ifoda rost qiymat olgandagi operatsiya;
}
4.2-rasmda ushbu jarayonning algoritm blok-sxemasi keltirilgan.
4.2-rasm. if - else operatori mantiqiy turning true yoki false qiymati uchun
dastur oqimini bir-biridan farq qiluvchi ikki xil vazifaning bajarilishiga yo`naltiradi
if - else operatori bajarilishini doira yuzasini hisoblash dasturi orqali ko`rib
chiqamiz:
if(radius >= 0)
{
yuza = radius * radius * PI;
cout << "Doira radiusi: "<<radius << " yuzasi: "<< yuza;
}
else
{
cout << "Manfiy radius";
}
Скачать