Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Завдання на лабораторну роботу

Теоретичні основи

Загальні положення

У більшості мов програмування оператор for називають оператором циклу з параметром, маючи на увазі те, що його використання рекомендуєть­ся в тих випадках, коли тіло циклу необхідно виконувати для послідовних значень деякої змінної якого-небудь дискретного типу, що є параметром ци­клу. Цей варіант використання даного оператора типовий і для мови C++, хо­ча в C++ цикл for має значно більше можливостей і фактично є ще одним оператором циклу із передумовою, що може повністю замінювати оператор while.

Особливості оператора for

Формат циклу for у загальному випадку можна записати у такий спосіб:

for (ініціалізація_циклу; вираз_умова; список_виразів)
тіло_циклу

Тут ініціалізація_циклу – послідовність виразів, поді­люваних комами, або опис декількох змінних одного типу з можливою їх ініціалізацією;

вираз_умова – скалярний вираз, що визначає умову продовження вико­нання тіла циклу (аналогічний тому, що записується в заголовку циклу while);

список_виразів – поділювані комами вирази, значення яких обчислюють­ся на кожному кроці циклу після виконання операторів тіла_циклу і перед на­ступним обчисленням значення виразу_умови;

тіло_циклу – простий оператор (у тому числі порожній), складений опе­ратор або блок.

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

for (double x = 7.5; x <= 20; x += 0.5)
for (int i = 0, j, k = 7; i + k <= 15; i++)

Після операторів опису змінних

double h = 0.1, b = 20, x;
int i;

можливий такий заголовок циклу for:

for (i = 0, x = b / 2; x < b; x += h)

У той же час наступний заголовок циклу for компілюватиметься з помилками:

for (int i = 0, double x = 0.5; i < 10; i++)

Помилковим буде і такий фрагмент програми:

int i;
for (i = 0, double x = 0.5; i < 10; i++)

Особливості виконання циклу for:

Ø при вході в цикл у першу чергу обчислюються всі вирази, що вхо­дять у секцію ініціалізація_циклу, причому це робиться тільки один раз (най­частіше в цій секції заголовка циклу for установлюються по­чаткові значення параметрів циклу та різних лічильників);

Ø далі обчислюється значення виразу_умови і у випадку його істиннос­ті виконується тіло_циклу, після чого обчислюються значення виразів з третьої секції заголовка циклу і здійснюється повернення до обробки його другої секції.

Усередині тіла циклу можуть бути присутнім оператори break та continue, дія яких аналогічна їхній дії в операторах while та do … while.

У різних версіях мови C++ сфера дії описів, записаних у першій секції за­головка оператора for, може бути різною. Так, у VC++ вона розпов­сюджується тільки на заголовок циклу і його тіло. Тому в VC++, на­приклад, оператор

for (int s = 0, i = 1; i <= 10; i++)
s += i;

забезпечить правильне обчислення суми перших 10 натуральних чисел, але ця сума виявиться недоступною поза цим оператором, оскільки змінна s, використовувана для обчислення суми, у цій версії мови неві­дома поза циклом.

Будь-яка з секцій заголовка (у тому числі й всі три) може бути опу­щена, однак у випадку відсутності якої-небудь із них наступний за нею символ «крапка з комою» повинен бути збережений. Зокрема, відсутність виразу_умови позначає нескінченний цикл, з якого можливий тільки приму­со­вий вихід. Отже, припустимим є навіть такий оператор:

for (;;); // Нескінченний цикл

У кожному з наступних шести рядків програмного коду оператор for використовується для організації обчислення суми перших 10 натуральних чисел:

int s = 0; for (int i = 1; i <= 10; i++) s += i;
int s = 0; for (int i = 1; i <= 10; i++, s += i);
int s = 0; for (int i = 1; i <= 10; s += i++);
int s = 0; for (int i = 1; i <= 10;) s += i++;
int s = 0, i = 1; for (; i <= 10;) s += i++;
int s = 0, i = 0; for (; ++i <= 10;) s += i;

