- •Мета Виконання лабораторних робіт
- •Порядок виконання лабораторних робіт
- •Вимоги до оформлення звітів про виконання лабораторних робіт
- •Лабораторна робота № 1
- •Порядок виконання лабораторної роботи:
- •Код програми мовою с
- •Лабораторна робота № 2 Дослідження роботи стандартних функцій вводу-виводу
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Розробка тестового прикладу
- •Результати виконання програми
- •Контрольні запитання
- •Лабораторна робота № 3 Дослідження виконання операції та обчислення виразів мови c. Перетворення та приведення типів даних
- •Варіанти індивідуальних завдань.
- •Короткі теоретичні відомості
- •Пріоритети операцій мови Сі
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 4 Програмування задач на розгалуження за допомогою множини операторів мови с.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості.
- •If (логічний вираз) оператор1; else оператор2;
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •К од програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 5 Програмування задач з використанням циклічних алгоритмів за допомогою множини операторів мови с.
- •Варіанти індивідуальних завдань.
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Вивід на екран нуля Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитаня
- •Лабораторна робота № 6 Розробка програм з використанням функцій.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання:
- •Лабораторна робота № 7 Програмування задач з використанням масивів даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •К од програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 8 Опрацювання рядків тексту.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 9 Використання вказівників для роботи з масивами даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 10 Програмування задач на використання структур даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 11 Динамічні структури даних
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 12 Робота з дисковими файлами
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Література для самостійної роботи
- •Додаток а
- •Додаток б
- •Додаток в Функції стандартної бібліотеки для перетворення
- •Додаток г Функції стандартної бібліотеки роботи
- •Додаток д
- •Додаток е
Лабораторна робота № 9 Використання вказівників для роботи з масивами даних.
Мета роботи: Освоїти способи звертання до елементів масивів за допомогою вказівників. Навчитись виділяти та використовувати динамічну пам’ять для розміщення масивів даних.
Постановка задачі. Написати програму, яка здійснює опрацювання масиву згідно заданого варіанту. В програмі використати динамічне виділення пам’яті для масиву. Всі операції з елементами масиву здійснювати тільки за допомогою вказівників. Елементи масиву вводити з клавіатури. Програма повинна видавати підказку користувачу про те який елемент вводити.
Варіанти індивідуальних завдань
Написати програму, яка об'єднує два впорядкованих по зростанню (за абеткою) одновимірних масиви символів латинської абетки в один, також впорядкований по зростанню масив.
Написати програму, яка обчислює суму елементів стовпців двовимірного масиву та добуток елементів рядків.
Написати програму, яка обчислює добуток діагональних елементів двовимірного масиву розміром n×n.
Написати програму, яка замінює діагональні елементи двовимірного масиву, які менші нуля на одиниці.
Написати програму, яка знаходить мінімальний та максимальний елементи двовимірного масиву.
Написати програму сортування двовимірного масиву за зростанням елементів по рядках.
Написати програму, яка методом обміну («бульбашки») впорядковує по спаданню одновимірний масив
Написати програму, яка обчислює середнє арифметичне елементів двовимірного масиву без врахування мінімального та максимального елементів.
Написати програму, яка методом бінарного пошуку знаходить заданий елемент одновимірного масиву. Перед проведенням пошуку масив впорядкувати за зростанням.
Написати програму, яка перевіряє чи є введений двовимірний масив «магічним» квадратом. «Магічним» квадратом називається матриця, в якої сума чисел у кожному горизонтальному ряді, в кожному вертикальному ряді та в кожній діагоналі є одна й та ж.
Написати програму, яка виводить на екран значення максимального та мінімального елементів двовимірного масиву та їх індекси.
Обчислити добуток перших трьох додатніх елементів більших 3 одновимірного та визначити їх індекси
Обчислити суму елементів над головною діагоналлю квадратної матриці.
Знайти кількість елементів масиву і їх середнє арифметичне для яких виконується умова: 2<am,n<5.
Обчислити добуток від'ємних елементів двовимірного масиву і визначити індекс мінімального елементу.
Короткі теоретичні відомості
Вказівник – це змінна, яка містить адресу деякого об’єкту. Перед використанням вказівник потрібно оголосити.
Формат оголошення вказівника:
тип_змінної *ім’я_вказівника
де тип_змінної – визначає тип тієї змінної на яку вказує вказівник
Наприклад, char *p_rt, int *len, float *prt. Щоб використати вказівник його необхідно ініціалізувати – присвоїти йому значення адреси змінної на яку він вказує. Використання не ініціалізованих вказівників призводить до помилок виконання програми.
Формат ініціалізації вказівника:
ім’я_вказівника=&ім’я_змінної
Наприклад, p_rt=&name, len=&count, prt=&f1. Операція взяття адреси - & вказує на те, що вказівнику присвоюється не значення змінної, а її адреса. Інкремент чи декремент вказівника приводить до переходу на наступний чи попередній елементу масиву.
В мові С існує однозначний зв’язок між вказівниками та масивами: ім’я масиву є вказівником на перший елемент масиву. Наприклад, якщо оголошено масив data[25], то data – це адреса першого елемента масиву. Таким чином справджуються тотожності data==&data[0], (data+1)==&data[1], (data+2)==&data[2] і т.д. Щоб присвоїти значення першому елементу масиву можна записати *(data)=4 або data[0]=4, другому елементу - *(data+1)=8 або data[1]=8, третьому - *(data+2)=45 або data[2]=45. У випадку двовимірного масиву присвоєння значення елементу, який знаходиться на перетині k-го рядка та n-го стовпця здійснюється наступним чином: *(*(matr+k)+n)=91 або matr[k][n]=91.
Динамічний розподіл пам’яті. Бібліотека мови С містить функції для розподілу пам’яті безпосередньо в ході виконання програми. Для використання функцій динамічного керування пам’яттю до програми необхідно підключити файли-заголовки stdlib.h або alloc.h. Найчастіше використовуються наступні функції malloc(), calloc(), free().
Функція malloc() виділяє в пам’яті блок з n байт і повертає вказівник на перший байт цього блоку. Наприклад, pd=malloc(sizeof(int)) – повертає вказівнику рd адресу блоку пам’яті для одного цілого числа, rt1=malloc(40*sizeof(float)) - повертає вказівнику rt1 адресу першого байту блоку пам’яті для сорока дійсних чисел.
Функція calloc() виділяє пам’ять для групи об’єктів і повертає вказівник з адресою на перший байт виділеного блоку. Наприклад, name=calloc(120, sizeof(char)) повертає вказівнику name адресу першого байту блоку пам’яті для 120 об’єктів символьного типу.
Функція free() призначена для звільнення динамічно розподіленої пам’яті. Звільнена пам’ять може знову використовуватись . Наприклад, free(rt1) звільняє блок пам’яті, який було виділено для 40 цілих чисел.
Щоб застосувати динамічний розподіл пам’яті для роботи з масивом потрібно оголосити вказівник, який буде іменем масиву. Потім у програмі потрібно за допомогою функцій розподілу пам’яті виділити необхідний блок пам’яті для масиву і присвоїти адресу першого байту вказівнику. Після роботи з масивом виділену пам’ять треба звільнити. Функції для роботи з динамічною пам’яттю представлено в додатку Г.