Классические алгоритмы и структуры данных 010300 62

Page 1


Учебно-методический комплекс составлен в соответствии с ФГОС ВПО по направлению подготовки 010300 Фундаментальная информатика и информационные технологии (квалификация (степень) «бакалавр»), утвержденным приказом Министерства образования и науки Российской Федерации (8 декабря 2009 г., регистрационный № 712). Учебно-методический комплекс разработан Н. В. Шалагиноваой, ассистентом кафедры прикладной математики и информатики ВятГГУ. Рецензент – С. М. Окулов, д. п. н., математики и информатики ВятГГУ.

профессор

кафедры

прикладной

Учебно-методический комплекс утвержден на заседании кафедры прикладной математики и информатики ВятГГУ «28» августа 2012 г., протокол № 11.

© Вятский государственный гуманитарный университет (ВятГГУ), 2012 © Шалагинова Н. В., 2012

2


Рабочая программа учебной дисциплины «Классические алгоритмы и структуры данных» 1. ПОЯСНИТЕЛЬНАЯ ЗАПИСКА 1.1. Цели и задачи освоения учебной дисциплины «Классические алгоритмы и структуры данных» Цель дисциплины: формирование знаний и представлений о классических алгоритмах и структурах данных; подготовка к их грамотному и эффективному применению. Задачи дисциплины:  обеспечение усвоения студентами фундаментальных понятий и основ программирования;  формирование умений конструировать решения задач из минимального числа конструкций, разрабатывать классические алгоритмы (сортировки, поиска и другие), работать с различными структурами данных;  содействие развитию познавательного интереса к программированию;  развитие всех видов мышления (от алгоритмического к структурному, а затем и к эвристическому) в процессе творческого исследования основных алгоритмических конструкций и классических алгоритмов;  обучение самостоятельному поиску и использованию нормативнотехнической и справочной литературы и электронных источников информации;  создание условий для воспитания у студентов информационнокоммуникативной культуры, развития у них адекватной самооценки результатов собственной деятельности;  воспитание творческого подхода к решению проблем, возникающих в процессе профессиональной деятельности;  воспитание активной и самостоятельной личности с нравственной позицией и нравственным самопознанием. 1.2. Место дисциплины в структуре ООП ВПО Учебная дисциплина «Классические алгоритмы и структуры данных» относится к вариативной части профессионального цикла (Б.3.18), изучается на первом курсе во втором семестре и основывается на учебном материале дисциплины «Основы программирования». Учебная дисциплина «Классические алгоритмы и структуры данных» изучается одновременно с дисциплинами «Математический анализ» и «Алгебра и геометрия» и частично связан с ними. В частности, знания по 3


математическому анализу, алгебре и геометрии активно используются при изучении тем «Алгоритмы сортировки», «Перебор и методы его сокращения», «Классические алгоритмы на графах», «Структура данных “Множество”». На знаниях, умениях и навыках, полученных при изучении дисциплины «Классические алгоритмы и структуры данных», базируются следующие дисциплины 2-го курса: – «Архитектура вычислительных систем» – «Языки программирования»; – «Дискретная математика»; – «Введение в .NET программирование» / «Информационные технологии»; – «Программирование на C#»/«Программирование на Java»; 3-го курса: – «Объектно-ориентированное программирование»; – «Системное программирование»; – «Информационная безопасность и защита информации»; – «Технологии баз данных»; – «Компьютерная графика»; – «Операционные системы»; 4-го курса: – «Теория алгоритмов»; – «Программная инженерия»; – «Интеллектуальные системы»; – «Основы веб-программирования»; – «Алгоритмы: построение и анализ»; – «Параллельное программирование»; – «Комбинаторные алгоритмы»/«Алгоритмы на графах»; – «Машинное обучение»/«Нейросетевые технологии»; – «Автоматическая обработка текста»/«Введение в трансляцию». Требования к знаниям, умениям, навыкам студента, необходимым для изучения дисциплины «Классические алгоритмы и структуры данных» Знать: 1. Основные типы данных языка программирования высокого уровня (например, Паскаля). 2. Основные структуры данных языка программирования высокого уровня. 3. Основные алгоритмические конструкции языка программирования высокого уровня. Уметь: 1. Составлять и запускать программы на языке программирования высокого уровня (например, Паскаля). 4


2. Применять массивы и строки при решении задач. 3. Использовать подпрограммы при составлении программ. Владеть: 1. Навыками решения простейших задач на языке программирования высокого уровня (например, Паскаля), использующих основные типы данных и алгоритмические конструкции. 2. Навыками использования процедур и функций при составлении программ. 3. Навыками применения рекурсии при решении задач. 1.3. Компетенции обучающегося, формируемые в результате освоения дисциплины В результате освоения дисциплины обучающийся должен демонстрировать следующие результаты образования: 1. Обладает способностью критически переосмысливать накопленный опыт, изменять при необходимости вид и характер своей профессиональной деятельности (ОК-8). 1) знать: предмет и специфику дисциплины, а так же основные разделы и направления, методы и приемы решения задач; 2) уметь: применять полученные знания для анализа конкретнонаучных и профессиональных проблем, анализировать и оценивать информацию, теоретически и логически грамотно выражать свои мысли в виде программного кода; 3) владеть: навыками аргументированного изложения собственного способа решения задач, навыками критического восприятия информации. 2. Владеет основными методами, способами и средствами получения, хранения, переработки информации, имеет навыки работать с компьютером как средством управления информации (ОК-12). 1) знать: понятие информации, методы, способы и средства получения, хранения и переработки информации; 2) уметь: работать с компьютером при управлении информацией; 3) владеть: методами, способами и средствами получения, хранения, переработки информации; навыками работы с компьютером как средством управления информацией. 3. Обладает способностью применять в профессиональной деятельности современные языки программирования и языки баз данных, методологии системной инженерии, системы автоматизации проектирования, электронные библиотеки и коллекции, сетевые технологии, библиотеки и пакеты программ, 5


современные профессиональные стандарты информационных технологий (в соответствии с профилизацией) (ПК-1). 1) знать: современные языки программирования, библиотеки и пакеты программ, современные профессиональные стандарты информационных технологий; 2) уметь: применять в профессиональной деятельности современные языки программирования, электронные библиотеки и коллекции, библиотеки и пакеты программ, современные профессиональные стандарты информационных технологий; 3) владеть: способами применения базовых знаний на практике. 4. Обладает способностью профессионально решать задачи производственной и технологической деятельности с учетом современных достижений науки и техники, включая: разработку алгоритмических и программных решений в области системного и прикладного программирования; разработку математических, информационных и имитационных моделей по тематике выполняемых исследований; создание информационных ресурсов глобальных сетей, образовательного контента, прикладных баз данных; разработку тестов и средств тестирования систем и средств на соответствие стандартам и исходным требованиям; разработку эргономичных человеко-машинных интерфейсов (в соответствии с профилизацией) (ПК-2). 1) знать: как разработать алгоритмические и программные решения в области прикладного программирования; математические, информационные и имитационные модели по тематике выполняемых исследований; 2) уметь: разрабатывать алгоритмические и программные решения в области прикладного программирования; математических, информационных и имитационных модели по тематике выполняемых исследований; разрабатывать тесты и средства тестирования систем и средств на соответствие стандартам и исходным требованиям; 3) владеть: навыками разработки алгоритмических и программных решений в области прикладного программирования; разработки тестов и средств тестирования систем и средств на соответствие стандартам и исходным требованиям; разработки эргономичных человеко-машинных интерфейсов. 5. Обладает способностью разрабатывать и реализовывать процессы жизненного цикла информационных систем, программного обеспечения, сервисов систем информационных технологий, а так же методы и механизмы оценки и анализа функционирования средств и систем информационных 6


технологий; способностью разработки проектной и программной документации, удовлетворяющей нормативным требованиям (ПК-3). 1) знать: понятия жизненного цикла информационных систем, программного обеспечения, сервисов систем информационных технологий; нормативные требованиям для разработки проектной и программной документации; 2) уметь: разрабатывать и реализовывать процессы жизненного цикла информационных систем, программного обеспечения, а так же проектную и программную документацию, удовлетворяющей нормативным требованиям; 3) владеть: методами и механизмами оценки и анализа функционирования средств и систем информационных технологий. 6. Владеет детальным знанием методов и базовых алгоритмов обработки информационных структур, методов анализа сложности алгоритмов (ПК-17). 1) знать: методы и базовые алгоритмы обработки информационных структур, способы описания алгоритмов, характеристики алгоритма, используемые при его анализе; 2) уметь: разрабатывать и анализировать алгоритмы; 3) владеть: навыками самостоятельного построения и анализа алгоритма, разработки программы. 7. Владеет пониманием концепций, синтаксической и семантической организацией, методов использования современных языков программирования (ПК-19). 1) знать: парадигмы и методологии программирования; концепции, синтаксической и семантической организации, методы использования современных языков программирования; 2) уметь: применять в профессиональной деятельности современные языки программирования, исправлять синтаксические и семантические ошибки; 3) владеть: навыками самостоятельного применения в профессиональной деятельности современных методов использования языков программирования.

7


2.

КРАТКИЕ МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ДЛЯ ПРЕПОДАВАТЕЛЯ

Учебная дисциплина «Классические алгоритмы и структуры данных» включает девять больших тем. В рамках дисциплины изучаются составные типы данных, алгоритмы сортировки и поиска, перебор и методы его сокращения, в частности динамическое программирование. Учащиеся знакомятся со структурами данных «Линейный список», «Стек», «Очередь», «Дерево поиска», «Множество» и «Очередь с приоритетом». Рассчитана дисциплина на один семестр. В связи с малым количеством времени, отводимым на аудиторные занятия, для успешного усвоения материала необходимо доступно объяснять новый материал на лекционных и практических занятиях, иллюстрируя его множеством примеров. Кроме того, важным является правильная организация самостоятельной учебной, а особенно внеучебной работы студентов: должны предлагаться сложные, но доступные для выполнения студентами задания. Сведения о рекомендуемых к использованию преподавателем образовательных технологий и материально-техническом обеспечении учебной дисциплины «Классические алгоритмы и структуры данных». № п/п

1. 2. 3. 4. 5. 6.

Образовательная технология, рекомендуемая к использованию в преподавании учебной дисциплины

Рекомендуемые средства обучения

Информационная лекция Мультимедийный проектор Интерактивная доска Проблемная лекция Лекция с заранее Наборы слайдов запланированными ошибками Лекция-консультация Метод Дельфи Мозговой штурм Сведения о занятиях, проводимых в интерактивных формах

№ п/п 1

Показатель Занятия, проводимые в интерактивных формах

8

Общий объем (по РУП) в часах/ в процентах очная 16 часов / 21%


3. СТРУКТУРА И СОДЕРЖАНИЕ УЧЕБНОЙ ДИСЦИПЛИНЫ «КЛАССИЧЕСКИЕ АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ» 3.1. Объем учебной дисциплины и виды учебной работы Общая трудоемкость дисциплины составляет 4 зачетных единицы, 144 часа. № п/п

Общий объем (по РУП) в часах

Виды учебной работы

1 2 2.1. 2.2. 2.3. 2.4. 2.5. 2.6. 3 3.1. 3.2. 3.3. 3.4. 3.5. 4

очная 144 76

Трудоемкость (по ФГОС ВПО / СПО) Аудиторные занятия, всего в том числе: Лекции Лабораторные работы Практические занятия Семинарские занятия Коллоквиумы Прочие виды аудиторных занятий Самостоятельная работа студентов, всего в том числе: Контрольная работа Курсовая работа Научно-исследовательская работа Практика Прочие виды самостоятельной работы Вид промежуточного контроля

30 46

68

68 экзамен

3.2. Матрица соотнесения разделов / тем учебной дисциплины и формируемых в них профессиональных и общекультурных компетенций

РАЗДЕЛЫ / ТЕМЫ УЧЕБНОЙ

КОЛИЧЕСТВО

