Допущено учебно-методическим объединением вузов по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности 220400 «Программное обеспечение вычислительной техники и автоматизированных систем»

ОГЛАВЛЕНИЕ
ПРЕДИСЛОВИЕ 3
ВВЕДЕНИЕ 5
ГЛАВА 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ 10
1.1. Понятие алгоритма 10
1.2. Алгоритмическая система 12
1.3. Алгоритмизация 13
1.4. Средства записи алгоритмов 14
1.4.1 Словесная запись алгоритмов 15
1.4.2. Схемы алгоритмов 18
1.4.3. Структурограммы 23
1.5. Технологии разработки алгоритмов 25
Вопросы для самоконтроля 29
Упражнения 29
1.6. Структуры алгоритмов 31
1.6.1. Алгоритм линейной структуры 31
1.6.2. Ветвления 32
1.8. Циклы 34
1.9. Итерационные циклы 42
1.10. Вложенные циклы 42
1.11. Вспомогательные или подчиненные алгоритмы 45
Вопросы для самоконтроля 48
Упражнения 48
ГЛАВА 2. ВВЕДЕНИЕ В СРЕДУ ПРОГРАММИРОВАНИЯ TURBO PASCAL 50
2.1. Состав среды Turbo Pascal 50
2.2. Системное меню 52
2.2.1. Меню опции File 52
2.2.2. Меню редактирования Edit 53
2.2.3. Меню поиска информации Search 54
2.2.4. Меню опции Run 54
2.2.5. Меню опции Compile 55
2.2.6. Меню отладки Debug 56
2.2.7. Меню инструментальных средств Tools 56
2.2.8. Меню опции Option 56
2.2.8.1. Директивы компилятора 57
2.2.9. Меню окон Window 58
2.2.10. Меню информационной помощи Help 59
2.3. Загрузка среды Turbo Pascal 60
2.4. Работа с помощью меню 60
2.5. Ввод программы в среде Turbo Pascal 62
2.6. Сохранение программы в файле 62
2.7. Работа с существующей программой 63
2.8. Компиляция программы в среде Turbo Pascal 64
2.9. Выполнение программ в среде Turbo Pascal 67
2.10. Выход из среды Turbo Pascal 67
Вопросы для самоконтроля 68
Упражнения 68
ГЛАВА 3. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ 76
3.1. Основные символы 76
3.2. Данные 76
3.2.1. Понятие типа данных 76
3.2.2. Константы 77
3.2.2.1. Числовые константы 77
3.2.2.1.1. Целые константы 77
3.2.2.1.2. Вещественные константы 78
3.2.2.2. Логические константы 79
3.2.2.3. Символьные константы 79
3.2.2.4. Строковые константы 79
3.2.3. Переменные и идентификаторы 79
3.2.4. Целые типы 80
3.2.5. Вещественные типы 81
3.3. Арифметические выражения 81
3.4. Стандартные функции 83
3.5. Оператор присваивания 84
3.6. Структура программы 85
3.7. Стиль записи программ на языке Паскаль 86
3.8. Пример составления программы 88
Вопросы для самоконтроля 89
Упражнения 90
ГЛАВА 4. ПРОГРАММИРОВАНИЕ АЛГОРИТМОВ РАЗВЕТВЛЯЮЩЕЙСЯ СТРУКТУРЫ 92
4.1. Условный оператор 92
4.2. Логический (булевый) тип 93
4.4. Симвлоьный тип 95
4.3. Операторы в конструкциях then и else 96
4.4. Оператор варианта 99
Вопросы для самоконтроля 102
Упражнения 102
ГЛАВА 5. ПРОЕКТИРОВАНИЕ ПРОГРАММ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ 106
5.1. Программирование циклических программ с известным числом повторений 106
5.1.1. Оператор цикла с параметром 106
5.1.2. Табулирование функции 107
5.1.3. Вычисление конечных сумм и произведений 109
5.1.4. Использование различных типов данных в циклических программах 111
5.1.4.1. Перечисляемый тип 113
5.1.4.2. Ограниченные (интервальные) типы 114
Вопросы для самоконтроля 115
Упражнения 115
5.2. Конструирование программ циклической структуры с неизвестным числом повторений. 118
5.2.1 Оператор цикла с предусловием 118
5.2.2. Оператор цикла с постусловием 120
5.2.3. Итерационные циклы. Вычисление суммы ряда 123
5.2.4. Метод итерации для уточнения корней 127
Вопросы для самоконтроля 128
Упражнения 129
5.3. Проектирование алгоритмов и программ со структурой вложенных циклов 133
5.3.1. Табулирование функций от нескольких переменных 133
5.3.2. Вычисление кратных сумм и произведений 135
Вопросы для самоконтроля 138
Упражнения 138
ГЛАВА 6. ОРГАНИЗАЦИЯ ВВОДА-ВЫВОДА 142
6.1. Назначение операторов ввода-вывода 142
6.2. Ввод исходных данных. Операторы Read и ReadLn 143
6.2.1. Ввод числовых данных любых вещественных и целых типов 144
6.2.2. Ввод символьных и строковых данных 144
6.3. Вывод результатов. Операторы (процедуры) Write и WriteLn 147
6.4. Управление выводом 148
6.5. Представление результатов решения 149
6.5.1. Табулирование функции 149
6.5.2. Рисование фигуры 150
6.5.3. Построение объемного изображения 151
6.5.4. Вывод графика 152
Вопросы для самоконтроля 155
Упражнения 155
ГЛАВА 7. ОТЛАДКА ПРОГРАММ 159
7.1. Понятие об отладке программ 159
7.2. Причины и типы ошибок 160
7.3. Способы и средства отладки 161
7.4. Отладка программы в интегрированной среде 163
7.4.1. Пошаговая отладка программы 165
7.4.2. Выполнение программы до определенной точки 166
7.4.3. Перезапуск программы 169
7.4.4. Просмотр и модификация параметров программы 169
7.4.4.1. Окно Watches 169
7.4.4.2. Окно Evaluate and Modify 170
7.4.4.3. Окно Output 171
7.4.5. Работа с подпрограммами 172
Вопросы для самоконтроля 172
Упражнения 172
ГЛАВА 8. ОБРАБОТКА МАССИВОВ ДАННЫХ 174
8.1. Описание массива 174
8.2. Одномерные массивы 174
8.3. Двумерные массивы 179
8.4. Ввод-вывод массивов 180
8.5. Примеры программирования задач с использованием массивов 182
Вопросы для самоконтроля 189
Упражнения 189
ГЛАВА 9. МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ 192
9.1. Процедуры и функции 192
9.1.1. Описание процедур 192
9.1.2. Описание функций 194
9.1.3. Вызов процедур 195
9.1.4. Вызов функций 198
9.1.5. Блочный принцип организации программ 199
9.1.6. Пример составления программы 201
Вопросы для самоконтроля 204
Упражнения 204
9.2. Обмен данными между программными блоками. Параметры процедур и функций 207
9.2.1. Параметры-значения и параметры-переменные 207
9.2.2. Параметры-константы 209
9.2.3. Параметры открытого типа 210
9.2.4. Параметры без типа 211
9.2.5. Параметры-процедуры и параметры-функции. Процедурный тип 212
9.2.6. Пример составления программы 215
Вопросы для самоконтроля 218
Упражнения 219
9.3. Рекурсии 222
9.3.1. Понятие рекурсии 222
9.3.2. Техника построения рекурсивных алгоритмов 224
9.3.3. Формы рекурсий 228
9.3.3.1. Простая линейная рекурсия 228
9.3.3.2. Параллельная рекурсия 228
9.3.3.3. Взаимная рекурсия 229
9.3.3.4. Рекурсия более высокого порядка 231
9.3.4. Рекурсия и итерация 231
9.3.5. Пример составления программы 234
Вопросы для самоконтроля 237
Упражнения 237
9.4. Создание модулей 239
9.4.1. Структура модуля 239
9.4.1.1. Заголовок модуля и связь модулей друг с другом 239
9.4.1.2. Интерфейсная секция 240
9.4.1.3. Секция реализации 240
9.4.1.4. Секция инициализации 241
9.4.2. Использование модулей в основной программе 241
9.4.3. Компиляция модулей 244
9.4.4. Стандартные модули 244
9.4.5. Пример создания личной библиотеки 246
Вопросы для самоконтроля 251
Упражнения 251
ГЛАВА 10. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ 252
10.1. Строковый тип данных 254
10.1.1. Базовый тип 254
10.1.2. Объявление строкового типа 256
10.1.3. Операции над строками 258
10.1.4. Стандартные процедуры и функции обработки строк 258
10.1.5. Ввод-вывод строк 261
10.1.6. ASCIIZ-строки 262
10.1.7. Пример составления программы 263
Вопросы для самоконтроля 266
Упражнения 266
10.2. Комбинированные типы данных 268
10.2.1. Описание записи 268
10.2.2. Селектор записи 269
10.2.3. Оператор присоединения 271
10.2.4. Вложенные записи 272
10.2.5. Записи с вариантами 274
10.2.6. Пример составления программы 275
Вопросы для самоконтроля 280
Упражнения 280
10.3. Создание и преобразование файлов. Файлы прямого доступа 283
10.3.1. Понятие файла 283
10.3.2. Типизированные файлы 283
10.3.2.1. Определение файлового типа 283
10.3.2.2. Процедуры и функции обработки файлов 285
10.3.2.3. Файлы последовательного доступа 287
10.3.3. Текстовые файлы 288
Упражнения 293
10.3.4. Файлы произвольного доступа 295
10.3.5. Нетипизированные файлы 298
Вопросы для самоконтроля 300
Упражнения 300
10.4. Организация данных в множества 302
10.4.1. Понятие и определение множества в теории множеств 302
10.4.2. Понятие и обозначение множества в Паскале 303
10.4.3. Определение множественного типа и переменных-множеств 304
10.4.4. Операции над множествами 305
10.4.5. Использование множеств в программах 306
Вопросы для самоконтроля 310
Упражнения 310
ГЛАВА 11. ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ 313
11.1. Ссылочный тип данных 313
11.2. Операции над указателями 314
11.3. Динамические переменные 317
11.4. Работа со списковыми динамическими структурами 322
11.4.1. Создание пустого списка 322
11.4.2. Включение элемента в начало списка 322
11.4.3. Перемещение по списку и поиск заданного элемента 323
11.4.4. Вставка элемента между соседними элементами списка 324
11.4.5. Вставка элемента в конец списка 324
11.4.6. Удаление первого элемента списка 325
11.4.7. Удаление объекта, стоящего между соседними элементами списка 325
11.4.8. Удаление последнего элемента списка 326
11.4.9. Удаление всех элементов списка 326
11.4.10. Вывод на печать всех элементов списка 326
11.5. Пример составления программы 327
Вопросы для самоконтроля 332
Упражнения 332
ПРИЛОЖЕНИЕ 1. СООБЩЕНИЯ ОБ ОШИБКАХ В СРЕДЕ TURBO-PASCAL 336
П.1.1. Сообщения об ошибках периода компиляции 336
П.1.2. Ошибки периода выполнения программ в среде Turbo-Pascal 352
П.1.2.1. Ошибки DOS 352
П.1.2.2. Ошибки ввода-вывода 354
П.1.2.3. Критические ошибки 354
П.1.2.4. Фатальные ошибки. 355
П.1.2.5. Ошибки DPMI 358
П.1.2.5.1. Ошибки DPMIINST 358
П.1.2.5.2. Ошибки фиктивного модуля 358
П.1.2.5.3 Ошибки администратора этапа выполнения 359
ПРИЛОЖЕНИЕ 2. ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА ЯЗЫКА TURBO PASCAL 7.0 362
ПРИЛОЖЕНИЕ 3. ДИРЕКТИВЫ КОМПИЛЯТОРА 364
П.3.1. Информация для отладки 364
П.3.2. Информация о локальных идентификаторах 365
П.3.3. Проверка результата ввода-вывода 365
П.3.4. Проверка переполнения при математических операциях 366
П.3.5. Проверка границ/диапазонов 366
П.3.6. Проверка переполнения стека 366
П.3.7. Проверка параметров строкового типа 367
ПРИЛОЖЕНИЕ 4. СТАНДАРТНЫЕ МОДУЛИ 368
П.4.1. Модуль Crt 368
П.4.2. Модуль DOS 371
П.4.3. Модуль Graph 380
П.4.4. Модуль Overlay 399
П.4.5. Модуль Printer 400
П.4.6. Модуль Strings 401
П.4.7. Модуль System 404
П.4.8. Модуль WinDos 421
СПИСОК ЛИТЕРАТУРЫ 431

ПРЕДИСЛОВИЕ
Внедрение и широкое использование средств вычислительной техники является одним из главных факторов ускорения научно-технического прогресса в нашей стране. Без использования быстродействующих ЭВМ и современных информационных технологий немыслимо решение задач интенсификации производственной, коммерческой и управленческой деятельности, а также создание конкурентоспособных и эффективных изделий различного применения.
Темпы научно-технического прогресса, усиление роли науки в значительной степени определяются качеством и номенклатурой средств вычислительной техники и их программным обеспечением. Именно развитие этих средств обеспечивает успехи в автоматизации производственных процессов, в разработке новых технологий, в повышении эффективности труда и управления, в совершенствовании системы образования и в ускорении подготовки кадров.
Интенсивное развитие вычислительной техники, ее проникновение во все сферы человеческой деятельности ставит перед специалистами задачу широкого распространения компьютерной грамотности и использования ЭВМ в учебном процессе. В нашей стране актуальность этой проблемы нашла выражение в сформулированных положениях реформы средней школы, перестройки высшего и среднего специального образования.
Широкое и многообразное применение ЭВМ предъявляет все более высокие требования к их программному обеспечению. Разработка программ и программных комплексов приобретает характер индустриального производства. Значение программного обеспечения трудно переоценить, так как именно программы определяют и создают “интеллект” компьютера. В то же время процесс создания программ относится к одной из наиболее сложных сфер творческой деятельности человека, требующей больших усилий и специальной технологии разработки.
При составлении программ применяются различные языки программирования, среди которых Паскаль занимает особое место. Отражая основные концепции структурного программирования, язык Паскаль быстро завоевал популярность среди специалистов. В последнее время широкое распространение получают универсальные языки программирования (Си, Модула, Ада, Параллельный Паскаль и др.), в основу которых положены средства и конструкции языка Паскаль.
Настоящее учебное пособие по языку Турбо Паскаль предназначено в первую очередь для учащихся, не имеющих навыков работы на ЭВМ (учащихся средних специальных учебных заведений, студентов вузов младших курсов, инженеров, не имеющих навыков работы с ЭВМ, слушателей факультетов повышения квалификации и др.).
Во введение рассмотрен процесс решения задач на ЭВМ, даны характеристики различных его этапов. В первой главе изложены основы алгоритмизации и структурного программирования, средства записи алгоритмов. Вторая глава посвящена изучению среды программирования языка Турбо Паскаль и основам выполнения программ на персональном компьютере. Материал третьей главы содержит описание подмножества языка, позволяющее реализовать простейшие линейные алгоритмы. В четвертой главе приведено описание базовых управляющих конструкций языка Паскаль, рассмотренных с позиций структурного программирования. Здесь же изложены основы проектирования программ по методу "сверху вниз". Пятая глава содержит информацию о всех типах циклических структур Турбо Паскаля, принципах программирования циклов с известным числом повторений, итерационных циклов и циклов вложенной структуры. Шестая глава посвящена вопросам организации ввода — вывода данных в Паскаль программах. Седьмая глава позволяет получить глубокие знания и навыки отладки программ на Турбо Паскале. В восьмой главе даны основные принципы обработки регулярного типа данных – массивов. Основные правила составления и использования подпрограмм (процедур и функций) изложены в девятой главе, изложены принципы модульного программирования. Структурированные типы данных (строки, записи, множества, файлы) и примеры их использования рассмотрены в десятой главе. Ссылочные типы и организация динамических структур данных описываются в одиннадцатой главе. В конце каждой главы приведены вопросы для самоконтроля и задания для самостоятельной работы.
В приложениях даны сообщения об ошибках, список зарезервированных слов языка, директивы компилятора, описаны процедуры и функции стандартных модулей языка.
Авторы выражают благодарность рецензентам, сделавшим ряд ценных замечаний при подготовке данного пособия.


