Владимирский государственный университет

С. Б. НАУМОВА

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ Разса АВС

Учебно-практическое пособие

Владимир 2022

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное образовательное учреждение высшего образования «Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых»

С. Б. НАУМОВА

ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ Разса АВС

Учебно-практическое пособие

Электронное издание

4

атат Владимир 2022

І5ВМ№ 978-5-9984-1629-3

© ВлГУ, 2022

© Наумова С. Б., 2022

УДК 004 ББК 16.23 Рецензенты:

Кандидат физико-математических наук доцент кафедры функционального анализа и его приложений Владимирского государственного университета имени Александра Григорьевича и Николая Григорьевича Столетовых О. В. Крашенинникова

Кандидат физико-математических наук доцент кафедры информационных технологий Российской академии народного хозяйства и государственной службы при Президенте Российской Федерации (Владимирский филиал) А. А. Жукова

Наумова, С. Б.

Программирование на языке Разса АВС [Электронный ресурс]: учеб.-практ. пособие / С. Б. Наумова ; Владим. гос. ун-т им. А. Г. и Н. Г. Столетовых. Владимир : Изд-во ВлГУ, 2022. 286 с. ВМ 978-5-9984-1629-3. Электрон. дан. (5,83 Мб). 1 электрон. опт. диск (СО-КОМ). Систем. требования: Ш от 1,3 ГГц; УУшдоУуя ХР/7/8/10; АаоБе Кеайег; дисковод СО-КОМ. Загл. с титул. экрана.

Доступно и всесторонне рассмотрены ключевые операторы языка про- граммирования Разса1 АВС, основные понятия, приведены многочисленные при- меры программ. Предложены способы решения типовых заданий, разнообразные задания для формирования навыка программирования и формирования алгорит- мического стиля мышления, а также задания для самостоятельной работы сту- дентов.

Предназначено для студентов 1 2-го курсов высших учебных заведений, обучающихся по направлению подготовки 44.03.05 Педагогическое образова- ние, а также может быть полезно широкому кругу учащихся, абитуриентов, сту- дентов педагогических вузов, учителей.

Рекомендовано для формирования профессиональных компетенций в со- ответствии с ФГОС ВО.

Ил. 57. Библиогр.: 11 назв.

УДК 004

ББК 16.23

5 ВМ 978-5-9984-1629-3 © ВлГУ, 2022 © Наумова С. Б., 2022

ОГЛАВЛЕНИЕ

ВВЕДЕНИЕ лоно ао ав оо и и ЕЕ 4 ГЛАВА 1. ПОНЯТИЕ АЛГОРИТМА. СВОЙСТВА АЛГОРИТМА. СПОСОБЫ ЗАПИСИ АЛГОРИТМОВ ера не ЕЕК МБАНЫН 7 ГЛАВА 2. СТРУКТУРА ПРОГРАММЫ В ЯЗЫКЕ РАЗСАГ. ТИПЫ ДАННЫХ................................... 17 ГЛАВА 3. ОПЕРАТОРЫ ВВОДА, ВЫВОДА И ПРИСВАИВАНИЯ. ЛИНЕЙНЫЕ АЛГОРИТМЫ..... 25 ГЛАВА 4. КОМАНДА ВЕТВЛЕНИЯ. ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ. ОПЕРАТОР ВЫБОРА............ 37 ГЛАВА 5. ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ. КОМАНДЫ ЦИКЛА С ПРЕДУСЛОВИЕМ ИПОСТУСЛОВИЕМЬ: де н ро Ва иен 53 ГЛАВА 6. ЦИКЛИЧЕСКИЕ АЛГОРИТМЫ. ЦИКЛ С ПАРАМЕТРОМ. .................................... 61 ГЛАВА 7. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ. ЛИНЕЙНЫЕ МАССИВЫ. ........................... 66 ГЛАВА 8. СОРТИРОВКИ МАССИВОВЬВ...................... нение 75 ГЛАВА 9. ПОИСК В МАССИВЕ.................... еее 91 ГЛАВА 10. ДВУМЕРНЫЕ МАССИВЫ........................ нение 96 ГЛАВА 11. ПОДПРОГРАММЫ: ПРОЦЕДУРЫ И ФУНКЦИИ ..................... +. 105 ГЛАВА: 12; РЕКУРСИЯ день Иона иен 125 ГЛАВА 13. СИМВОЛЬНЫЙ ТИП ДАННЫХ. ФУНКЦИИ ДЛЯ РАБОТЫ С СИМВОЛЬНЫМ ТИПОМ ананна он ое оО 135 ГЛАВА 14. СТРОКОВЫЙ ТИП ДАННЫХ. ФУНКЦИИ ДЛЯ РАБОТЫ СО СТРОКОВЫМИ ВЕЛИЧИНАМИ. ....; лан Иры НИЕ НН 141 ГЛАВА 15. ИСПОЛЬЗОВАНИЕ ЭВМ ДЛЯ ШИФРОВКИ И ДЕШИФРОВКИ СООБЩЕНИЙ ......... 150 ГЛАВА 16. ТИП ЗАПИСЬ. МАССИВЫ ЗАПИСЕЙ.............. лилии 160 ГЛАВА, 17. ТИП-МНОЖЕСТВО: л. ходниййлнойниилаладланцалналннилцлоаланцшалиллинцллааны 177 ГЛАВА 18. ФАЙЛЫ. ЧТЕНИЕ И ЗАПИСЬ ИНФОРМАЦИИ ИЗ ФАЙЛОВ..............игиэгэгээн 187 ГЛАВА. 19 МОДУЛЬ. СЕТ анали Воин При ОН 200 ГЛАВА 20. ГРАФИКА В ПАСКАЛЬАВС.......аээээинөээнсилниэнинөцөмцөцнөцөөөйигөцөцөөнө 220 ЗАДАЧИ ПО ВСЕМУ КУРСУ ДЛЯ ПОВТОРЕНИЯ................................. а 244 ЗАКЛЮЧЕНИЕ ини к ЕАН 251 ПРИЛОЖЕНИЕ 1. РЕАЛИЗАЦИЯ МЕЖПРЕДМЕТНЫХ СВЯЗЕЙ ПРИ ОБУЧЕНИИ ПРОГРАММИРОВАНИЮ НА УРОКАХ ИНФОРМАТИКИ И ИКТ........................ нение 252 ПРИЛОЖЕНИЕ 2. ИГРА «ЖИЗНЬ»................. нии 272 РИБЛИОТВАФИЧЕСКИЙ СПИСОК, анон Анны 284

ВВЕДЕНИЕ

Алгоритмизация и программирование - один из самых важней- ших разделов информатики и ИКТ. Этот раздел находит применение

в самых различных областях науки.

В учебно-практическом пособии изложены теоретические и практические основы программирования на языке РазсаАВС. Весь материал пособия разбит на разделы и подразделы, в которых приве- дены основные теоретические сведения (определения, синтаксис, блок-схемы и формат записи основных операторов языка), примеры и задачи с подробными решениями, а также варианты для самостоя- тельного решения типовых задач. Такое изложение материала позво- лит студентам, изучающим программирование, овладеть стандартны- ми приёмами и навыками и впоследствии творчески применять их в

решении сложных задач.

Первая глава посвящена понятию алгоритма и его свойствам. Рассмотрены различные способы записи алгоритмов.

Во второй главе рассматривается структура программы в языке Равса!АВС, описываются типы данных.

В третьей главе начинается изучение первых операторов: ввода и вывода (рассматривается также форматный вывод данных), опера- тора присваивания. Студенты учатся составлять самые простые ли-

нейные алгоритмы и записывать их на языке программирования.

В четвертой главе рассматриваются оператор безусловного пе- рехода, команды ветвления с различными логическими выражениями, а также оператор выбора.

Пятая глава посвящена изучению циклических алгоритмов, а именно циклов с предусловием и постусловием, приводятся примеры и решения типовых задач.

В шестой главе рассмотрен циклический оператор с параметром.

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

В восьмой главе собраны несколько наиболее распространен- ных алгоритмов сортировок элементов массивов: простой выбор, простой обмен, простые вставки, гномья сортировка, сортировка Шелла и шейкерная сортировка. Приводятся сами алгоритмы, а также программы.

Девятая глава посвящена алгоритмам поиска в массиве. Рас- сматриваются алгоритм простого перебора и метод бинарного поиска.

В десятой главе изучаются двумерные массивы, рассматрива- ются способы ввода и вывода элементов массива, печать такого мас-

сива в виде матрицы.

Одиннадцатая глава посвящена организации подпрограмм в языке Разса1АВС: функций и процедур.

В двенадцатой главе рассказывается о рекурсивных подпро-

граммах.

В тринадцатой главе речь о символьном типе данных. Описы- ваются функции для работы с символьным типом.

Четырнадцатая глава посвящена строковому типу данных и функциям для работы с этим типом.

В пятнадцатой главе описываются алгоритмы шифрования: по ключевой фразе, шифр Цезаря, наоборот, код Шеннона и др.

В шестнадцатой главе вводится еще один тип данных: запись. Рассматриваются одиночные записи и массивы записей. Приводятся примеры программ.

Семнадцатая глава посвящена типу данных множество. Рас- сматриваются способы построения множеств, действия над множе-

ствами, способ вывода элементов множества на экран.

В восемнадцатой главе мы рассматриваем приемы работы с файлами. Студенты научатся записывать информацию в файл разны- ми способами (создание нового файла и дозаписи в конец существу- ющего), считывать текстовые и числовые данные из файлов. Рассмат-

риваются типизированные и текстовые файлы.

В девятнадцатой главе рассказывается о модуле СКТ, описы- ваются процедуры, позволяющие регулировать процесс вывода ин- формации на экран.

В двадцатой главе рассматриваются основные графические процедуры, которые используются при подключении модуля Ога- рпАВС. Описывается организация анимации в языке Разса1 АВС.

ГЛАВА 1. ПОНЯТИЕ АЛГОРИТМА. СВОЙСТВА АЛГОРИТМА. СПОСОБЫ ЗАПИСИ АЛГОРИТМОВ

Определение. Алгоритм является одним из основных понятий информатики, поэтому строгого определения нет. Можно дать лишь интуитивное определение: это понятное и точное предписание испол- нителю совершить конечную последовательность действий, направ- ленных на достижение указанной цели или решение поставленной за- дачи. Синонимы к слову алгоритм: инструкция, правило, предписа- ние, рецепт.

В 9 веке Аль-Хорезми (А10117п1 или А!еог17118), один из круп- нейших средневековых ученых, первым описал "алгоритм" арифме- тических действий над многозначными числами. Позднее имя автора стало нарицательным, так стали называть арифметику, основанную на десятичной позиционной системе счисления. Еще позже математики в Европе стали называть так любое вычисление, выполняемое по строго определённым правилам.

