Квант
Разное

Заочная школа программирования

Звенигородский Г. А.

52

Раздел «Искусство программирования» ведется в нашем журнале начиная с № 9 прошло года. Его цель двоякая: во-первых, разъяснить общие вопросы, связанные с ЭВМ, — что такое алгоритм и программа, что такое память и процессор компьютера, как взаимодействуют человек и машина; во-вторых, обучить некооторым машинным языкам, научить писать программы и отладывать их на реальных ЭВМ.

Развивать эти навыки призвана «Заочная школа программирования» (см. «Квант», 1979, № 9). Новые подписи «Квант» могут включаться в нее начиная с этого урока, если они самостоятельно ознакомятся с основными идеями программирования на языке Робик («Квант», 1979, № 9—11).

Напоминаем нашим старым учащимся и сообщаем новым, что все задания одного номера следует выполнять В ОДНОЙ УЧЕНИЧЕСКОЙ ТЕТРАДИ (а не на отдельных листах!) и высылать нам простым (НЕ ЗАКАЗНЫМ!) письмом (не бандеролью) не позже 20 числа следующого места, написав на конверте в правом нижнем углу слова «КВАНТ», по адресу: 630090, Новосибирск 90, проспект Нууки 6, ВЦ СО АН, отдел информаники, Заочная школа программирования. Просим волжить в ваше отправление конверт с вашим адресом и 6-конечной маркой для ответа.

Новый учащимся к заданием 5 урока следует приложить заявление, написанное по образцу, указанному в «Квант», 1979, № 9, с. 45.

Заочная школа программирования

Урок 5: Основные операторы учебно-производственного языка Рапира

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

Прежде, чем читать дальше, проверьте себя, ответив на следующие вопросы:

  1. Что такое предписание? процедура? оператор? директива?

  2. Как описывать и как вызывать процедуры в Робике?

  3. Как составлять и читать синтаксические диagrams?

  4. Что такое имя? Что может быть значением имени? Как присвоить имени новое значение?

  5. Как записывать и как выполнять предписание приваивания? предписание печати? условия и циклическое предписание?

  6. Что такое параметры и для чего они используют?

Если какие-то из этих вопросов вызывали у вас затруднения, перейтите материалы уроков 1—4 («Квант», 1979, № 9—11).

Основные правила языка Рапира

Основные правила языка Рапира очень похожи на правила Робика. Любая программа состоит из предложений; после каждого из них ставится точка с запятой. Предписания состоит из отдельных слов. Под словами в большинстве языков программирования, в том числе в Робике и Рапике, подзаумевают числа, тексты, имена, специальные знаки (например, скобки,

53

знаки арифметических операций и т. д.) и так называемые ключевые слова (например, слова ЕСЛИ, ТО, ИНАЧЕ в условиях оператора Робика). Правила записи в Рапире в основном знакомы вам по Робику:

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

А5, ЗАЯЦ, ЛИДI, ПУТЬ, ВРЕМЯ.

Число символов в имени может быть любым, но машина различает имена по первым шести символам, так что с ее точки зрения имена

КРОКОДИЛ, КРОКОДИЛ5, КРОКОД и КРОКОДИЛЬЧИК

— это одно и то же имя. Во избежание ошибок не рекомендуется без крайней необходимости употреблять в программе имена длинее шести символов. Кроме того, запрещено употреблять имена, совпадующие с ключевыми словами. Слово ЕСЛИ, например, не может быть именем.

Тексты состоит из любых символов, заключенных в apostrophes:

‘ЭТО ТЕКСТ НА РАПИРЕ’
‘A+B+C9090=33/—/’.

Числа состоит из цифр; для отделения целой части от дробной используется точка:

2.521 21393 2345.00098

В числах должно быть не больше 12 цифр.

Со специальными знаками и ключевыми словами мы познакомимся по мере изучения отдельных предложений.

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

Предписание присаивания

