Главная -> Книги

(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) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100) (3)

щего, как ее использовать для вычислений, приходится составлять более подробное описание, например:

1. Запомнить число т.

2. Принять а = р = п.

3. Принять а~а-\.

4. Если а = т, то перейти к шагу 7.

5. Принять р = рха.

6. Перейти к шагу 3.

7. Принять Л™ = р.

8. Закончить вычисления.

Этот алгоритм, как наглядно видно на его схеме (рис. 4), содержит замкнутую последовательность операций, называемую циклом, выход из которого обеспечивается условным оператором при а = т. Од нократное выполнение операций в цикле называют итерацией.

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

Использование ЭВМ широким кругом специа-.1ИСТ0Н стало возможным лишь после разработки алгоритмических языков программирования высокого уровня и устройств для перевода программ с входного яяыка высокого уровня иа язык низшего уровня в бинарных кодах, непосредст-BfHHO управляющих работой ЭВМ (трансляторов)

Отличительная особенность алгоритмических языков - практически полное .<1()тветствие операторов программ на этих языках операторам алгоритмов. На пример, рассмотренный алгоритм вычисления Л при обозначении исходных чисел буквами п и m иа алгоритмическом языке Бейсик (широко используемом для персональных ЭВМ) можно представить программой

Рнс. 4

10 LET

M = m

20 LET

A=P = t

30 LET

A=--A- 1

40 IF

A=M TNEN 70

50 LET

P = P • A

60 GO

TO 30

70 PRINT

A (л, m). P

999 END

Звездочкой в языке Бейсик обозначен знак умножения, а ключевые слова (имена операторов) LET, IF ... THEN GO TO. PPINT, END соответствуют словам ПУСТЬ, ЕСЛИ ... ТО ИДТИ НА, ПЕЧАТАТЬ, КОНЕЦ.



Таблица 1.2. Программа определения числа Л размещений из л по m-l элементов иа входных языках ЯМК34 и ЯМК52

Адре-uiara

Нажимаемые клавиши

Код шага

Комментарии

П 7

Пусть Р7 = т

Вызвать число п

П 8

Пусть Р8 = /г

П 9

Пусть Р9 = п

ИП 8

Пусть д: = Р8

Пусть *=1, =Р8

Пусть л: = Р8-1

П 8

Пусть Р8 = д:

ИП 7

Пусть X =Р7, у=Р8

Пусть л: = Р8-Р7

F хО

Если х = 0, то

1 8

Перейти по адресу 18. иначе

ИП 8

Пусть х = Р8

ИП 9

Пусть х = Р9. 1/ = Р8

Пусть х-уХл

П 9

Пусть Р9 = лг

Перейти

0 4

по адресу 04

ИП 9

Пусть дг = Р9

Закончить вычисления

Инструкция. После ввода программы в программную память нажать клавиши Н и АВТ. ввести число п в регистр Y, число m в регистр X м нажать клавиши В/О и С/П: после выполнения программы высвечивается искомое число Л",

Входные языки ПМК также являются входными языками высокого уровня, отличающимися от большинства алгоритмических языков ЭВМ других классов в основном неформальным представлением операторов без ключевых слов, что ускоряет ввод программ. Например, фрагмент программы ИП8 ИП9 X П9 на Входном языке ПМК можно рассматривать как оператор присваивания «пуст1> Р9=Р8ХР9» (где PN - имя переменной, значение которой равно содержимому регистра N) или как последовательность операторов присваивания «пусть х- = Р8ХР9», «пусть Р9 = л:» (где х - текущая переменная, хранящаяся в регистре X) или, наконец, как последовательность операторов «пусть .г = Р8», «пусть Jc=P9, 1/ = Р8», «пусть х = 1/хх, «пусть Р9=*».

Программы на входных языках ПЛЖ часто записываются в виде таблицы, в каждой строке которой указывается адрес шага программы, символы нажимаемых клавиш, код шага, высвечиваемый в режиме программирования, дополнительные комментарии и иногда содержимое регистров операционного стека. Табличную запись дополняют инструкцией по выполнению программы (табл 1.2).

Указав адреса начальных шагов фрагментов, соответствующих операторам алгоритма, эту же программу, используя символы операторов, приведенные в табл, 1.1, можно записать в следующем виде:



00 П7

01 П8 ПЯ

04 ИП8 1 - Ш . 117 -

10 хО 18

12 ИП8 ИП9 X П9

16 БП 04

18 ИП9

19 С/П

Каждая строка записанной таким образом программы точно соответствуеi строке программы на языке Бейсик и шагу словесно-формульного описания алгоритма. Синтаксические особенности связаны лишь с обратной записью двухместных операций, а также условным переходом при невыполнении (в языке Бейсик - при выполнении) проверяемого условия, Если дополнить эту программу ключевыми словами, то она с точностью до кодов порядковых номеров операторов и формы записи двухместных операций совпадает с программой на языке Бейсик и описанием алгоритма, что подтверждает высокий уровень вход ных языков ПМК.

Табличная запись программ, подобная табл. 1.2, удобна для начинающих программистов, но при составлении программ, текст которых многократно изменяют в поисках наилучшего варианта, практически неприменима. Запись программы по строкам, соответствующим операторам алгоритма, часто оказывается полезной при оптимизации программ, но занимает много места и не обеспечивает минимальных затрат времени на запись программы в процессе ее сое тавления.

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

строки а = 0, 1, ... и столбца Ь = 0, 1..... на пересечении которых находится

нужный шаг. Операторы программы будем обозначать указанными в табл. 1.1 символами. Символы F или К префиксных клавиш для ввода команд, обозначенных над клавишами, будем опускать (исключение составляют символы операторов косвенной адресации с буквой К). Подобные префиксные команды ие указывают в программах иа алгоритмических языках ЭВМ других классов и в машинописных текстах, а префиксные команды F или К и соответствуют нажа тию клавиши печатающего устройства для знаков верхнего ряда.

Компактную запись программ целесообразно сопровождать стандартизованной записью инструкции по их выполнению. Для указания иа размещение исходных данных в регистрах памяти и операционного стека будем использовать формулы вида a = PN, означающие, что перед пуском программы число а должно быть введено в регистр N. В частности, запись a-PY, b - PX означает, что числа а и b должны быть занесены в регистры Y и X операционного стека, для чего нужно набрать число а, нажать клавишу Bf и набрать число Ь. Аналогично запись а=РТ, b = PZ, c = PY, d = PX соответствует операциям набора и ввода а Bf b Bf с Bf d. При решении задач с многократным выполнением программы необходимо знать, какие исходные данные сохраняются после очередного выполнения программы, в инструкциях для этих данных формулы a=PN будем



(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) (79) (80) (81) (82) (83) (84) (85) (86) (87) (88) (89) (90) (91) (92) (93) (94) (95) (96) (97) (98) (99) (100)