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

Практика программирования на языке Паскаль (задачи и решения)

Покупка
Артикул: 816789.01.99
Доступ онлайн
399 ₽
В корзину
Учебное пособие содержит 662 задачи различного уровня сложности — от легких упражнений до сложных прикладных программ. На конкретных примерах показан профессиональный подход к стилю программирования, к надежности и корректности алгоритмов и программ. Глава 1 книги («Основы программирования») содержит 439 задач, многие из которых по силам школьникам и студентам подготовительного курса. Содержание этой части соответствует учебным программам по информатике, но не дублирует базовых учебников. Глава 2 книги («На пути к профессиональному программированию») предназначена для студентов технических специальностей, а также для всех энтузиастов, заинтересованных в создании собственных прикладных программ. За исключением нескольких простых упражнений, все программы проверены в системе Turbo Pascal 7.
Медведик, В. И. Практика программирования на языке Паскаль (задачи и решения) : учебное пособие / В. И. Медведик. - 2-е изд. - Москва : ДМК Пресс, 2023. - 591 с. - ISBN 978-5-89818-461-2. - Текст : электронный. - URL: https://znanium.com/catalog/product/2106230 (дата обращения: 04.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Практика программирования 
на языке Паскаль

(задачи и решения)

Москва, 2023

В. И. Медведик

2-е издание, электронное 
УДК 004.438Паскаль
ББК 32.973.26-018.2
М41

М41
Медведик, Владимир Иванович.
Практика программирования на языке Паскаль (задачи и решения) / 
В. И. Медведик. — 2-е изд., эл. — 1 файл pdf : 591 с. — Москва : ДМК Пресс, 
2023. — Систем. требования: Adobe Reader XI либо Adobe Digital Editions 
4.5 ; экран 10". — Текст : электронный.
ISBN 978-5-89818-461-2
Учебное пособие содержит 662 задачи различного уровня сложности — от легких 
упражнений до сложных прикладных программ. На конкретных примерах показан 
профессиональный подход к стилю программирования, к надежности и корректности 
алгоритмов и программ.
Глава 1 книги («Основы программирования») содержит 439 задач, многие из 
которых по силам школьникам и студентам подготовительного курса. Содержание 
этой части соответствует учебным программам по информатике, но не дублирует 
базовых учебников.
Глава 2 книги («На пути к профессиональному программированию») предназначена 
для студентов технических специальностей, а также для всех энтузиастов, заинтересованных 
в создании собственных прикладных программ.
За исключением нескольких простых упражнений, все программы проверены в 
системе Turbo Pascal 7.

УДК 004.438Паскаль 
ББК 32.973.26-018.2

Электронное издание на основе печатного издания: Практика программирования на языке 
Паскаль (задачи и решения) / В. И. Медведик. — Москва : ДМК Пресс, 2015. — 590 с. — ISBN 
978-5-94074-300-0. — Текст : непосредственный.

Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было 
форме и какими бы то ни было средствами без  письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но поскольку вероятность технических 
ошибок все равно существует, издательство не может гарантировать абсолютную точность и правильность 
приводимых сведений. В связи с этим издательство не несет ответственности за возможные  ошибки, связанные 
с использованием книги.

В соответствии со ст. 1299 и 1301 ГК РФ при устранении ограничений, установленных техническими средствами 
защиты авторских прав, правообладатель вправе требовать от нарушителя возмещения убытков или выплаты компенсации.


ISBN 978-5-89818-461-2
©  Медведик В. И., 2015
© Оформление, ДМК Пресс, 2015
Содержание

Предисловие .........................................................................5

Глава 1. Основы программирования ...............................8
1.1. Арифметика целых чисел. Ввод и вывод данных .................8
1.2. Арифметика действительных чисел .................................. 13
1.3. Условные операторы ........................................................ 18
1.4. Операторы цикла и массивы ............................................. 21
1.5. Данные типа string ............................................................ 28
1.6. Задачи различного содержания ........................................ 32
1.7. Процедуры и функции ....................................................... 36
1.8. Рекурсия ........................................................................... 43
1.9. Текстовые файлы .............................................................. 46
1.10. Случайные числа ............................................................. 48
1.11. Двоичные, шестнадцатеричные и другие коды ................ 51
1.12. Некоторые интересные и полезные программы .............. 52

Глава 2. На пути к профессиональному 
программированию ........................................................... 56
2.1. Аналитическая геометрия  ................................................ 56
2.2. Библиотека универсальных процедур ............................... 59
2.3. Применение библиотечных процедур ............................... 61
2.4. Геометрия ......................................................................... 64
2.5. Комбинаторика ................................................................. 68
2.6. Комплексные числа .......................................................... 71
2.7. Матрицы, определители, системы линейных уравнений ... 74
2.8. Простые числа .................................................................. 77
2.9. Числовые последовательности и ряды .............................. 78
2.10. Экстремумы функций, оптимизация ............................... 82
2.11. Задачи на шахматной доске ............................................ 84
2.12. Игровые и обучающие программы .................................. 86
Содержание

