7.17. – листинг. Чексиз циклга мисол.
include< iostream. h>
int menu ( )
void DoTaskOne ( );
void DoTaskMany (int);
int main()
{
bool exit=false;
for (; ;)
{
int choice=menu ( );
switch (choice)
{
case (1): DoTaskOne ( );
break;
case (2): DoTaskMany (2);
break;
case (3): DoTaskMany (3);
break;
case (4): continue;
break;
case (5):
exit=true;
break;
default:
cout << “Please select again! \n”;
break;
} // switch блоки тугади.
if (exit)
break;
}
return 0;
int menu()
{
int choice;
cout << **** Menu **** \n\n”;
cout << “(1) Choice one/ \n”;
cout << “(2 Choice two \n”;
cout << “(3) Choice three \n”;
cout << “(4) Redisplay menu \ n”;
cout << “(5) Quit \n\n”;
cin >> choice;
return choice;
}
void DoTaskOne()
{
cout << “Task One! \n”;
}
void DoTaskMany(int which)
{
if (which == 2)
cout << “Task Two! \n”;
else
cout << “Task Three! \n”;
}
НАТИЖА:
* * * Menu * * * * *
(1) Choice one.
(2) Choice two.
(3) Choice three.
(4) Redisplay menu.
(5) Quit.
: 1
Task One ;
* * * Menu * * * * *
(1) Choice one.
(2) Choice two.
(3) Choice three.
(4) Redisplay menu.
(5) Quit.
: 3
* * * Menu * * * * *
(1) Choice one.
(2) Choice two.
(3) Choice three.
(4) Redisplay menu.
(5) Quit.
: 5
CАВОЛЛАР
for циклида бир нечта счётчик ишлатиш мумкинми?
Нима учун goto оператори кўп ишлатилмайди?
Танасида бирор амал ёзилмаган for оператори ёрдамида цикл ташкил этиш мумкинми?
for цикли ичида while циклини ташкил этиш мумкинми?
Ҳеч қачон тугалланмайдиган цикл ташкил этиш мумкинми?
while ва do .. while операторларини қандай фарқлари бор?
ТАЯНЧ ИБОРАЛАР
Цикл, итератив жараён, goto калитли сўзи, while оператори, break ва сontinue операторлари, do...while конструкцияси, for оператори, ички цикллар, счётчикнинг кўриниш соҳаси, switch оператори
АДАБИЁТЛАР
1. Жесс Либерти, “Освой самостоятельно С++ за 21 день”, Санкт Петербург 2000, 815 с.
Кўрсаткичлар.
С++ дастурлаш тилида хотирага бевосита кўрсаткичлар орқали мурожаат қилиш тилнинг энг катта имкониятидир. Ушбу бўлимда биз қуйидаги саволларга жавоб топамиз.
Кўрсаткич нима?
Кўрсаткичлар қандай эълон қилинади ва қўлланилади ?
Хотира билан қандай ишлаш мумкин?
Ушбу машғулотда биз кўрсатгичлар билан ишлашнинг асосий принциплари билан танишамиз.
Кўрсаткич нима ?
Кўрсаткич – бу компютер хотираси ячейкаcининг адреси ёзилган ўзгарувчидир.
Кўрсаткичлар қандай ишлашини билиш учун машина хотираси ташкил этилишининг таянч принципларини билишимиз лозим. Машина хотираси номерланган ячейкалар кетма-кетлигидан иборатдир. Ҳар бир ўзгарувчининг қиймати унинг адреси деб аталувчи алоҳида хотира ячейкасида сақланади. 8.1.- расмда theAge номидаги, хотирадан тўрт байт жой эгаллайдиган бутун қийматли ўзгарувчининг хотирада ифодаланиши кўрсатилган.
8.1. – расм. TheAge ўзгарувчининг хотирада сақланиши
Турли компютерларда хотирани адреслаш турлича қоида асосида ташкил этилади. Кўп ҳолларда дастурчилар учун бирор бир ўзгарувчини аниқ адресини билиш зарур эмас. Зарурат туғилганда бундай ахборотни адрес оператори (&) ёрдамида олиш мумкин. Бу операторнинг қўлланилишига мисол 8.1. – листингда келтирилган.
8.1. – листинг. Адрес оператори .
#inсlude < iostheam.h >
int main()
{
unsigned short shortVar = 5;
unsigned long longVar = 65535;
long sVar = - 65535;
cout << “shortVar :\t” << shortVar ;
cout << “Address of shortVar:\t” ;
cout<<&shortVar<< “\n”;
cout << “longVar :\ t” << longVar ;
cout << “ Address of LongVar: \ t” ;
cout<< &longVar<< “\n”;
cout << “ sVar :\t” << sVar;
cout << “Address of sVar:\t”;
cout << &sVar <<“\n” ;
return 0;
}
НАТИЖА:
shortVar : 5 Address of shortVar : 0х8fc9:fff4
longVar:65535 Address of longVar: 0х8fc9:fff2
sVar: -65535 Address of sVar : 0х8fc9:ffee.
ТАҲЛИЛ
Дастурнинг бошида учта ўзгарувчи эълон қилинади ва уларга қиймат ўзлаштирилади: 4– сатрда unsigned short типида, 5- сатрда unsigned long типида ва 6 – сатрда long типида. Кейин эса 8 – 18 – сатрларда бу ўзгарувчиларнинг қийматлари ва адрес оператори (&) ёрдамида олинган адреслари ҳақида маълумотлар чиқарилади. Дастур ишга туширилиши билан 80386 процессорли компьютерда shortVar ўзгарувчиси қиймати 5 га, унинг адреси эса 0х8fc9:fff4 тенглиги аниқланади. Ўзгарувчини жойлашиш адреси компютер орқали танланади ва у дастурнинг навбатдаги ишга туширилишида ўзгариши мумкин. Шунинг учун сизнинг натижаларингиз олдингиларидан фарқ қилиши мумкин. Лекин биринчи ва иккинчи ўзгарувчиларнинг адреслари фарқи доимо ўзгармай қолади. short типи икки байт жой эгаллашидан бу фарқ 2 байтни ташкил этади. Иккинчи ва учинчи адреслар орасидаги фарқ 4 байтни ташкил этади. Ҳақиқатан ҳам long типидаги ўзгарувчи тўрт байт жой эгаллайди. Бу ўзгарувчиларни хотирага жойлаштириш тартиби 8.2. – расмда келтирилган.
8.2. – расм. Ўзгарувчининг хотирада сақланиш схемаси
Do'stlaringiz bilan baham: |