- •1.1.2 Структура функцій програми
- •1.1.3 Правила синтаксису
- •1.1.4. Типи даних
- •1.1.5. Функції введення та виведення даних
- •1.2 Приклад програми Умова задачі
- •Особливості використання функцій вводу та виводу
- •1.3 Технологія виконання лабораторної роботи
- •1.4. Варіанти завдань
- •1.5 Контрольні запитання
- •Розгалужені обчислювальні процеси Лабораторна робота 2
- •2.1 Теоретичні відомості
- •2.1.1. Вибір із двох альтернатив
- •2.1.2. Вкладеність конструкцій вибору
- •2.1.3. Операторний блок
- •2.1.4. Поліваріантний вибір
- •2.2. Приклади програм
- •2.3. Варіанти завдань
- •2.4 Контрольні запитання
- •Циклічні обчислювальні процеси Лабораторна робота 3
- •3.1 Теоретичні відомості
- •3.1.1. Цикл із передумовою
- •3.1.2. Цикл із постумовою
- •3.1.3. Цикл із лічильником
- •3.1.4. Переривання та продовження циклу
- •3.2. Приклад алгоритму та програми
- •3.3. Варіанти завдань
- •3.4 Контрольні запитання
- •Цикли з розгалуженням Лабораторна робота 4
- •4.1 Теоретичні відомості
- •4.1.1. Рекурентні співвідношення
- •4.1.2. Функції користувача
- •4.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Код програми
- •4.3. Варіанти завдань
- •4.4 Контрольні запитання
- •Рекурсивні функції Лабораторна робота 5
- •5.1 Теоретичні відомості
- •5.2. Приклад алгоритму та програми
- •5.3. Варіанти завдань
- •6.1.2. Оголошення та ініціалізація
- •6.1.3. Операції над покажчиками
- •6.1.4. Методи розв’язанні нелінійних рівнянь
- •6.2. Приклад алгоритму та програми
- •6.3. Варіанти завдань
- •6.4 Контрольні запитання
- •Одновимірні масиви Лабораторна робота 7
- •7.1 Теоретичні відомості
- •7.2. Приклад алгоритму та програми
- •Алгоритм програми
- •Код програми
- •7.3. Варіанти завдань
- •7.4 Контрольні запитання
- •Багатовимірні масиви Лабораторна робота 8
- •8.1 Теоретичні відомості
- •8.1.1. Оголошення багатовимірних масивів. Доступ до елементів
- •8.1.2. Базові операції обробки двовимірних масивів
- •8.2. Приклад алгоритму та програми
- •8.3. Варіанти завдань
- •9.1.2. Деякі функції обробки рядків
- •9.2. Приклад алгоритму та програми
- •9.3. Варіанти завдань
- •9.4 Контрольні запитання
- •Структури та масиви структур Лабораторна робота 10
- •10.1 Теоретичні відомості
- •10.2. Приклад алгоритму та програми
- •Алгоритм задачі
- •Приклад коду
- •10.3. Варіанти завдань
- •10.4 Контрольні запитання
3.1.2. Цикл із постумовою
Як і цикл із передумовою, цикл із постумовою застосовують тоді, коли кількість ітерацій циклу є невідомою до початку його виконання. Умова продовження циклу з постумовою записується після тіла циклу та вперше перевіряється після виконання операторів тіла. Цикл з постумовою за будь-яких обставин буде виконано принаймні один раз. Синтаксис оператора циклу з постумовою такий:
do { <оператор1;> ... <операторN;> } while ( <умова повторення циклу> );
Тут do, while — зарезервовані слова, <оператор1>;...<операторN>; — тіло циклу; <умова повторення циклу> — деякий булів вираз.
3.1.3. Цикл із лічильником
Відстежити істинність умови повторення циклу дозволяє спеціальний різновид параметра циклу, лічильник ітерацій. Лічильник — це змінна, що під час кожного повторення збільшується на одиницю. В операторі циклу з лічильником облік числа виконаних ітерацій вказується у заголовку, і тому цей оператор є зручною формою запису циклів із наперед визначеною кількістю повторень. Синтаксис оператора циклу з лічильником такий.
for ([<вираз1>]; [<вираз2>];[<вираз3>] ) <оператор;>
Тут for — зарезервоване слово («для»); <вираз1> ініціалізує лічильник та виконується один раз на початку циклу; <вираз2> — деякий булів вираз, котрий визначає умову повторення циклу; <вираз3> змінює значення лічильника циклу, найчастіше це просто операція інкремента чи декремента; <оператор> — простий або складений оператор, що є тілом циклу. Фраза for() є заголовком циклу, а зазначений після круглих дужок оператор — тілом циклу. Найчастіше <вираз1> записують у вигляді <лічильник>=<початкове значення>; <вираз2> є виразом відношення (<, >, <=, >=, !=, ==), в якому порівнюються поточне та кінцеве значення лічильника. Початкове та кінцеве значення лічильника — це вирази того самого перелічуваного типу; лічильник — це змінна перелічуваного типу, що є узгодженим за присвоюванням з типом початкового та кінцевого значення.
3.1.4. Переривання та продовження циклу
У деяких програмах виникає потреба завершити цикл або його ітерацію передчасно. У мовах С/С++ цього ефекту можна досягти, використовуючи оператори break та continue.
Передчасний вихід із циклу означає, що умова повторення циклу під час виходу з нього є істинною. Для примусового переривання циклу слід виконати оператор break. Оператор continue здійснює пропуск усіх інструкцій, записаних після його виклику в тілі циклу. Таким чином, після виконання оператора continue завжди перевіряється умова продовження циклу.
Якщо використовуються вкладені цикли, то оператор break перериває той цикл, у якому він виконується. Після переривання внутрішнього циклу управління передається заголовку зовнішнього циклу для перевірки умови його продовження. Аналогічно працює і оператор continue: його виконання забезпечує дії нової ітерації того циклу, в якому цей оператор здійснено.
3.2. Приклад алгоритму та програми
Обчислити суму ряду, елемент котрого розраховується за формулою
//ex3.1
#include<iostream>
#include<iomanip>
#include<math.h>
using namespace std;
float x; //параметр зовнішньої суми
float k=0; //параметр внутрішньої суми
float sum=0;//сума ряду
float error; //точність розрахунків
float member; //елемент ряду
//=======обчислення факторіала числа=========
float factorial(int number)
{ //параметр number– число, факторіал котрого розраховується
float fact=1;
if (number==0) fact=1;
else
{
for(int i=1;i<=number;i++)
fact*=i;
}
return (float)fact;
}
///===========виведення поточних розрахунків===========
void OutputSum()
{
cout<<setw(5)<<x<<setw(10)<<k<<setw(20)<<member<<setw(15)<<sum<< endl;
}
//===========обчислення елемента ряду та суми==============
void MemberAndSum()
{
double Numerator; //чисельник елемента ряду
double Denominator; //знаменник елемента ряду
for (x=1;x<=5;x++)
{
k=0;
do
{
Numerator=pow(x,(2*k-1));
if(k>16) //floating point error - overflow
{
cout<<"overflow - break cycle with k"<<endl;
break;
}
else
{
Denominator=(2*k-1)*factorial(2*k+1);
member=(float)Numerator/Denominator;
member*=(-1);
sum+=member;
OutputSum();
k++;
}
}while(fabs(member)<error); //поки не досягнуто
// заданої точності
}
}
/////// головна функція////////////
int main()
{
cout<<"To calculate the sum of row "<<endl;
cout<<" 5 endlessness "<<endl;
cout<<" sum ( sum (((-1)^(k+1))*(x^(2k-1))/((2k-1)(2k+1)!)))" <<endl;
cout<<" x=1 k=0"<<endl;
cout<<"input error: ";
cin>>error;
cout<<"result of iterations"<<endl;
cout<<"=================================================="<<endl;
cout<<" x k member sum "<<endl;
cout<<"=================================================="<<endl;
MemberAndSum();
cout<<"=================================================="<<endl;
cout<<"sum="<<sum<<endl;
system("pause");
}
Рис. 3.1. Результати роботи програми ex3.1