DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи № 4 «Списки» з дисципліни «Алгоритмізація та програмування 2: Процедурне програмування»

Інформація про навчальний заклад

ВУЗ:
Національний технічний університет України Київський політехнічний інститут
Інститут:
ООП
Факультет:
Факультет інформатики та обчислювальної техніки
Кафедра:
Не вказано

Інформація про роботу

Рік:
2022
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Алгоритмізація та програмування
Група:
ТР-15
Коротко про документ

Про що ця робота

У звіті досліджено особливості створення одно- та двонаправлених списків на мові програмування С. Описано реалізацію механізмів додавання, пошуку, видалення та редагування записів, а також збереження списку у файл.

У роботі розглядаються

  • Списки
  • Однонаправлені списки
  • Двонаправлені списки
  • Динамічна пам'ять
  • Структури даних
  • Робота з файлами
  • Вказівники в C

Зміст і розділи

  1. Завдання
  2. Результат роботи
  3. Теоретичні відомості
  4. Варіант завдання/результати програми
  5. Висновок
Для кого:Студенти технічних спеціальностей, викладачі
Викладачі:Не вказано

Ключові поняття

списоквказівникструктурадинамічна пам'ятьmallocголова спискувитік пам'ятіфайлредагуваннядодавання запису

Частина тексту файла (без зображень, графіків і формул):

Національний технічний університет України «Київський політехнічний інститут імені Ігоря Сікорського» Кафедра АПЕПС Алгоритмізація та програмування 2: . Процедурне програмування ЗВІТ До лабораторної роботи № 4 «Списки» Варіант №24 Дата «31» Травня 2022 ЗАВДАННЯ: 1. Дослідити особливості створення одно- та дво-направлених списків. 2. Вивчити і реалізувати механізми додавання нових записів у список,  пошуку записів у списку за певними полями, видалення записів зі списку та редагування знайдених записів, а також збереження всього списку у файлі та зчитування списку із файлу до пам’яті з відновленням всіх зв’язків. 3. Розробити Блок-схему програмного алгоритму. 4. Оформити ЗВІТ до лабораторної роботи згідно вимог та методичних рекомендацій.   РЕЗУЛЬТАТ РОБОТИ: 1. Роздрукувати (вивести на екран) попередньо сформовані та підготовлені для запису в файл дані. 2. Роздрукувати (вивести на екран) результат виконання операції читання даних із файлу. 3. ЗВІТ до комп’ютерного практикуму для перевірки додати в Клас. 4. Програмний код (відкритий для редагування) розмістити на сайті Repl.it (посилання виключно через кнопку «+Invite »). Теоретичні відомості Структурою називається сукупність змінних, об’єднаних у єдине ціле, наприклад: struct myStruct { int i, j, k; double x, y; char s[32]; }; Декларація змінної в такому випадку буде мати вигляд: myStruct ss; Але значно частіше для цього застосовують динамічне створення таких структур: myStruct *pp; pp = malloc(sizeof(myStruct)); В такий спосіб будуються списки або більш складні конструкції. В такому підході використовується той факт, що полями структури можуть бути вказівники на таку ж структуру, наприклад для одно- або двонаправленого списку: struct data { // будь-які дані необхідні для конкретної задачі }; struct listElem { data dat; // дані в конкретному елементі списку listElem *next; //вказівник на наступний елемент списку listElem *prev; //вказівник на попередній елемент списку, якщо список двонаправлений } Однонаправлений список має тільки вказівник на наступний елемент списку, а двонаправлений має два вказівника на наступний і попередній. В однонаправленому списку можна рухатись лише від голови списку до хвоста, а в двонаправленому і від хвоста до голови. listElem *head = 0; // декларований вказівник на перший елемент списку listElem *curr = 0; // допоміжний вказівник, що використовується // для руху по списку Тепер можна будувати список із довільного числа елементів, зв’язаних між собою вказівниками. void addElem(listElem *h) { // Додає новий елемент в голову списку listElem* t; If (!h) { h = malloc(sizeof(listElem)); // Створення першого елементу списку h->next = 0; h -> prev=0; } else { // додавання нового елементу перед “головою” списку t = malloc(sizeof(listElem)); t->next = h; t->prev = 0; h ->prev = t; h = t; }; getData(h->dat); // функція заповнення структури даними }; Видалення списку відбувається у зворотньому порядку. Для доступу до списку необхідно, щоб був хоча б один вказівник на нього. У випадку однонаправленого списку це повинен бути обов’язково вказівник на “голову” списку, бо в однонаправленому списку неможливо перейти до попереднього елементу, а в двонаправленому хоча і варто дотримуватись цього ж правила, але не обов’язково, бо по такому списку можна рухатись в обох напрямках. Якщо завдяки помилковому коду раптом зникають всі вказівники на список – він стає недоступним, але продовжує займати пам’ять в купі, що приводить до досить складної для аналізу помилки, яка зветься “витік пам’яті”. Варіант завдання / Результати програми Вивід на екран монітора результату / / Висновок: Під час виконання цієї лабораторної було досліджено  особливості створення одно- та дво-направлених списків. Вивчено і реалізовано механізми додавання нових записів у список, пошук записів у списку, видалення записів, та редагування знайдених записів, а також збереження всього списку у файлі та зчитування списку із файлу до пам’яті з відновленням всіх зв’язків Результати були виведені на екран. Посилання на repl.it: https://replit.com/join/twmzsghucp-tr-15[ім’я автора приховано]
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!