Єдина Країна!

Головне меню

Наша кнопка

Українські уроки про ІТ

Друзі

Підтримка української армії


Головна Програмування - C++ Базовий курс програмування на С++. Урок 7. Цикли в C++. Оператори continue та break.

Базовий курс програмування на С++. Урок 7. Цикли в C++. Оператори continue та break.
Написав Joker   
Неділя, 18 січня 2015 19:23
Переглядів: 20219

Ідеальний код - код який не потребує коментування,

а так як ідеального нічого не існує,

то - коментарі мають допомагати

зрозуміти логіку коду написаного.

 

Сьогодні ми розглянемо:

1. Поняття циклу

2. Види циклів

2.1. Whilesum+=digit;

2.2. Do while

2.3. Цикл for

3. Ключові слова. Оператори continue та break

Приклади

Обов’язкове д/з

 

Поняття циклу

Досить часто бувають такі випадки, що ми змушені виконувати одну і ту ж дію декілька разів. Програми і програмний код не є винятком з цього правила. Нам може бути потрібно заповнити десять змінних. Для цього нам потрібно 10 разів повторити команду cin. Так, 10 разів скопіювати одне і те саме займе не більше хвилини вашого дорогоцінного часу. Але, якщо цю дію нам доведеться повторювати 100 або і 1000 разів, це може відбити бажання програмувати взагалі. Але на щастя, лінь – двигун прогресу.

Тепер ближче до діла. Нехай ви спортсмен і хочете пробігти стільки кіл навколо стадіону, на скільки у вас вистачить сили. Але ваше хобі програмувати і ви вирішили скласти для цього алгоритм. Алгоритм виглядає так:

1)    Опинитися на лінії старту/фінішу.

2)    Пробігти коло

3)    Опинитися на лінії старту/фінішу

4)    Якщо ще залишилися сили, повторити пункт 2

5)    Закінчити біг

Звернуть увагу на пункт 4, без нього циклу не буде. Доки є цей пункт істинний цикл буде працювати і повторювати пункти 1-3. Програма завершить свою роботу тільки після того, як пункт 4 буде рівний false.

Цикл — різновид керівної конструкції у високорівневих мовах програмування, призначена для організації багаторазового виконання набору інструкцій (команд). Також циклом може називатися будь-яка багатократно виконувана послідовність команд, організована будь-яким чином (наприклад, із допомогою умовного переходу). (матеріал взятий з вікіпедії http://uk.wikipedia.org/).

 

Види циклів

Цикли С++:

- while

- do while

- for

 

While

Синтаксис:

while (перевірка)
{
Код_1;
}
Код_2;

 

Перевірка – вираз, якщо його значення дорівнює true, то виконується код прописаний у фігурних дужках (виконується крок циклу), якщо ж перевірка дорівнює false – цикл завершився і виконується код поза фігурними дужками, код_1 – пропускається.

Якщо перевірка повернула істину і програма виконала код_1, далі знову виконується перевірка. Будь-який цикл закінчується перевіркою, а вона вже визначає який код виконувати.

Блок-схема циклу while:

 

Спробуємо написати програму, яка виведе 15 разів фразу «Hello world». Хід, який буде повторюватися багато разів – вивід на екран фрази. Тепер нам потрібно якось перевіряти, коли і скільки разів виводити цю фразу. Для цього давайте заведемо змінну-лічильник, тобто вона буде рахувати скільки разів ми вже вивели, назвемо її count, і надамо значення 0. Тепер у нас додалася ще одна дія, яку ми будем часто повторювати – збільшувати значення лічильника на одиницю. І перевірку задамо таким чином, що будем перевіряти доки лічильник менший 15. Все, тепер програмуємо.

Раджу спробувати реалізувати це самостійно, тут немає нічого складного.

#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{
 int count = 0;

 while (count < 15)
 {
 cout << "Hello World" << endl;
  count++;
 }
 
_getch();
return 0;
}

 

Спробуйте реалізувати щось схоже. Для прикладу виведіть степені числа 2, до 15 (2^1, 2^2, 2^3 ...2^15).

 

Do while

Загальний синтаксис:

do
 {
 код_1;
 }
while (перевірка_умови);

 

