Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Монография2009

.pdf
Скачиваний:
97
Добавлен:
09.04.2015
Размер:
3 Мб
Скачать
☆

31

Рисунок 10. «Визуальные» программы на языке Scratch

Рассматривая «визуальные» программы на Scratch, можно отметить, что фактически они представляют собой иную форму отображения традиционных текстов программ – цветные «кирпичики» есть аналог синтаксических диаграмм Несси-Шнейдермана, подчеркивающих построение текста программы в соответствии с правилами структурного программирования.

Таким образом, несмотря на широкое применение визуальной метафоры и манипуляцию графическими образами управляющих конструкций, назвать Scratch действительно визуальным языком можно только с определенной натяжкой.

5.2.Интерпретатор блок-схем

ВТомском государственном университете А.С. Соловьевым [29] была разработана учебная система, основывающаяся на классическом графическом представлении программы в виде блок-схемы и языках программирования Си и Паскаль. Интерпретатор имеет две версии: для DOS

идля Windows 95/98/ME/2000/XP.

Обучаемому дается возможность самому составить блок-схему алгоритма на экране, затем в динамике посмотреть, как он (алгоритм) будет выполняться, проследить изменения значений переменных, и параллельно наблюдать автоматически генерируемый исходный текст программы на языке программирования.

Важнейшими компонентами системы являются: 1. Графический редактор

32

2.Текстовый редактор

3.Интерпретатор

Каждому из типовых графических блоков, таких, как «НАЧАЛО», «КОНЕЦ», «АВТОМАТИЧЕСКОЕ ДЕЙСТВИЕ», «ВЕТВЛЕНИЕ ПО УСЛОВИЮ», «ВВОД», «ВЫВОД», «ПОДПРОГРАММА», «БЕЗУСЛОВНЫЙ ПЕРЕХОД НА МЕТКУ», и пр., сопоставляется разрешенный для ввода в него формат текста.

Интерфейс пользователя в DOS-версии интерпретатора блок-схем приводится на рисунке 11, а Windows-версии – на рисунке 12.

Рисунок 11. DOS-версия учебного интерпретатора блок-схем

Графический редактор системы позволяет программисту “рисовать” новые и редактировать старые блок-схемы. Пользователю предлагается в режиме меню следующие возможности для редактирования блок-схем:

•Удаление блоков;

•Установка блоков;

•Разметка планшета координатной сеткой;

•Скроллинг планшета;

•Выбор типа блоков (либо стрелки, либо сами блоки);

•Автоматическое соединение двух выделенных блоков на

планшете;

•Изменение параметров планшета;

•Изменение палитры планшета (цветов);

•Возможности редактирования с помощью буфера обмена.

33

Все эти возможности можно выбирать либо посредством манипулятора мышь, либо с помощью клавиатуры. Текстовый редактор позволяет набирать и редактировать текст внутри типовых графических блоков.

Рисунок 12. Среда Windows-версии интерпретатора блок-схем

Интерпретатор позволяет «на лету» производить перевод графической программы (дополненной необходимым текстовым описанием), в машинный код, и выполнять его. При этом на экране «подсвечивается» очередной исполняемый блок (на него устанавливается «фокус»). Минимальной единицей интерпретации в языке блок-схем является блок. Работой всего интерпретатора управляет функция, которая перемещает фокус интерпретации по блок-схеме, распознает тип очередного блока, и запускает соответствующую его типу функцию обработки (интерпретации). После того, как функция интерпретации блока отработает, происходит возврат управления в главную функцию интерпретатора.

Несмотря на учебный характер, стоит отметить достаточно высокую степень проработанности системы, разработанной А.С. Соловьевым, возможность ориентации в качестве базового как на язык программирования Си, так и на Паскаль, а также на то, что возможность получения и исполнения машинных кодов делает интерпретатор блок-схем «истинной» системой графического программирования в нашем толковании.

5.3. Sivil

34

