Plan Laboratornykh Rabot - II Semestr Gurevich - 2020-21
Plan Laboratornykh Rabot - II Semestr Gurevich - 2020-21
Plan Laboratornykh Rabot - II Semestr Gurevich - 2020-21
1. Структуры
2. Файлы
3. Рекурсия
4. Сортировка (QuickSort)
5. Односвязные списки (стеки)
6. Двусвязные списки (очереди)
7. Нелинейные списки (деревья)
8. Графика
9. Решение нелинейных уравнений (поиск корней)
10. Побитовые операции (см. ниже подробности)
Примечания:
Работы можно выполнять как в консольном, так и в оконном режиме. Вариант
работы – как в первом семестре (кроме л/р «Рекурсия», «Графика» и «Решение
нелинейных уравнений», см. ниже).
Порядок сдачи лабораторных работ значения не имеет; приведенный порядок
ориентировочно соответствует порядку лекций.
Примечание 1: практика предыдущих лет показала, что защита лаб по теме «Файлы»
для многих студентов оказывалась трудной. Это было связано с выполнением
программ по образцам без детального понимания их работы. Перед защитой
убедитесь, что понимаете смысл каждого из тех параметров функций работы с
файлами, которые используются в Вашей программе.
№3. Рекурсия:
Лабораторная работа №1 из методички (Часть 2).
Задача должна быть решена 2 способами (рекурсивным, и любым не
рекурсивным). В варианте №5 допускается реализация только рекурсивного способа.
Студенты могут сами выбирать вариант задачи (т.к. в некоторых вариантах
условие трудно для понимания).
№4. Сортировка:
Л/р №9 из методички (часть 2).
Цель работы – закрепить навыки работы со структурами, а также освоить алгоритмы
QuickSort и поиска делением пополам.
Внимание! В методичке на сайте БГУИР (2009 г.) в примере функции Quick_Sort есть
опечатка, из-за которой она не всегда сортирует верно! Она состоит в том, что
переменная x используется для двух разных целей: хранения ключа и обмена. Для
исправления заведите 2 разные переменные (например, x для ключа и Х для обмена). В
лабораторной работе у этих переменных могут оказаться даже разные типы.
№7. Деревья:
Л/р №5 из методички (часть 2).
Рисовать блок-схемы не требуется.
Студенты, не претендующие на отличную оценку, могут опустить часть «общих» (не
зависящих от варианта) пунктов.
Но в любом случае должны присутствовать построение дерева, вывод его на экран,
добавление в него элементов и выполнение индивидуального задания.
Внимание! В методичке на сайте БГУИР (2009 г.) в примере функции Del_Info
содержится ошибка, из-за которой она не всегда правильно удаляет узел! Для исправления
надо оператор R->left = Prev_R; заменить на R->left = Del->left;
№8. Графика:
Теория, которая будет дана на лекциях:
загрузка картинок из файлов (например, через компонент Image, свойство Picture);
рисование фигур – например:
Image1->Canvas->MoveTo(20,20);
Image1->Canvas->LineTo(20,100);
а также рисование графиков в компоненте Chart.
Компоненты Image и Chart в C++ Builder находятся на вкладке Additional.
Если в цикле поочередно выводятся картинки (для создания анимации), они могут не
отображаться на экране сразу же. Для устранения этого служит, например, функция
Repaint();
а для создания задержки (паузы) – функция
Sleep(t);
где t – время задержки в миллисекундах.
Очень сокращенная теория – см. л/р №9 из методички (часть 1).
Задание:
Написать любую программу, выводящую на экран какое-либо движущееся
изображение, а также график какой-либо функции. На высокую оценку программа
должна использовать все три вышеуказанных части теории и делать более-менее
сложные движение либо рисование.