Технологии программирования
Покупка
Тематика:
Программирование и алгоритмизация
Автор:
Кручинин Владимир Викторович
Год издания: 2013
Кол-во страниц: 271
Дополнительно
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Федеральное агентство по образованию ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра промышленной электроники В.В. Кручинин ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ Учебное пособие 2013
Кручинин В.В. Технологии программирования: Учебное пособие. — Томск: Томский государственный университет систем управления и радиоэлектроники, 2013. — 271 с. Кручинин В.В., 2013 ТУСУР, 2013
СОДЕРЖАНИЕ Глава 1. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ ....................................... 8 1.1 Основные термины и определения ........................................................... 8 1.2 Жизненный цикл программы .................................................................... 9 1.3 Подходы к проектированию программ .................................................. 15 1.4 Модели компьютерных учебных программ .......................................... 17 1.4.1 Кадровые компьютерные учебные программы ............................... 17 1.4.2 Модель интеллектуальной компьютерной учебной программы обучения решения задач ............................................................................. 20 1.4.3 Модель интеллектуальной системы контроля знаний ................... 24 Глава 2. ПРОЦЕДУРНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ................................................................................. 27 2.1 Для чего нужен язык программирования .............................................. 27 2.2 Способы описания языка ......................................................................... 28 2.3 Описание лексических элементов .......................................................... 28 2.3.1 Понятие лексемы ................................................................................ 28 2.3.2 Пространство между лексемами ....................................................... 28 2.3.3 Запись длинных строк ........................................................................ 29 2.3.4 Комментарии ....................................................................................... 29 2.4 Лексемы ..................................................................................................... 30 2.4.1 Ключевые слова .................................................................................. 30 2.4.2 Идентификаторы................................................................................. 31 2.4.3 Константы............................................................................................ 31 2.4.3.1 Десятичные константы ................................................................. 32 2.4.3.2 Восьмеричные константы ............................................................ 32 2.4.3.3 Шестнадцатеричные константы .................................................. 32 2.4.3.4 Суффиксы для без знаковых и длинных целых чисел .............. 33 2.4.3.5 Символьные константы ................................................................ 33 2.4.3.6 Использование обратной косой черты (\) .................................. 33 2.4.3.7 Константы с плавающей запятой ................................................ 34 2.4.3.8 Типы данных констант с плавающей запятой ........................... 35 2.4.4 Перечисляемые константы (enum).................................................... 35 2.5 Синтаксические структуры С .................................................................. 35 2.5.1 Объявления .......................................................................................... 35 2.5.2 Объект .................................................................................................. 35 2.5.3 Левое значение (Lvalue) ..................................................................... 36 2.5.4 Правое значение (Rvalue) .................................................................. 36 2.5.5 Тип и класс памяти ............................................................................. 36 2.5.6 Область действия ................................................................................ 37 2.5.7 Блочная область действия.................................................................. 37 2.5.8 Область действия — вся функция .................................................... 37
2.5.9 Область действия прототип функции ............................................... 37 2.5.10 Область действия — файл ............................................................... 38 2.5.11 Пространство имен ........................................................................... 38 2.5.12 Видимость ......................................................................................... 38 2.5.13 Время существования ...................................................................... 39 2.5.14 Статические объекты ....................................................................... 39 2.5.15 Локальные объекты .......................................................................... 39 2.5.16 Динамические объекты .................................................................... 40 2.6 Объявления................................................................................................ 40 2.6.1 Типы объявлений ................................................................................ 40 2.6.2 Объявление переменных. ................................................................... 40 2.6.3 Объявление массивов ......................................................................... 41 2.6.4 Объявление строк символов .............................................................. 42 2.6.5 Объявление структур ......................................................................... 42 2.6.6 Объявления объединений .................................................................. 44 2.6.7 Объявление собственного типа (typedef) ......................................... 44 2.6.8 Битовые поля ....................................................................................... 45 2.7 Функции .................................................................................................... 46 2.8 Основные операции в Си ......................................................................... 46 2.8.1 Унарные операции .............................................................................. 46 2.8.2 Бинарные операции ............................................................................ 47 2.8.3 Побитовые операции .......................................................................... 47 2.8.4 Операции сдвига ................................................................................. 48 2.9 Выражения ................................................................................................ 48 2.10 Операторы ............................................................................................... 49 2.10.1 Составной оператор.......................................................................... 49 2.10.2 Условный оператор .......................................................................... 49 2.10.3 Оператор while .................................................................................. 52 2.10.4 Оператор for ...................................................................................... 53 2.10.5 Оператор do while ............................................................................. 54 2.10.6 Оператор continue ............................................................................. 55 2.10.7 Оператор break .................................................................................. 55 2.10.8 Оператор switch ................................................................................ 56 2.10.9 Оператор return ................................................................................. 57 2.10.10 Метки и оператор goto ................................................................... 58 2.11 Указатели ................................................................................................. 58 2.11.1 Что такое указатель .......................................................................... 58 2.11.2 Указатели на массивы ...................................................................... 61 2.11.3 Указатели и динамическое распределение памяти ....................... 62 2.11.4 Указатели на структуры ................................................................... 64 2.11.5 Указатели на функции...................................................................... 66 2.11.6 Указатели и константы .................................................................... 67 2.12 Программы и подпрограммы ................................................................ 68
2.12.1 Функции в Си .................................................................................... 70 2.13 Препроцессор .......................................................................................... 74 2.13.1 Директива #include ........................................................................... 75 2.13.2 Директива #define ............................................................................. 75 2.13.2 Условная компиляция ...................................................................... 77 2.3 Механизм реализации языков программирования ............................... 78 2.3.1 Передача параметров ......................................................................... 80 2.3.2 Механизм выделения локальной памяти под переменные ............ 82 2.3.3 Использование ассемблерных вставок ............................................. 83 2.3.4 Использование регистров .................................................................. 83 2.3.5 Связь с операционной системой ....................................................... 84 2.3.6 Описание наиболее часто используемых функций из системных библиотек ............................................................................. 85 2.4 Технология создания исполняемой программы .................................... 89 2.4.1 Текстовый редактор ........................................................................... 89 2.4.2 Компилятор ......................................................................................... 89 2.4.3 Редактор связей ................................................................................... 90 2.4.4 Отладчик .............................................................................................. 90 2.4.5 Помощь ................................................................................................ 91 2.4.6 Вспомогательные средства ................................................................ 91 2.4.7 Средства управления проектом ........................................................ 91 Глава 3. СОБЫТИЙНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ................................................................................. 92 Введение .......................................................................................................... 92 3.1 Графический интерфейс пользователя (GDI) ........................................ 93 3.2 Программирование функциональности окна ........................................ 97 3.3 Создание, идентификация и удаление объектов Windows .................. 98 3.4 Основные типы Windows ......................................................................... 99 3.5 Структура приложение .......................................................................... 100 3.6 Главная функция (WinMain) ................................................................. 100 3.7 Оконная процедура ................................................................................ 102 3.7.1 Процесс создания окна ..................................................................... 104 3.7.2 Процесс отображения окна .............................................................. 104 3.7.3 Процесс завершения работы приложения ..................................... 105 3.7.4 Процесс обработки сообщений по умолчанию ............................. 105 3.7.5 Процесс перерисовки окна .............................................................. 107 3.8 Контекст устройства .............................................................................. 107 3.8.1 Контекст устройства дисплея .......................................................... 109 3.8.2 Контекст устройства для работы с принтером .............................. 110 3.8.3 Контекст устройства для работы с памятью.................................. 111 3.9 Шрифты и вывод текста ........................................................................ 111 3.9.1 Компьютерное представление текста ............................................. 112 3.9.2 Шрифт ................................................................................................ 112
3.9.3 Вывод текста в Windows .................................................................. 120 3.10 Вывод фигур и линий ........................................................................... 122 3.10.1 Функции вывода фигур .................................................................. 124 3.10.2 Вывод линий ................................................................................... 125 3.10.3 Вывод кривых (curves) ................................................................... 126 3.11 Битовые карты (bitmap)........................................................................ 127 3.12 Работа с клавиатурой ........................................................................... 130 3.13 Работа с мышкой .................................................................................. 132 3.13.1 Пример рисование линий (эффект резиновой нити) .................. 133 3.14 Ресурсы .................................................................................................. 135 3.14.1 Основные понятия .......................................................................... 135 3.14.2 Язык описания ресурса .................................................................. 136 3.14.3 Использование ресурсов ................................................................ 144 3.15 Процесс обработки WM_COMMAND ............................................... 147 3.16 Стандартные элементы управления (Control) ................................... 148 3.16.1 Кнопки (Buttons) ............................................................................. 149 3.16.2 Статические поля ............................................................................ 150 3.16.3 Редактируемые поля (Edit) ............................................................ 151 3.16.4 Перечни ........................................................................................... 152 3.16.5 Линейки прокрутки ........................................................................ 153 3.17 Диалоговые панели .............................................................................. 157 Глава 4. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ ............................................................................... 159 Введение ........................................................................................................ 159 4.1 Объектно-ориентированное программирование на С++ .................... 170 4.1.1 Простейший ввод/вывод .................................................................. 170 4.1.2 Понятие ссылки ................................................................................ 171 4.1.3 Операторы new и delete .................................................................... 176 4.1.4 Операция разрешения видимости :: ................................................ 179 4.1.5 Понятие класса .................................................................................. 180 4.1.6 Указатель this .................................................................................... 182 4.1.7 Объект ................................................................................................ 182 4.1.8 Конструктор ...................................................................................... 183 4.1.9 Деструктор ........................................................................................ 184 4.1.10 Конструктор копирования ............................................................. 186 4.1.11 Определение прав доступа к членам объектов класса ............... 188 4.1.12 Статические члены класса ............................................................. 189 4.1.13 Наследование .................................................................................. 191 4.1.14 Дружественные функции и классы ............................................... 198 4.1.15 Полиморфизм .................................................................................. 198 4.1.16 Перегрузка операций ...................................................................... 203 4.1.17 Импорт объектов ............................................................................ 224 4.1.18 Идентификация объектов во время выполнения (RTTI) ............ 226
4.1.19 Контейнеры ..................................................................................... 229 4.1.20 Списки ............................................................................................. 232 4.1.21 Шаблоны .......................................................................................... 234 4.1.22 Обработка исключительных ситуаций ......................................... 240 4.1.23 Потоки ввода/вывода ..................................................................... 243 4.2 Реализация классов средствами Си ...................................................... 263 4.3 Реализация объктно-ориентированного подхода для создания приложения в Windows ............................................................................... 266 ЛИТЕРАТУРА ................................................................................................. 269
Глава 1. ТЕХНОЛОГИИ ПРОГРАММИРОВАНИЯ 1.1 Основные термины и определения Программирование это процесс создания программ для ЭВМ [1]. На заре компьютерной эры программирование воспринималось как искусство [2]. Однако, по мере развития систем программирования этот процесс становится все более изученным. Появляются термины методология программирования [3], технология программирования [4–6], наука программирования [7–9] инженерия программного обеспечения [10,11]. Однако, в споре о том, что программирование это искусство или наука нет окончательного решения. Основным, определяющим элементом современных систем про граммирования является методология. Методология, как философская категория, это система принципов и основ организации и построения творческой и практической деятельности [12]. Таким образом, методология программирования есть система принципов, основ организации и построения программного обеспечения. В настоящее время уже разработано достаточно большое количество методологий. Ниже перечислены наиболее известные: 1) модульное программирование [13,14]; 2) структурное программирование [15–17]; 3) логическое программирование [18–20]; 4) событийно-ориентированное программирование; 5) объектно-ориентированное программирование [21–24]; 6) визуальное программирование [25–27]. 7) функциональное программирование [28–30]; 8) концептуальное программирование [31]; 9) доказательное программирование [32]; 10) мобильное программирование [33, 34]; 11) экстремальное программирование [35–37]. Исторически, многие методологии развивались параллельно и во площались в различных технологиях программирования и соответственно в системах программирования. Кроме того, методологии модульного, структурного, объектно-ориентированного и визуального программирования — развитие одной ветви, которая имеет универсальный характер применения. Другие, такие как концептуальное, функциональное, логическое программирование также носят универсальный характер, но применение нашли только в области искусственного интеллекта. Важно разграничить методологию и технологии программирования. Методология программирования больше отвечает за идейную сторону и философский аспект создания программ, в то время как технология базируется на той или иной методологии и несет больше практическую нагруз
ку по созданию программного обеспечения. В рамках одной методологии может быть большое количество технологий. Таким примером является методология объектно-ориентированного программирования. Технологий, поддерживающих объектно-ориентированное программирование, огромное количество. Например, OLE, COM, RUP и др. [38–43]. Кроме того, методологии программирования можно разделить на два класса [44]: тяжелые и гибкие (облегченные). В первом классе разработчик воспринимается как элемент методологии, который может быть заменен. Поэтому каждый шаг в таких методологиях должен быть подробно описан. Во втором классе, человек воспринимается как существеннонелинейный элемент методологии [45], а программный код является исходной документацией. В настоящее время наблюдается переход от тяжелых методологий к гибким. 1.2 Жизненный цикл программы Компьютерные учебные программы можно отнести к сложным про граммным системам. Это объясняется тем, что, во-первых, учебный процесс слабо формализуем, во-вторых, сама предметная область может быть достаточно сложной для обучения и соответственно для реализации ее модели в компьютерной учебной программе, в-третьих, сложность может представлять направленность КУП для определенной группы обучаемых. Известно [46], что для сложных программных систем жизненный цикл можно представить в виде шести этапов: 1. Выявление и анализ требований, предъявляемых к компьютерным учебным программам. 2. Определение спецификаций. 3. Проектирование. 4. Кодирование. 5. Тестирование и отладка. 6. Эксплуатация и сопровождение. Рассмотрим каждый этап этого цикла. Выявление и анализ требований, как правило, производится с помо щью системного анализа. Возьмем за основу методику системного анализа, представленную в работе [47, 48]. Эта методика первоначально предполагает выявление всех «заинте ресованных сторон» — участников проблемной ситуации. На рис. 1 представлены основные целеполагающие системы для КУП. Это прежде всего «обучаемый» — конечный пользователь КУП. Требования со стороны обучаемого можно разделить на три группы: – психолого-педагогические; – инженерно-психологические; – медицинские.
Рис. 1 — Основные целеполагающие системы Психолого-педагогические требования в целом определяют эффек тивность учебного процесса. Важнейшим требованием здесь является требование «компьютерная учебная программа должна научить». При этом: 1. КУП должна адаптироваться к физиологическим и психологиче ским особенностям обучаемого (память, темперамент, реакция, физическое и умственное развитие, возраст, зрение, слух). 2. КУП должна быть основана на деятельностном подходе в форми ровании психики, эрудиции и нравственных качеств. 3. КУП должна обеспечить постоянную и положительную мотива цию деятельности обучаемого. 4. КУП должна использовать комбинированные приемы обучения, которые развивают и используют как абстрактно-логическое, так и образно-эмоциональное мышление, интуицию обучаемого. 5. КУП должна впитывать в себя последние достижения в области педагогических наук. Инженерно-психологические требования определяют интерфейс между обучаемым и КУП. Здесь требования будут следующие: 1. Простота работы с КУП. 2. Дружелюбность интерфейса. 3. Приспособление к требованиям конкретного обучаемого, (напри мер, настройка цвета и шрифта текста, возможность увеличения шрифта). 4. Организация комфортного интерфейса. Медицинские требования определяют факторы КУП, которые влия ют на здоровье обучаемого. Эти требования не только определяют влияние компьютера на обучаемого, но и влияние самой КУП. Прежде всего, это касается зрения, психики и нервной системы. Некоторые требования, например время обучения с помощью некоторой КУП для разных групп учащихся, определяются федеральными санитарными правилами, нормами и гигиеническими нормативами.