Скачать презентацию 2 Введение в VPL Визуальный Язык Программирования Инструктор Скачать презентацию 2 Введение в VPL Визуальный Язык Программирования Инструктор

VPL_v2.0.ppt

  • Количество слайдов: 74

2. Введение в VPL (Визуальный Язык Программирования) Инструктор Проф. Shih-Chung Kang 2010 2. Введение в VPL (Визуальный Язык Программирования) Инструктор Проф. Shih-Chung Kang 2010

Введение Традиционные средства разработки программ имеют текстовый интерфейс. 2 Введение Традиционные средства разработки программ имеют текстовый интерфейс. 2

Введение В MSRDS используется язык визуального программирования (VPL). 3 Введение В MSRDS используется язык визуального программирования (VPL). 3

(I) Краткий обзор VPL (I) Краткий обзор VPL

VPL Интерфейс 5 VPL Интерфейс 5

Activity (1/3) Блок (Activity) может представлять предварительно построенные сервисы, блоки управления потоком данных, функции Activity (1/3) Блок (Activity) может представлять предварительно построенные сервисы, блоки управления потоком данных, функции и т. д. Полученное приложение таким образом представляет собой совокупность выполняющихся процессов. 6

Activity (2/3) Блоки могут сочетать другие действия. Это даёт возможность составить композицию действия и Activity (2/3) Блоки могут сочетать другие действия. Это даёт возможность составить композицию действия и повторно использовать композицию, при разработке блока. В этом смысле приложение, построенное в VPL само является блоком. 7

Activity (3/3) Блоки, как правило, включают имя действия и границы, которые представляют его точки Activity (3/3) Блоки, как правило, включают имя действия и границы, которые представляют его точки подключения. Блок может также включать графику, чтобы проиллюстрировать цель действия, а также элементы пользовательского интерфейса, которые могут дать пользователю возможность вводить значения, задания, или преобразования для данных, используемых в действии. 8

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

Вывод результата против вывода уведомления 1. 2. Вывод результата используется в ситуациях, когда исходящее Вывод результата против вывода уведомления 1. 2. Вывод результата используется в ситуациях, когда исходящее сообщение (данные) направляется в результате конкретного действия входящего сообщения. Выводы уведомления могут отправлять информацию, следующую из входящего сообщения, но, как правило, запускается сообщение, которое изменяет своё внутреннее состояние. Они также могут генерировать сообщения несколько раз, в то время, как вывод результата только отправляет одно сообщение о получении входящего сообщения. Так вывод уведомления используется для отправки сообщений данных без необходимости повторного запроса состояния действия. 10

(II) Базовые блоки (II) Базовые блоки

Activity : Data (Данные) Блок «Data» используется для хранения значений простых типов данных и Activity : Data (Данные) Блок «Data» используется для хранения значений простых типов данных и для их отправки на вход других блоков. Определить тип данных можно в выпадающем списке под текстовым полем. 12

Activity : Calculate (Вычисление) Блок «Calculate» используется для выполнения простых арифметических и логических вычислений. Activity : Calculate (Вычисление) Блок «Calculate» используется для выполнения простых арифметических и логических вычислений. В список допустимых операторов входят: символ && , представляющий операцию И, символ || , представляющий операцию ИЛИ и символ ! , представляющий операцию НЕ. Наряду с этим, «Вычисление» может использоваться для доступа к отдельным сообщениям во входных данных. 13

Activity : Variable (Переменная) 1. 2. Блок «Variable» используются для управления переменными диаграммы. Существует Activity : Variable (Переменная) 1. 2. Блок «Variable» используются для управления переменными диаграммы. Существует две функции, связанные с переменными: Set. Value – используется для установки значения переменной; Get. Value – используется для получения значения переменной. 14

Activity : List (Список) Блок «List » используется для создания списка некоторых частных типов Activity : List (Список) Блок «List » используется для создания списка некоторых частных типов данных, который будут использовать другие блоки. 15

Activity: List Functions (Список Функций) Блок «List Functions» используются для выполнения операций на элементах, Activity: List Functions (Список Функций) Блок «List Functions» используются для выполнения операций на элементах, хранящихся в блоках «List» . Эти операции включают в себя Append (Добавить), Reverse (Инвертировать), Sort (Сортировать), Removeitem (Удалить элемент), Insertitem (Вставить элемент) и Get. Index (Получить указатель). 16

Activity : Join (Объединение) Блок «Join» используется для объединения нескольких входных значений в одно Activity : Join (Объединение) Блок «Join» используется для объединения нескольких входных значений в одно выходное. Этот блок выведет сообщение, только в том случае, если на каждый вход блока поступает сообщение. 17