Глава 3. Ответы .................................................................. 89
Глава 1 ..................................................................................... 89
Глава 2 ................................................................................... 340

Литература ........................................................................ 567

Тематический указатель 1 ............................................. 569

Тематический указатель 2
(Языковые конструкции) ................................................ 571

Приложение 1. Настройка среды 
программирования (MS DOS) ....................................... 573

Приложение 2. Библиотечные функции 
и процедуры (Turbo Pascal 7) ........................................ 575
«Одно славолюбие не могло бы дать мне 
твердости постоянной, долговременной, 
необходимой в таком деле, если бы не находил 
я истинного удовольствия в самом  
труде и не имел надежды быть полезным...»

Н. М. Карамзин

Предисловие

В данное пособие включены задачи различного уровня сложности – 
от легких упражнений до трудных и очень трудных задач. Задачи 
повышенной трудности предназначены не для того, чтобы создавать «
проблемы» для студентов, – но для того, чтобы желающие 
смогли ознакомиться с профессиональными приемами программирования.

«
Программирование – это область инженерной деятельности, 
а не решение головоломок» ([20, с. 127]). 
«Несмотря на индивидуальные различия в стиле мышления, 
характере, уровне интеллектуальных способностей, одни и те же 
трудности испытывает большинство начинающих программистов, 
впервые сталкиваясь с задачами реального мира.
Характерными являются недооценка специфических трудностей 
практического программирования, резкий контраст между способностью 
к быстрому усвоению абстрактно-теоретических аспектов задачи 
и поразительной беспомощностью в вопросах практической реализации. ... 
В действительности написанная программа – это лишь 
очень незначительная по трудоемкости часть всей задачи» ([20, с. 3]).

Если читателю удастся в той или иной программе найти более 
краткое алгоритмическое решение, чем у автора, это отнюдь не 
озна чает того, что, казалось бы, должно означать... Автор придерживается 
определенной методологии, дисциплины программирования, 
согласно которой профессиональный стиль программирования, 
как правило, означает не сокращение, но увеличение текста 
программы. Например, следует избегать вычислений в операторах 
вывода, условных операторах, операторах цикла, операторах вызо-
Предисловие

ва процедур и функций (для чего приходится вводить дополнительные 
переменные и операторы присваивания).
Многие из программ данного сборника могут быть полезными 
при решении различных задач по математике и программированию, 
в частности при настройке рабочей среды в MS DOS. (Для 
более комфортной расцветки экрана, для отображения при запуске 
MS DOS даты и дня недели, для ведения учета сеансов работы 
в MS DOS. Эти и другие полезные программы  будут выполняться 
«автоматически» при каждом запуске MS DOS, если их включить 
в стартовый bat-файл MS DOS.)
Глава 1 книги («Основы программирования») содержит 439 задач, 
многие из которых по силам школьникам и студентам подготовительных 
курсов. Содержание этой части соответствует учебным 
программам по информатике, но не дублирует базовых учебников.
Глава 2 «На пути к профессиональному программированию»: 
программы, которые здесь приводятся, можно рассматривать как 
образцы профессионального подхода к программированию. Автор 
надеется, что читатели найдут здесь немало интересного и полезного 
для самостоятельной разработки серьезных прикладных программ. 
Для некоторой конкретной темы (например, «матрицы») 
вначале разрабатывается набор универсальных автономных процедур. 
Пос ле их проверки они помещаются в библиотечный модуль 
(unit) и далее используются как набор инструментов для разработки 
различных прикладных программ.
При анализе незнакомой программы особенно эффективны графические 
блок-схемы. «Блок-схемы являются универсальным инструментом 
анализа и разработки алгоритмов. Этот инструмент 
хорошо работает во всех случаях, независимо от особенностей алгоритма 
или языка программирования» ([20, с. 32]). 
Элементы профессионального стиля программирования:
 
типы данных byte и word (вместо integer);
 
защита от неправильного ввода данных;
 
регулируемые константы;
 
дополнительная диагностика (например, отсутствие файла);
 
обеспечение высокой точности вычислений;
 
предупреждение исключительных ситуаций (в частности, 
переполнения);
 
использование текстовых файлов для вывода результатов;
 
использование библиотечных процедур (модули UNIT) как 
инструментов разработки прикладных программ и систем.
Предисловие

