Pseudocode Lab

Учебный интерпретатор • основные конструкции Cambridge

Tab / Shift+Tab — отступ · Ctrl + Enter — запуск · F1 — справка

Результат

OUTPUT / INPUT
Нажмите Run. Если программа содержит INPUT, здесь появится поле ввода.
Готово к запуску.

OPENFILE / READFILE

Задачи

    Выберите Problem. Решение вводите в редакторе слева.

    Используйте DECLARE перед переменной. Присваивание: ← или <-. Вводите данные без кавычек. Поддерживаемые команды и ограничения перечислены в справке.

    В панели «Виртуальный файл» — файл в памяти страницы. Укажите это же имя в OPENFILE "data.txt" FOR READ. Перед каждым запуском содержимое окна загружается в файл; изменения через WRITEFILE/APPEND возвращаются в окно после выполнения. Перетаскивайте разделители, чтобы менять ширину панелей.

    Переменные и учебные файлы после выполнения
    ИмяТипЗначение

    Справка по псевдокоду

    Правила и примеры ниже описывают именно этот учебный интерпретатор. Он выполняет основные конструкции из руководства 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 . Справка написана заново; примеры — учебные, не копии экзаменационных ответов.