Разработка и экспериментальное исследование редактора схем программ

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



bsp;

6.3.4.2 Побитовые операторы

Побитовые операторы: 1) & - and, 2) | - or, 3) ^ - xor, 4) >>, >>>, << - побитовые сдвиги.

Все побитовые операции работают с 4-байтовым signed int.

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

Для отрицательных чисел - все по-другому. Например, -9 в битовом виде выглядит как: 11111111111111111111111111110111.

Операция >>> даст эффект: -9 >>> 2 будет в битовом виде 00111111111111111111111111111101, то есть 1073741821.

.3.4.3 Сравнение

Операторы сравнения: 1) ==, 2) !=, 3) =, 7)===, 8)!==.

Операторы больше-меньше также работают со строками, сравнивая их лексикографически, т.е посимвольно, например:

"B">"a",

"bc" < "bd".

Сравнение = = делается с приведением типов, а = = = без приведения типов, например:

== false // верно,

!== false //типы разные.

6.3.5 Массивы

Javascript поддерживает[17] два вида структуры "массив":

) ассоциативный массив (хеш), где данные хранятся по произвольному ключу;

) числовой массив Array, где данные хранятся по номерам.

Javascript - очень гибкий язык, поэтому технически в Array можно хранить произвольные ключи, как в Object. Но лучше использовать типы по назначению.

Для хранения данных по номеру предназначен тип Array, например:

var arr = new Array(),.test = 5,[1] = "new".

В типе Array есть специальные методы, ориентированные именно на работу с числовыми ключами.

.3.5.1 Создание и изменение массивов

Есть два эквивалентных способа создания массива:

var a = new Array(),a = [].

Или сразу со значениями

var a = new Array("a", 1, true), a = ["a", 1, true].

Эти способы работают одинаково, кроме объявления вида new Array(10), когда у конструктора есть единственный аргумент-число.

Такое объявление создаст пустой массив (все элементы undefined) длиной 10. По возможности, не используйте new Array.

Отсчет элементов в массиве начинается с нуля.

.3.5.2 Перебор элементов

Перебор элементов обычно (когда индексы непрерывные) осуществляется простым циклом:

var arr = [ "array", "elements", "here" ],(var i=0; i<arr.length; i++) {

... сделать что-то с arr[i] ...

}.

Если индексы - с разрывами, то перебор осуществляется так же, как в объектах:

var arr = [],[1] = 123,[9999] = 456,(var i in arr) {(!arr.hasOwnProperty(i)) continue;

... сделать что-то с arr[i] ...

}.

6.3.6 Функции

6.3.6.1 Создание функций

Существует два способа создать функцию[18]. Основное отличие в результате их работы - в том, что именованная функция видна везде, а анонимная - только после объявления. Способы создания функций представлены в таблице 6.2.

Таблица 6.2 - Способы задания функций

Именованные (FunctionDeclaration)Анонимные (FunctionExpression)function имя(параметры) { ... }var имя = function(параметры) {тАж} ... var имя = new Function(параметры, ...)Именованные функции доступны везде в области видимостиАнонимные - доступны только с момента объявления. Синтаксис new Function используется редко, в основном для получения функции из текста, например, динамически загруженного с сервера в процессе выполнения скриптов./* функция sum определена ниже */ var a = sum(2,2) function sum(x,y) { return x+y }/* будет ошибка, т.к sum еще не существует */ var a = sum(2,2) var sum = function(x,y) { return x+y }

.3.5.2 Функции - объекты

В javascript функции являются полноценными объектами встроенного класса Function. Именно поэтому их можно присваивать переменным, передавать и у этих функций есть свойства, например:

function f() {...},.test = 6,

...

alert(f.test) // 6.

Свойства функции доступны и внутри функции, так что их можно использовать как статические переменные, например:

function func() {

var funcObj = arguments.callee

funcObj.test++

alert(funcObj.test),

},

func.test = 1,

func(),

func().

В начале работы каждая функция создает внутри себя переменную arguments и присваивает arguments.callee ссылку на себя.

.3.5.3 Параметры функции

Функции можно запускать с любым числом параметров.

Если функции передано меньше параметров, чем есть в определении, то отсутствующие считаются undefined.

Непосредственно перед входом в тело функции, автоматически создается объект arguments, который содержит:

) аргументы вызова, начиная от нуля;

) длину в свойстве length;

) ссылку на саму функцию в свойстве callee.

7. Описание системы

Нами было создано приложение программа-редактор схем. С помощью этой программы можно создавать, сохранять, редактировать блок-схему программы, а также выполнять исходный код, который генерируется по ходу редактирования схемы. Главное окно приложения показано на рисунке 7.1:

Рисунок 7.1 - Внешний вид главной формы приложения

На главной форме приложения расположены следующие компоненты, определяющие функциональность программы:

) главное меню;

) панель инструментов и операций;

) окно с исходным кодом программы, соответствующей построенной схеме;

) окно с результатом выполнения программы.

.1 Описание главного меню

Главное меню программы имеет три раздела Файл, Правка и Код программы.

Раздел Файл представлен на рисунке 7.2:

Рисунок 7.2 - раздел Файл главного меню программы

В разделе Файл главного меню приложения есть следующие функции:

) новая схема - создать новую схему;

) открыть - открыть существующую схему из формата XML;

) сохранить - сохранить блок-схему в уже открытый файл (если файл был открыт) иначе сохранить