Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Технологии программирования

Покупка
Артикул: 769631.01.99
Доступ онлайн
150 ₽
В корзину
Кручинин, В. В. Технологии программирования : учебное пособие / В. В. Кручинин. - Томск : Томский государственный университет систем управления и радиоэлектроники, 2013. - 271 с. - Текст : электронный. - URL: https://znanium.com/catalog/product/1845911 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Федеральное агентство по образованию 

 

ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ 

УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) 

 
 

Кафедра промышленной электроники 

 
 

В.В. Кручинин 

 
 
 
 
 

ТЕХНОЛОГИИ 

ПРОГРАММИРОВАНИЯ 

 
 
 

Учебное пособие 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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. Организация комфортного интерфейса. 
Медицинские требования определяют факторы КУП, которые влия
ют на здоровье обучаемого. Эти требования не только определяют влияние 
компьютера на обучаемого, но и влияние самой КУП. Прежде всего, это 
касается зрения, психики и нервной системы. Некоторые требования, 
например время обучения с помощью некоторой КУП для разных групп 
учащихся, определяются федеральными санитарными правилами, нормами 
и гигиеническими нормативами. 

Доступ онлайн
150 ₽
В корзину