Цифры первого числа будут обозначаться справа налево: a1 второго числа b1 их равными нулю (при работе на компьютере можно числа вводить по цифрам, начиная с конца, дополняя нулями). <...> Глава 2 Первая программа на языке Паскаль Пусть наша первая программа будет такой (это достаточно известная стандартная программа, используемая при изучении языков программирования): Program FIRST; {Первая программа} Begin Writeln('Здравствуй, мир! <...> Не рекомендуется их использование «вперемешку»: компьютер прекрасно поймет и слово BeGiN, и bEGin, человеку же придется напрягаться, чтобы уловить смысл такой программы. <...> Работа с файлами Каждая Паскаль-программа должна содержаться в отдельном файле. <...> Воспользуйтесь справочной системой, посмотрите, какой текст выдается к словам Begin, Writeln. <...> Глава 4 Структура Паскаль-программы Паскаль-программа состоит из заголовка и программного блока. <...> Операторы отделяются друг от друга точкой с запятой, а весь раздел заключается в операторные скобки Begin-End. <...> Описания переменных разного типа отделяются друг от друга точкой с запятой, а слово Var можно не повторять: Var K,M : Integer; Stroka : String; Здесь описаны две переменные K и M типа Integer и переменная Stroka типа String. <...> Вещественные числа — это числа, у которых есть целая и дробная части, пусть даже равные нулю. <...> Ко всем значениям ординального типа применима стандартная функция Ord, которая дает номер значения в типе. <...> Целые числа Для описания целых чисел обычно используется стандартное имя типа Integer. <...> Для хранения числа отводится фиксированный объем памяти, поэтому существует минимальное (отрицательное) и максимальное значение типа Integer. <...> Для этого составьте программу, в которой будет оператор WriteLn(MaxInt). <...> Наберите в редакторе слово Integer, подведите к нему курсор, вызовите справку нажатием Ctrl + F1. <...> Примеры изображения целых чисел: 1 100 0125 -53 +3200 Пример описания данных целого типа: Var K,M : Integer; Вещественные числа Для описания вещественных чисел обычно используется стандартное имя типа Real. <...> Примеры <...>
Программирование_в_примерах_и_задачах_(1).pdf
УДК 004.9
ББК 32.97
Г78
Грацианова Т. Ю.
Г78 Программирование в примерах и задачах / Т. Ю. Грацианова.—8-е
изд., электрон.—М. : Лаборатория знаний,
2025.—373 с.—(ВМК МГУ—школе).—Систем.
требования: Adobe Reader XI ; экран 10".—Загл.
с титул. экрана.—Текст : электронный.
ISBN 978-5-93208-830-2
Пособие поможет подготовиться к экзамену по информатике,
научиться решать задачи по программированию на языке
Паскаль. Рассмотрено большое количество программ; листинги
приведены в расчете на использование среды Турбо
Паскаль 7.0, однако в большинстве своем будут работать без
всяких изменений и в других версиях Паскаля. Некоторые
задачи имеют несколько вариантов решений, и в пособии
подробно разобрано, какое из них является наилучшим.
Для школьников 8–11 классов, учителей информатики
и методистов, а также студентов первых курсов технических
вузов.
УДК 004.9
ББК 32.97
Деривативное издание на основе печатного аналога: Программирование
в примерах и задачах / Т. Ю. Грацианова.—
7-е изд.—М. : Лаборатория знаний, 2021.—368 с. : ил.—
(ВМК МГУ—школе).—ISBN 978-5-00101-273-3.
В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений,
установленных техническими средствами защиты авторских прав,
правообладатель вправе требовать от нарушителя возмещения убытков
или выплаты компенсации
ISBN 978-5-93208-830-2
© Лаборатория знаний, 2015
Стр.3
Оглавление
ВВЕДЕНИЕ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
ГЛАВА 1. ОСНОВНЫЕ ПОНЯТИЯ И ОПРЕДЕЛЕНИЯ . . . . . . . . . . . . . . . . 5
Программирование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Этапы решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Что такое алгоритм? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Словесная формулировка алгоритма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Блок-схема. Основные конструкции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Переменная. Присваивание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Условие. Виды разветвлений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Цикл . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Массив . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Подпрограммы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Тестирование. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Исполнитель алгоритма . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Оптимальный алгоритм. Сложность алгоритма . . . . . . . . . . . . . . . . . . . 29
Задачи 1.1–1.26. Составление алгоритмов . . . . . . . . . . . . . . . . . . . . . . . . 30
ГЛАВА 2. ПЕРВАЯ ПРОГРАММА НА ЯЗЫКЕ ПАСКАЛЬ. . . . . . . . . . . . . . 35
Понятие об алфавите языка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Принципы записи и «внешний вид» программы. . . . . . . . . . . . . . . . . . . 38
ГЛАВА 3. ЭТАПЫ ПОДГОТОВКИ ПРОГРАММЫ. ПАСКАЛЬ-СРЕДА . . . . . 39
Этапы подготовки программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Основные функции Паскаль-среды . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Задачи 3.1–3.4. Работа в редакторе . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
ГЛАВА 4. СТРУКТУРА ПАСКАЛЬ-ПРОГРАММЫ. . . . . . . . . . . . . . . . . . . 51
ГЛАВА 5. ОСНОВНЫЕ ТИПЫ ДАННЫХ.
ОПИСАНИЯ ПЕРЕМЕННЫХ. ПРИСВАИВАНИЕ . . . . . . . . . . . . . . . . . . . . . 53
Некоторые типы данных и работа с ними . . . . . . . . . . . . . . . . . . . . . . . . 54
Оператор присваивания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
Стр.366
366 Оглавление
Пример программы с разными типами данных
и операторами присваивания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Задачи 5.1–5.17. Числа и формулы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
ГЛАВА 6. ВВОД С КЛАВИАТУРЫ И ВЫВОД НА ЭКРАН . . . . . . . . . . . . . 68
Оператор ввода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Оператор вывода. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Форматный вывод. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
Грамотное использование операторов ввода и вывода . . . . . . . . . . . . . . 72
Примеры программ с вводом-выводом. . . . . . . . . . . . . . . . . . . . . . . . . . . 73
Задачи 6.1–6.27. Ввод и вывод. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
ГЛАВА 7. РАЗВЕТВЛЕНИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Условный оператор. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
Составной оператор . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Решение задач с условным оператором . . . . . . . . . . . . . . . . . . . . . . . . . . 83
Оператор выбора. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Задачи 7.1–7.35. Программы с разветвлениями . . . . . . . . . . . . . . . . . . . 93
ГЛАВА 8. ТИП BOOLEAN. ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ . . . . . . . . . . . . . 96
Логические значения, логические константы . . . . . . . . . . . . . . . . . . . . . 96
Булева алгебра, алгебра логики . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Логические операции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Составление логических выражений . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Задачи с логическими выражениями . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
Программы с логическими выражениями . . . . . . . . . . . . . . . . . . . . . . . 107
Задачи 8.1–8.11. Логическое выражение . . . . . . . . . . . . . . . . . . . . . . . . 113
ГЛАВА 9. ОПЕРАТОРЫ ЦИКЛА . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
Циклы с предусловием и с постусловием . . . . . . . . . . . . . . . . . . . . . . . 118
Решение задач с помощью циклов с постусловием
и с предусловием . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
Задачи 9.1–9.12. Циклы While и Repeat . . . . . . . . . . . . . . . . . . . . . . . . . 129
Оператор цикла с параметром. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
Решение задач с помощью оператора цикла с параметром . . . . . . . . . 132
Задачи 9.13–9.21. Цикл For . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Задачи 9.22–9.24. Разные циклы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136
Цикл со сложным условием. Досрочный выход из цикла . . . . . . . . . . 137
Процедура Break . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141
Обработка последовательностей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142
Стр.367
Оглавление 367
Задачи 9.25–9.55. Работа с последовательностью . . . . . . . . . . . . . . . . . 152
Вокруг максимума . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
Задачи 9.56–9.65. Поиск наибольших и наименьших значений . . . . . 160
Вложенные циклы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
Задачи 9.66–9.70. Вложенные циклы . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Решение задач методом перебора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
Задачи 9.71–9.74. Метод перебора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Работа с таблицами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Задачи 9.75–9.81. Работа с таблицами . . . . . . . . . . . . . . . . . . . . . . . . . . 169
Задачи 9.82–9.115. Оператор цикла. Разные задачи . . . . . . . . . . . . . . . 171
ГЛАВА 10. МАССИВ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Задание типов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Тип данных «Массив» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
Задачи 10.1–10.21. Массив. Заполнение, печать . . . . . . . . . . . . . . . . . . 188
А нужен ли массив? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Перестановка элементов массива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Задачи 10.22–10.29. Перестановка элементов . . . . . . . . . . . . . . . . . . . . 197
Сортировка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Задачи 10.30–10.35. Сортировка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 205
Поиск в массиве . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206
Вспомогательный массив. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
Метод подсчета . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214
Задачи 10.36–10.45. Метод подсчета . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
Строки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
Задачи 10.46–10.58. Символьные массивы, строки . . . . . . . . . . . . . . . 237
Матрицы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
Решение задач с матрицами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241
Задачи 10.59–10.71. Работа с матрицей . . . . . . . . . . . . . . . . . . . . . . . . . 247
ГЛАВА 11. ПРОЦЕДУРЫ И ФУНКЦИИ . . . . . . . . . . . . . . . . . . . . . . . . 248
Описание процедур и функций . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250
Обращение к подпрограмме. Фактические параметры . . . . . . . . . . . . 251
Принцип локализации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253
Задачи 11.1–11.3. Вызов процедуры и функции . . . . . . . . . . . . . . . . . . 255
Работа с процедурами. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
Задачи 11.4–11.12. Процедуры с входными параметрами
и функции. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263
Параметры-переменные и параметры-значения . . . . . . . . . . . . . . . . . . 264
Примеры использования процедур и функций . . . . . . . . . . . . . . . . . . . 267
Задачи 11.13–11.21. Процедуры и функции с входными
и выходными параметрами. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270
Стр.368
368 Оглавление
ГЛАВА 12. РЕКУРСИЯ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
Работа рекурсивных процедур и функций . . . . . . . . . . . . . . . . . . . . . . . 272
Задачи 12.1–12.5. Работа рекурсивных процедур и функций . . . . . . . 277
Рекурсивные алгоритмы. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278
Задачи 12.6–12.19. Написать рекурсивную процедуру
или функцию . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288
ГЛАВА 13. РАБОТА С ФАЙЛАМИ . . . . . . . . . . . . . . . . . . . . . . . . . . . 290
Описание файла . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 291
Стандартные процедуры и функции для работы с файлами . . . . . . . . 291
Примеры работы с файлами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297
Задачи 13.1–13.17. Типизированные файлы . . . . . . . . . . . . . . . . . . . . . 301
Текстовые файлы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303
Задачи 13.18–13.30. Текстовые файлы . . . . . . . . . . . . . . . . . . . . . . . . . . 310
ГЛАВА 14. КОМБИНИРОВАННЫЙ ТИП (ЗАПИСЬ) . . . . . . . . . . . . . . . 312
Работа с типом «запись» . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313
Задачи 14.1–14.5. Работа с записями. . . . . . . . . . . . . . . . . . . . . . . . . . . . 319
ГЛАВА 15. НЕКОТОРЫЕ ДОПОЛНИТЕЛЬНЫЕ ПРОЦЕДУРЫ
И ФУНКЦИИ ЯЗЫКА ТУРБО ПАСКАЛЬ . . . . . . . . . . . . . . . . . . . . . . . . . 321
Функция Random . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321
Задачи 15.1–15.11. Работа с генератором случайных чисел . . . . . . . . 323
Модуль CRT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Работа со звуком . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324
Задачи 15.12–15.18. Работа со звуком . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Работа с экраном. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 332
Задачи 15.19–15.42. Работа с экраном . . . . . . . . . . . . . . . . . . . . . . . . . . 341
Работа с клавиатурой . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343
Задачи 15.43–15.52. Работа с клавиатурой . . . . . . . . . . . . . . . . . . . . . . 354
Задачи 15.53–15.61. Общие задачи с модулем СRT . . . . . . . . . . . . . . . 355
ГЛАВА 16. РАЗНЫЕ ЗАДАЧИ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 356
Стр.369