Text
                    ШКОЛА НАЧИНАЮЩЕГО ПРОГРАММИСТА

ЗАНЯТИЕ ДВАДЦАТЬ ТРЕТЬЕ.

Как только на прилавках магазинов появились долгожданные бытовые компьюте-
ры «БК-0010.01» со встроенной в постоянную память версией Бейсика, редакция стала
получать от читателей письма с просьбами рассказать об этом языке, который по ряду
параметров, в первую очередь по быстродействию и популярности, превосходит Фокал.
Сегодня БК способен работать с Фокалом и Ассемблером, Фортом и Паскалем, Т-языком
и Машкодом. И все же первое знакомство с компьютером будет самым легким, если
начинать его составлением собственной программы на Бейсике. Это занятие адресовано
всем, кто хочет познакомиться с возможностями и некоторыми особенностями Бейси-
ка-БК. Ведет занятие инженер А. Б, БОРИСОВ.

Вариантов языка Бейсик, пожалуй, не-
многим меньше, чем типов компьютеров,
способных работать с этим языком. Расска-
зать об очередной версии Бейсика — той,
что записана, или, как говорят программи-
сты, зашита, в постоянную память БК,—
непросто. Если обращать внимание на азы
работы с языком, то неизбежно из описания
исчезнут мелкие детали — как раз то, что
оказывается важным на практике. В то же
время рассказ, насыщенный описанием дета-
лей, окажется излишне сложным для начи-
нающих. На нашем занятии мы будем при-
держиваться средней линии.

Начинающим рекомендуем ознакомиться
с описанием другой, более простой версии
Бейсика («Наука и жизнь» №№ 9, 11,
1986 г. и №№ 1, 3, 1987 г.)—это облегчит
знакомство с Бейсиком БК.

ПЕРВОЕ ЗНАКОМСТВО

Бейсик-БК, или, как его иногда называ-
ют, Бейсик-МСХ,—это довольно мощный ва-
риант Бейсика. После запуска командой
RUN текст программы переводится в после-
довательность машинных кодов, оба текста
хранятся в памяти, так что самая большая
программа на Бейсике может занимать не
более 7,5 Кбайт. Знаток отметит, что та-
кое устройство языка позволяет считать его
своего рода компилятором.

Ведя вычисления, Бейсик работает с де-
сятичными целыми числами от — 32 768 до
32 768 или от 0 до 65 535, с двоичными,
восьмиричными и шестнадцатиричными чис-
лами. Восклицательный знак после числа —
признак вещественной константы одинар-
ной точности (7 значащих цифр), знак ди-
еза определяет двойную точность (17 зна-
чащих цифр).

V#	вещественная двойной точности
V!	вещественная одинарной точности
v%	целая
v«	символьная

Переменные Бейсик-БК распознает по
двум первым символам, поэтому перемен-
ные file2 и FIRST для транслятора равно-
значны. На тип переменной указывает спе-
циальный симвоп после ее имени (таблица
вверху). По замыслу разработчиков, Бейсик

должен был работать с многомерными мас-
сивами (до 255 индексов), однако на прак-
тике даже трехмерные массивы оказывают-
ся транслятору не по зубам («Информати-
ка и образование» № 1, 1989 г.). Заканчи-
вая разговор о константах и переменных,
важно отметить, что любая переменная, ес-
ли ей не присваивалось никакое значение,
равна нулю, а знак диеза можно опус-
кать— транслятор поймет, что речь идет о
переменной двойной точности.

Хотя каждая строка способна вместить до
255 символов, транслятор позволяет запи-
сывать в строке лишь один оператор, по-
этому длинные строки встречаются редко.
Строки можно нумеровать целыми числами
от 0 до 65 535, кстати, в процессе работы
над программой номер строки нетрудно из-
менять. Эту возможность оценят те, кто
имел опыт программирования на Фокале.

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

(...)	вычисления в скобках.
f(.)	вычисление функций
X^Y	возведение в степень
X*Y, Y/X	умножение я деление
X\Y	целочисленное деление
XMODY	деление по модуле
X+Y, X-Y	слежение и вычитание

