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

Основы программирования

Покупка
Артикул: 033931.05.99
Доступ онлайн
2 100 ₽
В корзину
Изложены основные теоретические положения разработки программного обеспечения с использованием структурного и объектно-ориентированных подходов. Подробно рассмотрены основные приемы решения задач различных классов, в том числе приемы создания и обработки динамических структур данных, без которых невозможно современное программирование. Особое внимание уделено оценке точности получаемых результатов и анализу вычислительной сложности алгоритмов и методов. Большое количество примеров и поясняющих рисунков помогает лучшему усвоению материала. Содержание учебника соответствует курсу лекций, которые автор читает в МГТУ им. Н.Э. Баумана. Для студентов вузов, обучающихся по специальностям, связанным с информатикой. Может быть полезен всем изучающим программирование самостоятельно.
Иванова, Г. С. Основы программирования : учебник / Г. С. Иванова. - Москва : МГТУ им. Баумана, 2007. - 416 с. - ISBN 978-5-7038-3027-7. - Текст : электронный. - URL: https://znanium.com/catalog/product/2009702 (дата обращения: 27.07.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Информатика в техническом университете 

 
Информатика в техническом университете 

Серия основана в 2000 году 

РЕДАКЦИОННАЯ КОЛЛЕГИЯ: 

чл.-кор. РАН И.Б. Федоров — главный редактор 
д-р техн. наук И.П. Норенков — зам. главного редактора 
д-р техн. наук В.В. Девятков 
канд. техн. наук И.П. Иванов 
д-р техн. наук В.А. Матвеев 
канд. техн. наук Н.В. Медведев 
д-р техн. наук В.В. Сюзев 
д-р техн. наук Б.Г. Трусов 
д-р техн. наук В.М. Черненький 
д-р техн. наук В.А. Шахнов 
Г.С. Иванова

Основы
программирования

Издание четвертое, стереотипное

Москва
Издательство МГТУ имени Н.Э. Баумана
2007

Допущено Министерством образования
Российской Федерации
в качестве учебника для студентов
высших учебных заведений, обучающихся по направлению
«Информатика и вычислительная техника»,
специальностям: «Вычислительные машины, комплексы,
системы и сети», Автоматизированные системы обработки
информации и управления», «Программное обеспечение
вычислительной техники и информационных систем»

«
УДК 681.3.06(075.8)
ББК 32.973-018
И201

Рецензенты:
профессор Л.Д. Забродин (Московский государственный инженернофизический институт); кафедра «ЭВМ, комплексы и сети» Московского
государственного авиационного института (зав. кафедрой профессор 
О.М. Брехов) 

Иванова Г.С.
И201    

Изложены основные теоретические положения разработки программного обеспечения 
с использованием структурного и объектно-ориентированных подходов. Подробно 
рассмотрены основные приемы решения задач различных классов, в том числе
приемы создания и обработки динамических структур данных, без которых невозможно 
современное программирование. Особое внимание уделено оценке точности получаемых 
результатов и анализу вычислительной сложности алгоритмов и методов.
Большое количество примеров и поясняющих рисунков помогает лучшему усвоению
материала. 
Содержание учебника соответствует курсу лекций, которые автор читает в МГТУ
им. Н.Э. Баумана.
Для студентов вузов, обучающихся по специальностям, связанным с информатикой. 
Может быть полезен всем изучающим программирование самостоятельно. 

УДК 681.3.06(075.8)
ББК 32.973-018

© Г.С. Иванова, 2004

© Оформление. Издательство  
ISBN 978-5-7038-3027-7
МГТУ им. Н.Э. Баумана, 2004

Основы программирования: Учебник для вузов. – 4-е изд., стер. –
М.: Изд-во МГТУ им. Н.Э. Баумана, 2007. – 416 с.: ил. (Сер. «Информатика 
в техническом университете».)
ISBN 978-5-7038-3027-7
Оглавление

Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
8
Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
10

Часть 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ  
И ПРОЦЕДУРНОЕ ПРОГРАММИРОВАНИЕ . . . . . . . . . . . 
12

1. Этапы создания программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . 
12
1.1. Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
12
1.2. Анализ, формальная постановка и выбор метода решения . . . . . . . . . 
13
1.3. Проектирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
14
1.4. Реализация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
20
1.5. Модификация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
23
1.6. Практикум. Разработка алгоритмов методом пошаговой 
детализации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
24