ДИСЦИПЛИНЫ

ЧАСОВ

Тема 1. Составные типы данных Тема 2. Алгоритмы сортировки Тема 3. Алгоритмы поиска Тема 4. Рекурсия. Перебор и методы его сокращения Тема 5. Динамическое программирование Тема 6. Структуры данных «Линейный список», «Стек», «Очередь» Тема 7. Структура данных «Дерево

12 18 18 24

ОК-8 ОК-12 ПК-1 ПК-2 ПК-3 ПК-17 ПК-19

КОМПЕТЕНЦИИ

+ + + + + + + + + + + + +

+ + + +

5 6

+ +

4

4

12

+

24

+ +

+ + +

5

16

+ + +

+ + +

6

9

+

+ + + +

Σ ОБЩЕЕ КОЛИЧЕСТВО КОМПЕТЕНЦИЙ


поиска» Тема 8. Структура данных «Множество» Тема 9. Структура данных «Очередь с приоритетом» ИТОГО

8

+ + +

+ + +

6

12

+ +

+ +

4

144

3.3. Содержание разделов / тем учебной дисциплины «Классические алгоритмы и структуры данных» Тема 1. Составные типы данных Основные структуры данных. Понятие и назначение типа данных. Система типов в языке Паскаль. Простые типы данных. Составные типы данных: массивы, файлы, строки, множества, записи. Понятия, описания, способы формирования. Операции, процедуры и функции, определённые над каждым типом данных соответственно. Решение задач с использованием составных типов. Тема 2. Алгоритмы сортировки Задача сортировки информации. Метод простого обмена. Метод простого выбора. Метод вставок. Сортировка слияниями. Оценка эффективности методов. Сравнение временных характеристик. Подсчет перестановок. Усовершенствование методов сортировки на примере простого обмена. Постановка проблемы кардинального ускорения сортировки. Быстрая сортировка. Пирамидальная сортировка. Тема 3. Алгоритмы поиска Задачи поиска информации, их практическая значимость. Последовательный поиск. Реализация алгоритма для поиска в массиве. Барьерный поиск. Бинарный поиск. Поиск подстроки в строке: прямой поиск, алгоритм Бойера–Мура, алгоритм Рабина, алгоритм Кнута–Мориса–Пратта. Тема 4. Рекурсия. Перебор и методы его сокращения Общая схема перебора с возвратом. Дерево поиска. Примеры задач: «Задача о расстановке ферзей», «Задача о шахматном коне», «Задача о лабиринте», «Задача о рюкзаке», «Задача о коммивояжере». Тема 5. Динамическое программирование Идея метода динамического программирования. Примеры задач: «Треугольник», «Степень числа», «Алгоритм Нудельмана–Вунша», «Разбиение выпуклого N-угольника», «Задача о рюкзаке». Тема 6. Структуры данных «Линейный список», «Стек», «Очередь»

10


Указатели, ссылочный тип данных. Основные операторы для работы с указателями. Сравнение статических и динамических типов данных. Списочные структуры данных (типы, основные операции) и методы работы с ними. Реализация линейного списка через массив и с использованием указателей. Сравнение способов реализации. Стек. Определение, основные операции, реализация с использованием массивов и указателей. Примеры использования. Очередь. Определение, основные операции, реализация с использованием массивов и указателей. Примеры использования. Тема 7. Структура данных «Дерево поиска» Определение. Основные операции. Двоичное дерево поиска. Сбалансированные деревья (АВЛ-деревья, 2-3 деревья, Б-деревья, красночерные деревья). Способы реализации, примеры использования. Тема 8. Структура данных «Множество» Множественный тип данных, особенности, операции и функции, определенные над множествами, типы задач, решаемые с помощью множеств. Тема 9. Структура данных «Очередь с приоритетом» Определение, основные операции, реализация. Примеры использования. Расширения очереди с приоритетом. 3.4. Тематический план учебной дисциплины «Классические алгоритмы и структуры данных» а) аудиторные занятия РАЗДЕЛЫ / ТЕМЫ УЧЕБНОЙ ДИСЦИПЛИНЫ

Тема 1. Составные типы данных

ЧАСОВ ВИД УЧЕБНОЙ РАБОТЫ

ЛЕКЦИЯ

ЛАБОРАТОРНОЕ

ОЧНАЯ

2

4

ЗАНЯТИЕ

Тема 2. Алгоритмы сортировки

ЛЕКЦИЯ

ЛАБОРАТОРНОЕ

4

6

ЗАНЯТИЕ

11

ТЕХНОЛОГИЯ ОБУЧЕНИЯ

ФОРМА ТЕКУЩЕГО КОНТРОЛЯ

ИНФОРМАЦИОННАЯ

ПИСЬМЕННЫЙ

ЛЕКЦИЯ ПРОБЛЕМНАЯ ЛЕКЦИЯ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

ОПРОС ДИКТАНТ

ИНФОРМАЦИОННАЯ

ОПРОС

ЛЕКЦИЯ ПРОБЛЕМНАЯ ЛЕКЦИЯ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

ЗАЩИТА ЛАБОРАТОРНОГО ПРАКТИКУМА

ЗАЩИТА ЛАБОРАТОРНОГО ПРАКТИКУМА


Тема 3. ЛЕКЦИЯ Алгоритмы поиска ЛАБОРАТОРНОЕ

4

6

ЗАНЯТИЕ

Тема 4. Рекурсия. Перебор и методы его сокращения

ЛЕКЦИЯ ЛАБОРАТОРНОЕ

4

ЛЕКЦИЯ

ЛАБОРАТОРНОЕ ЛЕКЦИЯ

ЛАБОРАТОРНОЕ ЛЕКЦИЯ

ЛАБОРАТОРНОЕ

ЛЕКЦИЯ

КОНТРОЛЬНАЯ РАБОТА

ОПРОС

4

ЛЕКЦИЯ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

ЗАЩИТА

6

8

4

4

2

2

ЗАНЯТИЕ

Тема 9. Структура данных «Очередь

ЛАБОРАТОРНОГО ПРАКТИКУМА

ПРОБЛЕМНАЯ

ЗАНЯТИЕ

Тема 8. Структура данных «Множество»

ЗАЩИТА

2

ЗАНЯТИЕ

Тема 7. Структура данных «Дерево поиска»

ЛЕКЦИЯ-БЕСЕДА ПРОБЛЕМНАЯ

ОПРОС

ЗАЩИТА

ЗАНЯТИЕ

Тема 6. Структуры данных «Линейный список», «Стек», «Очередь»

ЛЕКЦИЯ ПРОБЛЕМНАЯ ЛЕКЦИЯ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

ЛЕКЦИЯ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

8

ЗАНЯТИЕ

Тема 5. ЛЕКЦИЯ Динамическое программирование ЛАБОРАТОРНОЕ

ИНФОРМАЦИОННАЯ

2

12

ЛАБОРАТОРНОГО ПРАКТИКУМА

МЕТОД ДЕЛЬФИ

ЛАБОРАТОРНОГО ПРАКТИКУМА ЗАЩИТА ПРЕДЛОЖЕННЫХ ВАРИАНТОВ

ИНФОРМАЦИОННАЯ

ОПРОС

ЛЕКЦИЯ ПРОБЛЕМНАЯ ЛЕКЦИЯ ЛЕКЦИЯКОНСУЛЬТАЦИЯ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

ИНФОРМАЦИОННАЯ ЛЕКЦИЯ ПРОБЛЕМНАЯ ЛЕКЦИЯ ЛЕКЦИЯ С ЗАРАНЕЕ ЗАПЛАНИРОВАННЫМИ ОШИБКАМИ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

ИНФОРМАЦИОННАЯ ЛЕКЦИЯ ПРОБЛЕМНАЯ ЛЕКЦИЯ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

ЗАЩИТА ЛАБОРАТОРНОГО ПРАКТИКУМА

ОПРОС

ЗАЩИТА ЛАБОРАТОРНОГО ПРАКТИКУМА

ОПРОС

ЗАЩИТА

МОЗГОВОЙ ШТУРМ

ЛАБОРАТОРНОГО ПРАКТИКУМА АНАЛИЗ ВЫДВИНУТЫХ ИДЕЙ

ИНФОРМАЦИОННАЯ

КОНТРОЛЬНАЯ

ЛЕКЦИЯ

РАБОТА


с приоритетом»

ПРОБЛЕМНАЯ ЛАБОРАТОРНОЕ

4

ЗАНЯТИЕ

ИТОГО

ЛЕКЦИЯ ЭЛЕКТРОННЫЙ ПРАКТИКУМ

ЗАЩИТА ЛАБОРАТОРНОГО ПРАКТИКУМА

76

б) самостоятельная аудиторная работа РАЗДЕЛЫ / ТЕМЫ УЧЕБНОЙ ДИСЦИПЛИНЫ

Тема 1. Составные типы данных

Тема 2. Алгоритмы сортировки

Тема 3. Алгоритмы поиска

Тема 4. Рекурсия. Перебор и методы его сокращения

ВИД УЧЕБНОЙ РАБОТЫ (ФОРМА САМОСТОЯТЕЛЬНОЙ РАБОТЫ) ПРОРАБОТКА КОНСПЕКТА ЛЕКЦИИ; ПОДГОТОВКА К ПРОВЕРОЧНОЙ РАБОТЕ; САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ ЗАДАЧ

ПРОРАБОТКА КОНСПЕКТА ЛЕКЦИИ;

ПРИОБРЕТЕНИЕ ЗНАНИЙ ОБ АЛГОРИТМАХ СОРТИРОВКИ,

ПОДГОТОВКА К ПРОВЕРОЧНОЙ РАБОТЕ; САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ ЗАДАЧ

ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ ПРОГРАММ, ИСПОЛЬЗУЮЩИХ АЛГОРИТМЫ СОРТИРОВКИ

ЛАБОРАТОРНО-ПРАКТИЧЕСКИЕ ЗАНЯТИЯ;

ПРИОБРЕТЕНИЕ ЗНАНИЙ ОБ АЛГОРИТМАХ ПОИСКА,

ПОДГОТОВКА К ПРОВЕРОЧНОЙ РАБОТЕ; САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ ЗАДАЧ

ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ ПРОГРАММ, ИСПОЛЬЗУЮЩИХ АЛГОРИТМЫ ПОИСКА

ЛАБОРАТОРНО-ПРАКТИЧЕСКИЕ ЗАНЯТИЯ;

ПРИОБРЕТЕНИЕ ЗНАНИЙ О

ЛАБОРАТОРНО-ПРАКТИЧЕСКИЕ ЗАНЯТИЯ; ПОДГОТОВКА К ПРОВЕРОЧНОЙ РАБОТЕ; САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ ЗАДАЧ

Тема 6. Структуры данных «Линейный список», «Стек», «Очередь»

ПРИОБРЕТЕНИЕ И СИСТЕМАТИЗАЦИЯ ЗНАНИЙ О ТИПАХ ДАННЫХ, ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ ПРОГРАММ, ИСПОЛЬЗУЮЩИХ СОСТАВНЫХ ТИПЫ ДАННЫХ

ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ; САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ ЗАДАЧ

Тема 5. Динамическое программирование

РЕЗУЛЬТАТ

ПРОРАБОТКА КОНСПЕКТА ЛЕКЦИИ; ПОДГОТОВКА К ПРОВЕРОЧНОЙ РАБОТЕ

13

ПЕРЕБОРНЫХ АЛГОРИТМАХ, ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ ПРОГРАММ, ИСПОЛЬЗУЮЩИХ ПЕРЕБОРНЫЕ АЛГОРИТМЫ

ПРИОБРЕТЕНИЕ ЗНАНИЙ О ДИНАМИЧЕСКОМ ПРОГРАММИРОВАНИИ, ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ ПРОГРАММ, ИСПОЛЬЗУЮЩИХ ИДЕИ ДИНАМИЧЕСКОГО ПРОГРАММИРОВАНИЯ

ПРИОБРЕТЕНИЕ ЗНАНИЙ О СТРУКТУРАХ ДАННЫХ «ЛИНЕЙНЫЙ СПИСОК», «СТЕК», «ОЧЕРЕДЬ», ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ


ПРОГРАММ, ИСПОЛЬЗУЮЩИХ ИЗУЧЕННЫЕ СТРУКТУРЫ ДАННЫХ

Тема 7. Структура данных «Дерево поиска»

ПРОРАБОТКА КОНСПЕКТА ЛЕКЦИИ; ПОДГОТОВКА К ПРОВЕРОЧНОЙ РАБОТЕ; САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ ЗАДАЧ

Тема 8. Структура данных «Множество»

ПРОРАБОТКА КОНСПЕКТА ЛЕКЦИИ; ПОДГОТОВКА К ПРОВЕРОЧНОЙ РАБОТЕ; САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ ЗАДАЧ

Тема 9. Структура данных «Очередь с приоритетом»

ДОПОЛНЕНИЕ КОНСПЕКТА РЕКОМЕНДОВАННОЙ ЛИТЕРАТУРОЙ; ЛАБОРАТОРНО-ПРАКТИЧЕСКИЕ ЗАНЯТИЯ; ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ; САМОСТОЯТЕЛЬНОЕ РЕШЕНИЕ ЗАДАЧ

ПРИОБРЕТЕНИЕ ЗНАНИЙ О СТРУКТУРЕ ДАННЫХ «ДЕРЕВО ПОИСКА», ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ ПРОГРАММ, ИСПОЛЬЗУЮЩИХ ИЗУЧЕННУЮ СТРУКТУРУ ДАННЫХ

ПРИОБРЕТЕНИЕ ЗНАНИЙ О СТРУКТУРЕ ДАННЫХ «МНОЖЕСТВО», ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ ПРОГРАММ, ИСПОЛЬЗУЮЩИХ ИЗУЧЕННУЮ СТРУКТУРУ ДАННЫХ

ПРИОБРЕТЕНИЕ НАВЫКОВ АНАЛИЗА ТЕКСТА, ПРИОБРЕТЕНИЕ ЗНАНИЙ О СТРУКТУРЕ ДАННЫХ «ОЧЕРЕДЬ С ПРИОРИТЕТОМ», ПРИОБРЕТЕНИЕ УМЕНИЙ И НАВЫКОВ СОСТАВЛЕНИЯ ПРОГРАММ, ИСПОЛЬЗУЮЩИХ ИЗУЧЕННУЮ СТРУКТУРУ ДАННЫХ

в) занятия в интерактивных формах № п/п

РАЗДЕЛЫ / ТЕМЫ УЧЕБНОЙ ДИСЦИПЛИНЫ Тема 1. Составные типы данных Тема 2. Алгоритмы сортировки Тема 5. Динамическое программирование Тема 6. Структуры данных «Линейный список», «Стек», «Очередь» Тема 7. Структура данных «Дерево поиска» Тема 8. Структура данных «Множество»

Итого

14

Общий объем (по РУП) в часах очная 2 2 4 2 4 2 16


г) самостоятельная внеаудиторная работа РАЗДЕЛЫ / ТЕМЫ УЧЕБНОЙ ДИСЦИПЛИНЫ

Тема 1. Составные типы данных

ВИД УЧЕБНОЙ РАБОТЫ (ФОРМА САМОСТОЯТЕЛЬ-НОЙ РАБОТЫ) РАБОТА С ПЕРВОИСТОЧНИКАМИ;

ЧАСОВ ОЧНАЯ

6

ПОДГОТОВКА К ЛАБОРАТОРНЫМ ЗАНЯТИЯМ

Тема 2. Алгоритмы сортировки

ФОРМИРОВАНИЕ НАВЫКА РАБОТЫ С КОМПЬЮТЕРОМ; ФОРМИРОВАНИЕ НАВЫКА ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

РАБОТА С

8

ПЕРВОИСТОЧНИКАМИ; ПОДГОТОВКА К ЛАБОРАТОРНЫМ ЗАНЯТИЯМ

Тема 3. ПОДГОТОВКА К Алгоритмы поиска ЛАБОРАТОРНЫМ

ФОРМИРОВАНИЕ НАВЫКА АНАЛИЗИРОВАТЬ, СИСТЕМАТИЗИРОВАТЬ ИНФОРМАЦИЮ; ФОРМИРОВАНИЕ НАВЫКА ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

8

ЗАНЯТИЯМ

Тема 4. Перебор и методы его сокращения

РЕЗУЛЬТАТ

ФОРМИРОВАНИЕ НАВЫКА РАБОТЫ С КОМПЬЮТЕРОМ; ФОРМИРОВАНИЕ НАВЫКА ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

ПОДГОТОВКА К

12

ЛАБОРАТОРНЫМ ЗАНЯТИЯМ; ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ

Тема 5. ИЗУЧЕНИЕ Динамическое ДОПОЛНИТЕЛЬНОЙ программирование ЛИТЕРАТУРЫ ПО ТЕМЕ;

ФОРМИРОВАНИЕ НАВЫКА РАБОТЫ С КОМПЬЮТЕРОМ; ФОРМИРОВАНИЕ НАВЫКА ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

6

ФОРМИРОВАНИЕ НАВЫКА АНАЛИЗИРОВАТЬ, СИСТЕМАТИЗИРОВАТЬ ИНФОРМАЦИЮ; ФОРМИРОВАНИЕ НАВЫКА РАБОТЫ С КОМПЬЮТЕРОМ; ФОРМИРОВАНИЕ НАВЫКА

ПОДГОТОВКА К ЛАБОРАТОРНЫМ ЗАНЯТИЯМ

15


ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

Тема 6. Структуры данных «Линейный список», «Стек», «Очередь»

ИЗУЧЕНИЕ

Тема 7. Структура данных «Дерево поиска»

РЕФЕРАТ;

Тема 8. Структура данных «Множество»

ПОДГОТОВКА К

Тема 9. Структура данных «Очередь с приоритетом»

ПОДГОТОВКА К

10

МАТЕРИАЛА, ВЫНЕСЕННОГО НА САМОСТОЯТЕЛЬНУЮ ПРОРАБОТКУ; ПОДГОТОВКА К ЛАБОРАТОРНЫМ ЗАНЯТИЯМ

ФОРМИРОВАНИЕ НАВЫКА ПОИСКА И АНАЛИЗА ИНФОРМАЦИИ; ФОРМИРОВАНИЕ НАВЫКА ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

8

ПОДГОТОВКА К ЛАБОРАТОРНЫМ ЗАНЯТИЯМ

ФОРМИРОВАНИЕ НАВЫКА АНАЛИЗИРОВАТЬ, СИСТЕМАТИЗИРОВАТЬ ИНФОРМАЦИЮ; ФОРМИРОВАНИЕ НАВЫКА ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

4

ФОРМИРОВАНИЕ НАВЫКА ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

6

ФОРМИРОВАНИЕ НАВЫКА АНАЛИЗИРОВАТЬ,

ЛАБОРАТОРНЫМ ЗАНЯТИЯМ

ЛАБОРАТОРНЫМ ЗАНЯТИЯМ; ИЗУЧЕНИЕ ДОПОЛНИТЕЛЬНОЙ ЛИТЕРАТУРЫ ПО ТЕМЕ; ПОДГОТОВКА К КОНТРОЛЬНОЙ РАБОТЕ

ИТОГО

СИСТЕМАТИЗИРОВАТЬ ИНФОРМАЦИЮ; ФОРМИРОВАНИЕ НАВЫКА РАБОТЫ С КОМПЬЮТЕРОМ; ФОРМИРОВАНИЕ НАВЫКА ПОНИМАНИЯ ПОСТАВЛЕННОЙ ЗАДАЧИ; ФОРМИРОВАНИЕ НАВЫКА САМОСТОЯТЕЛЬНОГО ПОСТРОЕНИЯ АЛГОРИТМА И ЕГО АНАЛИЗА

68

16


4. МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ СТУДЕНТОВ Тема 1. Алгоритмы сортировки Аудиторные занятия Лекция 1. Составные типы данных План лекции: 1. Составные типы данных: массивы, файлы, строки, множества, записи. 2. Понятия, описания, способы формирования. 3. Операции, процедуры и функции, определённые над каждым типом данных соответственно. Лабораторная работа №1-2. Составные типы данных Цель работы: проработка алгоритмов работы с составными типами данных, самостоятельное составление программ, использующих составные типы данных. Примерные задания: 1) Сформировать массив различными способами. 2) Работа с элементами массива. 3) Удаление и вставка элементов массива. 4) Сформировать массив из записей. 5) Работа с полями записи. 6) Работа с символами сроки. 7) Работа со словами в строке. 8) Операции на множестве: a) объединение, b) пересечение, c) разность. Самостоятельная аудиторная работа по теме учебной дисциплины № п/п

Вид самостоятельной работы Общая

1

Форма самостоятельной работы Проработка конспекта лекции; подготовка к проверочной работе; самостоятельное решение задач

Форма отчетности Конспект лекции; письменная проверочная работа; отчет по лабораторной работе

Самостоятельная внеаудиторная работа по теме учебной дисциплины № п/п

Вид самостоятельной работы

Форма самостоятельной 17

Срок сдачи

Форма отчетности


1

работы Работа с первоисточниками; подготовка к лабораторным занятиям

Общая

1-3-я неделя семестра

Диктант по основным понятиям, отчет по лабораторной работе

Тема 2. Алгоритмы сортировки Аудиторные занятия Лекция 2. Простые алгоритмы сортировки План лекции: 4. Задача сортировки информации. 5. Метод простого обмена. 6. Метод простого выбора. 7. Метод вставок. 8. Сортировка слияниями. Лекция 3. Анализ и усовершенствование сортировки. Быстрые алгоритмы сортировки

простых

алгоритмов

План лекции: 1. Оценка эффективности методов. Сравнение временных характеристик. Подсчет перестановок. 2. Усовершенствование методов сортировки на примере простого обмена. 3. Постановка проблемы кардинального ускорения сортировки. 4. Быстрая сортировка Хоара. 5. Пирамидальная сортировка. Лабораторная работа №3. Простые алгоритмы сортировки Цель работы: проработка классических простых алгоритмов сортировки, самостоятельное составление программ, использующих простые алгоритмы сортировки. Примерные задания: 9) Написать полную программу сортировки массива методом простого обмена. 10) Написать полную программу сортировки массива, используя улучшенный алгоритм простого обмена.

18


11) Написать полную программу сортировки массива методом простого выбора. 12) Написать полную программу сортировки массива методом прямого включения. 13) Написать полную программу сортировки массива методом слияний. 14) Подсчитать количество произведенных сравнений и количество произведенных перестановок при сортировке по неубыванию массива из 100 элементов, элементы которого изначально расположены a) по неубыванию, b) по невозрастанию, c) случайным образом. Методы сортировки: 1) алгоритм простого обмена; 2) улучшенный алгоритм простого обмена; 3) алгоритм простого выбора; 4) алгоритм прямого включения; 5) алгоритм слияния; Заполнить таблицу в тетради. Лабораторная работа №4. Быстрые алгоритмы сортировки Цель работы: проработка классических быстрых алгоритмов сортировки, самостоятельное составление программ, использующих быстрые алгоритмы сортировки. Примерные задания: 1) Написать полную программу быстрой сортировки Хоара. 2) Написать полную программу пирамидальной сортировки массива. 3) Дополнить таблицу, заполненную в предыдущей лабораторной работе данными по быстрой сортировке Хоара и пирамидальной сортировке. Лабораторная работа №5. Различные алгоритмы сортировки Цель работы: проработка различных классических алгоритмов сортировки, самостоятельное составление программ, использующих алгоритмы сортировки. Примерные задания: 1) Имеется массив целых чисел a[1]...a[n], причем все числа неотрицательны и не превосходят m. Отсортировать этот массив; число действий порядка m+n. Идея решения: Для каждого числа от 0 до m подсчитаем, сколько раз оно встречается в массиве. После этого исходный массив можно стереть и заполнить заново в порядке возрастания, используя сведения о кратности каждого числа. 2) В массиве a[1]...a[n] целых чисел переставить элементы так, чтобы четные числа шли перед нечетными (не меняя взаимный порядок в каждой

19


из групп). Идея решения: Сначала спишем (во вспомогательный массив) все четные, а потом – все нечетные. 3) Дан массив a[1..n] и число b. За минимальное число действий переставить числа в массиве так, чтобы сначала стояли числа, меньшие b, затем равные b, а потом большие b. Самостоятельная аудиторная работа по теме учебной дисциплины № п/п