Операции отношения в Бейсике-БК запи-
сывают с помощью знаков <,>, = и лю-
бых их комбинаций, результатом опера-
ции является 0, если отношение не выполне-
но, и — 1 в противном случае. Благодаря
этому допустима запись А == (А1*А2< =
А1+А2). Приоритет операции отношения
низкий, поэтому лучше всего взять их в
скобки. В операторах условного перехода
нередко используют логические операции:
NOT — отрицание, AND — умножение, OR—
сложение, XOR — сложение по модулю 2,
EQV — эквивалентность, IMP — импликация,
но об этих операциях мы поговорим позд-

нее. Есть операции для работы с символь- ными величинами: соединение (конкатена- ция), сравнение, выделение части, подсчет длины. Символьные величины можно преоб- разовывать в числовые и обратно, но их описание мы также отложим. ВО ВСЕМ НУЖНА СИСТЕМА Прежде чем составлять первую програм- му на Бейсике-БК, важно ознакомиться с Бейсик-системой: той частью языка, кото- рая организует диалоговый режим работы. Появившееся на экране сообщение ОК подтверждает готовность Бейсик-системы принять команду или строку программы. Для управления системой предназначены 20 различных команд; рассмотрим их под- робнее. AUTO L, S — автонумерация строк про- граммы. Здесь L — начальный номер стро- ки, S — шаг нумерации. Параметр S можно опустить, тогда номер каждой следующей строки будет на 10 больше, чем предыду- щей (здесь и далее мы будем выделять тем- ным шрифтом обязательные параметры, то есть те параметры, которые нельзя опустить), Команда AUTO, нумерует строки, начиная нумеровать строки с адреса 10 с шагом 10. Команда AUTO нумерует строки, начиная с текущей. Кстати, точка — это вполне са- мостоятельная команда. Она вызывает на редактирование текущую строку, то есть строку, которая была последней введена, последней отредактирована или выведена командой LIST, а также если она была причиной остановки из-за ошибки. Чтобы выйти из режима автонумерации, достаточ- но нажать клавишу СТОП. BLOAD «ИМЯ», К, А — считывает про- грамму в машинных командах (кодах) с магнитофона. ИМЯ—это имя файла, R— ставят в тех случаях, когда хотят, чтобы программа автоматически стартовала , сра- зу же после считывания, А — адрес загруз- ки. Если не указывать R и А, то программа окажется точно в той области ОЗУ, откуда она была скопирована на магнитную ленту. Командой BLOAD считываются только фай- лы типа .BIN. Нужно отметить, что в Бей- сике-БК встречаются три типа файлов: ИМЯ. ASC — текстовые файлы, ИМЯ. COD — файлы во внутреннем формате си- стемы и ИМЯ. BIN — файлы в машинных командах. Тип файла зависит от команды записи, причем обозначение типа Бейсик добавляет к имени автоматически. BSAVE «ИМЯ», Al, А2 — записывает на магнитофон содержимое области ОЗУ, от адреса А1 до адреса А2. С помощью этой команды, например, на магнитную ленту за- писывают программу с подпрограммами в машинных кодах —файл типа ИМЯ. BIN. CLOAD «ИМЯ» — этой командой можно ввести с магнитофона только те файлы, ко- торые были записаны командой CSAVE, то есть файлы типа ИМЯ. CONT — продолжает исполнение програм- мы, прерванное клавишей СТОП или коман- дой STOP. Можно выводить на экран зна- чения переменных, изменять их и вновь про- должить исполнение программы, но если перед СО NT будет отредактирована хотя бы одна строка программы, то команда работать не сможет. CSAVE «ИМЯ» — выводит текст програм- мы на магнитофон в так называемом внут- реннем формате системы, то есть в виде файла типа ИМЯ. COD. Этот формат со- ответствует команде CLOAD «ИМЯ». DELETE L1—L2 — удаляет строки про- граммы, начиная с L1 и до L2. Если опус- тить один из параметров, оставив тире, то будет удалена часть программы от ее на- чала до L2 или от L1 до конца. Команда DELETE с одним параметром L удаляет строку L; команда DELET. убирает теку- щую строку. FIND — управляет двигателями магни- тофона. Если указать имя программы, то команда FIND «ИМЯ» остановит магнито- фон после того, как закончится файл с за- данным именем. LIST L1—L2 — выводит на экран текст программы от строки L1 до строки L2. L1 или L2 можно* опускать, точно так же, как в команде DELETE. Оператор LIST без па- раметров выводит на экран всю програм- му, однако нужно помнить, что на экране помещаются только 23 строки. LLIST L1—L2 действие этой команды ничем не отличается от действия команды LIST, но текст программы выводится не на экран, а на принтер. LOAD «ИМЯ», R — считывает програм- му из файла типа ИМЯ. ASC с магнитофо- на и запускает ее. Так можно считать толь- ко те файлы, которые были записаны коман- дой SAVE. MERGE «ИМЯ» — позволяет объединять несколько файлов типа ИМЯ. ASC в одну программу. Исполняя эту команду, Бейсик- БК добавляет строки считываемой с магни- тофона программы к тем, что уже имеются в памяти. При этом если встречаются стро- ки с одинаковыми номерами, то старые стро- ки с соответствующими номерами пропада- ют— на их месте оказываются вновь вве- денные. В некоторых партиях машин эта команда не работает, MONIT — по этой команде Бейсик пере- дает управление Монитору. NEW — очистка ОЗУ (удаление текста программы и значений переменных). RENUM L, О, S — оператор перенумеров- ки строк программы. О — номер строки, с которой начинают перенумеровку, L — но- вый номер, который следует присвоить стро- ке О, S — шаг нумерации, то есть целое число, на которое должны различаться но- мера всех строк после строки L. Если опустить О (то есть набрать команду RENUM L„ S), то L станет номером пер- вой строки программы. RENUM без пара- метров присваивает первой строке номер 10 и перенумеровывает все строки програм- мы с шагом 10. RUN L — запускает программу, начиная со строки L. Текст программы компилиру- ется, затем происходит распределение ре- сурсов ОЗУ и выполняется полученная по- следовательность машинных команд,
Команды можно вызывать, нажимая соот- ветствующие им клавиши-ключи — от К1 до К9. Действие клавиши ВС и ШАГ мож- но отнести к командам Бейсика-БК. Нажа- тие на клавишу ВС восстанавливает на эк- ране только что исполненную строку, или вызывает последнюю введенную, или по- следнюю отредактированную строку про- граммы. Если нажать на клавишу ШАГ, то выполняется очередной оператор; эта коман- да предназначена для отладки программы, ДЖЕНТЛЬМЕНСКИЙ НАБОР Теперь, когда мы знаем все команды, не- обходимые для работы с Бейсик-системой, можно приниматься за программирование. Операторы, используемые в программах, разделим на две группы: операторы, ко- торые используются постоянно — своеобраз- ный джентльменский набор языка, и те, которые встречаются далеко не в каждой программе. Первую группу открывает оператор LET V = F. Кстати, ключевое слово LET можно опускать, записывая V = F вслед за номером строки. Вычисленное значение выражения F будет присваиваться переменной V. В ту же группу следует включить опера- тор безусловного перехода GOTO L. Дей- ствие этого оператора не отличается каки- ми-либо особенностями, он передает управ- ление на строку с номером L, где L — это целое число от 0 до 65 535, и не может быть переменной величиной, что допустимо в не- которых версиях Бейсика. В тех ситуациях, когда переход на ту или иную строку дол- жен зависеть именно от значения перемен- ной, используют оператор ON V GOTO LI, L2,... Здесь LI, L2,...«^ список номеров строк программы, V — переменная или вы- ражение. Если значение V оказывается равным, нулю или превышает количество строк, упомянутых в списке, то управление передается на следующий после ON опера- тор. В противном случае, если V окажется равным, например, двум, управление будет передано на строку, номер которой стоит в списке вторым, то есть на L2. Так же (но в зависимости от условия) работает оператор IF (?) THEN OPI ELSE OP2. Здесь (?)—условие, при истинности которого выполняется OPI, в противном случае — ОР2. Условие может быть совсем простым, например, А % или достаточно сложным, например, A>R OR R> = SIN (10*INT(Q)) AND C%. Выражения OPI, ОР2«=*это любые операторы Бейсика за ис- ключением IF, или номера строк, куда тре- буется передать управление. Есть и другая форма записи этого опера- тора, которую используют только для пе- редачи управления на строку L в зависи- мости от условия (?): IF (?) GOTO L ELSE OP. Если ELSE OP отсутствует, то при лож- ном значении условия управление будет пе- редаваться следующей строке программы. Оператор цикла FOR I = B ТО Е STEP S вместе с оператором NEXT I позволяет ор- ганизовать повторное исполнение фрагмен- та программы, заключенного между ними, Здесь I — переменная цикла, В — начальное значение переменной, Е — конечное значе- ние переменной (В и Е могут быть ариф- метическими выражениями), S^—шаг цик- ла — также число или арифметическое вы- ражение. Шаг цикла определяет, насколько увеличится значение переменной цикла по команде NEXT. Слово STEP можно сокра- щать до ST. Разрешен досрочный выход из цикла, а вот входить в него можно только через строку с FOR. Внутри одного цикла можно разместить сколько угодно других циклов, при условии, что каждый следующий цикл размещается полностью внутри предыдущего. Подобно FOR и NEXT пару образуют операторы READ и DATA. Оператор DATA Cl, С2,... определяет константы, перечислен- ные после слова DATA. Этот оператор мож- но размещать в любом месте программы, Значения констант можно читать операто- ром READ VI, V2, ...,— он считывает зна- чения из оператора DATA и присваивает их переменным, перечисленным после слова READ. Если константы в операторе DATA кончились, а оператор READ еще не вы- полнен, то Бейсик отыскивает второй опе- ратор DATA и продолжает считывать кон- станты. Иногда требуется присваивать значения одного набора констант различным пере- менным, в этом случае в программу вклю- чают оператор RESTORE L. Он восстанав- ливает все (уже считанные оператором READ) значения в операторах DATA в строках с номером большим или равным L, и считывание продолжается с константы первого оператора DATA, встреченного на- чиная со строки L. Оператор RESTORE восстанавливает все константы во всех операторах DATA. Тип переменных и констант может быть лю- бым из тех, что допускает Бейсик-БК, но тип считываемой константы должен совпа- дать с типом переменной, иначе попытка, например, присвоить символьную констан- ту числовой переменной приведет к ошиб- ке. Еще одна неразлучная пара—это GOSUB N — RETURN. Оператор обращения к под- программе GOSUB N передает управление на строку N. Оператор RETURN должен завершать каждую подпрограмму. Он воз- вращает управление на следующий опера- тор после GOSUB N, когда выполнение подпрограммы завершено. Операторы INPUT «...»; VI, V2 и PRINT— обеспечивают диалог программы и пользо- вателя. Оператор INPUT служит для ввода в программу значений переменных любого типа. «...» — текст подсказки, которую ком- пьютер выведет на экран. Вводимые с кла- виатуры данные отображаются на экране, их можно исправлять клавишами редакти- рования, а завершается ввод клавишей ВВОД. Всего можно ввести не боЛее 255 символов, Оператор PRINT выводит на экран зна- чения переменных, выражений, любые сим- вольные константы. Об этом операторе сто- ит рассказать подробнее, поскольку практи-
0 фон 1 ,красный 2 •зеленый 3 '•синий- 4 •черный Цифрами от 0 до 4 кодиру- ется цвет в операторах, ра- ботающих с графикой (ри- сунок вверху). Команда DRAW обладает широкими возможностями — с ее помощью можно нари- совать картинку на экране, не используя остальные ко- манды работы с графимой (справа). -Аргументы команды DRAW MX,Y чертит прямую от текущей позиций курсора до точки’ ' о координатами X ,Y^ восемь команд типа CZ вычерчивают прямую линию длиной от текущего положения курсора в направлении, заданном С. Ш- текущее положение курсора AN - поворот направления на угод ск—90*N установка цвета включает в основную строку подстроку графических командуя SARG-иэмнняеТ масштаб числовых аргументов всех последую- щих команд. Новоа значение аргумента вычисляется по формуле: ARG-N*ARG/4 префикс. Любая последующая команда лишь перемещает курсор, не оставляя следа. префикс. Выполнив следующую команду, компьютер воз-врещаат’ курсор в исходное положение. HUE G D F ^1*4 C0...C4 XV Я S0...S255 в N чески нет такой программы, где бы он не встречался. Если речь идет о переменных, разделенных запятой, то PRINT выводит значение каждой из них в поле из 16 пози- ций. Вместо запятой можно ставить точку с запятой — тогда числа на экране будет разделять лишь один пробел. Символьные константы, перечисленные через точку с за- пятой, появляются на экране без пробела. Кстати, запятая или точка с запятой могут заканчивать список — в этом случае следу- ющий оператор PRINT продолжит вывод на экран в ту же строку экрана. Ключевое слово PRINT набирать не обя- зательно — для Бейсика в этом качестве может выступать знак вопроса. Неисполняемый оператор REM предназ- начен для того, чтобы включать в програм- му строки комментарии. Неисполняемым его называют потому, что при компиляции он выбрасывается и не влияет на быстродей- ствие. Комментарии после слова REM мож- но записывать, начиная с любой позиции. Впрочем, кроме строк REM, комментарии можно размещать в любых строках про- граммы (исключение составляют операторы DATA) — для этого достаточно отделить текст комментария апострофом. В строках с REM апостроф не требуется. Оператор END — это признак завершения программы. По этой команде компьютер закрывает все файлы, которые открыты (об этих операциях, мы еще поговорим), и переводит компьютер в режим ожидания. Команду удобно использовать, например, для того, чтобы отделить текст основной программы от текста подпрограммы. Два оператора, которые также относят к первой группе, распределяют память ком- пьютера. Первый из них — оператор DIM. Он выделяет, или, как говорят программи- сты, резервирует память для массивов. Вслед за именем массива в скобках указы- вают максимально возможное значение каж- дого индекса. Индексов может быть один или два, каждый из них — в диапазоне от О до 255. Отметим, что два массива не могут иметь одно и то же имя. Оператор CLEAR В,Р также распределя- ет память. Здесь В — это целое выражение, определяющее, сколько байт памяти сле- дует зарезервировать для размещения сим- вольных переменных. Исходное значение В = 200. Величина Р устанавливает, как мно- го памяти БК отводится для работы Бейси- ка. Кроме распределения памяти, оператор очищает значения переменных, закрывает все открытые файлы. Л1аксимально допусти- мо значение Р = 70000. В использовании этого оператора немало тонкостей, о которых просто невозможно рассказать в небольшой статье,— на практике эти детали освоить легче, БК-ХУДОЖНИК Нетрудно догадаться, что речь пойдет об операторах работы с графикой. Таких всего восемь, но с их помощью на экране БК достаточно легко можно создать до- вольно сложное изображение. Прежде чем говорить о рисовании на эк- ране, надо научиться готовить экран к это- му. Оператор CLS окрашивает экран в те- кущий цвет фона (для владельцев черно- белого телевизора он просто очищает эк- ран). Второй оператор, работающий со всем экраном,— это COLOR С, F. Здесь С — па- раметр, определяющий цвет основного изо- бражения (соответствие цветов цифрам приведено в таблице), F определяет цвет фона (О означает черный цвет). После включения БК автоматически устанавлива- ет О для фона и I для изображения. Минимальный элемент изображения — это точка. Чтобы окрасить точку в заданный цвет, служит оператор PSET STEP (X, Y), С. Здесь STEP—это служебное слово, оз- начающее, что от текущего положения гра- фического курсора следует отступить на X точек по горизонтали и Y точек по вертика- ли. С — код цвета, в который должна быть окрашена точка. Отсутствие С указывает Бейсику, что речь идет о точке, окрашенной в текущий цвет изображения.
Оператор PRESET STEP (X, Y), С — это полная противоположность оператору PSET — он может окрасить точку в любой заданный цвет, но если С отсутствует, то точка будет окрашена в цвет фопа, то есть стерта. Два оператора работы с точками допол- няет функция POINT. С ее помощью, на- пример, если ввести в программу строку С = POINT (X, Y), можно узнать, в какой цвет окрашена точка с координатами X, Y. В случае, если координаты точки по ошиб- ке указаны за пределами экрана, то С=—-I. Линию можно представить, как последо- вательность точек и вычерчивать ее, исполь- зуя оператор PSET в цикле, но создатели Бейсика предусмотрели специальный опера- тор LINE STEP (X, Y) — STEP (XI, Yl), C. Этот оператор существенно упрощает за- дачу программиста: достаточно указать координаты начала отрезка (относительно текущей позиции графического курсора), координаты конца отрезка, цвет линии С, и компьютер вычертит заданную линию. Ес- ли дополнить список параметров буквой В, отделенной от списка запятой, то вместо линии на экране компьютера появится пря- моугольник — такой, что вычерченная в пре- дыдущем примере линия является его ди- агональю. Список параметров можно упрощать, на- пример, вместо ключевого слова STEP ис- пользовать значок а. Если опустить STEP, то координаты будут отсчитываться не от текущего положения курсора, а от верхнего левого угла экрана. Опуская (X, Y), мы вы- бираем за начальную точку отсчета текущее положение графического курсора. Отсутст- вие С говорит о том, что строится линия те- кущего цвета. Какие бы значения ни прини- мали переменные X, Y, XI, YI,— изображе- ние не выйдет за пределы экрана. Кроме прямоугольника, в словаре графи- ческих терминов БК имеется окружность. Ей соответствует оператор CIRCLE STEP (X, Y), R, С, AB, AE, D. (Впрочем, с его помощью на экране можно нарисовать не только окружность, но и эллипс или дугу любого размера и цвета — об этом чуть ни- же.) STEP (X, Y) задает координаты цент- ра окружности относительно текущей пози- ции графического курсора, R — радиус ок- ружности, С номер цвета окружности, Если речь идет о дуге, то список парамет- ров дополняется величинами АВ и АЕ (уг- лы, заданные в радианах, определяющие положение начальной и конечной точек вы- черчиваемой дуги). Чтобы начертить эллипс, параметры АВ и АЕ опускают, сохранив, однако, запятые, и дополняют список па- раметром D (отношение осей вычерчивае- мого эллипса). Любую часть экрана, например, вычер- ченный прямоугольник, можно закрасить в заданный цвет — для этого используют опе- ратор PAINT STEP (X, Y), С, В. В пояс- нении нуждается только параметр В — он определяет цвет границы области, которую требуется закрасить. Впрочем, если его не указать, то БК будет считать, что грани- цами являются внешние контуры фигуры, вычерченные цветом С. Еще один оператор, удобный для рисо- вания—‘это DRAW... Точки означают стро- ку графических команд. При умелом ис- пользовании этот оператор обладает колос- сальными возможностями, но в данной вер- сии Бейсика он более похож на избалован- ное дитя — масса синтаксических требова- ний, оговорок и чувствительность к ошиб- кам делают его использование не столь удобным, сколь это могло быть. Кроме то- го, несколько повторных запусков операто- ра с ошибкой могут привести к потере про- граммы. Параметры оператора — в таблице на стр. 112. Добавим к ней несколько несложных рекомендаций. Команды черчения прямой линии можно набирать без пробелов меж- ду ними, а в случае если в качестве аргу- мента используется переменная, то после нее лучше ставить точку с запятой. После префикса, напротив, никаких знаков не тре- буется, Точку с запятой следует ставить между всеми остальными командами. Если в процессе работы вы изменяли масштаб командой S, не забудьте восстановить ис- ходный масштаб командой S0. И все же для того, чтобы эффективно ра- ботать с Бейсиком-БК, необходимо изучить еще немало команд и функций. Только вла- дея всем богатым арсеналом Бейсика^БК, программист сможет оптимальным образом использовать возможности «Электроники БК». Об этих более сложных командах мы поговорим на следующем занятии «Школы». ЗАПИШИТЕСЬ В МКК В декабре 1988 года в Москве в Центре междуна- родной торговли состоя- лось подписание Договора об учреждении Междуна- родного компьютерного клуба (МКК). Новый клуб является международной неправительственной орга- низацией, созданной на не- зависимой основе для все- мерного развития междуна- родных связей в области современной компьютер- ной техники и информатики, пропаганды и распростра- нения компьютерной гра- моты и культуры. Клуб — это своего рода отделение ассоциации «Ин- терзнание», созданной на базе Всесоюзного общества «Знание». Он действует под девизом «Информатика на службе международного диалога». Участниками клу- ба могут быть государст- венные органы, учреждения и представительства, меж- дународные организации, объединения, предприятия и организации, созданные на государственной, коопе- ративой, частной или обще- ственной основе, независи- мо от их национальной при- надлежности и местонахож- дения, а также любые фи- зические лица, независимо от их гражданства или под- данства и постоянного ме- стожительства. hjlL Vi ALU i W !lfci; I я * ХРОНИКА