Визуальный язык Sivil [17] разработан в Canisius колледже, штат НьюЙорк, США. Как пишут его авторы, «Sivil использует иконки и изображения для того, чтобы символизировать все структуры, имеющиеся в программах. Программисты создают фрагменты программы, связывая изображения между собой, что позволяет создавать программы, которые могут быть скомпилированы, оттестированы, отлажены и просмотрены в графической среде разработки». Из этого следует, что Sivil является «истинным» языком визуального программирования в нашем понимании.

Рисунок 12. Графическое изображение программы в языке Sivil

Блоки, из которых строится программа на языке Sivil, не являются прямыми аналогами графических примитивов традиционных блок-схем. Основная форма используемых примитивов – прямоугольник, используемый и для графического представления условных конструкций, и для специфических для Sivil «соединителей».

Тем не менее, для представления некоторых программных сущностей, таких, как вывод на печать, или входные и выходные параметры функции, в Sivil

35

используются весьма выразительные изображения (рисунок 14, вызываемая функция square root представлена в отдельном окне).

Рисунок 14. Вызов подпрограммы в Sivil

В целом, визуальный язык Sivil можно отнести к классу систем, визуализирующих поток управления (control flow), а использованную в нем графическую нотацию вряд ли можно признать очень удачной. Однако, он носит ярко выраженную учебную направленность, и, как отмечают его создатели, в качестве инструмента, помогающего делающим первые шаги в информационных технологиях студентам понять такие концепции, как выбор, итерации и использование подпрограмм, заслуживает права на существование.

5.4. VIPR

Остановимся еще на одном графическом языке, разработанном с целью обучения программированию, в Массачусетском технологическом институте

(МИТ) [33].

Он использует довольно оригинальную, можно даже сказать, странную базовую графическую нотацию в виде вложенных друг в друга окружностей. Как утверждается, она была выбрана для того, чтобы решить проблему

36

масштабирования графических программ. Выполнение графической программы подразумевается начинающимся с самой внутренней из окружностей (сами операторы записываются с помощью прилегающего к окружности текста). Переход к оператору, соответствующему следующей фигуре, окружающей данную, происходит только в том случае, если выполняется сопоставленное ему «охраняющее» условие. Выполняются операторы, приписанные следующей окружности, и так далее. В качестве дополнительного средства для отражения передач управления используются стрелки.

Все это может порождать несколько непривычные для глаз изображения программ:

Рисунок 15. Графические программы на языке VIPR

В частности, на рисунке 15 сначала представлен пример, изображающий условное предложение if B then S1 else S2; S3. Однако очевидно, что реальные программы так изображать неудобно, что иллюстрирует вторая (нижняя) часть рисунка.

37

6. Языки, ориентированные на состояния

Достаточно большим классом графическим языков, включающим разнообразные виды диаграмм, является класс языков, описывающих процесс функционирования некоторой системы как смену состояний. Теоретической основой подобных языков служит модель конечного автомата. В языках, ориентированных на состояния, типично изображение теми или иными графическими примитивами состояний, а стрелками – переходов между состояниями.

6.1. Язык SDL

Полное название языка SDL - Specification & Description Language, он разработан Международным союзом электросвязи (ITU-T) и входит в рекомендации ITU-T серии Z.100. Основной причиной появления SDL стало то, что для телекоммуникационных систем и компьютерных сетей весьма актуальна задача формализованного описания их поведения (включая сетевые протоколы), решаемая при спецификации и согласовании работы телекоммуникационной аппаратуры.

Диаграммы, являющиеся основой этого языка, в отличие от блок-схем алгоритмов, содержат состояния в явном виде. Поэтому язык SDL является автоматным. В то же время SDL-диаграммы обладают рядом недостатков, к которым можно отнести, например, громоздкость.

Основными компонентами языка SDL являются следующие:

1.Статические компоненты: система, блок, процесс, процедура.

2.Графические средства описания способов взаимодействия (возможно, с параметрами).

3.Поведение: процессы (у каждого процесса имеется набор состояний, находясь в которых процессы реагируют на те или иные события; процессы описываются блок-схемами).