2. Простейшие конструкции языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
28
2.1. Синтаксис и семантика языка программирования . . . . . . . . . . . . . . . . . 
28
2.2. Структура программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
30
2.3. Константы и переменные. Типы переменных . . . . . . . . . . . . . . . . . . . . 
31
2.4. Выражения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
38
2.5. Оператор присваивания. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
40
2.6. Процедуры ввода-вывода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
42
2.7. Практикум. Оценка точности результатов . . . . . . . . . . . . . . . . . . . . . . . 
45

3. Управляющие операторы языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
50
3.1. Оператор условной передачи управления . . . . . . . . . . . . . . . . . . . . . . . . 
50
3.2. Практикум. Тестирование программ . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
52
3.3. Оператор выбора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
56
3.4. Операторы организации циклической обработки . . . . . . . . . . . . . . . . . 
58
3.5. Практикум. Точность решения задач вычислительной математики. . . 
63
3.6. Неструктурные алгоритмы и их реализация . . . . . . . . . . . . . . . . . . . . . 
69

4. Структурные типы данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
77
4.1. Массивы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
77
4.2. Практикум. Обработка одномерных массивов . . . . . . . . . . . . . . . . . . . . 
87

5
Оглавление

4.3. Практикум. Сортировка массивов. Оценка вычислительной 
сложности алгоритма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
96
4.4. Практикум. Обработка матриц . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
104
4.5. Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
113
4.6. Практикум. Обработка и поиск символьной информации . . . . . . . . . 
120
4.7. Множества . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
127
4.8. Записи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
136

5. Модульное программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
144
5.1. Процедуры и функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
144
5.2. Практикум. Выделение подпрограмм методом пошаговой 
детализации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
150
5.3. Модули . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
156
5.4. Открытые массивы и строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
159
5.5. Нетипизированные параметры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
162
5.6. Параметры процедурного типа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
166
5.7. Рекурсия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
168
5.8. Практикум. Полный и ограниченный перебор. Реализация    
ограниченного перебора с использованием рекурсии . . . . . . . . . . . . 
179

6. Файловая система. Файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
188
6.1. Файловая система MS DOS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
188
6.2. Файлы Borland Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
190
6.3. Текстовые  файлы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
196
6.4. Типизированные файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
201
6.5. Нетипизированные файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
207
6.6. Процедуры и функции библиотеки DOS для работы с файлами . . . . 
209

7. Программирование с использованием динамической памяти . . . . . . 
212
7.1. Указатели и операции над ними . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
212
7.2. Управление динамической памятью . . . . . . . . . . . . . . . . . . . . . . . . . . . 
218
7.3. Динамические структуры данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
223
7.4. Линейные односвязные списки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
226
7.5. Бинарные деревья . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
238
7.6. Практикум. Разбор арифметических выражений с использованием  
бинарных деревьев . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
247

8. Управление техническими средствами и взаимодействие с MS DOS . 
254
8.1. Управление экраном в текстовом режиме . . . . . . . . . . . . . . . . . . . . . . . 
254
8.2. Управление клавиатурой . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
260
8.3. Управление динамиком . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
262
8.4. Практикум. Создание меню . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
264
8.5. Управление экраном в графическом режиме . . . . . . . . . . . . . . . . . . . . 
267
8.6. Практикум. Построение графиков и диаграмм . . . . . . . . . . . . . . . . . . 
279
8.7. Практикум. Создание движущихся изображений . . . . . . . . . . . . . . . . 
285
8.8. Взаимодействие с драйвером мыши . . . . . . . . . . . . . . . . . . . . . . . . . . . 
293
8.9. Управление задачами. Вызов дочерних процессов . . . . . . . . . . . . . . . 
300
Часть 2. ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ 
ПРОГРАММИРОВАНИЕ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303

9. Основные теоретические положения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
303
9.1. Объектная декомпозиция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
303
9.2. Классы и объекты-переменные . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
305
9.3. Методы построения классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
306
9.4. Этапы реализации объектно-ориентированного подхода . . . . . . . . . . 
312