Вид самостоятельной работы Общая

1

Форма самостоятельной работы Проработка конспекта лекции; подготовка к проверочной работе; самостоятельное решение задач

Форма отчетности Конспект лекции; письменная проверочная работа; отчет по лабораторной работе

Самостоятельная внеаудиторная работа по теме учебной дисциплины № п/п 1

Вид самостоятельной работы Общая

Форма самостоятельной работы Работа с первоисточниками; подготовка к лабораторным занятиям

Срок сдачи

Форма отчетности

4-5-я неделя семестра

Доклад на 3 минуты, отчет по лабораторной работе

Тема 3. Алгоритмы поиска Аудиторные занятия Лекция 4. Поиск информации в массиве План лекции: 1. Задачи поиска информации, их практическая значимость. 2. Последовательный (линейный) поиск. Реализация алгоритма для поиска в массиве. 3. Барьерный поиск. 4. Бинарный поиск. Лекция 5. Алгоритмы поиска подстроки в строке План лекции: 1. Прямой поиск. 2. Алгоритм Бойера–Мура. 20


3. Алгоритм Рабина. 4. Алгоритм Кнута–Мориса–Пратта (упрощенный, усложненный). Лабораторная работа №6. Алгоритмы поиска в массиве Цель работы: проработка алгоритмов поиска данных, самостоятельное составление программ, использующих алгоритмы поиска в массиве. Примерные задания: 1) Реализовать стандартные алгоритмы: a. линейного поиска, b. линейного поиска с использованием барьера, c. бинарного поиска. Алгоритмы линейного (без барьера) и бинарного поиска нужно реализовать в двух вариантах – для одномерного и для двумерного массивов. Подсчитать количество производимых сравнений в каждом методе при различных исходных массивах (из 100 элементов):  случайном (кроме бинарного поиска),  когда искомый элемент расположен первым,  когда искомый элемент расположен последним,  когда искомый элемент расположен в середине,  когда искомого элемента нет. Составить таблицу в тетради. 2) Дан массив, элементы которого упорядочены по неубыванию значений и по столбцам, и по строкам (считывайте массив из файла). Используя идею бинарного поиска определить, есть ли в массиве элемент, равный x. Лабораторная работа №7-8. Алгоритмы поиска подстроки в строке Цель работы: проработка алгоритмов поиска подстроки в строке, самостоятельное составление программ, использующих алгоритмы поиска в строке. Примерные задания: 1) Определить, содержит ли строка S символ c. Программа должна содержать две процедуры поиска – в одной используется стандартная функция Pos(), во второй – эта функция не используется, поиск производится линейно. Если содержит – вывести на экран индекс первого вхождения. 2) Не используя функцию Pos(), определить, содержит ли строка S подстроку st. Поиск производить линейно. Если содержит – вывести на экран индекс первого символа первого вхождения.

21


3) Написать процедуру поиска подстроки в строке, использующую алгоритм Бойра-Мура, исходными данными в которой являются две строки st1 и st2, а результатом – 0, если st2 не является подстрокой строки st1, и номер символа, с которого начинается первое вхождение подстроки st2 в строку st1 в противном случае. Процедура должна содержать подробные комментарии. Выполнить трассировку алгоритма для st1=’aabcabdaheabcabbabcabcf’, st2=’abcabc’ (отметить порядок сравнения символов строки и подстроки, показать дополнительно используемые структуры). 4) Написать процедуру поиска подстроки в строке, использующую упрощенный алгоритм Рабина, исходными данными в которой являются две строки st1 и st2, а результатом – 0, если st2 не является подстрокой строки st1, и номер символа, с которого начинается первое вхождение подстроки st2 в строку st1 в противном случае. Процедура должна содержать подробные комментарии. Выполнить трассировку алгоритма для st1=’aabcabdaheabcabbabcabcf’, st2=’abcabc’ (отметить порядок сравнения символов строки и подстроки, показать дополнительно используемые структуры). 5) Написать процедуру поиска подстроки в строке, использующую упрощенный алгоритм Кнута-Мориса-Пратта, исходными данными в которой являются две строки st1 и st2, а результатом – 0, если st2 не является подстрокой строки st1, и номер символа, с которого начинается первое вхождение подстроки st2 в строку st1 в противном случае. Процедура должна содержать подробные комментарии. Выполнить трассировку алгоритма для st1=’aabcabdaheabcabbabcabcf’, st2=’abcabc’ (отметить порядок сравнения символов строки и подстроки, показать дополнительно используемые структуры). 6) Написать процедуру поиска подстроки в строке, использующую усложненный алгоритм Кнута-Мориса-Пратта, исходными данными в которой являются две строки st1 и st2, а результатом – 0, если st2 не является подстрокой строки st1, и номер символа, с которого начинается первое вхождение подстроки st2 в строку st1 в противном случае. Процедура должна содержать подробные комментарии. Выполнить трассировку алгоритма для st1=’aabcabdaheabcabbabcabcf’, st2=’abcabc’ (отметить порядок сравнения символов строки и подстроки, показать дополнительно используемые структуры). Самостоятельная аудиторная работа по теме учебной дисциплины Вид № самостоятельной Форма самостоятельной работы п/п работы 1 Общая Лабораторно-практические занятия; подготовка к проверочной работе; самостоятельное решение задач

22

Форма отчетности Отчет по лабораторной работе; письменная проверочная работа


Самостоятельная внеаудиторная работа по теме учебной дисциплины № п/п

Вид самостоятельной работы

1

Общая

Форма самостоятельной работы Подготовка к лабораторным занятиям

Срок сдачи

Форма отчетности

6-7-я неделя семестра

Отчет по лабораторной работе

Тема 4. Рекурсия. Перебор и методы его сокращения Аудиторные занятия Лекция 6. Общая схема перебора План лекции: 1. Общая схема перебора с возвратом. 2. Дерево поиска. 3. Демонстрация общей схемы перебора на примере задачи о расстановке ферзей. Лекция 7. Примеры задач на применение перебора с возвратом План лекции: 1. «Задача о шахматном коне». 2. «Задача о лабиринте». 3. «Задача о рюкзаке». 4. «Задача о коммивояжере». Лабораторная работа № 9-10. Перебор с возвратом: расстановке ферзей», «Задача о шахматном коне»

«Задача

о

Цель работы: проработка идеи перебора с возвратом на примере классических задач. Примерные задания: 1) На шахматной доске n*n требуется найти способы (все способы) расстановки n ферзей, не атакующих друг друга. 2) Какое наименьшее число ферзей можно расставить на доске так, чтобы они держали под боем все свободные поля? Модификация задачи: найти расстановку ферзей, которая одновременно решает задачу для досок 9*9, 10*10 и 11*11. 3) Расставить на доске N*N (N<=12) N ферзей так, чтобы наибольшее число ее полей оказалось вне боя ферзей. 23


4) Расставить на доске как можно больше ферзей так, чтобы при снятии любого из них появлялось ровно одно неатакованное поле. 5) За какое наименьшее число ходов ферзь может обойти все поля доски 8*8? 6) Расставить на доске 8*8 максимальное число ферзей так, чтобы каждый из них нападал ровно на р (р<=2) ферзей. 7) Найти обход конем доски n*m. Конь должен побывать на каждой клетке доски только один раз. Начальная позиция коня произвольна. Модификация задачи. Для каждого начального расположения коня найти количество способов обхода доски. 8) Задача о коне Аттилы («Трава не растет там, где ступил мой конь!»). На шахматной доске стоят белый конь и черный король. Некоторые поля доски считаются «горящими». Конь должен дойти до неприятельского короля, повергнуть его и вернуться на исходное место. При этом ему запрещено становиться как на горящие поля, так и на поля, которые уже пройдены. 9) Магараджа – это фигура, которая объединяет в себе ходы коня и ферзя. Для доски 10*10 найти способ расстановки 10 мирных магараджей. Лабораторная работа № 11-12. Перебор с возвратом: «Задача о лабиринте», «Задача о рюкзаке», «Задача о коммивояжере» Цель работы: проработка идеи перебора с возвратом на примере классических задач. Примерные задания: 1) Задача о лабиринте. Дано клеточное поле n*m, начальная и конечная клетки. Часть клеток занято препятствиями. За один ход можно перемещаться в одну из свободных клеток по горизонтали или по вертикали. Найти путь, если он существует, из начальной клетки в конечную клетку. Модификация задачи. Найти все способы выхода из лабиринта или кратчайший (количество шагов) выход. 2) Задача о рюкзаке. Даны предметы n различных типов. Количество предметов каждого типа не ограничено. Каждый предмет типа i имеет вес wi и стоимость vi, i=1,2, …n. Определить максимальную стоимость груза, вес которого равен W. 3) Задача о коммивояжере. Классическая формулировка задачи известна уже более 200 лет: имеются n городов, расстояния между которыми заданы; коммивояжеру необходимо выйти из какого-то города, посетить остальные n-1 городов точно по одному разу и вернуться в исходный город. При этом маршрут коммивояжера должен быть минимальной длины (стоимости). 4) Пронумеровать позиции в матрице (таблице) размером 5*5 следующим образом. Если номер i (1i25) соответствует позиции с координатами (х,у), вычисляемыми по одному из следующих правил: 24


 (z, w)=(x3, y);  (z, w)=(x, y3);  (z, w)=(x2, y2). Требуется:  написать программу, которая последовательно нумерует позиции матрицы 5*5 при заданных координатах позиции, в которой поставлен номер 1 (результаты должны быть представлены в виде заполненной матрицы);  вычислить число всех возможных расстановок номеров для всех начальных позиций, расположенных в правом верхнем треугольнике матрицы, включая ее главную диагональ. Самостоятельная аудиторная работа по теме учебной дисциплины Вид № самостоятельной Форма самостоятельной работы п/п работы 1 Общая Лабораторно-практические занятия; подготовка к контрольной работе; самостоятельное решение задач

Форма отчетности Отчет по лабораторной работе; письменная контрольная работа

Самостоятельная внеаудиторная работа по теме учебной дисциплины № п/п

Вид самостоятельной работы

1

Общая

Форма самостоятельной работы Подготовка к лабораторным занятиям: подготовка к контрольной работе

Срок сдачи

Форма отчетности

8-10-я неделя семестра

Отчет по лабораторной работе

Тема 5. Динамическое программирование Аудиторные занятия Лекция 8. Метод динамического программирования План лекции: 1. Идея метода динамического программирования. 2. Примеры задач на применение метода динамического «Алгоритм Нудельмана–Вунша». 3. Примеры решения задач «Разбиение выпуклого N-угольника», «Задача о рюкзаке».

25


Лабораторная работа № 13. «Треугольник», «Степень числа»

Динамическое

программирование:

