Фанидан амалий машғулотларни бажариш бўйича услубий кўрсатмалар


Download 1.74 Mb.
bet3/15
Sana26.11.2020
Hajmi1.74 Mb.
#152242
1   2   3   4   5   6   7   8   9   ...   15
Bog'liq
МТА amaliyot boyicha korsatmalar


Оператор нима?
Ишлаб чиқилган дастурлар операторлар орқали компьютерда амалга оширилади. Буларнинг босқичлари ҳақида юқорида келтириб ўтилди. Дастурни бошқариш операторлар кетма-кетлиги асосида бўлганлиги учун унинг тузилиши қуйидагича бўлади: тоифаларни эълон қилиш, бошқарув ва
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

ҳисоблаш операторлари. Ҳисобланувчи ҳар бир операторлар “ ; ” (нуқта – вергул) билан ажратиб ѐзилади. Мазкур операторлар қандайдир қийматга тенг ѐки бирор бир функцияни чақириш ҳам бўлиши мумкин.


мисол:
a = 1;
b = 3;
m = max(a, b);
бу ерда а-нинг қиймати 1га тенг , b-нинг қиймати эса 3га тенглигини англатади. Функцияни max-1 ва 3 оралиқда бўлиб, унинг натижаси m-га тенг.
Юқорида келтирилганидек амаллар операторлар ѐрдамида бажарилади ва қуйидагича:
x + y – 12; // x ва y ни йиғиндисидан 12ни айирмаси
func(d, 12, x); // берилган параметрлари билан func функцияни


  • чақирилиши


Тоифани эълон қилиш
Маълумки¸ ихтиѐрий дастурлаш тилларида ўзгарувчиларнинг тоифалари эълон қилинади. Шу жумладан С++ да ҳам ўзгарувчиларнинг тоифалари қуйидагича эълон қилинади:

int x; // х бутун тоифадаги ўзгарувчи float x; // х ўзгарувчи тоифаси ҳақиқий


const float pi = 3.1415; // pi тоифаси float ва константа

Оператор эълон қилиниши юқорида айтиб ўтганимиздек «;» билан якунланади.


Бошқарув операторлари
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

Дастурда қандай кетма – кетликда бошқарув операторлари бажарилади. Бундай операторлар бирор – бир шартни бажарилиши асосида ишлайди ва ўрнатилган шартни бажарилишини таъминлайди.


Шартли операторлар:
Шартли операторнинг асосий хусусиятларидан бири юқорида айтиб ўтилганидек мавжуд вариантлардан мос келганини амалга оширади.
if оператор икки вариантдан бирини ҳисоблашни танлайди:

if (шарт)




  1. оператор

else



  1. оператор

Қуйида келтирилган жараѐнда агар шарт рост бўлса, 1 оператор, акс ҳолда 2 оператор бажарилади:

if (x > y)
a = x;
else
a = y;

бу ҳолда a нинг қиймати максимумга x ва y дан бирига тенг. Конструкциядаги else –дан ҳар доим ҳам фойдаланиш шарт эмас,


айрим ҳолларда қуйидагича фойдаланиш мумкин:

if (x < 0)


x = -x;
abs = x;
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

Ушбу мисолда оператор x = -x тенг; фақат битта ҳол амалга ошади, бу ҳам бўлса, x манфий бўлганда х-нинг модули, яъни abs бажарилади. Мазкур жараѐнда бир нечта амаллар бажарилса, {} – фигурали қавсдан фойдаланиш мақсадга мувофиқ:

if (x < 0) {
x = -x;
cout <<" x-ни қиймати ишорасини қарама-қарши ишорага ўзгартирилди";
}
abs = x;

Шартли операторда бир нечта шартларни ҳам текшириш мумкин:


if (x < 0)
cout << "Қарама-қарши катталик";
else if (x > 0)
cout << "Мусбат катталик";
else
cout << "Нол";

«if else» конструкциянинг бир нечта усуллари бор.


Шартли операторнинг яна бир варианти switch бўлиб, бир нечта ҳисоблашлардан жараѐн учун мос келганини танлаб, амалга оширишни таъминлайди. мисол, code ни қиймати 0 дан 2 гача қийматлар бўлсин, белгиланга қийматларга мос турли хил амалларни бажарсин:

switch (code) {


case 0:
cout << "код нол";
x = x + 1;
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

break;
case 1 :


cout << "код бир";
y = y + 1;
break;
case 2:
cout << "код икки";
z = z + 1;
break;
default:
cout << "нотаниш қиймат";
}

сode қийматларини бошқаришда case-нинг белгиланган кўрсатмаси орқали белгиланган шартларни амалга оширади. Оператор ўз ишини якунлашини break буйруғи таъминлайди ѐки switch оператори фаолиятини тўхтади. Жараѐнни боришига тўхталадиган бўлсак, агар code = 1, яъни 1 рақамини киритилса, «код бир» деган ѐзув экранга чиқади ва y-нинг қиймати бирга орттиради, акс ҳолда «код икки» деган ѐзув экранда пайдо бўлади ҳамда z ҳам бирга орттиради ва ҳ.к. Агарда белгиланган оралиқдан ташқаридаги сон киритилса, default эквивалент ѐзувни экранга чиқаради:

default:

Равшанки, келтирилган мисолни if оператори ѐрдамида ҳам амалга ошириш мумкин:

if (code == 0)
{
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

cout << "код ноль";


x = x + 1;
} else if (code == 1) { cout << "код бир"; y = y + 1;
} else if (code == 2) { cout << "код икки"; z = z + 1;
} else {
cout << " нотаниш қиймат ";
}


Циклик операторлар
Циклик операторларни аниқ бир мисолда кўрайлик. масалан: 0 дан 100 гача бўлган бутун тоифадаги рақамларни йиғиндисини ҳисоблансин. Бунда for операторидан фойдаланиб амалга ошириш қуийдагича:

int sum = 0;


int i;
for (i = 1; i <= 100; i = i + 1) // циклни эълон қилиш sum = sum + i; // цикл танаси

Циклик оператор икки қисмдан ташкил топган бўлиб, циклни эълон қилиш ва цикл танаси. Цикл танаси – шундай оператор-ки, белгиланган қийматгача такрорланувчи ҳисоблашлардан иборат. Юқорида келтирилган мисолдаги for – циклни эълон қилишнинг калит сўзи ҳамда қавс орқали учта ифодани нуқтали вергул билан ажратиб қўйилади. Бундаги биринчи ифода цикл дастлаб қандай рақамдан бошланишини англатади. Иккинчи ифода цикл қандай қийматгача ўсиб бориши шартини белгилайди. Учинчи ифода

Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

циклни ҳар бир қадами бир қийматга ортишини кўрсатади. Юқорида келтирилган мисолни қуйидагича шаклларда ҳам ифодалаш мумкин:



1-шакл
int sum = 0;
int i = 1;
for (; i <= 100; )
{
sum = sum + i;
i = i + 1;
}


2-шакл
int sum = 0;
int i = 1;
for (; ;) {
if (i > 100)
break;
sum = sum + i;
i = i + 1;
}

бу ерда break-циклни бажарилишини шартга мос ҳолда якунланишини таъминловчи буйруқ.



3-шакл
int sum = 0;
for (int i = 1; i <= 100; i = i+1)
{
if ( i % 7 == 0)
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

continue;


sum = sum + i;
}

3-шаклда continue – сўзига дуч келинади. Мазкур буйруқ цикл танасидаги жорий қадамдаги ҳисоблаш натижасида ҳосил бўлган қолдиқни ташлаб, яъни фақат бутун қисмни олиб навбатдаги қадамга ўтишни таъминлайди. Шу билан бирга i-ўзгарувчи тоифасини циклни ичида эълон қилиш мумкинлигини келтириб ўтилмоқда.


While – циклни бошқа шакли бўлиб, қуйидагича тузилишга эга:

while (шарт)


оператор

бундаги шарт if операторидагидан фарқи «рост» ва «ѐлғон» мантиқий қийматларидан фойдаланади. While операторни бажарилиши давомийлиги ўрнатилган шартни токи рост бўлгунга қадар бўлади (true). Ҳар бир итерацияда шарт олдиндан ҳисобланади. Қуйида шундай масала кўриб ўтайлик, 1дан 10 гача бўлган сонлар йиғиндисини топиш масаласи қўйилган. Бундаги циклни while олди шарт оператори ѐрдамида ҳал қилишни караб чиқайлик:

int digits =0;
while (N <= 10)
{
digits = digits + 1;
N=N+1;
}
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

while операторининг навбатдаги шакли do while бўлиб, шарти кейин бериладиган оператор ҳисобланади ва қуйидагича шаклга эга:

do { операторлар } while ( шарт);

while операторининг олдинги шаклидан ушбу шаклни фарқи шартни цикл танасидаги амал бажарилгандан сўнг текширади.


Мисол: «юлдузча» белгиси клавитурадан киритулгунча текширилсин:

char ch;
do {


ch = getch();
} while (ch != '*');
Қайтиш оператори
return оператори функцияни бажарилиши тўхтади ва кўрсатилган жойга қайтишини таъминлайди:

return ифода;


Агар функцияни бирор қисмга қайтиш талаб қилинмаса, у ҳолда оператор қуйидагича шаклда бўлади:


return;
Ўтиш оператори
Агарда дастурда оператор бажарилиш кетма-кетлигини ўзгартирадиган бўлса, goto оператори ѐрдамида амалга оширади ва қуйидаги шаклда бўлади:

goto метка;

Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

Дастурда белги қўйишдан фойдаланишда унинг номи ва икки нуқта қўйилади. Масалан: x ўзгарувчининг авсолют қийматини ҳисоблаш қуйидагича амалга ошириш мумкин:

if ( x >= 0)
goto positiv;
x = -x; // x га манфий ишорали қиймат берилсин positiv: // белгини эълон қилиш
abs = x; // abs ўзгарувчини ўзлаштиради


  • мусбат қиймат

Агар х ни қиймати мусбат бўлса, x = - x амални бажармайди. Дастурчилар айрим ҳолда goto оператордан фойдаланишдан кўра if дан фойдаланишни маъқул кўришади. Ҳақиқатдан ҳам goto дастурда адашишларни келиб чиқишига сабаб бўлади. If оператори орқали факториални ҳисоблашни кўриб чиқайлик:

int fact(int n)
{
int k;
if (n == 1)
{
k = 1;
}
else
{
k = n * fact(n – 1);
}
return k;
}

Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

Бу функция факториални ҳисоблайди. Дастлаб k ўзгарувчини эълон қилинмоқда, сўнг шартни бажарилмоқда. Агар n = 1 бўлса, факториални ҳисоблаш тамом, акс ҳолда бошқа операторни ҳисоблашни амалга оширилмоқда. Охирги оператор функция қайтишни таъминлайди.
Функция
Функция ѐрдамчи қисм дастур бўлиб, махсус бирор-бир жараѐнни ҳисоблашга мўлжалланган.
Дерективалар ва асосий функция main() оралиғида қуйидагича шакллантирилади ҳамда асосий функциянинг таркибида чақириб ишга туширилади:

#include


#include
using namespace std;

void summ(int a, int b) // функцияни эълон қилиш


{ // функцияни бошланиши
...................... // функция танаси
};
// функцияни ёпилиши

main ()
{


..................
summ(a,b);
..................
}

// функцияни чақириш


Қуйида функцияни шаклантиришнинг икки хил варианти келтирилган:




1-вариант
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

#include
#include

using namespace std;


void summ(int a, int b)


// функцияни эълон қилиш


{

cout<<"\n summ = " << a+b;
// функция танаси

};

main()
{
int a,b;
cout<<"\n a = ";
cin>>a;
cout<<"\n b = ";
cin>>b;

summ(a,b); // функцияни чақириб, ишга тушириш


getch();
return 0;


}
Натижа:



2-вариант
#include
Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

#include
using namespace std;

void summ(int a, int b); // функцияни эълон қилиш


main()
{


int a,b;
cout<<"\n a = ";
cin>>a;
cout<<"\n b = ";
cin>>b;

summ(a,b); // функцияни чақириб ишга тушириш


getch();
return 0;


}
void summ(int a, int b)
{
cout<<"\n summ = " << a+b; // функция танаси };

Натижа:

Шу ўринда функцияни эълон қилишдаги унинг таркибий қисмларига тўхталиб ўтсак:


Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев



Албатта, дастурни ишлаб чиқиш мобайнида дастурчи бир нечта функциялардан фойдаланишими мумкин. Юқорида энг содда функциянинг


тузилишини фойдаланувчилар эътиборига ҳавола қилдик. Келтирилганлардан фойдаланиб, дастурлар таркибида фойдаланилиши лозим бўлган функцияларни ишлаб чиқиш мақсадга мувофиқ бўлади.

Муаллифлар: М.Х.Худойбердиев, Б.Б.Акбаралиев

1-амалий машғулот. Маълумотларни стандарт турлари. Оддий ва мураккаб турдаги маълумот тузилмаси

Тоифалар:










7-жадвал













Номи

Қиймат қабул қилиш







оралиғи













Char

-128 дан 127 гача













Int

-32768 дан 32767 гача













Unsigned

0 дан 65535 гача













Long

-2147483648 дан 2147483647







гача













Float

-3.4 х 10-38 дан 3.4 х 1038













Double

1.7 х 10-308 дан 1.7 х 10308













long double

+/-3.4e-4932...+/-3.4e4932










Download 1.74 Mb.

Do'stlaringiz bilan baham:
1   2   3   4   5   6   7   8   9   ...   15




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling