СПО в российских школах

Команда ALT Linux рассказывает о внедрении свободного программного обеспечения в школах России
Апрель 25, 2011

Программирование в Gambas. Урок 2

Методические материалы
Автор: Владимир Черный

Второй урок по Gambas от Олега Чебан из из г. Киселевск Кемеровской области. Первый урок тут.

Урок 2. Построение графиков функций в Gambas.

Тип урока: Лабораторная работа. Полное учебное занятие.
Цель урока:

  1. Приобрести первичные навыки по использованию графических примитивов в Gambas.
  2. Познакомиться со способом инициализации свойств объектов на программном уровне.
  3. Закрепить знания по использованию оператора выбора (Select Case).
  4. Научиться создавать функции с одним выходным параметром.
  5. Осуществить межпредметную связь с курсом математики.

Задача. Написать программу построения графиков функциональных зависимостей от одной переменной.
Постановка задачи.

  1. Для построения графиков используем область рисования Drawingarea. Для ввода функции текстовое поле TextBox. Построение осуществим по кнопке Button. Внешний вид программы см. Рис. 1. Масштаб: 1 к 30 пикселей.

Рис. 1. Внешний вид программы.

  1. Всего построим 3 функции: Sin(x), Cos(x) и квадратичная X^2, см. табл.1

Табл. 1. Математические функции Gambas.

Функция Описание
Abs(x) Модуль числа X
Log(x) Натуральный логарифм от X
Log10(x) Десятичный логарифм от X
Sin(x) Синус от X, угол в радианах
Cos(x) Косинус от X, угол в радианах
Tan(x) Тангенс от X
ASin(x), Acos(x), ATan(x) Арксинус, арккосинус, арктангенс
Sqr(x) Корень квадратный из X
Randomize Регенерация датчика псевдослучайных чисел
RND Псевдослучайное число от 0 до 1, тип Float (действительный)
RND(3) Псевдослучайное число от 0 до 3
  1. Требования к задаче:
  • инициализацию свойств объектов осуществить в программной части;
  • построение кривой осуществить с помощью «ломанной» линии Draw.Line;
  • масштаб определить как 1:30.

Ход работы:

  1. Предварительные сведения.

К объектам системы Gambas можно применить предопределенные свойства и методы. Сначала пишем имя объекта и через точку указываем свойство (синий кружок), или метод (зеленый). Например, объекту текстовое поле TextBox: зададим свойство text  —  TextBox.text = «33.55 руб.», или метод TextBox.clear — очистить содержимое текстового поля.

  1. Инициализацию свойств осуществим в конструктуре _new:
‘Процедура _new — это конструктор. Используя его, мы можем устанавливать разные заголовки,
‘этикетки и содержание текстовых вводов каждый раз, когда используется диалог.
‘Более того, эти свойства устанавливаются в момент создания.
PUBLIC SUB _new()
    ME.Caption = «Урок 1. Графика в Gambas.» ‘иницализируем/задаем заголовок формы
‘ или так Form.Text = «Урок 1. Графика в Gambas»
   FMain.Center     ‘Форма по центру экрана
   FMain.Width = 500     ‘Ширина формы
   FMain.Height = 400      ‘Высота формы
   DrawingArea1.X = 50     ‘Координаты левого верхнего угла объекта DrawingArea
   DrawingArea1.Y = 40
   DrawingArea1.Width = 400     ‘Ширина объекта DrawingArea
   DrawingArea1.Height = 300     ‘Высота DrawingArea
   DrawingArea1.Background = 15071461  ‘Цвет фона DrawingArea — светлозеленый
   DrawingArea1.ForeColor = 16711937   ‘Оси — цвет красный
   Button1.text = «Построить»
   TextBox1.text = «sin»
END
  1. Вычисляемая функция принимает два параметра: strFunc — функция введенная пользователем (например sin) и fltX — значение Xi. Возвращает результат — Yi
‘Функция вычисления аргумента
SUB trigonometria(strFunc AS String, fltX AS Float) AS Float
  SELECT CASE strFunc
    CASE «sin»
      RETURN Sin(fltX)
    CASE «cos»
      RETURN Cos(fltX)
    CASE «x^2″
      RETURN fltX ^ 2
    CASE ELSE
      RETURN 255
  END SELECT