Activity : Merge (Слияние) Блок «Merge» начинающие пользователи часто путают с блоками Объединение. Хотя Activity : Merge (Слияние) Блок «Merge» начинающие пользователи часто путают с блоками Объединение. Хотя блокы «Merge» поддерживают несколько входных значений и генерирует только один выход, даже с одним входным значением выход будет сгенерирован. Это главное отличие от блока «Join» . Блок «Merge» отправляет на свой выход сообщение, как только оно поступает на его вход. 18

Activity : If (Если) Этот блок имеет то же самое назначение, что и традиционная Activity : If (Если) Этот блок имеет то же самое назначение, что и традиционная конструкция «If… then… else…» . Допустимы следующие операнды сравнения «равно» (представляется двумя знаками равенства, ==), «меньше» (представляется <), «больше» (представляется >), «не равно» (представляется !=). 19

Activity : Switch (Переключение) Блок «Switch» имеют выход определяемый входным значением и модулем решения. Activity : Switch (Переключение) Блок «Switch» имеют выход определяемый входным значением и модулем решения. Их функция подобна синтаксису Case в языке программирования C++. 20

Activity : Comment (Комментарий) Блок «Comment» используются, для добавления комментария к другим блокам. 21 Activity : Comment (Комментарий) Блок «Comment» используются, для добавления комментария к другим блокам. 21

Activity : Custom Activity (Пользовательское Действие) Блок «Custom Activity» используется для установления пользователем индивидуальных Activity : Custom Activity (Пользовательское Действие) Блок «Custom Activity» используется для установления пользователем индивидуальных действий. Этот блок позволяет пользователю установить содержание действия. Каждый блок «Custom Activity» имеет вход и выход, а также уведомляющий выход. 22

(III) Hello World (III) Hello World

