О Rapid-Q.
Rapid-Q - бейсикоподобный язык программирования.Как и все бейсики прост в изучении.На самом деле для изучения какого-либо языка программирования необходимо желание и интерес.Если желание и интерес имеется,то и изучение станет продуктивным.
Rapid-Q является мультиплатформенным.Поэтому программы,написанные на нём,могут запускаться на
Windows, Linux и Unix.Он поддерживает графический интерфейс пользователя.Также в язык включены консольные возможности.В частичной степени поддерживает объектно-ориентированное программирование.
Rapid-Q компилирует программу в автономное приложение.По сути Rapid-Q является компилятором байт-кода.То есть,для выполнения программы все же необходим интерпретатор.Об интерпретаторе не нужно беспокоиться,так как Rapid-Q прикрепляет его к написанной вами программе.Также возможно разделение байт-кода от интерпретатора.В этом случае байт-код существует отдельно.
Для Rapid-Q существует несколько интегрированных сред разработки.Хотя для написания программ можно использовать простой текстовый редактор.
Написание консольных приложений.
В языке программирования Rapid-Q существуют
функции,которые можно использовать для программирования консольных приложений.Далее дан список этих функций и объяснения принципов их действия:
CLS - функция очистки экрана.
PRINT - функция печати на экран.
INPUT - функция,принимающая ввод пользователя.
LOCATE - функция,позиционирующая курсор в консоле.
COLOR - функция,изменяющая атрибуты текста в консоле.
SLEEP - функция,останавливающая выполнение программы на заданный промежуток времени.
Данные функция являются самыми часто используемыми и их вполне достаточно для реализации взаимодействия с пользователем.
Во многих учебникам по программированию первая программа выводит на экран компьютера приветственное сообщение.Не будем нарушать сложившиюся традицию и мы.
Листинг №1
print "HELLO"
Данная программа состоит из одной инструкции и выводит на консоль сообщение,заключенное в двойные кавычки.Это самое сообщение является текстовой строкой.Все текстовые строки в Rapid-Q должны быть обрамлены двойными кавычками.
Но есть один минус в этой программе - сообщение сразу же исчезает.Для того,чтобы сообщение не исчезало мгновенно - необходимо добавить еще одну инструкцию.
Листинг №2
print "HELLO"
sleep 100
Инструкция sleep - останавливает выполнение программы на количество секунд заданным некоторым числом.В этом случае программа остановится на сто секунд,после чего закроется.
Теперь разберёмся с вводом данных в консоль при помощи функции input.
Нам необходимо где-то хранить введенные данных.Для этого нужно объявить переменную определенного типа данных.Переменная - это именованная область памяти.
В Rapid-Q существует оператор dim,который специально предназначен для объявления переменных.
Листинг №3
dim inputdata as string
input "сколько вам лет",inputdata
print inputdata
sleep 100
Вначале объявляется переменная с именем inputdata.Потом происходит чтение данных пользователя с консоли.А затем печатается на консоль то,что было введено.Следующая инструкция была разобрана во втором листинге.
Листинг №4
dim number1 as integer
dim number2 as integer
number1 = 2
number2 = 2
print number1 + number2
sleep 100
Листинг №4 - начинается с объявления целочисленных переменных.Затем переменных присваиваются определенные значения посредством оператора присваивания,который обозначается знаком равно.Функция print распечатывает алгебраическую сумму двух переменных.
Листинг №5
dim number1 as integer
dim number2 as integer
input "введите первое число",number1
input "введите второе число",number2
print number1 + number2
sleep 100
Листинг №5 начинается с объявления необходимых переменных.Затем осуществляется пользователем ввод целочисленных переменных,которое впоследствии суммируются и выводятся на консоль.
Целочисленные переменные могут принимать ограниченный диапазон значений от 2147483648 до 2147483647.Все числа выходящие за этот диапазон не могут хранится в целочисленной переменной.Об этом не стоит забывать и нужно всегда помнит.Иначе возможны казусы.Вроде бы программа составлена правильно,но не работает так,как задумано.Лучше всего избегать выход из диапазона.Тем самым избегаются логические ошибки.
Далее рассмотрим функцию color.
Листинг №6
color 4
print "hello"
sleep 100
Данный листинг выводит на экран слово hello красными буквами.
Вообще-то функция color может иметь два параметра,которые определяет цвет текста и цвет обрамления текста.Первый параметр может получать в качестве значений числа в диапазоне от 0 до 15.Второй параметр имеет тот же диапазон значений,что и первый параметр.
Листинг №7
color 0,15
print "hello"
sleep 100
Листинг №7 - выводит белый черный текст с белым обрамлением.
Листинг №8
dim number as integer
input "введите отрицательное число",number
print "модуль числа равен ",abs(number)
sleep 100
Программа из листинга №8 запрашивает отрицательное число,чтобы найти абсолютное значение числа.Иными словами,мы в любом случае на консоле увидим только положительное число.
Листинг №9
dim number as integer
for a = 0 to 180
print "cинус угла ",a," ",sin(a)
next
sleep 100
Листинг №9 содержит цикл,который начинается с оператора for.Цикл - выполняет повторение некоторого участка кода.В данном примере цикл выполняется 181 раз.Переменная а - служит обозначением угла в градусах,а функция sin - определяет значения синуса угла и выводит их на консоль.
Листинг №10
dim number as integer
for a = 180 to 360
print "cинус угла ",a," ",sin(a)
next
sleep 100
Листинг №10 - содержит цикл,который тоже выполняется 181 раз,только начальное значение цикла равно 180.Начальное значение цикла определяется пременной а,как в листинге №9.Конечное значение цикла определяется за оператором to.
Листинг №11
dim number as integer
for a = 0 to 180 step 10
print "cинус угла ",a," ",sin(a)
next
sleep 100
Листинг №10 - содержит цикл,который выполняется 19 раз.Начальное значение равно нулю,конечное значение равно 180.Только в этом цикле есть шаг,который определяется оператором step.Каждое повторение цикла увеличивает переменную на число,заданное за оператором step.Если шаг не был бы указан,цикл повторил код 181 раз.Но в данном случае шаг - указан и он равен десяти.
Написание графических приложений.
Интегрированная среда разработки,поставляемая вместе с Rapid-Q,позволяет быстро создавать графический интерфейс приложения.Хотя никто нас не заставляет использовать визуальные динайнеры форм и мы вполне может создавать графический интерфейс вручную.Но это уже дело привычки.
Листинг №1
CREATE Form AS QFORM
Caption = "Form1"
Width = 320
Height = 240
Center
END CREATE
Form.ShowModal
Листинг №1 - создаёт форму,которую потом и показывает пользователю программы.Форма создается с заголовком,который определяется в свойстве caption.Свойство Width - задаёт ширину.Свойство Height - задает высоту.
Form.ShowModal - заставляет показать форму на экране компьютера.
Листинг №2
CREATE Form AS QFORM
Caption = "Caption1"
Width = 320
Height = 240
Center
END CREATE
Form.Caption = "Caption2"
Form.ShowModal
Form - это объект.Обращение к свойствам осуществляется с помощью оператора точки.Вначале заголовок имеет значение "Caption1".Но потом заголовок меняется на "Caption2".Последнее изменение заголовка и является текущим заголовком.
Для любого интуитивно понятно,почему заголовок имеет значение "Caption2".Так следует из текста этой простой графической программы.
Листинг №3
DECLARE SUB Button1Click ()
CREATE Form AS QFORM
Caption = "Form1"
Width = 320
Height = 240
Center
CREATE Button1 AS QBUTTON
Caption = "Button1"
Left = 116
Top = 76
OnClick = Button1Click
END CREATE
END CREATE
Form.ShowModal
SUB Button1Click ()
MessageBox("hello","",0)
END SUB
Вначале листинга №3 идёт декларация функции посредством оператора DECLARE.Определение функции начинается с ключевого слова SUB. Далее следует название функции,а потом её параметры.Если у функции нет параметров,то за названием функции ставятся круглые скобки,которые сигнализируют о том,что параметры отсутствуют.
Объект Button1 имеет свойство OnClick,которое определяет вызов подпрограммы Button1Click,начинающий своё выполнение после клика мыши на кнопке.
Листинг №4
DECLARE SUB Button1Click ()
CREATE Form AS QFORM
Caption = "Form1"
Width = 320
Height = 240
Center
CREATE Button1 AS QBUTTON
Caption = "run"
Left = 106
Top = 85
OnClick = Button1Click
END CREATE
CREATE Edit1 AS QEDIT
Text = "Edit1"
Left = 82
Top = 40
TabOrder = 1
END CREATE
END CREATE
Form.ShowModal
SUB Button1Click ()
messagebox(Edit1.Text,"title",0)
END SUB
В листинге №4 реализована простая идея. Её сущность заключается в том,чтобы считать данные из текстового поля и отобразить их на экране.
Чтобы получить данные из текстового поля необходимо задать имя текстового поля и через оператор точки указать свойство Text.
Функция messagebox позволяет отобразить в отдельном стандартном окне введенные данные из текстового поля.
Первый аргумент messagebox принимает текст сообщения,второй параметр принимает заголовок стандартного окна,третий параметр может принимать разнообразные определенные числовые значения. Нулевой третий параметр определяет окно с одной кнопкой.Нажатие на неё закрывает окно.
Листинг №5
DECLARE SUB Button1Click ()
DECLARE SUB Button2Click ()
DECLARE SUB Button3Click ()
DECLARE SUB Button4Click ()
CREATE Form AS QFORM
Caption = "Calc"
Width = 200
Height = 200
Center
CREATE Button1 AS QBUTTON
Caption = "+"
Left = 15
Top = 85
Width = 75
Height = 25
OnClick = Button1Click
END CREATE
CREATE Button2 AS QBUTTON
Caption = "-"
Left = 90
Top = 85
Width = 75
Height = 25
TabOrder = 1
OnClick = Button2Click
END CREATE
CREATE Button3 AS QBUTTON
Caption = "*"
Left = 15
Top = 120
Width = 75
Height = 25
TabOrder = 5
OnClick = Button3Click
END CREATE
CREATE Button4 AS QBUTTON
Caption = "/"
Left = 90
Top = 120
Width = 75
Height = 25
TabOrder = 6
OnClick = Button4Click
END CREATE
CREATE Edit1 AS QEDIT
Text = "0"
Left = 15
Top = 15
Height = 21
Width = 150
TabOrder = 2
END CREATE
CREATE Edit2 AS QEDIT
Text = "0"
Left = 15
Top = 35
Height = 21
Width = 150
TabOrder = 3
END CREATE
CREATE Edit3 AS QEDIT
Text = "0"
Left = 15
Top = 55
Height = 21
Width = 150
TabOrder = 4
END CREATE
END CREATE
Form.ShowModal
SUB Button1Click ()
Edit3.Text = STR$(VAL(Edit1.Text) + VAL(Edit2.Text))
END SUB
SUB Button2Click ()
Edit3.Text = STR$(VAL(Edit1.Text) - VAL(Edit2.Text))
END SUB
SUB Button3Click ()
Edit3.Text = STR$(VAL(Edit1.Text) * VAL(Edit2.Text))
END SUB
SUB Button4Click ()
if (VAL(Edit2.Text) = 0) then
messagebox("Деление на нуль невозможно","Сообщение",0)
end if
Edit3.Text = STR$(VAL(Edit1.Text) / VAL(Edit2.Text))
END SUB
Листинг №5 - это реализация калькулятора.
Чтобы получить числовое значения свойства Text объекта Edit1 - необходимо использовать функция VAL.Она выполняет преобразование строкового значения в числовое.Обратная ей функция STR$ выполняет преобразование числового значения в строковое.
Листинг №6
DECLARE SUB Button1Click ()
DECLARE SUB Button2Click ()
DIM Form1 AS QForm
Dim Button1 AS QBUTTON
DIM Form2 AS QForm
DIM Button2 AS QBUTTON
Form1.Caption = "Form 1"
Form1.Width = 320
Form1.Height = 240
Form1.Center
Button1.Parent = Form1
Button1.Caption = "form2"
Button1.Left = 235
Button1.Top = 0
Button1.OnClick = Button1Click
Form1.ShowModal
SUB Button1Click ()
Button2.Parent = Form2
Button2.Caption = "Exit"
Button2.Left = 235
Button2.Top = 0
Button2.Onclick = Button2Click
Form2.Caption = "Form 2"
Form2.ShowModal
END SUB
SUB Button2Click()
Form1.Close
Form2.Close
END SUB
Листинг №6 - простейшая реализация многооконной программы.
Для чего может понадобиться многооконная организация?
Многооконность позволяет распределить функциональные возможности приложения,что главным образом делается для удобства пользователя.
Конечно,листинг №6 - не показывает всю прелесть распределения в силу того,что является небольшим примером.
Листинг №7
DIM Canvas AS QCanvas
DIM Form AS QForm
DIM Timer1 AS QTimer
DIM Font AS QFont
Dim number as integer
SUB TimerOver
number = number + 1
Canvas.Textout (Canvas.Width/2-50,Canvas.Height/2,STR$(number), &H00FF00, 0)
END SUB
Form.Width = 400
Form.Height = 200
Form.Center
Form.Color = 0
Font.Name = "Arial"
Font.Size = 12
Font.Color = &H00FF00
Canvas.Parent = Form
Canvas.Font = Font
Canvas.Color = 0
Canvas.Height = Form.ClientHeight
Canvas.Width = Form.ClientWidth
Timer1.Interval = 1000
Timer1.OnTimer = TimerOver
Form.ShowModal
Листинг №7 - показывает приблизительное количество секунд истекших после запуска программы.
Объект QTimer1 позволяет закрепить функцию,которая будет выполняться после истечения интервала времени.Сам интервал задается в свойстве Interval.
Объект Canvas1 - даёт возможность создать область для рисования.
Объект Font - используется для задания шрифта.
|