Еще одно основное понятие информатики: исполнитель алго- ритма - это устройство или одушевленное существо, способное по- нять и выполнить команды, составляющие алгоритм. Исполнитель характеризуется средой, где он работает, и системой команд. Отказы исполнителя возникают при вызове команды в недопустимом для данной команды состоянии среды.

ИСПОЛНИТЕЛИ

ФОРМАЛЬНЫЕ

Не понимают смысла команд, но уме- ют реагировать на них строго опреде- ленным образом (ЭВМ). Одну и ту же команду всегда выполняют одинаково.

НЕФОРМАЛЬНЫЕ

Могут понимать команды по-своему и действовать разными способами при одних и тех же исходных данных (слу- жебная собака, человек). Могут отка- заться выполнять команду.

Свойства алгоритма

1. Понятность: все команды должны входить в систему команд исполнителя. Он должен знать способ действий при получении этой команды.

2. Дискретность: алгоритм представляет собой последователь- ность шагов.

3. Определенность (детерминированность): каждая команда мо- жет быть выполнена только одним способом.

4. Результативность (конечность, финитность): за конечное число шагов исполнение алгоритма должно закончиться, алгоритм должен привести к решению или сообщить о невозможности решения.

5. Массовость и вариативность: алгоритм должен быть применим для целого класса однотипных задач. Должны быть предусмотрены все возможные случаи.

Разрабатывать алгоритмы на сегодняшний день может только че- ловек, так как это сложная интеллектуальная задача, требующая глу- боких разносторонних знаний.

Способы записи алгоритма Словесный способ записи алгоритмов

Вербальный или словесный способ это запись алгоритма на естественном языке. Он очень удобен, если нужно кратко и понятно для всех описать суть алгоритма. Однако, этот способ имеет недо- статки, при словесном описании не всегда удается ясно и точно отоб- разить порядок действий.

Применим словесный способ записи алгоритма для описания процесса вычисления площади прямоугольника

9=х%у, где 5 площадь прямоугольника; х, у длины его сторон.

Очевидно, что х, у должны быть заданы заранее, иначе задачу решить невозможно.

Словесный способ записи алгоритма выглядит так:

Начало алгоритма.

Задать численное значение стороны х.

Задать численное значение стороны у.

Вычислить площадь 5 прямоугольника по формуле 5-х“у,

Вывести результат вычислений.

Конец алгоритма.

Графический способ описания алгоритмов

Существует несколько способов графического описания алго- ритмов. Наиболее широко используемым на практике графическим описанием алгоритмов является использование блок-схем. Несо- мненное достоинство блок схем - наглядность и простота записи ал-

горитма.

Каждому действию алгоритма соответствует геометрическая фигура (блочный символ). Перечень наиболее часто употребляемых символов приведен в таблице:

Название симво-

ла

Пуск-останов

Ввод-вывод дан- НЫХ

Процесс

Решение

Модификация

Обозначение и пример заполнения

-О0--

Пояснения

Начало, завершение ал- горитма или подпро- граммы

Ввод исходных данных или вывод результатов

Внутри прямоугольника записывается действие, например, расчетная

формула

Проверка условия, в за- висимости от которого меняется направление

выполнения алгоритма

Организация цикла

Название симво- Обозначение

Пояснения ла и пример заполнения Предопределенный 11 Использование ранее со- процесс зданных подпрограмм

Комментарий | Пояснения

Пояснения:

блок Процесс обозначает вычислительный процесс и применя- ется для обозначения действия или последовательности дей- ствий, изменяющих значения переменных или данных

блок Решение обозначает проверку условия

Если условие выполняется, то есть а>, то следующим выполняет-

ся действие по стрелке «Да». Если условие не выполняется, то осуществляется переход по стрелке «Нет».

блок Модификация используется для организации цикличе- ских (повторяющихся) действий.

Усповие

10

блок Предопределенный процесс используется для указания обращений к ранее созданным алгоритмам и программам, в том числе и библиотечным подпрограммам.

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

устройство ввода или вывода

дисплей магнитный диск

Псевдокод

Это полуформальное описание на языке, являющемся синтезом естественного языка, языка программирования и общепринятых ма- тематических выражений. В псевдокоде используются служебные слова, смысл которых определен однозначно:

алг алгоритм дано данные надо что мы должны получить нач начало кон конец

Псевдокод - это последовательное вербальное описание кода, которое можно постепенно перенести в язык программирования. Это нестрогий план, инструмент для обдумывания проблемы и средство общения, позволяющее передавать ваши мысли другим людям.

11

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

В псевдокоде часто используется синтаксис, похожий на син- таксис языка Паскаль. Это объясняется тем, что Паскаль создавался как язык для обучения программированию и его синтаксис особенно приспособлен для восприятия человеком. Используются также Си, Фортран, Алгол и др.

Псевдокод субъективен и не стандартизирован. Понятность - основной критерий псевдокода!

Программный способ записи алгоритмов

Алгоритм должен быть записан на каком-то промежуточном языке, с точными и однозначными правилами и отличном от есте- ственного языка и языка блок-схем, но понятном компьютеру. Такой язык принято называть языком программирования.

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

Запись алгоритма на языке программирования называет- ся компьютерной программой.

Языки программирования - это формальные знаковые системы (буквы, цифры, символы), предназначенные для написания программ.

Языки программирования представляют собой системы обозна- чений для описания алгоритмов и структур данных.

Языки программирования отличаются функциональными воз- можностями доступными типами данных и т.д.

12

Способы записи алгоритмов

1 способ П способ Ш способ ТУ способ Определить у скорость время путь Ргодгат риё

Определить { Сы Найти з= у% у ( “Ч магу, 1,

э:ищедег,

Иа геааїт (у, 9;

5:=ү*; мтїќе ($); Епа.

Словесный способ Табличный способ Графический способ Программный способ

Формальное исполнение алгоритма

Исполнитель решает задачу формально, не вникает в смысл то- го, что он делает, и вместе с тем, получает верный результат. Наличие алгоритма формализовало процесс решения задачи, дало возможность механически исполнять команды, а следовательно, исполнение можно поручить автомату, машине, ЭВМ!

Исполнителя можно представлять в виде устройства с кнопоч- ным управлением. Каждая кнопка соответствует одной команде ис- полнителя, а нажатие означает вызов этой команды, в результате чего исполнитель совершает соответствующее элементарное действие. Управление исполнителем заключается в последовательном вызове команд. В простейшем случае можно считать, что это делает человек. Однако, человек может ошибиться при наборе длинной последова- тельности команд, неверно проанализировать обстановку, не успеть в критической ситуации. Возникает идея посредника - управляющего устройства, которое, получив от человека инструкции, самостоятель- но вызывает команды исполнителя. В роли такого посредника может выступать ЭВМ.

Человек заранее составляет полный план (программу) управле- ния, то есть запись, при каких условиях, какие действия и в какой по- следовательности должно будет выполнить устройство. А затем

13

устройство выполняет эту программу автоматически. Такой вид дея- тельности называется программированием или алгоритмизацией.

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

Секрет могущества ЭВМ в том, что она может быстро выпол- нять длинные последовательности очень простых команд и обрабаты- вать большие объемы информации.

Описание того, какие действия, в каком порядке и над какими порциями информации должна произвести ЭВМ, называется про- граммой для ЭВМ.

Для того чтобы ЭВМ могла выполнить программу, эта програм- ма должна быть записана по строгим правилам, в виде, доступном для обработки на ЭВМ. Такой набор правил называется языком про- граммирования или алгоритмическим языком.

Воспринимая программу, написанную на языке программирова- ния, ЭВМ некоторым образом ее преобразует, помещает в собствен- ную память, а затем выполняет команды, соответствующие данной программе.

Ошибки составления алгоритмов

Из принципа формального исполнения следует, что ни исполни- тель, ни ЭВМ не могут совершать ошибок. Все ошибки, связанные с управлением исполнителем, совершает человек. Компьютер не будет за нас думать и проверять программы.

|: Синтаксические ошибки. Вызов команды, не входящей в систему команд исполнителя. Эти ошибки обнаруживает ЭВМ. Она не передает исполнителю синтаксически неверную команду и сооб- щает человеку о допущенной ошибке.

14

2. Семантические (семантика - смысл). Вызов команды в си- туации, когда эта команда не может быть исполнена. Эти ошибки приводят к отказу исполнителя (робот-чертежник не может двигаться влево, потому что там стенка).

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

Принцип формального исполнения распространяется и на ЭВМ. Это требует от человека точной, не допускающей двусмысленности формы записи алгоритма. Такую форму обеспечивают формальные языки программирования.

Пример сообщения об ошибке

—— ———ы——— , ЕЦЕ Е

"РАН Разса! АВС

Файл Правка Вид Программа Сервис Помощь П2ЫЧ а > У Зо жа Я Е

сис.раз | 2.раз | 1.раз ] 111.раз *9га1.раз | Выполнить программу (Р9) ргодгаш оКс: азез сєс, дгарһарс; мас С:іпседег ресіп Ғог 7:=15 Аомпфо 1 до редіп //ѕеёсо1ог (Е) ; сігс1е (300,220,5*10) ; епа;

( Ошибка: ожидался символ "точка с запятой" Строка:3 Столбец: 14

Классификация языков программирования

Г. Языки программирования низкого _ уровня (машинно- ориентированные). Например Ассемблер. Это языки, средства кото-

рых существенно зависят от особенностей конкретной ЭВМ. Достоинства:

-высокое качество создаваемых программ с точки зрения их компактности и скорости выполнения;

15

- возможность прямого использования конкретных аппаратных ресурсов;

- учет особенностей функционирования данной ЭВМ.

Недостатки:

- трудоемкость процесса составления программ

- низкая скорость программирования

П. Языки высокого уровня (машинно-независимые). Это сред- ства описания алгоритмов решения задач и информации, подлежащей обработке, которые не требуют от программиста знания особенностей функционирования конкретной ЭВМ. К ним относятся почти все ис- пользуемые сегодня языки. Программы представляют собой последо- вательности операторов, структурированные в соответствии с опреде- ленными правилами. Операторы языка описывают действия, которые должна выполнить система после трансляции программы на машин- НЫЙ ЯЗЫК.

Классификация языков программирования

Языки программирования

Пролог

Процедурные Непроцедурные Снобол

Лисп ЗтаЩак Машинно-зависимые Машинно-независимые ОВЕ (низкого уровня) (высокого уровня) Бол

Машинные Автокоды яск Ассемблер

Процедурно-ориентированные Проблемно- Объектно- (универсальные) ориентированные ориентированные Машинно- Бейсик Сверх- РПГ Ада 93 (95) ориентированные Паскаль универсальные 6Р55 Јаха

с Фортран АПЛ Оеірһі : Кобол ЭР Лисп Мвиа! Ваѕіс пл Си++

16

Глава 2. СТРУКТУРА ПРОГРАММЫ В ЯЗЫКЕ РАЗСАГ.. ТИПЫ ДАННЫХ

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

В настоящее время существуют различные среды программиро- вания для Паскаля: Тибо Равса!, Вопапа Разса1, Егее Разса|, Равса! АВС, Разса1АВС.МЕТ. Большинство сред включают в себя следую- щие инструменты разработки:

- текстовый редактор;

- транслятор (специальная программа, переводящая текст, напи- санный на языке программирования, в машинный код), трансляторы бывают двух видов: интерпретаторы и компиляторы.

- отладчик, для поиска и исправления ошибок в программе.

Компилятор

Синтакси- ческий Генератор Исходная мо цайн цэсйн машинного Исполняемая программа проти кода программа

Сообщения 06 ошибках

Замечание. Генерация выполняемой программы при компиля- ции происходит только в том случае, если в тексте программы нет синтаксических ошибок!

17

СТРУКТУРА ПРОГРАММЫ

Ргоегат «Имя программыг, // Заголовок <Раздел подключения модулей>

<Раздел описаний> // Декларативная часть Вест

<Тело программы> // Раздел операторов Епа.

Раздел подключения модулей. Ключевое слово ОЅЕЅ указывает программе, что необходимо подключить дополнительный внешний модуль (файл с описанием и определение различных функций). Например, Оѕеѕ СКТ, Оѕеѕ отарвАВС.

Декларативная часть. Может состоять из пяти разделов.

1. Описание меток Г.аре! Вообще, не рекомендуется использовать метки, равно как и оператор СОТО, в программе, соблюдая принципы структурного программирования.

2. Описание типов переменных Туре, вводимых про- граммистом в дополнение к предопределенным типам.

3. Раздел описания констант (Сопѕі. 4. Раздел описания переменных Уаг.

5. Раздел, где описываются процедуры и функции Рго- седиге, РЕипспоп.

Замечание. Порядок разделов произвольный, но желательно придерживаться указанного порядка, для быстрого нахождения нуж- ного раздела.

Предложения в языке заканчиваются ; и только после последне- го оператора Ера точка (.).

18

Ргостат ргітег1; {заголовок}

(0868 сг: { подключение модуля для работы с экраном } Уаг

с, Ч: теа];

К, х: иесег;

Вест СТ тзсг; { процедура очистки экрана} С:=5; р:=7; Уугиеш(С--0), {вывод на экран значения выражения} Епа. ПШо| 56) 5-199|5554|55-51 (8

“Рюшат! .раз |

Ргодташ ргїшег1: {заголовок} че;

0вев сгс; ние модуля для работы с экраном}

С1гзсг; {процедура очистки экрана}

:-7

Мгісеїп(А+В); (вывод на значения выражения}

<

Строка: 12 Столбец: 1

т 21:56 ^0 аі 99 РУС реж в

АЛФАВИТ ЯЗЫКА Буквы латинского алфавита. 2. Арабские цифры.

. Специальные знаки .,;: <> <= >= <> #$ @ ^() {} []‘*/ + - := .. (указание диапазона), пробел. У

Большинство трансляторов не различают буквы разных реги-

стров: ргоргат=РКОСКАМ. Но русская А не совпадает с латинской А!

19

ОСНОВНЫЕ ЛЕКСЕМЫ

Идентификаторы, используемые для обозначения констант, пе- ременных, типов, процедур, функций и т.д.

- Должны быть уникальными (для разных объектов разные имена).

- Имеют ограничение по длине (зависит от конкретной реализа- ции языка).

- Могут состоять только из латинских букв, цифр и знака под- черкивания , не могут начинаться с цифры.

- Не могут совпадать с зарезервированными словами, такими как Беріп, уаг и т.д.

Замечание. Желательно, чтобы идентификаторы несли смысло- вую нагрузку, но и слишком длинными быть не должны.

ЗАРЕЗЕРВИРОВАННЫЕ СЛОВА ЯЗЫКА

Апа Аѕт Атгау Вест Сазе Сопї Сопвїгисїог Юеѕігисіог Пу ао Роуушо Ее Епа Ехрог$ Ше Вог ЕппспПоп (ОО Г ппрететайоп Га шрегцеа шїїпе Гпќегѓасе Таре! Габгагу Моа МИ М№оѓ објесі ОГ Ог РасКеа Ргоседиге ргоэтат Кесога Кереаг бе $һг Зи Треп То Туре пі Оп 1865 уаг уе ууц хог Переменные характеризуются типом и значением. Тип опреде-

ляет, какие значения может принимать переменная и какие операции с ней можно выполнять. Значение переменной может быть присвоено с помощью констант.

20

Константы:

1) Числовые - целые, вещественные и шестнадцатеричные. Целые состоят из цифр и знака + или -. Например, 1 +16 -12. Веще- ственные могут быть с фиксированной и плавающей точкой: 1е-2 (1х10°2); 1Е+2; 12.5; 0.01; +12.7; - 34.7. Шестнадцатеричные начи- наются со знака $ и содержат цифры 0, 1, ...9, А, В, С, р, Е, Е. Например, $АВС, $1Е.

2) Символьные константы заключаются в апострофы. Если символа нет на клавиатуре, его можно задать по коду: ‘а’ “А? #32

3) Строковые константы также заключаются в апострофы: “Программа”, ‘ргоэтат?’.

Сопѕі

Р1=3.14; Мате1='Татьяна”; Мате2=' Виктор”; К21-6.33187Е-03, УУ уу 034122:

Договоримся, для удобства отладки и повышения понятно- сти кода:

- Давать «говорящие» имена переменным, если находим сумму, например, называть переменную Ѕит, ѕшпта. Среднее арифметиче- ское ЗгАиЁт и так далее.

- Снабжать программу комментариями.

- Использовать текст подсказок, указаний пользователю при вводе и выводе информации.

- Использовать отступы для выделения блоков.

21

ТИПЫ ДАННЫХ В ЯЗЫКЕ ПАСКАЛЬ

Переменная это именованный участок памяти для хранения данных определенного типа. Значение переменной может меняться при выполнении программы. Значение константы изменено быть не может!

А Зита

3.14 7341

ТИПЫ ДАННЫХ

Указатели | | Процедурные Простые Структурированные Объекты арын (ссылки) типы Порядковые Строки Целые Массивы Множества

Символьный

| | Тип-диапазон |

Определяются пользователем Вещественные

К базовым типам относятся: Тип целых чисел Їїїїевег Тип «длинных» целых чисел Г.опоіпї

® Тип неотрицательных целых чисел от 0 до 255 ВУе

22

® Тип неотрицательных целых чисел от 0 до 65535 УУога ® Тип действительных чисел дробной частью) Кеа!

