Чтение онлайн

на главную - закладки

Жанры

Интернет-журнал "Домашняя лаборатория", 2007 №5
Шрифт:

В данном примере подпрограмма сравнения обеспечивает именно обратную сортировку — меньшие числа продвигаются вперед. Само сравнение осуществляется с помощью пары условных операторов?. Условный оператор выполняет одно из двух действий в зависимости от того верно или нет утверждение до?. Его общий формат выглядит так test? expressionl: expression2. В качестве test может быть любое логическое выражение. Результат выполнения expressionl возвращается, если утверждение в test верно. В противном случае возвращается результат выполнения expression2.

Рассмотрим

ввод данных из файла. В данном примере используется несколько упрощений для наиболее часто используемых действий, аналогично тому, как в делается в языке «С» (вместо х = х + n, используется х += n; вместо х = х + 1 используется просто х++ и т. п.), только QSL в этом направлении идет еще дальше. Конечно язык QSL, так же как и «С», содержит и стандартные конструкции, скрипты можно писать и на их основе.

Для ввода данных из файла в примере используется не команда, а оператор чтения < >. При его каждом вызове он возвращает символьную строку. Возвращаемая строка должна быть записана в какую-нибудь переменную, но в случае использования оператора чтения в операторе повторения блока while, и только тогда, оператор присваивает возвращаемое в системную переменную $_. Оператор while повторяет выполнение блока пока условие в круглых скобках верно, в данном случае до конца файла («Читай файл, пока считывается»).

Оператор < > считывает все символы строки из файла до \n (код 10), как это принято в UNIX и встречается под MS Windows. Следовательно, оставшийся в конце строки \r (код 13) является для нас лишним. Для его удаления использовалась команда chop, по умолчанию удаляющая последний символ, в переменной $_.

Каждая строка, данного файла имеет вначале номер строки, он нам не нужен. Выделить нужные данные можно с помощью команды разбиения строки split. Эта команда разделяет строку на составляющие, по умолчанию из переменной $_ и используя пробелы и табуляции как разделители. Возвращаемые командой данные должны быть записаны в массив переменных. Такой, но самодельный, мы ей и подсунули (в круглых скобках), хотя конечно имени у него никакого нет, но нам оно, в дальнейшем, и не нужно.

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

Полученное число добавляется в массив переменных @data с помощью команды push.

Осталось отсортировать массив @data и записать отсортированный в массив @sdata, что и было сделано с помощью команды sort.

Переходим к печати на принтере. Для этого должен быть открыт как файл, параллельный

порт, к которому подключен принтер. Надеюсь, у вас тоже такой есть. Если принтер у вас сетевой, то этот пример вы не сможете использовать и можете смело переходить к следующему разделу, который посвящен средствам системы SOROS, включающим и возможность работы с сетевыми принтерами. Собственно говоря, QSL знает только последовательные порты, например СОМ1, COM2 и параллельные, например LPT1, но управлять он ими не умеет, это является функцией операционной системы. Для полного доступа к этим портам QSL должен использовать внешние программы, например средства системы SOROS.

Если бы мы использовали для вывода конструкцию print @sdata, то получили бы все числа напечатанные подряд. Чтобы вывести числа в столбик, в данном примере, был использован оператор повторения блока foreach. Этот оператор выполняет блок для каждой переменной массива, содержимое которой присваивается какой-либо, упоминаемой после имени оператора, но по умолчанию, как в нашем примере, присваивается системной переменной $_. Остается только вывести ее на принтер, снабдив символом перевода строки.

Взаимодействие с внешними программами

В первую очередь речь идет о взаимодействии со средствами пакета SOROS. Основу пакета составляют несколько мини-серверов осуществляющих операции чтения-записи устройств компьютера (параллельные и последовательные порты, все звуковые устройства) и обменивающихся данными с другими модулями пакета SOROS (soros.exe).

Запуск мини-серверов осуществляется нажатием кнопок на модуле DEVICE. Для каждого номера порта или звуковой карты запускается своя копия мини-сервера. Одновременно может быть запущено несколько мини-серверов. На рисунке для примера запущен сервер, оперирующий первым параллельным портом. Контрольно-измерительные модули PARALLEL (параллельный порт), SERIAL (последовательный порт) и INPUT (звуковая карта) могут подключаться к нужной копии минисервера. Для этого они имеют переключатель номера порта/карты (над кнопкой Read). На рисунке модуль PARALLEL подключен к серверу LPT1. Чтение устройства осуществляется кнопкой Read. Для каждого доступного бита есть своя кнопка установки, но запись установленных битов в порт осуществляется кнопкой Set.

На рисунке можно видеть, после чтения, что в порте LPT1, на 1, 5, 8, 10, 13 и 15 выводах разъема установлена логическая единица, а на остальных, соответственно, ноль.

Для запуска осциллографа INPUT нужно не только выбрать номер карты (соответствующий мини-сервер должен быть запущен), но и длительность развертки (время чтения) по оси X. Соответствующие переключатели выбирают усиление и положение на оси Y. Кнопка Stat на модуле INPUT переключает осциллограф в режим показа гистограммы входного сигнала.

Поделиться:
Популярные книги

Здравствуй, 1985-й

Иванов Дмитрий
2. Девяностые
Фантастика:
альтернативная история
5.25
рейтинг книги
Здравствуй, 1985-й

Страж Кодекса. Книга IX

Романов Илья Николаевич
9. КО: Страж Кодекса
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Страж Кодекса. Книга IX

Нечто чудесное

Макнот Джудит
2. Романтическая серия
Любовные романы:
исторические любовные романы
9.43
рейтинг книги
Нечто чудесное

Я еще не князь. Книга XIV

Дрейк Сириус
14. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Я еще не князь. Книга XIV

Её (мой) ребенок

Рам Янка
Любовные романы:
современные любовные романы
6.91
рейтинг книги
Её (мой) ребенок

На изломе чувств

Юнина Наталья
Любовные романы:
современные любовные романы
6.83
рейтинг книги
На изломе чувств

Прогулки с Бесом

Сокольников Лев Валентинович
Старинная литература:
прочая старинная литература
5.00
рейтинг книги
Прогулки с Бесом

Адвокат вольного города 2

Парсиев Дмитрий
2. Адвокат
Фантастика:
городское фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Адвокат вольного города 2

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Личник

Валериев Игорь
3. Ермак
Фантастика:
альтернативная история
6.33
рейтинг книги
Личник

Законы Рода. Том 10

Flow Ascold
10. Граф Берестьев
Фантастика:
юмористическая фантастика
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 10

Девяностые приближаются

Иванов Дмитрий
3. Девяностые
Фантастика:
попаданцы
альтернативная история
7.33
рейтинг книги
Девяностые приближаются

Метатель

Тарасов Ник
1. Метатель
Фантастика:
боевая фантастика
попаданцы
рпг
фэнтези
фантастика: прочее
постапокалипсис
5.00
рейтинг книги
Метатель

Курсант. На Берлин

Барчук Павел
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Курсант. На Берлин