Програма повинна виводити суму чисел, тому потрібна змінна цілого типу|типа| (адже всі елементи послідовності цілі числа).
Загальний алгоритм розв'язання.
Потрібно задати початкове значення суми чисел, а потім багато разів обчислювати|обчисляти| черговий елемент послідовності і додавати|добавляти| його до раніше знайденої суми. Обчислення|підрахунки| закінчуються, коли черговий елемент послідовності стане більше кількості елементів послідовності.
Текст програми:
#include| <iostream|.h>
int| main|(){
int| N;
int| sum| = 0, i = 1;
cout<<”Введите| коичество элементов: ”;
cin>>N|;
while| (i<=| N) {
sum| = sum| + i;
i = i + 1;
}
cout<<"sum| = "<<sum<<endl|;
return| 0;
}
На початку програми виділяється пам'ять під змінні:
1. число доданків: int N;
2. початкові значення суми і першого доданку. При цьому їм відразу привласнюються початкові значення (ініціалізація): int sum = 0; i = 1;
Сума обчислюється за допомогою циклу whi1e{}. Виконання циклу починається з перевірки умови, що стоїть в круглих дужках. Якщо воно істинне, то виконується тіло циклу, поміщене у фігурні дужки. Не будь цих дужок, в циклі виконувалася б тільки інструкція, що відразу стоїть за while : sum = sum + i .
У нашому циклі спочатку перевіряється умова i <= N (i менше або рівне N), і оскільки у цей момент i дорівнює 1, а N=1000|, воно виконується, а значить, до змінної sum| додається одиниця sum| = sum| + i, потім збільшується змінна i (i = i + 1), і ми знов|знову| переходимо до перевірки умови i <= N, але|та| тепер уже i дорівнює 2, а N — як і раніше 1000. Значить, умова знову виконується, і цикл здійснює|скоює| свій другий оборот|зворот|, додаючи до змінної sum| двійку і знов|знову| збільшуючи змінну i (вона стає рівною трьом).
Легко зрозуміти, що востаннє умова i <= N виконається, коли змінна i дорівнюватиме 1000. На цьому останньому обороті|звороті| циклу до змінної sum| додасться 1000, потім i збільшиться на 1 і знову почнеться|розпочинатиме| перевірка умови i <= N. Цього разу умова не виконається, тому що|бо| змінна i вже дорівнює 1001, програма пропустить тіло циклу і перейде до наступної|слідуючої| інструкції, що виводить на екран значення суми:
cout<<"sum| = "<<sum<<endl|;
Відмітимо|помітимо|, що цю програму, досить легко пристосувати для підсумовування будь-якої кількості чисел. Потрібно тільки|лише| поміняти значення N. Програмісти не повинні писати «одноразові» програми.
Цю програму можна записати і таким чином:
#include| <iostream|.h>
int| main|() {
int| N = 1000;
int| sum| = 0, i = 1;
while| (i <= N) {
sum| += i;
i++|;
}
cout<<"sum="<<sum<<endl|;
}
Інструкція sum += i; замінює інструкцію sum = sum + i, а інструкція i++; діє так само, як i = i + 1;.
Можна записати цикл і таким чином:
while| while| (i <= N) sum| += i++|;
Вона виконує те, що потрібний, тобто додає до змінної sum поточне значення i, а потім збільшує i на одиницю. Тобто, до sum спочатку додасться 1, потім значення i збільшується на 1 тобто ставати =2 і так до 1000, коли i стане рівною 1001, умова i <= N в циклі while{ не виконається, і програма перейде до наступної інструкції, яка виведе на екран суму чисел, і її робота на цьому завершиться. Але так буде лише у тому випадку, коли оператор автозбільшення стоїть праворуч від змінної i. Тільки тоді збільшення i відбувається після збільшення i до змінної sum. Але оператор ++ може стояти і зліва від змінної i, і тоді в інструкції sum += ++i; i збільшиться до підсумовування.
Тобто, при вході в цикл while{ змінна i дорівнюватиме 1, потім i збільшиться на 1, ставши рівною 2, і вже двійка додасться до змінної sum. Останнім доданим числом буде 1001, тому що на самому початку циклу i дорівнюватиме 1000 (умова i <= N виконається), потім до i спочатку додасться одиниця, і тільки потім i буде додана до змінної sum. Значить, наш цикл складе всі числа від 2 до 1001, тобто зробить не зовсім те, що від нього чекали.
Завдання 2. Спробуйте підсумувати цілі числа від 1 200 000 000. Що при цьому виходить, чому?
Завдання 3.Спробуйте перед while() привласнити змінній i значення –1. Скільки разів виконуватиметься цикл при такому значенні i?
Узагальнення:
Цикл– оператор за допомогою якого ту або іншу дію можна виконати потрібна кількість разів, залежно від деякої умови. Кожне повторення дії називається кроком циклу або ітерацією.
Будь-який цикл складається з тіла циклу, тобто тих операторів, які виконуються кілька разів, початкових установок, модифікації параметра циклу і перевірки умови продовження виконання циклу. Цілочисельні параметри циклу, що змінюються з постійним кроком на кожній ітерації, називаються лічильником циклу.
Перевірка умови виконується на кожній ітерації. Якщо перевірка виконується до тіла циклу, тоді говорять про цикл з|із| передумовою, який обовязково виконується один раз.
Загальний|спільний| синтаксис конструкції while|:
while|(вираз|вираження|){ дія для повторення;}
Використання інтегрованого відладчика Microsoft| Visual| Studio|.
1. Виконання програми по кроках.
Припустимо|передбачатимемо|, що ми збираємося проаналізувати наступний|слідуючий| код:
Послідовність дій:
1. Створіть проект і наберіть код.
2. Скомпілюйте його і переконаєтеся, що немає синтаксичних помилок.
3. Натисніть|натискуйте| на клавішу F10|. Поряд з|поряд із| першим виконуваним рядком коди у вас на екрані з'явиться|появлятиметься| жовта стрілка: саме вона указує|вказує|, який рядок коди зараз "виконується".
4. Для переходу на наступний рядок Натисніть|натискуйте| F10|.
Внизу екрану у вас розташовується набір вкладок для аналіз змінних:
Auto - ця вкладка призначена для проглядання значень змінних, які існують у момент виконання поточного рядка коди. Вписати на даній вкладці щось від себе не можна - це автоматична функція.
Watch| - призначена для тих випадків, коли необхідно самому вибрати змінну для перегляду|проглядати|. У полі Name| впишіть назву змінною і вона відображається|відображує| незалежно від виконуваної коди.
5. Тепер просто натискаючи|натискувати| F10|, "пройдіться" за кодом і подивитеся|поглянете|, як змінюватимуться дані у вкладках.
Примітка: Якщо ви хочете зупинити відладчик раніше, ніж завершитися аналіз коди натисніть поєднання клавіш Shift+F5
Примітка: Якщо ви хочете запустити роботу відладчика з певного рядка програми - встановите курсор в необхідний рядок і натисніть поєднання клавіш Сtrl+f10
Точка останову.
Нехай нам необхідно виконати відрізок коду і зупинившись|зупинятися| у визначеному місці, запустити відладчик.
.
1. Додайте в код рядок cout<<i;
2. Натисніть клавішу F9. Поряд з рядком з'явилася точка останову - червона крапка.
3. Натисніть|натискуйте| F5|, програма запуститься, виконається до того моменту, де встановлен|установлена|а точка останову і перейде в режим отладчика
Звернете увагу на стан|достаток| консолі (вікна програми). Тут відображається|відображує| все, що встигло|устигало| відбутися:
4. Переміщайте жовту стрілку за допомогою F10| і стежите, що відбуваєтьс|походить|я і|із|з змінними.
Крім того, заглядайте у вікно консолі, всі зміни відбуваютьс|походять|я в коді відображатимутьс|відображуватимуть|я і там.
Ще раз натисніть F9і точка останову зникне.
Завдання 2. Написати програму, яка друкує таблицю значень функції у = -х2+1 у введеному діапазоні змінній х із заданим кроком. Якщо значення х>10, виводитися ціле значення у.
Вхідні дані:
1. Початкове значення аргументу хn|;
2. кінцеве|скінченне| значення аргументу хk|;
3. крок зміни dx|;
4. аргумент х;
Загальний|спільний| алгоритм рішення|розв'язання|.
У словесній формі алгоритм можна сформулювати так:
1. Ввести|запроваджувати| початкові|вихідні| дані.
2. Узяти перше із|із| значень аргументу.
3. Обчислити|обчисляти| значення функції по відповідній формулі.
4. Якщо х > 10, перетворити значення в ціле.
5. Вивести рядок таблиці.
6. Перейти до наступного|такого| значення аргументу.
7. Якщо воно не перевищує кінцеве|скінченне| значення, повторити кроки 3-6, інакше закінчити виконання.
У кожен момент часу потрібно зберігати одне значення функції, тому для нього досить завести одну змінну речового типу. Кроки 3-6 повторюються багато разів, тому для їх виконання треба організувати цикл. У приведеному нижче варіанті використовується цикл while:
#include <iostream.h>
#include <windows.h>
#include <iomanip.h>
int main(){
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
int poz=20;
cout.setf(ios::fixed ); //вывод значений с фиксированной точкой
float xn, xk, dx;
cout<<"Введите xn, xk, dx: "; //нач.значение, кон.значение и шаг
cin>>xn>>xk>>dx;
float x=xn, y;
cout<<setw(20)<<"X"<<setw(20)<<"Y"<<endl;
while (x <= xk){
y=-x*x+1;
if(x>10)cout<<setw(20)<<x<<setprecision(0)<<setw(20)<<y<<endl; else{
cout<<setprecision(2);
cout<<setw(20)<<x<<setw(20)<<y<<endl;
}
x += dx;
}
return 0;
}
Домашнє|хатнє| завдання|задавання|.
1. Написати програму, що виводить на екран лінію з|із| 5 зірочок з використанням оператора циклу з|із| передумовою.
2. Розробити програму, яка виводить на екран лінію з|із| символів. Число символів, якій використовувати символ, і яка буде лінія - вертикальна, або горизонтальна - вказує користувач.
3. Написати програму, яка знаходить|находить| суму всіх цілих непарних чисел в діапазоні, вказаному користувачем.
4. Дано натуральне число n. Написати програму, яка обчислює|обчисляє| факторіал додатніх цілих чисел (n > 0). Формула обчислення|підрахунку| факторіалу приведена нижче.
n!= 1*2*3*....*n, (формула обчислення факторіалу числа n) 0!= 1 (факторіал 0 рівний 1 (за визначенням факторіалу)