Цель работы: проработка идеи динамического программирования на примере классических задач. Примерные задания: 1) Реализовать классическую задачу о треугольнике. 2) Реализовать классическую задачу о степени числа. 3) Черепашка находится в городе, все кварталы которого имеют прямоугольную форму и ей необходимо попасть с крайнего северозападного перекрестка на крайний юго-восточный. На некоторых улицах проводится ремонт и по ним запрещено движение, стоимость проезда по остальным улицам задается. Кроме того, для каждого перекрестка определена стоимость поворота. Найти для черепашки маршрут минимальной стоимости. Исходные данные:  N – количество перекрестков, определяется через 2 числа l, m и N=l*m (l<11, m<11);  стоимость проезда и стоимость поворота на перекрестках – целые числа. Лабораторная работа № 14. Динамическое программирование: «Алгоритм Нудельмана–Вунша», «Разбиение выпуклого N-угольника», «Задача о рюкзаке» Цель работы: проработка идеи динамического программирования на примере классических задач. Примерные задания: 1) Реализовать классическую задачу «Алгоритм Нудельмана–Вунша». 2) Реализовать классическую задачу о разбиении выпуклого N-угольника. 3) Реализовать классическую задачу о рюкзаке. Самостоятельная аудиторная работа по теме учебной дисциплины Вид № самостоятельной Форма самостоятельной работы п/п работы 1 Общая Лабораторно-практические занятия; подготовка к проверочной работе; самостоятельное решение задач

Форма отчетности Отчет по лабораторной работе; письменная проверочная работа

Самостоятельная внеаудиторная работа по теме учебной дисциплины 26


№ п/п

Вид самостоятельной работы

1

Общая

Форма самостоятельной работы Изучение дополнительной литературы по теме; подготовка к лабораторным занятиям

Срок сдачи

Форма отчетности

11-я неделя семестра

Отчет по лабораторной работе

Тема 6. Структуры данных «Линейный список», «Стек», «Очередь» Аудиторные занятия Лекция 9. Структура данных «Линейный список» План лекции: 1. Указатели, ссылочный тип данных. 2. Основные операторы для работы с указателями. 3. Сравнение статических и динамических типов данных. 4. Списочные структуры данных (типы, основные операции) и методы работы с ними. 5. Реализация линейного списка через массив и с использованием указателей. Сравнение способов реализации. Лекция 10. Структура данных «Стек» План лекции: 1. Стек. Определение. 2. Основные операции. 3. Реализация с использованием массивов и указателей. 4. Примеры использования. Лекция 11. Структура данных «Очередь» План лекции: 1. Очередь. Определение. 2. Основные операции. 3. Реализация с использованием массивов и указателей. 4. Примеры использования. Лабораторная работа № 15. Структура данных «Линейный список»

27


Цель работы: изучение структуры данных «Линейный список», основных операций работы с ним (формирование, обход), способов обработки. Примерные задания: 1) Составить программу формирования линейного списка случайных чисел. Размер списка задается константой. Написать функцию, определяющую сумму элементов сформированного списка. 2) Составить программу формирования линейного списка, элементы которого вводятся с клавиатуры. Количество элементов заранее неизвестно, признак окончания ввода 0. Написать функцию, определяющую среднее арифметическое значение элементов полученного списка. 3) Составить программу формирования линейного списка, элементы которого вводятся с клавиатуры. Количество элементов заранее неизвестно, признака окончания ввода нет. Определить значение максимального элемента сформированного списка. 4) Даны два списка (формируются считыванием из файлов, количество элементов в них может быть различным). Сформировать третий список из исходных двух: каждый элемент третьего списка равен сумме соответствующих элементов первых двух списков. 5) Описать процедуру, которая по списку С строит два новых списка: С1 – из положительных элементов в том же порядке, что и в списке С, и С2 – из отрицательных элементов в обратном порядке. Лабораторная работа № 16. Структура данных «Линейный список» Цель работы: изучение структуры данных «Линейный список», основных операций работы с ним (вставка, удаление), способов обработки. Примерные задания: 1) Составить программу формирования линейного списка целых чисел, элементы которого считываются из текстового файла (элементы в файле записаны в строку), и сформировать из них список, упорядоченный по неубыванию значений элементов (рекурсивная и нерекурсивная реализации). 2) Описать процедуру объединения двух упорядоченных по неубыванию списков, формирующую новый упорядоченный по неубыванию список. 3) Имеются два списка, элементами которых являются целые числа. Удалить из первого списка элементы, стоящие за первым вхождением заданного элемента x и вставить их в начало второго списка. 4) Сформировать список из n целых чисел. Удалить из него все числа, равные введенному z, до первого нуля. 5) Описать процедуру, которая вставляет новый элемент x перед каждым вхождением заданного элемента z.

28


Лабораторная работа № 17. Структура данных «Стек» Цель работы: изучение структуры данных «Стек», основных операций работы с ним, способов обработки. Примерные задания: 1) Написать программу, проверяющую своевременность закрытия скобок в строке символов. 2) Вычислить значение выражения, представленного в обратной польской записи: а) обрабатываются только цифры; б) обрабатываются положительные и отрицательные целые числа; в) обрабатываются вещественные числа; Лабораторная работа № 18. Структура данных «Очередь» Цель работы: изучение структуры данных «Очередь», основных операций работы с ней, способов обработки. Примерные задания: 1) За один просмотр файла f, элементами которого являются целые числа, без использования дополнительных файлов переписать его элементы во второй файл так, чтобы первоначально в каждой строке были записаны отрицательные числа, затем числа, равные 0, а затем положительные числа. 2) Написать программу, которая из текстового файла, разбитого на строки, переписывает все содержимое в другой текстовый файл, перемещая заглавные гласные латинские буквы каждой строки с сохранением их порядка следования в конец этой строки. 3) Дана непустая последовательность слов (строка), между которыми стоит пробел, за последним словом – точка. Вывести с сохранением исходного взаимного порядка три группы слов: слова, не содержащие цифр; слова, содержащие ровно три цифры и слова, полностью состоящие из цифр. Элементы второй и третьей групп могут повторяться. Самостоятельная аудиторная работа по теме учебной дисциплины Вид № самостоятельной Форма самостоятельной работы п/п работы 1 Общая Проработка конспекта лекции; подготовка к проверочной работе

Форма отчетности Конспект лекции; письменная проверочная работа

Самостоятельная внеаудиторная работа по теме учебной дисциплины 29


№ Вид самостоятельной работы п/п 1

Общая

Форма самостоятельной работы Изучение материала, вынесенного на самостоятельную проработку; подготовка к лабораторным занятиям

Срок сдачи

Форма отчетности

12-14-я неделя семестра

Доклад на 3 минуты

Тема 7. Структура данных «Дерево поиска» Аудиторные занятия Лекция 12. Эффективность функционирования вычислительных систем План лекции: 1. Определение. 2. Основные операции. 3. Двоичное дерево поиска. Реализация основных операций. Лекция 13. Сбалансированные деревья План лекции: 1. АВЛ-деревья. Способы реализации, примеры использования. 2. 2-3 деревья. Способы реализации, примеры использования. 3. Б-деревья. Способы реализации, примеры использования. 4. Красно-черные деревья. Способы реализации, примеры использования. Лабораторная работа № 19. Двоичные деревья поиска Цель работы: изучение структуры данных «Двоичное дерево поиска», основных операций работы с ним, способов обработки. Примерные задания: 1) Написать программу, подсчитывающую произведение положительных элементов двоичного дерева. 2) Написать программу, в которой реализована функция, которая находит максимальный элемент непустого сформированного двоичного дерева. 3) Написать программу, в которой реализована логическая функция, входными параметрами которой являются два сформированных двоичных дерева, проверяющую на равенство эти деревья.

30


4) Написать программу, в которой реализована логическая функция, проверяющая, есть ли в непустом двоичном дереве хотя бы два одинаковых элемента. 5) Создать двоичное дерево. Для заданного числа х, если оно есть присутствует в дереве, найти количество элементов дерева, больших x. 6) Создать двоичное дерево Т. Поэлементно построить дерево Т1 – копию дерева Т. 7) Написать программу, подсчитывающую число листьев в двоичном дереве. 8) Написать программу, подсчитывающую высоту дерева. 9) Написать программу, формирующую двоичное дерево поиска считыванием из текстового файла. Вершина дерева состоит из 4 полей: информационного поля data (значение которого в дереве уникально), счетчика числа повторений count и указателей на левое и правое поддеревья left и right. Разработать функцию, определяющую с помощью сформированного дерева количество вхождений заданного значения в исходный текстовый файл. 10) Разработать функцию, возвращающую значение указателя на второй максимальный элемент. 11) Написать процедуры работы с двоичным деревом поиска, в описании вершины которого добавлены два поля типа integer для фиксации высот левого и правого поддеревьев. 12) Удалить все вершины, находящиеся на n-ном уровне в исходном двоичном дереве. 13) Информационное поле вершины (типа String) формируемого двоичного дерева поиска содержит слово. Сформировать два дерева из слов текстов, хранящихся в двух разных текстовых файлах и удалить из первого дерева все слова, содержащиеся во втором дереве, распечатать получившееся первое дерево слева направо (т. е. вывести по алфавиту слова первого текста, не содержащиеся во втором тексте). 14) Написать программу, подсчитывающую число вершин на n-ом уровне непустого дерева. 15) Постройте частотный словарь слов для текста, записанного в файле. Лабораторная работа № 20. Сбалансированные деревья Цель работы: изучение различных видов сбалансированных деревьев, основных операций работы с ними, способов обработки. Примерные задания: 1) Реализуйте программу работы с АВЛ-деревом (вставка, удаление, левая и правая балансировка). 2) Реализуйте программу работы с красно-черным деревом. 3) Реализуйте программу работы с 2-3деревом. 4) Реализуйте программу работы с Б-деревом.

31


Самостоятельная аудиторная работа по теме учебной дисциплины Вид № самостоятельной Форма самостоятельной работы п/п работы 1 Общая Проработка конспекта лекции; подготовка к проверочной работе; самостоятельное решение задач

Форма отчетности Доклад на 3 минуты, отчет по лабораторным работам, письменная проверочная работа

Самостоятельная внеаудиторная работа по теме учебной дисциплины № п/п

Вид самостоятельной работы

1

Общая

Форма самостоятельной работы Реферат; подготовка к лабораторным занятиям

Срок сдачи

Форма отчетности

15-я неделя семестра

Доклад на 3 минуты, отчет по лабораторным работам

Тема 8. Структура данных «Множество» Аудиторные занятия Лекция 14. Структура данных «Множество» План лекции: 1. Множественный тип данных, особенности, операции и функции, определенные над множествами. 2. Типы задач, решаемые с помощью множеств. Лабораторная работа № 21. Множества Цель работы: ввести понятие множества; изучить операции, процедуры и функции, определённые над множествами; рассмотреть способы описания и формирования множеств; научиться применять их для решения конкретных задач. Примерные задания: 1) Считать с экрана произвольное число символов ‘A’ ..‘Z’ и вывести их на экран в алфавитном порядке. 2) Дан текст. Вывести на экран  все цифры, которые в нем не встречаются;  все встречающиеся в нем знаки препинания;  сумму цифр этого текста. 3) Дано предложение: найти количество гласных и согласных букв. 32


4) Дан текст. Вывести те буквы (английского алфавита), которых в нем нет. 5) Даны две строки. Найти повторяющиеся символы. 6) Дана строка. Надо получить квадрат числа, которое образуется цифрами данной строки, расположенными по возрастанию. 7) Заполнить массив 5*5 случайным образом неповторяющимися числами от 0 до 24. 8) Найти простые числа в промежутке [0..255] без использования операции нахождения остатка. 9) Составить программу поиска простых чисел в числовом промежутке [1..n], используя алгоритм «Решето Эратосфена». Число N вводится с клавиатуры. 10) МУХА+МУХА=СЛОН. Решить ребус. 11) ТРИ+ДВА=ПЯТЬ. Решить ребус. Самостоятельная аудиторная работа по теме учебной дисциплины Вид № самостоятельной Форма самостоятельной работы п/п работы 1 Общая Проработка конспекта лекции; подготовка к проверочной работе; самостоятельное решение задач

Форма отчетности Конспект лекции; письменная проверочная работа; отчет по лабораторной работе

Самостоятельная внеаудиторная работа по теме учебной дисциплины № п/п 1

Вид самостоятельной работы Общая

Форма самостоятельной работы Подготовка к лабораторным занятиям

Срок сдачи

Форма отчетности

16-я неделя семестра