Знакомство с предложениями языка Рапира мы научем с предложения присаивания. Его синтаксическая диаграмма очень проста и наполняет сокращенную до предела диаграмму, соответствующую предписанию Робика:

Стрелка —> читается «присвонть». На клавиатуре obчичных терминалов такого знака нет, так что для изображения стрелки приходится нажать две клавиши: «—» (минус) и «>» (больше).

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

В языке Рапира используется следующие знаки арифметических операций:

  • сложение
    — вычитание
  • умножение
    / деление
    ! возведение в степень*)

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

Ясно, что специальные вычислительные операторы (СЛОЖИТЬ, ВЫЧЕСТЬ и т. д.), имеющиеся в Робике, оказываются совершеннеными в Рапире: любые вычисления могут быть использованы в самом операторе присаивания, при этом формулы записываются почти так же, как в школьной математике.

*) Наример, A2A^2 записывается так: A!2A!2.

54

Например, для вычисления по формуле
y=2,781⋅250+500−92,5y = 2,781 \cdot 250 + 500 - 92,5
достаточно написать
2.781⋅250+500−92.5→y2.781 \cdot 250 + 500 - 92.5 \rightarrow y

При переходе от математической записи к программе на Рапире следует учитывать, однako, что знак умножения в Рапире, в отличие от обычной математики, нельзя пропускать: вместо 2АВ нужно писать 2AB, вместо (A+B)(A+B) (A−B)(A-B) пишется (A+B)∗(A−B)(A+B)*(A-B).

Задание 5.1. Записать на языке Рапира последовательность предписаний для вычисления по формулам:

A=15;B=24;A = 15; \quad B = 24;
C=3A+A3B2+(A+B)5−A625+33A6;C = 3A + A^3B^2 + (A+B)^5 - \frac{A^6}{25} + 33A^6;
K=8C+A2(A+B+C)7−33+(76A−34)58+C9;K = 8C + A^2(A+B+C)^7 - 33 + \frac{(76A-34)}{58} + C^9;
J=K838+5A8+(A+K+B)9−76+58C;J = \frac{K^8}{38} + \frac{5A}{8} + (A+K+B)^9 - 76 + 58C;

Задание 5.2. Составить таблицу значений и определить, чем будет равны значения этих имен после использования программы:
2→A;A!2→B;2 \rightarrow A; \quad A!2 \rightarrow B;
B∗A+(B+A+B)∗A!2+A→AB*A + (B+A+B)*A!2+A \rightarrow A
A∗B→CA*B \rightarrow C
C∗2+B∗8+C∗2+A/2→AC*2+B*8+C*2+A/2 \rightarrow A

Задание 5.3. Записать на Рапире формулы для отискания корней X1 и X2 квадратного уравнения*) Ax2+Bx+C=0Ax^2+Bx+C=0.

(Указание для шести- и семи-классников: A\sqrt{A} можно записать в виде A1/2A^{1/2}.)

*) Сообщаем шестиклассником эту формулу: X1,2=−B±B2−4AC2AX_{1,2} = \frac{-B \pm \sqrt{B^2-4AC}}{2A}.

Условное предложение и цикл
Условное и циклическое предложения в Рапире выглядает так:

Специальный знак :: (два двое-точия) в циклическом предложении читается «повторять».

Основное отличие этих диаграмм от диаграммы Робика, как легко заметить, состоит в том, что после слов TO и ИНАЧЕ в условном предложении и после знака :: в циклическом может стать любое число предложений, разделенных точками с запятой, а не одно-единственное предложение, как в Робике. В конце обихих предложений ставится ключевое слово BCE.

Условие в простейшем случае имеет вид:

В Рапире использует такие знаки сравнения:
= равно
/ = не равно
> больше
< меньше
> = больше или равно
= < меньше или равно

Например, после выполнения предложения
ECЛИ A>BA>B TO B→CB \rightarrow C
ИНАЧЕ A→CA \rightarrow C ВСЕ;
значение имен CC становится меньше из значений имен AA и BB.

Рассмотрим более подробно работу такой программы: