Практика программирования на языке Паскаль (задачи и решения)
Покупка
Тематика:
Программирование на Pascal
Издательство:
ДМК Пресс
Автор:
Медведик Владимир Иванович
Год издания: 2023
Кол-во страниц: 591
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
Профессиональное образование
ISBN: 978-5-89818-461-2
Артикул: 816789.01.99
Учебное пособие содержит 662 задачи различного уровня сложности — от легких упражнений до сложных прикладных программ. На конкретных примерах показан профессиональный подход к стилю программирования, к надежности и корректности алгоритмов и программ.
Глава 1 книги («Основы программирования») содержит 439 задач, многие из которых по силам школьникам и студентам подготовительного курса. Содержание этой части соответствует учебным программам по информатике, но не дублирует базовых учебников.
Глава 2 книги («На пути к профессиональному программированию») предназначена для студентов технических специальностей, а также для всех энтузиастов, заинтересованных в создании собственных прикладных программ.
За исключением нескольких простых упражнений, все программы проверены в системе Turbo Pascal 7.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Практика программирования на языке Паскаль (задачи и решения) Москва, 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.)