Щоб цикл for не виявився нескінченним, необхідно забезпечити змі­нення значення хоча б однієї змінної, що присутня у виразі_умові. Це змінення може бути здійснено або при обчисленні безпосередньо виразу_умови (див. вище шостий приклад), або при виконанні операторів тіла_циклу (див. вище чет­вертий і п’ятий приклади), або при обчисленні виразів зі списку третьої секції заго­ловка (див. вище перші три приклади).

Якщо вираз_умова не змінює своє значення, то цикл буде нескінченним. Наприклад, задача підсумовування перших 10 натуральних чисел може бу­ти розв’язана так:

int s = 0, i = 1;
for (; 1;)
{
s += i++;
if (i == 11)
break;
}

Як й інші оператори циклу, оператор for допускає довільну кількість рівнів вкладеності, причому дозволяється комбінування будь-яких операторів циклу. Типовою помилкою при використанні вкладених операторів for є використання однієї й тієї ж змінної для організації зовнішнього та внутріш­нього циклів. Наприклад, фрагмент програми, аналогічний наведеному ниж­че фрагменту, будучи синтаксично правильним, практично завжди є помил­ковим:

int i;
for (i = 1; i <= 10; i++)
{
//...
for (i = 0; i <= 25; i++)
{
//...
}
//...
}

Вкладені оператори for, в яких у секції ініціалізація_циклу описується та сама змінна, у багатьох випадках можуть бути виправдані, але вони в такому випадку погано сприймаються людиною. Мова йде про оператори наступно­го вигляду:

for (int i = 1; i <= 10; i++)
{
//...
for (int i = 0; i <= 25; i++)
{
//...
}
//...
}

Конструкції подібного роду варто уникати в розроблюваних програмах.

Приклади програм

Приклад 1. Дано натуральне число n і послідовність дійсних чисел , , …, . Обчислити

.

Розв’язок.

#include <iostream>
#include <conio.h>
using namespace std;
int main()
{
double a, Sum;
int i, n;
cout << "Enter the number of sequence members: n = ";
cin >> n;
Sum = 0; // Початкове значення суми
for (i = 1; i <= n; i++) // Цикл уведення чисел та їх
{ // підсумовування
cout << "Enter member " << i << ": ";
cin >> a;
Sum += a;
}
cout << "The output is " << cos(Sum)<< endl;
cout << "Press any key";
_getch();
return 0;
}

Приклад 2. Дано натуральні числа m, n. Обчислити

.

Розв’язок.

#include <iostream>
#include <conio.h>

using namespace std;
int main()
{
int m, n;
int i, j, k;
double Sum, Sum_j;
cout << "m = ";
cin >> m;
cout << "n = ";
cin >> n;
k = 1; // Нульовий степінь числа -1
Sum = 0; // Початкове значення суми
for (i = 1; i <= m; i++) // Цикл обчислення
{ // загальної суми
Sum_j = 0; // Початкове значення внутрішньої суми
for (j = 1; j <= n; j++) // Цикл для обчислення
Sum_j += double(i) / (i + j); // внутрішньої суми
Sum += k * (i + 1) * Sum_j;
k = -k; // Наступний степінь числа -1
}
cout << "The sum is " << Sum << endl;
cout << "Press any key";
_getch();
return 0;
}

Завдання на лабораторну роботу

За час, відведений для виконання лабораторної роботи (2 академічні години), студент повинен:

1. Розробити алгоритм розв’язання задачі, запропонованої для програ­мування.

2. Здійснити програмну реалізацію розробленого алгоритму.

3. Здійснити налаштування програми, виправивши синтаксичні та ло­гічні помилки.

4. Підібрати тестові дані для перевірки програми, включаючи ви­нят­кові випадки.

5. Оформити звіт до лабораторної роботи.

6. Відповісти на контрольні запитання.

7. Здати викладачу працездатну програму з демонстрацією її робо­ти на декількох варіантах вихідних даних.