END
  1. Строим график.

Объект рисунок «DrawingArea» находится во вкладке Container:

Размеры холста DrawingArea мы определи в 400 на 300 точек, значения инициализировали в конструкторе _New, как Fmain.Width=400 (ширина) и Fmain.Height=300 (высота).
Предполагается построить тригонометрическую функцию Sin(x) и Cos(x) на отрезке от -2*Pi (~ -6.28) до +2*Pi (~ +6.28) с шагом табулирования 0.5. Поэтому числовой отрезок по X выглядит так:

Кривую построим из отрезков [X0, Y0]-[X1, Y1] и т.д.. Всего получается 27 отрезков, количество итераций в цикле 26-ть, соответственно.

  1. Процедура «Клик по кнопке».
PUBLIC SUB Button1_Click()
  DIM i AS Byte
  DIM m AS Byte ‘Масштаб
  DIM x AS Float[128]
  DIM y AS Float[128]
  ‘К объекту Draw (Рисунок) применить метод Начать
  DRAW.BEGIN(DrawingArea1)
  Draw.Line(200, 0, 200, 300)
  Draw.Text(«X», 380, 160)  ‘подписать оси
  Draw.Line(0, 150, 400, 150)
  Draw.Text(«Y», 180, 10)
  Draw.Line(230, 140, 230, 150) ‘масштабная единица
  Draw.Text(«1″, 228, 155)
m = 30           ‘масштаб 30 точек
x[0] = -6.5      ‘нач. значение X
y[0] = trigonometria(TextBox1.text, x[0]) ‘ передача параметров функции
x[1] = x[0] + 0.5 ‘шаг табулирования 0.5
‘Если нет в списке функции, то вывести предупреждение и выполнить рекурсию
IF y[0] = 255 THEN    
   Message.error(«Нет такой функции!»)
   _new    ‘рекурсия — перезапуск формы
END IF
FOR i = 1 TO 26 STEP 1
  y[i] = trigonometria(TextBox1.text, x[i])
  Draw.Line(200 + x[i — 1] * m, 150 — y[i — 1] * m, 200 + x[i] * m, 150 — y[i] * m)
  x[i + 1] = x[i] + 0.5
NEXT
‘Применить метод окончить
  DRAW.END()
END

 
Домашнее задание.
Изменить программу таким образом, чтобы выбор вычисляемых функций выбирался пользователем с помощью раскрывающегося списка ComboBox.
1. Вставка функций осуществляется в Панели свойств → свойство List, см. Рис. 2.
Рис. 2.a. Свойство List

Рис. 2.b. Значения List

2. Значения List можно получить по команде: ListBox1.List[0] — первое значение (в нашем случае «sin»), ListBox1.List[1] — второе значение («cos») и т.д..
Copyleft © Oleg Tcheban
ГОУ СПО Киселевский педагогический колледж

Комментарий (1) к “Программирование в Gambas. Урок 2”

  1. oleg говорит:
    Апрель 27, 2011, 8:07 дп

    По ходу освоения системы Gambas, нами были обнаружены следующие преимущества:
    1. Синтаксис управляющих конструкций практически не отличается от «классического» BASIC, т.е. вопрос переучивания языковых конструкций отпадает.
    2. Интерфейс системы схож с VisualBasic 6.0, который фактически стал базовым для учителей информатики практикующих на Бейсике.
    3. Возможность компиляции кода (Проект -> Собрать -> Запускаемые).
    4. Возможность сборки инсталяционного пакета для различных Linux-систем (Проект -> Собрать -> Инсталяционный пакет).
    5. Интерфейс системы не загружен, как например в Lazarus.
    6. Считаем, что визуальное программирование для графической части системы, поможет катализировать интерес учащихся к практическому программированию, которое в свою очередь научит детей систематизировать вал информации, выработает необходимые навыки для «хорошей» постановки задач в различных сферах человеческой деятельности, разовьет алгоритмическое мышление, расширит знания в пограничных естественно-научных дисциплинах.. В общем, подготовит молодых людей к серьезному самообразованию в дальнейшей профессиональной деятельности, будь-то врач, проектировщик, оператор станка с ЧПУ..

    Недостатки:
    1. Небольшое количество Gambas-примеров на русском языке. Временно :)

Оставьте комментарий