Правила и примеры ниже описывают именно этот учебный интерпретатор.
Он выполняет основные конструкции из руководства Cambridge 9618.
Как запустить программу
Введите код слева и нажмите Run или
Ctrl + Enter.
Команда INPUT откроет поле ввода справа.
Вводите значение без кавычек, затем нажмите Enter.
Кнопка Stop прерывает программу.
Ошибка показывает номер строки и выделяет её в редакторе.
Кнопка «←» вставляет присваивание.
Можно также набрать <-.
Клавиша Tab добавляет отступ из трёх пробелов,
а Shift + Tab убирает его.
Если выделено несколько строк, отступ изменяется сразу для всех.
Один оператор пишите на одной строке;
строки заголовков подпрограмм не переносите.
Отступы удобны для чтения, но границы блоков определяются
командами ENDIF, NEXT и другими окончаниями.
Программа и виртуальный файл хранятся только в текущей странице.
Перед закрытием скачайте свой код кнопкой «Скачать код».
Каждый Run начинает выполнение программы заново, а содержимое
окна «Виртуальный файл» снова загружается в файл с указанным именем.
Задачи для самостоятельной работы
Панель «Задачи» находится справа. Стрелки ← и → переключают
категории в порядке Basic programming, If / Else, Loops,
1D arrays, 2D arrays, Star patterns. Нумерация Problem 1,
Problem 2 и далее начинается заново в каждой категории.
Нажмите Problem, чтобы открыть условие, примеры и рисунки.
Кнопка «Закрыть» возвращает к списку; клавиша Esc в панели
задачи делает то же самое. Решение вводите в редакторе и
запускайте кнопкой Run. Задания содержат условия и примеры
ожидаемого результата; автоматической проверки решений нет.
Ширина панели меняется разделителем слева от неё, а высота —
перетаскиванием нижнего правого угла. Двойной щелчок по
разделителю восстанавливает исходные ширины всех четырёх панелей.
На узком экране панели располагаются друг под другом.
Для вывода ряда чисел или узора в одной строке можно собрать
строку оператором & и вывести её одной командой OUTPUT.
Для преобразования числа в строку используйте NUM_TO_STR.
Переменные, типы, присваивание
Здесь объявление DECLARE обязательно.
Имена: латинская буква в начале, затем буквы, цифры и _.
Регистр имён не различается.
Команды рекомендуется писать ПРОПИСНЫМИ;
тренажёр принимает и строчные.
DECLARE Count : INTEGER
DECLARE Average : REAL
DECLARE Name : STRING
DECLARE Letter : CHAR
DECLARE Ready : BOOLEAN
CONSTANT Limit = 12
Count ← 4
Average ← Count / 2
Name ← "Dana"
Letter ← 'D'
Ready ← TRUE
OUTPUT Name, ": ", Average
INTEGER — целое, REAL — вещественное,
STRING — строка в двойных кавычках,
CHAR — один символ в одинарных кавычках,
BOOLEAN — TRUE/FALSE.
CONSTANT принимает литерал.
Перед чтением переменной или элемента массива
присвойте ему значение.
Результат / имеет тип REAL, даже если делится без остатка.
Присваивание REAL переменной INTEGER требует явного INT(...).
В числовом вводе используйте десятичную точку.
Операции и комментарии
| Запись | Назначение |
← или <- | Присваивание |
+ - * / DIV MOD | Арифметика; DIV — целочисленное деление, MOD — остаток |
= <> < > <= >= | Сравнение |
NOT AND OR | Логические операции |
& | Соединение строк |
// комментарий | До конца строки |
Скобки задают порядок вычислений.
Здесь AND и OR вычисляют оба операнда:
проверку границы массива перед обращением к элементу
оформляйте отдельным IF.
DIV и INT отбрасывают дробную часть к нулю;
MOD согласован с таким делением.
Условия и циклы
DECLARE I : INTEGER
FOR I ← 3 TO 1 STEP -1
IF I = 2 THEN
OUTPUT "middle"
ELSE
OUTPUT I
ENDIF
NEXT I
I ← 0
WHILE I < 2
I ← I + 1
ENDWHILE
REPEAT
I ← I - 1
UNTIL I = 0
Условие IF/WHILE/UNTIL должно быть BOOLEAN.
REPEAT выполняется хотя бы один раз и завершается при TRUE.
В FOR конечное значение включено; STEP не может быть нулём.
После FOR этот интерпретатор оставляет счётчик на первом
значении вне диапазона.
CASE OF I
0 : OUTPUT "zero"
1 TO 9 : OUTPUT "one digit"
OTHERWISE : OUTPUT "other"
ENDCASE
Выполняется первый подходящий вариант.
OTHERWISE, если используется, должен быть последним.
Массивы и подпрограммы
DECLARE Scores : ARRAY[1:5] OF INTEGER
DECLARE Board : ARRAY[0:2,0:2] OF CHAR
Scores[1] ← 19
Board[0,0] ← 'X'
OUTPUT Scores[1]
Границы включены.
Поддерживаются 1D/2D массивы базовых типов.
При присваивании целого массива создаётся копия;
тип элементов и границы должны совпадать.
PROCEDURE AddOne(BYREF X : INTEGER)
X ← X + 1
ENDPROCEDURE
FUNCTION Square(X : INTEGER) RETURNS INTEGER
RETURN X * X
ENDFUNCTION
DECLARE N : INTEGER
N ← 4
CALL AddOne(N)
OUTPUT Square(N)
BYVAL — копия, BYREF — изменение исходной переменной.
Метод передачи действует и на следующие параметры
до другого BYVAL/BYREF.
У FUNCTION разрешён только BYVAL.
Процедуры запускаются через CALL;
функции используются в выражениях.
Рекурсия поддерживается.
Объявляйте подпрограммы на верхнем уровне,
локальные переменные — в начале подпрограммы.
Встроенные функции
| Функция | Результат в этой странице |
LENGTH("School") | 6 |
RIGHT("School", 2) | "ol" |
MID("School", 2, 3) | "cho"; первая позиция — 1 |
UCASE('b'), LCASE('R') | 'B', 'r'; аргумент CHAR |
INT(8.9) | 8 |
RAND(5) | Случайное REAL: 0 ≤ x < 5 |
DAY, MONTH, YEAR | Части значения DATE |
SETDATE(D,M,Y), TODAY | Создание даты и текущая дата |
Дополнения тренажёра:
LEFT(S,N); SUBSTRING(S,P,N) как MID;
TO_UPPER(S), TO_LOWER(S) для целых строк;
RANDOM() от 0 включительно до 1 исключительно;
ROUND(X,N), где N — 0…10 знаков;
ASC/CHR для ASCII 0…127;
NUM_TO_STR, STR_TO_NUM, IS_NUM.
STR_TO_NUM возвращает REAL.
Дополнительные функции не означают единый стандарт
всех экзаменационных заданий — проверяйте определение
функции в задании.
Учебные текстовые файлы
DECLARE Text : STRING
OPENFILE "demo.txt" FOR WRITE
WRITEFILE "demo.txt", "Hello class"
CLOSEFILE "demo.txt"
OPENFILE "demo.txt" FOR READ
WHILE NOT EOF("demo.txt")
READFILE "demo.txt", Text
OUTPUT Text
ENDWHILE
CLOSEFILE "demo.txt"
Чтобы читать свои данные, в панели «Виртуальный файл» укажите имя файла
(например, data.txt) и введите содержимое:
одна строка окна соответствует одной записи файла.
При нажатии Run этот файл становится доступен программе.
После завершения WRITEFILE или APPEND новое содержимое
выбранного файла автоматически появится в том же окне.
READ читает, WRITE создаёт или очищает,
APPEND добавляет строки.
READFILE/WRITEFILE работают со STRING.
Файл сначала нужно открыть; EOF проверяет конец.
Имена файлов чувствительны к регистру.
Это файлы в памяти страницы, не на диске:
браузер не открывает реальные файлы компьютера.
Итоговое содержимое всех файлов также видно под редактором.
Границы поддержки и источники
Это учебный интерпретатор основных конструкций,
а не полная реализация всего Cambridge 9618.
Пока не выполняются пользовательские TYPE/RECORD,
ENUM, SET, указатели, CLASS/NEW/INHERITS,
случайный доступ SEEK/GETRECORD/PUTRECORD
и произвольные функции из отдельных экзаменационных заданий.
Их синтаксис смотрите в полном руководстве.
Лимиты: 100 000 вычислительных шагов,
100 вложенных вызовов,
20 000 элементов одного массива,
200 000 символов суммарного вывода/записи.
Целые числа ограничены безопасным диапазоном JavaScript;
REAL может иметь погрешность округления.
Повторное объявление в одной области видимости вызывает ошибку.
Все синтаксические блоки проверяются перед запуском;
типы и значения проверяются при выполнении.
Источник:
Cambridge 9618 Pseudocode Guide, 2027–2029
.
Дополнительно:
Cambridge 9618 Syllabus, 2027–2029
.
Справка написана заново; примеры — учебные,
не копии экзаменационных ответов.