- •Тема 1.1. Поняття алгоритму. Базові структури алгоритмів.
- •Способи подання алгоритмів.
- •Базові структури алгоритмів
- •Розгалужені (умови):
- •Тренувальні вправи
- •Контрольні запитання
- •Лекція №2 (2 години)
- •Тема 1.2. Побудова блок-схем алгоритмів. Опорний конспект Основні символи схем алгоритмів.
- •Контрольні запитання
- •Література до розділу
- •Лекція №3 (2 години)
- •Опорний конспект
- •Алфавіт
- •Коментарі
- •Ключові слова
- •Директиви препроцесора
- •Загальна структура програми.
- •Сталі та змінні.
- •Контрольні запитання
- •Лекція №4 (2 години)
- •Тема 2.2. Головна функція main (). Типи даних. Опорний конспект Головна функція main ().
- •Типи даних.
- •Цілі типи
- •Дійсні типи
- •Символьний тип (char)
- •Логічний тип (bool)
- •Типи користувача
- •Контрольні запитання
- •Лекція №5 (2 години)
- •Опорний конспект
- •Команда присвоєння. Правила узгодження типів.
- •Вирази Арифметичні операції
- •Команда присвоєння, суміщена з арифметичною операцією.
- •Математичні функції.
- •Контрольні запитання
- •Практична робота №1 (2 години)
- •Хід роботи Домашнє завдання
- •Виконання завдань
- •Додаткові завдання
- •Контрольні запитання
- •Висновки до практичної роботи №3
- •Лекція №6 (2 години)
- •Тема 2.4. Потоки введення - виведення даних. Адреси даних, вказівники, динамічна пам'ять. Опорний конспект Потоки.
- •Команда введення даних.
- •Команда виведення даних.
- •Керуючі послідовності.
- •Адреси даних.
- •Вказівники.
- •Динамічна пам’ять. Команди new і delete.
- •Контрольні запитання
- •Лабораторна робота№1 (2 години)
- •Виконання завдань
- •Результати роботи програми:
- •Результати роботи програми:
- •Результати роботи програми:
- •Тестові приклади
- •Результати роботи програми:
- •Контрольні запитання
- •Висновки до лабораторної роботи №1
- •Лекція №7 (2 години)
- •Тема 2.5. Файли. Опорний конспект
- •Зчитування даних із файлу.
- •Виведення даних у файл.
- •Ознаки.
- •Контрольні запитання
- •Лабораторна робота №2 (4 години)
- •Хід роботи
- •Контрольні запитання
- •Висновки до лабораторної роботи №2
- •Тема 3.1.Умовні оператори. Оператори вибору switch.
- •Кома як команда.
- •Логічні вирази та логічні операції.
- •Логічні операції
- •Команда розгалуження if (якщо).
- •Команда вибору (switch).
- •Команда безумовного переходу goto.
- •Контрольні запитання
- •Лабораторна робота №3 (4 години)
- •Хід роботи
- •Контрольні запитання
- •Висновки до лабораторної роботи №3
- •Лекція №9 (2 години)
- •Тема 3.2. Оператори циклу Опорний конспект
- •Команда циклу з лічильником for.
- •Контрольні запитання
- •Лабораторна робота №4 (4 години)
- •Контрольні запитання
- •Висновки до лабораторної роботи №4
Команда циклу з лічильником for.
Команда for має вигляд
for (<вираз 1>; <логічний вираз 2>; <вираз 3>) <команда 1>; |
Вираз 1 призначений для підготовки циклу і виконується один раз. Переважно тут задають початкові значення змінних циклу (підготовляють цикл). У виразі 2 записують умову виходу із циклу. У виразі 3 – команди зміни параметрів циклу. Якщо за допомогою одного із виразів необхідно виконати декілька дій, то використовують команду "кома". Вирази 1 і 3 або один із них у команді for можуть бути відсутні. У цьому випадку опускати символ ";" не можна. Наприклад, for ( ; і < 10; ) і++;.
Дія команди.
-
Обчислюються значення виразів 1 і 2.
-
Якщо значення виразу 2 істинне – виконується команда 1. Якщо хибне – виконавець програми переходить до наступної після for команди.
-
Обчислюються значення виразів 3 та 2 і перевіряється пункт 2).
Приклад 1. Суму цілих чисел з проміжку від 1 до 15 можна обчислити одним із способів:
-
int n = 1, S = 0;
for ( ; n < 16; n++) S += n;
-
for (int n = 1, S = 0; n < 16; n++) S += n;
-
for (int n = 1, S = 0; n < 16; S += n++);
-
for (int n = 1, S = 0; n < 16; S += n, n++);
У результаті виконання команд змінній S буде присвоєно значення 120. Зауважимо, що у способі 4) for (int n = 1, S = 0; n < 16; S += n, n++); змінні S і п ініціалізовано (оголошено) безпосередньо у команді циклу for.
Приклад 2. Кількість і добуток усіх парних цілих чисел із проміжку від 4 до 11 можна обчислити так:
int n, D, kil;
for (D = 1, kil = 0, n = 4; n <=11; n += 2)
{
D *= n; kil++;
}
У результаті виконання програми одержимо D = 1920, kil = 4.
Побудувати до даного прикладу блок-схему
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Зауваження 1. Часто у циклах корисно застосовувати команди break і continue. Команда break достроково припиняє роботу циклу і забезпечує перехід до наступної після циклу команди. Команда continue припиняє виконання поточної ітерації та починає виконувати наступну ітерацію (повторення) циклу. Зазвичай ці команди належать до деякої умовної команди. Наприклад, якщо виконуватиметься певна умова, то буде вихід з циклу, або, якщо умова не виконуватиметься, то буде перехід до наступної ітерації тощо.
Задача 1 (про таблицю мір). Побудувати таблицю відповідності між унціями та рамами, якщо 1 унція = 28,353495 г. Початкове значення кількості унцій (uncia), крок зміни (krok) цього значення та кількість рядків (kil) у таблиці задати самостійно у режимі діалогу.
// Програма відповідності мір
#include <iostream.h>
#include <conio.h>
void main()
{
float uncial, gram, krok; __________________________________
int kil, n;
cout << “Введіть початкове значення унцій, \n”
<< “крок зміни та кількість рядків у таблиці \n”;
cin >> uncial >> krok >> kil;_______________________________
cout << “________________” << “\n”;
cout << “Унції Грами” << “\n”;
cout << “________________” << “\n”;
for (n = 1; n <= kil; n++)____________________________________
{
gram = 28.353495 * uncial;_____________________________
cout << uncial << “\t” << gram << endl;___________________
uncial += krok;________________________________________
}
cout << “________________” << “\n”;
getch();
}
Задача 2 (про випадкову величину). Нехай випадкова величина Х отримує значення з деякими ймовірностями
1,0 |
1,5 |
2,0 |
2,5 |
|
0,1 |
0,4 |
0,3 |
0,2 |
Обчислити математичне сподівання , і середнє квадратичне відхилення випадкової величини Х.
// Математична статистика
#include <iostream.h>
#include <conio.h>
#include <math.h>
#define N 4
void main()
{
float x, p, M =0, M2 = 0, D, S;
for (int k = 1; k <= N; k++)
{
cout << “Введіть x” << k << “-те та p” << k << “-те\n”;
cin >> x >> p;
M += x * p; M2 += pow(x, 2) * p;
}
cout << “\n M =” << M;
D = M2 – pow(M, 2); S = sgrt(D);
cout.precision(3); // Для заокруглення до трьох знаків після коми
cout << “\n D =” << D << “\n Sigma =” << S;
getch();
}
У результаті виконання програми одержимо М = 1,8; D = 0,21; Sigma = 0,458.
Дописати дану програму таким чином, щоб значення були лише в межах від 0 до 1
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Задача 3 (про табулювання функції і пошук даних). Протабулювати функцію y = 2sinx на проміжку [0; 2,5] з кроком h = 0,1 та обчислити середнє арифметичне (s1) значень функції більших ніж 0,5, і менших ніж 1,5.
// Табулювання функції
#include <iostream.h>
#include <conio.h>
#include <math.h>
void main()
{
float x, h = 0.1, y, s1 = 0;
float a = 0, b = 2.5 + h / 2; int n = 0;
cout << “X Y \n”;
for (x = a; x <= b; x += h)
{
y = 2*sin(x); ______________________________________________
cout << x << “\t” << y << “\n”;
if (y > 0.5 && y < 1.5)________________________________________
{
n ++; s1 += y;____________________________________
}
}
if (n)______________________________________________________
{
s1 /= n;________________________________________________
cout << “S =” << s1;_____________________________________
}
else
cout << “\a Таких значень немає”;
getch();
}
Зауваження 2. Ураховуючи специфіку комп’ютерної арифметики, щоб не втратити останнього значення функції, у будові циклу for до останнього значення (х = 2,5) додаємо деяке зміщення, у цьому випадку h / 2.
Команда циклу з передумовою (while) має вигляд
while (<вираз>) <команда 1>; |
Дія команди.
-
Обчислюється значення виразу. Якщо воно істинне, то переходимо до пункту 2), якщо хибне – до пункту 3).
-
Виконується команда 1 і відбувається перехід до пункту 1).
-
Відбувається перехід до наступної після while команди.
Виразом може бути довільний логічний вираз, стала або змінна цілого типу. Якщо треба перевірити декілька умов, то застосовують команду "кома". Команда 1 може бути порожньою, простою або складеною.
Команда while може бути виконана один раз, декілька разів або не бути виконана жодного разу.
Приклад 3. Нехай х = 4, s = 0, d = 1. Після виконання команд
while (x <= 8) {s += x; x++}
while (x > 10) d *= x;
s = 0 + 4 + 5 + 6 + 7 + 8 = 30, х = 9, а змінна d свого значення (1) не змінить, оскільки значення виразу х > 10 хибне, і тому команда d *= x у циклі while виконуватись не буде.
Задача 4 (про суму цифр натурального числа). Для заданого натурального числа п підрахувати суму його цифр
#include <iostream.h>
void main()
{
int S = 0, n, m;________________________________________
cout << “Введіть число”;
cin >> n;_____________________________________________
m = n;_______________________________________________
while (m >0)__________________________________________
{
S += m % 10;_____________________________________
m /= 10;_________________________________________
}
cout << “Сума цифр числа ” << n << “ дорівнює” << S;
}
Задача 5 (про суму елементів знакозмінного ряду, послідовності). Нехай х – деяке число, яке необхідно ввести з клавіатури під час виконання програми, е = 0,001 – точність обчислення. Обчислити суму елементів знакозмінного ряду , де . Визначити кількість доданків. Вивести на екран результати обчислень.
// Програма Сума 1
#include <iostream.h>
#include <conio.h>
#include <math.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
getch();
}
Команда циклу з післяумовою do-while має вигляд
do <команда 1>; while (<вираз>); |
Дія команди.
-
Виконується команда 1 і обчислюється значення виразу.
-
Якщо значення виразу істинне, то див. пункт 1), якщо значення виразу хибне – відбувається перехід до наступної після do-while команди.
Команда 1 у циклі do-while, на відміну від циклу while, буде виконуватись хоча б один раз завжди.
Приклад 4. Нехай цілі змінні х, у мають значення х = 5, у = 0. У результаті виконання команд
do
{
y += x; z = 2 * x; x -= 2;
}
while (x > 1);
змінні x, y, z набудуть значень: y = _______ , z = _____, x = ____.
Задача 6 (про розклад числа на прості множники). Розкласти на прості множники задане натуральне число. Кількість виведень кожного множника дорівнює його кратності у розкладі.
#include <iostream.h>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
Задача 7 (про максимальне значення функції). Протабулювати функцію y = 2cosx на проміжку [-π; π] з кроком h = π / 4. Результати обчислень вивести на екран або у файл за вибором виконавця у вигляді таблиці. Визначити найбільше значення функції (max) на цьому проміжку, а також з’ясувати, для якого х (xmax) воно досягається.
Максимальне чи мінімальне значення функції, або значення, які задовольняють деяку умову пошуку, визначають методом сканування (перегляду) всіх значень функції та порівняння їх з деяким еталоном.
// Табулювання функції
#include <fstream.h>
#include <conio.h>
#include <math.h>
void main()
{
ofstream tabfile (“tabul.txt”, ios::out);_________________________________
const float pi = 3.1415926;___________________________________________
float x = -pi, h = pi / 4, y, max, xmax;_________________________________
max = 2*cos (x);___________________________________________________
xmax = x;_______________________________________________________
cout.precision(2);__________________________________________________
cout << “X Y” << “\n”;____________________________________________
tabfile << “X Y” << “\n”;__________________________________________
do_____________________________________________________________
{
y = 2*cos (x) + 1.75;___________________________________________
cout << x << “\t” << y << “\n”;_________________________________
tabfile << x << “\t” << y << “\n”_____________________________
if (y > max)_______________________________________________
{
max = y;__________________________________________________
xmax = x;________________________________________________
}
x += h;_______________________________________________________
}
while (x <= pi + h / 2);______________________________________________
cout << “\n Max =” << max << “\n”;___________________________________
cout << “xmax =” << xmax << “\n”;____________________________________
tabfile << ”\n Max =” << max << ”\n”;__________________________________
tabfile << “xmax =” << xmax << “\n”;__________________________________
tabfile.close();_____________________________________________________
getch();
}
Порівняйте результати, виведені на екран і у файл
Зауваження 4. У попередній програмі замість оголошення сталої const float pi = 3.1415926 можна було використати стандартну сталу М_РІ, яка описана у модулі math.h.