10. Классы и объекты в Borland Pascal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
314
10.1. Объявление класса. Поля и методы . . . . . . . . . . . . . . . . . . . . . . . . . . . 
314
10.2. Объявление объекта. Инициализация полей . . . . . . . . . . . . . . . . . . . . 
316
10.3. Библиотеки классов. Ограничение доступа к полям и методам . . . 
319
10.4. Практикум. Создание универсальных объектов . . . . . . . . . . . . . . . . . 
321

11. Иерархии классов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
327
11.1. Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
327
11.2. Композиция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
330
11.3. Наполнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
332
11.4. Простой полиморфизм . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
334
11.5. Сложный полиморфизм. Конструкторы . . . . . . . . . . . . . . . . . . . . . . . 
336
11.6. Практикум. Использование полиморфизма при создании     
движущихся изображений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
344
11.7. Динамические полиморфные объекты. Деструкторы . . . . . . . . . . . . 
348
11.8. Практикум. Создание контейнеров . . . . . . . . . . . . . . . . . . . . . . . . . . . 
354

12. Разработка библиотеки интерфейсных элементов . . . . . . . . . . . . . . . . 
360
12.1. Анализ реальной программы и определение основных 
интерфейсных элементов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
360
12.2. Проектирование классов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
365
12.3. Реализация универсальных интерфейсных элементов . . . . . . . . . . . 
367
12.4. Создание программы с использованием библиотеки интерфейсных  
элементов. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
373

Приложение
П1. Основные стандартные процедуры и функции . . . . . . . . . . . . . . . . . . . 
384
П2. Русская кодовая таблица для MS DOS . . . . . . . . . . . . . . . . . . . . . . . . . . 
385
П3. Расширенные scan-коды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
386
П4. Основные отличия Delphi Pascal от Borland Pascal 7.0 . . . . . . . . . . . . . 
387
П5. Создание приложений Windows с использованием среды 
программирования Delphi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 
391

Список литературы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

Предметный указатель . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414

Оглавление
ПРЕДИСЛОВИЕ

Преподавание основ программирования в вузах сопряжено с целым рядом 
проблем. Во-первых, современное программирование – сложная и быстро 
развивающаяся наука. Если сравнить то, что студент должен знать в этой
области сейчас и 20 лет назад, то разница окажется ошеломляющей. В то же
время реальные часы, отводимые в программах вузов для изучения основ
программирования, практически не изменились. Во-вторых, подготовка студентов, 
осуществляемая в данной области школой, может варьироваться от
полного отсутствия каких-либо знаний по предмету до относительно свободного 
владения каким-либо языком программирования.
Кроме того, программирование – наука, неразрывно связанная с практикой. 
Невозможно научиться программировать, не проведя много часов за составлением 
алгоритмов, написанием и отладкой программ. Причем учебнопрактическую работу желательно совмещать с процессом изучения методов
разработки программ и освоением особенностей конкретного языка программирования. 
Следовательно, элементы технологии программирования и
алгоритмизации должны изучаться параллельно с языком программирования. 
Таким образом, один курс как бы включает в себя несколько курсов. 
Решение перечисленных проблем потребовало тщательного отбора и
структуризации материала, включенного в учебник. Это результат 20-летнего 
преподавания программирования в МГТУ им. Н.Э. Баумана. Курс, читаемый 
автором в настоящее время, построен следующим образом. 
На лекциях излагаются основы технологии программирования, сведения, 
необходимые для решения тех или иных задач, и поясняются конкретные 
языковые средства. Лекции иллюстрируются большим количеством
рисунков и примеров (программ и схем алгоритмов), по возможности минимального 
размера, чтобы конкретные возможности и особенности было легко 
понять и запомнить. 
Семинары посвящаются обсуждению определенных проблем, связанных 
с решением некоторого класса задач. Как правило, на них анализируются 
не программы, а алгоритмы или подходы. Например, рассматривается
метод пошаговой детализации и его применение для разработки алгорит
мов, понятия «точность полученных результатов», «вычислительная сложность 
алгоритма», «емкостная сложность алгоритма» и способы их оценки. 
Во время лабораторного практикума студенты самостоятельно под контролем 
преподавателей разрабатывают программы решения индивидуального 
набора задач по изучаемым темам. Задание каждому студенту выдается в
начале семестра, поэтому он имеет возможность выполнять задания по мере
освоения материала, что обеспечивает определенную степень индивидуализации 
обучения.
Изложение материала курса в учебнике следует той же схеме. Главы содержат 
необходимые сведения из теории программирования, описание конкретных 
средств Borland Pascal и особенностей взаимодействия программ с
техническими и программными средствами. При этом особое внимание уделяется 
наиболее важным моментам, без рассмотрения которых дальнейшее
изучение программирования практически невозможно. Это, в частности,
проблемы создания рекурсивных программ, работа с динамическими структурами 
данных и объектно-ориентированный подход. Материал проблемных
семинаров курса выделен в специальные разделы, названные практикумами.
В конце большинства разделов приведены вопросы и задачи для самопроверки.