Варіанти задач

1. Дано натуральне число n. Обчислити

.

2. Дано дійсні числа x, a, натуральне число n. Обчислити значення наступного виразу:

.

3. Дано натуральне число n і дійсне число x. Обчислити значення виразу

.

4. Дано натуральне число n і дійсне число x. Обчислити значення такого виразу:

.

5. Дано натуральне число n і дійсне число x. Обчислити значення виразу

6. Послідовність чисел Фібоначчі утворюється за законом ; ; , Дано ціле невід’ємне чис­ло . Одержати .

7. Дано ціле невід’ємне число n. Одержати послідовність , , …, , утво­рену за законом

; ; , ,

де , , … – послідовність Фібоначчі: ; ; ,

8. Дано натуральне число n, . Обчислити

.

9. Дано натуральне число n і дійсне число x. Обчислити

.

10. Нехай ; ; ; , Дано дійсні числа r, s і натуральне число n. Знайти значення

.

11. Нехай ; , Дано натуральне число n (). Знайти значення

.

12. Дано натуральні числа m, n. Одержати всі їх натуральні спільні кратні, менші mn.

13. Дано дійсне число a і натуральне число n. Обчислити

.

14. Дано натуральне число n і дійсне число x. Обчислити значення такого виразу:

.

15. Дано натуральне число n і дійсне число x. Обчислити значення наступного виразу:

.

16. Дано натуральне число n. Обчислити добуток перших n співмножників:

17. Обчислити

,

де

18. Дано натуральне число n і дійсні числа , , …, . Ви­зна­чити .

19. Дано натуральне число n і послідовність дійсних чисел , , …, . Знайти довжину найменшого відрізка числової осі, що містить всі числа цієї послідовності.

20. Дано натуральне число n. Одержати всі його натуральні дільники.

21. Дано натуральне число n і дійсні числа , , …, . Чи вірно, що від’ємних членів у послідовності , , …, мен­ше, ніж додатних?

22. Дано натуральне число n і дійсні числа , , …, . У по­слідовності , , …, визначити кількість сусідства двох чисел різного знака.

23. Дано натуральне число n і дійсні числа , , …, . У по­слідовності , , …, визначити кількість сусідства двох чисел одного знака таких, що модуль першого числа менше модуля другого числа.

24. Дано натуральне число n, дійсні числа , , …, . Об­числити суму чисел , , …, , які перевищують за величиною всі числа , , …, .

25. Дано натуральне число n. Для виразу

обчислити добуток перших n співмножників з тих, знаменники яких не кратні трьом.

26. Нехай здійснюється оцінювання результатів виступу спорт­сменів. Систе­ма оцінювання така. Якщо є n оцінок, то виключається найбільша з них (якщо їх декілька, то виключається тільки одна). Ана­логічно виключаєть­ся найменша з оцінок. Як підсумкова оцінка береться середнє арифме­тичне оцінок, що залишилися після виключення.

Дано натуральні числа n, , , …, (). Вважаючи, що числа , , …, – це оцінки, виставлені суддями одному з учас­ників змагань, визначити його підсумкову оцінку.

27. Дано натуральне число n. Здійснити генерування n натуральних ви­­падкових чисел з інтервалу [0, 99] і виконати перевірку того, що кількість непарних чисел при цьому становить () % від їхньої загальної кількості. Відповіддю повинне бути одне з повідомлень Yes і No.

28. Дано натуральне число n. Обчислити

а) ; б) ;
в) ; г) .

29. Дано дійсне число x і натуральне число n. Обчислити

а) ; б) ;
в) ; г) .

30. Дано натуральне число p. Вивести в порядку зростання всі укладені між 0 і 1 прості нескоротні дроби, знаменники яких не перевищують p.

5. Контрольні запитання

1. Як у загальному випадку записується оператор for? Охарактеризуйте призначення основних його складових частин.

2. У чому особливості виконання оператора for?

3. Коли використання оператора for є доцільним?