Отчет по лабораторной работе

Тема 9. Структура данных «Очередь с приоритетом» Аудиторные занятия Лекция 15. Структура данных «Очередь с приоритетом» План лекции: 1. Определение, основные операции, реализация. 2. Примеры использования. 3. Расширения очереди с приоритетом.

33


Лабораторная работа № 22. Очередь с приоритетом Цель работы: изучение структуры данных «Очередь с приоритетом», основных операций работы с ней, способов обработки. Примерные задания: 1) Реализовать очередь с приоритетом с помощью массивов. 2) Реализовать очередь с приоритетом с помощью связанного списка. Лабораторная работа № 23. Очередь с приоритетом Цель работы: изучение структуры данных «Очередь с приоритетом», основных операций работы с ней, способов обработки. Примерные задания: 1) Реализовать очередь с приоритетом с помощью частично упорядоченных деревьев. 2) Реализовать очередь с приоритетом с помощью массивов. Самостоятельная аудиторная работа по теме учебной дисциплины Вид № самостоятельной Форма самостоятельной работы п/п работы 1 Общая Дополнение конспекта рекомендованной литературой; лабораторно-практические занятия; подготовка к контрольной работе; самостоятельное решение задач

Форма отчетности Отчет по лабораторной работе; письменная контрольная работа

Самостоятельная внеаудиторная работа по теме учебной дисциплины № п/п 1

Вид самостоятельной работы Общая

Форма самостоятельной работы

Срок сдачи

Форма отчетности

Подготовка к лабораторным занятиям; изучение дополнительной литературы по теме; подготовка к контрольной работе

17-18-я неделя семестра

Отчет по лабораторной работе

Перечень вопросов для самостоятельного изучения и рекомендации по выполнению заданий 1. Тема: «Основные алгоритмические конструкции» 34


Вопросы для самостоятельного изучения: 1. Значение базовых алгоритмических конструкций, их реализация в языке Паскаль. 2. Реализация конструкции следования, составной оператор. 3. Реализация конструкции ветвления, операторы IF, CASE. 4. Реализация цикла с параметром, оператор FOR. 5. Реализация циклов с предусловием и постусловием, операторы WHILE и REPEAT-UNTIL. Литература (номера источников литературы из п. 5): 5–18 2. Тема: «Подпрограммы» Вопросы для самостоятельного изучения: 1. Понятия «подпрограмма», «процедура» и «функция». 2. Роль процедур и функций в реализации идеи структурного программирования. 3. Механизм передачи параметров. 4. Формальные и фактические параметры, параметры – переменные и параметры-значения, глобальные и локальные переменные. 5. Стандартные (встроенные) процедуры и функции языка. 6. Стандартные библиотечные модули. Литература (номера источников литературы из п. 5): 5–18 3. Тема: «Простые и составные типы данных» Вопросы для самостоятельного изучения: 1. Понятие и назначение типа данных. 2. Система типов в языке Паскаль. Простые типы данных. 3. Структурирование данных. Составные типы данных. 4. Массив как основная структура данных. Элемент и индекс массива. Описание массива. 5. Поэлементная обработка массивов. Использование циклов. 6. Одномерные массивы. Работа с элементами массива. 7. Процедуры формирования и вывода массивов. Способы формирования массивов. 8. Понятие размерности массивов. Двумерные массивы: формирование, обработка. Многомерные массивы. Литература (номера источников литературы из п. 5): 5–18 4. Тема: «Составные типы данных: файлы, строки и записи» Вопросы для самостоятельного изучения: 1. Файлы: понятие файловой переменной, ее назначение, типизированные и текстовые файлы, формирование и вывод файла, особенности работы с текстовыми файлами. 2. Строки: строковая переменная; двойственный характер строки; операции, функции, процедуры, определенные над строковыми переменными. 35


3. Комбинированный тип данных – записи: доступ к элементам записи, обработка записей и решение задач с использованием массива записей. Литература (номера источников литературы из п. 5): 5–18 5. Тема: «Рекурсия» Вопросы для самостоятельного изучения: 1. Рекурсия. 2. Примеры решения задач. Литература (номера источников литературы из п. 5): 5–18 Примерная тематика рефератов 1. Методы анализа алгоритмов. 2. «Карманная» сортировка. 3. Метод ветвей и границ. 4. Метод «решета». 5. Раскраски графа. 6. Потоки в сетях, паросочетания. 7. Алгоритм Эйлера и его применение. 8. Алгоритм Кристофидеса и его применение. 9. Способы реализации линейных списков. 10. Способы реализации стека и очереди. 11. Реализация множеств с помощью связанных списков. 12. Реализация словарей. 13. Нагруженные деревья. 14. Применение классических алгоритмов на графах к ориентированным графам. 15. Сильная связанность в графе. Форма текущего контроля по теме: контрольные работы, выполняемые за компьютером, письменные проверочные работы Материалы текущего контроля: 1. «Задача о камнях». Из камней весом p1, p2,… pN набрать вес W или, если это невозможно, максимально близкий к W снизу вес. 2. Автозаправка. Вдоль кольцевой дороги расположено M городов, в каждом из которых есть автозаправочная станция. Известна стоимость Z[i] заправки в городе с номером i и стоимость C[i] проезда по дороге, соединяющей i-й и (i-1)-й города, C[M] – стоимость проезда между первым и M-м городами. Для жителей каждого города определить город, в который им необходимо съездить, чтобы заправиться самым дешевым образом, и направление – «по часовой стрелке» или «против часовой стрелки», города пронумерованы по часовой стрелке. 3. «Канадские авиалинии» (формулировка см. [4] стр. 121–122). 36


4. «Ресторан» (формулировка см. [4] стр. 124–125). 5. Задан неориентированный граф. При прохождении по некоторым ребрам отдельные (определенные заранее) ребра могут исчезать или появляться. Найти кратчайший путь из вершины с номером q в вершину с номером w. 6. Задан ориентированный граф с N вершинами, каждому ребру приписан неотрицательный вес. Требуется найти простой цикл, для которого сребнее геометрическое весов его ребер было бы минимально. 7. Задан ориентированный граф с N (1≤N≤33) вершинами, пронумерованными целыми числами от 1 до N. Напишите программу, которая подсчитывает количество различных путей между всеми парами вершин графа. 8. По данному на рисунке (индивидуально) графу составить матрицу смежности, матрицу инциденций, список ребер и списки связи. 9. По приведенной матрице смежности нарисовать граф. 10.По приведенным спискам связи нарисовать граф. 11.По данному на рисунке (индивидуально) графу выполнить обход методом поиска в ширину, начиная с вершины с номером 1. 12.По данному на рисунке (индивидуально) графу выполнить обход методом поиска в глубину, начиная с вершины с номером 1.

37


5. ПЕРЕЧЕНЬ ОСНОВНОЙ И ДОПОЛНИТЕЛЬНОЙ ЛИТЕРАТУРЫ Основная литература: 1. Окулов С. М. Дискретная математика. Теория и практика решения задач по информатике: учебное пособие / С.М. Окулов.– М.: БИНОМ. Лаборатория знаний, 2008. 2. Основы программирования: учебник. – 5-е изд., испр. – М.: БИНОМ. Лаборатория знаний, 2010. 3. Теория и практика решения задач по информатике: учебное пособие / С. М. Окулов. - Москва: БИНОМ. Лаборатория знаний, 2011 Дополнительная литература: 4. Ахо А. В., Хопкрофт Д., Ульман Д. Д. Структуры данных и алгоритмы: Пер. с англ. : Уч. пос. – М.: Издательский дом «Вильямс», 2007. 5. Бабушкина И. А., Бушмелева Н. А., Окулов С. М., Черных С. Ю. Конспекты занятий по информатике (Практикум по Турбо Паскалю): учебное пособие. – Киров: Изд-во ВГПУ, 1997. 6. Балдин К. В., Уткин В. Б. Информатика. Учебник для вузов. – М.: Проект, 2003. 7. Ван Тассел Д. Стиль, разработка, эффективность, отладка и испытание программ. – М., 1981. 8. Вирт Н. Алгоритмы + структура данных = программы. – М., 1985. 9. Вирт Н. Язык программирования Паскаль. – М.: Статистика, 1974. 10. Дейкстра Э. Дисциплина программирования.– М., 1978. 11. Залогова Л.А., Плаксин М.А., Русаков С.В. Информатика. Задачникпрактикум в 2 т. / Под ред. И.Г. Семакина, Е.К. Хеннера – 3 изд., испр. и доп. – М.: Бином. Лаборатория знаний, 2006. 12. Информатика: энциклопедический словарь для начинающих / сост. Д.А.Поспелов. – М.: Педагогика-Пресс, 1994. 13. Кнут Д. Искусство программирования для ЭВМ. – М.: Мир, 1978. 14. Кормен Т. и др. Алгоритмы: построение и анализ. – М.: МЦНМО, 1999. 15. Лахтин А. С. Языки и технологии программирования: Начальный курс: учебное пособие. – Екатеринбург, 1998. 16. Могилев А.В. и др. Информатика: учебн. пос. для студ. пед.вузов / Под ред. Е.К.Хеннера. – М. : АCADEMIA, 1999. 17. Окулов С. М. Программирование в алгоритмах. – М.: БИНОМ. Лаборатория знаний, 2004. 18. Окулов С. М. Основы программирования: учебное пособие. – Киров: Издво ВГПУ, 2001. 19. Пильщиков В. Н. Сборник упражнений по языку Паскаль [Текст]: учебное пособие для вузов / В. Н. Пильщиков. – М.: Наука, 1989. 20. Порублев И. Н., Ставровский А. Б. Алгоритмы и программы. Решение олимпиадных задач. – М.: Диалектика, 2007. 21. Торгашова Н. Э. Алгоритмы сортировки и поиска на занятиях по информатике: учебное пособие. – Киров, 1994. 38


22. Шень А. Программирование: теоремы и задачи. – М.: МЦНМО, 1995. – 398 с. Программное обеспечение и интернет-ресурсы Среда программирования Delphi 7.0 или аналог.

6. СИСТЕМА ОЦЕНКИ КАЧЕСТВА ОСВОЕНИЯ СТУДЕНТАМИ УЧЕБНОЙ ДИСЦИПЛИНЫ «КЛАССИЧЕСКИЕ АЛГОРИТМЫ И СТРУКТУРЫ ДАННЫХ» И ФОРМЫ ТЕКУЩЕГО, ПРОМЕЖУТОЧНОГО И ИТОГОВОГО КОНТРОЛЯ 6.1. Шкала баллов по учебной дисциплине В соответствии с Положением о балльно-рейтинговой системе оценки знаний студентов ВятГГУ по учебной дисциплине предусмотрены следующие виды контроля качества знаний студентов: – текущая аттестация; – межсессионная аттестация; – промежуточная аттестация. Шкала баллов по учебной дисциплине № п/п

Показатели

Норма баллов

Виды текущей аттестации до межсессионной аттестации 1 2 3 4

Посещение аудиторных занятий Контрольная работа Лабораторная работа Межсессионная аттестация (контрольное мероприятие): тест Виды текущей аттестации после межсессионной аттестации

9 5 21 10

5 6 7

Посещение аудиторных занятий Контрольная работа Лабораторная работа

8 5 22

Виды работ и заданий на экзамене 8 9 10

Теоретический вопрос Практическое задание Всего баллов за экзамен Итого:

10 10 20 100

39


6.2. Фонды оценочных средств для проведения текущего контроля успеваемости и промежуточной аттестации Сводные данные по оценке компетенций № п/п

Результат (освоенные компетенции)

1.

ОК-8

2.

ОК-12

3.

ПК-1

Основные показатели оценки результата

Виды контроля*