Данная книга представляет собой четвертое издание учебника. В связи с
новой редакцией программ обучения основам программирования в него
включены материалы по основам событийного программирования и отличиям 
Delphi Pascal от Borland Pascal 7.0. Кроме того, изменена графическая нотация, 
используемая для пояснения основ объектно-ориентированного программирования, 
что связано с практическим утверждением UML (Unified
Modeling Language – Универсальный язык моделирования) в качестве международного 
стандарта описания объектно-ориентированных разработок. 
Автор глубоко признателен кандидату технических наук, доценту 
Т.Н. Ничушкиной за предоставленные материалы и огромную помощь в подготовке 
книги, а также  рецензентам: заведующему кафедрой «Компьютерные 
системы и технологии» МИФИ доктору технических наук, профессору
Л. Д. Забродину и коллективу кафедры «ЭВМ, комплексы и сети» МАИ во
главе с доктором технических наук, профессором  О.М. Бреховым за полезные 
замечания и советы.
Хочется также выразить особую благодарность студентам, принявшим
активное участие в обсуждении первого издания учебника, за их советы и замечания, 
учтенные автором во втором издании данной книги.  

Предисловие
ВВЕДЕНИЕ

Язык программирования Паскаль был создан в 1971 г. профессором Цюрихского 
университета Никлаусом Виртом и предназначался для обучения
студентов как основам алгоритмизации и программирования, так и основам
конструирования компиляторов. Язык полностью отвечал принципам структурного 
программирования, сформулированным к тому моменту, имел ярко
выраженную блочную структуру и развитое представление данных. Однако,
будучи учебным, он имел ограниченные средства реализации ввода-вывода и
создания библиотек подпрограмм.
В разные годы было разработано несколько вариантов компиляторов с
Паскаля для различных типов ЭВМ. Наибольшее распространение получил
Turbo (Borland) Pascal, предложенный фирмой Borland Internation (США).
Существовало несколько версий. Последняя версия, предназначенная для создания 
программного обеспечения «под MS DOS» – версия 7.0, включает:
• интегрированную среду разработки программ, ставшую в некоторой
степени прототипом создания аналогичных сред для других языков программирования; 
• 
средства разработки многомодульных программ;
• средства управления экраном в текстовом и графических режимах;
• средства объектно-ориентированного программирования;
• усовершенствованную систему типов данных.
Современным программистам приходится иметь дело с огромным количеством 
разнообразных языков программирования различных уровней и назначений. 
Но по-прежнему начинать изучение программирования целесообразно 
на базе Паскаля, так как при использовании этого языка у будущего
программиста быстрее формируется четкое алгоритмическое мышление.
Весомым аргументом в пользу изучения основ программирования именно 
на базе Паскаля также является существование профессиональной визуальной 
среды разработки программного обеспечения Delphi, которая использует 
в качестве базового языка Паскаль. Практика показывает, что переход к
разработке программного обеспечения в этой среде после изучения базового
курса происходит достаточно безболезненно, хотя и требует некоторых дополнительных 
знаний. 
В настоящее время при разработке сложного программного обеспечения
обычно используют одну из двух технологий: структурное программирование 
или объектно-ориентированное программирование.
Первая технология для разработки сложных программ рекомендует разбивать (
декомпозировать) программу на подпрограммы (процедуры), решающие 
отдельные подзадачи, т. е. базируется на процедурной декомпозиции. 
Вторая технология использует более сложный подход, при котором в
предметной области задачи выделяют отдельно функционирующие элементы. 
Поведение этих объектов программно моделируется с использованием
специальных средств, а затем (уже из готовых объектов) опять же специальным 
способом собирается сложная программа. Таким образом, в основе второй 
технологии лежит объектная декомпозиция.
Именно объектная технология лежит в основе используемой Delphi библиотеки 
стандартных компонентов, поэтому переход в эту среду целесообразно 
осуществлять только после изучения основных принципов объектного
подхода, изложенных в данном учебнике. 
Кроме объектного подхода для работы в Delphi необходимо иметь представление 
об основных отличиях Delphi Pascal и визуальных средах, использующих 
принцип событийного программирования.  
Изучение объектной технологии требует наличия базовых знаний, поэтому 
на первых этапах мы будем придерживаться принципов процедурного
программирования.

