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

на главную

Жанры

Интернет-журнал "Домашняя лаборатория", 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 переключает осциллограф в режим показа гистограммы входного сигнала.

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

Камень. Книга вторая

Минин Станислав
2. Камень
Фантастика:
фэнтези
8.52
рейтинг книги
Камень. Книга вторая

Хуррит

Рави Ивар
Фантастика:
героическая фантастика
попаданцы
альтернативная история
5.00
рейтинг книги
Хуррит

Восход. Солнцев. Книга X

Скабер Артемий
10. Голос Бога
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Восход. Солнцев. Книга X

Неудержимый. Книга XVIII

Боярский Андрей
18. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XVIII

Уязвимость

Рам Янка
Любовные романы:
современные любовные романы
7.44
рейтинг книги
Уязвимость

Идеальный мир для Лекаря 17

Сапфир Олег
17. Лекарь
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Идеальный мир для Лекаря 17

Протокол "Наследник"

Лисина Александра
1. Гибрид
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Протокол Наследник

Треск штанов

Ланцов Михаил Алексеевич
6. Сын Петра
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Треск штанов

Дело Чести

Щукин Иван
5. Жизни Архимага
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Дело Чести

Убивать чтобы жить 3

Бор Жорж
3. УЧЖ
Фантастика:
героическая фантастика
боевая фантастика
рпг
5.00
рейтинг книги
Убивать чтобы жить 3

Попаданка для Дракона, или Жена любой ценой

Герр Ольга
Любовные романы:
любовно-фантастические романы
7.17
рейтинг книги
Попаданка для Дракона, или Жена любой ценой

Неудержимый. Книга XII

Боярский Андрей
12. Неудержимый
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Неудержимый. Книга XII

(Противо)показаны друг другу

Юнина Наталья
Любовные романы:
современные любовные романы
эро литература
5.25
рейтинг книги
(Противо)показаны друг другу

Совок – 3

Агарев Вадим
3. Совок
Фантастика:
фэнтези
детективная фантастика
попаданцы
7.92
рейтинг книги
Совок – 3