Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

If всередині циклів




Кілька операторів в тілі if

Умовний оператор if

Розгалуження

Вибір типу циклу

Ми розглянули основні аспекти використання циклу. Цикл for підходить для тих випадків, коли ми зарані знаємо, скільки раз потрібно його виконувати. Цикли while i do використовуються в тих випадках, коли число ітерацій циклу зарані невідоме, причому цикл while підходить для випадків, коли тіло циклу може не виконуватися жодного разу, а цикл do – якщо обов’язково виконати тіло циклу хоч раз.

Ці критерії достатньо суперечливі, тому вибір типу циклу більше визначається стилем програмування і смаками програміста, ніж конкретними правилами. Кожен цикл можна використати в будь-якій ситуації.

 

В С++ існує кілька типів розгалужень, найважливішим з яких є if...else, що здійснює вибір між двома альтернативами. В операторі розгалуження if...else використання else не є обов’язковим. Для вибора однієї з багатьох альтернатив використовується оператор розгалуження switch, дія якого визначається набором значень відповідної змінної. Крім того, існує так звана умовна операція. Ми розглянемо всі ці конструкції.

 

Оператор if є найпростішим з операторів розгалуження. Далі приведена програма демонструє використання оператора if.

 

#include <iostream>

using namespace std;

int main()

{

int x;

cout<<”Vvvedit chyslo: “;

cin>>x;

if (x>100)

cout<<”x>100\n”;

return 0;

}

Після ключового слова if йде умова розгалуження, взята в круглі дужки.

 

Як і для циклів, тіло розгалуження може складатися як з одного оператора, так і з багатьох операторів, включених в фігурні дужки. Далі приведений приклад такої програми.

 

#include <iostream>

using namespace std;

int main()

{

int x;

cout<<”Vvvedit chyslo: “;

cin>>x;

if (x>100)

{

cout<<”x>”;

cout<<”100\n”;

}

return 0;

}

 

Цикли і розгалуження можна використовувати спільно. Можна поміщати розгалуження всередину циклу і навпаки, використовувати вкладені розгалуження і вкладені цикли. Далі приводиться приклад, коли розгалуження if знаходиться всередині циклу for. Програма визначає, чи є введене число простим.

#include <iostream>

using namespace std;

#include<process.h>

int main()

{

unsigned long n,j;

cout<<”Vvedit chyslo ”;

cin>>n;

for (j=2;j<=n/2;j++)

if (n%j==0)

{cout<<”Chyslo ne proste, dilytsa na ”<<j<<endl;

exit(0); //вихід з програми

}

cout<<”Chyslo proste\n”;

return 0;

}

Програма містить функцію exit(), яка здійснює вихід з програми незалежно від того, в якому місці вона знаходиться. Ця функція не повертає значення. Її єдиний аргумент (в даному випадку 0) повертається викликаючому оточенню після того, як програма завершується. Як правило, повернення значення 0 свідчить про успішне завершення програми, а ненульове значення свідчить про помилки

 

Звернемо увагу на те, що тіло циклу не включене в фігурні дужки. Це пояснюється тим, що оператор if і оператори тіла розгалуження насправді є одним оператором. Можна додати фігурні дужки, щоб покращити читабельність коду, але це не обов’язковим.

 

Оператор if...else

Оператор if дозволяє здійснювати дію в тому випадку, коли виконується певна умова. Якщо ж умова не виконується, то не виконується жодна дія. Однак частіше трапляються такі ситуації, коли нам необхідно здійснювати одну дію у випадку виконання умови та іншу дію у випадку її невиконання. Тоді виявляється корисним розгалуження if...else. Далі показаний його синтаксис

 

if (умова) statement; else statement;

 

if (умова)

{statement1;

...

statement n;

}

else

{statemente1;

...

statemente n;

}

 

Змінимо одну з попередніх програм, додавши до розгалуження esle-частину.

 

#include <iostream>

using namespace std;

int main()

{

int x;

cout<<”Vvvedit chyslo: “;

cin>>x;

if (x>100)

cout<<”x>100\n”;

else

cout<<”x<=100\n”;

 

return 0;

}

 

Функція getche()

Далі приведений приклад демонструє використання розгалуження if...else всередині циклу while. Крім того, в ньому використовується бібліотечна функція getche(). Програма підраховує кількість слів і символів в рядку, який вводиться користувачем з клавіатури.

 

#include <iostream>

using namespace std;

#include <conio.h> //для getche()

int main()

{

int chcount=0; //число непробільних символів

int wdcount=1; //число пробілів

char ch=’a’; //ch повинна мати певне значення

cout<<”Vvedit rjadok: “;

while(ch!=’\r’) //цикл поки не буде натиснута клавіша Enter

{ch=getche();

if(ch==’ ‘) //якщо символ є пробілом

wdcount++;

else

chcount++;

}

cout<<”\nSliv “<<wdcount<<endl<<”Bukw “<<(chcount-1)<<endl;

return 0;

}

Досі ми використовували для вводу тільки об’єкт cin і операцію >>. Такий спосіб вводити значення передбачає, що після вводу значення користувач натискає клавішу Enter. Це правильно і по відношенню до окремих символів: користувач спочатку вводить символ, а потім натискає Enter. В даному випадку програмі потрібно обробляти символ відразу після його появи, не чекаючи на натиск Enter. Таку можливість забезпечує бібліотечна функція getche(). Ця функція не має аргументів, а її опис міститься в заголовочному файлі CONIO.H. Значення, що повертається функцією getch(), присвоюється змінній ch і друкує це значення на екрані. Інша функція, під назвою getch(), теж «перехоплює» введений символ, але не виводить його на екран.

 




Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 427; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.018 сек.