Hello world : Шаг 1 а Перетащите блок Data в область диаграммы (Или 2 Hello world : Шаг 1 а Перетащите блок Data в область диаграммы (Или 2 раза кликнуть по блоку Data окне выбора блока) 24

Hello world : Шаг 1 б Кликните по стрелке выпадающего меню и измените тип Hello world : Шаг 1 б Кликните по стрелке выпадающего меню и измените тип данных на string. 25

Hello world : Шаг 1 в Напечатайте «Hello, World!!» в поле блока Data, это Hello world : Шаг 1 в Напечатайте «Hello, World!!» в поле блока Data, это действие присвоит строке значение «Hello, World!!» . 26

Hello world : Шаг 2 Поместите на диаграмму сервис TTS, который в MSRDS известен, Hello world : Шаг 2 Поместите на диаграмму сервис TTS, который в MSRDS известен, как Text to Speech. Перетащите его из области Services. 27

Hello world : Шаг 3 а Соедините выход блока Data со входом на Text. Hello world : Шаг 3 а Соедините выход блока Data со входом на Text. To. Speech. TTS. 28

Hello world : Шаг 3 б 3 в Шаг 3 б При создании связи, Hello world : Шаг 3 б 3 в Шаг 3 б При создании связи, появляется диалоговое окно Connections. Выберите функцию Say. Text, которая выполняет озвучивание текста. Шаг 3 в Нажмите OK, для сохранения настроек. 29

Hello world : Шаг 3 г 3 д Шаг 3 г В окне Data Hello world : Шаг 3 г 3 д Шаг 3 г В окне Data Connections измените тип данных на value. Другая опция меню – Length, длина строки. Шаг 3 д Нажмите OK, для сохранения настроек. 30

Hello world : Результат 31 Hello world : Результат 31

Hello world : Запуск! 32 Hello world : Запуск! 32

(IV) Hello World: Alert. Dialog (IV) Hello World: Alert. Dialog

Alert. Dialog : Шаг 1 34 Alert. Dialog : Шаг 1 34

Alert. Dialog : Шаг 2 35 Alert. Dialog : Шаг 2 35

Alert. Dialog : Шаг 3 36 Alert. Dialog : Шаг 3 36

Alert. Dialog : Шаг 4 37 Alert. Dialog : Шаг 4 37

(V) Инкремент (V) Инкремент

Инкремент : Шаг 1 Поместите блок Data на диаграмму. Установите тип данных int и Инкремент : Шаг 1 Поместите блок Data на диаграмму. Установите тип данных int и его значение 1. 39

Инкремент : Шаг 2 Поместите на диаграмму блок Variable, используемый для установки значения переменной. Инкремент : Шаг 2 Поместите на диаграмму блок Variable, используемый для установки значения переменной. 40

Инкремент : Шаг 3 а Кликните по правому нижнему углу блока Variable, для установки Инкремент : Шаг 3 а Кликните по правому нижнему углу блока Variable, для установки значения переменной. 41

Инкремент : Шаг 3 б 3 в 3 г 3 д Шаг 3 б Инкремент : Шаг 3 б 3 в 3 г 3 д Шаг 3 б Нажмите Add, если вставка новой переменной. Шаг 3 в В поле Variables укажите имя переменной. В данном случае имя переменной - Counter. Шаг 3 г В поле Type, выберите тип данных int. Шаг 3 д Нажмите OK, для сохранения настроек. 42

Инкремент : Шаг 4 а 4 б Шаг 4 а Соедините блоки Data и Инкремент : Шаг 4 а 4 б Шаг 4 а Соедините блоки Data и Variable. В появившемся окне настройки связи выберите Set. Value, чтобы назначить значение от Data к Variable. Шаг 4 б Нажмите OK, для сохранения настроек. 43

Инкремент : Шаг 5 а Поместите на диаграмму блок If. 44 Инкремент : Шаг 5 а Поместите на диаграмму блок If. 44

Инкремент : Шаг 5 б Создайте связь между блоками Variable и If и введите Инкремент : Шаг 5 б Создайте связь между блоками Variable и If и введите Counter == 10 в поле условия. 45

Инкремент : Шаг 6 а Поместите на диаграмму блоки Data и Textto. Speech, как Инкремент : Шаг 6 а Поместите на диаграмму блоки Data и Textto. Speech, как действие при завершения программы, так, чтобы при завершении программы, она говорила «Done» . 46

Инкремент : Шаг 6 б Создайте связь между первым выходом блока If и блоком Инкремент : Шаг 6 б Создайте связь между первым выходом блока If и блоком Data. Это означает, что при выполнении условия Counter == 10 , управление передаётся на действие Say. Text сервиса TTS. 47

Инкремент : Шаг 7 а 7 б Шаг 7 а Поместите на диаграмму блок Инкремент : Шаг 7 а 7 б Шаг 7 а Поместите на диаграмму блок Calculate и создайте связь с нижним правым треугольником блока If. Это означает, что, когда Counter не равняется 10, данные будут отправляться на блок Calculate. Шаг 7 б В поле блока Calculate введите текст Counter+1. Это означает, что если Counter не равняется 10, будет вычеслено Counter+1. Это действие не изменяет значение оригинальной переменной Counter. 48

Инкремент : Шаг 8 а Для обновления значения Counter, необходимо создать связь между блоками Инкремент : Шаг 8 а Для обновления значения Counter, необходимо создать связь между блоками Calculate и Variable. Для этого соедините блок Calculate с блоком Variable, который хранит значение Counter. Значение переменной Counter инициализируется данными, хранящимися в блоке Data. Линия связи должна быть оттянута в дополнение к линии Set между блоками Data и Variable. 49

Инкремент : Шаг 8 б В появившемся диалоговом окне Connections выберите Merge. Connections. 50 Инкремент : Шаг 8 б В появившемся диалоговом окне Connections выберите Merge. Connections. 50

Инкремент : Шаг 8 в Новый объект Merge создаётся автоматически. Поскольку блок Calculate вычисляет Инкремент : Шаг 8 в Новый объект Merge создаётся автоматически. Поскольку блок Calculate вычисляет Counter+1, он может использоваться для установки нового значения переменной Counter. Это метод создания цикла в MVPL. 51

Инкремент : Шаг 9 Чтобы позволить блоку Variable сообщать о новом значении Counter, создайте Инкремент : Шаг 9 Чтобы позволить блоку Variable сообщать о новом значении Counter, создайте новый блок Calculate и свяжите выход с блока Variable со входом в блок Calculate. В блоке Calculate определите формулу вычисления, как «The number is» + Counter. 52

Инкремент : Шаг 10 а Добавьте новый блок Text to Speech. 53 Инкремент : Шаг 10 а Добавьте новый блок Text to Speech. 53

Инкремент : Шаг 10 б Так как это второй блок Text to Speech, появившееся Инкремент : Шаг 10 б Так как это второй блок Text to Speech, появившееся диалоговое окно позволяет пользователю выбрать, будет ли использоваться уже существующий блок Text to Speech или необходимо создать новый блок. Хотя в данном примере выбор не повлияет на результат, здесь мы решили создать новый блок Text to Speech. 54

Инкремент : Шаг 10 в Для выделения среди существующих блоков Text to Speech, новый Инкремент : Шаг 10 в Для выделения среди существующих блоков Text to Speech, новый блок Text to Speech автоматически назовётся Textto. Speech. TTS 0. 55

Инкремент : Шаг 11 Создайте связь между блоками Calculate «The number is» + Counter Инкремент : Шаг 11 Создайте связь между блоками Calculate «The number is» + Counter и Textto. Speech. TTS 0, чтобы значение Counter сообщалось после каждого обновления. Например, когда Counter поднимется до 7, программа сообщит «The number is 7» . Программа завершена. 56

Инкремент : Результат 57 Инкремент : Результат 57

(VI) Параллельная версия программы инкремента (VI) Параллельная версия программы инкремента

Параллельный Инкремент : Шаг 1 а Создайте первый блок Timer. Цель состоит в том, Параллельный Инкремент : Шаг 1 а Создайте первый блок Timer. Цель состоит в том, что бы периодически обновлять значение счётчика. 59

Параллельный Инкремент : Шаг 1 б 1 в Шаг 1 б В Properties поменяйте Параллельный Инкремент : Шаг 1 б 1 в Шаг 1 б В Properties поменяйте имя блока Timer на Timer 1. Шаг 1 в Смена имени выполнена. 60

Параллельный Инкремент : Шаг 1 г Используйте блок Data, чтобы установить начальное значение Timer Параллельный Инкремент : Шаг 1 г Используйте блок Data, чтобы установить начальное значение Timer 1. 61

Параллельный Инкремент : Шаг 1 д Связь между блоками Data и Timer установите, как Параллельный Инкремент : Шаг 1 д Связь между блоками Data и Timer установите, как Set. Timer. 62

Параллельный Инкремент : Шаг 1 е Блок Timer устанавливается как value блока Data. 63 Параллельный Инкремент : Шаг 1 е Блок Timer устанавливается как value блока Data. 63

Параллельный Инкремент : Шаг 2 а Создайте второй блок Timer, как Timer 2. Цель Параллельный Инкремент : Шаг 2 а Создайте второй блок Timer, как Timer 2. Цель состоит в том, чтобы периодически указывать значение счётчика. 64

Параллельный Инкремент : Шаг 2 б Начальные значения Timer 1 и Timer 2 установлены, Параллельный Инкремент : Шаг 2 б Начальные значения Timer 1 и Timer 2 установлены, как 3000 и 1000 соответственно. Каждый раз, когда единица блока Timer составляет 1 миллисекунду (0. 001 секунды), время Timer 1 составляет 3 секунды, а время Timer 2 составляет 1 секунду при старте. 65

Параллельный Инкремент : Шаг 3 Создайте блок переменной счётчика Variable вместе с переменной Counter Параллельный Инкремент : Шаг 3 Создайте блок переменной счётчика Variable вместе с переменной Counter в памяти. Установите начальное значение, как 1 и направьте его на блок голосового синтеза Text to Speech. 66

Параллельный Инкремент : Шаг 4 а Создайте дубликат блока Timer 2 и направьте уведомление Параллельный Инкремент : Шаг 4 а Создайте дубликат блока Timer 2 и направьте уведомление о событиях на блок Calculate. 67

Параллельный Инкремент : Шаг 4 б Установите связь между Timer 2 и Variable, как Параллельный Инкремент : Шаг 4 б Установите связь между Timer 2 и Variable, как Timer. Complete. Это приводит в действие блок Calculate только когда блок Timer 2 закончит счёт времени. 68

Параллельный Инкремент : Шаг 4 в Свяжите блок Calculate принадлежащий Timer 2 со входом Параллельный Инкремент : Шаг 4 в Свяжите блок Calculate принадлежащий Timer 2 со входом на блок Text to Speech, создавая при этом блок Merge. 69

Параллельный Инкремент : Шаг 5 а Создайте новый блок Data, для обновления нового блока Параллельный Инкремент : Шаг 5 а Создайте новый блок Data, для обновления нового блока Timer 2. После этого, свяжите выход с блока Text to Speech с блоком Data. 70

Параллельный Инкремент : Шаг 5 б Установите связь между Text to Speech и Data, Параллельный Инкремент : Шаг 5 б Установите связь между Text to Speech и Data, как Say. Text – Succes. Это означает, что после того, как значение Counter успешно сообщится, приведётся в действие блок Data, так, что блок Timer 2 увеличится на 1 секунду. 71

Параллельный Инкремент : Шаг 6 Создайте связь идущую из блока Timer 1, так, чтобы Параллельный Инкремент : Шаг 6 Создайте связь идущую из блока Timer 1, так, чтобы он увеличивал переменную Counter на 1, каждые 3 секунды, пока Counter больше чем 10. 72

Параллельный Инкремент : Результат 73 Параллельный Инкремент : Результат 73

Над проектом работали Перевод текста: Курин Ю. Ю. гр. 09 -В-1 yuriykurin@gmail. com Обработка Над проектом работали Перевод текста: Курин Ю. Ю. гр. 09 -В-1 [email protected] com Обработка картинок и организация слайдов: Дербасов М. О. гр. 09 -В-1