ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Томский государственный университет систем управления и радиоэлектроники УТВЕРЖДАЮ Проректор по УР __________ Л.А.Боков “____”_________________ РАБОЧАЯ ПРОГРАММА по курсу “Программирование на языках высокого уровня” Факультет экономический Кафедра экономической математики, информатики и статистики 2009 2 1 .ЦЕЛИ И ЗАДАЧИ ДИСЦИПЛИНЫ Целью данной учебной дисциплины является изучение основных принципов программирования, обучение основам языков высокого уровня Паскаль и Си, а также выработки у студентов современного стиля программирования. Лекционный материал предназначен для объяснения ключевых и наиболее сложных моментов самих языков и предполагает большую самостоятельную работу с литературой. Лабораторные и практические работы должны помочь студенту получить практические навыки работы с основными конструкциями языков. Цель курсового проекта состоит в выработке стиля программирования и в освоении приемов тестирования программных комплексов. Одной из важных задач, решаемых при курсовом проектировании, является развитие творческой самостоятельности студентов. Задачей преподавания дисциплины является развитие у студентов навыков использования алгоритмических языков высокого уровня при решении широкого круга практических задач. Изучение базируется на школьном курсе “Основы вычислительной техники. Язык Бейсик”. 2. СОДЕРЖАНИЕ ДИСЦИПЛИНЫ 2.1. Лекции. Раздел 1. Языки программирования – Лекция 1. Понятие алгоритма и его свойств. Способы записи алгоритма. Основные понятия алгоритмического языка программирования. История языков программирования. Классификация языков программирования и степень абстракции языков от машинной архитектуры. Программы на языках высокого уровня. Лекция 2. Постановка задачи и спецификация программы. Основные этапы решения задач на ЭВМ. Критерии качества программ. Жизненный цикл программы. Стадии и фазы жизненного цикла. Общие рекомендации по стилю программирования. Лекция 3. Принцип абстрагирования. Абстракция данных. Данные и память. Структуризация данных. Данные в языках программирования. Определение типа данных. Классическое определение стандартного типа данных и его толкование. Лекция 4. Статический и динамический контроль типов. Классификация языков по способу контроля типов. Статически и динамически типизируемые языки программирования. Слабая, сильная и строгая типизации в статически типизируемых языках. Лекция 5. Абстракция управления. Конструкции структурного программирования и теорема о структурировании. Абстракция управления. Визуальное структурное программирование. Переходы. Итерации. Правила вывода. Исключения и их обработка. Примеры из языков программирования. Лекция 6. Абстракция модульности. Модульное программирование. Принцип утаивания информации. Аксиома модульности. Принцип сборочного программирования. Определение модуля. Модули в языках программирования. Процедурная абстракция. Лекция 7. 3 Основные характеристики программного модуля. Гипотеза о глобальных данных. Размер модуля. Сцепление модулей. Связность модуля. Методы разработки структуры программы. Лекция 8. Объектное мышление. Объект, как активный процесс. Объектно-ориентированные языки программирования. Поддержка методологии объектно-ориентированного программирования. Инкапсуляция, наследование, полиморфизм. Раннее и позднее связывание. Виртуальные методы. Архитектура, управляемая событиями. Лекция 9. Язык Pascal. Стандартные типы данных. Типы, определяемые пользователем. Приведение типов. Массивы. Множества. Записи. Запись с вариантами. Арифметические, битовые, логические операции. Операции сравнения. Операторы и их структура. Лекция 10. Процедуры и функции. Механизмы передачи формальных параметров. Схема вызова. Возвращаемое значение. Область видимости переменных. Рекурсивные функции. Реализация рекурсивных алгоритмов. Лекция 11. Структура программы. Комментарии. Понятие файла. Типы файлов. Процедуры и функции манипулирования файлами и данными. Лекция 12. Динамическое управление памятью. Статические и динамические объекты. Указатели. Объявление указателя. Операции с указателем. Функции для работы с динамическими объектами. Лекция 13. Сходство структур, алгоритмов и данных. Использование динамических объектов. Список, очередь, стек. Списки фиксированного формата. Списки общего вида. Разновидности списков. Таблицы. Дерево. Построение дерева. Лекция 14. Модульная структура Pascal программы. Системные модули. Пользовательские модули. Регистры. Сегменты. Ассемблерные вставки. Передача параметров через командную строку. Лекция 15. Конструирование программ. Нисходящее проектирование. Иерархические схемы. Планирование и реализация. Правила детализации. Сегментирование. Лекция 16. Тестирование программ. Восходящее и нисходящее тестирование. Языки и системы тестирования. Тестовые данные: классы, этапы тестирования, анализ результатов. Тестовые мониторы. Лекция 17. Отладка программ. Виды отладки. Типовые ошибки. Защитное программирование. Системы отладки для пакетного и интерактивного режима. Отладчики и отладочная информация. Раздел 2. Язык Си – Лекция 1. История. Идентификаторы. Типы данных и их хранение. Явное и неявное преобразование типов. Лекция 2. Арифметические операции и выражения. Операции сравнения. Операторы и структуры операторов. Лекция 3. Логические операции, понятие “истина” в языке Си. Массивы. Строки. 4 Лекция 4. Функции ввода - вывода. Форматированный вывод на стандартное устройство. Строка формата. Форматированный ввод. Лекция 5. Время жизни объектов. Область видимости. Константы. Функции. Лекция 6. Адрес. Указатели. Копирование массива с помощью указателя. Подробное объявление и работа с указателями. Динамический массив. Лекция 7. Двумерный динамический массив. Инициализация динамической строки. Указатель на функцию. Лекция 8. Массив как аргумент функции. Ввод-вывод строк. Сложные описания. Способы инициализации массива. Лекция 9. Операции с указателями. Структуры. Структуры и функции. Расширенное использование оператора sizeof. Лекция 10. Передача параметров в функцию. Реализация рекурсивных алгоритмов на Си. Проект. Файловая область видимости. Лекция 11. Модульность в Си. Введение новых типов. Работа с файлами. Лекции 12. Работа с битами. Реализация списков на Си. Лекции 13. Поддержка текстового и графического режимов. Лекция 14. Организация пакетной обработки. Функции форматного преобразования строка - число. Лекция 15. Модели памяти. Связь с указателями. Лекция 16. Функции операционной системы MS-DOS и обработка прерываний. Лекция 17. Переносимость программ. Команды препроцессора. Процессы. Функции с переменным числом аргументов. Лекция 18. Надежность программного средства. Источники ошибок в программных средствах. Обеспечение надежности. Семейство Си-подобных языков программирования. 5 2.2. Лабораторные и практические занятия Лабораторная работа 1 Введение в программирование. Опции интегрированной оболочки. Примеры простых программ. Лабораторная работа 2 Процедуры и функции Паскаля. Основные типы данных. Программа решения алгебраических уравнений первой и второй степени. Лабораторная работа 3 Работа с символьными, строковыми, перечисляемыми типами данных. Лабораторная работа 4 Генератор случайных чисел. Вычисление количества положительных чисел, отрицательных и нулей; минимального и максимального чисел; среднего и дисперсии выборки. Лабораторная работа 5 Изучение интегрированной среды TC 2.0 Лабораторная работа 6 Сигналы клавиатуры. Управляющие структуры операторов Си. Лабораторная работа 7 Массивы. Преобразования типов. Вычисления. Лабораторная работа 8 Форматный ввод/вывод. Работа со строками. Лабораторная работа 9 Текстовый режим: создание окна-меню. Лабораторная работа 10 Создание окон с использованием записей. Лабораторная работа 11 Работа в графическом режиме. Лабораторная работа 12 Создание собственной интегрированной оболочки, аналогичной “Norton Commander”. Лабораторная работа 13 Создание окна-меню. Лабораторная работа 14 Заголовочные файлы. Динамический массив. Лабораторная работа 15 Создание окна с использованием структур данных. Лабораторная работа 16 Работа с файлами. Лабораторная работа 17 Графический режим. Лабораторная работа 18 Создание собственной интегрированной оболочки. Лабораторная работа 19 Организация пакетной обработки. Лабораторная работа 20 Использование процессов. Лабораторная работа 21 Обработка прерываний. 6 2.3. РАЗДЕЛЫ, ВЫНОСИМЫЕ НА САМОСТОЯТЕЛЬНУЮ РАБОТУ 1. Сравнительная характеристика языков программирования Паскаль, Си, Си++. 2. Преимущества и недостатки каждого из них. Области применимости. Современное состояние и перспективы дальнейшего развития 3. Разработка программа перевода чисел из двоичной системы счисления в десятичную и обратно. 4. 5. 6. 7. 8. 9. 10. 11. Разработка алгоритма вычисления площади произвольного многоугольника. Утилита “интеллектуального” дробления длинных текстовых файлов. Алгоритм словесного представления натурального числа. Алгоритм поиска “магического квадрата” nn. Алгоритм поиска совершенных чисел. Алгоритм получения обратной матрицы nn. Алгоритм движения объекта в вакууме под воздействием системы материальных тел. Алгоритм эволюцию пространственной системы материальных точек. Литература к данному разделу: 1. Шилдт Г. Теория и практика С++. - С.-П.: “BHV”, 1996. - 416с. 2. Вебер Д. Технология Java. - С.-П.: “BHV”, 1995. - 688с. 3. Культин Н. Delphi 3: Программирование на Object Pascal. - С.-П.: “BHV”, 1996. - 424с. 4. Круглински Д. Основы Visual C++ / Пер. с англ. - М.: “Русская редакция”, 1997. 696с. 3. Литература 3.1. Основная литература 1. Введение в язык Паскаль: Учебн.пособие / Под ред. В.Г.Абрамова. - М.: Наука, 1988. 320с. 2. Зуев Е.А. Язык программирования Turbo Pascal 7.0. - М.: Радио и связь, 1993.- 384с. 3. Белецкий Я. Энциклопедия языка Си / Пер. с польского - М.:Мир, 1992.- 686с. 4. Уэйт М., Прата С., Мартин Д. Язык Си / Пер. с англ. - М.: Мир, 1988. - 512с. 3.2. Дополнительная литература 1. Поляков Д.Б., Круглов И.Ю. Программирование в среде Турбо Паскаль: Справ. пособие. - М.: Изд-во МАИ, 1992.- 576с. 2. Уинер Р. Язык Турбо Си / Пер. с англ. - М.:Мир, 1991. - 380с. 3. Котлинская Г.П., Галиновская О.И. Программирование на языке Си: Справ. Пособие. – Минск, Высшая школа, 1991. – 155с. 4. Вирт Н. Алгоритмы + структуры данных = программы: Пер. с англ. - М.: Мир, 1985.406с. 5. Касаткин А.И. Системное программирование. - Минск: Высшая школа, 1993 - 301с. 7 БАЛЛЬНО-РЕЙТИНГОВАЯ СИСТЕМА ОЦЕНКИ ЗНАНИЙ Оценка объема и качества знаний студентов по результатам семестровой аттестации определяется в соответствии с Положением о балльно-рейтинговой системе оценки знаний и обеспечения качества учебного процесса. Пересчет итоговой суммы баллов в традиционную и международную оценку приведен в таблице 1. Семестровая балльная раскладка по дисциплине приведена в таблице 2. Максимальный рейтинг 100 баллов в каждом семестре. Таб. 1. Пересчет итоговой суммы баллов в традиционную и международную оценку Итоговая сумма баллов, учитывает Оценка (ГОС) Оценка (ECTS) успешно сданный экзамен 5 (отлично) А (отлично) 90 – 100 В (очень хорошо) 85 – 89 4 (хорошо) С (хорошо) 75 – 84 70 – 74 D (удовлетворительно) 65 – 69 3 (удовлетворительно) E (посредственно) 60 – 64 2 (неудовлетворительно) F (неудовлетворительно) Ниже 60 баллов Таб.2. Дисциплина – Программирование на языке высокого уровня (экз., лекции, практ. занятия) Элементы учебной деятельности Посещение занятий Тестовый контроль Контрольные работы на практических занятиях Компонент своевременности Итого максимум за период: Сдача экзамена (максимум) Нарастающим итогом Максимальный балл на 1-ую КТ с начала семестра 4 9 Максимальный балл за период между 1КТ и 2КТ 4 8 Максимальный балл за период между 2КТ и на конец семестра 4 8 7 7 7 21 4 4 4 12 24 23 23 24 47 70 70 30 100 Всего за семестр 12 25 Компонент своевременности – элемент, стимулирующий ритмичность работы в течение семестра. Выставляется только студентам, которые без опоздания отчитываются по предусмотренным элементам контроля. Неудовлетворительной сдачей экзамена считается экзаменационная составляющая менее 10 баллов. При неявке по неуважительной причине на экзамен экзаменационная составляющая приравнивается к нулю. В этих случаях студент обязан пересдать экзамен. В исключительных случаях, когда студент в течение семестра набрал не менее 65 баллов, баллы экзаменационной составляющей могут быть выставлены по усмотрению преподавателя без сдачи экзамена. Основанием для этого являются: а) сделанный на конференции доклад по тематике дисциплины; б) опубликованная или представленная к печати статья по тематике дисциплины; в) эффективное участие(занятие призового места) в предметной олимпиаде; г) победа на конкурсе студенческих работ по тематике дисциплины.