® Символьный тип Сһаг имеет длину 1 байт

® Строковый тип 8ќгіпо, строка длиной до 255 символов

® Логический тип Вофеап, может принимать два значения: їгие/Таве.

На физическом уровне типы данных отличаются друг от друга количеством ячеек памяти (байтов), выделяемых для хранения соот- ветствуюшей переменной.

ө Пользовательские типы

перечисление поддиапазон Туре Туре Со|=(геа, Ыаск, уе) АНГА?,77/ Рау=1..31 Уаг

А, В, Н, К 22, Апеї: Кеа; МашезЗ: 5ие:

Нас: Вооеап:

І, 1, К, Сош: Мога;

ФУНКЦИИ ДЛЯ РАБОТЫ С ПОРЯДКОВЫМ ТИПОМ

ОКО(Х) возвращает порядковый номер элемента порядкового типа

РКЕР(Х) возвращает предыдущее значение 50ССОО)- возвращает следующее значение Ога(“у’)=121 Ргеа(“с’)=6” Ѕисс(с’)= а

СНК(Х) возвращает символ по его порядковому номеру

23

Иногда возникает необходимость присвоить значение веще- ственного типа переменной целого типа, тогда используются функ- ции: ТКОМС(Х) и КОСМО(Х). Первая возвращает целую часть своего аргумента, вторая округляет аргумент до ближайшего целого значе- НИЯ.

