Й.Янсен Курс цифровой электроники. Том 4. Микрокомпьютеры (1987) (1092084), страница 53
Текст из файла (страница 53)
В строке 400 указаны две операции, которые будут выполнены только в том случае, когда они будут разделены двоеточием (;). Вторую операцию можно переместить па следующую строку. Следует отметить, что в системах буквы часто имеют только прописную форму, поэтому в клавиатуре этих систем отсутствует клавиша перевода букв в верхний регистр. Приведем пример программы возведения в степень. 5 18Я1Н» "СТЕПЕНИ 2" 10 У=а 05 1.ВН1НГУ: га йвн1н1 ву За У=Уе1:001015 СТЕПЕНИ 2 а 1 2 2 С З 8 1Ь 5 Эг ь ьс 7 128 в гэь 9 512 10 1агс 11 2063 1г сань !э 8192 1С 1ЬЗЗС зггьв Ь55ЗЬ 1з1агг 18 гьгесс 19 526238 20 1.Освзвесаь 1 2.09715ЕЬОЬ ..2 С.19СЗЕЯ06 3 8.388618саь В строке 5 дается указание напечатать по команде !.РКРТ (Е обозначает печать на принтере) заголовок «СТЕПЕНИ 2» в верхней части таблицы.
Затем в строке 10 переменной Х присваивается значение, равное О, и в строках 15 и 20 печатаются величины Х и 2». В строке 30 значение Х увеличивается на 1 и производится безусловный обратный переход в строку 15 (ПОТО 15), после чего операция возведения в степень повторяется, однако теперь уже с показателем степени, превышающим на 1 предыдущий, В программе образуется цикл, который при повторении выполняется так, что каждый раз вычисляется следующая, более высокая степень по основанию 2. Процесс вычисления степени числа с основанием е иллюстрирует следующая программа; 324 Глава б Йеи вычиспение степеней е 5 ЙЕИ 2 3 10 ЙЕИ К К К К 0 ЙЕИ Е=(ГКГ-Г-- ° ----Г....,..
30 ЙЕИ 2 2.3 .З.Г 40 !ИРОТК 50 ?=3 ЬО 9=! 70 Е=1гК ЕО Р=((л?ГГ(ЧР?) 90 9=9!? 100 Е =Ем' 11О ?=?г( 1 О !Р?<3000(оао 125 (.РЙ1ИТГЙЕ(10(К 130 (РЙ!И1 "К ="(ТЙВ(5(К:ТЙВ(101 "Е-" ' (4В(15(Е 1 К= 1 Е= 2.71е28 10 10 Е= 220 2Ь 21 Фунидия 5!ы(Х) СО5(Х) ТЛ(т* (Х) АТЫ(Х) Описание 510 Х соа Х > Х является углом, пал(еренным в радианах (дх агс(к Х Выражается в радианах в диапазоне от — л/2 до +н/2 В данной формуле для вычисления с" в каждом следующем члене показатель степени х(7) увслпчнвается на 1 (7=-7+1). Знаменатель каждого следующего члена разложения образуется умножением значения знаменателя т? предыдущего члена на новый показатель степени (1/= 1?Х7). Прн этом получается новый член Р= (Х?)/(Ъ?7(',7).
Величину этого члена необходимо прибавить к сумме предыдущих членов: Е=-Е+Р. В данной программе этот подход применен для вычисления е". Повторяющееся вычисление соответствующих гшенов разложения осуществляется с помощью оператора !1?...ТНЕ)к( в строке 120. К этому оператору мы еще вернемся позже, Если 7)30, то программа выполняется до строки 120 и оператор ЕРй!РЙТ выводит на печать х и е". Вычисление ряда продолжается до тех пор, пока член Р не станет меньше е (Р— е<0). В данном алгоритме выбрано 30 членов ряда, причем в основном для того, чтобы показать, сколько времени будет занимать выполнение этой Бейсик-программы на микроЭВМ разных типов, Структурная схема алгоритма представлена на рис.
6.1. Стандартные неэлементарпые операторы, которые обеспечивает Бейсик, приведены ниже в таблице. Лргумснты этих функций заключены в скобки, включая и тот случай, когда они являются числами. Языки программирования вьыокого уровня — Бейсик 328 ВХР (Х) ЛВЗ(Х) 1,06(Х) 8(ЕК (Х) 1(чт(х) Строка Операция 100 Л=З!М (17 22/7/180) нли 100 2=22/7 11О А=81)(( (Гт»Х/180) илн 100 К = 22/7/180 11О А=81Ы (17»К) В последнем примере К совпадает с числом радианов угла, равного 1'. Применение синуса можно проиллюстрировать с помощью следующей программы: 150 (=1 (ЬО У=О $70 Р=(5!Н1Х ° (Э /7$/100(1»2 100 ЕЕ(У-У(Р 190 $ Е(Х»Х(1 эоо (Г(<эьотненсото(70 210 РЯ!Н!"!Е(.Г»"$!ЛВ(10(ЗОН(У/ЭЬ0$ О РН!Н!"1ЕГГ="$1РВ(10$(1/2$»зоя(2$ 1Е$$ = .70Ь9Ь5 (ЕГГ» .707107 Эффективная амплитуда переменного тока равна !/2)/21,„.
В программе множитель )12/2 определяется путем интегрирования, т. е. вычисляется мощность, приходящаяся на 1' (Р= = (Ын((ХХ (22/7)/(180))'); найденные величины суммируются по полному периоду переменного тока. В данной программе на каждом шаге производится увеличение «старой» частичной суммы !' на Р (!'='х'+Р). Для определения отдельных вели- ет (е=2,71828) Лбсол(отпав величина Х е)ад)Х) =1п)Х) У)Х( — корень квадратный нз )Х( Наибольшее целое число, меньшее или равное Х 1, если Х)0 5ОМ(Х) Знак Х=- ~ О, если Х=О ~ — 1, если Х (О КМО(Х) Генератор случайных чисел Для тригонометрических функций, таких, как синус, косинус н тангенс, аргумент задается в радианах, причем 1'= =0,017483 рад.
Из 180'=Хт следует, что 1'=и/180 рад и 1 рад= =180'/и, при этом 71=22/7. В вычислениях принято, что и= =22/7. Можно присвоить какой-либо определенной переменной величину 22/7 и использовать затем эту переменную вместо и. Например, если необходимо определить синус угла 17', программа будет выглядеть следующим образом: Глана б эо При определении величины 1.0 ный логарифм аргумента, т. е. ре логарифм Х с основанием е (2,7 сводится к вычислению степени е ни е.
Данные функции являются с Рис. бд. Структурная схема алгоритма «вычисление степени е>. чин Р на каждом новом шаге вычисления производится увеличение значения Х на 1 (1.ЕТ Х=Х+1). Суммирование заканчивается при Х=360', когда происходит «переход» в строку 200 и определяется отношение вычисленного значения 1 к 1н>х (У=)У/360) . В строке 220 определяется точное значение 1,и = '/ф2, чтобы проверить, насколько вычисленное значение отличается от точного. В данном случае мы констатируем, что эта разность довольно мала. Наблюдаемую разность можно объяснить тем, что ЛХ=!, поэтому величину ЛХ, очевидно, нужно в принципе выбирать меньшей.
Для данного примера программы применена структурная схема, показанная на рис. 6.2. В случае агс1я результат указывается в радианах. Функция оЯК определяет квадратный корень из данной переменной, при этом аргумент должен быть больше О. В некоторых диалектах Бейсика при определении корня из отрицательного числа его знак автоматически изменяется на положительный, так что в действительности при этом вычисляется корень из абсолютной величины аргумента. сх(Х) вычисляется натуральзультат представляет собой 1828...), тогда как ЕХР(Х) , где Х вЂ” показатель степетандартными функциями, ко- языки прог оммирования вьыокого ровня — Бейсик го торые часто используются в програм- ССзтллят ) мах научных расчетов и в алгоритмах управления физическими процессами.
Функция 1ХТ(Х) определяет максимальное целое число, которое по величине меньше или равно Х, Этот т=! гео оператор в действительности является командой округления. Для числа 7,81123456789 он дает 7, а для Вмчислимь р /70 — 3,2455789 дает — 4. Указанный оператор позволяет убрать из действительного числа те цифры, которые несущественны для конечного результата вычислений.
Это связано с тем, что Х Х+! 190 для научных расчетов вполне достаточна точность 10 ', если входные пе- "' х,зео 200 ременные заданы с точностью 1979. При расчете цен для накладной Да можно производить округление таким 7г 1=~/ 1мвмра1ИТ ! 210 же образом. Если нужно произвести округление между 0,5 и 1,0 с избытком, то сначала к найденному числу добавляется +0,5, а затем применяет- !=!71 2 1,х,рнгмтг г ся оператор 1)з)Т(Х). Команда АВ5 (Х) определяет абсолютную величину Х, под которой понимается величина данного числа Рнс б.н СтРУктУРиан без учета знака. Результатом приме- ма пРогРаммы вычислениЯ пения функции АВ5 будет всегда положительное число. С помощью функции $05) (от английского слова 5(див знак) можно определить знак числа, при этом функция принимает значение 1, если это число положительное.
Нуль получается, если аргумент равен нулю, и — 1, если он равен отрицательному числу. Функция гсг)Р(Х)'1 может понадобиться для получения случайного числа в диапазоне от 0 до 1. Если Х присваивается значение — 1, то при генерации случайных чисел начальные значения будут всегда одинаковыми, поэтому прн каждом вызове В)х)Р ( — 1) будет получаться одно и то же случайное число. Аналогичная ситуация наблюдается и для Х=О.
Примеры: )Х)Е~~! 1О Х=гх))Р(+1) '! Лргументом Х при обращении к функции ПМО(Х) может быть любое число, так как его значение игнорируется. — Прим. ргд. Глава б 20 РЙ1ХТ Х 30 бОТО 10 Ком ° 498871 ° 670127 ° 98706 ° 739354 К1)Ы ° 823571 ° 244878 ° 421504 ° 310637 5) Е% 10 Х=КЫ111 — 1) о1 КН1)(0) 20 РИНТ Х 30 ООТО 10 К1) 51 ° 308601 ° 308601 ° 308601 ° 308601 К1ЛЯ ° 308601 *308601 ° 308601 ° 308601 Генерация случайных чисел находит широкое применение в научных расчетах, а также во многих играх, реализуемых на ЭВМ. В нашем распоряжении имеются также и логические операции И, ИЛИ и НЕ. Эти операторы имеют то же значение, что и эквивалентные им команды машинного языка. Если используются шестнадцатеричные переменные, то перед ними помещаются символы ЬН, в результате чего ЭВМ генерирует соответствующие буквенно-цифровые комбинации.
В некоторых системах для этой цели часто используется знак ©. Логические функции программируются обычно в следующем виде: х=х АНР у х=х оп у в=НОТ у Функция И Функция ИЛИ Функция НЕ Указанные функции могут входить в состав более сложных операторов, например 1Р Х=б АИ1л У=8 ТНЕУ РИНТ Х (см. также следующий раздел). Другой пример: 1Р К<Х ОК (Б< у' АИР Т)Х) ТНЕУ ООТО 150. В этих примерах соответствующие выражения опрашиваются, и если ответом будет «истина», то в программе произойдет ветвление, в частности переход к строке 150. Шестнадцатеричная интерпретация логической функции дана в следующем примере: Е=ЬНХ АХ1л ЬНт'. В этом примере переменным предшествуют символы ЬН, указывающие, что здесь мы имеем дело с шестнадцатеричными переменными.
Яввгки арограммирования высокого уровня — Бейсик 329 Логические действия такого вида над шестнадцатеричными данными часто используются в операциях со строками битов. Пример: НЕЮ 1О Х=ЬНОР 20 У=ЬН08 30 Х=Х АКР У 40 РВ1ХТ ЬНХ 50 ЕНР ц1)г) 0 8 С помощью Х=ЬНОР шестнадцатеричное число ОР загружается в Х, с помощью У=ссН08 число 08 загружается в У. Числа Х и У после операции И печатаются с помощью оператора Р)1!г(Т: ОР16 = 0000 11112 081в =0000 1000вя„о 081в =0000 1000в При выполнении операции И над ОРм и 081в из ОРм выделяется четвертый бит, начиная с младшего бита, а все остальные биты маскируются. Подобная операция, при выполнении которой для какого-либо байта производится маскирование одного или нескольких битов, называется маскированием битов.
Эта операция находит применение при управлении работой клапанов, кранов, реле, двигателей и различными процессами с применением микроЭВМ. С помощью 8 бит, хранящихся в запоминающих элементах (триггерах), можно управлять режимом работы восьми органов управления. Маскирование битов позволяет ЭВМ указать, какие органы управления должны быть включены (состояние 1), а какие — выключены (состояние 0). В вышеприведенном примере результат применения операции АКР может быть равен 0 или 1 в зависимости от значения четвертого бита в верхнем байте.