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
Иш фаолиятингизда
Сизга омад!8>6>
Do'stlaringiz bilan baham: |