1) знает предмет и специфику дисциплины, а так же основные разделы и направления, методы и приемы решения задач; 2) умеет применять полученные знания для анализа конкретнонаучных и профессиональных проблем, анализировать и оценивать информацию, теоретически и логически грамотно выражать свои мысли в виде программного кода; 3) владеет навыками аргументированного изложения собственного способа решения задач, навыками критического восприятия информации. 1) знает понятие информации, методы, способы и средства получения, хранения и переработки информации; 2) умеет работать с компьютером при управлении информацией; 3) владеет методами, способами и средствами получения, хранения, переработки информации; навыками работы с компьютером как средством управления информацией. 1) знает современные языки программирования, библиотеки и пакеты программ, современные профессиональные стандарты информационных технологий; 2) умеет применять в профессиональной деятельности современные языки программирования, электронные библиотеки и коллекции, библиотеки и пакеты программ, современные профессиональные стандарты информационных технологий;

п

40

в т р п

т р п

Номер раздела / темы (для текущего контроля) Зачет Темы 1–3, Контрольная темы 7–8 работа Формы и методы контроля

Контрольная Темы 1–9 работа Контрольная работа Проверочная работа Зачет

Контрольная Темы работа 6-9 Проверочная работа Зачет

1-3,


4.

5.

ПК-2

ПК-3

3) владеет способами применения базовых знаний на практике. 1) знает, как разработать алгоритмические и программные решения в области прикладного программирования; математические, информационные и имитационные модели по тематике выполняемых исследований; 2) умеет разрабатывать алгоритмические и программные решения в области прикладного программирования; математических, информационных и имитационных модели по тематике выполняемых исследований; разрабатывать тесты и средства тестирования систем и средств на соответствие стандартам и исходным требованиям; 3) владеет навыками разработки алгоритмических и программных решений в области прикладного программирования; разработки тестов и средств тестирования систем и средств на соответствие стандартам и исходным требованиям; разработки эргономичных человекомашинных интерфейсов. 1) знает понятия жизненного цикла информационных систем, программного обеспечения, сервисов систем информационных технологий; нормативные требованиям для разработки проектной и программной документации; 2) умеет разрабатывать и реализовывать процессы жизненного цикла информационных систем, программного обеспечения, а так же проектную и программную документацию, удовлетворяющей нормативным требованиям; 3) владеет методами и механизмами оценки и анализа 41

т р п

в т р п

Контрольная Темы 2-5 работа Проверочная работа Зачет

Контрольная Темы 6–8 работа Контрольная работа Проверочная работа Зачет


6.

7.

функционирования средств и систем информационных технологий. ПК-17 1) знает методы и базовые т Контрольная Темы 1–9 алгоритмы обработки работа информационных структур, р Проверочная способы описания алгоритмов, работа характеристики алгоритма, п Зачет используемые при его анализе; 2) умеет разрабатывать и анализировать алгоритмы; 3) владеет навыками самостоятельного построения и анализа алгоритма, разработки программы. ПК-19 1) знает парадигмы и методологии в Контрольная Темы 1–9 программирования; концепции, работа синтаксической и семантической т Контрольная организации, методы работа использования современных р Проверочная языков программирования; работа 2) умеет применять в п Зачет профессиональной деятельности современные языки программирования, исправлять синтаксические и семантические ошибки; 3) владеет навыками самостоятельного применения в профессиональной деятельности современных методов использования языков программирования. * в – входной контроль; т – текущая аттестация; р – межсессионная аттестация; п – промежуточная аттестация; и – итоговая аттестация

6.2.1. Входной контроль знаний студентов Примерные задания для проверки знаний студентов Задание №1. Найдите значение выражения 1+1/2+1/3+…+1/220 с точностью до трех знаков после запятой. Задание №2. Найти НОД трех чисел. Задание №3. В данном натуральном числе переставить числа таким образом, чтобы образовалось наименьшее число из записанных этими же цифрами. Задание №4. Пусть даны числа a,b последовательности a,a2, a3, … меньшие b. 42

(a>1).

Получить

все

члены


Задание №5. Дан текстовый файл, содержащий целые числа, организованные в несколько строк. Определить количество строк в файле, а также количество и сумму чисел каждой строки. Задание №6. Определить, есть ли в двумерном массиве столбец с рядом стоящими одинаковыми элементами. Задание №7. Дана фраза: вывести входящие в нее слова в перевернутом виде. Задание №8. Дана фраза: из входящих в нее слов вывести те, которые образуют запись числа. Найти сумму этих чисел. Задание №9. Дана фраза: удалить из нее слова с буквой «о». Задание №10. Написать общий вид условного оператора языка Паскаль. Задание №11. Написать общий вид оператора цикла с параметром языка Паскаль. Задание №12. Написать общий вид оператора цикла с предусловием языка Паскаль. Задание №13. Составить рекурсивную подпрограмму нахождения факториала / степени числа. Задание №14. Составить рекурсивную подпрограмму нахождения максимума (минимума) массива. 6.2.2. Текущая аттестация Примерные задания для проведения текущего контроля представлены в разделе 4 УМК. 6.2.3. Межсессионная аттестация Рубежный контроль проводится в форме проверочной работы (часть заданий – тест, часть – реализация программ и фрагментов программ). Примерные задания для подготовки к рубежной аттестации: Задание № 1 Даны 4 варианта реализации алгоритма поиска целого числа d в одномерном массиве a из N целых чисел. Указать порядок следования их обозначений (A, B, C, D) в соответствии с перечисленным порядком их описаний: последовательный поиск последовательный поиск с барьером 43


бинарный поиск (без рекурсии) бинарный поиск (рекурсивный алгоритм) Вариант A Переменные a:myarray; d:integer описаны глобально Function Poisk(k1, k2:integer): boolean; Var i: integer; Begin If k1<k2 Then begin mid:=(k1+k2) div 2; if a[mid]=d then Poisk:=true else if a[mid]>d then Poisk:=Poisk(k1,mid-1) else Poisk:=Poisk(mid+1,k2); end; Вариант B Function Poisk (a: myarray; d: integer): boolean; Var i: integer; Begin i:=1; While (a[i]<>d) and (i<=N) do i:=i+1; If i<=N then Poisk:=true else Poisk:= false; end; Вариант C Function Poisk (a: myarray; d: integer): boolean; Var i: integer; Begin i:=1; a[n+1]:= d; While (a[i]<>d) do i:=i+1; If i<=N then Poisk:=true else Poisk:= false; end; Вариант D Function Poisk (a: myarray; d: integer): boolean; Var k1, k2, mid: Integer; ok: Boolean; Begin k1:=1; k2:=N; ok:=false; While (k1<=k2) and not ok do begin mid:=(k1+k2) div 2; If a[mid] = d then ok:=true else if a[mid]>d then k2:=mid - 1 else k1:=mid + 1 44


end; Poisk:= ok; end; Варианты ответов: 1) BACD 2) ACBD 3) DBAC 4) BCDA Задание № 2 Бинарный поиск можно реализовать: Варианты ответов: 1) для массива, содержащего только числовые данные 2) для произвольного массива 3) для отсортированного массива 4) для массива, в описании которого зарезервировано место под дополнительный элемент Задание № 3 Поиск с барьером можно реализовать: Варианты ответов: 1) для массива, содержащего только числовые данные 2) для произвольного массива 3) для отсортированного массива 4) для массива, в описании которого зарезервировано место под дополнительный элемент Задание № 4 Даны 4 фрагмента программ. Указать номер фрагмента, который реализует алгоритм сортировки массива методом простого обмена («пузырька»), УСОВЕРШЕНСТВОВАННОГО путем сокращения нерезультативных проходов по массиву Варианты ответов: 1) For i:=1 to n-1 do For j:=1 to n-i do if x[j]>x[j+1] then begin t:=x[j]; x[j]:=x[j+1]; x[j+1]:=t; 45


end; 2) For i:=2 to n do begin d:=x[i]; j:=i-1; While (x[j]>d) and (j>0) do begin x[j+1]:=x[j]; j:=j-1; end; x[j+1]:=d; end; 3) For i:=1 to n-1 do begin max:=x[1]; nmax:=1; For j:=2 to n-i+1 do f x[j]>max then begin max:=x[j]; nmax:=j end; if nmax<>n-i+1 then begin x[nmax]:=x[n-i+1]; x[n-i+1]:=max; end; end; 4) i:=1; k:=1; while (k<>0) do begin k:=0; For j:=1 to n-i do if x[j]>x[j+1] then begin t:=x[j]; x[j]:=x[j+1]; x[j+1]:=t; k:=k+1; end; i:=i+1; end; Задание № 5 Даны 4 фрагмента программ. Указать номер фрагмента, который реализует алгоритм сортировки массива методом простых вставок. Варианты ответов: 46


1) For i:=2 to n do begin d:=x[i]; j:=i-1; While (x[j]>d) and (j>0) do begin x[j+1]:=x[j]; j:=j-1; end; x[j+1]:=d; end; 2) For i:=1 to n-1 do begin max:=x[1]; nmax:=1; For j:=2 to n-i+1 do f x[j]>max then begin max:=x[j]; nmax:=j end; if nmax<>n-i+1 then begin x[nmax]:=x[n-i+1]; x[n-i+1]:=max; end; end; 3) For i:=1 to n-1 do For j:=1 to n-i do if x[j]>x[j+1] then begin t:=x[j]; x[j]:=x[j+1]; x[j+1]:=t; end; 4) i:=1; k:=1; while (k<>0) do begin k:=0; For j:=1 to n-i do if x[j]>x[j+1] then begin t:=x[j]; x[j]:=x[j+1]; x[j+1]:=t; k:=k+1; end; i:=i+1; 47


end; Задание № 6 Дан одномерный массив, считанный из файла. Найти максимальный элемент и его номер, при условии:  все элементы в массиве различные;  в массиве есть повторяющиеся элементы. Задание № 7 Реализовать метод простого обмена по неубыванию. Задание № 8 Реализовать метод сортировки вставками по убыванию. Задание № 9 Отсортировать одномерный массив методом простого выбора возрастанию, найти максимальный элемент и поставить его в конец.

по

Задание № 10 Каков будет массив <12, 78, 4, 2, 9, 3, 15, 1, 5> после первой итерации сортировки массива по невозрастанию при помощи пирамидальной сортировки? Варианты ответов: 1) 78, 12, 4, 2, 9, 3, 15, 1, 5 2) 1, 2 , 3, 4, 5, 9, 12, 15, 78 3) 2, 12, 15, 4, 9, 3, 4, 1, 78 4) 78, 12, 15, 4, 9, 3, 4, 1, 2 Задание № 11 Каков будет массив <12, 78, 4, 2, 9, 3, 15, 1, 5> после первого просмотра в сортировке массива по убыванию при помощи алгоритма Хоара (быстрая сортировка), если в качестве образца выбирается средний элемент массива? Варианты ответов: 1) 12 78 4 2 9 3 15 1 5 2) 12 4 2 9 3 15 1 5 78 3) 1 2 3 4 5 9 12 15 78 4) 5 1 4 2 3 9 15 78 12 Задание № 12 На острове Новой Демократии каждый из жителей организовал партию, которую сам и возглавил. Ко всеобщему удивлению, даже в самой малочисленной партии оказалось не менее двух человек. К сожалению,

48


финансовые трудности не позволили создать парламент, куда вошли бы, как предполагалось по Конституции острова, президенты всех партий. Посовещавшись, островитяне решили, что будет достаточно, если в парламенте будет хотя бы один член каждой партии. Помогите островитянам организовать такой, как можно более малочисленный парламент, в котором будут представлены члены всех партий. Исходные данные: каждая партия и ее президент имеют один и тот же порядковый номер от 1 до n (4n150). Вам даны списки всех N партий острова Новой Демократии. Выведите предлагаемый Вами парламент в виде списка номеров ее членов. Например, для четырех партий: Президенты Члены партий 1 2,3,4 2 3 3 1,4,2 4 2 Задание № 13 Какие из перечисленных ниже задач можно решить методом динамического программирования: 1) Палиндромом называется строка, которая одинаково читается как слева направо, так и справа налево. Подпалиндромом данной строки называется последовательность символов из данной строки, не обязательно идущих подряд, являющаяся палиндромом. Например, HELOLEH является подпалиндромом строки HTEOLFEOLEH. Напишите программу, находящую в данной строке подпалиндром максимальной длины. 2) Дано целое X и массив отсортированных в порядке неубывания целых чисел A[1..n]. Найти такое i, что A[i]=X, или возвратить i=0, если элемента X в массиве нет. 3) Написать программу перевода натурального числа N из десятичной системы счисления в q-ичную (1<q<=9). Результат перевода сохранить в переменной целого типа. Варианты ответов: 1) 1 2) 2 3) 3 4) данные задачи программирования

