Пример создания макроса в LibreOffice 3
Методические материалыАвтор: Владимир Черный
Автор предлагаемой ниже статьи, преподаватель информатики КГБОУ СПО «Барнаульский строительный колледж» Олег Чебан известен уже постоянным читателям по статям о Gambas — среде программирования на Basic. Basic применяется и при создании макросов для OpenOffice | LibreOffice. В статье приводится пример создания макроса, а для тех, кто захочет пойти дальше в списке литературы приведен переводной учебник, который легко «гуглится» и скачивается.
Алгоритм создания макросов в LibreOffice 3
Предисловие
Программирование является основной ветвью школьной информатики, и перед учителем информатики (и не только) встает дилемма выбора среды программирования для обучения, причем, среда должна содержать не только развитые управляющие конструкции, но и нести в себе возможности практического применения. Думается, что растущая популярность свободного офиса OpenOffice | LibreOffice не только в образовании, но и в коммерческих, бюджетных организациях является достаточным аргументом для выбора программирования на макросах OpenOffice в образовательном учреждении.
Задача. Разработать тест на знания по таблице умножения.
Условия.
- Количество вопросов 5
- Множители должны задаваться случайным образом в диапазоне от 1 до 9
- Если правильных ответов 5, то оценка 5, если 4, то 4 и т.д..
Решение
- Создать файл, например:
Calc-2.ods
- Предварительные настройки:
- Сервис — Параметры — LibreOffice — Общие: включить экспериментальные
возможности - Сервис — Параметры — LibreOffice — Безопасность — Безопасность макросов: средний
- Сервис — Параметры — LibreOffice — Общие: включить экспериментальные
- Сервис — Макросы — Управление макросами — LibreOffice Basic — Макрос из Calc-2.ods: Создать модуль, см. Рис. 1.
Рисунок 1. Создание модуля
- Процедура Main:
Option Explicit 'Автоматическая проверка кода на синтаксические ошибки
Sub Main
rem Переменная а целого типа (Integer - целый)
Dim a,b,c as Integer
rem Переменная s строкового типа (String - строка)
Dim s As String
Dim i,n as byte 'экономим память компьютера :), тип 1 байт
n=0
'Цикл с параметром, количество повторений - 5
for i=1 to 5
'Псевдослучайное число в диапазоне от 1 до 9
a=Int(9 * Rnd + 1) }
b= Int(9 * Rnd + 1)}
'Вызов стандартного диалогового окна-запроса
s=InputBox("Сколько будет" & a & " * " & b & " = ")
'Отбрасываем двойные кавычки и получаем число
c = val(s)}
if c=a*b then n=n+1 'Подсчет количества правильных ответов
next i
'Оператор выбора
select case n
case 5: MsgBox("Молодец! "+5)
case 4: MsgBox("Хорошо }"+4)
case 3: MsgBox("Удовлетворительно.."+3)
case 1 to 2: msgbox("Увы, неверно :( "+2)
case else msgbox("Вы не ответили ни на один вопрос ")
end select
End Sub
- Создание меню: Сервис — Настройка — Панель инструментов — Создать, см. Рис. 2
- Создание команды меню: Сервис — Настройка — Панель инструментов — Добавить, см. Рис. 3
- По команде: Изменить — Переименовать, можно переименовать нашу команду в «Математика».
- Результат, см. Рис. 4.
Литература:
- Программирование на языке OpenOffice.org Basic/ StarOffice 8 Programming Guide for BASIC Sun Microsystems.
(Перевод Дмитрий Чернов)
Приложение:
Файл Calc-2.ods, содержит описанный пример
Файл Calc-2a.ods, содержит пример рассчета средней оценки и построение диаграммы успеваемости
Декабрь 1, 2013, 6:36 пп
Коллега, вы как всегда — на высоте!!! Очень интересный пример. Спасибо.
Декабрь 8, 2013, 5:37 пп
Здравствуйте!
Задумка была разработать методичку по макросам в LibreOffice, как ни странно, в интернете маловато методической информации, не считая справочной. С одной стороны привлечь внимание к свободному офису, с другой — показать, как при минимальных условиях, можно организовать вполне приличные занятия по программированию в школе, ссузе, вузе. Да судьба перебросила на другой фронт работы, сейчас преподаю схемотехнику, интересно и там, оказывается преподавание «скучной» булевой алгебры можно построить на практических примерах автоматики в производстве. Если интересно, можно опубликовать несколько лабораторных работ?
Декабрь 9, 2013, 9:36 дп
Конечно, Олег, присылайте, мой адрес не изменился
Декабрь 9, 2013, 5:32 пп
Понятно
В ближайшее время..