В приложении 2 («Библиотечные функции и процедуры (Turbo 
Pascal 7)») содержатся описания наиболее употребительных функций 
и процедур.
В тексте данного пособия термин «напечатать» используется как 
синоним для «выдать на экран с помощью оператора Write» (либо 
«записать в выходной текстовый файл»).
Далее: 
 
«логический» – то же, что «булевский» (boolean),
 
«матрица» – то же, что двумерный массив.
Если в условии задачи сказано «дано число...», «дан массив ...» – 
это число или эти массивы должны быть введены оператором Read.
В программных комментариях '**' означает степень; Sqrt – корень 
квадратный; Root3, Root4... – корень третьей, четвертой... степени.
Пользуясь случаем, автор выражает благодарность Виктору 
Ивановичу Шофману за разнообразную помощь при подготовке 
к изданию настоящего пособия.

Декабрь 2012 г.
г. Кишинев
ursamic@gmail.com
Глава 1. Основы 
программирования

«Если вы хотите научиться плавать, то 
смело входите в воду, а если хотите научиться 
решать задачи, то решайте их».
Д. Пойа

1.1. Арифметика целых чисел. 
Ввод и вывод данных

Турбо Паскаль обеспечивает 5 типов целочисленных данных:

Тип 
Диапазон 
Размер (в байтах)
integer 
–32768, 32767 
2
longint 
–2147483648, 2147483647 
4
word 
0, 65535 
2
byte 
0, 255 
1
shortint 
–128, 127 
1

В стандартном Паскале был только один тип для целочисленных 
данных (integer), поэтому (даже в программах, написанных на высоком 
профессиональном уровне) другие типы не использовались. 
При выборе типа данных для переменной лучше использовать тип 
byte, если значения данной переменной должны соответствовать 
диапазону byte, и дело здесь конечно же не в экономии одного 
байта памяти. Аналогично, если значения переменной не должны 
быть отрицательными, лучше использовать тип word (а не integer). 
Если при выполнении программы значение переменной окажется 
вне диапазона соответствующего типа, это приведет к немедленному 
прерыванию и, таким образом, защитит от получения неверных 
результатов.
Размеры экрана в текстовом режиме MS DOS – 25×80 (25 строк, 
80 колонок). Если «печать» не умещается на экране, то можно при-
остановить процесс с помощью оператора «Readln;». (Программа 
останавливается и ждет нажатия клавиши <Enter>.)
При выводе на экран оператор «Writeln (#10,' ... ');» дает тот же 
результат, что следующие два оператора:

Writeln;
Writeln (' ... ');

1.1.1. Ввести с клавиатуры два целых числа и напечатать (выдать 
на экран) их значения.

1.1.2. Ввести с клавиатуры целое число и напечатать квадрат 
этого числа.

1.1.3. Ввести с клавиатуры целое число и напечатать куб этого 
числа.

1.1.4. Ввести с клавиатуры целое число n. Напечатать результат 
целочисленного деления на 2.

1.1.5. Напечатать следующую таблицу:
1
22
333
4444
55555
666666

1.1.6. Когда процедура вывода Writeln (X1, …, Xn) осуществляет 
перевод строки: до печати первого параметра X1 или после печати 
последнего параметра Xn?

1.1.7. Какие значения получат переменные A и B в результате 
выполнения программы?
var A, B : real;
begin
  A:= 4; B:= 2;
  A:= (A+B)/2 + A;
  B:= A*B*2;
  Writeln (A:8:2,B:8:2);
end.
1.1.8. Какое значение будет иметь переменная X после выполнения 
следующих операторов?
X:= 10; X:= X + 6; X:= 5*X;
1.1.9. Напечатать значение константы MaxInt.

Арифметика целых чисел. Ввод и вывод данных
Основы программирования

1.1.10. Ввести с клавиатуры два целых числа и напечатать их 
сумму, разность, произведение, а также результат целочисленного 
деления.
1.1.11. Проверить на четность данное целое число:
1) с применением функции Odd;
2) без применения функции Odd.
1.1.12. Ввести n целых чисел и вычислить их сумму.
1.1.13. Вычислить сумму первых n нечетных чисел натурального 
ряда. (Число n ввести с клавиатуры.)
1.1.14. Вычислить 2k (1 ≤ k ≤ 30). Получить результаты для 
k = 8, 10, 15, 16.
1.1.15. Напишите программу, с помощью которой можно «экспериментально» 
найти значение константы MaxInt. (Известно, что 
MaxInt > 30 000.)
1.1.16. Напишите программу, с помощью которой можно «экспериментально» 
найти значение наибольшего целого числа, допустимого 
для типа word. (Известно, что это число превышает 60 000.)
1.1.17. Напишите программу, с помощью которой можно «экспериментально» 
найти значение наибольшего целого числа, допустимого 
для типа longint. (Известно, что это число превышает 
2 147 000 000.)
1.1.18. Ввести с клавиатуры целое число. Если квадрат данного 
числа превышает значение MaxInt, напечатать сообщение.
1.1.19. Ввести с клавиатуры целое число. Если куб данного числа 
(по абсолютной величине) превышает значение MaxInt, напечатать 
сообщение.
1.1.20. Написать программу, которая вводит с клавиатуры натуральное 
число n и вычисляет значение выражения 21*481*n. Получить 
результаты для различных значений n из диапазона [11…99]. 
(Использовать тип longint.)
1.1.21. Какое число задумано? Программа предлагает вам задумать 
число. Вы должны удвоить задуманное число и к полученному 
произведению прибавить 5. Далее умножить полученное число на 
5 и прибавить к результату число 10. Полученную сумму умножить 
на 10. После чего вы сообщаете, какое у вас получилось число. Программа 
печатает задуманное вами число. (Задуманное число получается, 
если от результата отнять 350 и разделить на 100.)
Арифметика целых чисел. Ввод и вывод данных

1.1.22. По номеру Y года определить C – номер столетия. (Учесть, 
что, к примеру, началом XXI столетия был 2001, а не 2000 год.)
1.1.23. Дано натуральное число. Найти его наименьший делитель, 
отличный от 1.
1.1.24. Напечатать минимальное число, большее 500, которое нацело 
делится на 17.
1.1.25. Вычислить сумму цифр данного целого числа.
1.1.26. Вычислить сумму первых n чисел натурального ряда:
а) непосредственным суммированием: Sn = 1 + 2 + … + n;
б) по формуле для суммы членов арифметической прогрессии: 

1.1.27. Вычислить сумму квадратов первых n чисел натурального 
ряда:
а) непосредственным суммированием;

б) по формуле 
1.1.28. Вычислить сумму кубов первых n чисел натурального 
ряда:
а) непосредственным суммированием;

б) по формуле 
1.1.29. К данному двузначному числу приписать справа число, 
записанное теми же цифрами, но в обратном порядке. Напечатать 
полученное число. Проверить, делится ли оно на 11.
1.1.30. Для данного натурального n вычислить сумму 
Sn = 1·2 + 2·3 + … + n(n + 1):
а) непосредственным суммированием;

б) по формуле 
1.1.31. Для данного натурального n вычислить сумму 
Sn = 22 + 52 + 82 + … + (3n – 1)2:
а) непосредственным суммированием; 

б) по формуле 
1.1.32. Для данного натурального n вычислить сумму 
Sn = 12 + 42 + 72 + … + (3n – 2)2:
а) непосредственным суммированием;

б) по формуле 
Основы программирования

1.1.33. Проверить справедливость утверждения: «Если n – целое 
число, то n3 – n делится на 6». 
1.1.34. Для n = 1, 2, …, 50 проверить справедливость утверждения: «
n5 – 5n3 + 4n делится на 120 при любом целочисленном n». 
1.1.35. Для n = 1, 2, …, 1000 проверить справедливость утверждения: «
n(2n2 + 1) делится на 3 при любом натуральном n».
1.1.36. Для n = 1, 2, ..., 500 проверить справедливость утверждения: «
Сумма кубов трех последовательных целых чисел делится 
на 9».
1.1.37. Для n = 1, 2, …, 100 проверить справедливость утверждения: «
n3 + 11n делится на 6 при любом целочисленном n». 
1.1.38. Проверить справедливость утверждения: «Трехзначное 
число, в записи которого две последние цифры одинаковы и сумма 
его цифр делится на 7, делится без остатка на 7».
1.1.39. Найти двузначные числа, квадрат которых в десятичной 
записи оканчивается самим этим числом (например, 76×76 = 5376). 
Проверку выполнять только для тех чисел, последняя цифра которых 
равна 1, 5 или 6.
1.1.40. Для данных целых чисел a, b, c, d проверить тождество: 

Если числа a, b, c, d имеют недопустимые (равные нулю) значения, 
завершить выполнение программы с выдачей диагностического 
сообщения.
1.1.41*. Выполнить взаимный обмен значениями двух программных 
переменных A и B, не вводя других переменных.
1.1.42. Вычислить сумму Sn = 2 + 22 + 222 + 2222 + 22 222 + … + An 
(получить результат для n = 5).
1.1.43*. Сократить дробь k/n. (Найти такие натуральные числа 
k1 и n1, не имеющие общих делителей, что k/n = k1/n1).
1.1.44. Проверить тождество

для различных целочисленных значений a и b (a, b ∈ [–215, 215], 
a ≠ b).
1.1.45. Для данного натурального n вычислить сумму 
S = 14 + 24 + 34 + … + n4:  
Доступ онлайн
399 ₽
В корзину