Введение 
Часть 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ
И ПРОЦЕДУРНОЕ ПРОГРАММИРОВАНИЕ

1. ЭТАПЫ СОЗДАНИЯ ПРОГРАММНОГО 
ОБЕСПЕЧЕНИЯ

В процессе разработки программ с использованием процедурного подхода можно
выделить следующие этапы:
• постановка задачи – определение требований к программному продукту;
• анализ – осуществление формальной постановки задачи и определение методов
ее решения;
• проектирование – разработка структуры программного продукта, выбор структур
для хранения данных, построение и оценка алгоритмов подпрограмм и определение особенностей 
взаимодействия программы с вычислительной средой (другими программами, 
операционной системой и техническими средствами);
•  реализация – составление программы на выбранном языке программирования, ее
тестирование и отладка;
•  модификация – выпуск новых версий программного продукта. 

1.1. Постановка задачи

Процесс создания нового программного обеспечения начинают с постановки 
задачи, в процессе которой определяют требования к программному
продукту. 
Прежде всего устанавливают набор выполняемых функций, а также перечень 
и характеристики исходных данных. Так, для числовых данных может
задаваться точность, для текстовых – возможно, размер текста, способ кодировки 
и т. п. Затем определяют перечень результатов, их характеристики и
способы представления  (в виде таблиц, диаграмм, графиков и т. п.). Кроме
того, уточняют среду функционирования программного продукта: конкретную 
комплектацию и параметры технических средств, версию используемой
операционной системы и, возможно, версии и параметры другого установ
1.  Этапы создания программного обеспечения

           Сбой
Технические средства

Операционная система

Программа

Исходные
данные
(перечень,
характеристики,
способ
представления)

Результаты
(перечень,
характеристики,
способ
представления)

Сбой энергоснабжения

ленного программного обеспечения, с которым предстоит взаимодействовать
будущему программному продукту. 
В тех случаях, когда разрабатываемое программное обеспечение собирает 
и хранит некоторую информацию или включается в управление каким-либо 
техническим процессом, необходимо также четко регламентировать действия 
программы при сбоях оборудования и энергоснабжения (рис. 1.1). 
В результате согласования между заказчиком и исполнителем всех перечисленных 
вопросов составляют техническое задание в соответствии с
ГОСТ 19.201–78, которое служит основанием для дальнейшей работы.

1.2. Анализ, формальная постановка и выбор метода решения 

На данном этапе по результатам анализа условия задачи выбирают математические 
абстракции, адекватно, т.е. с требуемой точностью и полнотой,
представляющие исходные данные и результаты, строят модель задачи и определяют 
метод преобразования исходных данных в результат (метод решения 
задачи).
Пример 1.1. Разработать программу, которая по заданным длинам сторон 
прямоугольника определяет его площадь.
Исходными данными в этом случае являются длины сторон прямоугольника, 
т.е. некоторые числовые значения, для которых должны быть заданы
диапазон изменения и точность. Математические абстракции для представления 
исходных данных – некие изменяемые значения – переменные. Результат – 
площадь прямоугольника – также некоторое числовое значение, диапазон 
возможных значений и точность которого зависят от соответствующих
характеристик исходных данных. Математической абстракцией результата
также является переменная. Модель задачи можно представить в виде:

Рис. 1.1. Факторы, определяющие параметры разрабатываемого 
программного обеспечения

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