Воскресенье, 24.11.2024, 12:33 | Приветствую Вас Гость

...

Блог


21:29
Rapid-Q tutorial

  

О 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 - используется для задания шрифта.

  

Просмотров: 635 | Добавил: moskov | Рейтинг: 4.2/4
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]

Меню сайта

Мини-чат

Статистика


Онлайн всего: 8
Гостей: 8
Пользователей: 0

Форма входа

Календарь

«  Апрель 2016  »
ПнВтСрЧтПтСбВс
    123
45678910
11121314151617
18192021222324
252627282930

Архив записей

Друзья сайта

  • ЗОВ КОСМОСА

  • Хулиган Вселенной

  • Тюремная поэзия

  • Религиозная поэзия

  • Сайт клана ЛеГиоН
  • Поиск