Як ви вже замітили, ці два цикли дуже схожі. Єдина відмінність полягає в тому, що цикл while спершу здійснює перевірку. Тільки після того він вирішує, що робити. Цикл do while при любих обставинах виконається хоча б один раз.

Програма дійшовши до слова do не буде нічого перевіряти, а зразу почне виконувати код прописаний у циклі, далі дійшовши до слова while, вона перевірить умову, якщо умова істинна – цикл повториться.

 

 

Цикл for

Цей цикл є унікальним і використовується найчастіше. Як на мене він найзручніший з усіх вище описаних.

Загальний синтаксис:

for (ініціалізація змінної; перевірка_умови; зміна_лічильника)
{
Код;
}

 

Тепер схема циклу for:

 

Давайте тепер щось напишемо. Завдання наступне: вивести числа від 1 до 10 включно за допомогою циклу for

#include <iostream>
 using namespace std;

int main ()
 {

for (int i=1; i<=10; ++i)
 {
  cout << i << "\t";
 }
 
system ("pause");
return 0;
}

 

Ви повинні були помітити, як ми створили змінну і зразу ж ініціалізували її, вказали умову перевірки і встановили правило за яким наша керуюча змінна (лічильник) змінюється з кожним кроком циклу. І все це у одному рядку.

Давайте розглянемо його роботу на цьому ж прикладі.

1)    і = 1;  1 <= 10 (true)

cout << 1;

i = 2;

2)    i = 2; 2 <= 10 (true)

cout << 2;

i = 3;

3)    i = 11; 11 <= 10 (false)

вихід із циклу

кінець програми.

 

Ключові слова

Ключові слова – це зарезервовані ідентифікатори, які використовуються для написання команд.

 

Ми вже знаємо про такі: double, int, else, long, switch, case, char, return (потребує додаткового вивчення, детальніше при вивченні рекурсії), const, float, short, unsigned, for, signed, default, do, if, while. Не мало, еге ж Laughing!

Зараз ми розглянемо ще два: break, continue.

 

Оператор break

Інколи нам може знадобитися зупинити цикл, коли умова істинна. До речі, таким чином можна зупинити вічний цикл, перевірка умови якого – відсутня.

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

Давайте розглянемо це на прикладі. Нам потрібно вивести числа від 1 до 5.

Ви можете подумати, що тут важкого і уявите такий код:

#include <iostream>
 #include <conio.h>
 using namespace std;

int main ()
 {
 for (int i=0; i<5; ++i)
  cout << i << endl;


_getch();
return 0;
}

 

Добре, це правильно. Давайте додамо 2 додаткові умови:

  • Потрібно забрати перевірку у циклі (i<5).
  • Використати ключове слово break.

Задумались? Наполегливо раджу постаратися зробити це власноруч. Якщо ж у вас не виходить, то дуже добре перегляньте мій код.

#include <iostream>
 using namespace std;
int main ()
 {
 for (int i=0;;++i)
 {
if (i ==5)
break;
cout << i << end;
 }
 
system ("pause");
return 0;
}

 

Break виконається тільки тоді, коли і буде рівне 5. Після цього цикл завершиться і операція cout не буде виконуватися. Break можна використовувати тільки у циклах (не обов’язково for) або конструкції switch.

 

Оператор continue

Крім виходу з циклу, нам може знадобитися перехід на наступну ітерацію циклу (наступний крок циклу). Цю роботу виконує оператор continue. Його також можна використовувати у всіх видах циклів. Але його дії дещо відрізняються.

У циклі while і do while зустрівши continue програма перейде до перевірки умови циклу.

У циклі for спершу змінюється лічильник, а далі перевіряється умова.

Давайте знову програмувати.

Умова:  вивести всі числа кратні 3 до 30 включно.

#include <iostream>
 using namespace std;
 
int main ()
 {
 for (int i=3; i<=30; ++i)
 {
  if (i%3 != 0)
  continue;
  else
 cout << i << endl;
 }
 
system ("pause");
return 0;
}

 

Якщо число не кратне 3, то виконається continue, і збільшиться на одиницю, перевірятиметься умова.

 

Задача на логіку:

Якщо я зміню цей рядок

if (i%3 != 0)

на такий

if (i%3)

програма буде працювати?

 

Відповідь:

