Android-приложение для поиска дешевых авиабилетов: play.google.com
Главная -> Справочник по алгоритмам

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78

пример постровиая грасрит (рунииии y=af2

х=-5! „ *

*-----10-----ге-----зв-у=а!-2

00=5 /

Рис.\2.9. График функции Y-K с координатными осями

этом может иметь более высокую разрешающую способность). С помощью оператора LINE X, Y вычерчивается прямая линия с концом, заданным целыми значениями X и У, и началом, заданным предшествующим оператором PLOT. Например, операторы PLOT О, О, 1 и LINE 50, 50 обеспечивают построение прямой с началом в точке (0,0) и концом в точке (50,50) декартовой системы координат на плоскости. С помощью этих операторов можно строить динамические, т. е. движущиеся изображения и сложные рисунки.

Некоторые типы принтеров (например, Электроника-УВВПЧ-30-004, входящие в комплект последних моделей СПП на базе микроэвм Электроника-ДЗ-28) могут формировать высококачественные одноцветные графические изображения по точкам, причем печать графики возможна как вдоль, так и поперек бумажной ленты.

Диалог с примеиеиием кодов. Часто нужно на ПЭВМ выполнить ту или иную операцию, например, провести расчет по той или иной формуле. Это можно сделать, используя операторы INPUT и IF, THEN.

Диалог с применением клавиш пользователя. У ряда ПЭВМ есть команды присвоения клавишам функций клавиш пользователя. При этом пуск программы с заданного места производится нажатием только клавиш пользователя. Ниже дана программа для ПЭВМ FX-702P, иллюстрирующая применение клавиш пользователя.

После ввода значения х символьной переменной AS командой KEY придается (строка 20) свойство управляющей переменной. Теперь, если нажать клавишу 2, оператор IF в строке 30 передаст управление строке 200; если нажать клавишу 3, аналогичный оператор в строке 40 передаст управление строке. 300. Во всех других случаях происходит переход к строке 20 и ПЭВМ ждет нажатия одной из клавиш пользователя. Если ввести. х = 2 и нажать клавишу 2, будет получен результат Х2=4, если нажать клавишу 3, то Х3=8 (напомним, что в системе команд FX-702P стрелка f означает возведение в степень).

Диалог с применением символьных констант. Он наиболее близок к естественному, так как при нем машина задает вопросы, а пользователь отвечает на них на естественном языке (словесном или математическом). Иллюстрацией к организации такого диалога на ПЭВМ FX-702P является следующая программа:

10 1ЫР

20 INP "Xf2 OR Х+3 30 IF $="!«:t2" THEN 200 40 IF $="Xt3" THEN 300 50 GOTO 20

200 PRT"Xt2="J Xta: GOTO 10 300 PRT"Xt3="; Xt3: GOTO 10

Здесь после задания x ПЭВМ в строке 20 задает пользователю вопрос: Xt2 OR Х3? (дг или дг?). Надо ответить фразой Xf 2 или Х3. Если ответ был Х2, символ4>ной переменной $ присваивается значение Х2, а в строке 30 опера-торы IF ... THEN лередают управление строке 200, т. е. вычислению и выдаче значения У.\1=>?. Если задать Х3, то в строке 40 операторы IF ... THEN передадут управление строке 300, т. е. вычис-

10 INPUTВВЕДИТЕ Х=!«:

20 PRINTДЛЯ ВЫЧИСЛЕНИЯ К"2 УКАЖИТЕ КОД 2

30 INPUTДЛЯ ВЫЧИСЛЕНИЯ ХЗ УКАН1ИТЕ КОД 3

40 IF К=2 THEN 60

50 IF К=3 GOTO 70: GOTO 20

60 PRINT!>r-2=!><-2; GOTO 10

70 PRINT!><"3=!><"3! GOTO 10:END

КОД=К

В этой программе при задании по запросу ЭВМ кода 2 вычисляется значение дг, а при задании кода 3-х.

При ошибочно введенном коде повторяется запрос кода.

10 inp "!«:",Х .

20 a$=kev:iF а$= " then 20

30 if ft$="2" then 200

40 if A5="3" then 300

50 goto 20

200 prt"X+2="! Xt2

300 prt"x+3="; х+з: goto 10: end

лению и выдаче значения Х3. Во всех других случаях безусловный переход СОТО 20 строке 50 ведет к повторению запроса

Переходы с косвенной адресацией. Они

возможны в расширенных версиях бейсика. Так, у ПЭВМ FX-702P возможны 6 типов таких переходов:

. 1. GOTO V

2. GOTO #v

3. IF a (условие) P; GOTO v

4. IF a (условие) P; GOTO #v



5. GSB V

6. GSB #v

Здесь a, p и Y - переменные или арифметические выражения. Номер строки или программной области (при знаке Ф перед у) задается целой частью арифметического выражения или значения переменной у. Это значение не должно выходить за пределы 9 при адресации к программным областям и 10 ООО при адресации к строкам V-

Применение косвенной адресации поясним таким примером: пусть надо выполнить интегрирование нескольких функций по формуле Симпсона, не меняя основную программу. Для -этого можно каждую функцию обозначить номером N (Л/=1, 2, 3 ...) и вычислять подпрограммой,- записанной, например, со строк 100Л/ (100 при Л/=1, 200 при Л/=2 и т. д.). Соответствующая программа имеет вид

0-5 IHP "F Н=»..Н 10 INP "Й>Й, "В%В

20 к=а: gsb нш\т: f;=F

30 X=(::ft-в>..г: GSB H*iee: ;=;-4жF

40 Х=В: GSB НЖ100: ;=?.-F

-50 PRT "I="? S*CB-A>/-6; КТПР

100 F=SQR<2*K+1>: RET

200 F=l-a-HXt2>: RET

300 F=10*LN !>;: RET

50Й EHTi

При задании Л/=1, 2 или 3 эта программа будет вычислять соответственно интегралы

10 1п X dx.

Задав, например, Л/=1,с = 0и6 = 1, получим для первого интеграла значение /=1,398150843.

§ 2.6. Перевод программ с одной версии бейсика на другую

Различия между версиями бейсика могут заключаться в синтаксисе (правилах записи операторов) и в словарном запасе операторов.

Различия в синтаксисе, как правило, носят непринципиальный характер и сводятся к замене апострофов на кавычки, двоеточия на точку с запятой, знаков возведения в степень (-.на t) ИТ. д. Такая замена легко формализуется, но требует знания синтаксиса обеих версий бейсика - той, с которой переводят, и той, на которую переводят программы.

Различия в словарном запасе операторов могут быть весьма существенными. Так, простые версии бейсика содержат до 20- 50 операторов, а сложные - до 200-300. Эти различия нередко носят принципиальный характер. Так, операторы косвенной адресации, работы с целочисленными и символь-

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

Перевод программ справочника на другие версии бейсика достаточно прост благодаря специальным мерам, принятым при составлении программ. Так, направленность справочника на научно-технические, статистические и экономические расчеты позволила отказаться от использования операторов вывода сложных графиков и работы с символьными (текстовыми) переменными. Все программы справочника даны на версии бейсика умеренной сложности, применяемой в массовых системах подготовки программ на базе настольной микроЭВМ Электроника-ДЗ-28. В эту версию бейсика входит основной набор операторов (табл. 2.1-2.4), применяемых в других версиях бейсика (для микроэвм Электроника-СбО, Искра-226, диалоговых вычислительных комплексов ДВК-1, ДВК-2 и др.). Принятая версия бейсика является расширенной в части операторов вычисления математических функций (табл. 2.6), что упрощает запись программ. Однако перевод операторов этой версии на язык других версий (где эти операторы отсутствуют) носит формальный характер (см. табл. 2.12) и поэтому достаточно прост. Для облегчения перевода в прикладных программах, как правило, не используются операторы DATA, READ, RESTORE и ON, поскольку они легко заменяются другими (INPUT, LET, GOTO) и отсутствуют у некоторых версий бейсика (например, ПЭВМ FX-702P).

Общие рекомендации по переводу программ. При переводе программ рекомендуется придерживаться следующих правил.

1. Внимательно изучить особенности версий бейсика (оригинала и той, которая нужна пользователю). В ходе этого изучения нужно выяснить, насколько родственны эти версии, прежде всего по словарному запасу операторов.

2. Если версии бейсика достаточно близки, следует использовать построчный или пооператорный перевод, учитывая при этом различие в синтаксисе этих версий.

3. Если в оригинале встречаются операторы, отсутствующие в нужной версии, следует выяснить их смысл и заменить другими операторами. Так, для замены ряда операторов вычисления математических функций можно использовать табл. 2.9.

4. Если версии бейсика сильно различаются, целесообразно составить детальный описательный или графический алгоритм решения нужной задачи и затем по нему заново составить программу на нужной версии бейсика.

Некоторые практические рекомендации по переводу программ. При переводе пользователь может существенно изменить характер



Формальные правила перевода операторов вычисления математических функции для некоторых версий бейсика (Р = л = 3,141592654)

Версии бейсика

СПП на базе микроЭВМ Электроника-ДЗ-28

Микроэвм Электроника-СбО, Искра-226, комплексы ДВК-1, ДВК-2

ПЭВМ FX-702P

DEG(X)

180.Х/Р

MODE4

RAD(X)

Р.Х/180

MODES

TAN(X)

SIN(X)/COS(X)

TAN X

ASN(X)

ATN(X/SQR(1-X.X))

ASN X

ACS(X) •

Р/2-ATN (X/SQR (1 -Х.Х))

ACS X

HSN(X)

(ЕХР(Х)-ЕХР(-Х))/2

HSN X

HCS(X)

(ЕХР(Х)--ЕХР(-Х))/2

HCS X

HTN(X)

(ЕХР (X) - ЕХР (- X)) / (ЕХР (X) + ЕХР (- X))

HTN X

AHS(X)

LOG(X + SQR(X.X+l))

AHS X

AHC(X)

LOG(X + SQR(X.X-l))

AHC X

AHT(X)

LOG((l-fX)/(l-X))/2

AHT X

LGT(X)

LOG (X)/LOG (10)

LOG X

LOG(X)

LOG(X)

LN X

X-INT(X)

X-INT(X)

FRAC X

EXT(X)

ХП10

XflO

диалога с ПЭВМ (сократить или, напротив, расширить его). При переводе зарубежных программ целесообразно перевести комментарии с английского языка на русский. У пользователей зарубежными ПЭВМ может возникнуть необходимость в обратном переводе.

У некоторых версий бейсика (например, для микроэвм Электроника-СбО) комментарии не вводятся с помощью оператора INPUT. В этом случае при переводе используется оператор PRINT.

Пример.

Версия для микроэвм Электроника-ДЗ-28

10 INPUT ВВЕДИТЕ X, Y X, Y

Версия для микроэвм Электроника-СбО

10 PRINT "ВВЕДИТЕ X, Y" 15 INPUT Х-, Y

Переадресация и переиндексация мас-сивов и переменных бывает необходима при нх специальной организации, применяемой в некоторых версиях бейсика. Например, в версии бейсик-CASIO, применяемой в ПЭВМ FX-702P, все массивы (одномерные и двумерные) организуются на основе одной переменной А; например, А(1), A(J, I). В большинстве других версий переменные массивов могут обозначаться любыми буквами (или буквами с цифрой от О до 9): Х(1), Z9(I, J) и т. д. Поэтому прямой перевод программ с версии бейсик-САЗЮ на другие версии возможен, а обратный требует переадресации массивов. Одновременно йозникает необходимость и в их переиндексации. Например, три одномерных массива Х(1), Y(J), Z(K) при К 10, J<20 и К<10 в версии бейсик-CASIO можно заменить массивами А(1), А (10 + 1) и А (30 + 1). В этой версии А5=А(5), А(15)=В5, тогда как в других версиях А5 и А (5) - совершенно разные

переменные, как и А(15) и В5. В связи с этим, если одна из версий бейсика при переводе программ имеет подобные особенности, к их учету следует относиться с особым вниманием.

Приведение аргумента функций в допустимые пределы нередко необходимо при переводе программ. Например, аргумент, тригонометрических функций* версии бейсик-CASIO должен лежать в пределах от -8л до +8л рад. В ряде других версий бейсика таких ограничений нет. Выход аргумента за допустимые пределы ведет к остановке вычислений с выдачей знака ошибки. Для приведения аргумента X в заданные пределы можно использовать фрагмент программы вида

50 IF Х<8.л THEN 70 . .

60 Х=Х -8*л: GOTO 50

70...........-

50 Х = 2.л.РРАС(Х/2/л)

В последнем случае аргумент приводится к интервалу от -2л до +2л.

Редактирование и отладка переведенных программ. Редактирование программ, полученных путем перевода, сводится к проверке правильности записи всех оцераторов. Если перевод сделан с простой версии бейсика на более сложную, следует изучить возможность оптимизации программ, используя специфические возможности применяемой версии бейсика. Например, выражение вида X=Ja4 на ПЭВМ FX-702P может вычисляться с помощью оператора RPC А, В вместо выражения X = SQR(A*A + B*B) и т. д. Отладка полученных переводом программ существенно облегчается, если программа-оригинал была снабжена контрольными тестами (примерами). При редак-



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 [15] 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78



0.1015
Яндекс.Метрика