Блэкбокс может создавать как консольные, так и графические приложения. Это довольно непростой сборочный процесс. Для новичков он может быть сложен.
Школьная сборка Блэкбокс имеет специальный инструмент «Собрать Приложение»
Это сугубо учебный автоматизированный инструмент. Когда вы будете настоящими программистами, вы будете собирать приложения сами, используя различные модули. Здесь вы можете использовать только документы ODC, которые называются Study.odc. Приложение само соберется в файл .exe в папке Blackbox.
Вот простейшая программа. Обратим внимание на несколько особенностей:
1. Не импортирован модуль Out. Тут нет журнала, значит модуль Out не нужен
2. Есть переменная «x» массивового типа. Она нужна, чтобы принять строку, которую введёт пользователь. Дело в том, что в Обероне нет строки, как отдельного типа данных.
3. ReadLn(x) — команда, которая позволяет пользователю вводить данные. Она терпеливо ждёт, пока пользователь набирает текст. Этот эффект используется для остановки выполнения программы. Теперь она не закрывается и дает возможность нам разглядеть окно приложения 🙂 Если мы соберем приложение без этой команды, то оно откроется и тут же закроется. Это происходит, потому что компьютер гораздо быстрее человека
MODULE Study;
IMPORT Console;
VAR
x:ARRAY 4 OF CHAR;
BEGIN
Console.WriteStr("Hello");
Console.ReadLn(x);
END Study.
Теперь посложнее. Опробуем разные процедуры модуля Console. Отметим, что тут есть проблемы с вводом строк. В Обероне, длина строки на один символ больше, чем кажется (см. урок 1).
MODULE Study;
IMPORT Console;
VAR
x:ARRAY 8 OF CHAR;
BEGIN
Console.WriteStr("Введите слово:");
Console.ReadLn(x);
Console.WriteStr("Вы ввели: ");Console.WriteStr(x);Console.WriteLn;
Console.WriteStr("Нажмите Enter для выхода:");Console.ReadLn(x);
END Study.
В завершение, создадим консольное приложение для сложения чисел. Чтобы его понять, нужно знать о преобразовании данных и о поведении строк в консольном вводе (на 1 символ длиннее, чем кажется!)
MODULE Study;
IMPORT Out,Console,Strings;
VAR
сonsole_string_array:ARRAY 8 OF CHAR;
(*массив для консольного вывода*)
x,y,summ:INTEGER;
mistake:INTEGER;
BEGIN
x:=0;
y:=0;
summ:=0;
Console.WriteStr("Введите два целых числа, не более 99999 каждое.");
Console.WriteLn;
Console.WriteStr("Введите первое число:");
Console.ReadLn(сonsole_string_array);
Console.WriteLn;
Strings.StringToInt(сonsole_string_array,x,mistake);
Console.WriteStr("Введите второе число:");
Console.ReadLn(сonsole_string_array);
Console.WriteLn;
Strings.StringToInt(сonsole_string_array,y,mistake);
summ:=x+y;
Strings.IntToString(summ,сonsole_string_array);
Console.WriteStr('summ: '+сonsole_string_array);
Console.WriteLn;
Strings.IntToString(mistake,сonsole_string_array);
Console.WriteStr('mistake: '+сonsole_string_array);
Console.WriteLn;
Console.WriteStr("Нажмите Enter для выхода:");Console.ReadLn(сonsole_string_array);
END Study.