ВВЕДЕНИЕ
Решение любой задачи с использованием ЭВМ состоит из нескольких взаимосвязанных этапов, среди которых чаще всего выделяют следующие:
1) техническое задание (постановка задачи);
2) формализация (математическая постановка задачи);
3) выбор (или разработка) метода решения;
4) разработка алгоритма (алгоритмизация);
5) выбор языка программирования;
6) структура данных;
7) оптимизация;
8) подготовка отладки;
9) тесты и методы “ручной” проверки (без использования ЭВМ);
10) запись программы на конкретном языке программирования;
11) тестирование и отладка;
12) вычисления и обработка результатов;
13) документирование.
Последовательное выполнение перечисленных этапов составляет полный цикл разработки, отладки и счета программы. Приведенное разделение является условным.
Рассмотрим более подробно некоторые наиболее общие и необходимые этапы.
Постановка задачи. При постановке задачи первостепенное внимание должно быть уделено выяснению конечной цели и выработке общего подхода к исследуемой проблеме: выяснению, существует ли решение поставленной задачи и единственно ли оно; изучению общих свойств рассматриваемого физического явления или объекта; анализу возможностей конкретной ЭВМ и данной системы программирования. На этом этапе требуется глубокое понимание существа поставленной задачи. Правильно сформулировать задачу иногда не менее сложно, чем ее решить.
Формализация. Формализация, как правило, сводится к постро¬ению математической модели рассматриваемого явления, когда в результате анализа существа задачи определяются объем и специфика исходных данных, вводится система условных обозначений, устанавливается принадлежность решаемой задачи к одному из известных классов задач и выбирается соответствующий математический аппарат. При этом нужно уметь сформулировать на языке математики конкретные задачи физики, механики, экономики, технологии и т.д. Для успешного преодоления этого этапа требуются не только солидные сведения из соответствующей предметной области, но и хорошее знание вычислительной математики, т.е. тех методов, которые могут быть использованы при решении задачи на машине.
Полная постановка многих сложных задач невыполнима средствами вычислительной техники. Поэтому эти задачи нужно упрощать. Грамотное упрощение задачи невозможно без хорошего представления о том, какие факторы и параметры наиболее важны для изучаемой задачи, а какие — менее существенны. При этом также очень важно знать, какая из возможных расчетных схем может привести к упрощениям вычислительного характера, обусловленным выбором вычислительного метода. Если имеющихся средств недостаточно, тогда необходимо разработать новый подход, новые методы исследования.
Выбор метода решения. После того как определена математическая формулировка задачи, надо выбрать метод ее решения. Вообще говоря, применение любого метода приводит к построению ряда формул и к формулировке правил, определяющих связи между этими формулами. Все это разбивается на отдельные действия так, чтобы вычислительный процесс мог быть выполнен машиной. При выборе метода надо учитывать, во-первых, сложность формул и соотношений, связанных с тем или иным численным методом, во-вторых, необходимую точность вычислений и характеристики самого метода. На выбор метода решения большое влияние оказывают вкусы и знания самого пользователя.
Этот этап — важнейший в процессе решения задачи. С ним связаны многочисленные неудачи, являющиеся результатом легкомысленного подхода к ошибкам вычислений. При решении задачи на ЭВМ необходимо помнить, что любой получаемый результат является приближенным! Если известен алгоритм точного решения, то кроме случайных ошибок (сбоев в работе ЭВМ) возможны ошибки, связанные с ограниченной точностью представления чисел в ЭВМ. При вычислениях, заключающихся в нахождении результата с заданной степенью точности, возникает дополнительная погрешность, которую, если возможно, оценивают на данном этапе (до выхода непосредственно на ЭВМ). Эта погрешность определяется выбранным численным методом решения задачи.
Разработка алгоритма. Данный этап заключается в разложении вычислительного процесса на возможные составные части, установлении порядка их следования, описании содержания каждой такой части в той или иной форме и последующей проверке, которая должна показать, обеспечивается ли реализация выбранного метода. В большинстве случаев не удается сразу получить удовлетворительный результат, поэтому составление алгоритма проводится методом “проб и устранения ошибок” и для получения окончательного варианта требуется несколько шагов коррекции и анализа.
Как правило, в процессе разработки алгоритм проходит несколько этапов детализации. Первоначально составляется укрупненная схема алгоритма, в. которой отражаются наиболее важные и существенные связи между исследуемыми процессами (или частями процесса). На последующих этапах раскрываются (детализируются) выделенные на предыдущих этапах части вычислительного процесса, имеющие некоторое самостоятельное значение. Кроме того, на каждом этапе детализации выполняется многократная проверка и исправление (отработка) схемы алгоритма. Подобный подход позволяет избежать возможных ошибочных решений.
Ориентируясь на крупноблочную структуру алгоритма, можно быстрее и проще разработать несколько различных его вариантов, провести их анализ, оценку и выбрать наилучший (оптимальный).
Эффект поэтапной детализации алгоритма во многом зависит от того, как осуществляется его структуризация: расчленение алгоритмического процесса на составные части, что должно определяться не произволом пользователя (программиста), а внутренней логикой самого процесса. Каждый элемент крупноблочной схемы алгоритма должен быть максимально самостоятельным и логически завершенным в такой степени, чтобы дальнейшую его детализацию можно было выполнять независимо от детализации остальных элементов. Это упрощает процесс проектирования алгоритма и позволяет осуществлять его разработку по частям одновременно нескольким людям.
В процессе разработки алгоритма могут использоваться различные способы его описания, отличающиеся по простоте, наглядности, компактности, степени формализации, ориентации на машинную реализацию и другим показателям. В практике программирования наибольшее распространение получили:
1) словесная запись алгоритмов;
2) схемы алгоритмов;
3) псевдокод (формальные алгоритмические языки);
4) структурограммы (диаграммы Насси-Шнейдермана).
Разработка алгоритмов является в значительной степени творческим, эвристическим процессом, как правило, требует большой эрудиции, изобретательности, нестандартных и нетрадиционных подходов к решению задачи.
Более подробно данный этап программирования будет рассмотрен в главе 1.
Составление программы Представление алгоритма в форме, допускающей ввод в машину и последующий перевод на машинный язык, относится к этапу составления программы (программированию), т.е. разработанный алгоритм задачи необходимо изложить на языке, который будет понятен ЭВМ непосредственно или после предварительного машинного перевода. От выбора языка программирования зависит процесс отладки программы, во время которого программа принимает окончательный рабочий вид. Таким языком может быть язык программирования Паскаль.
Этот язык был предложен в 1970 г. профессором Никлаусом Виртом из Цюриха (Швейцария). Он был назван в честь известного математика Блеза Паскаля, который изобрел один из первых калькуляторов. Языку Паскаль принадлежит особая роль в современном программировании: опираясь на результаты, полученные при разработке алгоритмического языка Алгол-60, он заложил основы современной методологии программирования. Основной тезис его разработки: “язык должен быть очевидным и естественным отражением фундаментальных и наиболее важных концепций алгоритмов”. Широкое распространение языка Паскаль на всех современных ЭВМ свидетельствует о его высокой практической ценности в различных сферах применения.
Отладка программы. Составление программы представляет собой трудоемкий процесс, требующий от исполнителя напряженного внимания. Практика показывает, что в вычислениях следует избегать поспешности и придерживаться золотого правила: “лучше меньше, да лучше”. Но на предыдущих этапах столько возможностей допустить ошибку, что, как бы мы тщательно ни действовали, первоначально составленная, программа обычно содержит ошибки и машина или не может дать ответа, или приводит неправильное решение.
Отладка начинается с того, что программа, аккуратно записанная на бланке, проверяется непосредственно лицом, осуществившим подготовку и программирование задачи. Выясняется правильность написания программы, выявляются смысловые и синтаксические ошибки и т.п. Затем программа вводится в память ЭВМ и ошибки, оставшиеся незамеченными, выявляются уже непосредственно с помощью машины.
Опытный пользователь ЭВМ знает, что необходим действенный контроль над процессом вычислений, позволяющий своевременно обнаруживать и предотвращать ошибки. Для этого используются различного рода интуитивные соображения, правдоподобные рассуждения и контрольные формулы. Начинающий пользователь часто считает отладку излишней, а получение контрольных точек — неприятной дополнительной работой. Однако очень скоро он убеждается, что поиск пропущенной ошибки требует значительно большего времени, чем время, затраченное на контроль.
Гарантией правильности решения может служить, например:
а) проверка выполнения условий задачи (например, для алгебраического уравнения найденные корни подставляются в исходное уравнение и проверяются расхождения левой и правой частей);
б) качественный анализ задачи;
в) пересчет (по возможности другим методом).
Для некоторых сложных по структуре программ процесс отладки может потребовать значительно больше машинного времени, чем собственно решение на ЭВМ, так как плохо спланированные процессы алгоритмизации, программирования и отладки приводят к ошибкам, которые могут быть обнаружены лишь после многократных проверок.
Вычисления и обработка результатов. Только после того как появится полная уверенность, что программа обеспечивает получение правильных результатов, можно приступать непосредственно к расчетам по программе.
После завершения расчетов наступает этап использования результатов вычислений в практической деятельности или, как говорят, этап внедрения результатов, Интерпретация результатов вычислений снова относится к той предметной области знаний, откуда возникла задача.