Диапазон Целые типы шинэ -128..127 -32768..32767 0..65535 -2147483648..2147483647 Вещественные типы 2.9*10®..1.7*10°8 Таг Зими" ОЧОТ" 1.9*1 072957 1 1"1 (1932 -2*1083+1..2*1083-1 Логический тип 0..255 (0- Тгие, 1..255-Ра|5е) Символьный тип (любой из 256 Символов А$С!|) Литерный (строковый) тип Строка не более 255 символов

Е" 510 5 о а | =) »

Рег [2940.17 0 | 8006 Бпде СЕ БЕТ Роше 7 Бололлтад овоо 0 а

о (55) 5 о. са Ф <. а

г 1 1

24

ГЛАВА 3. ОПЕРАТОРЫ ВВОДА, ВЫВОДА И ПРИ- СВАИВАНИЯ. ЛИНЕЙНЫЕ АЛГОРИТМЫ

Стандартные математические функции Паскаля

Обращение Тансаркуг мента

АЪ5(х) Кеа], ицесег АгсТап(х) Кеа!, ицезег Соѕ(х) Кеа], ицесег Ехр(х Кеа!, ищезег Егас(х Кеа

11110: Кеа], ицесег Талх Кеа!, иїевег Р Нет Роууег(х.у) Кеа], ицесег 5ш(х) Кеа!, ицесег Заг(х) Кеа], ицесег Ѕагі(х) Кеа], ицесег Вапдот Нет

Тип резуль- тата

Тип аргумента

Веа!

Веа!

Веа!

Веа!

Веа!

Веа!

Веа!

Веа!

Веа!

Тип аргумента

Веа!

Веа!

25

Примечание

Модуль аргумента

Арктангенс (значение в радианах)

Косинус, угол в радиа- нах

Экспонента

Дробная часть числа

Целая часть числа

Логарифм натуральный

3,141592653

Х встепени у

Синус, угол в радианах

Квадрат аргумента

Корень квадратный

Псевдослучайное число в интервале [0, 1]

Псевдослучайное число

Капаот(№) Гпѓерег Пиесег а Округление до ближай-

Воппа(х) Кеа! Пиесег Бане,