Оператор if може повертати тільки значення true або false, в залежності від умови. true – будь-яке число крім 0. false – 0. Ось і відповідь, якщо i%3 буде рівне 0, тобто число кратне 3, тоді виконається вітка else (0 = false). І навпаки.

 

Приклади

1. Виведемо на екран 5 зірочок по горизонталі.

#include <iostream>
 #include <conio.h>
 using namespace std;

int main ()
{
 int size = 5; // К-сть зірочок
for (int i=0; i<size; ++i)
  cout << "*";
 cout << endl;


_getch();
return 0;
}

 

2. Суму всіх чисел в заданому діапазоні

#include <iostream>
 #include <conio.h>
 using namespace std;
int main ()
 {
 setlocale (LC_CTYPE, "ukr");
 
int start,          // Початкова точка діапазону
end;     // Кінцева точка діапазону

cout << "Початок діапазону --> ";
 cin >> start;
 cout << "\nКінець діапазону --> ";
 cin >> end;
 
int sum = 0;     // Сума чисел діапазону

for (int i=start; i<=end; ++i)
  sum += i;         // sum = sum + i
 // Оскільки цикл складається з 1 рядка, то фігурні дужки можна опустити.

cout << "Сума = " << sum << endl;
 
_getch();
return 0;
}

 

3. Ви вводите з клавіатури послідовно будь-які цілі числа. Програма буде рахувати їх суму доки ви не введете 0. Якщо ви ввели 0, програма зупиниться і виведе суму всіх чисел, які ви ввели.

 
#include <iostream>
 using namespace std;

int main()
{
setlocale (LC_CTYPE, "ukr");
int n;
int   sum=0;
 
for(;;){ // страшний безкінченний цикл
 cout<<"Введіть число -->";

cin>>n;

if(n==0)
 break;
else
 sum+=n;
}
 
cout<<"Результат = "<< sum << endl;

system ("pause");
return 0;
}

 

4. Програма, яка виводить всі числа, які є кратними до числа, яке ви ввели з клавіатури

#include <iostream>
#include <conio.h>
using namespace std;

int main ()
{
int n;
cin >> n;

for (int i=2; i<n; ++i)
{
 if (n%i != 0)
 continue;
 // Оскільки блок if складається з 1 рядка, то фігурну дужки опускаються
 // Якщо виконується блок if, то виконається функція continue і рядок cout пропускаються.
 // Якщо i кратне n, то блок if не виконається
 cout << i << endl;
}
 
_getch();
return 0;
}

 

Обов’язкове д/з

- Написати програму, яка виводить лінію із символів.
Користувач вказує: тип лінії (горизонтальна/вертикальна), який символ використовувати, к-сть символів.
- Написати програму яка виводить суму всіх чисел кратних 3 в певному діапазоні. Діапазон вказує користувач.
- Дано натуральне число n. Порахувати за допомогою циклу його факторіал.( http://uk.wikipedia.org/wiki/Факторіал )
- Порахувати к-сть цифр у числі. Число вводиться з клавіатури і записується у одну змінну. (12345 -> 5)
- Потрібно обернути введене з клавіатури число, число вводиться у одну змінну. (12345 -> 54321)
- Підрахувати суму цифр у введеному числі. Число вводиться з клавіатури у одну змінну.

 

Будь ласка, залишайте свої коментарі нижче, якщо у вас залишились питання.


( 11 Проголосувало )

Схожі статті:
Новіші матеріали:
Старіші матеріали:

Коментарі
Добавити новий
Pavlo   |2016-01-26 00:33:15
приклад № 2 має помилку
for (int i=sum; i
Адміністратор   |2016-01-31 20:15:16
avatar Дякую, виправив
Роман  - помилка   |2016-02-28 20:25:03
avatar приклад №3
sum+=digit;
наскільки я розумію
повинно бути sum+=n;
Адміністратор   |2016-02-29 00:01:17
avatar Таки так, дякую вам
Дмитро   |2017-06-14 02:50:03
Дякую!!
Залишити коментар
Ім`я:
e-mail:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Введіть цей настирливий код
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Ввійти



Підписка

Хто онлайн?

Немає
На даний момент 68 гостей на сайті

Український рейтинг
TOP.TOPUA.NET