Программирование >>  Структурное программирование 

1 ... 274 275 276 [ 277 ] 278 279 280 ... 342


Команда

Пример оператора

Описание

50 rem это комментарий

Любой текст, следующий за командой rem, служит только для комментариев и игнорируется компилятором.

input

30 input X

Отображение на экране знака вопроса как приглашения пользователю ввести целое число с клавиатуры; чтение этого числа и сохранение его в х.

80 let u = 4 (j 56)

Переменной и присваивается значение 4 * (j - 56). Заметьте, что справа от знака присваивания может появиться произвольное комплексное выражение.

print

10 print w

Отображение на экране значения переменной v

goto

70 goto 45

Передача управления строке с номером 45

if/goto

35 if i == z goto 80

Сравнение i и z на равенство и передача управления строке с номером 80, если это условие выполнено; в противном случае, переход к следующей строке.

jend

99 end

Завершение программы

Рис. 15.20. Команды ЯП

Наш компилятор с ЯП распознает только строчные буквы. Все символы в файлах, написанных на ЯП, должны быть строчными (прописные буквы приводят к синтаксической ошибке, если только они не появляются в операторе комментариев rem, в которых они просто игнорируются). Имя переменной состоит из одной буквы. В ЯП не допускаются описательные имена переменных, поэтому переменные следует объяснять в комментариях, чтобы указать на их назначение в программе. ЯП использует только целые переменные. В ЯП не используется никаких объявлений переменных; просто само упоминание имени переменной в программе соответствует объявлению переменной и заданию ей нулевого начального значения. Синтаксис ЯП не допускает операций со строками (чтение строки, запись строки, сравнение строк и т.д.). Если в программе на ЯП встречается строка (после любой команды, кроме команды rem), то компилятор генерирует синтаксическую ошибку. Первая версия нашего компилятора будет предполагать, что программы на ЯП введена корректно. В упражнении 15.29 мы попросим студента модифицировать компилятор так, чтобы он осуществлял контроль синтаксических ошибок.

ЯП использует условный оператор if/goto и оператор безусловной передачи управ.ления goto для изменения потока управления программы. Если условие в операторе if/goto истинно, то управление передается заданной строке программы. В операторе if/goto допускаются следующие операции отношения и проверки равенства: <, >, <=, >=, == или 1=. Старшинство этих операций в ЯП такое же, как и в языке С++.



Давайте теперь рассмотрим несколько программ, демонстрирующих возможности ЯП. Первая программа (рис. 15.21) читает два целых значения с клавиатуры, заносит эти значения в переменные а и Ь, вычисляет и печатает их сумму (сохраненную в переменной с).

Программа, приведенная на рис. 15.22, определяет и печатает большее из двух целых чисел. Целые числа вводятся с клавиатуры и заносятся в переменные s и t. Условный оператор if/goto проверяет условие S >= t. Если условие истинно, то управление передается строке с номером 90 и на экран выводится s; в противном случае выводится t и управление передается оператору end в строке с номером 99, который завершает программу.

10 rem расчет и печать суммы двух целых чисел 15 rem

2 0 rem ввод двух целых чисел 30 input а 4 0 input b 45 rem

50 rem сложение целых чисел и занесение результата в с 60 let с = а + b 65 rem

70 rem печать результата 80 print с

90 rem завершение выполнения программы 99 end

Рис. 15.21. Простая программа для определения суммы двух целых чисел

10 rem определение максимального из двух целых чисел

20 input S

30 input t

32 rem

35 rem проверка условия s >= t

40 if s >= t goto 90

4 5 rem

50 rem если t больше s , то печатается t

60 ptint t

70 goto 99

75 rem

80 rem если s больше или равно t , то печатается s

90 print s

99 end

Рис. 15.22. Проаая программа определения максимального из двух целых чисел

ЯП не имеет структур повторения, подобных структурам for, while или do/while в С-Н-. Однако ЯП может моделировать каждую из этих структур повторения, используя операторы условного перехода if/goto и безусловного перехода goto. На рис. 15.23 показано использование цикла, управляемого меткой, для вычисления квадратов целых чисел. Каждое целое число вводится с клавиатуры и сохраняется в переменной j. Если вводимое значение является сигнальной меткой -9999, то управление передается строке с номером 99 и программа завершается. В противном случае квадрат j присваивается переменной к, которая выводится на экран. Далее про-



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

Используя примеры программ, приведенных на рис. 15.21, 15.22 и 15.23, как руководство к действию, напишите программу на ЯП для выполнения следующих заданий:

a) Введите три целых числа, определите их среднее значение и напечатайте результат.

b) Используйте цикл, управляемый меткой, для ввода 10 целых чисел; вычислите и напечатайте сумму этих чисел.

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

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

e) Введите 10 целых чисел и напечатайте минимальное из них.

f) Вычислите и напечатайте сумму четных чисел от 2 до 30.

g) Вычислите и напечатайте результат умножения нечетных чисел от 1 до 9.

10 rem вычисление квадратов целых чисел 20 input j 23 rem

25 rem проверка значения метки 30 if j == -9999 goto 99 33 rem

35 rem вычисление квадрата j и присваивания результата к 40 let к = j * j 50 print к 53 rem

55 rem цикл для ввода следующего числа в переменную j 60 goto 20 99 end

Рис. 15.23. Вычисление квадратов нескольких чисел

15.27. (Построение компилятора. Примечание: обязательным условием построения вашего компилятора является выполнение в полном объеме упражнений 5.18 и 5.19 главы 5 и упражнений 15.12, 15.13 и 15.26 главы 15). Теперь, когда у нас имеется описание языка ЯП (упражнение 15.26), мы можем обсудить способы построения компилятора для ЯП. Сначала рассмотрим процесс преобразования программы на ЯП в программу на ЯМП (см. специальный раздел главы 5) и выполнение ее с помощью моделирующей программы Простотрона (см. рис. 15.24). Файл, содержащий программу на ЯП, читается компилятором и преобразуется в код ЯМП. Это код выводится в файл на диске, содержащий инструкции на ЯМП по одной инструкции в строке. Затем этот файл с программой на ЯМП загружается в программу, моделирующую Простотрон, а результаты ее выполнения пересылаются в файл на диске и на экран. Заметим, что моделирующая программа Простотрона, созданная в



1 ... 274 275 276 [ 277 ] 278 279 280 ... 342

© 2006 - 2024 pmbk.ru. Генерация страницы: 0.001
При копировании материалов приветствуются ссылки.
Яндекс.Метрика