Практикум по программированию на PascalABC.NET
Покупка
Тематика:
Программирование на Pascal
Издательство:
Директ-Медиа
Автор:
Савина Елена Владимировна
Год издания: 2021
Кол-во страниц: 124
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
Среднее профессиональное образование
ISBN: 978-5-4499-1915-1
Артикул: 827044.01.99
PascalABC.NET — современная версия языка программирования Паскаль, предназначенного для обучения программированию. Настоящий практикум включает краткую справку по языку и собственно задания и упражнения для лабораторных и практических занятий по таким дисциплинам, как «Информатика и программирование», «Языки программирования» и ряду других. Задания разделены по темам, и в каждом разделе приведены решения наиболее типичных задач.
В силу простоты и доступности, язык PascalABC.NET широко используется на начальных этапах обучения программированию. Настоящий практикум предназначен для обучения в системе СПО, он также может быть рекомендован преподавателям школ и вузов.
Тематика:
ББК:
УДК:
ОКСО:
- Среднее профессиональное образование
- 09.02.01: Компьютерные системы и комплексы
- 09.02.02: Компьютерные сети
- 09.02.03: Программирование в компьютерных системах
- 09.02.04: Информационные системы (по отраслям)
- 09.02.05: Прикладная информатика (по отраслям)
- 09.02.06: Сетевое и системное администрирование
- 09.02.07: Информационные системы и программирование
- 09.02.08: Интеллектуальные интегрированные системы
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Е. В. Савина ПРАКТИКУМ ПО ПРОГРАММИРОВАНИЮ на PascalABC.NET Москва Берлин 2021
УДК 004.432(075) ББК 32.973.22я723 С13 Рецензенты Кобзаренко Дмитрий Николаевич, доктор технических наук, ведущий научный сотрудник Института проблем геотермии и возобновляемых энергоресурсов — Филиала Объединенного института высоких температур РАН; Мустафаев Арслан Гасанович, доктор технических наук, доцент кафедры информационных технологий и информационной безопасности Дагестанского государственного университета народного хозяйства Савина, Е. В. С13 ISBN 978-5-4499-1915-1 PascalABC.NET — современная версия языка программирования Паскаль, пред‐ назначенного для обучения программированию. Настоящий практикум включает краткую справку по языку и собственно задания и упражнения для лабораторных и практических занятий по таким дисциплинам, как «Информатика и программирова‐ ние», «Языки программирования» и ряду других. Задания разделены по темам, и в каждом разделе приведены решения наиболее типичных задач. В силу простоты и доступности, язык PascalABC.NET широко используется на начальных этапах обучения программированию. Настоящий практикум предназначен для обучения в системе СПО, он также может быть рекомендован преподавателям школ и вузов. УДК 004.432(075) ББК 32.973.22я723 ISBN 978-5-4499-1915-1 © Савина Е. В., текст, 2021 © Издательство «Директ‐Медиа», оформление, 2021 Практикум по программированию на PascalABC.NET / Е. В. Савина. — Москва ; Берлин : Директ-Медиа, 2021. — 124 с.
ОГЛАВЛЕНИЕ ОБ АВТОРЕ 4 Введение 5 I. Основные сведения о языке PascalABC.NET 6 II. Задачи и упражнения 13 1. Алфавит языка PascalABC.NET. Оператор присваивания. Ввод/вывод данных 13 2. Простые типы данных. Совместимость типов. Преобразование типов 17 3. Реализация линейных и разветвляющихся алгоритмов 23 4. Программирование циклических алгоритмов 28 5. Массивы 36 6. Записи, множества 44 7. Обработка символов и строк 49 8. Файлы 52 9. Процедуры и функции 57 10. Графика 60 III. Комплексные задания по разным темам 63 Ответы и комментарии 74 IV. Тестовые задания по темам 80 Ответы к тестовым заданиям 118 Список рекомендуемой литературы 121
ОБ АВТОРЕ Савина Елена Владимировна, кандидат физико‐математических наук, доцент кафедры «Информационные технологии и информационная безопасность» Дагестанского государственного университета народно‐ го хозяйства (г. Махачкала).
Введение Язык Паскаль, созданный Н. Виртом в начале 70-х годов прошлого века для обучения студентов программированию, до сих пор не утратил своей актуальности. Его современная версия — PascalABC для платформы NET (в настоящем Практикуме используется версия 3.6.3 от 09.06.2020) предоставляет пользователю мощные возможности для создания программ, поддерживая императивный, объектно-ориентированный и функциональный стили программирования. При этом язык прост в изучении и использовании и наилучшим образом подходит для выполнения своей основной задачи — обучения принципам программирования, методам реализации базовых алгоритмов. Структурно Практикум состоит из четырех частей. В первой части приведена краткая справочная информация о синтаксисе языка, во второй — задания для выполнения лабораторных и практических работ, разделенные по темам. В начале каждого раздела второй части приведены примеры решения наиболее типичных задач с комментариями. В третьей части содержатся комплексные задания с элементами теста, для выполнения которых необходимы знания из различных разделов курса. Задания третьей части предназначены для выполнения без компьютера, они направлены на развитие навыка чтения программного кода, что является чрезвычайно важным в обучении программированию. К заданиям третьей части приведены ответы и необходимые пояснения. Четвертая часть содержит порядка 200 тестовых заданий по разным разделам курса программирования на PascalABC.NET с ответами. Их удобно использовать для формирования тестов разного назначения (текущая проверка знаний, промежуточный и итоговый контроль, самоконтроль). Для эффективной работы с Практикумом необходимо изучение литературы с подробным описанием языка PascalABC.NET. Список рекомендуемой литературы и Интернет-источников приведен в конце издания. Кроме того, нельзя не отметить, что PascalABC.NET располагает превосходной справочной системой, включающей, помимо, собственно, справочника по языку, несколько обучающих блоков (задачник, модули «Робот» и «Чертежник» и т. д.). Практикум может быть использован для работы на практических и лабораторных занятиях, составления заданий для контрольных работ, карточек, самостоятельной подготовки студентов.
I. Основные сведения о языке PascalABC.NET 1. Алфавит языка PascalABC.NET (далее — PasABC) включает: 1) буквы латинского алфавита от a до z и от A до Z и знак подчеркивания; 2) цифры — арабские от 0 до 9; 3) специальные символы + — * / = , . ‘ : ; < > [ ] ( ) { } ^ @ $ #, пары символов <> <= >= := += –= *= /= ** (* *) (. .) и знак пробела; 4) зарезервированные слова и директивы. Зарезервированные слова используются для описания операторов, данных, модулей, процедур и функций и т. д. 2. Идентификаторы в PascalABC.NET — имена переменных, констант, типов, меток, подпрограмм (процедур и функций), программ, модулей, объектов и полей в записях. Идентификатор должен начинаться с буквы или знака подчеркивания и включать только буквы, цифры и знак подчеркивания. PascalABC.NET нечувствителен к регистру (прописные и строчные буквы эквивалентны). 3. В качестве констант могут использоваться целые и вещественные числа, логические константы (false или true), символы, строки символов, конструкторы множеств и неопределенный указатель nil. 4. Выражение представляет собой комбинацию переменных, констант и обращений к функциям (операндов), соединенных знаками операций. 5. В PascalABC.NET определены следующие операции: унарные not, @; бинарные: 1) мультипликативные *, /, div, mod, and; 2) аддитивные +, -, or, xor; 3) операции отношения =, <>, <, >, <=, >=, in. Операции приведены в порядке убывания приоритета. Порядок выполнения операций можно изменять с помощью круглых скобок. 6. Структура программы в PascalABC.NET имеет следующий вид: program <имя программы>; // строка заголовка { Раздел описаний } begin { Раздел исполняемых операторов } end. Строка заголовка является необязательной. В разделе описаний должны быть описаны все константы, типы данных (если они определяются пользователем) и метки, используемые в программе. Раздел описания типов начинается с зарезервированного слова type, констант — const, меток — label. Разделы описания типов, констант, меток могут следовать в любом порядке и встречаться любое количество раз. В разделе описаний также могут быть описаны глобальные переменные, которые должны быть доступны во всех частях программы. Однако описание переменной, которое начинается с зарезервированного слова var, в Pas 6
calABC.NET рекомендуется располагать в разделе операторов непосредственно перед первым использованием этой переменной. PascalABC.NET допускает также определение типа переменной по инициализации. Примеры: var a: real; var a := 1; // переменной а будет присвоен тип integer. 7. В таблице 1 приведены некоторые стандартные функции, определенные в PascalABC.NET. Заметим, что в предыдущих версиях языка Паскаль не было функции возведения в степень. В PascalABC.NET для этого предназначена операция, обозначаемая сдвоенным символом **, а также функция двух переменных power(x, y). Кроме того, в PascalABC.NET определена функция swap(x, y), которая меняет местами значения переменных x и y. Таблица 1 Функция (процедура) Тип аргумента Тип результата Действие abs(x) вещественный, целый совпадает с x модуль x ArcTan(x) - * real арктангенс (в радианах) ArcSin(x) - * real ArcCos(x) - * real cos(x) - * real косинус, аргумент в радианах sin(x) - * real синус, аргумент в радианах tan(x) - * real exp(x) - * real экспонента (𝑒𝑥) ln(x) - * real натуральный логарифм sqr(x) - * real квадрат аргумента sqrt(x) - * real квадратный корень int(x) вещественный real целая часть числа frac(x) вещественный real дробная часть числа round(x) вещественный integer ближайшее целое trunc(x) вещественный integer отсечение дробной части dec(x [,i]) целый совпадает с x уменьшает значение x на i, если i отсутствует, то на 1 inc(x [,i]) целый совпадает с x увеличивает значение x на i, если i отсутствует, то на 1 Hi(i) byte возвращает старший байт аргумента Lo(i) byte возвращает младший байт аргумента odd(x) целый boolean true, если аргумент — нечетное число, иначе false random(x) word word возвращает псевдослучайное число из диапазона 0..(x — 1) 7
Продолжение табл. 1 Функция (процедура) Тип аргумента Тип результата Действие chr(x) byte char по коду символа х возвращает символ upcase(x) char char если х — строчная латинская буква, возвращает пропис ную, иначе — символ х high(x) диапазон базовый порядковый максимальное значение типадиапазона low(x) диапазон базовый порядковый минимальное значение типадиапазона pred(x) порядковый совпадает с x предыдущее значение х succ(x) порядковый совпадает с x следующее значение х ord(x) порядковый целый если х — целое, возвращает х, если символ — его код 9. Операторы Операторы в языке PascalABC.NET делятся на простые и структуриро ванные. Простые операторы не содержат в себе других операторов. К простым операторам относятся: оператор безусловного перехода; оператор присваивания; оператор обращения к процедуре. 1) Оператор безусловного перехода goto<метка> позволяет изменять порядок выполнения операторов, использовать не рекомендуется. 2) Оператор присваивания <имя_переменной> := <выражение>; a := 3.14; b := sqrt(a*a — 1); d := a/(a + b). PascalABC.NET допускает использование сокращенных операторов присваивания += -= *= /= Запись a += 2 эквивалентна a := a + 2, запись b *= 3 эквивалентна b := b*3 и т. д. 3) Процедуры ввода данных: read(x1, x2, …, xn); readln(x1, x2, …, xn); x1, x2, …, xn — список вводимых переменных, процедура readln после считывания последнего значения переводит курсор на новую строку. Процедура readln без параметров останавливает выполнение программы до нажатия клавиши Enter. Кроме этого, в PascalABC.NET есть обширный набор функций ввода, которые позволяют одним оператором выполнять описание типа переменной и присваивание ей значения, вводимого с клавиатуры, например: var a := ReadInteger; а также множественный ввод данных, например: var (a, b, c) := ReadReal3; 8
Функции ввода данных в PascalABC.NET: ReadReal, ReadInteger, ReadChar, ReadBoolean, ReadString, а также ReadReal2, ReadReal3, …, ReadInteger2, ReadInteger3, …, ReadString2 и т. д. 4) Процедуры вывода данных: write(x1, x2, …, xn); writeln(x1, x2, …, xn); print(x1, x2, …, xn); println(x1, x2, …, xn); x1, x2, …, xn — список выводимых переменных, констант, выражений, процедуры writeln, println после вывода информации переводят курсор на новую строку. Процедуры writeln, println без параметров переводят курсор в начало новой строки. Отличие: процедуры writeln, write позволяют выполнить форматный вывод данных, т. е. задать ширину поля вывода, количество десятичных знаков после запятой; процедуры print, println автоматически добавляют пробелы между выводимыми данными. К структурированным операторам относятся: составной оператор; операторы ветвления — условный оператор и оператор выбора; 5 операторов цикла: оператор цикла с параметром for, операто ры цикла loop и foreach и 2 оператора цикла с условием (с предусловием и с постусловием). 5) Составной оператор — группа операторов, заключенных в операторные скобки begin … end, которые рассматриваются как один оператор: begin a1 *= 4; // иначе: a1 := 4*a1; a2 += a1 // иначе: a2 := a1 + a2 end; 6) Условный оператор, полная форма: if <условие> then <оператор_1> else <оператор_2>; неполная форма: if <условие> then <оператор>; условие — выражение логического типа, оператор_1, оператор_2, оператор — любые операторы языка Паскаль (возможно, составные). 7). Оператор выбора: case <ключ_выбора> of <список_1>: <оператор_1>; <список_2>: <оператор_2>; … <список_n>: <оператор_n> else <оператор_n+1> end; Ключ_выбора — параметр, по которому происходит выбор варианта продолжения программы, выражение любого порядкового типа, список_1...список_n — наборы значений ключа выбора; оператор_1...оператор_n+1 — любые операторы языка Паскаль; часть else <оператор_n+1> является необязательной. 9
8) Оператор цикла с параметром for: for var <параметр_цикла>:= <начальное_значение> to <конечное_значение> do <тело_цикла> Параметр_цикла — переменная целого типа, тело_цикла — любой оператор языка Паскаль (в том числе составной). Параметр цикла описывается внутри оператора цикла (например, так: for var i := 1 to n do…) и область его видимости ограничена только этим оператором. 9) Оператор цикла loop: loop <выражение> do <оператор>; Выражение должно иметь целый тип данных, оно указывает количество повторений тела цикла. Если значение выражения меньше или равно нулю, то тело цикла не выполняется ни разу. Цикл loop используется в простых ситуациях, когда тело цикла не зависит от номера итерации цикла. 10) Оператор цикла foreach имеет одну из следующих форм: foreach <переменная> in <контейнер> do <оператор> или foreach <переменная>: <тип> in <контейнер> do <оператор> или foreach var <переменная> in <контейнер> do <оператор> Контейнером может быть динамический или статический массив, строка, множество и т. д. Переменная цикла должна иметь тип, совпадающий с типом элементов контейнера. Переменная цикла пробегает все значения элементов контейнера и для каждого значения переменной цикла выполняется тело цикла. Изменение переменной цикла внутри тела цикла не меняет элементы контейнера, т. е. они доступны только для чтения. 11) Оператор цикла с предусловием: while <условие> do <тело_цикла>; Условие — выражение логического типа, тело_цикла — любой оператор языка Паскаль. Тело_цикла выполняется, пока условие имеет значение true. Если тело_цикла является составным оператором, его следует заключить в операторные скобки. 12) Оператор цикла с постусловием: repeat <тело_цикла> until <условие>; Тело_цикла выполняется, пока условие имеет значение false. Если тело_цикла является составным оператором, операторные скобки не нужны. 10. Типы данных Тип данных определяет: множество допустимых значений, которое может принимать пе ременная или константа; набор допустимых операций, применимых к ней; формат внутреннего представления данных в памяти компьютера Типы данных делятся на простые и структурированные. Простые типы данных делятся на порядковые и вещественные. Порядковые типы обладают свойствами упорядоченности и дискретно сти. К ним относятся: целые, логический, символьный, перечисляемый и типдиапазон. 10