- •Робочий зошит з предмету програмування та алгоритмічні мови
- •Тема 1.1. Поняття алгоритму. Базові структури алгоритмів.
- •Способи подання алгоритмів.
- •Базові структури алгоритмів
- •Розгалужені (умови):
- •Циклічні:
- •Тренувальні вправи
- •Практична робота №1 (4 години)
- •Хід роботи
- •Тема 1.2. Побудова блок-схем алгоритмів.
- •Практична робота №2 (4 години)
- •Хід роботи
- •Виконання завдань
- •Висновки до практичної роботи №2 Література до розділу
- •Лекція №3 (2 години)
- •Опорний конспект
- •Алфавіт
- •Коментарі
- •Ключові слова
- •Директиви препроцесора
- •Загальна структура програми.
- •Сталі та змінні.
- •Контрольні запитання
- •Лекція №4 (2 години)
- •Тема 2.2. Головна функція main (). Типи даних. Опорний конспект Головна функція main ().
- •Типи даних.
- •Цілі типи
- •Дійсні типи
- •Символьний тип (char)
- •Логічний тип (bool)
- •Типи користувача
- •Контрольні запитання
- •Лекція №5 (2 години)
- •Опорний конспект
- •Команда присвоєння. Правила узгодження типів.
- •Вирази Арифметичні операції
- •Команда присвоєння, суміщена з арифметичною операцією.
- •Математичні функції.
- •Контрольні запитання
- •Практична робота №3 (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
- •Розділ іv. Складені типи даних Лекція № 10
- •Опорний конспект
- •Тренувальні вправи
- •Тренувальні вправи
- •Контрольні запитання
- •Завдання та методичні вказівки для самостійної роботи студента
- •Завдання для самовдосконалення
- •Лабораторна робота №5 (6годин)
- •Виконання роботи Контрольні запитання
- •Висновки до лабораторної роботи №5
- •Лекція № 11
- •Опорний конспект
- •Тренувальні вправи
- •Задачі для самостійного розв’язання
- •Контрольні запитання
- •Завдання для самовдосконалення
- •Лабораторна робота №6 (6годин)
- •Виконання роботи Контрольні запитання
- •Висновки до лабораторної роботи №6
- •Література
Розділ іv. Складені типи даних Лекція № 10
Тема. Одновимірні масиви. Динамічне оголошення масивів. Передача масивів у функцію.
Мета. Отримати загальне поняття про одновимірні масиви та основні принципи роботи з ними. З’ясувати як використовувати вказівники при роботі з одновимірними масивами.
Опорний конспект
Масив – послідовна група змінних, що мають одне й теж ім’я та один і той самий тип. Масив називається одновимірним (вектором), якщо він складається з одного рядка та N стовпців.
Масив складається з елементів. Кожен елемент має індекси, за якими його можна знайти у масиві. Кількість індексів визначає розмірність масиву.
Масив оголошується наступним чином:
тип ім’я_масиву [розмір];
Розмір – це кількість елементів масиву. Розмір масиву необхідно знати і задавати заздалегідь, оскільки компілятор має зарезервувати для нього необхідний обсяг пам’яті. Розміром може бути лише стала величина (не змінна).
Проініціалізувати масив (надати значення елементам масиву) можна одним із способів:
використовуючи принцип замовчування;
безпосередньо під час його оголошення;
застосовуючи команду присвоєння;
під час введення даних із клавіатури.
За замовчуванням усім елементам масиву надається значення 0. Масив можна ініціалізувати повністю або частково відразу під час його оголошення, записуючи значення змінних через кому у фігурних дужках. Наприклад,
int Stud[] = {2, 10, 5, 7, 3}; float rist[10] = {163.4, 154.6, 170, 172, 8}; char alphavit[6] = “Абетка” або char alphavit[6] = {‘А’, ‘б’, ‘е’, ‘т’, ‘к’, ‘а’}. |
Для опрацювання елементів масиву найчастіше використовують команду циклу for, хоча можна застосувати і while або do-while.
Введення (виведення) елементів одновимірного масиву можна організувати з клавіатури наступним чином:
for (j=0; j<a; j++)
cin>>c[j];
Для того, щоб не вводити при кожному запуску програми всі елементи масиву, масив можна заповнити автоматично. Для цього існує функція random(K) – генератор випадкових чисел.
Наприклад:
#include <iostream>
#include <conio.h>
#include <stdlib.h>
int main()
{
const int n=6;
int k, j;
double c[n];
for (j=0; j<n; j++)
{
c[j]=random(n)-10;
cout<<c[j]<<"\n";
}
cin>>k;
return 0;
}
За допомогою операції sizeof(вираз) можна визначити розмір пам’яті, який відповідає ідентифікатору або типу.
Приклад 1. Створити масив з перших ста цілих чисел і обчислити суму всіх його значень можна одним із способів:
int n[100]; 1-й спосіб int S = 0; for (k = 0; k < 100; ) { *(n + k) = ++k; S += *(n + k); } |
int n[100]; // 2-й спосіб int S = 0; for (k = 0; k < 100; k++ ) { n[k] = k + 1; S += n[k]; } |
Тренувальні вправи
|
2. В одновимірному масиві замінити всі від’ємні елементи на середнє арифметичне елементів масиву: |
3. В одновимірному масиві замінити кожен третій елемент на суму двох попередніх.
|
4. Написати програму, яка для цілочисельного масиву з 10 елементів визначає кількість додатних елементів, що містяться між його максимальним та мінімальним елементом.
|
Під час компіляції програмного коду для статично оголошених масивів надається пам’ять. Для ефективного використання пам’яті призначене динамічне оголошення масивів, а саме:
<тип вказівника> *<назва> = new <тип змінної>[<кількість>]; |
Після виконання цієї команди буде виділена неперервана ділянка пам’яті обсягом
sizeof (тип змінної) * <кількість>,
і назва масиву вказуватиме на початок цієї ділянки.
Після опрацювання масиву вивільнити пам’ять можна за допомогою команди
delete[] <назва вказівника на масив даних>; |
Задача 1 (про створення нового масиву). Утворити масив у, елементи якого обчислюються за формулою – 2, де k = 1, 2, …, 10. Побудувати масив, який складається з від’ємних елементів масиву y. Вивести результати обчислень. Якщо шуканих величин немає, то вивести про це повідомлення.
У наступній програмі змінна п визначає кількість від’ємних елементів у новому масиві.
#include <iostream.h> #include <match.h> #define N 10 void main() { float *y = new float[N]; float *g = new float[N]; int k, n; cout << “\t Масив Y:\n”; for (k = 0, n = 0; k < 10; k++) { *(y + k) = log(k + 1) – 2; cout << k << “\t” << *(y + k) << “\n”; if (*(y + k) < 0) { *(g + n) = *(y + k); n++;} } delete[] y; cout << “\t Масив G:\n”; for (k = 0; k < n; k++) cout << k << “\t” << *(y + k) << “\n”; delete[] g; } |
Задача 2 (про АТС). Нехай - це число викликів, які надходять на АТС за k-ту секунду. Припустимо, що - випадкове число зі значенням від 0 до 30. Утворити масив у з десятьма елементами (k = 1, 2, …, 10). Обчислити суму викликів за перші 10 с роботи АТС. Визначити максимальну суму викликів, які надійшли за деяку одну секунду. Вивести результати обчислень.
Зауваження. Для того, щоб отримати ціле випадкове число з діапазону від 0 до п, можна скористатись функцією ___________, яка описана у модулі __________. Щоб під час виконання програми кожен раз отримувати різні значення, перед використанням функції _____________ треба записати функцію randomize().
Розв’яжемо задачу про АТС, використовуючи функції користувача, параметрами яких є масиви.
// Програма АТС 1 з використанням функцій #include <iostream.h> #include <conio.h> #include <stdlib.h>
int Suma(int y[10]); int Max(int y[10]); void main() { randomize(); int y[10]; cout << “Секунда \t Кількість викликів \n”; for (int S = 0, k = 0; k < 10; k ++) { y[k] = rundom(30); cout << (k + 1) << “\t\t” << y[k] << “\n”; } S = Suma(y); cout << “\n S=” << S; int max; max = Max(y); cout << “\n max = “ << max; getch(); } //------------------------------------------------------------------------------------------------ int Suma(int y[10]) { for (int S = 0, k = 0; k < 10; k++) S += *(y + k); return S; } //------------------------------------------------------------------------------------------------ int Max(int y[10]) { int k = 0; for (int max = *y; k < 10; k++) if (*(y + k) > max) max = *(y + k); return max; } |
Отже, при оголошенні масиву в якості формального параметра функції не треба вказувати розмірність масиву, а достатньо вказати лише квадратні дужки.