Тгипс(х т по Отбрасывание дробной

части числа

ө Для возведения в степень можно использовать известное мате-

матическое тождество: х= еу!"

в Паскале можно вычислить только значение натурального ло- гарифма, для вычисления логарифма с произвольным основани- ем используется математическое тождество: Іовар= Іп ЫЛп а

Пример вычисления степени числа. уагх, п, 7: геа, Беріп геааіп(х,п);

2: =ромег(х,п);

уугиеш(23 епа.

АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ

Соищег:=0; р:=6*6-4*а*с; Р1:=3.1415; и:=(г1+12)/(г1*т2);

Выражение состоит из операндов (константы, переменные) и

операторов (действия над операндами). Тип выражения диктуется типами операндов, входящих в выражение, и операциями, выполняе- мыми над ними.

26

Для операций сложения, вычитания и умножения тип резуль- тата в зависимости от типа операнда будет таким:

Операнд 2 Результат

Для операции деления тип результата в зависимости от типа операнда будет таким:

В Равса! есть операции целочисленного деления и нахождения остатка от деления. При выполнении целочисленного деления (опе- рация іу) остаток от деления отбрасывается. Их операнды должны иметь тип Пиеоег.

Например, 19 йу 3 = 6; 38 йу 5 = 7; 126 йу 10 = 12, 9 ау 10 = 0.

Операция тоа находит остаток от деления одного целого числа на другое.

Например, 15 той 3 = 0; 18 той 5 = 3; 123 тоа 10 = 3, 7 тоа 10

27

Порядок вычислений в выражениях следующий:

1. Вычисляются подвыражения, заключенные в скобки;

2. Затем выполняются операции с наибольшим приоритетом; обычно используются следующие уровни приоритетов порядке убывания):

о возведение в степень;

о мультипликативные операции: * , / , Чу , тод;

о унарные операции: + , - , абѕ , пог;

о аддитивные операции: +, -;

о операции отношения: = , <>, <, >, <=, >=;

о логические операции: апа, ог, по,

3. Операции с одинаковым приоритетом выполняются слева направо.

Хотя нет ограничений на сложность выражений, однако выра- жения, содержащие более 7 операндов, трудны для чтения и понима- ния и поэтому такие выражения не рекомендуется использовать.

Математическое выражение: х?” - + 6 (х+2) Выражение на Паскале: ехр(3%п(х)/2)-7*х+51п(х+2)/соѕ(х+2)

ОПЕРАТОРЫ ДЕЙСТВИЯ

Операторы действия - это средства языка, позволяющие изме- нять в процессе выполнения программы состояние вычислений. Са- мый простой оператор действия - оператор присваивания.

<имя переменной>:=<выр ажение>

28

Выражение справа должно приводить к значению того же типа, какого и сама переменная, или совместимого типа, Кеа|:=Пиесег (Мога), но не наоборот!

Сначала вычисляется значение выражения справа, потом ре- зультат заносится в ячейку памяти.

Пример оператора присваивания

р:=18+235; {переменной а присваиваем математическое выраже- ние. Стоит заметить, что переменная р должна быть числового типа}

Оператор присваивания, несмотря на кажущуюся простоту, имеет очень важное алгоритмическое значение.

Удобно считать, что выполнение присваивания переменной не- которого значения означает помещение этого значения в выделенный для переменной ящик.

Операторы языка

Простые: присваивание и вызов проце- | Структурные: составной оператор, дуры ветвление, циклы

СОСТАВНОЙ ОПЕРАТОР Вест <оператор 1>;

<оператор 2>;

<оператор {; перед епа можно не ставить} Епа; Составной оператор используется там, где по синтаксису можно выполнить один оператор, а требуется выполнить несколько. ВВОД И ВЫВОД ДАННЫХ

Ввод данных с клавиатуры организуется с помощью стан-

дартной процедуры 29

геа4(<список ввода>) или ее разновидности геа@т(<список ввода>).

Элементы списка ввода - идентификаторы (имена) переменных, перечисляемые через запятую. При выполнении этого оператора от пользователя требуется ввести с клавиатуры последовательность значений, разделяя их пробелами. Программа приостанавливает свою работу и ждет, пока нужные данные будут набраны и нажат ЕМТЕК. Введенные значения присваиваются переменным в том по- рядке, в каком их имена указаны в скобках после геай.

Пример ввода данных с клавиатуры

Кеаа (х,у,џ); 14 13 6.17 Х-14 Ү-13 0-6.17

Кеаашт отличается от Кеаа тем, что после выделения очеред- ного числа из введенной с клавиатуры строки и присваивания его по- следней переменной из списка инструкции Кеа4Ш, оставшаяся часть строки теряется и следующая инструкция Кеаа или Кеа4 будет тре- бовать нового ввода.

Кеааір (а,б): Кеаа (с); 4 23 0.17 а=4 6=23 с=??

Программа будет ожидать ввода нового числа, чтобы присвоить его переменной с.

Чтобы «подсказать» пользователю, какие данные ожидает от не- го программа, перед каждой командой ввода следует располагать ин- струкцию жгіќе.

30

Вывод данных на экран производится с помощью стандартной процедуры утИе(<список вывода>) или ее разновидности үугіќеіп(<список вывода>).

Список вывода может содержать константы, переменные, выра- жения, формат вывода. Выражения в списке вывода разделяются за- ПЯТЫМИ.

Пример вывода данных на экран

угце(аЪ,с);{где а,о,с - переменные. После вывода данных на экран, курсор останется на последнем символе}

угцешт(аЮ,с); {где аЪ,с - переменные. После вывода данных на экран, курсор перейдет на новую строку)}

Окончание ш в имени процедуры подобно ситуации с операто- рами ввода, означает, что курсор автоматически будет переведен в начало следующей строки экрана.

При вызове оператора Мгіќеіп без параметров (без списка выво- да) происходит переход на новую строку. Применяется, например, при выводе матрицы в привычном в математике виде в виде таблицы.

Элементы списка ввода - идентификаторы (имена) переменных, выражения, константы, перечисляемые через запятую. Надо учиты- вать, что объекты выводятся без пробелов! Необходимо добавлять пробелы вручную.

Пример. У"Угие(Зитита);

Утиет(‘Корни уравнения х1=°, х1, х2=”, х2);

31