невозможно

решить

методом

динамического

Задание № 14 Какие из перечисленных ниже задач можно решить методом динамического программирования: 1) Даны два натуральных числа n и k. Найти минимальное количество операций, необходимое для возведения в степень n. Разрешается 49


использовать операции умножения и возведения в степень, круглыми скобками и переменной с именем k. Умножение считается одной операцией, возведению в степень q соответствует q-1 операция. 2) Дано целое X и массив отсортированных в порядке неубывания целых чисел A[1..n]. Найти такое i, что A[i]=X, или возвратить i=0, если элемента X в массиве нет. 3) Написать программу, которая печатала бы все перестановки чисел 1…n по одному разу Варианты ответов: 1) 1 2) 2 3) 3 4) данные задачи программирования

невозможно

решить

методом

динамического

Задание № 15 Даны три множества A, B, C: Set of byte: A = [2, 3, 5, 8, 11, 12] B = [5, 8, 11, 12] C = [5, 11, 22, 24] Над ними выполняются операции, результатом которых является множество R: Set of byte: R:= A*((C – B) + (B – C)); Указать верное значение множества R. Варианты ответов: 1) R = [22, 24] 2) R = [8, 12] 3) R = [8, 12, 22, 24] 4) R = [5, 8, 12] Задание № 16 Считать с экрана произвольное число символов ‘A’ ..‘Z’ и вывести их на экран в алфавитном порядке. Задание № 17 Дан текст. Вывести на экран все встречающиеся в нем знаки препинания. Задание № 18 Дано предложение: найти количество гласных и согласных букв. Задание № 19 Дан текст. Вывести те буквы (английского алфавита), которых в нем нет. Задание № 20

50


Дана строка. Надо получить квадрат числа, которое образуется цифрами данной строки, расположенными по возрастанию. Задание № 21 Дано описание списка: Type SS = ^List; List = Record A : LongInt; Next : SS End; В приведенном фрагменте программы (First — ссылка на первый элемент списка): P := First; S := 0; While Not (P = Nil) Do Begin S := S + 1; P := P^.Next End; определяется… Варианты ответов: 1) первый элемент списка; 2) сумма элементов списка; 3) сумма первого и последнего элементов списка; 4) количество элементов списка; 5) количество звеньев списка, где указатель на следующее звено не Nil. Задание № 22 Линейный список объявлен следующим образом: Type SS = ^List; List = Record A : LongInt; Next : SS End; В приведенном фрагменте программы (First — ссылка на первый элемент списка): P := First; S := 0; While Not (P = Nil) Do Begin S := S + P^.A; P := P^.Next End; определяется Варианты ответов: 1) первый элемент списка; 2) сумма элементов списка; 3) сумма первого и последнего элементов списка; 4) количество элементов списка; 5) количество звеньев списка, где указатель на следующее звено не Nil. Задание № 23 Стек – это … 51


Варианты ответов: 1) упорядоченный набор элементов, в котором добавление новых элементов и удаление существующих производится с одного конца 2) это упорядоченный набор элементов, в котором извлечение элементов происходит с одного его конца, а добавление новых элементов – с другого 3) это структура данных, в которой добавлять и удалять элементы можно с обоих концов Задание № 24 Очередь – это … Варианты ответов: 1) упорядоченный набор элементов, в котором добавление новых элементов и удаление существующих производится с одного конца 2) это упорядоченный набор элементов, в котором извлечение элементов происходит с одного его конца, а добавление новых элементов – с другого 3) это структура данных, в которой добавлять и удалять элементы можно с обоих концов Задание № 25 Двоичное дерево поиска объявлено следующим образом: Type pt=^elem; elem = record data: integer; left, right: pt; end; Определите, какую задачу решает следующий фрагмент: Function Solve(t:pt):Integer; Begin If t<>nil Then If (t^.left=nil) And (t^.right=nil) Then Solve:=1 Else Solve:=Solve(t^.left)+Solve(t^.right) Else Solve:=0; End; Варианты ответов: 1) определение высоты дерева 2) подсчет суммы элементов дерева 3) вычисление количества листьев в двоичном дереве поиска 4) определение количества вершин на нижнем уровне Задание № 26 Двоичное дерево поиска объявлено следующим образом: Type pt=^elem; elem = record data: integer; left, right: pt; end; Определите, что находится с помощью следующей функции: Function Solve(t:pt):Integer; Begin If t=nil Then Solve:=0 52


Else Solve:=Max(Solve(t^.left), Solve(t^.right))+1; {Max – функция вычисления максимального из двух чисел.} Варианты ответов: 1) нахождение минимального элемента дерева 2) нахождение максимального элемента дерева 3) нахождение количества листьев дерева 4) нахождение высоты дерева 6.2.4. Материалы для проведения промежуточной аттестации Промежуточная аттестация проводится в форме экзамена. Примерный перечень вопросов к экзамену 1. Составные типы данных: массивы. Операции, процедуры и функции, определённые над данным типом данных. 2. Составные типы данных: записи. Операции, процедуры и функции, определённые над данным типом данных. 3. Составные типы данных: строки. Операции, процедуры и функции, определённые над данным типом данных. 4. Составные типы данных: файлы. Операции, процедуры и функции, определённые над данным типом данных. 5. Алгоритмы сортировки информации: сортировка простым обменом – идея, варианты усовершенствования, программная реализация. 6. Алгоритмы сортировки информации: сортировка простым выбором – идея, варианты усовершенствования, программная реализация. 7. Алгоритмы сортировки информации: сортировка простыми вставками – идея, варианты усовершенствования, программная реализация. 8. Задача сортировки информации. Оценка эффективности методов. Сравнение временных характеристик. Усовершенствование методов сортировки на примере одного метода. 9. Постановка проблемы кардинального ускорения сортировки. 10. Алгоритмы сортировки информации: быстрая сортировка Хоара – идея, программная реализация. 11. Алгоритмы сортировки информации: пирамидальная сортировка – идея, программная реализация. 12. Задачи поиска информации, их практическая значимость. 13. Алгоритмы поиска информации: последовательный поиск, поиск с барьером – идея и программная реализация для одномерного массива, для файла. 14. Алгоритмы поиска информации: бинарный поиск – идея и программная реализация для одномерного массива, для файла. 15. Перебор и методы его сокращения. Перебор с возвратом – идея метода, примеры задач. 53


16. Динамическое программирование – идея, примеры задач. 17. Динамические и статические структуры данных. Сравнительный анализ. 18. Линейный список – основные операции, варианты реализации (массив, динамические структуры данных), примеры использования. 19. Стек – основные операции, варианты реализации (массив, динамические структуры данных), примеры использования. 20. Очередь – основные операции, варианты реализации (массив, динамические структуры данных), примеры использования. 21. Алгоритмы обхода вершин графа: в глубину, в ширину. 22. Алгоритмы нахождения циклов в графе. Эйлеров, Гамильтонов циклы. Примеры. 23. Алгоритмы поиска кратчайших путей в графе. Алгоритм Дейкстры. Пути в бесконтурном графе. Алгоритм Флойда. Примеры. 24. Алгоритмические проблемы теории графов. Независимые множества вершин графа. Алгоритм генерации максимальных независимых множеств. 25. Алгоритмические проблемы теории графов. Доминирующие множества вершин графа. Алгоритм решения задачи о разбиениях. 26. Двоичные деревья поиска – реализация основных операций, примеры. 27. Сбалансированные деревья: идеально сбалансированные деревья, АВЛдеревья – реализация основных операций, примеры. 28. 2-3 деревья – реализация основных операций, примеры. 29. Красно-черные деревья – реализация основных операций, примеры. 30. Множественный тип данных. Операции, определенные над множествами. Примеры. 31. Очередь с приоритетом – основные операции, варианты реализации, примеры использования. Примерный перечень практических заданий на зачете 1. Считать с экрана произвольное число символов ‘a’ ..‘z’ и вывести их на экран в алфавитном порядке. 2. Дан текст. Вывести на экран все встречающиеся в нем цифры. 3. Дано предложение: определить, каких букв в нем больше – гласных или согласных. 4. Дан текст. Вывести имеющиеся в нем буквы русского алфавита. 5. Дана строка. Найти число, которое образуется цифрами данной строки, расположенными по убыванию. 6. В процедуру сортировки методом простого выбора добавить проверку рассматриваемой части массива на упорядоченность: если она упорядочена, то сортировку завершить. 7. Отсортировать четные элементы массива с помощью сортировки методом простого выбора. 8. Отсортировать с помощью метода простого выбора элементы массива, стоящие на нечетных местах. 54


9. При сортировке методом простого обмена можно улучшить алгоритм, если запоминать, производились ли перестановки элементов в процессе некоторого прохода. Если их не было, то сортировку можно закончить. Модифицировать процедуру с учетом этой возможности улучшения. 10.При сортировке методом простого обмена если известен не только факт последнего обмена, но и его место, то нетрудно заметить, что все пары соседних элементов, расположенные правее этого места, уже находятся в нужном порядке. Поэтому просмотр можно закончить на этом индексе, а не продолжать до конца. Модифицировать процедуру с учетом этой возможности улучшения. 11.Реализовать «Шейкер-сортировку» в одномерном массиве. 12.Даны два массива x[1]≤...≤x[n] и y[1]≤...≤y[k] и число q. Найти сумму вида x[i]+y[j], наиболее близкую к числу q. (Число действий порядка n+k, дополнительная память – фиксированное число целых переменных, сами массивы изменять не разрешается.) 13.Дан массив a[1..n] и число b. За минимальное число действий переставить числа в массиве так, чтобы сначала стояли числа, меньшие b, затем равные b, а потом большие b. 14.Дан одномерный массив, считанный из файла. Найти минимальный элемент и его номер, при условии, что все элементы в массиве различные. 15.Решить ребус КУБ=(К+У+Б)3. 16.Решить ребус ТРИ+ТРИ+ТРИ=ДЫРА. 17.Решить ребус ОДИН*7=СЕМЬ. 18.Решить ребус ТЬМА+МРАК=НОЧЬ. 19.Сформировать отсортированный по возрастанию линейный список из элементов двух исходных отсортированных по убыванию линейных списков. 20.Сформировать отсортированный по убыванию линейный список из элементов двух исходных отсортированных по убыванию линейных списков. 21.Удалить из линейного списка все повторяющиеся элементы, оставив только их первое вхождение. 22.Проверить, является ли имеющееся двоичное дерево деревом поиска. 23.Преобразовать выражение из постфиксной формы записи в префиксную. 24.Преобразовать выражение из постфиксной формы записи в инфиксную. 25.Дан двумерный массив A[1..n,1..m], элементы которого равны 0 или 1. Найти квадратный блок (часть массива) максимального размера, состоящий из одних единиц. Под блоком понимается элементы идущих подряд строк и столбцов массива. 26.Палиндром — это симметричная строка, т.е. она одинаково читается как слева направо, так и справа налево. По заданной строке определить минимальное количество символов, которые необходимо вставить в строку для образования палиндрома.

55


27.Заданы две символьные строки s1 и s2, не содержащие пробелов. Определить, сколькими способами можно получить строку s2 из строки s1, вычеркивая некоторые символы. 6.3. Материалы, устанавливающие содержание и порядок проведения итоговой аттестации Содержание учебной дисциплины «Классические алгоритмы и структуры данных» не входит в перечень вопросов государственного экзамена.

56


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.