
- •Мета Виконання лабораторних робіт
- •Порядок виконання лабораторних робіт
- •Вимоги до оформлення звітів про виконання лабораторних робіт
- •Лабораторна робота № 1
- •Порядок виконання лабораторної роботи:
- •Код програми мовою с
- •Лабораторна робота № 2 Дослідження роботи стандартних функцій вводу-виводу
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Розробка тестового прикладу
- •Результати виконання програми
- •Контрольні запитання
- •Лабораторна робота № 3 Дослідження виконання операції та обчислення виразів мови c. Перетворення та приведення типів даних
- •Варіанти індивідуальних завдань.
- •Короткі теоретичні відомості
- •Пріоритети операцій мови Сі
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 4 Програмування задач на розгалуження за допомогою множини операторів мови с.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості.
- •If (логічний вираз) оператор1; else оператор2;
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •К од програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 5 Програмування задач з використанням циклічних алгоритмів за допомогою множини операторів мови с.
- •Варіанти індивідуальних завдань.
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Вивід на екран нуля Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитаня
- •Лабораторна робота № 6 Розробка програм з використанням функцій.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання:
- •Лабораторна робота № 7 Програмування задач з використанням масивів даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •К од програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 8 Опрацювання рядків тексту.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 9 Використання вказівників для роботи з масивами даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 10 Програмування задач на використання структур даних.
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 11 Динамічні структури даних
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Код програми мовою с
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Лабораторна робота № 12 Робота з дисковими файлами
- •Варіанти індивідуальних завдань
- •Короткі теоретичні відомості
- •Приклад виконання лабораторної роботи
- •Граф-схема алгоритму програми
- •Тестовий приклад
- •Результати виконання
- •Контрольні запитання
- •Література для самостійної роботи
- •Додаток а
- •Додаток б
- •Додаток в Функції стандартної бібліотеки для перетворення
- •Додаток г Функції стандартної бібліотеки роботи
- •Додаток д
- •Додаток е
Короткі теоретичні відомості
Список – це скінчений набір даних одного типу між якими налагоджено зв’язок. Елемент однонапрямленого списку складається з двох частин: самого даного та вказівника на наступний елемент списку.
Формат опису елементу списку:
struct назва_типу_списку
{
тип_поля1 назва_поля1;
тип_поля2 назва_поля2;
……………………………..
тип_поляN назва_поляN;
struct назва_типу_списку *тип_вказівника ;
}
Наприклад,
struct rika
{
char nazva[12];
int dov;
long int pl;
struct rika *dali;
}
В результаті опису списку отримують тільки шаблон типу даних. Для роботи зі списком потрібно оголосити необхідні вказівники. Формат оголошення вказівників:
struct назва_типу_списку *ім’я_вказівника1,…,* ім’я _вказівникаМ;
Наприклад, struct rika *element, *pershyj, *poperednij, *novyj;
Вказівники *element, *pershyj, * poperednij, *novyj служать для організації роботи зі списком. Вказівник element – призначений для маркування поточного елементу списку. Тоді element->dov - вказівник на поле dov поточного елементу списку, element->dali - вказівник на наступний елемент списку, а element->dali->dov - вказівник на поле dov наступного елементу списку. Вказівник pershyj призначений для маркування першого елементу списку, вказівник poperednij - для маркування попереднього елементу списку, а novyj – для елементу списку, що створюється.
На відміну від статичного масиву структур зв’язаний список є динамічним масивом структур. Створення нового елементу здійснюється наступним чином:
novy j= (struct rika*)malloc(sizeof(struct rika)).
Вилучення поточного елементу списку полягає в присвоєнні вказівнику попереднього елементу вказівки на наступний за поточним елемент.
Приклад виконання лабораторної роботи
Постановка задачі. Написати програму, що утворює список, який містить інформацію про річки. Вивести список на екран. Додати новий запис. Вивести змінений список на екран.
Г
раф-схема
алгоритму програми.
Блок 1 – початок алгоритму
Блок 2 – функція створення списку
Блок 3 – функція виведення створеного списку на екран
Блок 4 – функція додавання нового елементу списку
Блок 5 – закінчення алгоритму
Код програми мовою с
#include <stdio.h>
#include <stdlib.h>
struct rika
{
char nazva[12];
int dov;
long int pl;
struct rika *dali;
};
struct rika *element, *pershyj, *poperednij, *novyj;
void StvorytySpysok(void);
void VyvestyNaEkran(void);
void StvorytyNovyjElement(void);
int main(int argc, char *argv[])
{
puts("Stvorennja spysku");
puts("Dlja zakinchennja vveditj nulj");
StvorytySpysok();
VyvestyNaEkran();
StvorytyNovyjElement();
element=pershyj;
novyj->dali=element;
pershyj=novyj;
puts("Novyj Spysok");
VyvestyNaEkran();
system("PAUSE");
return 0;
}
void StvorytySpysok(void)
{
element=(struct rika*)malloc(sizeof(struct rika));
pershyj=element;
do
{
poperednij=element;
puts("Vveditj nazvu, dovzhynu ta ploshchu richky richky");
scanf("%s",&element->nazva);
scanf("%d",&element->dov);
scanf("%d",&element->pl);
element->dali=(struct rika*)malloc(sizeof(struct rika));
element=element->dali;
}
while(poperednij->dov!=0||poperednij->pl!=0);
poperednij->dali=NULL;
}
void VyvestyNaEkran(void)
{
puts("Stvoreno Spysok:");
element=pershyj;
while(element!=NULL)
{
printf("%s\t%d\t%d\n",element->nazva,element->dov,element->pl);
element=element->dali;
}
}
void StvorytyNovyjElement(void)
{
novyj=(struct rika*)malloc(sizeof(struct rika));
puts("Vveditj nazvu, dovzhynu ta ploshchu novoji riky");
scanf("%s",&novyj->nazva);
scanf("%d",&novyj->dov);
scanf("%d",&novyj->pl);
}