Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.
|
Линейные программы для УК "НЕЙМАН" состоят из команд арифметических операций, пересылки, ввода и вывода. На языке машинных команд ввод и вывод программируются командой пересылки значений через буферную ячейку FC. Однако в программах на Автокоде прямые адреса ячеек памяти не используются. Чтобы не нарушать этот принцип, определим специальные команды ввода и вывода: OUTPUT <переменная> - команда вывода. Например, OUTPUT X - вывод на табло значения переменной X. Для знакомства с программированием на Автокоде рассмотрим несколько задач. Этапы работы над программой на Автокоде следующие:
По сравнению с ЯМК, исчез этап распределения памяти. Зато появились своеобразные этапы 2 и 3, с которыми подробно разберемся ниже. Задача 1. Определить, к какому веку новой эры (V) относится данный год (G).
Эта задача решается с помощью линейного алгоритма. Программа на Автокоде расположена в левом столбце таблицы 6. О содержании правой половины таблицы речь пойдет позже.
Команды записываются друг за другом в том порядке, в каком они будут выполняться. В каждой команде мнемокод отделяется от операндов пробелами (минимум - один пробел). Операнды отделяются друг от друга запятыми. Запись каждой команды начинается с новой строки. Безусловно, такую программу легче и писать, и читать, чем программу на ЯМК. На Автокоде меньше вероятность допустить ошибку, чем на ЯМК. И все-таки ошибки возможны. Можно, например, неправильно записать мнемокод, идентификатор, пропустить запятую, использовать недопустимый символ и пр. Ошибки такого рода, связанные с нарушением правил записи программ на языке программирования, называются синтаксическими ошибками (подробнее об этом в следующем разделе). Однако возможны ошибки в алгоритме. Алгоритмические ошибки транслятор обнаружить не может. Их должен найти и исправить программист на стадии тестирования. О тестировании мы уже говорили раньше. При программировании циклов и ветвлений используются команды условного (IFGO) и безусловного (GO) переходов. Вспомним, что в соответствующих им командах на ЯМК (0A и 0B) указывается адрес ячейки, к которой производится переход. Но в программе на Автокоде не должно быть адресов ячеек. Для организации переходов в Автокоде применяются метки. Метка представляет собой идентификатор, начинающийся с буквы L (l). Метка записывается перед мнемокодом команды и отделяется от него двоеточием. Например: L1: ADD X,Y,Z L15: MUL <2>,F,S Следует ставить метки лишь в тех командах, к которым в программе производится переход. Форматы команд перехода следующие: IFGO <метка> GO <метка> Например: IFGO L1 GO L15 Их исполнение аналогично соответствующим командам ЯМК. Задача 2. Сколько различных N-буквенных слов можно составить путем перестановок данных N букв?
Составим программу в соответствии со вторым алгоритмом из предыдущего раздела. Такой алгоритм включает в себя цикл с постусловием.
Метка L1 отмечает начало цикла. Команда IFGO L1 производит переход к помеченной команде в тех случаях, когда цикл следует повторять. Задача 3. Определить наибольший общий делитель двух натуральных чисел.
Программа решения задачи реализует известный алгоритм Евклида. Его описание на алгоритмическом языке выглядит следующим образом: алг ЗАДАЧА 4 цел M,N нач ввод M ввод N пока M<>N нц если M>N то M:=M-N иначе N:=N-M кв кц вывод M кон Алгоритм содержит цикл с вложенным ветвлением. Программа на Автокоде:
Здесь уже две команды имеют метки: L10 отмечает начало цикла, L20 - конец ветвления. © И.Г.Семакин, 2001 Полный текст статьи в виде документа MS Word можно загрузить здесь. © Оформление Web-страницы Е.А.Еремин, 2001 |