Оператор выбора в Python



Download 1,54 Mb.
bet4/4
Sana21.02.2022
Hajmi1,54 Mb.
#63021
1   2   3   4
Bog'liq
C da algoritm

1-вариант. Блок-схема
бошланиш
max = a;
киритиш a,b
чиқариш max
a > b?
max = b;
тамом
ҳа
йўқ
Тармоқнинг тўлиқ кўриниши
«шарт» блоги
Агар a = b?
?

`


1-вариант. Дастур
int main()
{
int a, b, max;
printf("Иккита бутун сонни киритинг\n");
scanf("%d%d", &a, &b );
if (a > b) {
}
else {
}
printf("Катта сон %d", max);
return 0; }
max = a;
max = b;
Шартли операторнинг тўлиқ кўриниши
Шартли оператор
if ( шарт )
{
// агар шарт тўғри бўлса бажарилади
}
else
{
// агар шарт нотўғри бўлса бажарилади
}
Ўзига хослиги:
    • Иккинчи қисм (else …) йўқ бўлиши мумкин (тўлиқмас форма)
    • Агар блокда битта амал бўлса { } белгини олиб ташлаш мумкин

2-Вариант. Блок-схема
Тармоқнинг тўлиқмас формаси
бошлаш
max = a;
киритиш a,b
чиқариш max
max = b;
тамом
ҳа
йўқ
b > a?
2- Вариант. Дастур
int main()
{
int a, b, max;
printf("a va b sonini kiriting\n");
scanf("%d%d", &a, &b );
max = a;
if (b > a)
printf(«Катта сон %d", max);
}
max = b;
Шарт операторининг тўлиқмас кўриниши

Солиштириш амаллари


>
<
>=
<=
==
!=
катта, кичик
катта ёки тенг
кичик ёки тенг
тенг
тенг эмас

Шартли оператор


if ( a < b )
{
с = a;
a = b;
b = c;
}
Иш натижаси?
?
4
6
?
4
6
4
a
b
3
2
1
c ўзгарувчисиз бажарса бўладими?
?
c

Топшириқ


«A»: Учта сон киритилган. Уларнинг ичидан ўзаро тенг бўлганлар сони нечта?.
Масалан:
Учта сонни киритинг:
5 5 5
Учала сон ҳам ўзаро тенг.
Масалан:
Учта сонни киритинг:
5 7 5
Иккита сон ўзаро тенг.
Масалан:
Учта сонни киритинг:
5 7 8
Ўзаро тенг сонлар йўқ.

Масала ечимининг бир варианти


#include
#include
using namespace std;
int main()
{ int a,b,c,kol=0;
setlocale(0,""); // установка кириллицы
cout<<"\n a="; cin>>a;
cout<<"\n b="; cin>>b;
cout<<"\n c="; cin>>c;
if (a==b) kol=kol+1;
if (a==c) kol=kol+1;
if (c==b) kol=kol+1;
if (kol==3)
cout<<"\n Учала сон ҳам ўзаро тенг ";
else
if (kol==1)
cout<<"\n Иккита сон ўзаро тенг";
else cout<<"\n Ўзаро тенг сонлар йўқ ";
}
Тўлиқмас кўриниши
Ичма-ич жойлашган
Хато қаерда?
if a > b {
a = b;
}
else
b = a;
if ( a > b ) {
a = b;
else
b = a;
if ( a > b )
else
b = a;
if ( a > b )
a = b;
c = 2*a;
else
b = a;
}
(
)
}
{
a = b;

Ичма ич жойлашган шартли операторлар


if ( a > b )
cout << «Алишер катта";
else

if ( a == b )
cout << “Ёшлари тенг";
else
cout << “Бахтиёр катта";
Ичига жойлашган шартли оператор
Топшириқ: Алишер ва бахтиёрнинг ёшларини солиштиринг. Қайси бири каттароқ?
Сколько вариантов?
?
Мураккаб шарт
Топшириқ. Фирма 25 дан 40 ёшгача бўлга ходимларни олади. Номзоднинг ёшини киритинг ва белгиланг, фирмага тўғри келадими («тўғри келади" ёки «тўғри келмайди» экранга чиқаринг).
Ўзига хослик: иккита шарт бирдан бажариладими? Текшириш керак.
Маълум усуллар билан ҳал қилиш мумкинми?
?
1- Вариант. Алгоритм
бошлаш
киритиш x
‘тўғри келади'
тамом
ҳа
йўқ
x >= 25?
ҳа
йўқ
x <= 40?
‘тўғри келмайди'
‘тўғри келмайди'
1- Вариант. Дастур
int main()
{
int x;
printf("Yoshni kiriting\n");
scanf("%d", &x);
if (x >= 25)
if (x <= 40)
printf("to'g'ri keladi");
else printf("to'g'ri kelmaydi");
else
printf("to'g'ri kelmaydi");
}
2- Вариант. Алгоритм
бошлаш
киритиш x
‘тўғри келади'
ҳа
йўқ
x >= 25 ва
x <= 40?
‘тўғри келмайди'
тамом
2- Вариант. Дастур
int main()
{
int x;
printf("Yoshni kiriting\n");
scanf("%d", &x);
if ( x >= 25 && x <= 40 )
printf("to'g'ri keladi");
else printf("to'g'ri kelmaydi");
}
Мураккаб шарт
Мураккаб шарт
Мураккаб шарт– бу шарт мантиқий амаллар билан боғланган бир нечта оддий шартлардан (муносабатлардан) ташкил топган. Булар:
! – инкор (not, инкор қилиш, инверсия)
&& – ва (and, мантиқий кшпайтма, конъюнкция, шартлар бир вақтда бажарилади)
|| – ёки (or, мантиқий қўшиш, дизъюнкция, шартлардан хеч бўлмаганда биттаси бажарилади.)
Мураккаб шарт
Мураккаб шартнинг бажарилиш тартиби:
    • Қавс ичидаги ифода
    • ! (инкор, инкор қилиш)
    • <, <=, >, >=
    • ==, !=
    • && (ва)
    • || (ёки)

    • Мисол:
      2 1 6 3 5 4
      if ( !(a > b) || c != d && b == a)
      {
      ...
      }

a = 2; b = 3; c = 4;да рост ёки ёлғон
!(a > b)
a < b && b < c
!(a >= b) || c == d
a < c || b < c && b < a
a > b || !(b < c)
x нинг қандай қийматларида шарт рост бўлади:
x < 6 && x < 10
x < 6 && x > 10
x > 6 && x < 10
x > 6 && x > 10
x < 6 || x < 10
x < 6 || x > 10
x > 6 || x < 10
x > 6 || x > 10
Мураккаб шарт
1
1
0

(-, 6)

(6, 10)
(10, )
(-, 10)
(-, 6)  (10,)
(-, )
(6, )
x < 6
x > 10
x < 10
x > 6
1
1
Топшириқ
“1": Учта сонни киритинг ва улар ичидан энг каттасини топинг.
масалан:
Учта сонни киритинг:
4 15 9
Энг катта сон 15
“2": Бешта сонни киритинг ва улар ичидан энг каттасини топинг.
масалан:
Бешта сонни киритинг:
4 15 9 56 4
Энг катта сон 56
Танлаш оператори
Масала: Ой тартиб рақамини киритинг ва шу ой номини чиқаринг.
Ечим:
1 (январь), 2 (февраль),3 (март), 4 (апрель), 5 (май), 6 (июнь), 7 (июль), 8 (август), 9 (сентябрь), 10 (октябрь), 11 (ноябрь),12 (декабрь)
Хосса: Ой тартиб рақамидан иккита эмас, балки бир нечта фарқли боғланиш танлаш керак.
Маълум усуллар билан ечиш мумкинми?
?

Танлаш оператори


if (m == 1) cout << "январь";
if (m == 2) cout << "февраль";
...
if (m == 12) cout << "декабрь";
switch ( m ) {
case 1: cout << "январь";
break;
case 2: cout << "февраль";
break;
...
case 12: cout << "декабрь";
break;
default: cout << "хато";
}
Танлаш оператори
Хоссалар:
    • switch дан кейин ўзгарувчининг номи ёки бутун типли арифметик ифода (int, long)

    • ёки символли (белгили) (char) тип бўлиши мумкин. case дан кейин меткага иккита бир хил қийматларни қўйиш мумкин эмас:

switch ( i+3 ) {
case 1: a = b; break;
case 2: a = c;
}
switch ( x ) {
case 1: a = b; break;
case 1: a = c;
}
Танлаш оператори
Хоссалар:
    • Ҳар бир сase блоки (оҳиргисидан ташқари) break (switch дан чиқиш) оператори билан тугаланиши керак.
    • default қисми ҳар доим бўлиши шарт эмас.


switch ( i+3 ) {
case 1: a = b; break;
case 2: a = c; break;
case 3: b=c;
}

Танлаш оператори


switch ( m ) {
case 1: cout << "январь";
case 2: cout << "февраль";
case 3: cout << "март";
default: cout << «хато";
}
Агар break қўйилмаса:
февральмартхато
m = 2 да:
Танлаш оператори
Масала: Ой тартиб рақамини киритинг ва шу ой кунларини чиқаринг.
Ечим: Ой бўйича кунлар:
28 кун – 2 (февраль)
30 кун – 4 (апрель), 6 (июнь), 9 (сентябрь), 11 (ноябрь)
31 кун – 1 (январь), 3 (март), 5 (май), 7 (июль), 8 (август), 10 (октябрь), 12 (декабрь)
Хосса: Ой тартиб рақамидан иккита эмас, балки бир нечта фарқли боғланиш танлаш керак.
Маълум усуллар билан ечиш мумкинми?
?
Алгоритм
боши
тамом
Танлаш оператори
Бирорта ҳам вариант тўғри келмади
M ни кирит
ҳа
йўқ
M = 1?
D = 31;
йўқ
M = 2?
D = 28;
ҳа
йўқ
M = 12?
D = 31;
ҳа
D ни чоп
этиш
хато
Дастур
int main()
{
int M, D;
cout<<"Oy tartib raqamini kiriting:\n";
cin>>M;
switch ( M ) {
case 2: D = 28;
case 4: case 6: case 9: case 11: D = 30;
case 1: case 3: case 5: case 7:
case 8: case 10: case 12:
D = 31;
default: D = -1;
}
if (D > 0)
cout<<"Bu oyda " <else cout<<"oyning raqami noma’lum";
}
Бирорта ҳам вариант тўғри келмади
break;
break;
break;
Switch дан чиқиш

Танлаш оператори
Масала: Ҳарфларни киритинг ва бу ҳарфлардан бошланган хайвонлар ва шахарлар номини чиқазинг.
Хосса: танлаш белгили ўлчам бўйича бўлади.

Танлаш оператри


char c;
c = getch();
switch(c)
{
case 'а':
cout << "антилопа\n";
cout << "Андижон\n";
break;
...
case 'я':
cout << "ягуар\n";
cout << "Якутск\n";
break;
default: cout << «ХАТО!";
}
Блок ичида бир нечта операторлар
Белги киритилиши кутиляпти ва унинг коди олинади
1-Мисол. Иккита киритилган сонни ўзаро солиштириш
#include
using namespace std;
int main()
{
int a, b;
cout << "Birinchi sonni kiriting: ";
cin >> a;
cout << "Ikkinchi sonni kiriting: ";
cin >> b;
if ( a > b) cout << a << " > " << b << endl;
if ( a == b) cout << a << " = " << b << endl;
else cout << a << " < " << b << endl;
system("pause");
return 0;
}
2-Мисол. Киритилган сон мусбатми ёки манфий?
#include
using namespace std;
int main()
{
int number;
cout << "Butun son kiriting: ";
cin >> number;
if ( number > 0)
{
cout <<"Siz kiritgan son musbat:"<< number << endl;
}
if ( number < 0)
{
cout <<"Siz kiritgan son manfiy:"<< number << endl;
}
else
{
cout <<"Siz kiritgan son nol: "<< number << endl;
}
return 0;
}
Мисоллар
Int x=5;
if ( x < 2 | | x > 4 )
if ( x > 4 && x <6 )
if ( !( x < 5 ) )
printf ( “ 1 ” );
else printf ( “ 2 ” );
else printf ( “ 3 ” );
else printf ( “ 4 ” );
Quyidagi ifoda bajarilganda ekranda nima paydo bo'lishini aniqlang
3
2
Мисоллар
int x = 2;
if ( x < 4 | | x > 6 )
if ( x > 2 && x <8 )
if ( !( x < 5 ) )
printf ( “ 1 ” );
else printf ( “ 2 ” );
else printf ( “ 3 ” );
else printf ( “ 4 ” );
Quyidagi ifoda bajarilganda ekranda nima paydo bo'lishini aniqlang
3
Мисоллар
getch( ) funksiyasi qaysi sarlavha fayliga (kutubxonasiga) tegishli va qaysi kvadratga bog’langan?
1
Иш фаолиятингизда
Сизга омад!

Download 1,54 Mb.

Do'stlaringiz bilan baham:
1   2   3   4




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