4.Средства описания данных (существуют предопределенные типы данных, можно определять структурированные типы данных, у каждого типа определен набор операций, задание аксиом позволяет проверять правильность их применения).

На рисунке 16 представлена иерархия компонент языка SDL.

38

 

 

 

 

 

 

System S1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Block B1

 

Block B2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Process P1

 

 

Process P2

 

 

 

Process P3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Procedure Pr1

Рисунок 16. Иерархия компонент языка SDL

Графическое описание системы на языке SDL представляет собой набор диаграмм.

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

SDL.

Рисунок 17. Полный перечень графических примитивов языке SDL

39

На высшем уровне иерархии система может быть описана, как показано на рисунке 18:

 

 

 

 

Описание типа

С1, С2, С3 – каналы, по

 

 

 

 

 

System S1

 

которым передаются

 

 

сигналы

 

 

 

 

 

 

C1

 

 

 

соответственно из

 

 

Block B1

 

 

окружения к блоку, от

 

 

 

 

 

 

 

C2

 

блока к блоку, от блока

 

C3

 

 

 

к окружению.

 

Block B2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сигнал из окружения

 

Рисунок 18. Описание системы на языке SDL на высшем уровне иерархии На следующем уровне иерархии (продолжение пунктирных стрелок) описываются блоки (рисунок 19).

Block B1

 

 

R1, R2, R3, R4 –

 

 

межпроцессные каналы,

 

 

 

R1

 

 

по которым передаются

(1,1)

 

 

сигналы.

Process P1

 

 

R2

R3

 

Первая цифра в скобках

 

– число статических

R4

 

 

(0,5)

 

 

 

 

процессов (т.е. таких,

Process P2

 

Создание одним

 

 

которые создаются при

 

 

процессом другого

 

 

инициализации системы автоматически), вторая – максимальное количество таких процессов, которые могут существовать одновременно

Рисунок 19. Описание процессов на языке SDL

Наиболее интересным в SDL представляется описание поведения систем (процессов).

40

Точка входа в процедуру (может быть только одна)

Pr1

Pr1

Точка выхода из процедуры

State 1

Process P1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вызов процедуры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Стартовый символ

Процесс находится

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(может быть

в состоянии State1,

 

 

 

 

 

 

только один)

ожидает приема

 

 

 

 

 

 

 

 

 

 

 

 

 

сигнала (т.е.

 

 

 

 

 

 

 

 

процесс совершает

 

 

 

 

 

 

 

 

переход по

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

состоянию)

 

 

 

 

 

Рисунок 20. Описание процессов и процедур на языке SDL

При описании процессов взаимодействия в сетевых протоколах и телекоммуникациях ключевым является состояние ожидания некоторого внешнего сигнала или иного воздействия, для отражения чего в SDL имеются специальные графические примитивы (смотри рисунок 21). Т.е., в языке SDL обычно подразумевается, что процесс, находящийся в некотором состоянии, ожидает, что произойдет некое событие. В связи с этим после символа состояния могут идти только save- и input-символы.

State1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

input (s)

 

input (s2(a,b))

sig4

 

 

 

Ожидание сигнала

Ожидание сигнала

 

 

 

 

 

 

State2

 

с именем s2 с

 

с именем s без

параметрами,

 

 

 

 

 

 

параметров

значение которых

 

 

 

 

 

 

В этом состоянии

будет записано в

 

 

 

input (sig4)

 

переменные a и b

 

 

 

уже можно

 

 

 

 

 

 

 

 

 

 

обрабатывать

 

 

 

 

 

сигнал sig4

 

 

Могут быть перечислены сигналы, которые не должны обрабатываться в этом состоянии. Это так называемый saveсимвол; спасает sig4 от удаления из очереди, т.е. оставляет его в начале очереди.

Рисунок 21. Описание состояния ожидания процессом внешнего сигнала

Поскольку важное значение в обмене информацией имеет согласование во времени, язык SDL имеет встроенные средства для описания временных задержек с помощью таймеров, как это отражено на рисунке 22.