ФОРМАТНЫЙ ВЫВОД ДАННЫХ

1. Для переменной целого типа: уугие(4:5) для вывода зна- чения переменной отводится 8 позиций. Выравнивание по правой границе поля.

утце(‘Всего изделий: ”, Ко|:8);

Всего изделий: 35.

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

Пример. х1=13.25 х2=-0.3401 утие(‘х1=”, х1:5:2,5 х2=, х2:12);

х1=13.25 х2=-3.40100Е-01

Если ширины поля недостаточно для ввода значения перемен- ной, выводится число в формате с плавающей точкой и десятью циф- рами после запятой (все поле вывода занимает 17 позиций).

Пример.

У тие (‘Введите информацию: ’); Уугие(“Стоимость одного изделия '); Кеааш(С),

Утие(‘Количество изделий’); Кеааш(К);

М/тие(‘Скидка ’);

Кеааш(5К):

32

Если тип данных не соответствует или не может быть приведен к типу переменных, указанных в инструкции геа4, программа аварий- но завершает работу и выводит сообщение об ошибке.

Задача. Перевести расстояние в милях в расстояние в километ- рах (1 миля примерно равна 1,6 км).

Ргоргат пт; Уаг МИ, КПот: геа[; Вест УМ/тиешт(‘Перерасчет расстояния: мили -> километры”); \/тие(‘Задайте расстояние в милях '); Кеааїп(т11); КПот:=711* 1.6; М/гиеш(и11:5:2, миль это”, КИоп:5:2, 5 км’); Епа.

Задачи для решения

1. Найти площадь параллелограмма со стороной а и высотой В.

ЭЭ

2. Вычислить площадь круга радиуса К.

3. Найти площадь кольца, образованного кругами с радиусами КІ и К2.

4. Вычислить площадь треугольника, заданного координатами вершин (х1,у1), (х2,у2) и (х3,у3).

5. Даны координаты двух точек. Составить уравнение прямой, проходящей через эти точки в виде у=Кх+Ь.

Задачи для самостоятельного решения

1. Написать программу для вычисления расстояния между двумя точками с координатами хі, у1, х2, у2, используя формулу из геометрии. Результат вывести на экран с комментариями.

2. Составить программу, которая запрашивает имя пользова- теля и его год рождения, затем подсчитывает количество лет, дней и минут, прожитых, примерно, этим человеком. Результаты вывести на экран.

3. Составить программу, вычисляющую по закону Ома зна- чение силы тока (1=0/К) для участка цепи, запрашивая с клавиатуры значения напряжения на концах участка и его сопротивления.

4. Составить программу, которая, используя генератор слу- чайных чисел, выводит на экран случайное число, значение которого лежит в пределах от 7 до 10.

5. Составить программу, которая, используя генератор слу- чайных чисел, выводит на экран случайное число, значение которого лежит в пределах от 17 до 100.

6. Составить программу, которая, используя генератор слу- чайных чисел, выводит на экран случайное число, значение которого лежит в пределах от 37 до 110 и имеет 2 знака в дробной части.

7. Эти задачи предназначены для приобретения навыков реа- лизации линейных алгоритмов. Вычислить значения заданных функ- ЦИЙ.

34

5 в (+ Цан

Ї 4 узи? +42) 2 = ае ѕіп(Ьх 2 ( РА 2 +соз(х+Б) 9 2со5(х— 6) 5) Ү = х2(х+1) -ѕіп2(х+а) Ү = 0,5 +ѕіп2 у йл шин р? 4 2 =1+ 3+7 + 5 3 3 = ах? 6712-1148” бд ИЕ 2 2 _ 2 /х(4+9а2х) Үс (оо жуг-ах) 7 Ү=аѓ 16 7 = с2 созх+ усі соѕ2 3 2 242 2 2 57 Я = (х= + 22 та =". (4+942х)? —8 цагаан 8 27а 8 Ү=е7° (41+ 5)+ Да үр | 2 20054) са 2 2а+х 5 = Бѕіп(аї< с0$21) —1 171542 Зх+2а 9 5-х ш(х-0)2 18 У = (а+х)3 созх + Ш соѕх Ьх2 –а 2 2 РХ 1 Х е аг Е 10 = аед 4 1+2 = 2 а8ш х 3 с05Х 2 = с05| а+=— 3 рх +ах? Р 2 12 38 үу _ ахуБх 11 Ү= аі –1) 0-2

7-(е5-)2-1

2-(ал баян 238

ЭЭ

у е5 х+т2(х+а)

12 Ү-а! 7 21 2 2 рх? +аЬ = ү-рхе +арх-–с 7 = 2а? –0,5па? цорж, Д И 2 2 13 2-(х-а)у (х2 + у?) - х | те ам 79 а2 Ь2 аһ х“ Ү = х- у 2 Ү = –л +агсіо ар+ ху 14 ГА” 510 Х 23 |е= агсе(х” Ез ар ах 1+ 5іп2 х 2=е79 + ?2(х-а)? +1 не /х-1.5 15 ус 42х67 созах 24 у= 2 хопа ах-е “шах о Я=в(а+х+е? “ша? + х2) 2- (пов ах

36

ГЛАВА 4. КОМАНДА ВЕТВЛЕНИЯ. ЛОГИЧЕСКИЕ ВЫРАЖЕНИЯ. ОПЕРАТОР ВЫБОРА

Вспомним структуру простой программы (линейный алгоритм):

Ргоотат Имя;

Уаг

{объявление переменных} Вест

{инструкции программы} Епа.

ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА

Некоторые