4. Чи може в операторі for бути опущена секція ініціалізація_циклу? При пози­тивній відповіді на запитання, поясніть особливості роботи оператора в цьому випадку.

5. Чи може в операторі for бути опущена секція ініціалізація_циклу? При пози­тивній відповіді на запитання, поясніть особливості роботи операто­ра в цьому випадку.

6. Чи може в операторі for бути опущена секція список_виразів? При пози­тивній відповіді на запитання, поясніть особливості роботи оператора в цьому випадку.

7. Чи може в операторі for бути опущено тіло_циклу? При позитивній від­повіді на запитання, поясніть особливості роботи оператора в цьому ви­падку.

8. Як в операторі for виконуються оператори break і continue?

9. Як організується нескінченний цикл за допомогою оператора for?

10. Чи можливе використання вкладених операторів for?

11. Знайдіть помилку в наведеному нижче фрагменті програми:

int s = 0, i = 0;
for (; ++i <= 10;);
s += i;

12. Знайдіть помилку в наведеному нижче фрагменті програми:

for (int sum = 0, c = 50; c < 10; c--)
sum += c;

13. Знайдіть помилку в наведеному нижче фрагменті програми:

for (int sum = 0, k = 11; k < 40; +k)
sum += k;

Список літератури

1. Страуструп, Б. Язык программирования Си++: Второе издание / Б. Страуструп. – К.: ДиаСофт, 1993. – Ч. 1. – 264 с.; Ч. 2. – 296 с.

2. Керниган, Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – М.: Финансы и статистика, 1992. – 272 с.

3. Либерти, Джесс. Освой самостоятельно С++ за 21 день: учеб. пособ. / Джесс Либерти. – М.: Вильямс, 2001. – 816 с.

4. Подбельский, В. В. Программирование на языке Си / В. В. Подбельский, С. С. Фомин. – М.: Финансы и статистика, 1999. – 600 с.

5. Подбельский, В. В. Язык Си++ / В. В. Подбельский. – М.: Финансы и ста­тистика, 1999. – 560 с.

6. Савитч, Уолтер. Язык C++. Курс объектно-ориентиро­ван­ного програм­­мирования / Уолтер Савитч. – М.: Вильямс, 2001. – 704 с.


Навчальне видання

 

Методичні вказівки

до лабораторної роботи
«Керування процесом обчислень за до­помогою
оператора for у програмах мовою C++»

з курсу «Програмування» для студентів напряму 6.040302 – Інформатика
і курсу «Програмування та алгоритмічні мови» для студентів напряму
6.040303 – Системний аналіз

 

Укладачі: БЕЗМЕНОВ Микола Іванович,

БЕЗМЕНОВА Ольга Миколаївна

 

Відповідальний за випуск О. С. Куценко

Роботу до видання рекомендував О. В. Горелий

 

 

За авторською редакцією

 

 

План 2013 р., поз. 10/40–13

 

 

Підписано до друку __.__.2013 р. Формат 60´84 1/16. Папір офсетний.

Друк – ризографія. Гарнітура Таймс. Ум. друк. арк. _______.

Обл.-вид. арк. 0,8. Тираж 50 прим. Зам. №___. Ціна договірна.

________________________________________________________

Видавничий центр НТУ «ХПІ».

Свідоцтво про державну реєстрацію ДК№ 116 від 10.07.2000 р.

61002, Харків, вул. Фрунзе, 21.

________________________________________________________

Друкарня НТУ «ХПІ»

61002, Харків, вул. Фрунзе, 21.



<== предыдущая лекция | следующая лекция ==>
Сопровождение договоров страхования | Психология юридического труда
Поделиться с друзьями:


Дата добавления: 2016-09-06; Мы поможем в написании ваших работ!; просмотров: 370 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Студенческая общага - это место, где меня научили готовить 20 блюд из макарон и 40 из доширака. А майонез - это вообще десерт. © Неизвестно
==> читать все изречения...

4367 - | 4268 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.015 с.