МИНИСТЕРСТВО КУЛЬТУРЫ РОССИЙСКОЙ ФЕДЕРАЦИИ ФГОУ ВПО «ПЕРМСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ ИСКУССТВА И КУЛЬТУРЫ ФАКУЛЬТЕТ ДОКУМЕНТАЛЬНО-ИНФОРМАЦИОННЫХ КОММУНИКАЦИЙ КАФЕДРА ИНФОРМАТИКИ И ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ СИСТЕМА КАЧЕСТВА Одобрено НМС ПГИИК Протокол № __________ «__»________________ 20___г. Председатель_______________ НЕЧАЕВ В.Г. ПРОГРАММИРОВАНИЕ И ОСНОВЫ АЛГОРИТМОВ УЧЕБНО-МЕТОДИЧЕСКИЙ КОМПЛЕКС специальности 080801.65 «Прикладная информатика в социально-культурной сфере», специализация «Мультимедийные технологии и WEB – дизайн» Рекомендовано кафедрой: Протокол №________ «___»_______________20__г. Зав. кафедрой_____________ Пермь 2012 Автор-составитель: Нечаев В. Г., канд. техн. наук, доцент Учебно-методический комплекс «Программирование и основы алгоритмов» составлен в соответствии с требованиями Государственного образовательного стандарта высшего профессионального образования, Профессиональной образовательной программой по специальности 080801.65 «Прикладная информатика в социально-культурной сфере», специализация «Мультимедийные технологии и WEB – дизайн». Дисциплина входит в федеральный компонент цикла общепрофессиональных дисциплин и является обязательной для изучения. Согласования со смежными кафедрами и библиотекой ПГИИК: Зав. библиотекой ПГИИК И.М. Журавлева 2 СОДЕРЖАНИЕ ЧАСТЬ 1. РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА ДИСЦИПЛИНЫ .............................. 4 1.1 Цели, задачи и предмет дисциплины ....................................................................... 4 1.2 Требования к уровню освоения содержания дисциплины ..................................... 4 1.3 Объем дисциплины..................................................................................................... 4 1.3.1 Объем дисциплины и виды учебной работы ..................................................... 4 1.3.2 Распределение часов по темам и видам учебной работы ................................. 5 1.4 Содержание дисциплины ........................................................................................... 6 1.5 Темы практических занятий ...................................................................................... 9 1.6 Темы лабораторных работ ......................................................................................... 9 1.7 Список литературы................................................................................................... 10 ЧАСТЬ 2. МАТЕРИАЛЫ, УСТАНАВЛИВАЮЩИЕ СОДЕРЖАНИЕ И ПОРЯДОК ПРОВЕДЕНИЯ ПРОМЕЖУТОЧНОЙ И ИТОГОВОЙ АТТЕСТАЦИИ ..................... 11 2.1 Занятия для самостоятельной работы студентов .................................................. 11 2.2 Темы курсовых (контрольных) работ, рефератов и методические рекомендации по их выполнению .......................................................................................................... 12 2.3 Вопросы для подготовки к экзамену ...................................................................... 12 2.4 Учебно-методическое обеспечение дисциплины.................................................. 13 2.4.1 Методические указания для преподавателей .................................................. 13 2.4.2 Методические указания для студентов ............................................................ 13 2.4.3 Методическое обеспечение дисциплины ......................................................... 13 2.4.4 Материально-техническое и информационное обеспечение дисциплины . 14 3 ЧАСТЬ 1. РАБОЧАЯ УЧЕБНАЯ ПРОГРАММА ДИСЦИПЛИНЫ 1.1 ЦЕЛИ, ЗАДАЧИ И ПРЕДМЕТ ДИСЦИПЛИНЫ Способность выполнять и составлять алгоритмы и программы, занимает центральное место в компьютерной грамотности и играет важную роль при обработке информации и решении задач. Цель преподавания дисциплины: - формирование у студентов представлений о современном состоянии алгоритмизации и программирования, языков программирования, о современном программном обеспечении и средствах для разработки программ различного уровня сложности. Задачи изучения курса: - изучить теории алгоритмизации и программирования как основы для приобретения соответствующего мировоззрения и творческого потенциала, позволяющие будущему специалисту с минимальными затратами самостоятельно адаптироваться к действительности, определяемой появлением новых парадигм, сред и инструментальных средств. Предмет курса: основы алгоритмического мышления и умение сводить решение задачи к разработке алгоритма и написанию программы для компьютера. 1.2 ТРЕБОВАНИЯ К УРОВНЮ ОСВОЕНИЯ СОДЕРЖАНИЯ ДИСЦИПЛИНЫ В результате изучения дисциплины студенты должны: - знать основные принципы разработки, написания и отладки программ разной степени сложности на языках программирования и с использованием современных инструментальных средств - уметь для сформулированной задачи разработать алгоритм, написать программу на одном из языков высокого уровня. - владеть навыками разработки алгоритмов и программ на языках высокого уровня с использованием современных систем программирования. 1.3 ОБЪЕМ ДИСЦИПЛИНЫ 1.3.1 ОБЪЕМ ДИСЦИПЛИНЫ И ВИДЫ УЧЕБНОЙ РАБОТЫ Дисциплина состоит из лекционных занятий, лабораторных работ и самостоятельных занятий. Лекционные занятия раскрывают основные проблемные вопросы дисциплины. Лабораторные работы предназначены для приобретения практических навы4 ков разработки алгоритмов и написания программ. Самостоятельная работа проводится вне рамок учебного расписания и предназначена для закрепления лекционного материала, подготовки к лабораторным работам и ознакомления с рекомендуемой литературой. Дисциплина «Программирование и основы алгоритмов» реализуется в 3 семестре обучения в объеме 54 аудиторных часов и завершается экзаменом. Вид учебной работы Аудиторные занятия: Лекции Лабораторные работы Самостоятельная работа Всего часов Лабораторные работы Текущий контроль Виды итогового контроля (зачеты, экзамены) № семестра 3 3 3 3 3 3 Количество часов по формам обучения Очная 54 44 10 54 108 №№ 1, 2, 3, 4 контр.работа экзамен 1.3.2 РАСПРЕДЕЛЕНИЕ ЧАСОВ ПО ТЕМАМ И ВИДАМ УЧЕБНОЙ РАБОТЫ Форма обучения: очная 6 7 8 Введение Раздел 1 Основы алгоритмов Тема 1 Этапы решения задач на ЭВМ Тема 2 Алгоритм и его свойства Тема 3 Основные структуры алгоритмов Раздел 2 Программирование Тема 4 Введение в языки программирования Тема 5 Системы программирования 5 2 12 2 2 8 36 8 16 4 2 18 4 12 4 2 6 Лабораторные работы 4 28 4 4 20 Практ. и семин. занятия Лекции 1 2 3 4 5 Названия разделов и тем Всего часов по учебному плану № пп Аудиторные занятия, в т.ч. Самостоятельная работа Виды учебных занятий 2 2 2 14 2 2 10 9 10 11 12 13 14 15 16 17 18 Тема 6 Основные конструкции языков программирования Тема 7 Операторы языка программирования Тема 8 Структуры данных Раздел 3 Алгоритмические методы решения вычислительных задач Тема 9 Алгоритмическое решение задач сортировки Тема 10 Алгоритмическое решение задач поиска Тема 11 Программирование рекурсивных алгоритмов Тема 12 Объектно-ориентированное программирование Тема 13 Событийно-управляемое, параллельное и распределенное программирование Итого: 4 2 2 4 2 2 8 40 4 14 4 20 4 2 8 2 4 2 16 4 8 4 108 44 6 2 2 4 2 4 8 4 10 54 1.4 СОДЕРЖАНИЕ ДИСЦИПЛИНЫ Введение Место и назначение данного курса в общем ряду дисциплин учебного плана специальности. Главная задача курса, общая характеристика учебной дисциплины (по тематическому плану): содержание, объем, вид занятий, методы работы по курсу. Порядок, характер и вид контроля преподавателем изучения материала обучаемым. Основная и дополнительная литература по дисциплине. Раздел 1 Основы алгоритмов Тема 1 Этапы решения задач на ЭВМ Основные этапы компьютерного решения задач (жизненный цикл программного средства). Модели решения функциональных и вычислительных задач. Понятие структурированности задачи. Понятие математической модели. Постановка задачи, формирование математической модели решения. Разработка и анализ алгоритма. Составление программы. Эксплуатация программы. Анализ результата и отладка. Документирование программы. Стратегии решения задачи; роль алгоритма в процессе решения задачи; стратегии реализация алгоритма; стратегии отладки. Тема 2 Алгоритм и его свойства История применения термина «алгоритм». Понятие алгоритма. Свойства алгоритма: определенность, конечность, массовость, дискретность, эффективность. 6 Способы записи алгоритмов: словесный, псевдокод, графический, программный. Преимущества и недостатки различных представлений, сферы их применимости. Представление алгоритма в графическом виде: основные блочные символы, применяемые в схемах, правила начертания блок-схем. Тема 3 Основные структуры алгоритмов Структуры алгоритмов: линейные, разветвляющиеся и циклические. Примеры простейших алгоритмов, их схемы и реализация на языке программирования. Циклические алгоритмы. Цикл с параметром, циклы с предусловием и постусловием. Разработка различных циклических алгоритмов на примерах. Итерационный алгоритм и вычисление по рекуррентной формуле. Величины в алгоритмах: идентификаторы, константы и переменные. Лабораторная работа № 1: Проектирование базовых структур алгоритмов Раздел 2 Программирование Тема 4 Введение в языки программирования Эволюция языков программирования. Краткий обзор эволюции языков программирования (ЯП). Перспективы развития языков программирования. Классификация языков программирования. Процедурно-ориентированные (операциональные) языки. Языки структурного программирования. Языки программирования баз данных и для Интернета, прочие языки. Непроцедурное программирование, языки объектного и декларативного программирования. Программирование логическое и функциональное. Стандартизация языков программирования. Методологии программирования. Классификация методологий программирования. Парадигма структурного программирования. Сущность модульного подхода в структурном программировании. Методология объектно-ориентированного программирования. Тема 5 Системы программирования Средства создания программ: текстовый редактор, транслятор, компоновщик модулей и отладчик. Стандартные модули в системах программирования. Их назначение и правила использования. Среды визуального программирования. Лабораторная работа № 2: Освоение средств разработки программ Тема 6 Основные конструкции языков программирования Синтаксис и семантика высокоуровневых языков программирования. Концепция типов данных. Константы и переменные, скалярные и составные типы данных, контроль типов и преобразование типов, операции. Основная абстракция в структурном подходе – подпрограммы (процедуры и функции), построение и использование. Подпрограммы (описание и вызов). Подпрограммы без параметров. Способы обмена данными с подпрограммами. Параметры-значения, параметры-переменные. Передача в качестве параметра имени функции. Побочные эффекты при вызове функции. 7 Тема 7 Операторы языка программирования Операторы: присваивание, ввод, вывод. Простейшие программы. Выражения в языке: арифметические и логические. Организация повторений работы программы. Составной и условный операторы. Оператор выбора. Простейшие циклы. Циклы с итерациями и циклы в циклах. Примеры использования языковых конструкций. Тема 8 Структуры данных Основные структуры данных: массивы, записи, строки и их представление данных в памяти. Основные классы памяти; управление динамической памятью. Представление и реализация списков, стеков, очередей, хеш-таблиц, графов и деревьев. Организация работы с файлами. Определение и типы файлов. Встроенные языковые средства для работы с файлами разных типов. Последовательный и прямой доступ к компонентам файлов. Раздел 3 Алгоритмические методы решения вычислительных задач Тема 9 Алгоритмическое решение задач сортировки Организация сортировки в динамических структурах данных. Способы сортировки на разных расстояниях и в разных направлениях: быстрая сортировка, шейкер-сортировка. Поразрядная сортировка. Тема 10 Алгоритмическое решение задач поиска Задача поиска в больших массивах данных. Последовательный, ускоренный поиск, метод транспозиции. Хеш-функция. Организация таблиц методом хеширования. Редактирование хеш-таблиц. Лабораторная работа № 3: Разработка алгоритмов и программ сортировки и поиска данных Тема 11 Программирование рекурсивных алгоритмов Понятие рекурсии. Виды рекурсии (прямая и косвенная). Механизм рекурсии. Использование рекурсии для записи решений. Древовидные структуры. Бинарное дерево. Правила обходов деревьев: инфиксная форма, префиксная форма, постфиксная форма. Особенности использования рекурсии для построения дерева. Сортировка и поиск с помощью дерева. Тема 12 Объектно-ориентированное программирование Объектно-ориентированная разработка; инкапсуляция и информационное упрятывание; отделение описания интерфейса от реализации; классы, подклассы и наследование; полиморфизм; иерархия классов; пакеты классов и протоколы взаи8 модействия; программирование на основе шаблонов. Лабораторная работа № 4: Объектно-ориентированная методология разработки программ Тема 13 Событийно-управляемое, параллельное и распределенное программирование Методы обработки и распространение событий; управление параллелизмом с помощью механизма обработки событий; обработка исключений. Методы программирования сетевых приложений. 1.5 ТЕМЫ ПРАКТИЧЕСКИХ ЗАНЯТИЙ Выполнение практических работ программой курса не предусмотрено. 1.6 ТЕМЫ ЛАБОРАТОРНЫХ РАБОТ Лабораторные работы предназначены для приобретения практических навыков в работе по разработке алгоритмов и программ. №№ и названия разделов и тем Цель и содержание лабораторной работы Результаты лабораторной работы Лабораторная работа № 1: Проектирование базовых структур алгоритмов Раздел 1. Тема 3 Разработка блок-схем решения различных за- Блок схемы. дач Практические навыки разработки алгоритмов. Отчет. Лабораторная работа № 2: Освоение средств разработки программ Раздел 2. Тема 5 Изучение основных методов и инструментов Практические разработки программного обеспечения. навыки разработки программ. Отчет. Лабораторная работа № 3: Разработка алгоритмов и программ сортировки и поиска данных Раздел 3. Тема 10 Изучение алгоритмов сортировки и поиска Блок-схемы. Текданных. сты программ. Практические навыки. Отчет. Лабораторная работа № 4: Объектно-ориентированная методология разработки программ Раздел 3. Тема 12 Изучение основ объектно-оринтированной раз- Тексты программ. работки программного обеспечения Практические 9 навыки. Отчет. Для выполнения лабораторных работ предусмотрены Методические указания к лабораторным работам по дисциплине «Программирование и основы алгоритмов» 1.7 СПИСОК ЛИТЕРАТУРЫ Основная: 1. Павловская, Т. А. Паскаль. Программирование на языке высокого уровня: учебник для вузов/ Т. А. Павловская. - СПб. : Питер, 2008. - 400 с. : ил. 2. Баженова, И.Ю. Введение в программирование: учебное пособие / Баженова И.Ю. – М.: Бином, 2007. – 326 с. Дополнительная: 1. Голицина О.Л., Попов И.И. Основы алгоритмизации и программирования: учеб. пособие. – 3-е изд., испр. и доп. – М.: ФОРУМ, 2008. – 432 с. 2. Фаронов, В. В. Turbo Pascal: учебное пособие / В. В. Фаронов. - СПб. : Питер, 2007. – 367 с. 3. Бондарев В.М. Основы программирования. – Харьков: ФОЛИО, 1997. 4. Бояршинов М.Г. Введение в технологию программирования.- Пермь: ПГТУ, 1996. 5. Брауде Э.Дж. Технология разработки программного обеспечения.- СПб.: Питер, 2004. 6. Фаронов, В.В. DELPHI. Программирование на языке высокого уровня: учеб. для вузов/ В. В. Фаронов. - СПб. : Питер, 2009. - 640 с. 7. Axo, Альфред, В., Хопкрофт, Джон, Ульман, Джеффри, Д. Структуры данных и алгоритмы. : Пер. с англ. : М. : Издательский дом "Вильямс", 2003. — 384 с. 8. Макконнелл, Дж. Основы современных алгоритмов. М.: Техносфера, 2004. – 368 с. 10 ЧАСТЬ 2. МАТЕРИАЛЫ, УСТАНАВЛИВАЮЩИЕ СОДЕРЖАНИЕ И ПОРЯДОК ПРОВЕДЕНИЯ ПРОМЕЖУТОЧНОЙ И ИТОГОВОЙ АТТЕСТАЦИИ 2.1 ЗАНЯТИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ РАБОТЫ СТУДЕНТОВ Самостоятельная работа проводится вне рамок учебного расписания и предназначена для закрепления лекционного материала и ознакомления с рекомендованной литературой. Самостоятельная работа выполняется по всем темам курса. Разделы и темы Виды и содержание самостоятельной работы для самостоятельного изучения Раздел 1. Тема 1 Изучение этапов компьютерного решения задач. Поиск информации в Интернете. Раздел 1. Тема 2 Изучение основных свойств алгоритмов, методов разработки и анализа. Поиск информации в Интернете. Раздел 1. Тема 3 Изучение базовых структур и форм записи алгоритмов. Поиск информации в Интернете. Подготовить отчет по лабораторной работе № 1. Раздел 2. Тема 4 Изучение классов современных языков программирования и видов методологии программирования. Поиск информации в Интернете. Раздел 2. Тема 5 Изучение возможностей современных систем программирования. Поиск информации в Интернете. Подготовить отчет по лабораторной работе № 2. Раздел 2. Тема 6 Изучение базовых понятий структурного программирования – процедур и функций. Раздел 2. Тема 7 Изучение программных средств реализации базовых алгоритмических структур. Раздел 2. Тема 8 Изучение сложных структур данных. Работа с файлами в языке программирования. Раздел 3. Тема 9 Изучение алгоритмов и разработка программ сортировки данных. Поиск информации в Интернете. Раздел 3. Тема 10 Изучение алгоритмов и разработка программ поиска данных. Поиск информации в Интернете. Подготовить отчет по лабораторной работе № 3. 11 Раздел 3. Тема 11 Изучение алгоритмов и разработка программ решения вычислительных задач с использованием рекурсии. Поиск информации в Интернете. Раздел 3. Тема 12 Изучение основных принципов разработки программ с использованием объектно-ориентированной медодологии. Поиск информации в Интернете. Подготовить отчет по лабораторной работе № 4. Раздел 3. Тема 13 Изучение методов событийно-управляемого, параллельного и распределенного программирования. Поиск информации в Интернете. 2.2 ТЕМЫ КУРСОВЫХ (КОНТРОЛЬНЫХ) РАБОТ, РЕФЕРАТОВ И МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ ПО ИХ ВЫПОЛНЕНИЮ Программой курса предусмотрено выполнение контрольной работы по теме «Объектно-ориентированная разработка программ». Контрольная работа выполняется студентами самостоятельно по индивидуальным заданиям и является формой промежуточного контроля освоения соответствующей темы курса. 2.3 ВОПРОСЫ ДЛЯ ПОДГОТОВКИ К ЭКЗАМЕНУ 1. Программирование как вид деятельности. 2. Этапы решения задачи на компьютере. 3. Выбор метода решения задач. 4. Определение алгоритма. Свойства алгоритмов. 5. Способы записи алгоритмов. 6. Структура алгоритмов. Разветвленные алгоритмы. Примеры. 7. Структура алгоритмов. Циклические алгоритмы. Примеры. 8. Метод пошаговой детализации разработки алгоритма. 9. Языки программирования. Виды, история развития, сферы использования. 10. Описание процесса трансляции. 11. Виды и типы данных языка программирования. 12. Выражения языка программирования. 13. Средства программной реализации разветвленных алгоритмов. 14. Средства программной реализации циклических алгоритмов. 15. Средства работы с файловым типом данных. 16. Работа с динамическими структурами данных. 17. Использование процедур и функций. 18. Методы решения задачи поиска. 19. Методы решения задачи сортировки. 20. Понятие рекурсии. Методы решения задач с использованием рекурсии. 21. Основные понятия объектно-ориентированного программирования. Средства 12 объектно-ориентированной разработки программ. 22. Основные понятия событийно-управляемого, параллельного и распределенного программирования. 2.4 УЧЕБНО-МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ 2.4.1 МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ ПРЕПОДАВАТЕЛЕЙ Дисциплина «Программирование и основы алгоритмов» является общепрофессиональной дисциплиной, базирующейся на курсах «Информатика и программирование». Предполагается, что студенты имеют представление об основных понятиях информатики, алгоритмизации, языках программирования высокого уровня, методологиях программирования. Подготовка к лекционным занятиям требует от преподавателя детального изучения современного состояния информатики, информационных технологий и систем, концепциях программирования. Основной материал по последним разработкам может быть получен из периодических изданий, а также из сети Интернет. При проведении лабораторных работ основное внимание необходимо уделять на самостоятельное выполнение студентами задачи проектирования и разработки алгоритмов решения задач различного характера и написания программ на языке высокого уровня, реализующих разработанные алгоритмы. При защите отчетов по лабораторным работам студенты должны показать знания по конкретным вопросам постановки задач, разработки и анализа алгоритма ее решения, написанию программы на языке высокого уровня. 2.4.2 МЕТОДИЧЕСКИЕ УКАЗАНИЯ ДЛЯ СТУДЕНТОВ При подготовке к лекциям студенты должны просмотреть конспекты лекций и уяснить тематику лекции. Теоретическая подготовка к лекциям и защите лабораторных работ должна проходить в рамках самостоятельной работы студентов. При изучении материала студенты опираются на рекомендованную литературу. Кроме того, целесообразно использовать Интернет – ресурсы. 2.4.3 МЕТОДИЧЕСКОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ Для подготовки к лекционным занятиям и лабораторным работам используется следующее методическое обеспечение: 1. Краткий курс лекций по дисциплине. Автор Нечаев В.Г. (электронный компонент). 2. Методические указания к лабораторным работам. Автор Нечаев В.Г. (печатное издание и электронный компонент). 3. Подборка книг по тематике дисциплины. Электронная библиотека. 4. Подборка статей журналов. 13 2.4.4 МАТЕРИАЛЬНО-ТЕХНИЧЕСКОЕ И ИНФОРМАЦИОННОЕ ОБЕСПЕЧЕНИЕ ДИСЦИПЛИНЫ Лабораторные работы проводятся в компьютерных классах. Перечень оборудования, используемого для каждой лабораторной работы приведен в Методических указаниях к лабораторным работам. Общий перечень оборудования: 1. Персональные компьютеры; Перечень программных средств: 1. Системное программное обеспечение; 2. Системы программирования на языках высокого уровня. 14