close

Вход

Забыли?

вход по аккаунту

?

3235 lapchik m.p vichislitelnaya tehnika i programmirovanie

код для вставкиСкачать
М . П. Л а п ч и к
ВЫ ЧИ СЛИ ТЕЛЬН АЯ
ТЕХНИКА
И ПРОГРАМ М ИРОВАНИЕ
Министерство просвещения РСФ СР
Московский государственный заочный
педагогический институт
М. П. Л апчик
ВЫЧИСЛИТЕЛЬНАЯ
ТЕХНИКА
И ПРОГРАММИРОВАНИЕ
Учебное пособие
для студентов заочных отделений физикоматематических факультетов
пединститутов
Рекомендовано Главным управлением
высших и средних
педагогических учебных заведений
Министерства просвещения РСФ СР
МОСКВА с П Р О С В Е Щ Е Н И Е » 1987
3 /0 2 Г
& /
Л24
Рецензенты:
кандидат физико-математических наук,
доцент М Г ЗП И Г. А. Несененко;
кандидат технических наук, доцент
М ГП И им. В. И. Ленина Э. И. Кузнецов; кандидат физико-математических
наук, доцент Свердловского пединсти­
тута В. Г. Житомирский
Редактор
М Г ЗП И О. А. Павлович
А
С Щ
кар?
Пйз
•<II
УНМШ&ПС*Г7»ЗГ'**
Н&учнвя
'П•*
кс:
■~Л.&Н*К'ГГ> *»
л ,- > а
1Ю Т Г
у КО Г 6
* 89 ш\
5©СК0Г<
иЛ I I
о
ино
(ту т и
щ
Лапчнк
Вычислительная техника и программирование: Учеб. поЛ 24
собие для студенто заоч. отд-ний физ.-мат. фак. пединстиПросвещение,
М
Моск. гос. заоч. пед. ин-т.
1987.— 239 с.: ил.
.
{Ц
В пособие включены сведения о микрокалькуляторах, обшей организации и программном
обеспечении ЭВМ, а такж е элементы программирования на алгоритмическом языке Бейсик
микроЭВМ «Искра-226». Приведены краткие сведения о языке Паскаль.
„ 4309020000—745
Л —
— —— заказное
103(03)—87
Б Б К 32.973-01
Московский государственный заоч­
ный педагогический институт (МГЗПИ),
1987
I
ПРЕДИСЛОВИЕ
Задачи ускоренного социально-экономического развития стра­
ны, определенные решениями XXVII съезда КПСС, предусматри­
вают интенсификацию производства и совершенствование управ­
ления в различных отраслях народного хозяйства на основе широ­
кого внедрения микропроцессорной техники. В этих условиях не­
измеримо возрастает роль средней школы по формированию у
учащихся необходимых для последующего продолжения образо­
вания и практической деятельности элементов компьютерной гра­
мотности.
Как отмечено в Основных направлениях реформы общеобра­
зовательной и профессиональной школы, перед современной шко­
лой ставится задача «...вооружать учащихся знаниями и навыками
использования современной вычислительной техники, обеспечить
широкое применение компьютеров в учебном процессе»1. С
1985/86 учебного года во всех средних учебных заведениях введен
новый курс «Основы информатики и вычислительной техники»,
школьные кабинеты вычислительной техники оснащаются персо­
нальными компьютерами. Все это предъявляет новые требования
к компьютерной подготовке учителей, и лрежде всего тех, кто пре­
подает новый предмет. Учитель сегодня должен хорошо знать
возможности новой вычислительной техники, принципы ее исполь­
зования при решении учебных задач.
Книга является учебным пособием по первой части курса
«Программирование и вычислительная математика» для заочных
отделений физико-математических факультетов пединститутов.
Пособие содержит весь необходимый учебный материал, который
поможет студенту-заочнику в процессе его самостоятельной ра­
боты. Этой цели подчинены и содержание, и структура книги. По
каждой теме сначала приводятся основные теоретические сведе­
ния, сопровождаемые достаточным количеством упражнений, а по­
том описывается лабораторная работа с двадцатью равноценными
вариантами заданий.
Содержание пособия соответствует требованиям учебной про1 Основные направления реформы общеобразовательной и профессиональ­
ной школы: Сборник документов и материалов.— М., 1984.— С. 45.
Я
граммы курса. В него вошло описание общих возможностей
различных типов калькуляторов, в том числе программно­
управляемых моделей, а такж е основы программирования на ЭВМ.
Основной упор при этом сделан на язык программирования Бейсик,
который является входным языком целой серии микроЭВМ,
получивших в настоящее время распространение в педвузах и шко­
лах. Достаточное внимание уделяется такж е использованию одно­
го из учебных вариантов структурной алгоритмической нотации,
вошедшей в программу школьного курса информатики. В порядке
развития идей структурного программирования, которые поло­
жены в основу всего изложения, даются первоначальные сведения
о языке Паскаль.
Д ля практической реализации программы курса в условиях
сессионных занятий требуется, как минимум, комплект современ­
ных микрокалькуляторов различных типов: арифметические, инже­
нерные, программируемые (из расчета 15—20 шт. каждого типа на
поток студентов в 100 человек). Оптимальным условием является
наличие в институте типовой лаборатории вычислительной техни­
ки, в которой имеются, как минимум, микроЭВМ («Электро­
ника-60», «Электроника ДЗ-28», «Искра-226», ДВК, «Агат», «Яма­
ха» и т. п.) с соответствующим набором внешних устройств. В з а ­
висимости от конкретных условий и машинного обеспечения
характер описанных в пособии лабораторных работ, их содерж а­
ние и объем заданий могут регулироваться кафедрой.
ВВЕДЕНИЕ
КРАТКИЙ ОЧЕРК ИСТОРИИ В Ы Ч И С Л И Т Е Л Ь Н О Й ТЕХНИКИ
Человечество всегда нуждалось в массовых доступных и эф ­
фективных средствах счета. История показывает, что путь созда­
ния таких приспособлений был долгим и многотрудным. Самым
первым «счетным инструментом», вероятно, была рука человека.
«Понятия числа и фигуры взяты не откуда-нибудь, а только из дей­
ствительного мира. Десять пальцев, на которых люди учились
считать, т. е. производить первую арифметическую операцию,
представляют собой все, что угодно, только не продукт свободного
творчества разума»1. Подтверждением тому служат как имевшая
применение пятеричная система счисления (одна рука), так и при­
нятая повсеместно в настоящее время десятичная (две руки).
Начала инструментального счета. Первые счетные приспо­
собления были чрезвычайно простыми. Древнейший способ запо­
минания чисел — нанесение зарубок или использование веревки с
узелками. Деревянными палочками (бирками) с зарубками широ­
ко пользовались в средневековой Европе и России для учета
налога. Бирка при этом разрезалась на две продольные части, ко­
торые во время нанесения зарубок складывались вместе. Одна
часть бирки оставалась у крестьянина, другая — у сборщика на­
логов. В Англии, например, такой способ записи налогов просу­
ществовал до конца XVII столетия.
Простым, но достаточно эффективным приспособлением для
счета, известным уже в V в. до н. э. в Египте, Греции, Риме,
является абак. В своем примитивнейшем виде он имел ряд продол­
говатых углублений, в которые помещались какие-нибудь мелкие
предметы, например галька («галька» по-латыни са1сиП, откуда
латинское са1си1а!оге — вычислять и современные термины
«калькуляция», «калькулятор»), В основу действий абака положен
позиционный принцип построения чисел. На рисунке 1 показана
последовательность нахождения суммы 385 127 в десятичной си­
стеме счисления. Впоследствии возник целый ряд разновидностей
абака. В результате замены камешков косточками или шариками,
нанизанными на нити или прутья, возникли такие счетные приборы,
1 М а р к с К.. Э н г е л ь с Ф. Соч.— 2-е изд.— Т. 20,— С. 37
Сот. Две. Ед.
3
8
5
Сот. Две. Ед.
4
10
Сот Две. Ед.
и
12
11
2
Сот. Дес. Ед.
5
1
2
Рис. 1
как суан-пан (Китай), соробан (Япония), таблицы со счетными
жетонами (Европа). На рубеже XVI—XVII вв. появились в своей
первоначальной форме русские счеты, которые также представляют собой одно из усовершенствований абака. Суан-пан, соробан
и счеты и по сей день продолжают применяться в своих странах
при выполнении небольших по объему вычислений.
Изобретение логарифмов. Знаменательным достижением в об­
ласти усовершенствования инструментального счета характери­
зуется начало XVII в. В 1614 г. шотландским бароном Джоном
Непером (1550— 1617) был опубликован трактат «М1гШа 1одагШ шюгит сапошз ёезспр^о» («Описание удивительного канона
логарифмов»). Изобретение логарифмов позволило существенно
упростить выполнение операций умножения и деления, которые
были сведены к более простым операциям сложения и вычитания,
послужило основой для создания замечательного вычислительного
инструмента — логарифмической линейки, появление прототипа
которой относят к 1620 г. В течение трех с половиной столетий
логарифмическая линейка использовалась как незаменимый пор­
тативный инструмент для инженерно-технических расчетов. Только
появление миниатюрных электронных калькуляторов серьезно
подорвало ее положение.
Ц |Щ И
Открытие логарифмов привело к появлению математических
таблиц, позволяющих вести счет с большой точностью. В 1624 г.
профессор одного из лондонских колледжей Генри Бриггс опубли­
ковал свою «Логарифмическую арифметику», содержавшую деся­
тичные («бригговые») логарифмы с четырнадцатью знаками для
целых чисел от 1 до 20 000 и от 90 000 до 100 000. Оставшийся
пробел был вскоре заполнен Езекиилем де Деккером, голландским
землемером, который опубликовал в 1627 г. полную таблицу лога­
рифмов. Натуральные логарифмы, связанные с функцией у = е*,
появились почти одновременно с бригговыми, но значение их было
осознано позже в связи с развитием дифференциального ис­
числения.
6
Механическая эра. Первой механической счетной машиной,
получившей известность и оказавшей влияние на разработку по­
следующих образцов (в частности, благодаря использованию в ее
конструкции счетного десятичного колеса и оригинального меха­
низма переноса), была суммирующая машина, изготовленная в
1642 г. юным Блезом Паскалем (1623— 1662). Она могла выпол­
нять действия сложения и вычитания. В 1694 г. Г. В. Лейбниц
(1646— 1716) построил арифмометр, предназначенный для выпол­
нения четырех арифметических операций. В XVII—XVIII вв. ме­
ханические счетные машины изготовлялись, как правило, лишь в
нескольких экземплярах, были еще несовершенны и капризны в
эксплуатации и потому не получили широкого распространения.
Бурное развитие механической счетной техники произошло в XIX
столетии в связи с развитием промышленности и расширением
коммерческой деятельности банков. Внесли свой вклад в р азр а­
ботку и усовершенствование счетных механических машин и рус­
ские математики: В. Я. Буняковский (1804— 1889), П. Л. Чебышев
(1821 1894), А. Н. Крылов (1863— 1945). Наиболее массовое
распространение при построении счетных машин во всем мире по­
лучили идеи, которые были заложены в арифмометре, р азр а­
ботанном в 1874 г. петербургским инженером В. Т. Однером.
Прямыми потомками арифмометра Однера являлись выпускав­
шиеся в свое время массовым порядком отечественные арифмо­
метры «Феликс», а также целая серия более совершенных кла­
вишных электромеханических машин с полуавтоматическим и ав­
томатическим выполнением всех арифметических действий, в част­
ности специализированные механические счетные машины различ­
ного назначения, поражающие совершенством конструкций и вы­
зывающие глубокое уважение к их создателям. Так же как и лога­
рифмическая линейка, механические счетные приборы отступили
перед электронной вычислительной техникой.
Автоматизация вычислений. Принципиально новый этап в ис­
тории вычислительной техники начинается с создания автоматиче­
ских вычислительных машин (с программным управлением). Н а­
чало этого этапа обычно связывают с появлением в середине
XX в. электронных вычислительных машин (ЭВМ). Однако идеи и
проекты создания программно-управляемых вычислительных ма­
шин существовали задолго до этого. Уже в середине прошлого
века английский ученый, инженер и изобретатель Чарльз Бэббедж
разработал проект так называемой аналитической машины, кото­
рая могла производить сложные вычисления по заранее залож ен­
ной в ней программе автоматически, т. е. без участия человека.
Программа задавалась с помощью специальных картонных
карт с пробитыми отверстиями, а исходные числовые значения
набирались вручную. Удивительность этого проекта заключалась
в том, что он предусматривал осуществление сложнейших
функциональных связей посредством обычных механических при­
способлений: зубчатых колес, штифтов, рычагов и т. п. Машина
7
Рис. 2.
« :
~ "в* *
Бэббеджа осталась, однако, нереализованной, а многие его идеи
«переоткрывались» столетие спустя при разработке программно­
управляемых машин на электронной базе.
В 40-х годах текущего столетия было реализовано несколько
проектов электронных вычислительных машин. Среди них выде­
ляется машина ЭНИАК, построенная в 1943— 1946 гг. по проекту
Д ж . В. Моучли и Д ж . П. Эккерта (Пенсильванский университет,
С Ш А ). Интересно отметить, что это устройство содержало свыше
18 тыс. электронных ламп, полутора тысяч реле и потребляло
мощность около 150 кВт.
В нашей стране первая ЭВМ — МЭСМ (малая электронная
счетная машина) появилась в 1951 г. Ее создатель — академик
Сергей Алексеевич Лебедев, под руководством которого были р аз­
работаны в дальнейшем первые серийные отечественные машины,
такие, как БЭСМ-1, М-20 и др. К их числу относится мощней­
шая советская ЭВМ БЭСМ-6, являю щ ая собой крупное мировое
достижение в области вычислительной техники.
Потребности науки и практики вызвали стремительное разви­
тие сферы промышленного производства ЭВМ. По мере усложне­
ния логики вычислительных машин совершенствовалась их техни­
ческая база: громоздкие электронные схемы, построенные с ис­
пользованием радиоламп, были вытеснены более компактными и
надежными полупроводниковыми элементами (транзисторами и
диодами), а затем (начиная с 70-х годов) интегральными схе­
8
мами, применение которых привело к возрастанию производи­
тельности ЭВМ при одновременном уменьшении их габаритов.
Новая элементная база обеспечила возможности построения
миниатюрной вычислительной техники самого различного назна­
чения. Так появились микрокалькуляторы (М К), представляющие
собой целое семейство вычислительных машин — от самых про­
стейших, выполняющих основные арифметические действия, до
программируемых, обладающих всеми основными свойствами
больших ЭВМ. Их появление привело к вытеснению логарифмичет
ской линейки и механических машин, к забвению математиче­
ских таблиц. Сегодня МК являются неотъемлемым атрибутом
деятельности инженера, строителя, студента и школьника. Осо­
бый класс ЭВМ составляют настольные диалоговые микроЭВМ
или так называемые персональные компьютеры (рис. 2), сфера
применения которых простирается от научных лабораторий и кон­
структорских бюро до школьных компьютерных классов и области
быта.
Электронно-вычислительная техника, индустрия информати­
ки рассматриваются сегодня как один из основных ускорителей
научно-технического прогресса, повышения производительности
труда во всех сферах народного хозяйства, обеспечения потреб­
ностей советских людей.
Литература
1. Г у т е р Р. С., П о л у н о в Ю. Л. От абака до компью­
тера.— М.: Знание, 1981.
2. Д а ш е в с к и й Л. Н., Ш к а б а р а Е, А. Как это начи­
налось.— М.: Знание, 1981.
3. Е р ш о в А. П. Человек и машина.— М.: Знание, 1985.
4. К о р о л е в Л. Н. Развитие ЭВМ и их математического
обеспечения.— М.: Знание, 1984.
Глава I
МИКРОКАЛЬКУЛЯТОРЫ
1.1. О Б Щ И Е С В Е Д Е Н И Я
По функциональным возможностям выпускаемые в настоящее
время микрокалькуляторы можно подразделить на три типа:
1) арифметические, 2) инженерные (непрограммируемые) и
3) программируемые.
Арифметические микрокалькуляторы «Электроника» моделей
БЗ-14, Б3-23, БЗ-26, БЗ-ЗО, СЗ-22, МК-44 и др. наиболее просты
в эксплуатации и предназначены для выполнения обычных
арифметических расчетов. Их основное назначение — выполне­
ние четырех арифметических действий.
Инженерные микрокалькуляторы предназначены для научнотехнических расчетов. Они имеют встроенные программы, что
позволяет с их помощью не только выполнять арифметические
операции, но и автоматически вычислять значения основных
элементарных функций. К этому типу микрокалькуляторов
относятся следующие модели «Электроники»: БЗ-18, БЗ-19,
Б3-32, СЗ-15, БЗ-Зб, Б3-38, МК-41, МК-45 и др.
Программируемые микрокалькуляторы могут автоматически
выполнять уже целую серию заранее составленных команд —
программу, введенную в память МК с помощью клавиатуры.
Несмотря на свои миниатюрные размеры, они принципиально
не отличаются от больших программно-управляемых ЭВМ.
К программируемым МК относятся следующие модели «Электро­
ники»: БЗ-21, Б3-34, МК-46, МК-54, МК-56 и др.
Микрокалькулятор представляет собой портативный вычисли­
тельный прибор, имеющий два-три десятка клавиш (кнопок) и
световой индикатор (дисплей) для чтения результатов. В состав
МК входит сложное счетно-решающее устройство, содержащее
десятки тысяч функциональных элементов и соединений. Числа
в процессе вычислений размещаются в особых устройствах
памяти — регистрах. Схема основных взаимосвязей между
клавиатурой, индикатором и дополнительными регистрами памяти
изображена на рисунке 3.
На индикаторе всегда изображено то число, которое в данный
10
Индикатор ( д и сп лей )
К л а Виши
пульта
управления
Регистр индикаиии(Х)
Рабочий регистр ( У)
Рис. 3
момент хранится в регистре индикации (X). Число, набираемое на
клавиатуре, попадает в регистр X и тут же высвечивается на
индикаторе. Регистр X выполняет роль одного из операционных
регистров, роль другого операционного регистра у многих моде­
лей МК выполняет особый рабочий регистр У. Числа в регистр У
попадают из регистра X (например, после нажатия операционных
клавишей сложения, умножения и др.). Память МК включает
также и дополнительные регистры памяти (П ), которых у
программируемых МК может быть более десятка, а у простейших
и инженерных калькуляторов, как правило, от одного до трех.
Одно из назначений дополнительных регистров — хранить про­
межуточные результаты вычислений, что позволяет производить
довольно сложные вычисления без выписывания результатов
промежуточных действий на бумагу.
Контрольные
вопросы
1. Чем различаются основные типы микрокалькуляторов:
арифметические, инженерные и программируемые?
2. Где хранятся числа в МК в процессе вычислений?
3. Как попадают числа в регистр X? в регистр У?
4. Содержимое какого регистра всегда отражается на
индикаторе?
1.2. СПОСОБЫ П РЕ Д С Т А В Л Е Н И Я ЧИСЕЛ
Микрокалькуляторы оперируют числами, вводимыми в память
и отображаемыми на индикаторе в десятичной системе счисле­
ния. Будем считать для определенности, что МК может работать
с 8-разрядными десятичными числами. Если учесть еще один
разряд для изображения знака числа, то на бумаге разрядную
сетку МК можно изобразить так, как показано на рисунке 4.
В знаковом разряде индицируется только знак « — », при ото­
бражении положительных чисел этот разряд остается свобо­
дным.
Д ля отделения целой части числа от дробной используется
десятичная запятая (или точка). В большинстве случаев запятая
при изображении числа на индикаторе размещается в том же
I1
Знак числа
I
Разряды
Рис. 4
числа
Рис. 5
разряде, что и цифра, за которой запятая следует1. Так, например,
число —2,037 на индикаторе МК, разрядная сетка которого
изображена на рисунке 4, будет изображаться так, как показано
на рисунке 52.
:
В микрокалькуляторах используются в основном два способа
представления чисел: с естественным размещением запятой и в
форме с так называемой плавающей запятой.
Естественная форма представления чисел наиболее распрост­
ранена в «карманных» МК. В этом случае запятая в изображении
числа всегда присутствует явно (как, например, на рис. 5), может
располагаться в любом цифровом разряде сетки, а ее место опре­
деляется или при вводе числа с клавиатуры, или в результате
выполнения операции. Легко видеть, что в МК с 8-разрядной
сеткой в форме с естественным размещением запятой могут быть
представлены лишь числа от ± 10~7 до ± ( 1 0 8— 1). Этот диапазон
вполне обеспечивает возможность решения многих практических
задач. Если в результате выполнения операции получится число,
меньшее по модулю, чем 10~7, то на индикаторе МК с естествен­
ной формой представления чисел высветится нуль, значащие
разряды, не вошедшие в разрядную сетку МК, пропадают.
Такие числа называют машинным нулем. Если в результате
получится число, большее по модулю, чем 108— 1, загорится
сигнал переполнения — специальный знак в первом слева (знако­
вом) разряде индикатора.
Наиболее совершенные модели МК используют плавающую
форму представления чисел. В этом случае число автомати­
чески представляется в виде М ’ Ю*’, где М — мантисса, р —
порядок числа, т. е. показатель степени, в которую нужно воз­
вести 10, чтобы, умножив результат на мантиссу, получить данное
число. Д ля изображения знака и величины порядка в разрядной
сетке таких МК имеются специальные разряды — один знаковый
и два для изображения величины порядка (рис. 6). Значения
мантиссы в МК удовлетворяют условию Г ^ М с 10. Так, на­
пример, число 0,000327 при представлении в МК с плавающей
запятой будет преобразовано к виду 3 ,2 7 -10- 4 . Максимальная
1 В некоторых моделях МК зап ятая при отображении на индикаторе
занимает полный разряд, что уменьшает на единицу количество умещаемых в
разрядной сетке знаков дробного числа.
2 Иногда число на индикаторе МК занимает не правые, как изображено
на рисунке 5, а левые разряды сетки, однако это не имеет в данном случае
принципиального значения.
12
Знак числа
Знак порядка
величина порядка выражается двузначным числом 99. Это дает
огромный диапазон представления чисел: от ± 1 0 _ " до
± 9 ,9 9 9 9 9 9 9 -1 0 ". К числу микрокалькуляторов с плавающей
формой представления чисел относятся ориентированные на
среднюю школу калькулятор МКШ-2, инженерный калькулятор
МК-41 и др.
Контрольные
вопросы
1. Какие два способа представления чисел используются в
микрокалькуляторах?
2. Каков диапазон представления чисел с естественным раз­
мещением запятой в МК с 8-рёзрядной сеткой? Может ли такой
микрокалькулятор хранить величину заряда электрона (е —
= 1,6022-10 “ ' 9)?
3. Какие числа называют машинным нулем?
1.3. ВЫ ЧИСЛЕНИЯ
НА
АРИФМЕТИЧЕСКИХ
МИКРОКАЛЬКУЛЯТОРАХ
Технические особенности эксплуатации микрокалькуляторов
(обеспечение электропитанием, подготовка к работе и т. п.) не
сложны и описываются в руководствах по эксплуатации. К
тому же общие принципы вычислений с помощью МК одинаковы:
дело сводится к последовательному
нажатию клавишей с цифрами и
знаками операций и считыванию ре­
зультатов,
которые
практически
мгновенно высвечиваются на инди­
каторе. Различные МК во многом
ЭЛЕКТРОНИКА БЗ-26
схожи и по внешнему виду. На
рисунке 7 изображен МК арифмети­
ческого типа модели «Электрони­
ка БЗ-26». Клавиатура МК состоит
из цифровых и операционных кла­
4
виш, которые обычно окрашиваются
в разные цвета.
1
п+
Различные
микрокалькуляторы
О
простейшего
(арифметического)
типа обладают множеством схожих
ч
функциональных возможностей. К
Рис. 7
МК этого типа принадлежит и целый
13
9
а=г
ю
к
14
ряд портативных калькуляторов, допускающих автономное элект­
ропитание, и группа арифметических МК настольного типа с пита­
нием от сети переменного тока (таблица 1.1). Рассмотрение наибо­
лее типичных вычислительных функций простейших МК будем вес­
ти применительно к некоторому общему случаю, при необходимос­
ти для иллюстрации будут использоваться конкретные модели МК.
вод чисел. При вводе чисел используются цифровые клавиши,
клавиша с десятичной запятой (точкой), а при вводе отрицательных чисел
еще и клавиша
Так, при вводе числа
34,085 последовательно нажимаются клавиши:
Последовательность появления знаков на индикаторе при выпол­
нении этого упражнения описана в таблице 1.2.
Д л я присвоения числу на инди­
Таблица 1.2
каторе знака « — » или для изменения
знака этого числа на противоположныи
нажимается
Ввод
клавиша
Как уже отмечалось выше, отобра­
жаемое на индикаторе МК число
одновременно размещается в опера­
ционном регистре X. Гашение числа
на индикаторе (как и в регистре X)
осуществляется однократным н а ж а ­
тием клавиши сброса
Индикатор (X)
3
3
34
□
34,
у
Многие
34,0
0
МК имеют клавишу
нажатие ко­
34,08
8
торой производит обмен содержимым
34,085
между регистрами X и V: однократ­
ное нажатие этой клавиши меняет
содержимое регистров X и V местами,
при повторном ее нажатии содержимое этих регистров
восстанавливается в первоначальном виде. Д ля гашения содер­
жимого регистра V в некоторых МК (например, в Б3-23) требуется
5
двукратное нажатие клавиши сброса
первым нажатием
гасится содержимое индикатора (т. е. X), вторым — нуль
индикатора записывается в У. Следует знать, что содержимое
всех регистров гасится при отключении МК от сети. Впредь будем
предполагать, что перед началом счета операционные регистры X
и У очищены.
•Выполнение арифметических действий. Основное назначение
арифметического МК — это выполнение операций сложения,
вычитания, умножения и деления. Д ля выполнения каждого из
15
И
этих арифметических действий над двумя десятичными числами
нужно:
■
1. Ввести первое число (оно высвечивается на индикаторе).
2. Н аж ать одну из клавиш
ГР
|—
||х
{-г- | .
3. Ввести второе число (при этом первое число с индикатора
исчезает, на нем высвечивается второе число).
4. Н аж ать
клавишу
|— |
(на
индикаторе
высвечивается
результат операции).
' :
П р и м е р 1.3.1. Д ля вычисления суммы 13,7 + 0,9 нужно
выполнить следующую последовательность действий:
7
+
В будущем при выписывании последовательности клавиш для
решения на МК вычислительных задач не будем особо выделять
клавиши ввода чисел. Это сделает вычислительные программы
для МК более' компактными и наглядными. Так, программа
выполнения приведенного выше задания будет иметь вид:
0,9
13,7
После нажатия клавиши | = | на индикаторе высветится отПри выполнении двухместных операций, каковыми являются
арифметические операции, участвуют оба операционных регистра
МК: регистр X и регистр У. Д л я лучшего понимания возможностей
микрокалькуляторов полезно знать последовательность пересылок
чисел-операндов в ходе выполнения операции. После ввода пер­
вого числа оно размещается в регистре X (и соответственно
высвечивается на индикаторе). При нажатии одной из клавиш
Ц
Ц
содержимое
Ш В Е
регистра X пересылается в регистр
У, причем содержимое X остается без изменения. При введении
второго числа оно размещается в X, а его прежнее содержимое
стирается.
При нажатии
на клавишу
м и крокал ькул ятор
производит подготовленную операцию и записывает ответ в
регистр X (индикатор), а в регистр У засылается второе число1.
Зная порядок перемещения чисел в памяти М К в ходе выполнения операции, опытный вычислитель может использовать эти
числа в последующих вычислениях без дополнительного ввода их с
клавиатуры, чем достигается экономия времени и повышается
О
1 У некоторых моделей МК в регистр У при этом засылается, как и в X,
результат выполненной операции.
16
эффективность вычислений. Содержимое операционных регистров
X и V при выполнении программы 13,7 |Щ 0,9 | = | на МК БЗ-26
приведено в таблице 1.3.
Пользуясь клавишей |« -»|,мож-
Таблица 1.3
но наблюдать за содержимым
регистров X и У в процессе
счета.
Выполнение цепочки опера­
ций. Как показывает рассмот­
ренный пример, выполнение ус­
тановленного действия обеспе­
чивается нажатием клавиши
, в этом, собственно, и состоит ее назначение. Однако
в МК этим свойством обычно
ные
обладают
если
кл
и
вместо
операционклавиши
[+ ]•□ • 0 - Е 1
в рассмотренном примере нажать одну из операционных
клавиш, то на индикаторе высветится тот же результат, что и
в предыдущем случае, но, кроме этого, МК будет подготовлен к
выполнению над полученным результатом арифметической
операции, клавиша которой была нажата последней. Это свойство
, Ц (его называют их вторым назначе­
клавиш
нием) позволяет производить цепочку арифметических действий,
не выписывая промежуточных результатов и экономя число
нажатий клавиш.
П р и м е р 1.3.2. Пусть результат рассмотренного выше дей­
ствия сложения нужно умножить на 8,31, т. е. выполнить вы­
числение: (13,7-(-0,9)X 8,31. З а д а ч а решается по программе
13,7
0,9
В этом случае нажатие клавиши
8,31
производит установленную
ранее операцию сложения и подготавливает МК к умножению.
Это умножение и осуществляется затем нажатием клавиши
. Содержимое регистров X и V в ходе выполнения этого
упражнения дано в таблице 1.4.
Аналогичным образом могут вычисляться значения многих ариф­
которых порядок выполнения действии
метических выражении,
соотвётскгрущ. яорядку^их написания. К таким выражениям
относятс^знапример, вьфэжения типа (а ШЩ с, ( а ± 6 ) / с ± ^ и др.
Таблица 1.4
Таблица 1.5
X
Ввод
У
9,6
9,6
0
■
9,6
9,6
0,35
0,35
9,6
□
9,25
0,35
51,8
н
п
51,8
9,25
9,25
•
51,8
9,25
5,6
А что делать, если нужно вычислить выражение, порядок
действий в котором не совпадает с порядком их написания, а некоммутативность последней предусмотренной операции не позво­
ляет преобразовать выражение к одному из указанных выше
вариантов? К ним относятся, например, следующие три простей­
шие выражения, включающие некоммутативные операции вы­
читания и деления: а / ( 6 ± с ) , а — Ьс, а — Ь/с. Что касается двух
последних выражений, то они допускают желаемое преобра­
зование: — (Ь-с)-\-а, — (Ь/с)-\-а. Теперь задача может быть ре­
шена с использованием клавиши
/
нажатие которой из­
меняет знак числа в регистре X на противоположный. Возьмем
для примера выражение 17 — 2 - 5 = —(2*5)-4-17. Вычисление
обеспечивается программой
2
5
17
Прежде чем выполнить сложение с числом 17, здесь устанав­
ливается знак « —» перед числом на индикаторе,
Однако
каждом из трех указанных случаев легче избежать
выписывания промежуточных результатов на бумаге, если
воспользоваться клавишей
П р и м е р 1.3.3. Пусть надо вычислить значение выражения
51,8/(9,6—0,35). V
'
' I
Н
Ц
Сначала нужно выполнить вычитание, а потом деление. Записи
промежуточного результата можно избежать, если перед выполне­
нием команды деления поменять содержимое регистров X и V.
Вычисление обеспечивается программой
9,6 0 0 , 3 5 [ Т | 5 1 , 8 Р ~ [ Р ] .
Техника вычислений видна из таблицы 1.5.
Значительно упрощается выполнение цепочных вычислений в
МК, имеющих дополнительные регистры памяти (П ). При наличии
одного дополнительного регистра, как, например, в БЗ-26
стирание
(см. рис. 7), на клавиатуре имеются клавиши:
прибавление числа, храня­
содержимого регистра П;
щегося в регистре X (индикаторе), к содержимому регистра П;
вычитание из содержимого регистра П числа, записанного в регистре X;
— вызов числа из регистра П в регистр X.
Этот несложный аппарат позволяет избегать выписывания
промежуточных результатов при выполнении сложных цепочных
вычислений.
П р и м е р 1.3.4. Вычислить значение выражения (аН-б)Х
Х (с+с?) с использованием дополнительного регистра памяти.
Программа:
ип
0|П+
РПи 0
Р1
|сп 1н 0 и
с \
Некоторые из более поздних моделей МК арифметического
типа имеют по нескольку дополнительных регистров памяти,
использование которых предоставляет вычислителю большие воз­
можности для хранения результатов промежуточных действий
или даж е позволяет автоматически накапливать их. Рассмотрим
для примера некоторые особенности настольного микрокаль­
кулятора арифметического типа «Электроника МК-44», распо­
лагающего тремя дополнительными регистрами памяти. Клавиату­
ра этого МК изображена на рисунке 8.
Работа с дополнительными регистрами памяти П1, П2 и ПЗ
обеспечивается двумя левыми вертикальными рядами клавиш.
Запись содержимого регистра X в один из трех дополнительных
регистров памяти производится
лл
клавишей
с последую­
щим нажатием одной из цифро­
СП1
вых клавиш
П1
или
смотря по тому, в какой из
регистров - - П 1, П2 или ПЗ —
надлежит загисать содержимое
регистра X. Аналогично при
вызове содержимого одного из
трех регистров П в регистр X
ш в
Й Ш :В Ш 13
ЁЕ 0 Ш Ш В Ш
ГЙ+] [ГТ2+
И
ППЙЕ
Рис. 8
19
нажимается одна из клавиш
после нажатия клавиши
| 1 |, "[ 2 [, | 3 | , определяющая номер регистра П, из которого
вызывается информация.
Стирание содержимого любого из трех дополнительных
регистров П можно произвести пересылкой нуля из регистра X с
о
помощью клавиш
и одной из клавиш
□
В-
. Д л я стирания содержимого регистров П1 и П2 имеются
специальные
клавиши
и
и
Нажатием
клавиш
содержимое регистра X добавляется к содержи­
мым регистров П1 и П2, а с помощью клавиш
П1
и
содержимое регистра X вычитается соответственно из содержимо­
го дополнительных регистров П1 и П2.
П р и м е р 1.3.5. Вычислить значение выражения а-\-Ьс — Л/е.
Используем регистр П1. Программа может иметь вид:
а
1 Ъ
с1
П1
В 1
П-^Х
1
В МК-44 предусмотрен такж е режим автоматического накопления, который устанавливается специальным переключателем.
У
В этом режиме при каждом нажатии клавиши | = | получаемый
результат (содержимое регистра X) автоматически прибавляется
к содержимому третьего дополнительного регистра памяти.
П р и м е р 1.3.6. В режиме автоматического накопления
значение выражения вида ах Щ Ьу §1 сг может быть получено по
программе (сначала производится очистка регистра ПЗ)
3 а
Ь
У
3.
Работа с константами. Представление о вычислительных
возможностях простейших МК арифметического типа будет не­
полным, если вычислитель не знаком с особым режимом работы
МК, называемым режимом констант. Режим констант вводится
автоматически в большинстве моделей МК, а сущность его
состоит в том, что при выполнении двухместной арифмети­
ческой операции после нажатия клавиши | = | МК запоминает
выполненную при этом операцию и число, попавшее в регистр V
(оно становится константой). В обычных условиях это не озна­
чает ничего особенного, однако если вслед за этим повторно
20
о
то произойдет выполнение хранящейся
нажать клавишу
в памяти МК операции над содержимым индикатора и констан­
той. Использование константы позволяет существенно экономить
время вычисления выражений, в которых один операнд повторя­
ется, так как отпадает необходимость его повторного ввода.
Используя режим констант, важно знать, какой из двух
операндов — первый или второй — в конкретной модели МК оста­
ется в памяти после выполнения двухместной операции. В
большинстве моделей МК (к ним относятся арифметические
МК БЗ-23, БЗ-24, БЗ-26, МК-44 и др.) константой становится
второй операнд.
П р и м е р 1.3.7. Рассмотрим выполнение программы
2
5
на МК БЗ-26. Последовательность действий приведена
лице 1.6. После первого нажатия клавиши
таб ­
индикаторе
появляется первое произведение (10), а предыдущее содержимое
индикатора — второй операнд 5 — переходит в регистр V и стаО
новится
Последующие
константой.
нажатия
клавиши
домножают содержимое X на константу, что дает последовательно
50 и 250.
Рассмотренный пример показывает, что троекратное нажатие
данном случае привело к возведению в третью
клавиши
степень второго множителя, т. е. было вычислено выражение
2; 53= 2 5 0 .
В том, что константой становится в данном случае именно
второй операнд, легко убедиться, переставив операнды местами:
5
2
Таблица 1.6
Выполнение этой программы
даст совершенно другой ре
зультат:
з
40,
5-2
не­
Важно заметить, что
которых моделях МК арифмети­
ческого типа константная авто­
матика срабатывает не только
при
но
нажатии
и
при
клавиши
нажатии
клавиш
. В этом
21
смысле выполнение, например, программ
2
3
2
3
и
даст одинаковый результат/
Отметим два поучительных примера простейших вычислений,
основанные на использовании константной автоматики.
П р и м е р 1.3.8. Возведение в целую положительную степень.
Пусть требуется вычислить а", где п Щ
Вычисление обес­
печивается программой
а
На МК, у которых режим констант вводится также и клавишами
арифметических действий, программа может быть более удобной:
а
Таблица 1.7
X
Ввод
12
V
12
0
12
12
п раз
Рассмотрим для примера вычисление 125 Программа будет
иметь вид:
12
144
X
X
12
1728
12
20 736
12
248 832
12
Ход вычислений виден из т а б ­
лицы 1.7.
П р и м е р 1.3.9. Вычисле­
ние обратной величины числа.
Клавиатура
некоторых
арифметических МК имеет кла­
вишу | Т / ^ , с помощью которой
Таблица 1.8
Ввод
5
□
□
□
22
X
V
5
0
*5
5
1
5
0,2
5
обратная величина находится
автоматически по программе
Если такой клавиши
нет, то первое, что приходит
в голову, это выполнить про­
грамму
1
Способ вычисления неудобен
из-за необходимости набирать
на клавиатуре два числа (1 и х ) . Это неудобство особенно не­
приятно, если х уже имеется в регистре X (например, как результат
предыдущих вычислений). Более рационально задача может быть
решена программой
Неожиданность приема объясняется константной автоматикой.
Приводим для примера ход вычислений при нахождении значения
1/5 (табл. 1.8).
ся 1, что и дает при последующем нажатии этой клавиши число,
обратное 5.
Контрольные вопросы
1. Какие клавиши используются для ввода чисел на индикатор?
2. Каким способом очищаются операционные регистры X и V?
3. Каково назначение клавиши
4. Какова последовательность действии вычислителя при
ыполнении на МК арифметических операций сложения, вычита­
ния, умножения и деления?
5. Какова последовательность перемещения чисел в опера­
ционных регистрах X и У в процессе выполнения арифметической
операции?
6. В чем состоит второе назначение клавишей
7.
В чем заключается режим констант и как он может быть
использован в вычислениях?
Упражнения
1. Заполнить таблицу 1.9, проследив с помощью клавиши
за содержимым регистра У.
На основании таблицы сделать вывод о том, какое из чисел
помещает МК в регистр У при нажатии клавиши
2. Составить программы вычисления значений выражений
вида:
а) { х ± у ) г;
в) ху/г;
б) { * ± у ) /г \
г) ( х ± у ) г ± и .
3. Составить программы вычисления значений выражений,
23
Таблица 1.9
а) х — У ' 2 \
б) х — у /г .
4. Составить программы вычисления значении выражении:
1)
используя
клавишу
■*-»
2)
регистр памяти:
а) х /(у + г );
в) х — уг\
б) х — у /г \
г) х — у / ( г — и);
используя
дополнительный
Ч
д) х — ( у + г ) / и — о;
е) ( x / ( у г + и ) — V)/у
5. Заполнить таблицу 1.10, проследив с помощью клавиши
за содержимым регистра У.
Таблица 1.10
Ввод
На основании таблицы сделать вывод о том, какой из операнЮВ
первый или второй — становится в данном МК константой.
6. Составить программы вычисления значений выражений,
учитывая константную автоматику:
3x4
а) а 36;
б) х / у ъ;
в) а Ь
24
7. По заданной программе определить выражение, значение
которого вычисляется:
1.4. М ИКРОК АЛЬК УЛЯ ТОРЫ И НЖ ЕНЕРН ОГО ТИПА
Рассмотрение вычислительных возможностей микрокалькуля­
торов инженерного типа (см. таблицу 1.11) начнем с модели
«Электроника Б З -18» — первого наиболее массового отечествен­
ного образца МК, предназначенного для научно-технических
расчетов, Именно на примере этой модели МК широкие круги
пользователей смогли впервые реально ощутить небывалый
уровень достижений в области портативной вычислительной
техники. Изготовленная массовым тиражом «Электроника БЗ-18»
вместе со своими модификациями БЗ-18А и БЗ-18М и сейчас
еще имеет широкое применение у вычислителей.
Клавиатура этого микрокалькулятора изображена на рисун­
ке 9. Если судить по надписям на клавишах, МК БЗ-18 обладает
всеми возможностями рассмотренного выше арифметического МК.
Кроме этого, в них предусмотрено непосредственное вычисление
натуральных и десятичных логарифмов,
антилогарифмов,
тригонометрических и обратных тригонометрических функций,
корней, степеней и обратных величин для любых действительных
чисел (см. надписи над клавишами на рисунке 9). Характерной
для многих моделей инженерных МК особенностью является
каждую клавишу для выполнения двух операций — в соответ­
ствии с ее прямым назначением, обозначенным на самой клавише,
а такж е согласно назначению, обозначенному над клавишей.
В обычном режиме каж дая клавиша используется в соответствии
с обозначением, сделанным на самой клавише. При желании
использовать клавишу для выполнения функции, обозначенной
нажинад клавишей, с
устанав
мается клавиша
ливающая режим совмещения.
Снятие режима совмещения
осуществляется клавишей
При изображении вычисли­
тельных программ с помощью
клавиш мы будем использовать
принятое раньше их обоэначе-
Рис. 9
25
I
Таблица
женсрные калькуляторы
4 арифметических действия
изменение зн ака числа,
действия с константой
Вычисления с применением скобок
Обмен содержимым операционных
регистров
л /^ + 7
Т ригонометрические
(прямые и обратные)
в радианах
в градусах
в градах
Решение системы линейных уравнений
с двумя неизвестными
Решение квадратного уравнения
Число л
Факториал п\
Запись
Сложение
Вычитание
Умножение
Деление
26
С автономным источником питания
( малогабаритные)
1.11
Настольные
ние — квадрат с вписанной внутри функцией — независимо от
того, изображена ли эта функция на самой клавише или над нею.
Ввод данных. Ввод чисел в инженерных МК производится
по тем же правилам, что и в простейших калькуляторах. Если
при
этом
имеется
(данные
клавиша
восстановлены),
то ею можно воспользоваться для исправления ошибочно введен­
ной последней цифры. Пусть вместо 3,14 ошибочно введено 3,17.
Исправление делается так:
РППЕН
Клавишами
Р
СР
4.
ДВ устраняется ошибочно набранная цифра 7,
снимает режим совмещения и позволяет проклавиша
должить ввод цифр. Разумеется, подобную процедуру имеет
смысл проделывать лишь в том случае, когда ошибка возникает на
позднем этапе ввода числа с большим количеством знаков.
Клавиатура инженерных МК имеет обычно специальную кла­
вишу для ввода числа я, работающую или в прямом режиме,
или в режиме совмещения. Так, в МК БЗ-18 вызов на индикатор
в ы
ыполнение арифметических действий. Наряду с регистрами X
и У инженерные МК имеют дополнительные регистры памяти
(П ), что позволяет уменьшить или совсем избежать записей
промежуточных результатов в цепочках арифметических дейст­
вий. В модели МК БЗ-18 имеется один дополнительный регистр
ре­
памяти. Пересылка числа из регистра X (индикатора)
числа из регистра П на индикатор — командой
.И в
том и в другом случае стирается прежнее содержимое регистра,
осуществляющей обмен содержимым регистров X и У, команда
производит перестановку содержимого
регистров
X и П. Взаимодействие регистров X, У и П с помощью указанных
команд в МК БЗ-18 показано на рисунке 10. Стирание содержимого
1
регистра П производится командой ~С~Ц Р 1 ЗАП
Рассмотрим пример арифметического вычисления с исполь­
зованием регистра П.
П р и м е р 1.4.1. Пусть требуется найти значение выражения
2,б - 3 ,7 + 8,1-0,9.
27
*
Регистр П
Рис. 10
Если регистры
программой
памяти
3 '7 н
очищены,
и
вычисление обеспечивается
ЗАП | 8,1
ип
0 0
Движение чисел в регистрах в ходе вычислений показано в
таблице 1.12.
4
Таблица 1.12
У
П
Ввод
X
2,6
2,6
0
0
0
2,6
2,6
0
3,7
3,7
2,6
0
0
9,62
3,7
0
Г Г И за п 1
9,62
3,7
9,62
8,1
8,1
3,7
9,62
0
8,1
8,1
9,62
0,9
8,1
9,62
7,29
0,9
9,62
7,29
7,29
9,62
9,62
7,29
9,62
16,91
9,62
9,62
0,9
п
ы
□ 0
0
Микрокалькулятор
БЗ-18
имеет
клавиши
| п + |,
|П —
| П + *2 |? с помощью которых регистр П можно использовать
28
' -
в качестве
сумматора
для
накопления
результатов.
К оманды
осуществляют соответственно прибавление к содержимому
регистра П числа на индикаторе, вычитание из содержимого П
числа на индикаторе, прибавление к содержимому П квадрата
числа на индикаторе. Использование этих клавиш позволяет
вести вычисления с одновременным накоплением результатов.
П р и м е р 1.4.2. Выражение вида
Х\Х2-\~У\У2 — 2 122
может быть вычислено по программе
* Е Ь 0
В [
ЗАП I у\
[х ~|*/2 Р | [?Ц п
+
1г| 0 22
В В В В 1Й ]
П р и м е р 1.4.3. Пусть надо вычислить значение выражения
„ а 2 4- 62 + с2.
Задача решается программой
а [ё~11п+*2\ь Р 11п+ х81с ПН1п+*
2
Вычисление значений выражений, содержащих элементарные
51 п
х, со&х,
1/х на МК БЗ-18 надо ввести х на индикатор,
затем последовательно нажать клавишу | г | и клавишу, над
которой написано название нужной функции. Например,
вычисляется следующим образом:
х
Вычисляя значение функции ху, МК использует представление
поэтому у может быть произвольным, но х обязательно должен
быть положительным. Д ля получения л? на МК БЗ-18 выполняет­
ся программа
Д ля
вычисления значений углов
пользуются
клавишей
(агсзш х, агссоз х, агс!§ ■*)
агс : вводят на индикатор значение
29
аргумента х, затем нажимают клавиши
клавиш
и одну из
. Вычисления с тригонометрическими
функциями обычно могут вестись в двух режимах — для значе­
ний аргумента, выраженного в градусной или радианной мере.
Для установки того или иного режима на передней панели МК
имеется в этом случае специальный переключатель «град/рад».
Примеры простейших вычислений с использованием функций
приведены в таблице 1.13.
Таблица 1.13
Выражение
ып 98°
«град/рад»
Программа
Ответ
«град»
«
С05 0,6
«рад»
□
0.6 | Р
0.990268
и
I |С05 |
у 1509
150.9 [ 7 ~ ] [ 7 “|
2,6м
и
□
0 З Д
0,825336
12,284136
0
37,74834
Р 1
56,09873
а г е з т 0,83
«град»
о .» Г Н
а г с з т 0*83
«рад»
0,83 ( р" | | * г с | | | щ
сое 79° 18'
«град»
Р П
|
0,979107
0,190809
□
«
•
□
-
□
в
В тех случаях, когда положение переключателя «град/рад»
безразлично, в соответствующей графе таблицы проставлен
прочерк.
При вычислении сложных выражений, содержащих элементар­
ные функции, для запоминания промежуточных результатов
можно использовать регистр П. Дело, однако, осложняется тем,
что при вычислении на МК значений элементарных функций
(кроме -уж и 1/ х) используется регистр X. Это обстоите
принуждает перед каждым вычислением элементарной функции
предыдущий промежуточный результат пересылать в регистр П,
что удлиняет процесс счета (как было отмечено выше, это не
относится к вычислениям функций \ х н 1/ х) .
П р и м е р 1.4.4. Пусть надо вычислить значение
8.3
у37.9
дача решается программой
8,3 [ Т ] 3 7 ,9 Щ Е П Е ]
30
<0твет- 5.3482129.)
.
За-
Пример
ыражения
1.4.5. Для
вычисления
аналогичного по виду
-гп" ^ — потребуется уже иная по характеру про­
грамма:
° ’8 4
[~П1а1п IРНIЗАП10,6 0 0 ЕЁ1Е 1
(Ответ. 0,8057552.)
Заметим, что в данном случае можно составить более короткую
программу, если воспользоваться клавишей
0,84 в г 5Ш1 Е ] о . б
Впрочем, во многих случаях при вычислении сложных выражении
с функциями на МК с ограниченными возможностями запомина­
ния целесообразнее выписать промежуточный результат на бума­
гу, вместо того чтобы терять время на обдумывание и реализа­
цию чрезмерно хитроумной программы. Последнее оправдывается,
пожалуй, лишь при неоднократном использовании таких программ
для различных исходных данных.
Последующее совершенствование функциональных свойств
инженерных микрокалькуляторов привело к реализации новых
дополнительных возможностей: расширение числового диапазона
путем удлинения разрядной сетки и введения плавающей
формы представления чисел; увеличение числа дополнительных
регистров памяти; исключение режима совмещения клавиш,
что экономит время вычислителя, но приводит к расширению
клавиатуры; введение приоритета операций, а также скобок,
регулирующих порядок выполнения действий, что существенно
облегчает производство цепочных (или, как говорят иногда,
смешанных) вычислений. В той или инои мере перечисленные
возможности реализованы на разных моделях современных
микрокалькуляторов инженерного типа, таких, как МКШ-2,
МК-41, МК-45 и др. Рассмотрим более подробно характерные
особенности одного из них — настольного микрокалькулятора
«Электроника МК-41».
Микрокалькулятор МК-41 имеет 14-разрядный индикатор,
предусматривающий два режима представления чисел — с
естественным размещением запятой и с плавающей запятой
(см. п. 1.2). Левый крайний разряд, как обычно, предназначен
для изображения знака « — » отрицательного числа (знак «-)-»
не высвечивается). Д ля изображения значащей части числа
используются следующие десять разрядов индикатора, последние
три разряда в режиме с естественным размещением запятой
не задействуются. Отсюда следует, что этот режим допускает
работу с числами из довольно-таки внушительного диапазона:
от Н М ! До ± ( Ю 10— 1).
Д ля работы с числами, выходящими из указанных границ,
31
Знак порядка
Знак числа
Мант
I
—
Г
2,
3 \1
4
и с с а
а-------------
Порядок
---------------------------------------
5 \ О \1
\ 9 \ 5
\ 2
1
3
Рис. 11
используется представление чисел в форме с плавающей запятой.
ртом случае десять разрядов, вмещающих значащую часть
числа, используются
изображения мантиссы, а следующие
три — для изображения знака и не более чем двузначной вели­
чины порядка (на рисунке 11 показан пример изображения
на индикаторе МК-41 числа —2,314501952X IО13; знаковый р а з­
ряд порядка не занят, потому что, как и при изображении
знака самого числа, знак « + » не высвечивается). Очевидно,
что использование плавающей формы представления чисел сильно
расширяет формальный диапазон их представления; технические
возможности калькулятора допускают оперирование с 10-разрядными положительными и отрицательными числами в диапазоне
—99
99
от ± ю " до
10
ВЦ ^ _
Клавиатура МК-41 работает без режима совмещения и имеет
36 клавиш (см. рис.
на передней панели размещен такж е
переключатель «град/рад».
Д ля »1> ода чисел используются цифровые клавиши от
до
м
клавиша десятичнои запятой
знака
и клавиша
ввода
порядка
клавиша
изменения
. При вводе
числа в форме с плавающей запятой после ввода мантиссы
нажимается клавиша
и цифры порядка. Если порядок
отрицателен, нажимается клавиша
Рис. 12
(или сразу после
клавший
или
после набора первой или второй цифры
порядке).
П р и м е р 1.4.6. Д ля ввода на индикатор МК-41 числа,
изображенного на рисунке 11, клавиши можно нажать в следую­
щем порядке:
2
□
|3 1 4 5 0 1 9 5 2 | / - /
1
3
1ВП 1
Следует заметить, что в МК-41 при вводе отрицательной мантиссы
следует
знак « — » не может вводиться первым: клавишу
нажимать после любой по порядку цифры мантиссы. Для
гашения содержимого индикатора в МК-41 имеется специаль­
ная клавиша
ею можно пользоваться, в частности, при
исправлении ошибки ввода путем повторного набора числа.
Как было отмечено выше, разрядная сетка МК-41 вмещает
10-разрядные числа. Не всегда, однако, в вычислениях требуется
сохранять большое количество цифр после запятой. Д ля регулиро­
вания количества десятичных знаков после запятой в МК-41
предусмотрена возможность установки любого желаемого режима
отображения чисел на индикаторе. При использовании представ­
ления чисел с естественным размещением запятой это достигается
путем
последовательного
где
нажатия
клавиш
агс
одна из цифровых клавиш, определяющая количество
десятичных знаков после запятой. Заметим, что при включении
калькулятора индикатор автоматически устанавливается в режим
Ё З Ш 0 - т-
е. после запятой высвечиваются два деся-
тичных знака.
Перевод в режим чисел с плавающей запятой производится
командой
где
одна
из цифровых клавиш,
после запятой
определяющая количество десятичных знако
в мантиссе М при условии, что 1 ^ М < 10.
Замечательной особенностью рассмотренных режимов индика­
ции чисел в МК-41 является то, что отображение результатов
вычислений с установленным количеством разрядов после зап я ­
той сопровождается округлением младшего сохраняемого разряда
по правилу: если первая из отбрасываемых цифр больше или рав­
на 5, последняя сохраняемая цифра увеличивается на единицу.
Исключением является лишь режим | агс [ 9 | , при котором
округление не производится.
2
З а к а з 43
33
П р и м е р 1.4.7. Введем на индикатор МК-41 какое-либо.число,
например 27,80974356. З а д а в а я теперь разные режимы индикации,
можно пронаблюдать на индикаторе соответствующие им пред­
ставления заданного числа (см. табл. 1.14), в том числе и
процедуру автоматического округления.
Таблица 1.14
Режим индикации
Представление числа
2
27,81
3
27,810
4
27,8097
V
2,78
0.1
2,780974
0,1
Примеры простейших вычислений на МК-41
приведены в
таблице 1.15 (все вычисления даны в режиме | агс
Основные двухместные арифметические операции 4- , — , X ,
выполняются на МК-41 обычным образом: сначала вводится
первое число, затем нажимается клавиша соответствующей
операции и вводится второе число. Результат операции полу­
чается после нажатия клавиши
клавиша
III
)
. В МК-41 имеются еще
и извлечение квадратного корня из суммы квадратов
(клавиша | / р / |); порядок выполнения этих операции понятен
из третьей и четвертой строк таблицы 1.15. Что же касается
вычисления значений, имеющихся на клавиатуре элементарных
функций, то порядок этих действий такж е обычен, а отсутствие
режима совмещения даж е упрощает действия вычислителя.
Микрокалькулятор МК-41 имеет три дополнительных (адресуе­
мых) регистра памяти для хранения исходных данных, промежу­
точных результатов или констант, неоднократно используемых
в ходе вычислений. Дополнительные регистры памяти имеют
номера 1, 2 и 3. Д ля обращения к этим регистрам используются
клавиши I З П
34
(запись числа из регистра X в дополнительный
Таблица 1.15
Выражение
<град/рад»
1,267+0,38
Программа
Ответ
1,267 |Т ~ |о , 3 8 Р " " |
34,7:8,49
г'V
3,8м
.
34,7
—~
8,49
ЗЛ 0 0 , 4
—
Л/6,71* + 5,4Г
9
1,65
[Г ]
4,09
0
1,71
0,71 | / р / . |5,4 [ = |
5,45
5Ш 56°
«град»
56 |з ш
|
0,83
2,46
«рад»
2.46 П Л
— 0,81
агссоз 0,83
«рад»
0,83 |а г с |1со5 1
0,59
28,7 [ Т Г |
1,46
1д 28,7
регистр памяти)
—
и
(вызов числа из дополнительного
регистра памяти в регистр X).
Для записи в дополнительный регистр памяти числа, храня­
щегося на индикаторе, необходимо нажать клавишу
одну из цифровых клавиш
или
и
определяющих
номер адресуемого дополнительного регистра. Для вызова числа
из дополнительного регистра памяти следует нажать клавишу
клавиш
или
[Л
помнить, что при вызове числа из адресуемого регистра памяти
содержимое этого регистра сохраняется, а при записи нового
числа в адресуемый регистр его прежнее содержимое пропадает.
Особенностью 1-го дополнительного регистра памяти в МК-41
является то, что его содержимое может использоваться в
качестве второго операнда любой двухместной операции как
константа.
П р и м е р 1.4.8. Пусть надо выполнить* ряд двухместных
операций, в которых вторым операндом является одно и то же
число 3:
5 + 3 , 4 X 3 , 6:3, 73.
Введем вначале число 3 в регистр X и перепишем это значение
в 1-й дополнительный регистр памяти:
2*
35
1.
3
Теперь сразу вслед за этим можно произвести все требуемые
действия, не вводя уже на индикатор значение второго операнда:
5 [ + ] 0 ] (Ответ. 8.)
4 [ х ] [ = = ] (Ответ. 12.)
6 [ Г |0
7 0
(Ответ. 2.)
0
(Ответ. 343.)
Вместе с тем калькулятор МК-41 обладает рядом новых
характерных особенностей, которые мы рассмотрим подробнее.
Иерархия операций. Д л я выполнения промежуточной двух­
местной операции в МК-41, как и в других калькуляторах,
необязательно
нажимать
клавишу
смешанных вычислений клавиша
При
ыполнении
нажимается, как правило,
в конце задачи. В промежуточных действиях вместо
можно
нажимать клавиши следующих по формуле двухместных операт
ций, однако исполнение операций производится с учетом уста­
новленного логикой МК старшинства операций. Самыми старшими
из двухместных операций в МК-41 являются операции воз­
ведения в степень и извлечения квадратного корня из квадратов
двух чисел. Затем следуют операции умножения и деления, а за
ними сложения и вычитания. Если вслед за двухместной операцией
нажимается клавиша операции того же или меньшего старшин­
ства, то предыдущая двухместная операция исполняется.
В противном случае МК только запоминает введенные числа и
операции до тех пор, пока не будет н аж ата клавиша с меньшим
Введение иерархии операций серьезно облегчает действия
вычислителя. При выполнении цепочных вычислений на таких МК
уже нет надобности обращаться к осмысленному запоминанию
результатов промежуточных действий, а достаточно нажимать
клавиши в той последовательности, которая определена самой
формулой.
П р и м е р 1.4.9. Рассмотрим порядок вычислений по двум
простым и похожим с виду формулам: 2*3 —
|- 5 и 2 + 3-5.
И в том и в другом случае программа вычислений на МК-41
последователь
ности действии:
2
и
36
3
0
5
(Ответ. 11.)
2
ш
3
5
Таблица 1.16
(Ответ. 17.)
]
Однако с учетом старшинства опе­
рации
нажатие
клавиши
в
о
первой программе приводит к ис­
полнению предыдущей
операции■
умножения, в то время как нажатие
клавиши
во второй программе
приводит лишь к запоминанию
компонент предыдущей операции
сложения. Особенности вычислений
по этим двум формулам хорошо
просматриваются при сравнении по­
казаний индикатора (табл. 1.16).
2X 3 + 5=11
2+ 3 x 5 = 1 7
Ввод
X
Ввод
X
2
2
2
2
0 1
2
3
3
+
6
5
5
1
3 1
11
|+
1
2
3
3
0
3
5
5
в
17
П р и м е р 1.4.10. Вычислить на МК-41 с двумя знаками после
запятой:
19 + 6 - 2 ,1 ?.у 0 .6 2+ 4,72.
Программа:
19
6
3
2,1
0,6
(Ответ. 282,28.)
Новые возможности МК-41 позволяют избегать использова­
ния дополнительных регистров памяти в тех случаях, когда их
использование, например, в вычислениях на микрокалькуляторе
БЗ-18 было необходимым (см. пример 1.4.5).
Пример
1.4.11. Вычислить на М К-41 в режиме
зйачение выражения 0 , 6 / з т 0,84.
[ Т ] 0 , 8 4 | 51П | Р ~ ] . (Ог
Использование скобок. Наличие на клавиатуре МК специаль-
Ш иИ
естественный порядок выполнения операций согласно их стар­
шинству.
П р и м е р 1.4.12. Для
ычисления значения выражения
(2 + 3)*5 на МК со скобками последовательность нажатия
клавиш в точности совпадает с порядком следования соответ­
ствующих действий в формуле
2
3
Следуя логике вычислительных формул, клавиши открывающих и закрывающих скобок можно нажимать по нескольку
р аз подряд.
37
П р и м е р 1.4.13. Вычислить значение выражения
(((2 + 3)-4 + 5)-6 + 7).8.
Программа:
шшт
2
3
Ш И 4
Ш ГЛЕЖ -
(Ответ. 1256.)
Существующие при этом правила позволяют в данном случае
не нажимать три первые слева открывающие скобки.
Д л я запоминания операций и чисел в вычислениях со скобками
в МК используется особым образом организованная стековая
память. Стековые регистры служат такж е для запоминания
операций и чисел в том случае, когда в цепочных вычислениях
старшинство последующей операции превосходит старшинство
предыдущей операции. Емкость стековой памяти МК-41 позволя­
ет запоминать до 8 чисел и до 7 операций. При переполнении
стековой памяти на индикаторе появляется сигнал переполнения.
В заключение приведем несколько примеров программ смешан­
ных вычислений на МК-41.
П р и м е р 1.4.14. Вычислить
51п 0 ,3 *1п 2,79 +
20,43
сое 0,002
Программа:
0,3 | 51П | |х~1 2,79
20,43 Е 1 0,002
П р и м е р 1.4.15. Вычислить
2,1 Х(0,24 + 3,72)4.
Программа:
2 Л Ш Г П 0,24
3,72 Г П 0 4
П р и м е р 1.4.16. Вычислить
^ 4 , 9 + 1п 0,04)• 3,8
Программа:
4
04
Контрольные
,8
017] 5
вопросы
1. Какие дополнительные функциональные возможности
имеют инженерные микрокалькуляторы по сравнению с про­
стейшими?
38
I . В ш м состоит н азн ачен и е м я м ш и совм ещ енной ф ункции
3. Чем
различаются
к А г гм я , осу тест •латные
нажатием
клавиш
4
Ленин
н н м ш ар н ы х функций* ЯИрЗВВЕ^
А. Каков поряаж ввода чисел в форме с плавающей запито# >
в,
Как производите* цепочные действии на МК а) с уст вно
ленной иерархией арифметических операций, б) с использованием
клавиш
(
и
?
Упражнения
1. На индикатор МК БЗ-18 вместо 328,4 ошибочно введено
328,6. Составить программу исправления ошибки ввода с исполь­
зованием клавиши
2. Составить программы вычисления значений выражений,
используя дополнительные регистры памяти:
а) ах + Ьу\
б) ( а + х) (6 + 0
в) (о 4- х)*+(Ь у )*:
г) (а 4 - х)г/{Ь2 — у г).
Составить аналогичные программы для МК с установленной
иерархией операций и скобками
3. Как установить с помощью МК. что больше е* или я ?
4 . Составить программы вычисления значений выражений, ис­
пользуя клавишу Р ] и дополнительный регистр памяти:
а) со»»
Составить аналогичные программы для МК с иерархией
операций и скобками.
1.1. ПРОГРАМ М ИРУЕМ Ы Е М И КРО КА ЛЬКУЛЯТО РЫ
Первой отечественной моделью программируемых микро­
калькуляторов (ПМК) является «Электроника БЗ-21». В после­
дующих моделях ПМК этого типа (Б3-34. МК-54 — с автоном­
ными источниками питания; МК-46, МК-56 — с питанием от сети
переменного тока) функциональные возможности значительно
расширены, но вместе с тем логика и входной язык у всех этих
моделей имеют много общего.
Главное отличие программируемых МК от арифметических
19
Рис.
13
и инженерных микрокалькуляторов состоит в том, что они допуска­
ют ввод и автоматическое исполнение заранее составленной
последовательности команд — программы, включающей . как
арифметические (вычислительные), так и логические (проверка
условий, выбор направления дальнейших вычислений и т. п.)
действия. Умелое составление программ для М К этого класса
позволяет во многих случаях с помощью весьма короткой по­
следовательности команд заставить ПМ К выполнять большое
количество вычислительных операций, что значительно повышает
эффективность расчетов.
На программируемых калькуляторах можно вести и обычные
расчеты без ввода программ в память. Коротко коснемся этого „
режима работы ПМ К лишь в той степени, чтобы, подчеркнуть
особенность общей для всех ПМ К вычислительной логики,
основанной на использовании так называемой обратной польской
записи. В 1921 г. польский математик и логик Ян Лукасевич,
разрабаты вая особый язык формализации логических и математи­
ческих выражений, предложил размещ ать знаки арифметических
операций или перед, или после операндов. Первый из этих способов
стали называть прямой, а второй — обратной польской записью.
В обратной польской записи,' например, выражение а - \ - Ь при­
нимает вид: аЬ-\~. Применение такого представления вы раж е­
ний для МК обусловлено более простой технической реализацией
вычислений (среди инженерных МК по такому принципу работает
«Электроника Б З -19»).
/ ■ - ■ > :-И
Клавиатура одной из современных моделей ПМ К «Элек­
троника МК-56» изображена на рисунке 13. Содержимое регист­
ра X, как обычно, отображается на индикаторе. Д л я пересылки
содержимого индикатора в рабочий регистр У используется
клавиша | В | | . При выполнении арифметической операции на
ПМ К необходимо: 1) ввести в X первое число; 2) клавишей
40
Шереслать первое число в регистр V; 3) ввести в регистр X
второе число; 4) наж ать одну из клавиш |
0 - ЕВ
|,
Как видно, клавиша 1 = 1 в данном случае оказывается ненужной
(ее и нет на клавиатуре). Вычисление значений одноместных
элементарных функций производится обычным образом: в регистр
X вводится
аргумент,
нажимается
клавиша
[ р | и нужная
клавиша с обозначением функции ( з т - 1 , соз- 1 , 1д_ | обозначают
соответствующие обратные тригонометрические функции). При­
меры простейших вычислений на МК-56 приведены в таблице 1.17
(аргумент в радианах).
Таблица 1.17
Задача
Программа
0,9
0,9
агссоз 0,2
0,2
2 ,4 6 *
2,46
51П
10—0,41
+
0 ,3 4
0,41
9 ,7 2
0,34
1 2 ,4 X 8 ,5
12,4
2 4 , 1 13'5
13,5
Г ] | 5т |
Г
соз 1
Индикатор (X)
7,8332691
I
□ 0
/ - / I I 10* 1
П
~
|
Р1
|в * 1 x 1
[р ][7 ]
- 01
1,3694383
6,0516
3,8904512
|э , 7 2
10,06
8 ,5
105,4
24,1
4,5418122
- 01
18
Несмотря на некоторую необычность порядка ввода данных
при выполнении двухместных операций, обратная польская запись
в ряде случаев оказывается даж е более удобной для вычислений.
Однако, чтобы понять эти особенности работы ПМК, необходимо
познакомиться с организацией стековой памяти.
Стековую память МК-56 образуют четыре регистра: известные
уже нам операционные регистры X и V, а также еще два регистра
2 и Т. Ввод чисел всегда производится в регистр X. При нажатии
клавиши [ в Т ] копия числа из регистра X передается в регистр У,
то, что было в V, пересылается в 2, а прежнее содержимое
2 — в регистр Т. При этом содержимое регистра X сохраняется, а
регистра Т исчезает. Это передвижение можно изобразить так:
41
и
Указанное передвижение происходит при каждом
нажатии клавиши |В 1 1 . Пользуясь этим, в регистры
стека можно записать любые числа. Так, в ре­
зультате нажатия клавиш
4
3
2
1
произойдет запись чисел 4, 3, 2, 1 соответственно
в регистры Т, 2, V, X. Очистка всех регистров стека производится
так:
В дополнение к четырем стековым регистрам в МК-56 имеется
еще один регистр, называемый регистром предыдущего результата
(X I). Этот регистр всегда сохраняет значение числа, которое
находилось в регистре X до выполнения операции.
При выполнении одноместных операций ПМ К оперирует с
числом, находящимся в регистре X, при этом содержимое регист­
ров У, 2, Т сохраняется, а число, находившееся до выполнения
операции в регистре X, передается в регистр XI. При выполне­
нии двухместных операций ПМК оперирует числами, находящими­
ся в регистрах X и У. При этом после нажатия операционной
клавиши происходит обратное перемещение информации: содер­
жимое регистра Т пересылается в 2; то, что было в 2 , переходит
в регистр У; в регистр X заносится результат выполненной
операции, а прежнее содержимое регистра X передается в ре­
гистр XI. К сказанному нужно добавить, что если число на
индикаторе является результатом предыдущих вычислений, то
набор на клавиатуре нового числа автоматически передвигает
информацию из регистра X в регистр У. Таким образом,
результат выполнения предыдущей операции может участвовать в
качестве второго числа при выполнении последующей операции.
П р и м е р 1.5.1. Рассмотрим с учетом указанных перемещений
порядок вычислений по формуле аЬ-\-сй.
Эта формула, несмотря на кажущуюся простоту, является, как
известно, не простым орешком для МК, не имеющих иерархии
операций.
\ ' йг
На ПМ К вычисления по этой формуле выполняются весьма
просто:
а | В | \Ь
В таблице 1.18 приведено подробное описание всех пере­
мещений при выполнении этой программы (для удобства принято,
что перед вычислениями во всех регистрах стека записаны нули).
42
Аналогичным образом объясняется и вычисление по формуле
(а 4- Ь) ( с */), которое обеспечивается программой
Д ля хранения исходных данных и промежуточных результа­
тов ПМК, как и калькуляторы других типов, имеют дополнитель­
ные адресуемые регистры памяти. В МК-56 таких регистров 14, они
имеют номера (адреса) 0, 1 ,2 ,
9, а, Ь, с, й 1, Запись числа из
регистра X в адресуемые регистры осуществляется нажатием
клавиши |Х-*-П | и одной из клавиш, обозначающих
номер
адресуемого регистра. При этом число, переданное в адресуемый
регистр, сохраняется в регистре X. Так, например, запись числа
из регистра X в регистры Н4 и Ка на МК-56 осуществляется
командами
Х-^П
а.
4 и Х -^П
Д ля вызова числа, хранящегося в адресуемом регистре, в
регистр X необходимо нажать клавишу | П-»-Х | и клавишу,
обозначающую номер адресуемого регистра.
Таблица 1.18
Ввод
X
У
г
Т
'а
а
0
0
0
и
а
а
0
0
Ь
Ь
а
0
0
0
аЬ
0
0
0
с
с
аЬ
0
0
ЕО
с
с
аЬ
0
й
й
с
аЬ
0
в
□
ей
аЬ
0
0
аЬ + ей
0
0
0
1 В дальнейшем адресуемые регистры будем обозначать буквой К с рас
положенным за ней номером: РО, Ш , К2 и т. д.
Однако главное предназначение ПМ К не в том, чтобы произ­
водить разовые вычисления по формуле,— для этих целей могут
успешно использоваться инженерные и арифметические кальку­
ляторы. Особое назначение программируемых М К состоит в том,
что они могут запоминать целые программы, а потом автомати­
чески их выполнять. Д ля запоминания команд программы у ПМ К
имеется специальная программная память. Программная память
МК-56 состоит из 98 ячеек; первая ячейка имеет номер 00,
последняя — 97. Чтобы получить общее представление о програм­
мируемом использовании ПМК, рассмотрим примеры.
П р и м е р 1.5.2. Составить программу для автоматического
вычисления на МК-56 длин окружностей по заданному радиусу г.
Как известно, длина окружности вычисляется по формуле
Ь = 2пг. Программа ручных вычислений по формуле на МК-56
весьма проста:
2
Предположим теперь, что значение радиуса г заранее записано в
регистр X (т. е. находится на индикаторе). При этом условии
действия по вычислению
сведутся к следующему:
2
Запишем теперь все команды этой программы шаг за шагом в
программную память ПМК. Д л я этого калькулятор нажатием
клавиш | г [ [ ПРГ | переводится в режим «Программирование».
В процессе пошагового ввода программы на индикаторе будет
наблюдаться движение двузначных кодов команд (слева н ап р аво ).
При этом крайнее правое двузначное число регистрирует значение
счетчика вводимых команд программы и принимает последова­
тельные значения: 00,01,02 и т. д.*. Текущее состояние счетчика
команд выражает адрес ячейки программной памяти, по которому
будет записана следующая команда программы. Покомандное
изложение приведенной выше программы вычисления длины
окружности Ь = 2 л г в предположении, что значение радиуса
находится в регистре X, дано в таблице 1.19. Здесь же указаны
адреса ячеек, хранящих команды, а такж е описание действии,
которые производит каж д ая команда. Таким образом, вся про­
грамма состоит из шести команд и занимает шесть ячеек памяти с
адресами 00, 01, 02, 03, 04, 05.
Когда ввод всей программы закончен, микрокалькулятор
нужно вернуть в счетный режим работы, для чего нажимаются
Программу можно заносить в память с произвольного адреса. Д л я это
го прежде, чем перейти в режим «Программирование», нужно наж ать кла
, а затем значение адреса первой команды.
44
клавиши
I
г
II
АВТ
(этот режим носит название «автомати
Таблица 1.19
Адрес
команды
Команда
00
2 Ъ * Ввод числа 2 в регистр X
Вычисление '2Хг
0
□ □
в
02
03
04
Ввод числа л в регистр X
Вычисление 2 Х л Х г
| С /П |
05
(клавиша
Ввод числа г в регистр V
и
01
Программа
Выполняемое действие
пускается
Остановка и индикация
ответа в регистре X
нажатием
I В /О I устанавливает
команд, клавишей
клавиш
нулевое
[ В /О | [ С /П
значение
счетчика
производится пуск). Однако, прежде
чем сделать это, как следует из предположения, принятого перед
составлением программы, необходимо в регистр индикации X
записать значение радиуса. Пусть, к примеру, нужно вычислить
длину окружности радиуса г — 5. Тогда после выполнения всех
описанных выше действий по вводу программы нужно выполнить
операции
5
На индикаторе высветится ответ: 31,415926. Если нужно полу­
чить длины окружностей для значений радиуса г и Г%, ..., г„, то
нужно п раз обратиться к введенной в программную память ПМК
программе с помощью команд
г,
В /О
Г ё / й ” (1 = 1 , 2, .... п).
Записанная в память ПМК программа будет храниться там до
тех пор, пока на ее место не будет записана другая программа
или произойдет отключение ПМК.
На программируемых микрокалькуляторах весьма эффективно
решается задача вычисления таблицы значений функции (эту
часто встречающуюся практическую задачу называют еще
табулированием функции) Задача табулирования ставится обыч45
но следующим образом. Дается функция /(х), отрезок [а; 6], на
котором функция определена, и шаг А. Требуется вычислить
значения функции в точках а, а + Л, а + 2 Л , ... до тех пор, пока
очередное значение аргумента не выйдет за правую границу
отрезка. При этом оформляется таблица вида 1.20. Поскольку
в вычислениях на микрокалькуляторе вычислитель сам управ­
ляет ходом вычислительного процесса, можно считать, что для
постановки задачи табулирования функции на ПМК, помимо
задания
аналитического выражения функции, достаточно
указать лишь левую границу отрезка х — а и шаг А.
Таблица 1.20
Ш
X
щ
/ ( а + Л)
а
а+ Л
а -(- 2/1
Г (а 1 2 Л)
1 (а + ЗА)
а + 3/1
• • •
Фактически задача сводится к задаче табулирования на интер­
вале [а; о о ).
V
П р и м е р 1.5.3. Составить программу табулирования функции
/ (•*)= у " |
А = 0 ,1 .
на МК-56 с начальным значением х — \ и шагом
'■
'■
При составлении программы будем предполагать, что значения
х и Л записаны соответственно в адресуемые регистры КО и К1:
х
А
КО
К1
Принимая во
формулы
тельные возможности МК-56, будем придерживаться следующей
последовательности вычисления значения Пх):
1) вычислить значение знаменателя лг4-1 и запомнить его
в одном из адресуемых регистров памяти (К2);
2) вычислить значение числителя 5 з т х:
3) вызвать в регистр X значение знаменателя из регистра
К2 (значение числителя при этом перейдет в регистр V);
4) выполнить операцию деления.
Программа вычисления одного значения | (х) будет иметь вид:
5
(после вычисления знаменателя его пришлось временно по­
местить в регистр К2).
' УаШЩМ Й И И
46
Итак, программа, по существу, готова. Достаточно завершить
ее командой | С /П | (остановка и индикация значения I (лг))
и можно записывать в память. Остается очевидным лишь одно
неудобство: после каждого прохода этой программы (и снятия
очередного значения функции с индикатора) перед каждым но­
вым пуском придется вручную вводить в регистр НО новое
значение аргумента х. Этого неудобства, впрочем, можно из­
бежать, если вслед за остановкой и индикацией значения
функции в программе предусмотреть автоматическое вычисление
нового значения аргумента и пересылку его в регистр КО:
Теперь остановка по команде I С /П
будет сопровождаться
индикацией нового значения аргумента. Вслед за этим остается
осуществить автоматический переход к началу программы. Для
этой цели в языке МК-56 есть команда безусловного перехода
, вслед за которой нужно указать адрес ячеики програм­
мной памяти — 00, в которой находится первая команда про­
граммы. Полностью искомая программа представлена в таблиЦе
с /
\
5 51П X
Таким образом, для табулирования функции \ {х) = ^
|
начальным значением аргумента х = 1 и шагом к = 0 ,1 с помощью
программы, изложенной в таблице 1.21, необходимо:
1) ввести программу в память ПМК;
2) записать значения х = 1 и к = 0 ,1 в регистры КО и К1
соответствен но (командами 1
0 и 0,1
Н 1);
3) пустить программу (команда
П. 1 выполняется в режиме | ПРГ , п. 2
. Программа
составлена
так,
что
и 3 — в режиме
выходные
данные
индицируются на световом табло в последовательности: х, ( (х),
х-\-к, I (х + к), ... . При этом индикация каждого члена последо­
вательности, начиная со второго, осуществляется в результате
выполнения команды I С /П I. После каждой остановки и снятия
показания индикатора работа программы возобновляется н а ж а ­
тием клавиши I С /П I. Результаты работы программы табулиро­
вания для заданных в примере 1.5.3 условий частично пред-
ставлены
по усмотрению самого вычислителя.
Таблица 1.21
Команда
Выполняемое действие
Вычисление х
Запись числа 1 в регистр X
Вычисление х2+ 1
Запись ,тг + 1 в регистр 82
Вызов х в регистр X из КО
ычисление з т х
Запись числа 5 в регистр X
Вычисление 5 з т х
Вызов х2+ \ в регистр X из К2
ычисление / (дг)=(5 з т х)/(дг2+ I)
Остановка и индикация Их)
Вызов х в регистр X из КО
Вызов Н в регистр X из К1
ычисление
-Н
Запись х в регистр КО
Остановка и индикация х
Безусловный переход
Адрес безусловного перехода
Д л я задания нового участка или шага табулирования доста­
точно перед пуском программы ввести новые значения в регистры
КО и К1. Однако на этом, к сожалению, и заканчивается вариатив­
ность составленной программы. Д ля того чтобы перейти к табули­
рованию другой функции, всю программу придется составлять
заново. Этот недостаток программы можно исправить, если при ее
48
организации использовать следующий подход: вычисление зн а­
чения функции / (х) оформить в виде самостоятельного блока —
подпрограммы, а в основной программе обращаться к этой под­
программе. Тогда для перехода к табулированию другой функции
достаточно будет заменять только блок вычисления I (х).
Таблица 1.22
X
Г(х)
1
1,1
1,2
1,3
1,4
1,5
1,6
1,7
2,1036776
2,0163063
1,9099162
1,7910003
1,6646110
1,5346077
1,4038955
1,2746334
#••
Д ля
4
• •
перехода на подпрограмму в языке МК-56 имеется
специальная команда, реализуемая клавишей |П П | . С помощью
этой команды происходит переход на подпрограмму по адресу,
указанному непосредственно после команды перехода, и, кроме
того, запоминается адрес следующей команды основной програм­
мы. По этому адресу происходит возврат в основную программу
после отработки подпрограммы. Подпрограмма всегда заверш ает­
ся командой возврата
Гв/О
. Подпрограмму вычисления
(х)
в общей программе табулирования естественно располагать в
конце — это облегчит затем замену подпрограмм при переходе к
табулированию новой функции.
В таблице 1.23 приведена программа табулирования функции
с подпрограммой, реализующей вычисление значений функции
/(*) из примера 1.5.3. В ячейках 00— 10 размещена основная
программа табулирования. Подпрограмма вычисления | (х)
начинается с ячейки 11 — с этого адреса должна располагаться
новая подпрограмма вычисления значения функции при пере­
ходе к другой задаче табулирования.
При решении некоторых задач требуется автоматическое
неоднократное выполнение (или, как говорят, зацикливание)
отдельных участков одной и той же программы. Язык програм­
мирования ПМК предусматривает такую возможность.
П р и м е р 1.5.4. Требуется найти сумму всех тех членов ряда
ОО
1
2 - 2-, величина которых не меньше заданного числа е.
ВК
49
00
П—X
0
01
Вызов х в регистр X из КО
П ереход на подпрограмму
II
02
03
Адрес подпрограммы
Остановка и индикация Ц х )
04
О
Вызов х ш регистр X нэ КО
06
1
Вызов к в регистр X кэ К1
Вычисление
07
0
ш
Запись х а регистр КО
Остановка и индикации х
09
Без условный переход к началу
10
Адр^с б е з условного перепада
11
12
М
Вычисление х*
14
Завись числа I • регистр X
Вычисление | * + |
X -П
2
Запись с* +■ I а регистр К2
Вы ш е числа ж а регистр X из КО
16
Вычисление *ю ж
5
Запись числа 5 а регистр X
18
Вычисление 5 мп я
П—■X
2
Вики
I а регистр X на К2
20
Вычисление / (*)-«*(& ею 1 У б | +• I)
21
Возврат к команде с адресом 03
н е с КО.
Еслк, например, е = 0,21, то согласно условию задачи искомую
сумму составят лишь два первых члена ряда: 1 + — = 1 ,2 5 .
Предположим, что значение е находится на индикаторе
(в регистре X), сумма членов ряда будет накапливаться в
регистре Щ (вначале его нужно будет обнулить), текущее значе­
ние номера члена п — в регистре К2, а значение очередного
члена ряда в виде 1/ п 2 будет находиться в регистре КЗ. Исходя
из этих предположений, в общем-то несложно, составить про­
грамму, которая проверяла бы условие ( К 3 ) < е ' и, если оно не
выполняется, добавляла бы значение этого члена к содержимо­
му регистра К1. А когда окажется, что ( К 3 ) < е , должна проис­
ходить остановка с индикацией содержимого регистра К1.
Как видно, чтобы реализовать эту идею, надо уметь опре­
делять истинность условия (КЗ) < е и в зависимости от исхода
проверки либо прекращать счет, либо продолжать его. На языке
команд это означает, что нужно проверить заданные условия и в
зависимости от результата перейти ик указанному для каждого из
этих двух случаев адресу очередной команды.
Язык программируемых калькуляторов имеет соответствующие
средства. Таким средством являются, во-первых, команды перехода по условию, которые реализуются клавишей | г | и одной
из клавиш с обозначением условий:
| х ф ( ) \ . К аж дая из этих команд проверяет содержимое регистра
'
■
у
;й I-: :^ ^.,г '1: г ■
' '
‘.V!- '
X на выполнение заданного условия. Если условие не выполняет­
ся, то следующей по программе будет исполнена команда,
адрес которой указан непосредственно за командой условного
перехода. Если условие выполняется, то следующей будет испол­
няться команда, записанная после адреса перехода. Другой
командой, необходимой для организации циклических программ,
является команда безусловного перехода, реализуемая клавишей
В таблице 1.24 приведена программа вычисления суммы ряда
по заданному числу е, предварительно введенному в регистр X.
Ход вычислений и порядок использования команд условного и
безусловного перехода можно уяснить из подробных пояснений
действия каждой команды, приведенных в правом столбце.
Д ля пуска этой программы нужно ввести значение е в ре­
гистр X и наж ать клавиши
1 (КЗ) обозначает содержимое (число) из регистра КЗ'
51
Таблица
Адр
ЭМ 31
Команда
1.24
Выполняемое действие
00
Запись числа е из регистра X в регистр НО
01
Ввод числа 0 в регистр X
02
Запись числа 0 в регистр Р1 (обнуление суммы 5 )
03
Запись числа 0 в регистр К2 (в будущем в К2
будет размещ аться значение л)
Ввод числа 1 в регистр X
Пересылка числа 1 в регистр У и вызов числа
из регистра К2
04
05
06
Вычисление текущего значения л
07
Запись л в регистр К2
08
Вычисление л 2
09
Вычисление 1/л
10
Запись 1 /л 2 в регистр КЗ
11
Пересылка 1 /л 2 в регистр V и вызов числа е в ре
гистр X
12
Вычисление 1/л2— е
1Э
Проверка
14
15
Адрес перехода при 1 /л 2— е < 0
цикла)
Вызов числа 5 из регистра К!
16
Вызов числа 1 /л 2 из регистра КЗ
(надо ли продолжать?)
(к окончанию
17
Вычисление 5 + 1 /л
18
Запись 5 + 1 / л 2 в регистр Ш
19
Безусловный переход
20
Адрес безусловного перехода
21
Вызов найденной суммы из регистра 81 в регистр X
22
Остановка и индикация результата
2
Так, при е = 0,001 результатом работы программы будет 1,6131908.
Мы рассмотрели далеко не все свойства программируемых МК.
Эти калькуляторы обладают возможностями, умелое использова­
ние которых предоставляет вычислителю мощное средство решения
задач, многие из которых до недавнего времени были под силу
лишь ЭВМ. Впрочем, для полного использования возможностей
ПМК, кроме усвоения их логики и языка, требуется еще овладе­
ние специальными навыками и культурой программирования,
для формирования которых требуется знакомство с общими
вопросами конструирования алгоритмов и программистская
практика.
Контрольные
вопросы
1. В чем основное отличие программируемых микрокалькуля­
торов (ПМК) от МК арифметического и инженерного типа?
2. Каков порядок выполнения на ПМК двухместной арифме­
тической операции?
3. Какие регистры образуют стековую память МК-56?
4. Каков порядок перемещения информации в стековых
регистрах при нажатии клавиши | В | | ?
5. Какие перемещения происходят в стековых регистрах ПМК
при выполнении одноместной операции?
6. Какие перемещения происходят в стековых регистрах ПМК
при выполнении двухместной операции?
7. Что происходит с результатом предыдущих вычислений,
хранящимся в регистре X, при вводе в X нового числа?
8. Как производится запись и вызов чисел из адресуемых
регистров памяти?
9. В каком режиме производится ввод программы в програм­
мную память ПМК? В каком режиме производится пуск про­
граммы?
10. Как записываются и работают команды безусловного и
условного переходов?
Упражнения
1. Составить программы для однократных вычислений на
МК-56 значений следующих выражений:
а) 3,18 ->/24/76;
б) 0 , 9 3 *51п 0 , 8 4 ;
в) 24,307+ \/{\% 0,261 - 2 , 8 ) ;
г) 9 ,7 1 -зш ( У ( Ш + 2 ,1 ■•*).;
2. Составить программу для ввода чисел а, Ь, с , с1 в регистры
стека X, V, 2, Т соответственно.
3. Написать программу для ручных вычислений на ПМК об­
щего сопротивления цепи /? при параллельном включении
сопротивлений /?.*? /?2 , /?з и /?4 по формуле
Ш
Ш В |
-
:
53
4. Составить программу для автоматического вычисления
значений площади круга 5 = я/?2 по заданным значениям
радиуса /?, вводимым в регистр индикации X.
5. Дано уравнение 3х — 4 х = 0 . Методом табулирования
функции 1 (х )= З х — 4х на МК-56 локализовать отрезки, содерж а­
щие корни уравнения.
Г
У К а з а н и е. Составить программу табулирования функции
/ (х) на отрезке [0; 2] с шагом 0,1. Непрерывная функция имеет на
отрезке корень, если она меняет знак на его концах. Если функ­
ция к тому же монотонна на этом отрезке, корень единственный.
6. Составить циклическую программу вычисления суммы всех
членов ряда. 2
величина которых не меньше заданного
п= \ е
числа е.
7. Составить циклическую программу вычисления наиболь­
шего общего делителя (НО Д) двух целых положительных
чисел а и Ь.
/1.6. Л А Б О Р А Т О Р Н А Я РАБОТА № 1
Т е м а . Вычисления на микрокалькуляторах.
З а д а н и е 1. Составить и выполнить программы ручных
вычислений заданных числовых выражений:
а) на М К арифметического типа;
б) на М К инженерного и программируемого типа.
З а д а н и е 2. По заданной формуле составить программу для
автоматического вычисления на ПМК ее значений при различных
значениях параметров а и Ь.
З а д а н и е 3. Д ля заданной функции [ (х) методом табулиро­
вания локализовать корни уравнения [ (х )= 0 (т. е. выделить по
возможности наименьшие отрезки, содержащие по одному корню)
и найти приближенные значения корней. Если корней бесконечное
множество, взять два-три корня, ближайшие к началу координат.
По результатам табулирования построить график функции на ис­
следуемом участке.
З а д а н и е 4. Методом табулирования на ПМК исследовать
заданный предел функции (в точке или на бесконечности):
а) установить предположительное значение предела (все зад ан ­
ные пределы функций существуют); б) исследовать поведение
функции в окрестности точки (или в зависимости от задания
на + оо или — о о ); в) сделать вывод о скорости и характере
сходимости.
Пояснения к выполнению лабораторной работы № 1.
З а д а н и е 1 предусматривает составленйе и выполнение
54
программ ручных вычислений по заданной формуле с использо­
ванием микрокалькуляторов различных типов. Исходные формулы
для вычислений приведены в таблице 1.25. Первая часть за д а ­
ния 1 выполняется на МК различных типов, для выполнения
второй части используются МК инженерного и программируемого
типа. Перед выполнением задания необходимо познакомиться
с инструкцией по эксплуатации используемых микрокалькулято­
ров, а также просмотреть соответствующие примеры в п. 1.3, 1.4,
1.6 главы 1.
З а д а н и е 2 выполняется на программируемом МК. Состав­
ляется и вводится в память ПМК программа вычисления задан­
ного выражения при условии, что значения исходных параметров
а и Ь заранее помещены в два адресуемых регистра памяти
(например, в На и КЬ). Решение аналогичной по смыслу задачи
рассмотрено в примере 1.5.2. При Оформлении отчета, помимо
таблицы с программой для МК, даются подробные инструкции
для пользователя: порядок ввода исходных данных и пуска
программы. Варианты заданий приведены в таблице 1.26.
Д ля выполнения з а д а н и я 3 реализуется программа табули­
рования заданной функции (табл. 1.26). Решение задачи табули­
рования подробно рассмотрено в примере 1.5.3. Д ля определе­
ния участка табулирования (т. е. области, содержащей корни
уравнения) необходимо провести предварительное исследование
характера поведения функции в области ее определения. По
результатам проведенных вычислений строится уточненный
график функции.
При выполнении з а д а н и я 4.также составляется программа
табулирования функции, находящейся под знаком предела
(варианты задания приведены в табл. 1.26). Участок табулиро­
вания выбирается так, чтобы по выбранной в нем последова­
тельности значений аргумента х соответствующая последова­
тельность значений функции / (х) позволяла ответить на постав­
ленные в задании вопросы. При анализе предела функции в точке
шаг табулирования выбирается так, чтобы значение аргумента
медленно приближалось к предельному (при желании можно
получать значения функции для «сгущающихся» значений
аргумента, если табулировать не с постоянным шагом, а из­
менять аргумент каким-либо подходящим образом). Точно так же
анализ поведения функции на бесконечности проводится при
построении такой последовательности значений х, с помощью
которой можно было бы наглядно судить о поведении функции
при достаточно больших по абсолютной величине значениях
аргумента1.
1 При этом, разумеется, нужно помнить, что вывод о наличии предела
функции нельзя делать, исходя из последовательности значений л: частного
вида. Применяемый в данном случае прием оправдан лишь тем, что по условию
задания 4 все заданные пределы существуют.
.
'
55
Таблица 1.25
Вари­
ант
Задание 1 ,а, б
Задание 1, б
2,38— уЧ, 2 * + 8,31
13,9 + 2,6-7,9
2. I
!п 8 , 6 + 3,5
9,1 (зш 0,4 + соз 2,09)
7 ,2 1 - 3 ,8 - 2 ,9 4
0,32 ' 1п 12,3
7,4 + 8,44
л/7,56+ 8,32
2,35
з
6,25-9,28
65,6 — 54,3
а г с з т 0,56
2 ,1 8 + 7 9 ,1 6
5,43
2,96 + 78,262+ 3,22
Я 8Ш2,7 -1п 0,65
-у/6,17 — 3,26
5Щ 4,25
6,75 +
1п (2,9 — з т 0,5)
+
2,12
5 ,2 - 3 ,1 4 - 1 0 ,2
л/9,65
11,6-0,32 + 5,3
45,9 — 1п 103,5
л /2 9 ^ -2 ,7 5
1 6 ,5 + 1 2 ,3 -0 ,6 5
л/5,62
51П 0,14
14,2* — У Щ З
6 ,1 7 -3 ,1 2 -5 ,4 2
§т
+ 3,7
V 15,62 — 3,28
3 ,1 4 -0 ,2 4 -1 0 ,3
12,4
р—
.
Л/7.23
6 5 ,2 - 4 3 ,8 + 2,16
о^бб2+ 1 ,3 6
7 Т 7 ^ — 3,242+ 2,7-0,82
4,35 - 1 ,63
35,7
17,24-0,73
13
14
6,25-0,83— 17,34-052
56
— 8,62
1
2,18
Уагс1§ 42,7
л
2,65
3,17 — 2,66
л
51П
0,35
а г с з т 0,25 +
1п (27,9— 1,652)
45,6 — е§щ 6,75
2,65+ 1п 2,9
агс!д 7,65 +
6 5 ,3 9 + 0 ,217
51П 3,42
" \/с о 5
2,56— 1,32*
+ 17,3
1 2 ,6 -4 ,2 -2 ,8 1
Я
1п 9,13
^42,7
1п 2,76 — 0,27
^65,9
1п 21,7
1п 7,49
5 , 6 + 4 ,3 +
агс!^ 25,7
25,32— 16,72-
I
л/657
5! П
агс18 33,9
65,3+ соз 0,79
Л
с ? , шшшшт
агссоз 0,05
Таблица 1.25
\
Вари­ 1
ант
1
2
3
4
а+соз Ь
2Ь —
1
»
х — 0»5х + 1
1п (а + Ь)
I С05 X— X2
х3— &
Й
Ь '-а
л /а + 6
3Ь — а
х — соз
а?Ь — 3
(п а + 26
а-\%Ь
136 + а
а6 +
2Х+ 3
Г -3
аг
I
1п а
6
х —2
пт
к я
2 V* *—с08 б,5х
— -2 1 п х
1 *
51П
0,5х —
—
Н т(5 т
- 5
Задание 4
Задание 3
Задание 2
V I ~~Х
-
г*+|и — 6
? 3 5 1 + Г -
т /х +
31П
1- ~ з т
X—
СОЗ X
——■
п — 4*
............. ...... ........ ..
Нт
1 -» —|
\х )
х+
............
1
П т ( 1 + ( ё ^ ’ клг
V й +ь
57
Продолжение
Таблица 1.26
Вари­
ант
Задание 2
7
• е ( а — Ь)
ЦЦ Ц ь
8
Задание 3
X 5Ш X—- 1
2х
Нш
х—2
.. х2— 5 х + 6
1нп--- “5--- рг—
х-^з ДГ— 9
2 соз х
Уа6 + 1
10
11
12
13
14
1п а + 46
а+ 6
62+ 1п а
л/а+ Ь 2
2 * е (в + 6)
а 2+ 6
4 У а2+ 6
аб+2
зш (а—^/Ь)
а* + 1п 6
^ + ' - 7
х~*т
Зх4— 2
пт
— ------л-*-» у ? + З х + 4
5 соз х — х
..
51П X — 0,2х
х — соз х — 1
■■ИН.
1п х + х
х2 — 7 х + 10
х2- 8 х + 1 2
Нт 4 + - т |
оо \
«* /
У 1+хзтх-1
1ип - — ------ *---------х-М)
хг
И т ( 2* ~ ' Х
х—
►оо \ 2х + 1 /
16
л/5
аб — 1п 6
2 — х — 1§г х
Н т - — - -----х -0 У 1 + Х — 1
17
Уаб
6 — 2а 1п 6
1,7 — 2 соз 2х
Нш агс!д х
X-*- оо
2 с1& З х + 1
в. 1 с х — 311» X
' • т - ё— -з-----х-*>0
*
18
н и
2а + Уб
19
20
1п 6 — а
а 2 + 46
6 — зш а
1
ч
о
У а 2+ 62
15
58
..
соз X
1Ш1 ------ ^
’ я я — 2х
Ч ЯДШ
1
0,8 1п а
I
2х—3
3 6 + 2а
9
и ™ » 4:
X о зш 2х
'
а + 2 со5 6
а2— Ь
Задание 4
зш 4 х —0,6
ех — х —4
Нт ( Ш
V
*—00 V х + 1 /
х*— 1
Нт
— *—1 х — 1
..
Таблица 1.27
Выполняемое действие
Запись х из регистра X в К1
Переход на подпрограмму
Адрес подпрограммы
Остановка и индикация / (х)
Вызов х в регистр X из К1
Ввод числа 2 в регистр X
Вычисление х — х/ 2
Записать х в регистр К1
Остановка и индикация х
Безусловный переход .
Адрес безусловного перехода
Вычисление х
Ввод числа 2 в регистр X
Вычисление 0,5х2
Запись 0,5дг в регистр К2
ызов х в регистр X из К1
Вычисление соз х
Ввод числа 1 в регистр X
Вычисление соз х — 1
Вычисление 1 —соз х
Вызов 0 ,5 ^ в регистр X из К2
Вычисление } (х)
Возврат к команде 03
59
Пусть требуется исследовать предел П т — й й й .
-о 0.5*2
Выражение под знаком предела при х = 0 дает так называемую
неопределенность вида — . Составим программу табулирования
1 — соз х
функции I (х)—— — I— на МК-56 с начальным значением х = 2
при условии, что все остальные значения х будут получаться по
закону геометрической прогрессии со знаменателем 1/2 (т. е.
уменьшаться вдвое). Будем предполагать, что начальное значе­
ние аргумента х находится в регистре X. Вычисление значения
функции удобно оформить в виде подпрограммы. Искомая про­
грамма приведена в таблице 1.27.
Введя эту программу в память ПМК и начав вычисления
с х = 2, получим таблицу:
X
т
2
1
0,5
0,25
0,125
0,0625
0,03125
0,70807345
0,9193954
0,9793392
0,9948032
0,9986944
0,9996288
0,9998336
Судя по полученной последовательности значений / (х), можно
1— соз х
,
сделать вывод, что пределом функции —
СЯ ЧИСЛО 1.
-
Л
ШШ
при х-+0 являет-
_
З а м е ч а н и е . Продолжая вычисления по заданной про­
грамме, мы очень скоро (через 2—3 шага) обнаружим искажение
результата, т. е. будем получать значение функции } (х), не
приближающееся к единице. Это явление объясняется просто. При
существенном уменьшении значения х калькулятор вычисляет от­
ношение значений (1 — соз х и 0,5х2), близких к машинному нулю,
что и приводит к неустойчивым результатам. Выполняя подобные
расчеты, следует учитывать это обстоятельство и вовремя пре­
кращать вычисления.
Литература к главе 1
1. Технические описания и руководства по эксплуатации
микрокалькуляторов.
2. Б е л ы й Ю. А. Считающая микроэлектроника.— М.: Наука,
1983.
3. Б л о х А .,Ш ., П а в л о в с к и й А. И., П е н к р а т В. В.
Микрокалькуляторы в школе,— Минск: Вышейшая школа, 1986.
60
4\ В и л е н к и н Н .Я ., О к е м а н В. М., Ш в а р ц б у р д С . И.
Микрокалькулятор — школьнику.— М.: Просвещение, 1986.
5. Г и л ь д е В., А л ь т р и х т е р 3. С микрокалькулятором
в руках / Пер. с нем. Ю. А. Данилова.— М.: Мир, 1980.
6. Д ь я к о н о в В. Г1. Справочник по расчетам на микро­
калькуляторах,— М.: Наука, 1985.
7. Е с а я н А. Р. Об использовании микрокалькулятора
«Электроника БЗ-21» в программируемом режиме.— Тула: Туль­
ский пединститут, 1980.
8. Л о д а т к о Е. А. Школьнику о вычислениях с микрокаль­
кулятором.— М.: Просвещение, 1985.
9. Журнал «Математика в школе» (1983, № 5; 1984, № 3).
10. Т р о х и м е н к о Я. К., Л ю б и ч Ф. Д. Инженерные
расчеты на микрокалькуляторах.— Киев: Техника, 1980.
11. Ц в е т к о в А. И., Е п а н е ч н и к о в В. А. Прикладные
программы для микроЭВМ «Электроника БЗ-34», «Электро­
ника МК-56», «Электроника МК-54».— М.: Финансы и статисти­
ка, 1984.
Глава 2.
ЭЛЕКТРОННЫЕ
ВЫЧИСЛИТЕЛЬНЫЕ
МАШИНЫ
(ЭВМ)
2.1. НАЗНАЧЕНИЕ И СТРУКТУРА ЭВМ
Электронные вычислительные машины предназначены для
автоматического решения разнообразных задач, возникающих в
различных областях практической деятельности людей. Привле­
чение ЭВМ особенно необходимо там, где решение задач с по­
мощью других средств или «ручным» способом требует много
времени и затрат усилий большого числа вычислителей.
Говоря об ЭВМ, мы будем иметь в виду универсальные
быстродействующие цифровые программно-управляемые элек­
тронно-вычислительные машины. Что означают эти слова, будет
по мере возможности разъясняться в процессе всего дальнейшего
изложения.
• ' .4-': г
Применение ЭВМ для решения задач основывается на
алгоритмическом описании различных процессов. Алгоритмиче­
ское описание в таком случае ориентируется на ЭВМ и задается
на том языке, который понятен для данной ЭВМ. Подготовленное
алгоритмическое описание предъявляется ЭВМ и автоматически
(без участия человека) исполняется ею, после чего человеку
выдается результат. Наша задача состоит в том, чтобы рас­
смотреть, какую совокупность устройств объединяет в себе ЭВМ
для обеспечения решения задачи и осуществления связи с
человеком.
Процессу автоматической обработки информации (а решение
задачи с помощью ЭВМ представляет собой именно такой про­
цесс) свойственны следующие компоненты: ввод (чтение) на­
чальной информации, хранение информации, обработка информа­
ции (собственно решение задачи), управление процессом обра­
ботки, вывод результатов. Выполнение отмеченных операций в
ЭВМ обеспечивается с помощью следующих устройств:
а) запоминающее устройство (память);
б) обрабатывающее (или арифметико-логическое) устройство;
в) устройство управления;
г) устройства ввода-вывода.
Достаточно общая, хотя и весьма упрощенная, схема связей
В
62
Процессор
Программа
Результаты
Данные
Внешняя память
(ВЗУ)
Рис. 14
между перечисленными устройствами представлена на рисунке 14.
Совокупность устройств, объединяемых арифметико-логическим
устройством и устройством управления ЭВМ, называют также
процессором. Приведем краткую характеристику устройств ЭВМ.
Запоминающее устройство (ЗУ) машины служит для хранения
всей необходимой информации, сопутствующей процессу решения
задачи,— исходных, промежуточных и окончательных числовых
значений, а также программы, т. е. алгоритма счета, пред­
ставленного в специальном виде.
Память ЭВМ обычно состоит из двух частей: оперативной
памяти (ОП) и внешней (ВЗУ). Это разделение связано со
скоростью выборки информации и не имеет принципиального
значения при изучении основ программирования.
Арифметико-логическое устройство (АЛУ) предназначено для
выполнения операций над исходными данными. АЛУ принимает
исходные данные из памяти и по ним вырабатывает промежуточ­
ные и окончательные результаты, которые потом снова отправ­
ляются в память. Арифметико-логическое устройство ЭВМ
способно выполнять только те операции, которые определены
для данной машины ее конструктивными возможностями. Полная
совокупность таких операций образует систему операций ЭВМ.
Системы операций мощных современных ЭВМ насчитывают до
полутора сотен различных операции.
Основное отличие арифметико-логических устройств совре­
менных вычислительных машин от аналогичных устройств других
счетных приборов состоит в огромной скорости выполнения
операций. Быстродействие ЭВМ высокого класса определяется
миллионами операции в секунду.
Устройство управления (УУ) координирует работу всех других
устройств машины: вызывает из памяти сведения о выполнении
63
очередной операции, расшифровывает эти сведения, вызывает из
памяти участвующие в операции числа и отправляет их в
арифметико-логическое устройство, а затем пересылает в память
полученный результат.
Устройства ввода и вывода осуществляют связь человека с
машиной. Вся исходная информация перед решением задачи
переписывается в память с помощью того или иного устройства
ввода. Одним из таких устройств является пультовая пишущая
машинка, которой снабжаются многие современные модели ЭВМ.
Исходные данные и программа (на определенном для данной
ЭВМ языке) могут быть введены непосредственно через клавиа­
туру пишущей машинки с параллельным ведением протокола на
бумажной ленте (точно так же, как это делается в обычной
пишущей машинке). Эта же машинка может печатать и резуль­
таты счета. Д ля печати буквенно-цифровой информации ЭВМ
снабжаются такж е специальными построчными печатающими
устройствами, которые отличаются от пишущей машинки тем,
что печатают сразу целую строку символов со скоростью более
чем тысяча строк в минуту.
Другая категория устройств ввода-вывода основывается на
использовании так называемых внешних носителей информации,
к числу которых относятся перфокарты и перфоленты. Перфо­
карта представляет собой карточку из плотной бумаги, на
которой с помощью пробивки отверстий может быть записана
самая разнообразная информация. В некоторых случаях вместо
карт могут использоваться бумажные или целлулоидные ленты.
Разумеется, в каждом из этих случаев ЭВМ снабжается не
только соответствующими устройствами ввода-вывода, но и так
называемыми устройствами подготовки данных, используемыми
для переноса информации на перфокарты (перфоленты).
ЭВМ могут снабжаться и другими устройствами для ввода
и вывода информации. К их числу относятся приспособления для
переписывания информации в память (и обратно) с магнитных
дисков и магнитных лент (аналогично тому, как делается
соответствующая звукозапись). В последнее время получили
широкое распространение устройства визуального отображения
информации (дисплеи), использующие электронно-лучевые труб­
ки, аналогичные трубкам обычных телевизионных приемников.
Дисплеи имеют экран для представления алфавитно-цифровой
и графической информации и клавиатуру для ввода данных.
Использование подобных устройств доставляет человеку массу но­
вых возможностей в использовании ЭВМ.
Существующие в настоящее время устройства вывода
позволяют получать выходную информацию из ЭВМ в самой
разнообразной форме: в виде таблиц, графиков функций или
прочих готовых документов, в виде изображения на экране, в виде
перфокарт, пригодных для нового ввода в машину, и т. п.
Представление информации внутри ЭВМ сильно отличается
64
от принятых форм ее представления среди людей. В машине
информация представляется с помощью электрических сигна­
лов — именно в этой форме производится обработка информа­
ции в арифметико-логическом устройстве. Таким образом,
устройства ввода-вывода выполняют роль преобразователей ин­
формации из форм ее представления, принятых внутри машины,
в формы, удобные для человека, и наоборот. В этом смысле
совершенствование устройств ввода и вывода ЭВМ имеет целью
создание наибольших удобств для человека в общении с машиной.
Схема, изображенная на рисунке 14, дает упрощенное
представление о структуре ЭВМ и взаимосвязи между ее от­
дельными блоками.
Современные мощные вычислительные машины объединя­
ют целые комплексы устройств со сложной структурой взаимо­
действий между ними. Мы ограничимся рассмотрением взаимо­
связи перечисленных выше основных устройств с точки зрения
последовательности действий, из которых складывается один
элементарный такт работы машины.
Программа, на основе которой машина решает задачу,
состоит из совокупности отдельных единиц действия — команд.
Каждая команда предусматривает выполнение машиной некото­
рой операции. Каждая операция предусматривает работу с
конкретными исходными данными и получение результата
операции. Схема, по которой протекает процесс выполнения од­
ной команды, в достаточно общем случае может быть описана так:
1) очередная команда поступает из запоминающего устрой­
ства в устройство управления, где команда анализируется и
определяется тип предусматриваемой ею операции;
2) устройство управления направляет в арифметико-логиче­
ское устройство исходные данные, по которым там вырабатывает­
ся результат операции. Следуя указаниям, содержащимся в
команде, исходные данные или переписываются из памяти, или
считываются из самой команды;
3) результат, полученный при выполнении операции, записы- •
вается в память (в ряде случаев он может оставаться в арифмети­
ко-логическом устройстве или передаваться в устройство управ­
ления), после чего определяется, какая команда должна выпол­
няться следующей, и происходит переход к следующему такту. Контрольные
вопросы
1. Каков перечень основных устройств, входящих в состав
ЭВМ?
2. Каково назначение основных устройств ЭВМ?
3. Какова последовательность действий, из которых склады­
вается один элементарный такт работы ЭВМ?
65
3 З а к а з 43
I
2.2. СИСТЕМЫ СЧИСЛЕНИЯ
Способы представления чисел в памяти ЭВМ связаны с
некоторыми специфичными для машинной обработки информации
формами их записи. Речь идет прежде всего о том, что обще­
принятая десятичная система чисел плохо подходит для аппарат­
ного представления данных в памяти. Д ля изображения произ­
вольного значения одного десятичного разряда требуется устрой­
ство, способное принимать десять устойчивых состояний, что
приводит к ненадежной и экономически невыгодной техниче­
ской реализации.
Простейшей системой счисления является система, исполь­
зующая лишь два знака — 0 и 1. С помощью знаков этой системы
счисления и представляется информация в ЭВМ; при этом
говорят, что ЭВМ работает в «двоичном режиме». Этот режим
работы обеспечивается с помощью устройств, способных удер­
живать два устойчивых состояния, соответствующие двум
значениям — 0 или 1. Каждое такое состояние представляет одну
двоичную цифру, или один двоичный разряд, или, выражаясь
на специальном языке, один бит (Ыпагу §|§| 11 — двоичная цифра).
Наряду с двоичной системой счисления при подготовке инфор­
мации к вводу в память используются и другие формы записи
чисел. Знакомству с ними и посвящается настоящий параграф.
Десятичная система счисления относится к категории пози­
ционных систем. Каждый знак (цифра) в этой системе может
иметь различные значения в зависимости от места (позиции)
в изображении числа. Так, например, в числе 1585 первая слева
пятерка обозначает пять сотен, а вторая — пять единиц. Цифра
8 здесь обозначает восемь десятков, а в числе 0,478 — восемь
тысячных долей единицы. Позиционный принцип построения
чисел — значительное достижение, сильно облегчающее выпол­
нение действий над числами. Особенно ярко проявляются эти
преимущества, если попытаться, например, перемножить два числа
в римской (непозиционной) системе счисления.
Число 10 называют основанием десятичной системы счисления.
С учетом позиционного характера построения чисел каждое
десятичное число может быть представлено как сумма произ­
ведений его десятичных знаков на степени основания, соответ­
ствующие позициям этих знаков. Так, например, число 723,054
может быть представлено в виде 7- Ю2+ 2 ‘ 101+ 3 - 1 0 ° -|+ 0- Ю_ | + 5- 10~2Н-4-10“ 3.
Легко, однако, понять, что использованный выше подход к
представлению числа сам по себе является общим и может преду­
сматривать разложение по степеням произвольного целого числа,
а не обязательно десятки. Возьмем, например, число 297. Р а з­
ложение по степеням десяти имеет вид: 2* 102 4 - 9 ‘ 101+ 7 * 10°.
Однако это же число может быть представлено, например,
и так: 297ю = 4 • 824- 5 • 8 14-1 • 8°.
66
В, данном случае мы имеем представление десятичного чис­
ла 2§7 через сумму степеней числа 8, которое может быть
принято за основание новой системы счисления. Как показывают
коэффициенты полученного разложения, десятичное число 297
в системе счисления с основанием 8 записывается как 451, т. е.
297 ю = 451 в.
Система счисления по основанию 8 называется восьмеричной.
Эта система использует восемь различных цифр: 0, 1,2, 3, 4, 5, 6, 7;
основание системы в самой системе запишется как 10.
Немалый интерес для дальнейшего изложения представляет
система счисления с основанием
16 — шестнадцатеричная
система. Для написания шестнадцатеричных чисел требуется
шестнадцать различных цифр. Десять первых из них совпадают с
соответствующими цифрами десятичной системы: 0, 1, ..., 9. Для
обозначения шести следующих цифр, отвечающих значениям
десятичных чисел 10, 11, 12, 13, 14 и 15, обычно используют со­
ответственно символы А, В, С, О, Е и Р. Так, например,
ВРа6.= 11 • 1б‘+ 15» 1 6°= 191,о.
Легко видеть, что, чем меньше основание системы счисления,
тем длиннее записи чисел в этой системе. Самую длинную запись
приобретают числа в системе счисления с основанием 2. Так,
например, десятичное число 297 в двоичной системе представ­
ляется следующим образом: 1 -28-{-0-27+ 0 -2 6+ 1 • 25-}-0 • 24
+ 1 •23+ 0 -2 5+ 0 - 2 1+ 1 - 2 ° = 1001010012.
Выполнение арифметических действий в позиционных системах
счисления, основания которых отличны от десяти, основывается
на тех же принципах, что и в десятичной системе. Для этого доста­
точно знать таблицы умножения и сложения в соответствующих
системах счисления. В таблице 2.1 приведены всевозможные
суммы одноразрядных чисел в шестнадцатеричной системе счисле­
ния. Правило пользования этой таблицей состоит в следующем.
Результат сложения отыскивается на пересечении строки и столб­
ца, содержащих компоненты действия. Так, например, 6 + 9 = Р, а
Е + С=1А.
Иногда приходится переводить числа из одной системы
счисления в другую. Некоторые из используемых при этом прие­
мов рассмотрим на примерах.
Перевод в десятичную систему всегда может быть произ­
веден с помощью правила подстановки, которое состоит в том, что
все цифры числа и основание системы заменяются их десятичны­
ми эквивалентами, число представляется через сумму произведе­
ний степеней на значения соответствующих позиций, после чего
производится простой арифметический подсчет. Удобство в данном
случае состоит в том, что все действия выполняются в десятичной
системе. Так, например, 320,138= 3-82+ 2 - 8 ‘+ 0 * 8 ° + 1 *8_ | +
+ 3 - 8 ~ 2= 208,171875| о, а также ЗА9,1 )6 = 3* 162+ 10* 161+ 9 Х
X 1 6 °+ 1-16“ ‘ = 937,0 6 2 5 ,о ^
В вычислениях при необходимости могут быть использованы
з*
67
Таблица 2.1
1
3
4
С
О
Е
Р
С
О
Е
Р
10
С
Й
Е
Р
10
11
В
С I О
Е
Р
10
11
12
С
В
Е
Р
Ш
11
12
13
5
6
7
8
9
А
6
7
8
9
А
В
7
8
9
А
В
8
9
А
9
А
В
2
1
2
14
5
3
3
4
•
5
2
3
6
4
5
7
5
6
6
7
8
4
---------------------
5
6
7
8
9
А
В
С \ ^
Е
Р
10
11
12
13
14
6
7
8
9
А
В
С
В
Е
Р
10
11
12
13
14
15
7
8
9
А
В
С
§
Е
Р
10
11
12
13
14
15
16
8
9
А
В
С II® '
1
Р
Ю
11
12
13
14
15
16
17
9
А
В
С
Е
Р
10
11
12
13
14
15
16
17
18
Е
Р
10
11
12
13
14
15
16
17
18
19
А
В
С
Ъ
Е
Р
10
11
12
13
14
15
16
17
18
19
1А
С
О
Е
Р
10
11
12
13
14
15
16
17
18
19
1А
1В
О
Е
Р
10
И
12
13
14
15
16
17
18
19
1А 11В I 1С
Е
Р
10
11
12
13
14
15
16
17
18
19
1А
1В
1С
Р
10
11
12
13
14
15
16
17
18
19
IА
1В
1С
Ш I 1Е
Ю
микрокалькуляторы. Число требуемых действий заметно умень­
шается, если применять компактные вычислительные схемы, суть
которых легко усматривается уже из следующих представлений:
2Р9В = ((2 -1 6 + 1 5 )-1 6 + 9 )-1 6 + 1 1 ;
0,7АЗС = (7 + ( 1 0 + ( 3 + 12/16)/16)/16)/16.
Следует иметь в виду, что конечная в одной системе счисления
дробь может оказаться бесконечной в другой.
Совсем просто переводятся числа из восьмеричной и шест­
надцатеричной систем в двоичную систему счисления. Д ля того
чтобы перевести в двоичную систему шестнадцатеричное число,
достаточно каждую шестнадцатеричную цифру заменить соответ­
ствующей четверкой (тетрадой) двоичных цифр. Точно так же
замена каждой цифры восьмеричного числа соответствующей
ей тройкой (триадой) двоичных цифр приводит к записи этого
числа в двоичной системе счисления. Триады и тетрады, соот68
ветствующие цифрам восьмеричной и шестнадцатеричной систем
счисления, приведены в таблице 2.2 (тетрады для цифр 0—7
шестнадцатеричной системы получаются из соответствующих этим
цифрам триад путем приписывания нуля слева). Приведем приме­
ры перевода восьмеричного и шестнадцатеричного чисел в
двоичную систему счисления:
257,0638=10 101 111, ООО 110 0112;
В0,А9С4,6= 1011 0000, 1010 1001 1100 012Таблица 2.2
0
1
2
Э
000
001
010
011
1
4
5
6
7
100
101
110
111
8
9
А
В
1000
1001
1010
1011
С
э
Е
Р
1100
1101
1110
1111
Образующиеся в результате такого перевода крайние незначащие
нули опускаются.
Имеет место и обратное правило: для перевода двоичных чисел
в восьмеричную (шестнадцатеричную) систему счисления эти
числа разбивают, начиная от запятой, влево и вправо на триады
(тетрады) и заменяют каждую триаду (тетраду) соответствую­
щей ей восьмеричной (шестнадцатеричной) цифрой. Если при этом
крайние триады (тетрады) оказываются неполными, их дополняют
приписыванием нулей (слева или справа). Пусть, например,
требуется перевести в восьмеричную систему число 11010101,1101.
Разбиваем это число влево и вправо от запятой на триады:
11 010 101, 110 I.
Крайние триады дополняем нулями:
011 010 101, 110 100.
Заменяем теперь каждую триаду восьмеричной цифрой, получаем
восьмеричное число 325,64.
Отмеченные приемы перевода из двоичной системы в восьме­
ричную, а также из двоичной в шестнадцатеричную и наоборот
основаны на том, что основания восьмеричной и шестнадцате­
ричной систем счисления являются целыми степенями двойки.
Используя этот же прием, можно быстро переводить числа
из восьмеричной системы в шестнадцатеричную и наоборот
(через промежуточную запись в двоичной системе). Например,
5067,400768= 101000110111,100000000111112= А37,807С,|
Рассмотрим теперь правила перевода десятичных чисел в
восьмеричную и шестнадцатеричную системы счисления. Д ля пере­
вода целых чисел используется алгоритм последовательного
деления исходного числа, а затем образующихся частных на
основание новой системы счисления, причем действия производят­
ся в «старой» системе. Остатки от деления, выписанные в обратШшжШш
69
ном порядке, образуют результат перевода. Пусть требуется
перевести в шестнадцатеричную систему счисления десятичное
число 2291. Имеем:
2291 = 16-143 + 3,
143= 16-8 + 1 5 ,
8 = 1 6 -0 + 8 .
Д ля того чтобы записать в шестнадцатеричной системе счисления
результат перевода, в данном случае надо учесть, что остатку
15 соответствует шестнадцатеричная цифра Р. Выписав все
остатки в обратном порядке, получим результат: 2291 ю =
= 8РЗ|6.
; с.•••:•К'•;*,*»
Д ля перевода дробных чисел используют алгоритм последо­
вательного умножения. При переводе десятичной дроби в восьме­
ричную систему счисления эта дробь умножается на 8, а при
переводе десятичной дроби в шестнадцатеричную систему счисле­
ния исходная дробь умножается на 16. Целая часть произ­
ведения дает первую (после запятой) цифру результата. Д роб­
ная часть произведения снова умножается на 8 (или соответ­
ственно на 16) и т. д. Как и при переводе целых чисел, действия
производятся в исходной системе счисления. Ниже представлена
последовательность действий по переводу в шестнадцатеричную
систему десятичной дроби 0,2175.
0,2175 16 =1 3,48 == 3 + 0,48,
0,48 16 == 7,68 == 7 + 0,68,
0,68 16 == 10,88 == А + 0,88,
0,88 1 6 - = 14,08- = Е + 0,08,
0,08 16 == 1,28 == 1 + 0 ,2 8 ,
0,28 16== 4,48 == 4 + 0,48,
0,48' •16 == 7,68 == 7 + 0,68.
Последняя строка в точности повторяет вторую, из чего
становится ясно, что результатом перевода будет бесконечная
шестнадцатеричная периодическая дробь. Таким образом,
0,2175ю = 0,37 АЕ147АЕ147...,6 = 0 ,3 (7АЕ14),6.
Контрольные
вопросы
1. Чем объясняется использование двоичной системы счисле­
ния для представления информации в памяти ЭВМ?
2. В чем заключается позиционный принцип построения
чисел?
'
~
■
-^
Ш
3. Как осуществляется перевод чисел в десятичную систему
счисления?
4. Как осуществляется перевод из восьмеричной и шестнадца­
теричной систем счисления в двоичную и наоборот?
5. Как удобнее всего переводить числа из восьмеричной
системы счисления в шестнадцатеричную и наоборот?
70
6,
Как осуществляется перевод целой и дробной частей
чисел из десятичной системы счисления в восьмеричную и
шестнадцатеричную системы?
Упражнения
1. Пользуясь таблицей 2.1, произвести следующие действия
над шестнадцатеричными числами:
а) 90АС6 + РАС79;
г) АВС975 — 972АСЕ;
б) 6АСВ5.010704- Е Е 91,А804Е; д) ВВ250,07Е-РАС,96А5.
в) РРРЕ,752А-|- 121.009ВС;
2. Начиная с числа 21АЕ0, выписать 10 шестнадцатеричных
чисел, кратных 2; 4; 8.
3. Выполнить указанные переводы чисел из одной системы
счисления в другую:
а) 670,205» = Х|0;
д) АЕ17,39ВС16= Х 2;
б) ЕА9,ОР6,б = Х10;
е) 37065421б,7758= Х16;
в) 1110101,10100012= Х8;
ж) 9802,068,, 0= Х 16;
г) 11011,10101101012= Х 16;
з ) 7943,2408ю = Х8.
2.3. АРХИ ТЕКТУРА П Е Р В Ы Х П О К О Л Е Н И Й ЭВМ.
П РИ Н Ц И П ПРОГРАММНОГО УПРАВЛЕНИЯ
Под архитектурой ЭВМ понимают общую схему информацион­
ных связей в машине, в том числе и связей по управлению.
Характеризуя собой способы организации вычислительного про­
цесса, архитектура ЭВМ раскрывает перед пользователем ее
функциональные возможности. С момента своего появления ЭВМ
в своем развитии прошли несколько этапов принципиального
усовершенствования технического (аппаратного) и математиче­
ского (программного) обеспечения. Эти этапы связывают с так
называемыми поколениями ЭВМ. В настоящее время говорят уже
о переходе к четвертому и пятому поколениям ЭВМ.
Первые серийные электронные вычислительные машины
относятся к первому поколению ЭВМ. Считается, что эпоха ЭВМ
первого поколения охватывала период от конца 40-х до середины
50-х годов. Элементной базой ЭВМ того времени были вакуумные
электронные лампы. На смену этим машинам пришли ЭВМ,
основу элементной базы которых составляли полупроводнико­
вые элементы (транзисторы и диоды). ЭВМ стали более ком­
пактными, в то время как быстродействие их выросло до несколь­
ких сотен тысяч операций в секунду. Преимущества новых
аппаратных средств ЭВМ позволили реализовать на базе ЭВМ
второго поколения целый ряд новых идей, в том числе развить
программное обеспечение ЭВМ (операционные системы), не
участвующие непосредственно в вычислительном процессе, но
помогающие сделать его более эффективным и удобным для
управления.
71
Между тем доминирующим принципом, используемым в ЭВМ
первых поколений, являлся принцип последовательной обработки
данных, при которой программа после ввода ее в память ЭВМ
выполнялась последовательно — одна команда вслед за другой
над операндами, расположенными в общей памяти для данных и
команд1. Рассмотрение архитектурной организации таких ЭВМ
тем не менее полезно для понимания важнейшего принципа
функционирования ЭВМ — принципа программного управления.
Д л я уяснения принципов программной обработки данных
существенное значение имеет представление о характере внут­
ренней организации памяти ЭВМ. Речь при этом идет об общей
организации памяти, а не о способах физической реализаций
запоминающей среды. Коснемся этого вопроса применительно к
ЭВМ фон-неймановского типа.
Минимальная единица представления информации в памяти
ЭВМ — один бит, выражающий двоичную цифру 0 или 1.
Последовательностями битов могут быть представлены (или,
выражаясь на специальном языке, закодированы) самые разно­
образные объекты: числа, команды, буквы, знаки операций и
прочие символы. Именно в такой двоичной форме в конечном
итоге представляется в памяти машины вся участвующая в
процессе обработки информация.
Память машины представляет собой совокупность некоторого
конечного числа ячеек, каж дая из которых рассматривается
как последовательность определенного числа битов. Количество
битов п, составляющих одну ячейку, определяет ее длину. Длина
ячеек памяти для различных моделей ЭВМ может быть различ­
ной, но основная память отдельной ЭВМ составляется из ячеек
одинаковой длины. На бумаге ячейка памяти может быть
изображена так, как показано на рисунке 15. Биты (разряды)
ячейки памяти при этом обычно нумеруются десятичными номера­
ми слева направо, начиная с нуля.
Возможность обращения к конкретной ячейке памяти обеспе­
чивается с помощью адресации — определенного для данной ЭВМ
способа нумерации ячеек. К аж дая ячейка ЭВМ имеет опре­
деленный физический номер (адрес). Если память ЭВМ состоит
из N ячеек, то ячейки обычно получают последовательные
адреса от 0 до N — 1. Простейшие системы адресации построены
так, что содержимое каждой ячейки памяти может быть исполь­
зовано только через ее собственный адрес (так, в первых ЭВМ
была принята именно такая система адресации). Память в таком
случае конструктивно ориентирована на обработку данных,
неизменно связанных с единым для данной ЭВМ форматом
их представления — с помощью ячеек с неизменяющейся длиной.
1 Такие ЭВМ называют машинами фон-неймановского типа — по имени аме­
риканского математика Д ж . фон-Неймана, разрабатывавшего принцип программного управления для последовательных машин.
72
В дальнейшем память с такой
простейшей структурой будем
называть однородной памятью.
0 12
п -1
Как уже отмечалось выше,
Рис. 15
ЭВМ являются автоматически­
ми вычислительными устройст­
Код операции
Адресная часть
вами с хранимой в памяти
программой (алгоритмом еиа)
Формат команды
ствий). Это означает, что
команды, совокупность которых
и образует программу, хранят­
ся в памяти так же, как
числа и другие данные, над
6) Формат числа
которыми выполняются дейст­
с фиксированной запятой
вия. На рисунке 16 представ­
лены типовые форматы команд
Мантисса
и чисел для некоторой ЭВМ
о
с однородной организацией па­
в) Формат числа
мяти. Команда включает в себя
с плавающей запятой
две основные части: код опера­
Рис. 16
ции (кодовую часть) и поле
адресов (адресную часть). На каждую из этих частей | при
представлении команды в отдельной ячейке памяти отводится
определенное количество битов.
Арифметико-логическое устройство ЭВМ способно выполнять
определенный для данной ЭВМ набор элементарных операций.
Каждой из операций ставится в соответствие определенный
номер, и именно эти двоичные номера (коды операций) поме­
щаются в кодовую часть той ячейки, команда из которой должна
произвести заданное действие. Отсюда следует, что формат
команд должен предусматривать такую длину кодовой части,
которая позволяла бы помещать там код произвольной операции
из системы операций ЭВМ.
В адресной части команды размещаются адреса ячеек, над
содержимым которых производится действие, указанное в кодовой
части. Обычно лишь в незначительной (от общего числа машинных
операций) части команд ЭВМ предусматривается запись в
адресной части не адресов данных, а самих данных. Отмеченный
принцип, имеющий место для большинства команд ЭВМ и характе­
ризующий по этой причине важный аспект обработки информации
в ЭВМ, называют адресным принципом построения команд ЭВМ.
Д ля различных машин число адресов, упоминаемых в адресной
части команды, может быть различным: один, два, три. В зависи­
мости от этого ЭВМ называют одноадресной, двухадресной или
трехадресной. В дальнейшем мы будем рассматривать органи­
зацию памяти ЭВМ, способных обрабатывать данные, форматы
которых предусматривают переменную длину. Достигается это с
помощью команд, также имеющих переменный формат. Для маО
С
»
г-н
19
73
шин с такой организацией памяти понятие адресности команд не
имеет смысла.
и:■■}:
На рисунке 16 изображены также типичные схемы представ­
ления чисел в памяти ЭВМ, как целых (они могут быть обычно
представлены особо), так и дробных.
Кодирование целых чисел производится через их представле­
ние в двоичной системе счисления: именно в этом виде они и
помещаются в ячейке. Крайний левый бит отводится при этом для
представления знака щ с л а (нулем кодируется знак « + »,
единицей — « — »). Если, например, пользуясь этим форматом,
читать двоичную строку 10000101000100101 как представление
в памяти целого числа, то будем иметь:
— 101000100101 г = — 50458=
К2597,0.
Д л я представления дробных чисел в ЭВМ существует спе­
циальный формат чисел с плавающей запятой. Число при этом
представляется в виде N — М • \ V , где М — мантисса, а р —
порядок числа N . 10 означает основание системы счисления.
Если при этом мантисса М удовлетворяет условию 0 , 1 | М| 88 1,
то число N называют нормализованным. Мантисса и порядок
числа при записи его в ячейке памяти представляются определен­
ными группами битов (см. рис. 16, в). Знак числа кодируется
тем же способом, что и для целых чисел’. Заметим, что как для
случая целых чисел, так и для дробных чисел рассмотренные
форматы допускают кодирование не только двоичных, но и деся­
тичных чисел. В последнем случае число перед кодированием не
переводится в двоичную систему счисления, а каж дая десятичная
цифра заменяется четверкой двоичных (так называемое двоично­
десятичное представление). Таким образом, в памяти ЭВМ могут
храниться числа — целые и дробные — как в двоичной системе
счисления, так и в десятичной системе.
Количество ячеек памяти называют также объемом (или ем­
костью) памяти. Объем прямо адресуемой памяти Я и длина
отдельной ячейки этой памяти п оказываются связанными между
собой. Покажем сейчас, в чем заключается эта связь, на примере
трехадресной ЭВМ с однородной организацией памяти.
Пусть память ЭВМ состоит из 2 = 4 0 9 6 ячеек, которые имеют
адреса от 0 до 4095 в десятичной системе счисления. Сразу,
же заметим, что, поскольку адреса ячеек должны будут затем
упоминаться в адресных частях команд ЭВМ, фактически
внутренняя (физическая) адресация ячеек памяти проводится в
двоичной системе счисления. В двоичной системе счисления
адреса ячеек рассматриваемой памяти образуют последователь­
ность чисел от 0 до 111 111 111 111 (так как 409510= 77778=
= 111 111 111 1112) - Уже отсюда видно, что для изображения
1 Знак порядка при представлении в этом формате двоичных чисел мо­
жет неявным образом кодироваться через величину порядка.
74
Кодовая часть
1-й адрес
2-й адрес
3-й адрес
I__________ I_________ I__________I_________ I
О
Н
6 9
20 21
32 33
44
-
Рис. 17
произвольного адреса ячейки этой памяти требуется двенадцати­
разрядное двоичное число, так что длина адресной части команды
трехадресной ЭВМ с такой памятью должна состоять из 12 X 3 = 36
битов. Если при этом на кодовую часть отвести 9 битов, то
получается ячейка памяти длиной в 45 битов. Некоторые из отече­
ственных ЭВМ с трехадресным принципом построения команд
использовали именно эту схему организации памяти. На рисун­
ке 17 дано схематическое изображение формата команды ЭВМ с
такой памятью (снизу указаны номера только граничных битов).
Таким образом, адресность машины при заданном объеме памяти
определяет длину ее ячеек.
Познакомимся сейчас с некоторыми простейшими понятиями,
связанными с написанием машинных команд и организацией
программы для ЭВМ. Воспользуемся для этой цели машиной с
рассмотренным выше трехадресным форматом команд.
Команды трехадресных машин обычно построены так, что в
первых двух адресах команды помещаются адреса исходных
данных операции, а в третьем указывается адрес ячейки, в
которую после выполнения команды подается результат. Во
всяком случае такая схема имеет место для всех машинных
операций, предусматривающих некоторую общую обработку дан­
ных (например, арифметические операции: сложение, умноже­
ние и т. п.). Так, например, если рассматривать следующую
45-битовую строку
000000100000010001000010001001101011100011101
как содержимое некоторой ячейки памяти и читать его как
команду, то мы сначала должны разбить его по схеме, изображен­
ной на рисунке 17.
Код операции
1-й адрес
2-й адрес
3-й адрес
000000100
000010001000 010001001101 011100011101
Как видно, двоичная система счисления мало пригодна для того,
чтобы пользоваться ею в записях на бумаге. В данном случае
удобно воспользоваться восьмеричной системой, учитывая длины
адресов и кодовой части, а также удобство перевода из двоичной
системы в восьмеричную и наоборот (с помощью триад). С
помощью цифр восьмеричной системы счисления рассматриваемая
команда запишется так: 004 0210 2115 3435, что означает
следующее: над содержимым ячеек с адресами 0210 и 2115 про­
делать операцию с кодом 004 и поместить результат в ячейку
75
с адресом 3435. В дальнейших рассуждениях мы будем исполь­
зовать следующие коды простейших арифметических операций:
сложение — 001
вычитание — 002
умножение — 003
деление — 004
После выполнения очередной арифметической команды устрой­
ство управления ЭВМ приступает к выполнению команды,
О
расположенной в следующей по порядку номеров ячейке памяти.
Это означает, что если в нескольких подряд расположенных
ячейках памяти поместить арифметические команды и заставить
машину выполнить первую из них, то после ее выполнения
будут также последовательно выполнены и все другие команды.
Остановка машины достигается с помощью специальной команды
«стоп» (примем код этой операции
равным
017;
будем
также
О
считать, что содержание адресной части команды «стоп» не
влияет на выполнение операции).
Напишем теперь несложную программу. Пусть требуется
вычислить одно значение дробно-рациональной функции у —
—
ах+ Ь
о
,
при определенных значениях переменной х и коэф­
фициентов а, Ь, с п Л.
Прежде всего необходимо сделать распределение памяти для
исходных данных, т. е. выделить ячейки, в которые будут помещены
перед пуском программы а, Ь, с, й и х. Адреса ячеек при рас­
пределении памяти (так же как и в программе) будем писать
в восьмеричной системе счисления. Следует заметить, что при
распределении памяти могут быть использованы произвольные
ячейки, лишь бы только они не были заняты каким-либо другим
материалом. Поместим исходные данные нашей задачи в следую­
щие ячейки: а — 0500, Ь — 0501, с — 0502, й — 0503, х — 0504.
Программу будем писать так, чтобы окончательный результат
счета (значение функции) был выдан в ячейку 3000.
Прежде чем приступить к составлению программы, укажем на
следующие два важных обстоятельства:
а) в тех случаях, когда при выполнении команды машина
использует содержимое некоторой ячеики как аргумент действия
(операнд), это содержимое после выполнения команды остается
неизменным; содержимое ячейки может считываться любое число
раз;
‘
.
б) если в результате выполнения команды или при вводе в
О
память через одно из устройств ввода в ячейку памяти записывает­
ся новое содержимое, то старое содержимое пропадает (стира­
ется).
■: ■ЩдёЙ® часто в программировании возникает необходимость в
использовании ячеек памяти для записи в них промежуточных
результатов. Ячейки, используемые для этой цели, называют
обычно рабочими ячейками. В нашей программе также возни­
кает необходимость использовать рабочие ячейки — для записи
76
значений числителя и знаменателя. Выберем для этой цели ячейки
с адресами 4001 и 4002.
Таблица 2 3
Адрес
ячейки
2000
. 01
02
03
04
05
Программа
1
€03
001
003
002
• 004
017
0500 0504
4001 0501
0502 0504
4002 0503
4001 4002
0000 0000
4001
4001
4002
4002
3000
0000
Пояснения
а•
1
Я1+6=>Я1
с-х=>Я2
Я2—
Я\/Я2=>у
Стоп
Последовательность команд, решающая задачу вычисления
заданной функции, приведена в таблице 2.3. Программа состоит
из шести команд, размещенных в ячейках 2000—2005. Справа от
программы помещено содержательное разъяснение действий,
производимых каждой командой (для рабочих ячеек использова­
ны обозначения Я1 и Я2). Следует ясно отдавать себе отчет в
том, что ЭВМ лишь в том случае решит поставленную задачу с
помощью программы, представленной в таблице 2.3, если исход­
ные данные будут предварительно соответствующим образом
закодированы и переписаны в память в ячейки 0500—0504,
а сама программа размещена в ячейках 2000—2005. И то и другое
может быть переписано в память через промежуточный носитель
информации, например перфокарты. Сначала закодированная на
бумаге исходная информация (программа и числа) пробивается на
перфокартах, которые затем подаются непосредственно в бункер
устройства ввода. Только после этого может быть пущена
программа, начиная с ячейки 2000. В результате ее работы в
ячейку с адресом 3000 будет выдан результат счета.
Рассмотренный пример позволил нам уже хоть в какой-то
степени познакомиться с процессом решения задачи с помощью
ЭВМ. В данном случае речь шла о написании программы не-,
посредственно в кодах машинных операций. Язык программиро­
вания, определяемый совокупностью непосредственных кодов
машинных операций, принято называть машинным (базовым)
языком ЭВМ. Как легко можно было заметить уже из рас­
смотренного простейшего примера, программирование на машин­
ном языке связано с выписыванием большого количества цифр и
затруднено отсутствием в самих средствах описания программ
явной связи с содержанием описываемых действий (в этом можно
быстро убедиться, попытавшись разобраться в программе*
представленной в таблице 2.3, не пользуясь пояснениями).
Аналогичным образом подготавливаются и исполняются
программы в машинах с другой адресностью команд. Так, на­
пример, в машинах с двухадресным форматом команд ячейка
77
I
памяти, содержащая команду,
разбивается на части так, как
показано на рисунке 18.
Выполнение
большинства
Рис. 18
команд в двухадресной машине
использовапредусматривает
ние специальной машинно-выделеннои ячейки обычной для
^
IВ
данной ЭВМ длины; такую ячейку называют сумматором.
этом случае два адреса команды могут использоваться для
указания адресов ячеек, хранящих исходные данные, а для
помещения результата в этом случае будет предполагаться
сумматор. Другие операции, наоборот, могут предполагать указа­
ние в адресах команды адреса одного из исходных данных и
адреса ячейки-результата, а другое исходное данное может
выбираться из сумматора. Использование сумматора предполага­
ется такж е и в машинах с одноадресной системой команд.
Таким образом, объем памяти ЭВМ оказывается непосред­
ственно связанным с длиной отдельной ячейки памяти и, следо­
вательно, с адресностью машин. Разумеется, конструкторам
машин хотелось бы строить машины со все большей памятью,
допускающей прямую адресацию ее ячеек. Однако, как легко ви­
деть, одним из препятствий для увеличения объема непосредственно адресуемой памяти служит возникающее при этом чрез­
мерное возрастание длины ячеек памяти. Такое возрастание
возникает прежде всего в машинах с большой адресностью.
Именно это обстоятельство сдерживало дальнейшее развитие
трехадресных машин. Действительно, как было показано выше,
уже при объеме памяти в 4096 ячеек адресная часть трехадресной
команды требует для своего изображения 36 битов; увеличение
объема памяти до 32 768 = 2 15 ячеек приводит уже к длине адрес­
ной части команды в 45 битов. Д ля команд такая длина ячеек будет
О
приемлемой, но в тех же ячейках памяти должны представляться
и числа! Именно для представления чисел неразумное удлинение
ячеек памяти оказывается невыгодным, ибо чрезмерная точность
представления чисел не всегда необходима, а машина от этого
теряет быстродействие и становится экономически невыгодной.
Наряду с этим в практике использования ЭВМ достаточно
часто возникают случаи, когда становится необходимой увеличен­
ная длина ячеек памяти (например, когда требуется провести
счет с повышенной точностью). В каждом отдельном случае эту
проблему можно решить и для ЭВМ с «короткими» ячейками
путем новой искусственной памяти. Можно, например, использо­
вать спаривание соседних ячеек исходной памяти: условиться
считать первой половинои «длиннои» ячеики, например, ячейку с
четным адресом. В этом случае длина ячеек искусственно
удваивается, однако при этом сильно усложняется программа,
работающая с такой памятью.
Все это говорит о том, что в общем случае однородная
Кодовая часть
1-й адрес
2-й адрес
о
и
78
структура памяти со свойственным ей постоянством длины ячеек и
незыблемой адресностью самой машины оказывается плохо
приспособленной удовлетворять многим условиям, возникающим в
практике использования ЭВМ.
Контрольные
вопросы
1. Какими признаками характеризуется память с однородной
структурой? В чем состоят ее основные неудобства?
2. В чем состоит адресный принцип построения команд ЭВМ?
3. Какая связь существует между длиной ячейки, объемом
памяти и адресностью ЭВМ?
4. Каковы типичные форматы представления чисел и команд
в памяти?
5. В чем основные неудобства программирования на объект­
ном языке ЭВМ?
Упражнения^
1. Программа длиной в 129 команд помещена в память,
начиная с ячейки, восьмеричный адрес которой равен 1067. С ин­
тервалом в 10 ячеек после программы нужно разместить числовой
массив объемом в 250 чисел. Требуется определить адрес ячейки,
которая будет содержать последнее число массива.
(Все числовые данные, кроме адреса ячейки, заданы в
десятичной системе счисления.)
2. Написать программу на объектном языке трехадресной ЭВМ
для вычисления значения квадратного трехчлена у = ах2 + Ьх+ с
(использовать коды операций, рассмотренные в тексте параг­
рафа).
3. Два числа а и Ь записаны соответственно в ячейках с
адресами 5123 и 5124. Какой результат будет получен в ячейке
6500 после выполнения программы?
003 5123 5123 2000
003 5124 5124 2001
002 2000 2001 2001
001 2000 2001 2002
004 2002 2001 6500
017 0000 0000 0000
2.4. ФОРМАТЫ КОМАНД И ДАННЫХ ЕС ЭВМ
Многие слабые стороны архитектуры ЭВМ первых двух
поколений были преодолены в машинах третьего поколения,
широкое появление которых связано со второй половиной 60-х го­
дов. С технической точки зрения переход к ЭВМ третьего поколе­
ния означал прежде всего переход к использованию принци­
пиально новой элементной базы — так называемых интегральных
79
схем (или микросхем). На одном кристалле такой схемы реали­
зуются по нескольку логических функций, из которых затем
компонуются сложные узлы машины. Миниатюрность интеграль­
ных схем позволила в небольших объемах размещать большое
число логических элементов. ЭВМ стали еще более компактными,
в то время как быстродействие существенно возросло —
до нескольких миллионов операций в секунду.
Важнейшей чертой ЭВМ третьего поколения является то, что
они стали представлять собой семейства машин, различных по
производительности, но имеющих одну и ту же архитектуру,
т. е. одинаковую систему команд, одинаковое представление
типов данных, унифицированный набор внешних устройств,
а также в какой-то степени унифицированное программное
обеспечение. Это привело к появлению целого ряда программно­
совместимых машин. В наиболее законченном виде эти идеи были
реализованы американской фирмой 1ВМ, приступившей в 1964 г.
к серийному выпуску ЭВМ третьего поколения ряда 1ВМ/360.
В нашей стране широкое распространение получили ЭВМ третье­
го поколения серии ЕС ЭВМ (Единая система Э В М )1. Перейдем
сейчас к рассмотрению принципов общей организации памяти
ЭВМ этой серии.
Наименьшей адресуемой единицей памяти машин ЕС является
восьмибитовая группа, называемая байтом. Каждый байт
основной памяти имеет свой адрес, состоящий из 24 битов.
Адресация байтов начинается с нуля. Адресация байтов основ­
ной памяти организуется циклически — за байтом памяти с
наибольшим адресом следует байт с адресом «нуль».
Один байт памяти, включающий в себя 8 битов, может пред­
ставлять, например, восьмиразрядное двоичное число или двух­
разрядное шестнадцатеричное число. С помощью одного байта
может быть закодирована и другая, самая разнообразная буквенно-символьная информация. Емкость основной памяти ЭВМ опре­
деляется числом байтов. Из того, что адресация байтов произво­
дится с помощью 24-разрядных двоичных чисел, можно вывести
максимально возможный объем непосредственно адресуемой
основной памяти ЭВМ: максимальное 24-разрядное двоичное
число (число, записанное с помощью 24 единиц) в шестнадцате­
ричной системе счисления имеет вид РРРРР Р , 'что в переводе в
десятичную систему дает:
15-165+ 15-164- Н 5 - 1 6 3+ 1 5 - 1 6 2+ 1 5 - 1 6 + 1 5 = 1 6 777 215.
Учитывая байт с адресом «нуль», получаем память в
16 777 216 байт. Заметим, что объем оперативной памяти
некоторых моделей серии ЕС ЭВМ доходит до 1024 Кбайт
1 Единая система ЭВМ представляет собой ряд программно-совместимых
моделей вычислительных машин третьего поколения: ЕС-1020, ЕС-1040, ЕС-1050,
Е С -1060 и др., разработанных на базе сотрудничества стран социалистиче­
ского лагеря — Болгарии, Венгрии, ГДР, Польши, Чехословакии и СССР.
80
(1 Кбайт = 1024 байтам). Учитывая, что в двоичнои системе
счисления числа записываются чрезвычайно громоздко, для
записи на бумаге адресов машинных полей используют шестнадцатеричную систему счисления, В шестнадцатеричной системе
512 Кбайт предадреса байтов памяти объемом, например,
ставляют собой последовательность шестнадцатеричных I чисел
от 0 до 7Р РРР.
Байты могут обрабатываться в ЭВМ не только по отдель­
ности, но и объединенными группами. Любая группа последо­
вательных байтов (в порядке возрастания их адресов) назы­
вается полем. Адресом поля считается адрес его самого левого
байта, местонахождение поля в памяти определяется именно по
этому адресу. Среди всех полей особое назначение имеют
следующие основные форматы памяти: слово, полуслово и
двойное слово.
Слово представляет собой группу "из четырех последователь­
ных байтов. При этом самый левый байт должен иметь адрес,
кратный 4; именно этот адрес и является адресом слова. Например,
байты с адресами 804, 805, 806 и 807 образуют слово, адресом
которого является 804; в то же время поле, состоящее из байтов
803, 804, 805 и 806, не является словом, потому что его адрес не
кратен 4; также не является словом и группа байтов с адресами
804, 805, 806 и 808, ибо эти байты не являются последователь­
ными.
Полуслово состоит из двух последовательных байтов, причем
адрес левого байта должен быть кратным 2. Адресом полуслова
считается адрес левого байта.
Двойное слово состоит из восьми последовательных байтов
(64 бита). Адресом двойного слова считается адрес левого байта,
этот адрес должен обязательно быть кратным 8.
На рисунке 19 показано взаимосочетание длин и место­
нахождения в памяти байтов, полуслов, слов и двойных слов. Уже
из этой схемы видно, что организация такой памяти конструктив­
но предусматривает возможность обработки данных различного
формата. Местонахождение данных в памяти определяется адресом занимаемого поля, а характеристики длин этих полей и
типов размещенных в них данных явным или неявным образом
указываются в машинной команде. Команды ЭВМ с такой орга­
низацией памяти также строятся с учетом возможностей обра-
Полуслово
Полуслово
Полуслово
Полуслово
Рис. 19
81
ботки данных переменного формата и обладают рядом особен­
ностей.
Как отмечалось выше, одним из недостатков памяти ЭВМ с
однородной структурой является «удлинение» команд ЭВМ,
возникающее при увеличении емкости прямо адресуемой памяти.
Однако байтовая организация памяти, рассмотренная в предыду­
щем параграфе, сама по себе не решает этих проблем. Байтовая
организация памяти лишь создает необходимые предпосылки для
преодоления указанных трудностей, в то время как непосред­
ственное решение вопроса осуществляется с помощью введения
специальных форматов команд для работы с такой памятью,
а также целого ряда аппаратных средств устройства управления
ЭВМ. Сейчас мы коснемся некоторых приемов, принятых во
внутренней организации ЭВМ третьего поколения, обсуждение
которых позволит (хотя бы частично) ответить на следующие
основные вопросы: а) каким способом обеспечивается доступ­
ность содержимого ячеек с «длинными» адресами в «коротких»
командах; б) каким образом в командах ЭВМ предусматривается
возможность обработки данных переменной длины?
Основной характеристикой памяти ЭВМ является ее быстро­
действие, т. е. время выборки и перезаписи информации. Быстро­
действие памяти определяется характеристиками запоминающей
среды и является постоянным объектом усовершенствования для
конструкторов ЭВМ. Помимо основной памяти, рассмотренной в
предыдущем параграфе, ЭВМ снабжаются еще одним видом
памяти — памятью на регистрах (или, как еще говорят, регистро­
вой памятью). Регистр — это электронное устройство, способное
аналогично ячейке памяти хранить двоичную информацию
определенной длины. В различных моделях ЭВМ может быть
несколько регистров с различным функциональным назначением,
которое в каждом случае определено конструктивно. В некоторых
моделях для регистров используются специальные (более дорого­
стоящие) электронные схемы или запоминающие устройства на
тонких магнитных пленках, что позволяет сильно сокращать по
сравнению с основной памятью время выборки информации.
В этом случае частое использование регистров в роли рабочих
ячеек программ может существенно увеличивать общее быстро­
действие машин. Регистровая память по сравнению с основной
памятью очень невелика по объему.
Один из типов регистров, используемых в моделях ЕС ЭВМ,—
это регистры общего назначения, или общие регистры. Будем .
считать, что ЭВМ располагает шестнадцатью общими регистра­
ми, имеющими номера от 0 до 15. Как видно, номера общих
регистров выражаются с помощью одной шестнадцатеричной
цифры (от 0 до Р), откуда следует, что для указания адреса
любого общего регистра достаточно 4 битов. Длина каждого
регистра общего назначения — 4 байта (одно слово). Исполь­
зуются общие регистры в основном для хранения целочисленных
82
Адрес 1~го операнда ! Адрес 2~гаоперанда
К од операции
Рис. 20
Номер
байте
1
2
/?/?
коп
Й1 Д2
ЯХ
КОП
Я/ Х2 В2
А2
85
КОП
Я1 я з В2
А2
51
КОП
55
КОП
3
5
4
б
Форматы^,
команд
\
Номера битов 0
12
и
;
1
1
В1
1.2 В1
7 8 ГГ 1215 1619 20
I
I
Я
<
•
А1
В2
А2
I
31 32 35 36 I
1
47
Рис. 21
операндов. Рассмотрим сейчас некоторые из форматов команд
ЭВМ с байтовой организацией памяти.
Схема команды представлена на рисунке 20. Операнды могут
находиться как в основной памяти, так и в регистрах. Для кода
операции отводится один байт (две шестнадцатеричные цифры).
Максимально возможное число двоичных кодов, которое можно
поместить в одном байте — 28= 256. В действительности же,
например, полная система операций ЕС ЭВМ содержит 144 раз­
личные команды. Команды могут занимать одно, два или три
полуслова (соответственно два, четыре или шесть байтов). Воз­
можность использовать команды различной длины позволяет
более экономно расходовать память под саму программу.
В моделях ЕС ЭВМ используется пять различных форматов
команд (см. рис. 21). Признаки формата команды помещаются
в первом байте команды (формат команды задается кодом
операции). Ниже будут рассмотрены лишь некоторые форматы,
знакомство с которыми позволит понять наиболее существенные
детали обработки данных в машинах с байтовой организацией
памяти.
Формат КК (регистр-регистр).
I Код операции I /?, I Й2
Команда этого формата зани|________________ |______ |______
мает полуслово — два байта
О
7в
Щ п
15
(рис. 22). Второй байт содержит
Рис. 22
83
два четырехразрядных поля для указания номеров двух регистров.
Через этот тип команд проводятся арифметические и логические
операции над операндами, хранящимися в регистрах. При этом
первый операнд выбирается из регистра К 1, второй — из регистра
К2, а результат засылается в регистр К1. Если использовать
знак о для обозначения операции, то формулу выполнения
команд формата РК можно условно записать так:
(К 1 ): = (К1) о (Р 2).
Скобки использованы здесь для обозначения содержимого ре­
гистров: если К — номер регистра, то (К) — содержимое регист­
ра с номером К.
Таблица 2.4
Название операции
И (конъюнкция)
И ЛИ (дизъюнкция)
Сложение
Вычитание
Код
14
15
1А
1В
Таблица 2.5
Пояснения
А
В
0
0
1
1
0
1
0
1
АДВ АV В
I
(К1)
(К1)
(К1)
(К1)
: = (К1) Д (К2)
: == (К 1) V (К2)
: = (К1) + (К2)
: = (К 1) — (К2)
0
0
0
1
0
1
1
1
В таблице 2.4 приведены коды логических и арифметических
операций для команд формата КК. Логические операции вы­
полняются поразрядно над соответствующими битами регист­
ров |— операндов по правилам алгебры логики; значения логи­
ческих функций, соответствующих логическим операциям таб­
лицы 2.4, приведены в таблице 2.5. Арифметические операции
с кодами 1А и 1В (сложение и вычитание) выполняются над со­
держимым общих регистров как над целыми двоичными числами
без знака. Рассмотрим соответствующие примеры.
Предположим, что общие регистры с номерами 5 и 7 хранят
следующую информацию:
Регистр 5—0000 01О А
Регистр 7—0002 6С41
Тогда после выполнения команды
1А 5 7
содержимое регистра 5 станет равным 0002 6Е1В, а содержимое
регистра 7 останется неизменным. При выполнении же команды
1А 7 5,
наоборот, не изменится содержимое регистра 5, а регистр 7 ста­
нет содержать ту же сумму 0002 6Е1В. Заметим, что если при сло­
жении образуется «переполнение» (так называется ситуация,
когда длина суммы превосходит длину одного слова и не вмеща­
ется в общем регистре), то в регистр результата записываются
84
праьые (младшие) .32 бита суммы, а остальные теряются (при
этом в устройстве управления вырабатывается особый признак
и происходит прерывание программы). Прерывание происходит
и тогда, когда при вычитании уменьшаемое оказывается меньше
вычитаемого; в этом случае вычитание происходит так, как будто
к уменьшаемому слева приписана следующая (несуществующая)
единица старшего разряда. Так, если при тех же начальных
условиях выполнить команду 1В7 5, то в регистр 7 запишется
разность 26 А67, а регистр 5 не изменит содержимого.
Если же выполнить* команду 1В5 7, то в регистр 5 запишется
число РЕЕ!) 9599, а содержимое регистра 7 не изменится.
Если же, наконец, исходя из первоначального содержимого
регистра 5 и 7 выполнить команду 15 5 7, то регистр 7 не изме­
нит содержимого, а в регистр 5 запишется двоичное число, пред­
ставляющее шестнадцатеричное число 0002 6 0 0 В . Действитель­
но, расписав содержимое регистров 5 и 7 как 32-битовые двоич­
ные слова и выполнив поразрядно логическую операцию ИЛИ,
мы и получим двоичное число, выражающее число 0002 6 0 0 В :
Регистр 5: 0000 0000 0000 0000 0000 0001 1101 1010
Регистр 7: 0000 0000 0000 0010 0110 1100 0100 000 Г У
Регистр 5: 0000 0000 0000 0010 0110 1101 1101 1011
0
0
0
2
6 0 0
В
Заметим, что регистровая память некоторых моделей ЕС ЭВМ
содержит также 4 регистра для хранения чисел с плавающей
запятой длиной в 64 бита каждый. Эти регистры имеют номе­
ра 0, 2, 4 и 6. Система операций ЭВМ предусматривает ариф­
метические операции в формате Ш? также и над содержимым
регистров с плавающей запятой, например сложение — код 2А,
вычитание — код 2В и т. д. Так, например, команда 2А 4 6 озна­
чает не сложение целых чисел из общих регистров 4 и 6, а сло­
жение чисел из регистров с плавающей запятой 4 и 6 и засылку
результата в плавающий регистр 4.
Рассмотрим сейчас некоторые команды, работающие с ячей­
ками общей памяти ЭВМ. Как уже отмечалось выше, одна из
проблем, возникающих при адресации в случае памяти большой
емкости, заключается в том, что размер адреса ячейки может
оказаться настолько большим, что его нельзя включить в одну
машинную команду. В этом случае используется специальный
прием, связанный с установлением базы (по этой причине сам
прием называют базированием).
Наряду с понятием действительного адреса операнда (Аяейств),
т. е. адреса, непосредственно указанного в одном из адресных
полей адресной части команды, вводится понятие исполнитель­
ного адреса (А^сп) — адреса, указывающего на местонахождение
операнда в момент выполнения команды. Существуют коман85
Д луна Длина
п е р в о г о вт орого
операнда операнда
А д р е с
первого
операнда
ж
Код операции
О
и
4Р
А д р е с
И /порого
операнда
9
Щ
А1
7 8 1112 1516 19 20
В2
3132 3536
Л
А2
47
Рис. 23
ды, для которых Аие,, может Щ совпадать с Адейств. Д ля каждого
из двух операндов в этих командах указывается номер одного
из общих регистров, содержимое которого, называемое в данном
случае базой, прибавляется к действительному адресу операнда
перед выполнением команды. Это сложение производится в уст­
ройстве управления ЭВМ. Таким образом, образование исполни­
тельных адресов проходит по схеме А,сп == А дейСТВ+ В, где В (ба­
за) есть содержимое одного из регистров общего назначения,
номер которого явно указывается в самой команде1. Учитывая,
что размер общего регистра (32 бита) вполне позволяет поме­
стить в нем даже самый максимальный адрес байта основной
памяти, легко заметить, что базирование может существен­
но укоротить команды ЭВМ, сохраняя при этом достижимость
любого байта памяти.
Формат 5 5 (память-память). Команды этого формата выпол­
няются над полями переменной длины в основной памяти. Длина
команд формата 5 5 составляет 6 байтов (рис. 23); первый байт
используется под код операции, а остальные 5 байтов занимает
адресная часть. В командах формата 5 5 предусматривается не
только базирование, но и возможность обработки данных пере­
менной длины. Д ля каждого из двух операндов в адресной части
указываются номера общих регистров, используемых для установ­
ления базы (В1 и В2), а также длины полей (Ы и 1.2), работа
с которыми предусматривается в команде. Каж дая из характери­
стик 1Л, Ь2, В1 и В2, как видно из рисунка 23, задается в коман­
де с помощью одной шестнадцатеричной цифры. Под длиной по­
ля здесь подразумевается число составляющих его байтов, при­
чем каждый из указателей длины Ы и Ь2 всегда на единицу
меньше числа байтов, участвующих в операции. Д ля указания
действительных адресов операндов А1 и А2 в команде использу­
ется по 3 шестнадцатеричные цифры. Так же как и в командах
формата КК, действие в общем случае производится над первым
и вторым операндом, а результат записывается на место первого
операнда (по исполнительному адресу).
Заметим, что если указываемый в команде адрес базы (т. е. адрес
общего регистра) есть 0, то это означает нулевое значение базы, но не ука­
зывает на содержимое общего регистра с номером 0. Это означает, что ре­
гистр с номером 0 не может быть использован в качестве базы.
86
Пусть, к примеру, некоторая команда формата 35 в шестна­
дцатеричной записи имеет вид (КОП
код операции);
КОП 5 5 3 100 3 120.
Используя схему, представленную на рисунке 23, можно заклю­
чить, что эта команда предусматривает выполнение некоторой
операции над 6~байтовыми полями с адресами (3) ~Ь 100 и
(3) + 120, где (3) — содержимое общего регистра с номером 3
(т. е. в данном случае база), и запись результата в 6-байтовое
поле с адресом (3) -4~ 100. Напомним, что адресом поля является
адрес его самого левого байта.
Для иллюстрации принципа базирования и работы с данными
произвольной длины мы рассмотрим несколько конкретных опе­
раций для команд формата 5 5 — две логические и две арифме­
тические операции (коды этих операций даны в таблице 2.6).
Пояснения к выполнению операций используют обозначения,
принятые на схеме рисунка 23.
Таблица 2М
•
Название операции
И (конъюнкция)
И Л И (дизъюнкция)
Сложение десятичное
Вычитание десятичное
я т т
,.т т т *т
.
. .... —
1
■■
.т
..
< • * * * * •
и.,1^1
,-4 ,
!1—
I»т
т ущ
■
. к * ... ■■
...■
—
п Ы Ф
-г—
Код
Пояснения
1)4
□6
РА
РВ
1 ( В 1) + А 1) : = ( I В 1) + А 1) А ( ( В 2 ) + А 2 )
((В1)+А1) : = ( ( В П + А 1 ) V ( (В2)+А2)
( ( В 1) - г А 1) : = ( ( В 1) + А 1) + ( ( В 2 ) 4 А 2 )
( ( В 1) + А 1 1 .— ( СВ 1 | + А 1 ) — ( ( В 2 1 + А 2 1
Логические операции (точно так же, как и соответствующие
операции формата КК) выполняются поразрядно, так что поясне­
ния для этих операций в таблице 2.6 имеют чисто схематическое
значение. Операции десятичной арифметики (к числу которых
принадлежат операции РА и РВ) выполняются над числами,
представленными в так называемой двоично-десятичной кодиро­
ванной форме (упакованный десятичный формат). Такое пред­
ставление числа есть, по существу, представление его в десятич­
ной системе счисления, хотя каждая его десятичная цифра и запи­
сана в двоичной форме.
Числа в двоично-десятичной форме могут занимать поля
произвольной длины (в пределах от одного до шестнадцати
байтов) и рассматриваются как целые числа со знаком в конце
(рис. 24).
Каждая цифра десятичного числа занимает полубайт. Для
----- V---------
Байт
байт
Байт
Рис. 24
87
■Р^ — __
чр> *
изображения знака отводится правый полубайт последнего байта,
в котором ставится шестнадцатеричная цифра С (знак «-|-»)
или О (знак « — »). Так, например, десятичное число — 128 937
в упакованном десятичном формате будет занимать 4 байта:
-----------------------------------
0
1
2
8
9
3
7
э
1
...1
что будет соответствовать следующему двоичному представле­
нию в памяти: 0000 0001 0010 1000 1001 ООП 0111 1101.
Рассмотрим теперь примеры выполнения команд формата 55.
Пусть имеются следующие исходные данные:
Регистр 6
006850—51
006852—53
006854—57
0000 6700
0359
Память
317С
0001 480Р
Посмотрим, как при этих условиях будет выполняться ко­
манда
ЕЙ 1 1 6 150 6 152. Судя по начертанию, команда предусматривает выполнение
логической операции И с операндами, каждый из которых имеет
длину 2 байта. Исполнительные адреса полей, участвующих в
операции:
■
Vк
(6) + 150 = 0000 6700 + 150 = 0000 6850
(6) -+-152 = 0000 6700 -4-152 = 0000 6852
адрес 1-го операнда,
адрес 2-го операнда.
Выполним теперь требуемую операцию, используя соответст ующие исходные данные. Логическая операция выполняется над
содержимым операндов как над двоичными строками:
0359 0000 ООП 0101 1001
317С ООП 0001 0111 П 0 0 А
0000 0 0 0 1 0 1 0 1 1 0 0 0 = 0 1 5 8
Таким образом, в 2-байтовое поле с адресом 006850 запишется
результат, имеющий шестнадцатеричную форму 0158.
Посмотрим, как при тех же начальных условиях будет вы­
полняться команда десятичной арифметики:
РВ 3 3 6 1506 154
Команда предусматривает вычитание 4-байтовых упакован­
ных десятичных чисел с адресами 006850 и 006854 и запись
результата по первому адресу. Выполнение:
0359 317С = + 3 5 9 317
0001 4 8 0 0 = — 1 4 8 0 ~
+ 360 797 = 0360 797С
88
Таким образом, по адресу 006850 будет записано 32-битовое
число 0360797С.
Итак, выше были рассмотрены основные принципы организа­
ции памяти ЭВМ и проведено краткое знакомство с некоторыми
используемыми в машинах форматами представления команд и
данных. Хотя эти сведения и не являются настолько полными,
чтобы теперь можно было непосредственно приступить к програм­
мированию на объектном языке ЭВМ (мы и не ставили перед
собой такой задачи), они тем не менее дают необходимое понима­
ние основных принципов внутримашинной Программной обработ­
ки информации.
Контрольные
вопросы
1. Каковы основные принципы байтовой организации памяти?
2. Что такое регистровая память?
3. Какой вид имеют команды формата РК? Какова длина
команд этого формата?
4. Какого формата данные обрабатываются с помощью опе­
раций с кодом 1А и 1В?
5. В чем состоит принцип базирования?
6. Какой вид имеют команды формата 5 5 ? Какова длина
команд этого формата?
7. Какими средствами в командах формата 55 обеспечива­
ется возможность обработки данных переменной длины?
8. Чем отличается упакованный десятичный формат представ­
ления чисел от формата целых чисел?
Упражнения
1. Относительно каждого из помещенных ниже адресов полей
памяти с байтовой организацией сделать заключение о том, могут
ли они служить адресом полуслова, слова или двойного слова:
а) 000012; б) 000008; в) 001896; г) 0А0С0Р.
2. Начиная с адреса 000000 выписать несколько последова­
тельных адресов, которые могут быть адресами: а) байта; б) по­
луслова; в) слова; г) двойного слова.
3. Пусть в общих регистрах с номерами 3, 4 и 5 хранится
следующая информация:
Регистр 3
0000 270С
0004 6В15
Регистр 4
Регистр 5
0079 А026
Рассматривая в каждом случае это состояние памяти как началь­
ное, определить изменения, которые вносят в память каж дая из
следующих команд:
а) 1А3 4;
в) 1В 3 4;
д) 14 4 3;
б) 1В 5 4;
г) 1В 5 5;
е) 15 4 5.
89
4.
Представить в упакованном десятичном формате (в шест­
надцатеричной и двоичной формах) следующие десятичные
числа:
.
ч : =-V: у":
а)
932;
б) + 2 768;
в) + 5 9 639;
г)
409 781.
5. Имеются следующие исходные данные:
Регистр 4
009А58-59
009А5А-5В
009А5С-51
009А60-63
0000 9000
Память
096С
А17Э
0645 73АС
91 АО 815Э
Рассматривая в каждом случае это состояние памяти как на­
чальное, определить изменения, которые вносят в память каждая
из следующих команд:
а) 0 4 1 1 4 А58 4 А5А;
б) | | 1 1 4 А5А 4 А5С;
в) | А 3 3 4 А 5С 4 А60;
г) 1 В 1 1 4 А5Е 4 А62.
2.5. РА ЗВИТИЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ ЭВМ
I
1
1
1
А ]
1
1
С развитием архитектуры вычислительных машин тесно связа­
но развитие программного или математического обеспечения ЭВМ.
Программное обеспечение имеет не менее важное значение в вы­
числительных системах, чем аппаратурная часть ЭВМ, поэтому
современная вычислительная система представляет собой нераз­
рывное единство технического оборудования и математического
обеспечения.
Началом развития программного обеспечения ЭВМ можно
считать создание библиотеки стандартных программ (СП). В сос­
тав библиотеки включались программы решения наиболее часто
встречающихся задач: вычисления значений элементарных функ­
ций, решение уравнений, вычисление интегралов и т. п. Библио­
тека СП размещалась в памяти ЭВМ (или вводилась в память
перед началом счета), а в программах при необходимости преду­
сматривалось обращение к подпрограммам библиотеки. Схема
такого обращения для простейшего способа организации библио­
теки показана на рисунке 25. Из точки А основной программы
происходит переход к одной из подпрограмм библиотеки (дела-
Основная программа
Библиот ека
Рис. 25
90
СП
ется эхо с помощью специальных команд перехода с возвратом).
После-выполнения подпрограммы происходит возврат в основную
программу и продолжается ее выполнение. При этом библиотеч­
ная программа перед началом работы получает всю необходи­
мую информацию. Так, например, если СГ1 предназначалась
для вычисления значения функции \ (х), то перед обращением
к ней требовалось задать значение аргумента х (делалось это
пересылкой значения аргумента в заведомо определенную ячейку
памяти ЭВМ, на использование которой и была настроена рабо­
та СП). Библиотеки стандартных подпрограмм положили начало
созданию пакетов прикладных программ, превратившемуся в на­
стоящее время в интенсивно разрабатываемое направление со­
вершенствования современного программирования.
Другой значительной вехой в развитии программного обеспе­
чения ЭВМ следует считать создание алгоритмических языков.
Задача эта возникла практически сразу вслед за появлением
ЭВМ, а уже в начале 50-х годов появились первые алгоритмиче­
ские языки программирования. Дело в том, что составление про­
грамм на уровне объектных команд ЭВМ (см. п. 2.3 и 2.4) явля­
ется делом крайне трудоемким, поскольку такое программирова­
ние связывается с выписыванием большого числа цифровых или
буквенных кодов. Для преодоления этого затруднения и были
созданы языки программирования, которые, с одной стороны, яв­
ляются достаточно близкими по изобразительным средствам
к языку человека, а с другой — сохраняют необходимый уровень
формализации, позволяющий осуществлять перевод с этих язы­
ков на объектный язык ЭВМ с помощью самих же ЭВМ. УкаО
занныи перевод осуществляется с помощью специальных про­
грамм-переводчиков— трансляторов, которые составляются для
каждого разрабатываемого алгоритмического языка и которыми
снабжаются ЭВМ, работающие с этими языками.
В зависимости от характера транслятора выполнение прог­
раммы, составленной на алгоритмическом языке Я, может осу­
ществляться двумя методами. В первом случае транслятор пере­
дает команды транслируемой программы к исполнению сразу же,
в ходе их перевода на машинный язык. Этот метод называют ме­
тодом интерпретации, а соответствующим образом построенный
транслятор — интерпретатором
(см. рис. 26).
В другом случае процесс
прохождения программы на
ЭВМ разделяется на два этапа:
сначала происходит перевод
программы с языка Я в экви­
валентную программу на объ­
ектном языке ЭВМ, затем
объектная программа подает­
ся к исполнению (рис. 27).
Рис. 26
О
91
I
-
Рис.. 27
,
В настоящее время на практике используется большое число
различных по назначению и характеристикам алгоритмических
языков. Так, на машинах серии ЕС имеются трансляторы с язы ­
ков Фортран, Алгол, Кобол, Лиси, ПЛ-1, Паскаль.
Последующее развитие программного обеспечения, направлен­
ное на повышение эффективности использования вычислительных
ресурсов ЭВМ, привело к появлению операционных систем, т. е.
особым образом организованной совокупности взаимосвязанных
программ, обеспечивающих взаимодействие всех программных
и аппаратных средств вычислительной системы в процессе ее
эксплуатации. Операционные системы совершенствовались, до­
полнялись новыми компонентами параллельно с развитием аппа­
ратных средств ЭВМ, взаимно стимулируя развитие друг друга.
Важной компонентой операционных систем стали программы,
организующие процесс мультипрограммирования, т. е. много­
программный режим работы. Целесообразность совместного
выполнения на ЭВМ нескольких программ объясняется сообра­
жениями оптимальности использования вычислительного ресур­
са машины. В самом деле, при исполнении одной программы
процессор ЭВМ будет простаивать, как только исполняемая
программа запросит устройства ввода-вывода. А скорости рабо­
ты процессора и устройств ввода-вывода, как известно, резко
различаются, причем это различие в более совершенных скорост­
ных ЭВМ все более и более возрастает. В режиме мультипрограм­
мирования работа вычислительной системы организуется следу­
ющим образом. Как только исполнение текущей программы де­
лает запрос на ввод-вывод, процессор переключается на выпол­
нение программы, ожидающей выполнения из очереди заданий,
а предыдущая исполняемая программа переводится в состояние
ожидания и т. д. Схема прохождения программ в мультипрог­
раммном режиме показана на рисунке 28. Мультипрограммный
режим работы обеспечивается целой системой управляющих про92
грамм. Этой же цели служит и целый ряд аппаратных усовер­
шенствований ЭВМ. Так, управление процессом передачи данных
между ЭВМ и устройствами ввода-вывода в развитых вычисли­
тельных системах обеспечивается так называемым каналом дан­
ных, который представляет собой простейшую ЭВМ с собствен­
ным процессором и своей системой команд. Через канал данных
и проводится система прерываний работы центрального процес­
сора в ходе реализации режима мультипрограммирования.
Легко видеть, что мультипрограммный режим исполнения
потока заданий в том виде, как он представлен выше, обладает*
серьезным недостатком: следуя принципу повышения общей про­
пускной способности вычислительной системы, он не проявляет
«заботы» о скорости прохождения отдельно взятых программ.
Действительно, достаточно появиться в потоке заданий програм­
ме, которая требует значительного времени процессора, как ин­
тересы всех других программ из очереди будут ущемлены. Более
справедливый подход требует иной организации вычислений: з а ­
ранее установить для каждого пользователя какое-либо приемле­
мое для него время выполнения задания и, руководствуясь этим,
прервать исполнение программ, требующих большего времени
процессора, не дожидаясь запроса на ввод-вывод. Системы, обес­
печивающие такой режим работы, называются системами раз­
деления времени. При этом в устройстве управления ЭВМ разме. щаются свои внутренние часы (таймер), которые доступны прог­
раммному управлению и позволяют следить за временем прохож­
дения программ по очереди заданий.
Отдельные аспекты функционирования операционной системы
ЭВМ мы рассмотрели лишь в самых общих чертах. В условиях
параллельного выполнения нескольких программ возникает мно­
жество текущих проблем, к решению которых операционная
система должна быть готова. Это означает, что в составе операци­
онной системы должны быть все необходимые компоненты для
решения любой проблемы, которая может возникнуть в условиях
многопрограммного вычислительного процесса. Тем более услож­
няются функции операционных систем в современных много­
машинных вычислительных комплексах, 'объединяющих сети
ЭВМ.
Программа А
Счёт
Ожидание
Счёт
щ
Программа В
Ожидание
Счёт
Ожидание
Счёт
Рис. 28
93
К о н т р о л ь н ы е
во п р о сы
1. Каковы основные этапы развития программного обеспе­
чения ЭВМ?
2. Каково назначение и принципы организации библиотеки
стандартных программ?
3. В чем состоит преимущество алгоритмических языков
программирования перед объектными языками ЭВМ?
4. Чем различаются методы интерпретации и компиляции при
исполнении программы, написанной на алгоритмическом языке?
5. В чем суть мультипрограммного режима работы ЭВМ?
6. Каково назначение систем разделения времени?
2.6. М И К РО П РО Ц ЕС С О РЫ . МИНИ- И МИКРОЭВМ
Замечательным изобретением 70-х годов нашего века, ока­
завшим существенное влияние на развитие научно-технической
революции, являются микропроцессоры. Микропроцессор — это
большая интегральная схема (Б И С ), которая выполняется в нас­
тоящее время на одном кристалле и обладает способностью пе­
репрограммирования. Каждый микропроцессор можно рассмат­
ривать, таким образом, как миниатюрную ЭВМ — он отличается
от нее лишь отсутствием оперативной памяти и устройств вводавывода. Микропроцессорную БИС можно запрограммировать на
выполнение любой заданной логической функции. Миниатюрный
микропроцессор может быть легко встроен в любой управляемый
объект: станок, прибор, дисплей, автомобиль и т. д.— и, будучи
соответствующим образом запрограммирован, способен сущест­
венно изменять эксплуатационные свойства этого объекта.
Микропроцессоры могут рассматриваться и как новая эле­
ментная база ЭВМ. Современная промышленность выпускает
микропроцессорные наборы, позволяющие конструировать разно­
образные вычислительные системы и устройства. Так, образцом
применения новой микропроцессорной технологии служит произ­
водство микрокалькуляторов (глава 1), большинство современ­
ных моделей которых построено на основе микропроцессора
с жестко заданной программой. Эта программа и определяет
функциональные возможности МК.
Появление микропроцессоров привело к развитию перспектив­
ного класса ЭВМ, характеризующихся небольшими габаритами
и стоимостью, но обладающими большими вычислительными
мощностями, сравнимыми в отдельных случаях с мощностью боль­
ших ЭВМ. Этот класс получил название мини- и микроЭВМ.
Мини-ЭВМ сформировались в самостоятельный класс вычис­
лительной техники из категории специализированных машин,
обслуживающих канал данных большой ЭВМ (см. п. 2.5). Разви­
тие мини-ЭВМ стимулировалось также потребностями систем
автоматизации технологических процессов,
параметрического
ВЕР*!~ д А\~ ^ * *.*
1.
94
’ ^
контроля и оптимизации работы промышленных установок. По
этой Хпричине мини-ЭВМ считаются управляющими машинами,
хотя и обладают всеми свойствами универсальных ЭВМ. К ми­
ни-ЭВМ относится система малых ЭВМ — СМ ЭВМ, производи­
мых с 1974 г. на основе специализации и кооперирования стра­
нами — членами СЭВ. В эту систему входят модели СМ-3, СМ-4,
СМ -1800 и др., выпускаемые в нашей стране.
Характерной особенностью моделей ЭВМ ряда СМ является
то, что они ориентированы на многотерминальный режим работы.
Терминал — это объединение клавиатуры для ввода информа­
ции и устройства для вывода информации. Широко распространен­
ный тип терминала — видеотерминал, т. е. клавиатура с устрой­
ством визуального отображения информации на экране электронно-лучевой трубки (дисплей). Например, ЭВМ СМ-4 имеет
программные и аппаратные средства организации работы как
с близких, так и с удаленных терминалов. Отмеченные возмож­
ности мини-ЭВМ в сочетании с их компактностью и небольшой
стоимостью ставят их в ряд машин, наиболее перспективных для
использования в системах автоматизации обучения.
МикроЭВМ не имеют принципиальных отличий от мини-ЭВМ,
разве что обладают еще меньшими габаритами, благодаря совре­
менной микропроцессорной базе. Существуют микромашины, це­
ликом выполненные на миниатюрном кристалле, размеры кото­
рого легко позволяют встраивать микроЭВМ в различные (в том
числе и бытовые) приборы. Сфера применения микроЭВМ не­
прерывно расширяется, в настоящее время на их основе налажено
производство персональных компьютеров.
К числу отечественных микромашин относятся микроЭВМ
«Электроника С5», «Электроника-60», «Электроника ДЗ-28», ряд
микроЭВМ «Искра»: «Искра-226», «Искра-1256», «Искра-250»
и др. Рассмотрим сейчас в общих чертах архитектурные прин­
ципы построения микроЭВМ на примере машины «Искра-226».
МикроЭВМ «Искра-226» — диалоговая мультипрограммная
ЭВМ с языком программирования высокого уровня Бейсик
(см. главу 4). Машина «Искра-226» имеет двухпроцессорную
структуру. Центральный процессор (ЦП) включает встроенные
программы трансляции и интерпретации программ пользова­
теля, встроенную операционную систему, осуществляющую рас­
пределение ресурсов машины между задачами пользователя, об­
мен данными между устройствами ввода-вывода (УВВ) и маши­
ной, а также обработку прерываний. Канальный процессор (КП)
в соответствии с заданием, поступающим с ЦП, управляет опе­
рацией ввода-вывода, осуществляет обмен данными между ОЗУ
машины и требуемым УВВ. КП имеет восемь одинаковых ка­
налов связи с УВВ, по которым обмен может производиться
одновременно.
В большинстве микроЭВМ используется магистральный прин­
цип структурной организации, т. е. канальный характер связей
Ы окр^а-226
М агистраль
вво д а —вывода
Рис. 29
между различными блоками. Структура микроЭВМ «Искра-226»
показана на рисунке 29. Интерфейсные функциональные блоки
(Б И Ф ), входящие в структуру ЭВМ, предназначены для согласо­
вания специфических особенностей конкретного УВВ с интер­
фейсом ввода-вывода. Интерфейс — это унифицированная систе­
ма связей и сигналов между каналом и БИФ. По определенным
линиям интерфейса идут сигналы с командной информацией,
сигналы обмениваемых данных и сигналы о состоянии внешних
устройств.
МикроЭВМ «Искра-226» изготовляется в шести исполнениях,
которые отличаются исполнениями процессора и номенклатурой
устройств ввода-вывода. На рисунке 30 изображен комплект
устройств первого исполнения микроЭВМ «Искра-226», состоя­
щий из процессора ( / ) , включающего конструктивно символьно­
графический дисплей (2) и клавишное устройство (<?), последовательно-печатающего устройства (4), а также блока внешней
памяти — накопителя на гибких магнитных дисках (5). Размер
экрана дисплея — 31 см по диагонали. Обладая малыми габари- .
Рис. 30
тами, а также развитым языком программирования и достаточно
широким перечнем внешних устройств, включающем дисплей,
печати и графопостроитель, микроЭВМ «Искра-226» получает
широкое распространение в различных сферах хозяйственной,
научной и учебной деятельности.
Контрольные вопросы
щ Что такое Микропроцессор?
2. Каковы основные характеристики и сферы применения
мини- и микроЭВМ?
3. Каковы основные особенности архитектурной организации
микроЭВМ «Искра-226»?
2.7. ЛАБОРАТОРНАЯ РАБОТА № 2
Тема.
ЭВМ.
Формы представления команд и данных в памяти
З а д а н и е 1. Память ЭВМ имеет однородную организацию
и состоит из 4096 ячеек, занумерованных от 0 до 4095 (от 0 до
7777 в восьмеричной системе счисления). Начиная с ячейки Я,
в память должна быть помещена программа, занимающая а по­
следовательных ячеек. Кроме этого, с интервалом в три ячейки
перед программой и после нее нужно расположить массивы чисел
объемами в т\ и т г ячеек соответственно. Требуется узнать
адреса (в восьмеричной системе) начальных и конечных ячеек
числовых массивов. Значения параметров а,
т { и т2 даны
в таблице 2.7 (параметр N задан в восьмеричной системе).
Таблица 2.7
Номер
варианта
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
4
З а к а з 43
а
N
58
2127
0620
2532
4331
1507
3444
5642
122
74
96
137
219
113
243
129
67
88
203
156
231
119
242
196
154
99
170
2001
5763
1005
4635
3077
2106
3117
1102
3324
2517
4062
3371
1766
69
133
100
212
93
152
234
263
99
126
83
206
105
94
127
219
238
192
81
209
168
139
167
78
171
119
306
251
125
312
229
191
148
157
321
207
244
166
151
263
97
З а д а н и е 2. Написать программу вычисления заданного
выражения на объектном языке трехадресной ЭВМ.
2./М
2
2
7 ■— т Ч -п + Г
3. А
4. В
з
й
5. » = Ю - .
^
/1+1
-:V'' - Ц ; I ■
:■а ::И Я й й М Я !•' 1 1 _ р 5В 1
6. ч й й
I ашшш0.
11и1Щ8ЯР
\у
а —а
9. В
ШШ
(х+ тш
—
-----ТЯГ-7Г ,
Р —1
*
1п Ю м Ш Ш
Р0М/
1
-
I V *
П
У?
Г . + ----- ,
1
г2Ч----
13. Р
15. Л
Щ1^2 — ь 1#2
ф М
ш а
16. Л
I
а^2# & + с
аЬс
„\2_,3
«Ш В !
1
19. 2
(4 -+ 1 -).
1
20. в
У
З а д а н и е 3. 1. Десятичное число Л перевести сначала в
шестнадцатеричную систему, а потом в восьмеричную систему
счисления. 2. Восьмеричное число В перевести сначала в шест­
надцатеричную, а потом в десятичную систему счисления. (Исход­
ные данные приведены в таблице 2.8.)
Таблица 2.8
Номер
вари­
анта
I .
| л
о
'
Номер
| вари­
анта
А
' **
'
в*
1
2
3
4
5
6
7
8
9
1°
ш
в
98
988,46
430,98
392,45
9014,72
728,64
1026,71
929,42
683,17
3091,23
498,76
г
3276,04
1327,62
2661,53
6727,34
2571,46
7721,44
6051,32
7326,45
3271,31
2354,87
11
12
13
14
15
16
17
18
19
20
!
287,37
392,71
493,49
384,25
986,78
1239,92
875,53
4093,47
975,39
971,68
2075,47
3676,65
1072,78
2653,47
7450,55
5426,41
3753,37
1207,63
2756.56
3654,77
З а д а н и е 4. Имеются следующие исходные данные, ха­
рактеризующие некоторое состояние регистровой и общей памя­
ти ЭВМ с байтовой организацией памяти:
Регистры: 3
4
5
6
7
8
9
А
0000 А000
0007 06А 1
0001 68С8
0000 вооо
0000 49АР
00 А В 9285
0000 сооо
0008 6905
Общая память:
00АЕ34- 35 974С
00АЕ36 - 3 7 08ЕА
00АЕ38-- З В 4901 8450
00АЕ42-- 4 5 0084 970С
00В978 79 4РРА
00В980 81 4ЕЗВ
00В982 - 8 5 3740 1890
00В986 - 8 9 6079 2560
00С120 21 Р О 1А
00С122 23 8А0Е
00С124 -2 7 9479 987С
00С128 2В 0792 048С
У
в
Рассматривая в каждом случае заданное состояние памяти
как начальное, определить изменения, которые вносит в память
каж дая из следующих команд.
*г
-
а) 1А4 5;
б) 0 6 1 1 6 978 6 982;
Вариант 1
в) Р А 3 3 3 Е42 3 Е38;
г) Р В 3 3 9 124 6 982.
Вариант 2
а) 15 8 А;
б) Р А 1 1 3 Е34 3 ЕЗА;
в) Р В 3 3 6 986 6 982;
г) Р А 3 3 9 128 3 Е38.
Вариант 3
а) 14 5 7;
б) Р В 1 1 9 126 9 12А;
в) Р А 3 3 9 124 9 128;
г) Р В 3 3 9 128 3 Ё42.
ариант 4
а) 15 4 8;
б) Р В 1 1 6 988 6 984;
в) РА 3 3 6 982 6 986;
г) Р В 3 3 9 124 6986.
Вариант 5
а) 1В А 5;
в) Р В 3 3 9 124 9 128;
б) 0 4 1 1 3 Е34 3 Е36;
г) Р А 3 3 6 986 3 Е42.
Вариант 6
а) 1А 7 4;
б) 0 6 1 1 9 120 9 122;
4*
в) Р А 3 3 3 Е42 3 Е38;
г) Р В 3 3 3 Е38 9 128.
99
Вариант 7
а) 1В 5 7 ;
б) 0 4 1 1 6 978 6 980;
в) Р А 3 3 6 9 8 6 6982;
г) Р В 3 3 9 124 3Е 42.
Вариант 8
а) 15 4 А;
б) Р А 1 1 9 12А 9 126;
в) Р А 3 3 9 1249 128;
г) Р В 3 3 6 9 8 6 3 Е38.
Вариант 9
а) 1В А 4;
б) 0 6 1 1 3 Е38 3 Е40;
в) Р А 3 3 6 9 8 2 6 9 8 6 ;
г) Р В З З З Е 3 8 9 128.
Вариант 10
а) 1А8 А;
б) 0 4 1 1 6 980 6 982;
в) Р В 3 3 9 124 9 128;
г) Р А З 3 6 9 8 6 3 Е42.
Вариант 11
в) Р В 3 3 6 9 8 6 6 982;
а) 14 А 7;
г) Р А 3 3 9 124 3 Е38.
б) Р А 1 1 9 126 9 12А;
Вариант 12
а) 15 8 4;
б) Р В 1 1 3 Е34 ЕЗА;
в) Р А З З З Е 4 2 3 Е38;
г) РВ 3 3 6 9 8 6 9 128.
Вариант 13
а ) 1А8 7;
б) 0 6 1 1 9 120 9 128;
Я»
а) 1А5 7;
б) 0 4 1 1 6 982 6 986;
в) РА 3 3 6 982 6 986;
г) Р В 3 3 9 128 3 Е42.
Вариант 14
в) РВ 3 3 9 124 9 128;
г) РА 3 3 6 982 3 Е38.
Вариант 15
а) 15 4 8;
б) РА 1 1 3 Е34 3 Е44;
в) РВ 3 3 6 986 6 982;
г) РА 3 3 3 Е42 9 124.
Вариант 16
а) 1 4 8 7 ;
б) РВ 1 1 9 126 9 12А;
в) РВ 3 3 3 Е38 3 Е42;
г) РА 3 3 9 124 6 982.
Вариант 17
а) 1В 8 А;
б) 0 6 1 1 3 Е36 3 Е44;
в) РА 3 3 9 128 9 124;
г) Р В 3 3 6 9 8 2 3 Е38.
Вариант 18 .
а) 15 8 7;
б) РА 1 1 6 988 6 984;
в) РА 3 3 6 986 6 982;
г) Р В 3 3 9 128 3Е42.
Вариант 19
\
Я* 1В8 5
б) 0 4 1 1 3 Е36 3 Е40;
в) РВ 3 3 9 1249 128;
г) РА 3 3 6 986 3 Е38.
Вариант 20
а) 1А 7 А;
б) 0 6 1 1 6978 6 984;
в) РА 3 3 3 Е42 3 Е38;
г) РВ 3 3 9 124 6 986.
Пояснения к выполнению лабораторной работы № 2.
З а д а н и е 1 связано с использованием восьмеричной сис­
темы счисления в программировании для ЭВМ с однородной
организацией памяти. Результат этого задания удобно оформить
в виде схемы, изображенной на рисунке 31.
А ••
N ••
В
Массив т.
Г
Программа
Я
Е
Массив т
Рис. 31
Здесь А, В, N. С,
Е — адреса ячеек, хранящих началь­
ные и конечные элементы массивов данных. Адрес N в соответст­
вии с условием задачи является исходным данным, а адреса
А, В, С, О и Е должны быть вычислены. Направление возраста­
ния нумерации ячеек на схеме — слева направо.
В з а д а н и и 2 необходимо написать программу на объект­
ном языке трехадресной ЭВМ с однородной организацией памя­
ти. Условные коды основных арифметических операций такой
ЭВМ введены в п. 2.3 главы 2; там же рассмотрен пример, иллю­
стрирующий основные принципы организации объектной програм­
мы (табл. 2.1). При составлении программы удобно придержи­
ваться схемы:
Программа
Номер
ячейки
код
операции
А1
11ояс: нения
А2
АЗ
Перед составлением программы необходимо провести распре­
деление памяти: закрепить определенные ячейки за исходными
данными, за командами программы, выбрать рабочие и ответ­
ные ячейки.
З а д а н и е 3 предусматривает работу с числами в различ­
ных системах счисления, используемых в программировании.
З а д а н и е 4 предполагает знакомство с принципами вы­
полнения некоторых команд форматов НК и 5 5 ЭВМ с байтовой
101
Таблица 2.9
Операция
Код операции
Формат
гч г \
кк
14
15
1А
1В
И
ИЛИ
Сложение целых чисел
Вычитание целых чисел
Ш
И
И ЛИ
Сложение десятичное
Вычитание десятичное
Об
РА
РВ
о С
55
г .
организацией памяти. При оформлении задания для каждой з а ­
данной команды необходимо представить полное изложение после­
довательности выполнения операции, а не только результат.
Исходные данные и команды заданы в шестнадцатеричной
записи. Коды используемых в задании операций сведены в таб ­
лице 2.9. При выполнении задания следует иметь в виду, что
операции 1А и 1В выполняются над двоичными числами, пред­
ставленными в формате целых чисел без знака, а операции РА
и РВ предусматривают данные в двоично-десятичной форме.
Все необходимые сведения и примеры, поясняющие задание 4,
содержатся в п. 2.4 главы 2.
Литература к главе 2
|Ц ■
1. К о р о л е в Л. Н. Развитие ЭВМ и их математическое
обеспечение.— М.: Знание, 1984.
2. К о р о л е в Л. Н. Микропроцессоры и персональные ком­
пьютеры.— М: Знание, 1986.
,3 . Д е в и с У. Операционные системы.— М.: Мир, 1980.
4. Малые ЭВМ и их применение / Под ред. Б. Н. Наумова.—
М.: Статистика, 1980.
5. К о ф ф р о н Д ж . Технические средства микропроцессор­
ных систем.— М.: Мир, 1983.
6. Ж и т о м и р с к и й В. Г., Д о л г и й А. В. Мини- и мик­
роЭВМ. Использование в учебном процессе.— Свердловск: Сверд­
ловский пединститут, 1983.
7. З а в а р ы к и н В. М.. Ж и т о м и р с к и й В. Г., Л а пч и к М. П. Основы информатики и вычислительной техники.—
М.: Просвещение, 1987.
Глава 3
АЛГОРИТМИЗАЦИЯ
3.1. ПРИНЦИП АЛГОРИТМИЗАЦИИ В ИСПОЛЬЗОВАНИИ
ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
Электронные вычислительные машины — это высокопроиз­
водительные средства обработки информации, предназначенные
для решения большого круга самых разнообразных задач. Однако
ЭВМ — это всего лишь автомат (хотя и достаточно «интеллек­
туальный»!), который быстро и точно выполняет предписания,
составленные человеком. Разработка таких предписаний, т. е. з а ­
ведомое проектирование всего хода решения задач,— неотъемле­
мая часть деятельности, связанной с использованием вычисли­
тельных машин.
В самом деле, даже при использовании такого вычислитель­
ного прибора, как микрокалькулятор (гл. 1), иногда полезно за ­
ранее составить и записать на бумаге программу, т. е. перечень
действий, которые должны быть проделаны вычислителем в
процессе счета. Такую программу особенно целесообразно иметь
тогда, когда Предстоит произвести несколько вычислений по одной
и той же формуле. В этом случае сначала составляется и тщатель­
но выверяется программа вычислений, а потом вычислитель
может использовать ее механически, уже не вникая в последова­
тельность производимых действий, что облегчает и ускоряет
процесс счета,
•
Более совершенные вычислительные машины запоминают прог­
раммы вычислений, и тогда человеку остается только составить
программу и поместить ее в память машины, а все остальное —
собственно решение задачи — машина сделает автоматически, т. е.
без участия человека. Это программно-управляемые вычислитель­
ные машины (гл. 2).
Таким образом, общим для всей программно-управляемой вы­
числительной техники является то, что решение задач на ней
осуществляется посредством составления программы. В основу
программы для вычислительной машины кладется алгоритм ре­
шения данной задачи, т. е. точное предписание о последователь­
ности действий, которые должны быть произведены для получения
103
результата. Алгоритм является более общим понятием, чем
программа; в этом смысле программа для вычислительной маши­
ны — это запись алгоритма решения некоторой задачи в виде,
пригодном для данной вычислительной машины. Отсюда следует,
что основная сущность процесса решения задач с помощью
программно-управляемой техники — это разработка алгоритмов
решения задач. Когда алгоритм решения задачи ясен, он без
особого труда может быть представлен на любом языке програм­
мирования с учетом особенностей конкретных вычислительных
машин. Говоря иными словами, главное в решении задач на
программно-управляемых вычислительных машинах — это алго­
ритмизация, т. е. составление алгоритмических предписаний.
Если рассматривать процесс решения задачи в целом, то
разработка алгоритма для вычислительной машины является на
самом деле лишь составной частью того сложного процесса,
который обеспечивает полное решение задачи на ЭВМ. Этап алго­
ритмизации в общем случае наступает лишь тогда, когда ясна по­
становка задачи, когда имеется четкая математическая модель, в
рамках которой будет проходить собственно решение задачи.
С этой общей точки зрения процесс решения задачи на ЭВМ вклю­
чает в себя следующие основные этапы:
1. Постановка задачи.
2. Построение математической модели.
3. Разработка алгоритма (алгоритмизация).
4. Составление программы.
•
'
'
5. Реализация программы на ЭВМ.
6. Анализ (интерпретация) результатов.
Полный процесс решения всегда сложен уже потому, что он
всегда включает извечную проблему: как решать задачу? С этой
точки зрения первые два пункта из указанной выше последова­
тельности этапов в определенной ситуации могут оказаться ре­
шающими. В самом деле, во многих случаях точная формулировка
задачи, поиск адекватной математической модели составляют ос­
новную трудность в поиске метода решения, который затем и при­
водит к разработке алгоритма. В то же время хоть сколько-нибудь
однозначных рекомендаций для выполнения этих первых шагов не
существует. При обучении методам разработки алгоритмов и
программирования по этой причине используют задачи, формули­
ровка которых заведомо освобождает от прохождения этих
«неприятных» этапов. В решении таких (учебных) задач основная
роль действительно принадлежит алгоритмизации.
Следует заметить, что алгоритмизация, как метод, на кото­
рый опирается взаимодействие человека с программно-управляе­
мой техникой, имеет широкие сферы применения в современном
мире. Так же как и моделирование, алгоритмизация — это общий
метод кибернетики. К реализации определенных алгоритмов сво­
дятся процессы управления в различных системах. С построением
алгоритмов связано и создание самых простейших автоматических
104
устройств, и разработка автоматизированных систем управления
сложнейшими производственными процессами, и построение ав­
томатизированных систем обучения (АСО). Истоки алгоритмиза­
ции лежат в сугубо теоретической области современной мате­
матики
теории алгоритмов, однако сама она выступает скорее
всего как набор определенных практических приемов, особых
специфических навыков рационального мышления об алгоритмах.
Роль алгоритмизации в жизни человека определяется не
только рассмотренными выше научно-техническими аспектами ее
использования. Алгоритмический подход, обращение к «бытовым»
алгоритмам неотделимы от повседневной жизни людей, от их обыч­
ной работы. В подавляющем большинстве случаев результат дея­
тельности человека прямо зависит от того, насколько четко он
чувствует алгоритмическую сущность своих действий: что делать
в каждый момент, в какой последовательности, каким должен быть
итог действий и т. п. Все это определяет особый аспект культуры
мышления и поведения, характеризующийся умением составлять и
использовать различные алгоритмы.
Не могут быть оставлены без внимания принципы алгорит­
мизации и в процессе обучения. И речь идет не только об автома­
тизации алгоритмов самого обучения (построение и внедрение
АСО), но и о выделении линии алгоритмов в содержании обу­
чения. Это относится и к преподаванию школьных дисциплин.
Вхождение в алгоритмическую природу понятий не только по­
могает более четко уяснить их смысл, но и подготавливает к
последующему восприятию основных принципов использования
программно-управляемой вычислительной техники.
Контрольные
вопроса
1. Каковы основные этапы решения задачи с помощью прог­
раммно-управляемой вычислительной техники?
2. В чем состоит значение этапа алгоритмизации в этом
процессе?
3. Чем определяется роль алгоритмизации в современном
мире?
3.2. АЛГОРИТМЫ И СПОСОБЫ ИХ ЗАПИСИ
Как уже отмечалось выше, понятие алгоритма относится к
числу фундаментальных математических понятий. Вместе с тем
для ознакомления с методами алгоритмизации в связи с записью
программ для вычислительных машин нет необходимости обра­
щаться к строгому определению этого понятия.
Итак, алгоритм — это точное и полное предписание о после­
довательности выполнения конечного числа действий, необхо­
димых для решения любой задачи данного типа
Термин «алгоритм» возник в результата ^европеизации»
Шв
имени среднеазиатского математика аль-Хорезми, который в
IX в. описал правила выполнения четырех основных арифмети­
ческих действий над числами в десятичной системе счисления.
Правила эти и сегодня служат простейшими примерами мате­
матических алгоритмов.
Таким образом, понятие алгоритма возникло и используется
давно, значительно раньше появления ЭВМ. Тем не менее широ­
ким распространением это понятие обязано основополагающей
идее автоматизации поведения исполнителя:автомата, реализуе­
мой на рснове алгоритма. В ряду всевозможных автоматов ЭВМ
является лишь частным (хотя и наиболее впечатляющим) при­
мером такого исполнителя. Наша задача в данном случае заклю­
чается в том, чтобы научиться составлять записи алгоритмов,
причем делать это так, чтобы воображаемый при этом исполни­
тель (человек, робот, ЭВМ) мог однозначно и точно следовать
предписаниям алгоритма и эффективно получать определенный
результат. Это накладывает на записи алгоритмов целый ряд
обязательных требований, суть которых вытекает, вообще говоря,
уже из приведенного выше неформального толкования понятия
алгоритма. Сформулируем эти требования в виде перечня свойств,
которым должны удовлетворять алгоритмы, адресуемые зад ан ­
ному исполнителю.
1. Одно из первоначальных требований, которое предъявляется
к алгоритмической записи, состоит в том, что описываемый процесс
должен быть разбит на последовательность отдельных шагов.
Возникающая в результате такого разбиения запись представляет
собой упорядоченную совокупность четко разделенных друг от
друга предписаний (директив, команд), образующих прерывную
(или, как говорят, дискретную) структуру алгоритма: только вы­
полнив требования одного предписания, можно приступить к вы­
полнению следующего. Рассмотренное свойство алгоритмов на­
зывают свойством дискретности.
2. Используемые на практике алгоритмы составляются с
ориентацией на определенного исполнителя. Чтобы составить для
него алгоритм, нужно знать, какие предписания этот исполнитель
может понять и исполнить, а какие не может. Дело в том, что у
каждого исполнителя имеется свой перечень предписаний, кото­
рые для него понятны и которые он может исполнить. Такой
перечень называют системой предписаний (или системой команд)
исполнителя алгоритмов. "Понятно, что, составляя запись алгорит­
ма для определенного исполнителя, можно использовать лишь те
предписания, которые имеются в его системе предписаний.
Так, обычные адресуемые человеку «бытовые» алгоритмы
по меньшей мере предполагают, чтобы их исполнитель умел чи­
тать на использованном для записи алгоритма языке, т. е. обладал
элементарной грамотой. Разумеется, кроме того, подразумевается,
что он в состоянии понять и исполнить все те действия, кото­
рые предусмотрены предписаниями алгоритма.
Зто свойство алгоритмов будем называть свойством понят­
ности,
3.
Будучи понятным, алгоритм не должен все же содержать
предписаний, смысл которых может восприниматься неоднозначно.
Это означает, что одно и то же предписание, будучи понятным
разным исполнителям, после исполнения каждым из них должно
давать одинаковый результат.
В данном случае речь фактически идет о том, что запись
алгоритма должна быть настолько четкой, настолько полной и
продуманной в деталях, чтобы у исполнителя никогда не могло воз­
никать потребности в принятии каких-либо самостоятельных реше­
нии, не предусмотренных составителем алгоритма. Говоря иначе,
алгоритм не должен оставлять места для произвола исполнителя.
Поэтому такие предписания, как, например, «взять две-три ложки
сахарного песку», «через несколько минут снять трубку с рычага»,
«умножить х на одно из двух данных чисел а и Ь», не могут
встречаться в алгоритмах. Очевидно, что, понятные в определен­
ных ситуациях для человека, предписания такого типа могут по­
ставить в тупик робота. Кроме того, в алгоритмах недопустимы
такие ситуации, когда после выполнения очередного предписания
алгоритма исполнителю неясно, какое из предписаний алгоритма
должно выполняться на следующем шаге.
Отмеченное свойство алгоритмов называется свойством оп­
ределенности или детерминированности.
4.
Наиболее предпочтительными являются алгоритмы, обес­
печивающие решение самого широкого класса задач данного типа.
В простейшем случае эта вариативность алгоритма обеспечивается
возможностью использовать различные допустимые значения ис­
ходных данных. Так, например, алгоритм (или программа) вы­
числения по формуле у = ( 1п -фс)2 на микрокалькуляторе «Электро­
ника МК-41»
1п
X
может применяться не для одного значения х, а для всех х > 0 .
Другой пример: решение квадратного уравнения ах2 Ьх-|-с — О
в области действительных чисел может быть найдено по формуле
_ -* ± У 0
Та
которые применимы не для одного, а для многих квадратных урав­
нений с коэффициентами а, Ь и с, удовлетворяющих условию
------------------ш
"
,
------------ ’
Это свойство алгоритмов называется свойством массовости.
5.
Обязательное требование к алгоритмам — результатив­
ность. Смысл этого требования состоит в том, что при точном
исполнении всех предписаний алгоритма процесс должен пре­
кратиться за конечное число шагов и при этом должен быть
получен какой-либо определенный ответ на вопрос задачи.
107
Итак, приступая к разработке алгоритмов, составитель дол­
жен придерживаться перечисленных выше требований. Учитывая,
что сама задача составления алгоритма не имеет смысла до тех
пор, пока четко не определены возможности исполнителя, следует
Г'
начинать с уточнения системы его предписании, система предпи­
саний исполнителя определяет характер языка, на котором долж ­
на выполняться запись алгоритма. По этой причине понятия
«алгоритм» и «язык» являются понятиями взаимосвязанными. В
этом смысле можно отметить, что сформулированные выше
свойства алгоритмов имеют значение не столько сами по себе,
сколько в приложении к конкретным формам представления ал­
горитмов.
Ознакомление с простейшими типами алгоритмических пред­
писаний мы будем вести с ориентацией на исполнителя, возмож­
ности которого (там, где это не имеет принципиального значения)
определены не слишком строго. В дальнейшем, при переходе к
средствам представления алгоритмов, приближающихся к «ма­
шинному» стандарту требований, особенностям языка будет уде­
лено больше внимания.
Алгоритмы можно описывать многими различными способами,
и в современной практике реально используется довольно мно­
го алгоритмических языков различного уровня. В каждом отдельном случае выбор языка зависит от ряда,обстоятельств, и прежде
всего от того, какого рода алгоритмы необходимо с его помощью
—
описать, а также для кого предназначается описание —
ны или человека. Ниже приводится обзор некоторых употреби­
тельных способов описания алгоритмов, рассчитанных не на маши­
ну, а на человека. Уже эти простые (и не очень жестко регла­
ментированные) способы задания алгоритмов позволяют обна­
ружить некоторые общие подходы к алгоритмизации — подходы,
широко используемые и при составлении программ для электрон­
ных вычислительных машин. К тому же такой обзор позволяет
подчеркнуть связь между алгоритмизацией и содержанием школь­
ного обучения.
Формулы. Математические формулы вместе с правилами их на­
писания представляют собой своеобразный алгоритмический язык,
с успехом используемый для описания вычислительных алгоритмов
некоторого специального вида. Так, например, формула
лО
+ л ОЯ
(3.1)
5
~2
задает алгоритм вычисления площади поверхности цилиндри­
ческого тела с диаметром Ц и высотой Н.
Строго говоря, формула определяет последовательность дей­
ствий не столь однозначно, как того требует понятие алгоритма
(в частности, свойство определенности). Вместе с тем известно,
что выбор любого порядка действий при соблюдении установлен­
ных в математике правил не отразится на результате. В обычном
О
_
108
. 'г*
2*—
л
' ••' Г
случае порядок действий по формуле
регулируется исполнителем-человеком. В алгоритмических языках,
используемых в программировании
для ЭВМ, обычно предусматривает
ся возможность задания вычислений
непосредственно формулами в обыч­
ном математическом смысле; это
означает, что ЭВМ в данном случае
«обучена» определять правильный
Рис. 32
порядок действий по виду формулы.
Алгоритм, изображаемым обычной формулой, относится к не­
которому, весьма узкому, классу алгоритмо
называемых
линейными. Так называются алгоритмы, последовательность
операций в которых определена самой структурой алгоритма и не
зависит от конкретных значений входных данных. Таким является,
например, приведенный выше формульный алгоритм вычисления
площади поверхности цилиндра.
Одних лишь линейных алгоритмов оказывается недостаточно
для описания уже самых простейших вычислительных процессов.
Так, например, алгоритм вычисления функции
1п х, х
1,
(3.2)
У
1 — х, х
1
(рис. 32) уже не является линеиным, так как в нем заложена
операция выбора одной из формул в зависимости от заданного
значения х.
Табличный способ . Запись вычислительного алгоритма в форме
таблицы широко используется при организации вычислений по
формуле с пооперационной регистрацией промежуточных резуль­
татов (см. гл. 1). В этом случае расписка формулы на после­
довательность элементарных действий, обеспечиваемых имеющим­
ся в наличии вычислительным средством, есть не что иное, как
определение последовательности шагов (указаний) вычислитель­
ного алгоритма. Так, табличный алгоритм вычисления по формуле
(3.1) может иметь вид таблицы 3.1. В этой таблице приведены
Таблица 3.1
О
12,6
19,3
; . 6.8
Н
лО
л О2
л 0 2/2
пОН
5
8,9
14,2
5,4
39,58
60,63
21,4
498,7
1170
146
249,4
585,0
73,0
352
860,9
116
600
1446
190
вычисления площади поверхности цилиндра по правилу подсчета
цифр для трех пар исходных значений Д и Я. (Если они выраже­
ны, например, в сантиметрах, то результат 5 имеет наименова­
ние см2.)
109
Табличная форма записи алгоритма особенно удобна тогда,
когда требуется вычислять не одно, а несколько значений одного
и того же выражения для различных значений входных величин.
Программы для МК. В связи с привлечением для вычислений
микрокалькуляторов возник (хотя и довольно-таки условный)
язык для записи вычислительных алгоритмов (программ) для МК.
Алгоритм для вычислений на микрокалькуляторе непрограмми­
руемого типа — это, по сути дела, зафиксированный на бумаге
перечень клавиш, нажатие которых в заданной последователь­
ности приводит к решению данной вычислительной задачи. При
этом, как это и делалось в главе Ц ввод чисел при записи таких
программ не расписывается поклавишно. В отдельных случаях
есть смысл использовать дополнительные указатели, например
стрелки перехода. Так, программа циклических вычислений пло­
щади поверхности цилиндра на МК-41 по формуле (3.1) для
различных значений О и И может быть изображена следующим
образом:
Ы
I Ц 2
2
Н
"
Здесь короткой вертикальной стрелкой обозначен момент занесе­
ния результата вычислении в таблицу, а длиннои — переход к на­
чалу вычислений для очередных значений исходных данных. Ито­
говая таблица в данном случае, помимо столбцов для исходных
данных, содержит лишь столбец для записи окончательного
результата (табл. 3.2). Запись алгоритмов для программируемых
МК также выполняется на основе некоторых условных обозна­
чений (см. гл. Ц п. 1.5).
Словесная запись алгоритмов. Форму словесной записи имеют
Таблица 3.2
О
И
12,6
19,3
6,8
8,9
14,2
5,4
5
600
1466
190
многие «бытовые» алгоритмы, часто используемые в повседневной
практике: как приготовить кофе (порядок действий обычно описан
на коробке), как позвонить по междугороднему телефонуавтомату (инструкция в телефонном справочнике) и т. п. Осо­
бенность словесных представлений алгоритмов в том, что таким
способом при желании могут быть описаны любые алгоритмы,
в том числе и вычислительные.
Д ля достижения большей четкости в словесной записи алго­
ритма отдельные указания (шаги) алгоритма удобно нумеровать.
110
Для задания вычислительных действий будем использовать знак
операции присваивания : = , употребляемый в некоторых офици­
альных алгоритмических языках программирования. Смысл этого
знака состоит в следующем: после выполнения, например,
указания х: = А (читается: <их присвоить А ») переменная х теряет
свое прежнее значение и приобретает (присваивает) значение,
полученное после выполнения всех действий, предусмотренных
формулой А. Так, например, после выполнения указания у". = х 2-\+ 3 при х — 2 переменная у будет иметь значение 7. При описании
нелинейных (разветвляющихся) алгоритмов используется предло­
жение вида «если Р, идти к Ы», где Р — проверяемое условие,
а N — номер одного из указаний в записи алгоритма. При
составлении описании алгоритмов можно придерживаться сле­
дующего простого правила, существенно укорачивающего записи:
если в процессе выполнения очередного указания явно нё со­
общается, к какому указанию после выполнения данного нужно
переити, то это означает, что переходить нужно к указанию,
следующему за данным в порядке возрастания их номеров.
Так, например, если х = 3 и выполняется указание
4. если х < 0 , идти к 7,
то произойдет переход на указание с номером 5. Для безусловного
перехода к указанию с заданным номером используется указание
«идти к Ы*.
Используя этот несложный аппарат, можно составлять словес­
ные описания алгоритмов, близкие по своей сути к программам
на официальных алгоритмических языках. Так, для примера,
запись разветвляющегося алгоритма вычисления по формулам
может иметь вид:
Щ чтение х
2. если х > 1, идти к 5
3. у : = 1 — х
4. идти к 6
5. у : = \ п х
6. запись у
7. конец
В приведенном описании использованы специальные указания
«чтение» и «запись», обеспечивающие соответственно задание
значений исходных данных и выдачу результатов вычислений.
Указание «конец» означает прекращение исполнения алгоритма.
Все эти указания имеют существенное значение в алгоритмах,
адресуемых исполнителям-автоматам.
Схемы алгоритмов. Это графический способ записи ал горит111
запись у
Рис. 34
мов, имеющий большое применение в практике составления
программ для ЭВМ. Схема алгоритма представляет собой систему
определенным образом связанных между собой блоков, изобра­
жаемых в виде плоских геометрических фигур. Д ва основных
типа указании
арифметические и логические — изображаются
различными фигурами (см. рис. 33). Арифметические указания (рис. 33, а) не приводят к етвлениям и имеют всегда один
выход. Логические же указания (рис. 33, б) специально исветвлений
пользуются для организации И
Н Ц Р Я Я Иив Нвсегда
НЦШ Н
НЯНЦ
Н
имеют
два
выхода. Если проверяемое условие соблюдается, то происходит
выход по стрелке «-}-»> если не соблюдается — по стрелке « — ».
Логический элемент (элемент принятия решения) соответствует в
обычной словесной записи алгоритма указанию «если».
На рисунке 34 приведена схема алгоритма вычисления зн а­
чения функции по формулам (3.2). Схема состоит из одного
логического элемента (один вход, два выхода) и четырех арифме­
тических элементов (у каждого один вход и один выход). Со­
держание предписываемых действий, так же как и проверяемые
условия, записано внутри соответствующих блоков. Исходя из
соображений наглядности, схемы алгоритмов часто снабжают
особыми блоками «начало» и «конец», изображаемыми в форме
овалов. Вместо слова «начало» полезнее записывать наименование
алгоритма.
Контрольные
вопросы
1. Что такое алгоритм?
2. Каким основным свойствам должны удовлетворять алго­
ритмы?
3. В какой степени различные неформальные способы пред­
ставления алгоритмов удовлетворяют свойствам этого понятия?
\
Упражнения
Г. По заданным формулам составить вычислительные алгорит­
мы в виде таблицы и программы для МК:
а) 5 = ^ —
( 5 — площадь боковой поверхности конуса,
ш'
Й — диаметр основания, / — образующая).
б) 1 = —~~г\ (I — частота собственных колебаний в контуре,
2л-\ДГС '
— индуктивность катушки, С — емкость конденсатора).
2.
Составить словесные описания и схемы разветвляющихся
алгоритмов: а) нахождения абсолютной величины числа; б) поис­
ка большего из двух чисел.
3.3. СТРУКТУРНЫЙ ПОДХОД К РАЗРАБОТКЕ АЛГОРИТМОВ
Разработка алгоритмов решения задач на ЭВМ — дело,
требующее специального навыка, большой изобретательности и
постоянного внимания. Как показывает, однако, программистская
практика, значительная часть рабочего времени программистов
уходит на выявление и исправление логических ошибок, а
также на модификацию разрабатываемых участков программ
в связи с изменением каких-либо внешних условий. Для дости­
жения требуемой продуктивности программирования необходимо
разрабатывать надежные с точки зрения правильности алгоритмы,
■Причем делать это так, чтобы они при необходимости могли быть
легко модифицированы. Таким образом, желательно, чтобы ал­
горитм в процессе разработки удовлетворял следующим тре­
бованиям:
был понятным, т. е. легко воспринимаемым; это особенно
важно в тех случаях, когда приходится читать «чужие» алгорит­
мы;
->У
алгоритм должен быть легко проверяемым;
алгоритм должен допускать возможность его модификации
без существенной перестройки всей структуры.
Д ля достижения указанных свойств при разработке алгорит­
мов придерживаются особой методики, называемой структурным
подходом. При структурном подходе к конструированию алгорит­
мов алгоритмы как бы «собираются» из трех основных (базовых)
структур: РАЗВИЛКА, ЦИКЛ, СЛЕДОВАНИЕ, каждая из ко­
торых имеет один вход и один выход.
РАЗВИЛКА (см. рис. 35) состоит из логического элемента с
проверкой некоторого условия Р и функциональных блоков 51, 5г,
которые в простейшем случае являются арифметическими элемен­
тами. Развилка может быть двух видов: полная условная кон­
струкция (рис. 35, а) и неполная условная конструкция
(рис. 35, б ).
Базовая структура ЦИКЛ также может быть двух видов
*
■
- .
113
Рис. 35
а)
5)
Рис. 36
(рис. 36). В состав цикла входит логический элемент с проверкой
условия Р и функциональный блок 5, называемый телом цикла.
В простейшем случае 5 является обычным арифметическим эле­
ментом. Как следует из структуры цикла, тело 5 может при
определенных условиях выполняться неоднократно. В первом
случае (рис. 36, а) блок 5 размещен после проверки условия Р,
так что может оказаться, что тело Ц не выполнится ни разу; этот
вариант структуры Ц И К Л называется ЦИКЛ-ПОКА. В этом слу­
чае Р называется условием продолжения цикла (всякий раз,
когда Р истинно, тело 5 выполняется). Во втором случае
(рис. 36, б) блок 5 расположен до проверки логического ус­
ловия Р, так что в этом варианте цикла тело 5 в любом случае
будет выполнено по крайней мере один раз; этот вариант струк­
туры Ц И К Л называют Ц И К Л -Д О . Здесь Р является условием
выхода из цикла (как только Р становится истинным, вы­
полнение цикла завершается). Тот или иной вариант структуры
Ц И К Л используется при разработке алгоритмов в зависимости
от особенностей конкретной задачи.
Базовая структура СЛЕДОВАНИЕ изображена на рисунке 37.
Эта структура состоит из двух функциональных блоков 5 | и 5г,
каждый из которых в простейшем случае может быть арифмети­
ческим элементом. Структура СЛЕДОВАНИЕ означает, что два
функциональных блока могут быть размещены друг за другом.
Вслед за этим принимается соглашение: при составлении алгоритмов разрешается использовать
только три указанные базовые струк­
туры. При этом разрешается такж е
Рис. 37
каждый из функциональных блоков
Ш
114
*
Рис. 38
5, 51 и «$2 заменять любой из базовых структур. Понятно,
что такое соглашение позволяет строить как угодно слож­
ные по содержанию алгоритмы, развивая их не только «вширь»,
но и в «вглубь». На рисунке 38 изображен, для примера, структур­
ный алгоритм, который представляет собой следование функцио­
нального блока 51 и структуры ЦИКЛ-ПОКА. При этом тело
цикла представляет собой полную условную конструкцию (об­
ведено пунктиром).
Конструируемые таким путем алгоритмы имеют четкую и ясную
структуру, легко поддаются проверке, так как состоят из ограни­
ченного числа различных блоков, устроенных аналогично. Рас­
смотрим примеры составления структурных схем алгоритмов.
П р и м е р 3.3,1. Алгоритм поиска большего из трех чисел
(рис. 39).
Алгоритм представляет собой следование двух развилок (на
рисунке они выделены пунктиром). В первой (полная условная
конструкция) отыскивается большее из двух чисел а и Ь и большее
из них становится значением переменной у. Во второй развилке
(неполная условная конструкция) значение у сравнивается с
третьим числом, и если у < с , то у заменяется значением с, в про­
тивном случае у остается без изменения. Таким образом, в процес­
се выполнения алгоритма переменная у будет иметь своим значе­
нием большее из значений а, Ь и с. При программировании
I----------------------------- 1
I------------------------------- !
1"х-лнзбое
1 число"
решении
нет"
Рис. 40
опустить
шар В белую
корзину
Вынуть
из урны
один шар
шар
белый
урна
пуста
опустить
шар В черную
корзину
Рис. 41
этого алгоритма для ЭВМ должно быть предусмотрено чтение
(ввод) исходных данных а, Ь и с, а также запись (вывод) ре­
зультата у. В схеме алгоритма эти действия для краткости
опущены.
П р и м е р 3.3.2. Алгоритм решения уравнения а х = Ь в общем
случае может быть описан схемой, изображенной на рисунке 40.
В зависимости от значений а и Ь возможны три исхода: решений
бесконечное множество (а = 0 и Ь = 0), решений нет (а = 0, но
Ь ф 0), решение единственное ( а ф 0). Алгоритм представляет
собой полную условную конструкцию, одним из функциональных
блоков в которой также является полная условная конструкция
(структуры такого вида называют структурами с глубиной вло­
жения два).
Перейдем теперь к составлению циклических алгоритмов.
П р и м е р 3.3.3. В урне хранится некоторое количество
черных и белых шаров. Требуется разложить эти шары по двум
корзинам (черного и белого ц в ета): белые шары — в белую корзи­
ну, черные — в черную. Составим схему алгоритма выполнения
этой работы.
-------------------------------
опустить
шар в белую
корз ину
вынуть
из урны
один шар
I
Опустить
шар в черную
корзину
.
Рис. 42
Очевидно, что для рассортировки шаров по корзинам с к а ж ­
дым шаром должны быть проделаны следующие действия: вынуть
шар из урны, определить его цвет и опустить в соответствующую
корзину. Если после этого в урне еще остаются шары, действия
повторить снова и т. д. Схема алгоритма (рис. 41) представляет
собой структуру Ц И КЛ-ДО , причем тело цикла (расположенное
в данном случае до проверки логического условия) представляет
собой сложную конструкцию,
состоящую
из
следования
простого
и
действия в полной условной конструкции.
Понятно, что выполнить изображенный на рисунке 41 алгоритм
было бы затруднительно, если бы в самом начале оказалось, что
урна пуста. Если такая ситуация не исключается, то правильным
решением задачи будет алгоритм, схема которого изображена на
рисунке 42. Здесь тело цикла размещено после проверки условия
(структура ЦИКЛ-ПОКА).
П р и м е р 3.3.4. Алгоритм Евклида нахождения наибольшего
общего делителя (НОД) двух целых положительных чисел (ме­
тодом вычитания) изображен на рисунке 43.
Если числа а и Ь равны, любое из них можно принять за ис­
комый результат (Н О Д : = а). Если же числа не равны, большее
о
о
Рис. 43
117
ак:=(к-1)/(к*1 ) 21
запись а *
к : = /<+1
|
к >п
чтение п
+
Рис. 44
из них заменяется разностью между ним и другим числом, после
чего снова производится проверка условия а^ФЬ. Схема алгоритма
представляет собой следование, состоящее из ЦИКЛ-ПОКА, у ко­
торого телом является полная условная конструкция, и простого
арифметического блока.
П р и м е р 3.3.5. Вычисление (генерирование) членов по­
следовательности, заданной формулой а к= 7%-ТШ (к 1,2 , «).
осуществляется циклическим алгоритмом, изображенным на ри­
сунке 44. Тело цикла содержит два арифметических оператора, а
ДЛЯ
функциональном блоке. Алгоритм представляет собой следование
двух функциональных блоков и структуры ЦИКЛ-ПОКА.
П р и м е р 3.3.6. Дана конечная последовательность а ь Щ ...
..., (хп (в программировании такие последовательности чисел
называют одномерными массивами). Составить схему алгоритма
вычисления суммы
5 = о.\ + йъ + . . . + а п.
Если принять 5 = 0, то нахождение искомой суммы обеспечи­
вается /г-кратным повторением указания
5: = 5
а*
"V
Зет Ш Й 1 |
при изменении к от 1 до п. Схема искомого алгоритма изображена
на рисунке 45.
I II
т
I чтение I
| массива
| & 1:п
|
Рис. 45
118
Пример
Янирг- • •»-»
3.3.7. Поиск большего элемента в массиве х\,
^
^
Щй»
;;Л .
. . ч.
*•
Возьмем «рабочую» переменную М и присвоим ей значение эле­
мента Х \. После того будем проверять истинность неравенства
для / = 2 , 3, ..., п. В результате каждой проверки зна­
чение М либо оставим без изменения (если неравенство МЩ.Х1 ис­
тинно), либо заменим на х, (если неравенство ложно, т. е.
М е х , ) . Очевидно, что по окончании этого процесса М будет
иметь значение наибольшего по величине элемента заданного мас­
сива. Схема алгоритма изображена на рисунке 46.
Структурный подход к составлению алгоритмов основывается
на том, что каждый алгоритм может быть представлен в структур­
ной форме. Однако не всегда в ходе поиска удается сразу
получить алгоритм в структурном виде. Иногда приходится пред­
принять специальные приемы, преобразующие неструктурные
алгоритмы в структурные. Простейший прием — размножение
блоков.
На рисунке 47 изображена схема неструктурного алгоритма.
Этот алгоритм легко преобразовать к структурному виду, если
продублировать блок 5 ь Алгоритм, изображенный на рисунке 48,
эквивалентен данному в том смысле, что во всех возможных
случаях он предписывает выполнять те же действия.
Рис. 47
119
Рис. 48
Рис. 49
Иногда для получения структурных алгоритмов приходится
применять более изысканные методы. Рассмотрим примеры.
П р и м е р 3.3.8. Даны три числа а, Ь и с. Определить,
имеется ли среди них хотя бы одна пара взаимно обратных чисел.
Как известно, числа являются взаимно обратными, если их
произведение равно 1. Д ля решения поставленной задачи надо
производить все попарные проверки и, как только искомая пара
найдется, прекратить процесс и выдать ответ: «да». Если же ни
одна проверка не выявит пары взаимно обратных, выдать ответ:
«нет». Используя приведенные выше естественные рассуждения,
получаем алгоритм, изображенный на рисунке 49. Этот алгоритм
верно решает поставленную задачу, но он не является структур­
ным.
:
‘-Л^
Полученный алгоритм легко преобразовать к структурному
виду, если ввести дополнительную переменную — признак р
(см. рис. 50). С самого начала принимается р = 1, но, если* ока­
жется, что ни одной пары взаимно обратных среди чисел а, Ь и с
нет, значение р становится равным 0 . Вслед за этим уже с по-
Рис. 50
нет
Рис. 51
мощью признака р выявляется окончательный ответ на поставленную задачу («да» или «нет»). Заметим, что структурный ал­
горитм, изображенный на рисунке 50, представляет собой следо­
вание простого арифметического блока и двух развилок, первая
из которых — структура с глубиной вложения три.
Пример
3.3.9. Дан массив Жи, хг, ...,' хп. Требуется
определить, имеется ли в этом массиве хотя бы одна пара
взаимно обратных соседних чисел.
Судя по постановке задачи, надо циклически проверять вы­
полнение равенства дг(л:,+ 1 = 1 при / = 1 , 2, ..., п — 1. Как только
равенство окажется истинным, процесс прекращается и выдается
сигнал о том, что искомая пара элементов имеется («да»).
Если же процесс доходит до конца, но равенство не выполняется,
должен быть выдан сигнал «нет». Подходя к организации
этого циклического алгоритма обычным образом (т. е. начиная
цикл с проверки условия продолжения * ^ п — 1 ), получим схему,
изображенную на рисунке 51. Этот алгоритм действует верно, но
структурным не является.
нет
Рис. 52
нет
Рис. 53
Причиной неструктурности в данном случае является то, что
по смыслу задачи имеется не одно, а два условия окончания цик­
ла — исчерпание всех элементов и выполнение равенства
х,х,+ 1 = 1 , причем в зависимости от того, каким условием закон­
чился цикл, необходимо предпринимать различные действия.
Один из способов преодоления подобного затруднения —
объединение обоих условий продолжения цикла в одно
*
^ л
1)/ \
1 ),
а для принятия окончательного решения по окончании цикла
необходимо проверить, какое именно условие привело к выходу из
цикла (рис. 52). Рассмотренный подход дает структурный алго­
ритм, однако программирование проверки объединенного в
конъюнкцию общего условия приведет к новым затруднениям,
если в алгоритмическом языке отсутствуют логические операции.
Другой подход — введение дополнительной переменной, вы­
полняющей роль признака, который и используется для управле­
ния переходами в соответствии со смыслом задачи (рис. 5 3 ).
122
Контрольные
вопросы
IV
Каким требованиям должны удовлетворять разработка
алгоритмов на ЭВМ?
2 . В чем суть основных структур алгоритмов: РАЗВИЛКА,
ЦИКЛ, СЛЕДОВАНИЕ?
3.
В чем заключается структурный подход к разработке
алгоритмов? Как обеспечивается соблюдение основных требо­
ваний к разработке алгоритмов с использованием этого подхода?
Упражнения
Составить схемы алгоритмов решения следующих задач:
1. Вычислить корни уравнения ах2+ Ьх-\-с— 0 (а ф 0).
2. Вычислить одно значение функции:
где
г
х-Щ 1 , х < 0 ,
б) У
4 4 х — 1, х ^ г 1.
3. Решить неравенства: а) а х < 3; б) а х > Ь .
4. Вычислить 50 членов последовательности с общим членом
ак=
(к — 1, 2, ..., 50).
5. Вычислить произведение элементов массива а\, Щ , •••, оцоо6 . Определить, имеется ли в массиве а\, аг, ..., а„ хотя бы
одна пара взаимно противоположных соседних чисел.
■ 1г. *-
3 .4 .
ПОСТРОЧНАЯ АЛГОРИТМИЧЕСКАЯ НОТАЦИЯ
Задача составления алгоритма всегда связана с использова­
нием некоторого языка, на котором алгоритм записывается. Ха­
рактер языка, используемого для записи алгоритмов, так или ина­
че связан с возможностями исполнителя, на которого ориенти­
руются эти описания. Можно сказать, что возможности испол­
нителей выделяют различные уровни языковых средств; обсудим
сейчас некоторые основные характеристики языков для записи
алгоритмов.
Говоря об уровне языка, мы имеем здесь в виду, в частнос­
ти, степень детализации предписаний в алгоритмической записи
(т. е. фактический уровень «элементарности» действий, считаю­
щихся для данного исполнителя элементарными). Если, например,
123
исполнитель, ориентированный на выполнение вычислительных
алгоритмов, способен «за один шаг» производить вычисление
корня квадратного, то для него будет понятно указание у:= -ф с.
Если же вычислительные возможности исполнителя ограничены
рамками четырех основных арифметических действий, то для
нахождения корня квадратного такому исполнителю придется
предъявить более подробную систему указаний, использующую
только те операции, которые исполнителю доступны.
Говоря об уровне языка, имеют в виду также и такое их
свойство, особенно важное с точки зрения машинного исполне­
ния алгоритмов, как степень формализации. В тех случаях, когда
исполнителем алгоритмов является человек, средства языка, ис­
пользуемого для представления этих алгоритмов, обычно строго
не ограничены, так как учитывают обычно «здравый смысл».
По усмотрению составителя алгоритмов в процессе описания
могут привлекаться любые общепонятные выражения и словес­
ные обороты, принятые в естественном человеческом языке. Если
же алгоритмическое описание ориентируется, например, на ЭВМ,
приходится выполнять ряд обязательных требований:
при формулировании предписаний можно требовать от ма­
шины выполнения лишь тех операций, которые для данной маши­
ны жестко определены;
можно использовать лишь принятые для языка данной маши­
ны правила построения указаний;
ничего не предусмотренного правилами использовать нельзя,
ибо машина все равно такие указания не выполнит.
Эти требования, которые обычно могут быть сведены в стро­
гую систему формальных правил, образуют синтаксис языка;
сам язык в подобных случаях становится, как говорят, форма­
лизованным.
' |Я | В
Как известно, естественный человеческий язык, не являясь
языком формализованным, может иногда содержать выражения,
смысл которых истолковывается неоднозначно. Подобные явления
должны быть полностью исключены в языках, используемых для
общения с автоматами. Машину трудно вооружить таким опытом,
каким обладает человек, поэтому для общения с машиной при­
ходится придумывать специальный язык, сообщения на котором
могли бы истолковываться лишь строго однозначно и были бы
доступны ее восприятию.
Само собой разумеется, что формализация языка обедняет
его выразительные возможности по сравнению с естественным
языком человека. Таким языком становится неудобно пользовать­
ся, ибо каждый раз нужно помнить о строгих правилах обра­
зования предложений. Тем не менее такие языки создаются, и
человеку приходится учиться пользоваться ими, если он намерен
управлять действиями используемых автоматов.
Таким образом, поскольку одним из пользователей языка об­
щения с машиной так или иначе становится человек, говоря об
124
'
'-' -
Я
?:Й
уровне языка, имеют в виду также и уровень доступности языка
для,человека. Общение с первыми электронными вычислительны­
ми Машинами проходило на уровне языка цифр. В дальнейшем
массовое распространение ЭВМ привело к появлению новых
форм общения между лицом, сформулировавшим задачу, и ма­
шиной. Однако требование доступности языка находится в про­
тиворечии с требованием его формализации, поэтому проблема
«очеловечивания» языка, который в то же время оставался бы
понятным и для машины,— сложная проблема. Проблема эта
решается параллельно с совершенствованием самих машин, и к
настоящему времени на этом пути имеются ощутимые резуль­
таты. К числу языков, построенных на сочетании некоторых
элементов обычного человеческого языка и языка математики,
относятся такие широко известные алгоритмические языки, как
Алгол, Фортран, Бейсик, Паскаль и др., ориентированные на
описание алгоритмов решения широкого класса научных и ин­
женерно-технических задач.
Выше (п. 3.2) мы уже коснулись основных правил организа­
ции построчных словесных записей алгоритмов. Эти правила
вместе с теми изобразительными средствами, которые используют­
ся для записи алгоритмов, образуют своеобразный алгоритми­
ческий язык (алгоритмическую нотацию). Этот язык не формали­
зован, пока еще свободен от целого ряда «машинных» стандар­
тов, а привлекаемые для записи алгоритмов изобразительные
средства доставляют большую свободу составителю алгоритмов.
В то же время такой язык может включать в себя все основные
общеобразовательные средства «настоящих» алгоритмических
языков, что делает его удобным инструментом для обучения
основам алгоритмизации. Проведем сейчас систематизацию и
уточнение основных понятий и изобразительных средств построч­
ной алгоритмической нотации, приводящей фактически к осно­
вам широко распространенного на микроЭВМ языка програм­
мирования Бейсик.
При определении алгоритмического языка должны быть опи­
саны, как минимум, следующие основные понятия: из каких
символов состоит алфавит, как из чисел и переменных конструи­
руются выражения, каков перечень, назначение и характер испол­
нения различного вида предписаний, каковы правила общей
организации алгоритмической записи и т. п.
Описание алгоритмического языка обычно начинается с оп­
ределения его алфавита, т. е. перечня символов (знаков), разре­
шенных к использованию в данном языке. Алфавит учебной ал­
горитмической нотации умышленно не ограничен, в него в з а ­
висимости от характера описываемых алгоритмов и по желанию
составителя при необходимости могут быть введены любые из­
вестные символы: строчные и прописные буквы русского, л а ­
тинского, греческого алфавитов, математические и прочие спе­
циальные знаки, которые могут понадобиться при записи алго­
125
ритмов. Из алфавита выделяются несколько особых символовслов, которые называются служебными (или ключевыми ) слова­
ми языка. Это следующие символы, введенные в рассмотрение в
предыдущих пунктах: чтение, запись, если, идти к, конец. Хотя
служебные слова и имеют вид обычных слов, в алгоритмиче­
ском языке они относятся к неделимым символам, т. е. рас­
сматриваются в целом, без связи с буквами, которыми они
написаны. Д ля того чтобы выделить служебные слова среди
других слов языка, что делает запись алгоритмов более нагляд­
ной и понятной, их при письме подчеркивают (а в книгах обычно
используют особый шрифт). Среди символов алфавита особо
популярны знаки арифметических операций -|-, — , X , /, а так ­
же знаки операций отношения > , Щ;, = , Ф , ^ , < С .
Переменные величины и числа обозначаются и используются
в учебном алгоритмическом языке в соответствии с обычным по­
рядком их употребления в тех предметных областях, к которым
относится запись алгоритма.
Никаких ограничений также не накладывается и на форму
записи выражений — здесь разрешено использовать любые ма­
тематические и логические знаки, а также подстрочные и над­
строчные символы. Среди выражений выделяются арифметические
выражения, значениями которых являются числа, например:
2х^ъ\х\2 х - \ - 1 . К логическим выражениям (или условиям ) отно­
сятся прежде всего отношения, составляемые из двух арифме­
тических выражений, соединенных знаком операции отношения,
например: 2л:< 3 , а ф Ь , х 2-]гу2^ р . Условиями могут быть не
только математические отношения, но и отношения, описывающие
самые разнообразные реальные ситуации, например: в трубке
короткие гудки, сигнал светофора зеленый и т. п. При необхо­
димости могут быть привлечены знаки алгебры логики, с помощью
которых из отношений могут конструироваться более сложные
составные логические выражения, например: (2хЩ 3 ) Д {х < 8 ).
Здесь Д — знак логической операции конъюнкции (И ). Значе­
ниями логических выражений являются два значения — «истин­
но» и «ложно». В алгоритмической нотации используется и тре­
тий тип выражений — текстовый (или литерный) , который исполь­
зуется, в частности, в предписаниях запись, например:
запись " 3 — ", 5.
То, что записано в кавычках, исполнитель алгоритма должен
понимать как текст, который нужно записать. Если, например,
текущее значение переменной 5 равно 5,6, то выполнение дан­
ного выше предписания приведет к записи обычной для таких
случаев формы 5 = 5,6.
Основными объектами в алгоритмической нотации являются
операторы, которые в записи алгоритмов играют роль предписа­
ний. Выделяются два основных вида операторов: 1) операторы
общей обработки; 2 ) операторы управления.
126
Оператор общей обработки представляет собой в общем слу­
чае ^конечное описание некоторого реально выполнимого эле­
ментарного действия. Столь широкое толкование этого вида опе­
раторов позволяет записывать средствами учебной алгоритмиче­
ской нотации многие наглядные и поучительные алгоритмы из
числа трудно формализуемых «бытовых» задач. Частным случаем
оператора общей обработки является оператор присваивания:
'
V*
А := В ,
где А — обозначение переменной, В — обозначение некоторого
выражения (того же типа). Пример операторов общей обра­
ботки:
снять трубку с рычага;
вынуть из урны один шар;
у : — х 2-\-Зх— Г..
Особую группу операторов общей обработки в алгоритмической
нотации составляют операторы чтения исходных данных и записи
результатов:
чтение а, Ь, ..., с и
запись х, у, ..., г.
Здесь чтение и запись— служебные слова языка, а а, Ь, ..., г —
обозначения переменных. Предполагается, что в результате вы­
полнения оператора чтение всем величинам, перечисленным в
нем через запятую, присваиваются числовые значения, заранее
заготовленные для этого конкретного исполнения алгоритма. Точ­
но так же каждое исполнение оператора запись означает фик­
сирование каким-либо способом (например, посредством записи
на бумаге) тех конкретных числовых значений перечисленных в
операторе величин, которые эти величины имеют в момент вы­
полнения оператора. Как видно, использование операторов чте­
ния данных и записи результатов делает завершенным весь
процесс выполнения алгоритмов — от задания исходным данным
конкретных числовых значений до выдачи полученных резуль­
татов.
Операторы управления — это три оператора: оператор безус­
ловного перехода, оператор условного перехода и оператор оста­
новки.
Оператор безусловного перехода записывается по форме:
идти к_N,
где идти к — ключевое слово языка (слово идти для сокращения
записи может опускаться), а N — обозначение целочисленной
метки, которыми снабжаются операторы (или строки) в построч­
ной записи алгоритма. После выполнения оператора безуслов­
ного перехода следующим всегда выполняется оператор, помечен­
ный меткой N.
Оператор условного перехода имеет вид:
если Р идти к Я,
где если, идти к — ключевые слова, Р — условие,
— номер опе­
ратора (строки), к которому происходит переход, когда условие
Р истинно. Оператор условного перехода также допускает сокра­
щенную форму записи: если Р к_М.
Прекращение процесса исполнения алгоритма происходит по­
сле перехода к оператору остановки, записываемому с помощью
служебного слова конец.
Сделаем теперь уточнения в связи с оформлением записи
алгоритмов.
Операторы в записи алгоритма располагаются по строкам,
которые нумеруются последовательными номерами, начиная с
единицы. Если один оператор не вмещается на одной строке, он
может быть перенесен на новую строку, однако эта новая строка
уже не получает номера. Операторы общей обработки можно раз­
мещать в одной строке более чем один (если они записываются
коротко); в этом случае операторы отделяются друг от друга
точкой с запятой. Среди операторов строки может быть и опе­
ратор безусловного перехода, если только он стоит последним.
Например, одна строка в записи алгоритма может иметь вид:
6 . 5 : = 5 + а; х : = х + 1 ; к _ 2 .
В этой строке последовательно размещены три оператора, которые
выполняются в порядке их следования слева направо. Номер
строки отделяется точкой; в конце строки никакого знака не ста­
вится. Оператор условного перехода обычно занимает отдельную
строку, но может (если это позволяет логика алгоритма) раз­
мещаться на месте последнего оператора в строке.
Д ля облегчения ссылок на ранее составленные алгоритмы
будем, кроме того, снабжать каждый алгоритм заголовком, ко­
торый располагается всегда перед первой строкой в записи ал­
горитма и имеет вид:
Алгоритм ИМЯ,
где Алгоритм — это служебное слово языка, а ИМЯ — краткое
название алгоритма, отражающее его содержание (часто назва­
нием может служить какое-нибудь символическое или мнемони­
ческое обозначение). Пример заголовка:
Алгоритм НОД.
Для того чтобы при составлении записи алгоритмов следо­
вать методике структурного подхода, лучше всего, если исполь­
зуемая для этих целей алгоритмическая нотация будет распола­
гать специальными средствами, просто и адекватно реализующими
базовые структуры алгоритмов. Если таких специальных средств
нет (как в рассмотренной выше построчной нотации), то для
28
облегчения
последующей
всего^ следует /IV
хорошо
*.
•
*работы прежде
X
^
рч/ ш и
отработать технику организации языковых шаблонов, эквивалентио представляющих базовые алгоритмические структуры. Рас­
смотрим способы реализации базовых структур алгоритмов сред­
ствами построчной алгоритмической нотации.
РАЗВИЛКА. Составление построчной записи полной услов­
ной конструкции (рис. 35, а) рассмотрим подробно.
Составим строку записи алгоритма С оператором если, проверяющим в соответствии с рисунком ШЯЩ
35 ,]——
^—
’ услоа истинность
вия Р (условный номер строки обозначим с ) :
с. если Р к
Многоточие здесь означает, что нам пока неизвестен номер стро­
ки, к которой нужно переходить при соблюдении условия Р.
В то же время на основании правил выполнения оператора
если нам вполне определенно известно, что в случае несоблю­
дения условия Р исполнитель алгоритма перейдет к оператору,
следующему за оператором если (т. е. к строке с номером
с + 1 , если в строке с оператор если будет единственным).
А согласно схеме, изображенной на рисунке 35, а, в этом случае
(когда Р ложно) должен выполняться блок 5г, вот эту логи­
ческую ветвь мы и станем продолжать:
с. если Р к ...
с щ|| 1 .
(для простоты предполагается, что содержимое блока 5 2 уме­
щается в одной строке). Согласно схеме полной условной кон­
струкции после выполнения блока 5г должен происходить пе­
реход к выходу; поставим оператор (идти) к в той же стооке
с+ 1 :
с. если Р к ...
Я
Многоточие
строке с + 1 означает, что номер строки выхода
из структуры РАЗВИЛКА также пока неизвестен. Замечаем те­
перь, что для продолжения записи алгоритма при условии, когда
Р истинно, может быть использована строка с-\- 2 — это позво­
ляет исключить многоточие в строке с:
с.
с+ 1.
если Р к с-\-2
к
с + 2.
Теперь уже совершенно ясно, что выходом из полной условной
конструкции в данном случае будет строка с + 3 ; этим номером
5
Заказ 43
129
и следует заменить многоточие в строке с -4-1. Ниже приведена
окончательная запись фрагмента алгоритма, реализующего пол­
ную условную конструкцию (слева — схема, справа условное
представление соответствующего фрагмента средствами построч­
ной алгоритмической нотации):
Разумеется, в конкретных случаях может оказаться, что для
представления каждого из блоков 5 | и 5г понадобится не по
одной, а по нескольку строк в записи алгоритма. Это приведет к
увеличению количества строк в реализации структуры, но общая
логика построения алгоритма останется неизменной.
При составлении построчной записи, реализующей неполную
условную конструкцию (рис. 35, б), целесообразно в_качестве
условия в операторе если взять не Р, а его отрицание Р:
с.
если Р к с + 2
(читателю предоставляется возможность самостоятельно убе­
диться в том, что использование в операторе если самого ус­
ловия Р привело бы к более громоздкой и неестественной построч­
ной записи структуры).
Построчная запись базовых структур ЦИКЛ-ПОКА и
Ц И К Л -Д О также может быть выполнена с использованием опе­
ратора е а ш .
.V4”:
Базовая структура ЦИКЛ-ПОКА:
с.
если Р к с + 2
_
130
_
_
_
_
Я 4- Ц
5
с + 2.
выход
; к с
Базовая структура ЦИКЛ-ДО
Замена в записи оператора если условия Р его отрицанием,
как и при построчной записи базовой структуры РАЗВИЛКА,
обусловлена выбором наиболее целесообразного способа пред­
ставления алгоритмов. Рассмотрим теперь примеры записи алго­
ритмов с учетом принятых выше уточнений и соглашений относительно правил использования построчной алгоритмической но­
тации.
П р и м е р 3.4.1. Алгоритм БОЛЬШ ЕЕ ИЗ ТРЕХ (коротко
БИТ) поиска большего из трех чисел (см. схему на рис. 39):
Ц >
Алгоритм БИТ
1. чтение а, Ь, с
2. если а ^ Ь к 4
3. у: = 6 ; к 5
4. у: — а
5. если у ~ ^с к 7
6 . у: — с
. 7. запись у
8 . конец
П р и м е р 3.4.2. Алгоритм решения квадратного уравнения
(КВУР) ах
Ьх-^ с = 0 ( а ф 0) в области действительных чисел
(см. упражнение 1 к п. 3 .3 ):
Алгоритм КВУР
1. чтение а, Ь, с
2. О : = Ь 2— 4ас
3. если 0 ^ 0 к 5
4. запись "решений нет"; к 9
5. * ,: = ( — Ь— л[0) /(2а)
6 . х^‘ —( — Ь -4" ) / (2 а )
7. запись "х\ = ", х\
8 . запись "х 2 = " , Ха
9. конец
П р и м е р 3.4.3. Символ п! (читается: «я факториал») ис
пользуется для обозначения произведения последовательных на
туральных чисел от 1 до фиксированного числа л, т. е.
п\ — 1 • 2-3
л.
5*
131
1
Рис. 54
Составить алгоритм вычисления факториала по заданному зна­
чению л.
-4 ^;. /"'-'V
Искомый алгоритм является циклическим. Действительно, ес­
ли, положив вначале ш В 1 и изменяя последовательно параметр
к от 1 до п, выполнить п раз оператор Ы: = ,Ч'к, то значением
переменной N как раз и будет п\. Схема искомого алгоритма,
организованного как Ц И КЛ-ДО , приведена на рисунке 54. Этот
же алгоритм в построчной алгоритмической нотации:
Алгоритм ФАКТ
1 . чтение п
2. к\ = 1; N 1 — 1
3. М : = Ы - к ; к : = к + 1
4. если к ^ п к_3
5. запись " п \ = " , N
6 . конец ,
В таблице 3.3 описан процесс выполнения алгоритма ФАКТ
для п = 3.
?
Номер
строки
1.. - - —
Таблица 3.3
Г
1
2
3
4
а3
4
3
4
5
п
к
N
Пояснения
Чтение п
3
1
2
1
1
2 ^ 3 истинно
3
*
2
3 ^ 3 истинно
4
6
N.
4 ^ 3 ложно
Запись л! = 6
Контрольные
вопросы
1. Какими характеристиками определяются различные уровни
языковых средств, используемых для записи алгоритмов?
2 . Какими основными понятиями определяется алгоритмичес­
кий язык?
132
\3. Как определяется алфавит учебного алгоритмического
язы&а?
4. Как составляются выражения, каковы их типы?
5. Какие виды операторов используются в построчной алго­
ритмической нотации, как они записываются и действуют?
Упражнения
Составить записи алгоритмов решения следующих задач, ис­
пользуя построчную алгоритмическую нотацию:
1 . Вычисление одного значения функции
к-ух— 1 , если
зш ж,
если х < 2 .
2 . Решение уравнения а х = Ь .
3. Решение неравенства а х > Ь .
4. Вычисление значений функции у = 2 1п х — Ъх2-\-1 на от­
резке [а, | | с шагом Л (а, Н > 0).
5. Вычисление НОД (а, Ь), где а, Ь — положительные целые
числа.
6 . Вычисление суммы и произведения п первых членов после­
довательности с общим членом аь— —Л * .
2к3 — 1
3.5. МАССИВЫ
В подавляющем большинстве практических задач, связанных с
обработкой числовой информации, приходится иметь дело с конеч­
ными числовыми последовательностями, образование членов в
которых не подчиняется какой-либо зависимости и не может быть
связано с заранее заданной формулой, как это было в примерах
предыдущего пункта. В общем случае элементы каждой такой
совокупности чисел могут быть обозначены одной и той же буквой
с различными индексами, например: Х\, х 2, %, ..., хп. Такие ко­
нечные совокупности чисел будем называть массивами. Число п
в данном случае называют длиной массива. С обработкой мас­
сивов связаны многие задачи алгоритмизации.
Поскольку каждый элемент массива определяется через свой
индекс, то в описании алгоритмов, связанных с массивами, ин­
дексы играют существенную роль. При описании алгоритмов ин­
дексы могут оказываться в роли переменных, значения которых
определяют содержание описываемых действий. Например, оператор
будет побуждать выполнение различных действий при различных
значениях индекса /. Если, скажем, / = 2 , то этот оператор бу­
дет означать действие у: — х 2+ 5; а при / = 1 0 будет 1/ : = х ю + 5
и т. д.
133
Прежде чем перейти к рассмотрению примеров, нам необходи­
мо условиться о правилах оформления операторов чтения и запи­
си, когда их выполнение связано с массивами.
Если исходными данными задачи является массив определен­
ной длины, то чтение его элементов будем записывать так:
чтение 4 | 50.
что означает в данном случае чтение последовательности 50
чисел и присвоение их значений в прорядке поступления пере­
менным хи х 2, .... * 5о- Если же длина массива заранее не из­
вестна и определяется в процессе чтения, то чтение должно
обязательно начинаться с чтения значения верхней границы ин­
декса, например:
т
чтение п, х1:п.
В данном случае сначала прочитывается число п, выражающее
длину массива, потом в соответствии с этим прочитываются п
очередных чисел, й их значения фигурируют затем в алгоритме
под обозначениями х\, Щ
х„.
Аналогично оформляется и оператор запись, если среди ре­
зультатов оказываются массивы. Так, например, оператор
запись т, ух,т
означает запись последовательных чисел массива длинои т (ра­
зумеется, это можно сделать лишь тогда, когда все щ при
1 = 1, 2, ..., т получили перед этим определенные числовые зна­
чения) . В заключение необходимо отметить, что вместе с масси­
вами в состав операторов чтения и записи, могут входить и
обычные переменные. Например, оператором
чтение а, Ь, хи2о
прочитываются вначале значения а и Ь, а затем 20 элементов
массива Я х2, ..., х 2оПусть имеется массив Х \ , х 2, ..., х„. Требуется составить
алгоритм вычисления среднего арифметического этих чисел, т. е.
Х\ + * 2 + . . . + *«
Д ля вычисления суммы элементов массива может быть при­
менена обычная схема: сумма: = сумма + слагаемое. Действи-
Рис. 55
тельно, если вначале выполнить 5 1 = 0 , а затем выполнять в
цикде оператор 5 : = 5 + дс,-, изменяя при этом значение индекса I
от 1 до п, то и будет получена сумма элементов массива.
После этого остается разделить ее на п, и задача решена. Схема
алгоритма (ЦИКЛ-ДО) изображена на рисунке 55. Запись алго­
ритма в построчной нотации
\
\
Алгоритм СРЕДА
1 . чтение п, х1:п
2 5 : = 0 ; /: = 1
3. 5 : = 5 + хс, / 1 = / —
(—Г
4. если ( < п к 3
5. 5 : — 8 / п ~
6 . запись " 3 = " , 8
7. конец
В таблице 3.4 содержится описание процесса выполнения алго­
ритма СРЕДА для массива, состоящего из четырех элементов
2,9; 4,6; 6,2; 4,3. Как видно из таблицы 3.4, в процессе испол­
нения алгоритма изменяют свои значения только переменные 5 и I.
Таблица 3.4
Пояснения
Чтение данных
истинно
истинно
истинно
ложно
Запись 5 = 4,5
Остановка
П р и м е р 3.5.1. Рассмотрим задачу вычисления значения
многочлена степени п:
■У— ОоХп -\-С1\Хп
* *{“
Исходными данными для этой задачи являются массив коэф­
фициентов До, о.\,
#п (его длина равна л —
(—1 ) и значение
аргумента х. Для составления алгоритма используем известную
схему Горнера, суть которой рассмотрим вначале на простых
примерах.
Если при вычислении квадратного трехчлена а0х2+ а | х 4 - аг
Рис. 56
пользоваться непосредственно его формулой, то придется выпол­
нить 5 арифметических действий (3 умножения и 2 сложения).
Однако если учесть, что аох2+ а.\Х + а 2 =(аоХ-\-а\) х-\-а. 2 , то
потребуется уже только 4 действия (2 умножения и 2 сложения).
Аналогично по формуле у = а ^ - \ - а \ х -\-а.2Х-\-хз нужно выпол­
нить 9 действий, а . по формуле у=((аох + а\) х + а 2) х-\-а 3 толь­
ко 6 . Выгода от применения рассмотренного подхода очевидна.
В общем случае многочлен, представленный по схеме Горнера,
имеет вид:
у=(...((аох-\-а\) х-\-о. 2 ) х
о
. п—\) х-{-а.п.
Однако особое удобство схемы Горнера состоит в том, что она
хорошо укладывается в циклический процесс. Действительно,
последовательное выполнение вычислений по этой схеме состоит в
повторении двух основных операций: 1 ) умножение на х; 2 ) при­
бавление очередного коэффициента. Схема этого процесса изобра­
жена на рисунке 56. Приводим также запись алгоритма ГОРНЕР
в построчной нотации.
Алгоритм ГОРНЕР
1 . чтение х, п, Оо:п
2. Щ— 1 ; у: — а0
3. у: = у - х + а г , ц = 1 + 1
4. если ! < п к 3
5. запись "у = ", у
6 . конец
Контрольные
вопросы
1. Что такое массив, длина массива?
2. Как записываются и действуют
запись, работающие с массивами?
операторы
чтение
и
Упражнения
Записать в построчной алгоритмической нотации и выполнить
для ограниченного набора исходных данных алгоритмы решения
следующих задач:
1. Вычисление произведения всех элементов массива.
36
2. Вычисление суммы положительных элементов массива.
3. Проверка упорядоченности массива а ь а 2, ..., а„ по возра
станию.
у
3.6. ИСПОЛЬЗОВАНИЕ ПОДЧИНЕННЫХ АЛГОРИТМОВ
При записи новых алгоритмов могут использоваться алгорит­
мы, составленные ранее. Алгоритмы, целиком используемые в
составе других алгоритмов, будем называть подчиненными алго­
ритмами или, коротко, подалгоритмами. В принципе не исключено,
что алгоритм, содержащий в своем описании подчиненные алго­
ритмы, сам в определенной ситуации может выступать в роли
подалгоритма. Составление и использование подчиненных алго­
ритмов находят широкое применение в практике алгоритмизации
и являются одним из наиболее значительных и интересных в
идейном отношении ее приемов. Действительно, такой подход
позволяет исключить при записи алгоритмов повторение тех кус­
ков, описания которых уже имеются. Однако при этом возни­
кают вопросы оформления подчиненных алгоритмов и техники
включения их в основные алгоритмы в процессе их исполнения.
Рассмотрим, как могут быть решены эти вопросы в рамках учеб­
ной алгоритмической нотации.
Оформление подчиненных алгоритмов несколько отличается от
оформления обычных алгоритмов. Прежде всего, в подалгоритмах отпадает потребность в использовании операторов чтения
данных и записи результатов, поскольку вопросы ввода в действие
исходных данных и фиксирования результатов так или иначе
должны будут решаться в том основном алгоритме, где подалгоритм будет использоваться.
Кроме этого, у подалгоритмов по-особому записывается з а ­
головок, который в данном случае имеет вид:
Подалгоритм ИМЯ,
где Подалгоритм — служебное слово, а ИМЯ — краткое симво­
лическое обозначение подалгоритма. Вместо обычного оператора
конец, прекращающего выполнение алгоритма, последним опера­
тором подалгоритма является специальный оператор возврат,
назначение которого состоит в осуществлении перехода к даль­
нейшему выполнению основного алгоритма. Для уточнения всего
механизма обращения к подалгоритму рассмотрим сначала
простой пример.
П р и м е р 3.6.1. Алгоритм поиска большего из трех чисел
(БИТ, см. пример 3.4.1) состоит фактически из двукратного
применения алгоритма поиска большего из двух чисел — сна­
чала для данных и и Ь, а затем для у и с. Составим алгоритм
БИТ посредством обращения к подалгоритму поиска большего
из двух чисел (Б И Д ).
Подалгоритм Б И Д может быть записан следующим образом:
Подалгоритм БИ Д
1 . если а ^ Э к 3
2 . 7 : = Р ; к. 4
3 . у: = а
Ч. возврат
При записи подалгоритма мы использовали параметры: а и р —
для обозначения входных величин, у — для обозначения резуль­
тата. Понятно, что, обращаясь теперь к этому подалгоритму, мы
каждый раз должны будем соответствующим образом задавать
значения переменным а и р носителем результата после выхода
из подалгоритма Б И Д всегда будет переменная у. Д ля обращения
к подалгоритму достаточно в соответствующей строке основного
алгоритма поставить имя подалгоритма. С учетом сказанного
запись алгоритма БИТ с использованием приведенного выше
подалгоритма Б И Д может иметь вид:
Алгоритм БИ Т-БИ Д
| , Ц чтение а, Ь, с
2 . а : — а; р: = Ь
3. Б И Д
' ,
4. а : = у ; р: = с
5. Б И Д
6 . запись у
7. конец
Механизм обращения к подалгоритму хорошо виден из таблицы
исполнения алгоритма БИТ (табл. 3.5) для конкретных исходных
данных (а = 3, 6 = 9, с = 5). В графе «Номера строк» выделены
отдельные места для записи номеров строк основного алгоритма
и подалгоритма. Как видно, основной алгоритм (БИТ) в данном
случае оказался простым — он является обычным линейным
алгоритмом.
. ' ; ' '
Составляя подалгоритм БИД, мы умышленно ввели обозначе­
ния для переменных а , р, у, не совпадающие с обозначениями
а, Ь, с, испрльзуемыми в основном алгоритме. Однако руко­
водствовались мы при этом только методическими соображениями.
На самом деле обозначения переменных в подалгоритме и основ­
ном алгоритме могут выбираться независимо одни от других. В
этом можно легко убедиться, если заменить в подалгоритме Б И Д
буквы а , р и у, например, на а, Ь и с, а потом снова исполнить
алгоритм БИТ по принципу, использованному в таблице 3.5.
П р и м е р 3.6.2. Составить алгоритм поиска большего элемен­
та в массиве
используя подалгоритм БИД.
138
Таблица 3,5
--- - »1
Нсяиера <ггрок
осн.
алг.
подалг.
1
2
3
а
ь
с
-3
9
5
а
Э
У
Пояснения
Чтение данных
3
9
Переход к БИ Д
3 ^ 9 — ложно
1
2
4
9
✓
4
5
Возврат к БИТ
9
5
•
1
3
4
Переход к БИД
9 ^ 5 — истинно
9
Возврат к БИТ
Запись 9
Остановка
6
7
Действительно, большее число в массиве из п чисел можно
отыскать путем циклического применения подалгоритма нахожде­
ния большего из двух чисел — очередного элемента массива
и результата предыдущего применения подалгоритма БИ Д (в схе­
ме, изображенной на рисунке 57, обращение к подалгоритму
обозначено особым блоком — «флажком»). Приведем также
запись алгоритма в построчной нотации:
г
Алгоритм БЭМ — БИ Д
1 . чтение п, х1:п
2. | : — 2; а : — х\
3. (3 : =§=’%(
4. БИ Д
5. а : = у ; / : = / + 1
6 . если |§|Гя к 3
7. запись 7
8 . конец
В определенных ситуациях оказывается удобнее использовать
не рассмотренный выше тип подалгоритма, а так называемый
.
Рис. 57
139
подалгоритм с параметрами. Заголовок этого подалгоритма имеет
вид: '
Подалгоритм ИМЯ (а , 0,
у).
где а , р,
у — перечень формальных параметров. В этот пе­
речень включаются переменные величины, используемые в алго­
ритме, но не все, а только те, которые являются в нем носителями
исходных данных и результатов. Говоря иными словами, в список
параметров включаются только входные и выходные величины
подалгоритма, причем в этом списке перечисляются вначале
входные величины, а потом выходные. Так, запись подалгоритма
ВИД (а, р, у) будет отличаться от записи подалгоритма ВИД
только заголовком:
Подалгоритм ВИД (а , р, у)
1 . если о > р к 3
2. у : = Р; к 4
3. у : = а
4. возврат
Как следует из смысла этой задачи, параметры а и р здесь явля­
ются входными, а у — выходным.
Д ля вызова подчиненного алгоритма с параметрами в нужном
месте основного алгоритма указывается уже не только имя подал­
горитма, но и размещенный вслед за ним перечень фактических
параметров, порядок которых должен соответствовать их смыслу и
назначению. Так, например, если бы потребовалось с помощью
подалгоритма ВИД (а , р, у) найти большее из чисел с и й, а
результат присвоить переменной г , то следовало бы написать сле­
дующий оператор вызова: ВИД {с, й, г).
Оператор вызова подалгоритма с параметрами действует сле­
дующим образом. Происходит переход к первой строке подалго­
ритма, и'одновременно с этим происходит замена формальных
параметров подалгоритма фактическими (согласно порядку их
размещения в списке). После этого обычным образом выполняется
подалгоритм (но уже с новыми обозначениями входных и
выходных величин!). С помощью оператора возврат происходит
переход к строке основного алгоритма, следующей за обращением.
П р'И м е р 3.6.3. Составить алгоритм поиска большего из
четырех чисел, используя подалгоритм ВИД (а , р, у).
Задача решается троекратным обращением к подалгоритму:
Алгоритм БИЧ
Т. чтение а, Ь,
2. Б И Д (а, Ь,
3. Б И Д (у, с,
4. Б И Д {у, й,
5. запись у
6 . конец
140
с, й
у)
у)
у)
При использовании подчиненных алгоритмов нужно отдавать себе
отчет в том, что перед исполнением алгоритмов, включающих
обращения к подалгоритмам, исполнителю алгоритма должны
быть предъявлены записи всех необходимых алгоритмов:
основного алгоритма, всех подчиненных алгоритмов, а также пол­
ный перечень конкретных значений всех исходных данных.
Контрольные
вопросы
1. Что такое подчиненный алгоритм?
2 . Как записываются и используются подалгоритмы без пара
метров?
3. Как записываются и используются подалгоритмы с пара
метрами?
Упражнения
1. Оформить в виде подалгоритма с параметрами алгоритм на­
хождения абсолютной величины числа (обозначить АБС (а, т )).
Используя этот подалгоритм, записать алгоритм вычисления
значения у по формуле
I*2—з*1
вЬ
у
|лг*+ х + 1 |- И * 2 ‘
2 . Четырехугольник задан сторонами и длинами отрезков,
соединяющих вершины с внутренней точкой. Составить алгоритм
вычисления площади четырехугольника.
У к а з а н и е . Искомая площадь может быть найдена как
сумма площадей треугольников, вычисляемых по формуле Герона
(оформить подалгоритм с параметрами).
3. Составить алгоритм вычисления числа сочетаний СЯ,
*
.
.
.
■
= п\(т —п)\ ’ ИСП0ЛЬЗУЯ подалгоритм вычисления факториала к! с
обращением ФАКТ (к, Р), где к — входная, Р — выходная вели­
чина.
%
3.7. СТРУКТУРНАЯ АЛГОРИТМИЧЕСКАЯ НОТАЦИЯ
Построчная алгоритмическая нотация вместе со всеми ее изо­
бразительными возможностями, рассмотренными выше, бесспорно
обладает целым рядом методических достоинств с точки зрения
обучения начальным представлениям и навыкам алгоритмизации,
поскольку в явной форме раскрывает анатомию описываемых
алгоритмов и показывает динамизм алгоритмических структур во
всей их полноте. Тем не менее, построчная алгоритмическая
нотация, наиболее ярким выразителем которой является широко
141
I
распространенный язык программирования ьеисик, не отражает
магистральных тенденций развития современных производствен­
ных языков программирования.
Как было показано в п. 3. 4, неструктурированные алгорит­
мические языки также могут быть применены для организации
структурных алгоритмов, а сама методология структурного подхо­
да оказывается плодотворной и в этих случаях. Основное
неудобство в применении неструктурированных средств записи
алгоритмов (и это хорошо видно из описания рассмотренных
в п. 3.4 «структурированных» шаблонов) состоит в изобиловании
в алгоритмических записях операторов безусловного перехода
идти к. Действительно, неустранимая потребность частого упот­
ребления этого оператора в «неструктурных» языках и являет­
ся той неприятной их особенностью, которая превращает з а ­
писи даж е достаточно простых алгоритмов в нагромождения
трудно улавливаемых переходов, убивающих ясность и простоту
программ. Именно поэтому новые структурные языки включают
в себя средства, позволяющие исключать оператор безусловного
перехода во многих стандартных (для предшествующих языков)
случаях, хотя и имеют оператор безусловного перехода в своем
арсенале.
Рассмотрим сейчас инструментарий структурной алгоритми­
ческой нотации, отражающей основные черты новых алгоритми­
ческих языков.
Заведомо исключая частое употребление оператора идти к,
структурная нотация не следует принципу построчной записи алго­
ритмов со сквозной нумерацией строк, как это делалось раньше.
В тех редких случаях, когда может возникнуть потребность
в переходе идти к, адрес перехода может быть помечен целочислен­
ной (или буквенной) меткой, отделяемой от оператора-адресата
двоеточием, например:
Ъ'.х'.— 2а.
Операторы в одной строке разделяются точкой с запятой:
х : — 2а;
у : = 4х;
г: = л !у 2-\- 1.
Последовательное расположение операторов фактически реали­
зует базовую структуру СЛЕДОВАНИЕ. Группу последователь­
ных операторов будем называть серией.
Главная особенность структурной нотации — это наличие
специальных средств для записи базовых структур алгоритмов.
Ниже рассматриваются новые изобразительные средства (опера­
торы) алгоритмической нотации, непосредственно реализующие
базовые структуры РАЗВИЛКА, ЦИКЛ. Новые операторы по­
казываются в сравнении с прежними способами их реализации
(см. рис. 35, 36, 37), которые при этом выполняют роль
определения новых понятий.
142
РАЗВИЛКА. Полная условная конструкция:
с. если Р к_с+2
если Р
к с+3
то
5 I
с + 1.
с
+ 2.
иначе 5 2
с + 3. в ы х о д
все
Расположение ключевых слов если, то, иначе, все, принятое в
приведенной справа структурной записи, не случайно. Хотя эта
(чисто оформительская) сторона дела и не влияет на порядок
исполнения оператора, тем не менее показанное размещение
ключевых слов — это наиболее наглядная форма записи, облег­
чающая чтение и понимание алгоритмов. Ключевые слова если и
то ограничивают условие Р структурного оператора, слова то и
иначе — серию Щ а слова иначе и все — серию 5 2. Это, разуме­
ется, не исключает того, что в простых случаях может допускаться
и обычное расположение ключевых слов: если Р то 5) иначе 5 2 все.
Неполная условная конструкция:
если Р
с. если Р к_ с + 2
то 5
с+ 1. Т "“
все
с+ 2. в ы х о д
Каждый из операторов 5 ь 5 2, 5 может быть серией. Операторы
серии в одной строке разделяются точкой с запятой.
ЦИКЛ. Базовая структура ЦИКЛ-ПОКА:
пока
с. если Р к с + 2
Я
цикл 5
с + 1 . 5; к с
се
с+ 2. в ы х о д
_
Здесь 5 — тело цикла. Тело цикла также может быть серией
Базовая структура ЦИКЛ-ДО:
цикл 5
с. 8
до Р
с + 1 . если Р к с
с + 2. в ы х о д
все
В структурной алгоритмической нотации используется еще
один вид цикла — цикл с параметром, определяемый следующим
образом:
для х: — а до Ь шаг Н
с. х : а
цикл 5
с + 1 . если х > Ь к с + 4
все
с + 2 . 5; х: =х-\-Н
с+ 3. к с+ 1
с+4. в ы х о д
сех рассмотренных алгоритмических структур
Описание
вместе с их схемами и построчным представлением дано в таб­
лице 3.6.
Перейдем теперь к примерам записи алгоритмов с использо­
ванием структурной нотации.
Таблица 3.6
Базовая структура
Построчная нотация
Структурная нотация
СЛЕДОВАНИЕ
или с. 5 |: 5
РА ЗВИЛКА (полная)
с‘ если Р к с+ 2
с -|- 1. 5 2; к с + 3
с+ 2 . 5 1
с + 3. в ы х о д
если Р
то 51
иначе 5
все
РА ЗВИЛКА (неполная)
с. если Р к с + 2
с + 1. 5
с + 2 . в ыход
если Р
то 5
все
Ц И КЛ-П О КА
с. если Р к с + 2
1. 5 ; к с
с + 2 . в ыход
пока Р
цикл 5
все
Ц И К Л -Д О
с. 5
с -\- 1. если Р к с
с + 2. в ых од
Ц И К Л С ПАРАМЕТРОМ
с + 1.
с + 2.
с+3.
с + 4.
если х > Ь к с + 4
5 ; х: ==х + к
к с+ 1
выход
цикл 5
до Р
все
Пример
3.7.1. Алгоритм
Алгоритм БИТ
чтение а, Ь, с
если а ^ Ь
то у: — а
иначе у : = Ь
все
если у
то у:
все
запись у
конец
' \
'
В структурной нотации также может быть использован описан­
ный в п. 3.6 аппарат подчиненных алгоритмов. Приводим запись
подалгоритма БИ Д (а, р, у) и алгоритма БИТ с его использова­
нием:
Подалгоритм БИ Д (а, § у)
Алгоритм БИТ
если а > р
чтение а, Ь, с
12 ? : = а
БИ Д (а, Ь, у)
иначе у: = р
БИ Д Ж с, у)
все
запись у
возврат
конец
Пример
3.7.2. Алгоритм решения
неравенства
а х > Ь:
Алгоритм Решить неравенство а х > Ъ
чтение а, Ь
если а ф О
то с: — Ь/а
если а ~>0
то запись "х~>". с
иначе запись "х а "
все
иначе
если Ь < О
то запись решений беек. мн.
иначе запись "решений нет"
все
се
конец
Как видно, довольно-таки разветвленный алгоритм записан с
точки зрения структурного анализа всего лишь тремя оператора­
ми: чтение, если — то — иначе — все, конец. И при этом отпала
потребность в операторе идти к. С учетом тенденций современной
алгоритмизации подобные записи алгоритмов выглядят пред­
почтительнее по сравнению с аналогичными записями из предыду­
щих разделов.
1 '
-
-’ ;
145
Столь же эффектно выглядят записи циклических алгоритМО I.
П р и м е р 3.7.3. Алгоритм нахождения наибольшего общего
делителя двух целых положительных чисел:
Алгоритм НОД
чтение а, Ь
пока а ф Ь
цикл если а > Ь
то а: — а — Ь
иначе Ь : = Ь — а
се
все
запись "Н О Д = ", а
конец
П р и м е р 3.7.4. Алгоритм сложения всех элементов числоого массива Щ х?, .... хп:
Алгоритм СМ-1
чтение п, дг1;п
II — 1 ; 5 : = О
пока г ^ «
цикл
5 : — 5 а.1
г. = г + 1
все
запись " 5 = ", 5
конец
Более естественным для подобных алгоритмов является исполь­
зование оператора цикла с параметром:
Алгоритм СМ-2
чтение п, хх.п
для /: = 1 до п шаг 1
цикл 5 : = 5 'Ь а *
все
запись " 5 = ", 5
конец
В тех случаях, когда шагом цикла является число + 1 , указание
«шаг 1 » обычно опускают.
С помощью структурных операторов цикла легко описываются
вложенные циклы, так называются циклические алгоритмы, в ко­
торых телом цикла является цикл. Рассмотрим пример.
П р и м е р 3.7.5. До сих пор мы имели дело с одномерными
массивами, т. е. такими, каждый элемент которых имеет один
индекс. Существуют массивы большей размерности. Например,
матрица
146
011
012
••• 0 1 л
021
022
...
•
02п
•
тп
является примером двумерного массива. Составим алгоритм
вычисления суммы всех элементов матрицы.
0 >
\
Алгоритм СУМАТР
чтение т, п, хг,т 1;„
5: = 0
для I : = 1 до т
-
Ы В/.
цикл
для /: = 1 до п
цикл
5 : = 5 4- о
все
все
запись " 8 — ", 5
конец
Контрольные
вопросы
1 . Каковы положительные и отрицательные стороны (с учеб­
ной и производственной точек зрения) построчной алгоритмичес­
кой. нотации?
(
2. Как записываются в структурной алгоритмической нотации
операторы, реализующие базовые структуры РАЗВИЛКА (полная
и неполная конструкции), ЦИКЛ-ПОКА, ЦИКЛ-ДО, цикл с па­
раметром?
Упражнения
Записать в структурной алгоритмической нотации алгоритмы
решения следующих задач:
1 . Решить уравнение ах= Ъ .
2. Решить сйстему уравнений
а х + Ь у — с,
йх+ еу—1
3. Определить, имеется ли среди чисел а, Ь и с хотя бы
одна пара равных чисел.
4. Определить количество целых чисел среди чисел а, Ь и с.
Указание.
Использовать функцию епИег (х) (целая
часть X).
5. Вычислить сумму 20 первых членов последовательности,
заданной формулой Общего члена
147
6 . Вычислить сумму 30 членов последовательности, заданной
рекуррентно: 0 1 = 2 , а,+ ! = 2 а ,— 1 .
7. Вычислить сумму всех членов ряда а* = Л/(й-}-1 )2 (& = 1,
2 , ...), не меньших заданного числа е.
'
8 . Найти произведение ненулевых элементов одномерного
числового массива.
9. Многочлен степени п задан массивом своих коэффициен­
тов. Найти значение производной многочлена в заданной точке.
У к а з а н и е . Д ля вычисления значения многочлена исполь­
зовать схему Горнера.
1 0 . Определить сумму положительных элементов прямоуголь­
ной матрицы.
11. Проверить, имеется ли в данном одномерном числовом
массиве хотя бы одна пара чисел, совпадающих по величине.
3.8. ЛАБОРАТОРНАЯ РАБОТА № 3
Т е м а . Разработка алгоритмов.
З а д а н и е 1. Составить пошаговую словесную запись какогонибудь «бытового» разветвляющегося алгоритма и построить его
схему.
Показать на этом примере выполнение свойств алгоритмов.
З а д а н и е 2. Составить структурные схемы и построчные
описания алгоритмов решения следующих задач (см. задачи 2.1
и 2.2). Пользуясь построенными схемами, провести структурный
анализ алгоритмов и сделать их запись, используя структурную
алгоритмическую нотацию.
Задачи 2.1
1. Определить, может ли кирпич, имеющий форму прямоуголь­
ного параллелепипеда с ребрами а, Ь и с, пройти через пря­
моугольное отверстие со сторонами х и у.
2. Определить, находится ли точка М (а, Ь) внутри верхней
части единичного круга с центром в начале координат.
3. Определить, имеет ли система
ах + Ь у = с ,
4х+ еу= [
бесконечное множество решений.
/‘
4. Определить, принадлежит ли точка М (х, у) внутренней об­
ласти треугольника с вершинами А (0, 0), В (а, 0) и С (0, Ь), где
а и Ь — положительные числа.
5. Определить, является ли целое число N четным двузначным
числом.
У к а з а н и е . Д ля определения четности разрешается ис.пользовать функцию епИег (х) (целая часть х).
6 . Определить, имеется ли среди трех чисел а, Ь и с хотя бы
одна пара равных между собой чисел.
148
7. Определить, является ли треугольник со сторонами а, Ь и с
равносторонним.
8 . Определить, является ли треугольник со сторонами а, Ь и с
равнобедренным.
9. Определить, имеется ли среди чисел а, Ь и с хотя бы одна
пара взаимно противоположных чисел.
10. Определить, является ли четырехугольник со сторонами а,
Ь, с и Л ромбомД
11. Подсчитать количество отрицательных чисел среди чисел
т, п, р.
12. Определить, принадлежит ли точка М (х, у).области, внеш­
ней по отношению к треугольнику с вершинами А (а, 0), В (Ь, 0)
и С (0, с), где а, Ь и с — положительные числа, причем 'Щ ш.
13. Определить, принадлежит ли точка М (х, у) внутренней
области треугольника с вершинами А (0, а), В (Ь, 0) и С (с, 0), где
а, Ь, с — положительные числа, причем Ь < с .
14. Определить, имеется ли среди целых чисел А, В и С
хотя бы одно четное.
У к а з а н и е . Для определенности четности использовать
функцию епИег (х) (целая часть х).
__
15. Если среди чисел а, Ь и с есть пара взаимно противо­
положных, вывести третье (оставшееся) число, в противном
случае вывести сигнал «нет».
16. Определить количество положительных чисел среди чисел
а, Ь и с.
17. Числа а и Ь выражают длины катетов одного прямоуголь*
ного треугольника, а с и й — другого. Определить, являются
ли эти треугольники подобными.
18. Подсчитать количество пар взаимно обратных чисел сре­
ди трех чисел а, Ь и с.
19. Определить количество целых чисел среди трех чисел
а, Ь и с.
У к а з а н и е . Использовать функцию епИег (х) (целая часть
х).
20. Вычислить значение величины
при условии, что
Задачи 2.2
1. Проверить, является ли одномерный числовой массив
упорядоченным по убыванию.
2. Определить в одномерном числовом массиве число соседств
из двух положительных чисел.
3. Найти наименьший элемент в одномерном числовом массиве.
4. Найти произведение ненулевых элементов одномерного
числового массива.
5. Определить в одномерном числовом массиве число соседств
их двух чисел одного знака.
6 . Определить, имеется ли в одномерном числовом массиве
хотя бы одна пара совпадающих по величине соседних чисел.
7. Определить в одномерном числовом массиве число соседств
не взаимно обратных чисел.
г ::
8 . Найти наибольший элемент одномерного числового массива.
9. Проверить, имеется ли в одномерном числовом массиве
хотя бы одна пара взаимно противоположных соседних чисел.
10. Д ан числовой массив щ, аг, ..., а„. Построить мас­
сив Ьь &2, ■•., Ьп, в котором Щ=Щ$ &2 = 0 | + а 2, Ьз=Щ -{-аг + аз
И Т . Д.
11. Проверить, является ли одномерный числовой массив упо­
рядоченным по возрастанию.
12. Определить в одномерном числовом массиве число соседств
из двух чисел разного знака.
_
■
13. Заменить в одномерном числовом массиве отрицательные
элементы их квадратами.
*
, 1
14. Определить суммы отрицательных и положительных эле­
ментов одномерного числового массива.
15. В одномерном числовом массиве все отрицательные элемен­
ты заменить нулями.
■,
\г
16. Подсчитать в одномерном числовом массиве число отрица­
тельных элементов.
17. Дан упорядоченный массив Ц , Щ, ..., а„. Известно,
что число х принадлежит отрезку числовой оси, вмещающему
заданный массив. Определить номер к, для которого а *_1 < х < а * .
18. Заменить в одномерном числовом массиве элементы,
большие числа М, на число а.
19. Определить в одномерном числовом массиве число соседств
из противоположных чисел.
1
20. Вычислить значение многочлена по схеме Горнера.
Пояснения к выполнению лабораторной работы № 3.
Д ля выполнения з а д а н и я 1 можно избрать произвольный
разветвляющийся алгоритм из числа тех, которыми часто прихо­
дится пользоваться в быту. В некоторых случаях используемый на
практике алгоритм может предполагать включение большого числа
различных условий, рассмотрение которых в полной их совокуп­
ности может привести к чрезмерно усложненному описанию.
Выбирая такой алгоритм в качестве объекта для описания, сле­
дует принять некоторую приемлемую «глубину» детализации алго­
ритма, т. е. пойти на сознательное огрубление реальной ситуации.
Важно, однако, отметить, что в любом случае описание должно
представлять собой законченную систему четко разделенных
150
меж*ду собой пунктов, каждый из которых охватывает одно
элементарное действие алгоритма (общего или логического типа).
Примеры для описания алгоритмов могут быть из самых раз­
личных областей деятельности: посещение магазина, проезд по
заданному маршруту, пользование тем или иным бытовым при­
бором (например, телефоном), поиск слова в словаре, приго­
товление торта и т. д. В качестве примера приведем один из
простейших вариантов описания алгоритма перехода через улицу
на перекрестке, снабженном светофором.
Алгоритм ПЕРЕХОД УЛИЦЫ
1. Подойти к перекрестку и определить
значение (цвет) сигнала светофора
2. Если сигнал зеленый идти к_4
3. Подождать смены сигнала; идти к 2
4. Перейти улицу (на первой половине
пути смотреть налево, на второй — на­
право)
5. Конец
В основу приведенного описания положена упрощенная «страте­
гия» перехода через улицу: независимо от принятой на перекрестке
последовательности смены сигналов светофора основным (и един­
ственным) признаком, обеспечивающим возможность перехода,
служит появление зеленого сигнала, хотя, как известно, на практи­
ке в подобной ситуации пешеход обязан учитывать и другие, более
«тонкие» детали.
Наряду со словесным описанием при выполнении задания 1
должна быть построена схема алгоритма. При ее построении
внутрь блоков можно записывать лишь номера пунктов соответ­
ствующего словесного описания. Схема, соответствующая описан­
ному выше алгоритму перехода через улицу, изображена на рисун­
ке 58. Как видно из конфигурации схемы, алгоритм содержит цикл
вида ЦИКЛ-ПОКА.
З а д а н и е 2 складывается из двух задач (из наборов задач
2.1 и 2.2). Перед выполнением этого задания нужно тщательно
разобрать все примеры, приведенные в п. 3.4—3.7.
Первая задача (из набора задач 2.1) сводится к построению
разветвляющегося алгоритма, причем для получения структурного
варианта во многих случаях потребуются дополнительные усилия
151
(см. пример 3.3.8). Д ля решения второй задачи (из набора
задач 2 .2 ) потребуется составить описание простейшего цикличе­
ского алгоритма, причем, как и при решении первой задачи,
структурная схема в отдельных случаях может получиться не
сразу (см. пример 3.3.9). Разработку циклического алгоритма
всегда целесообразно начинать с выявления повторяющейся части
цикла, т. е. тела. Вслед за этим определяются прочие вспомога­
тельные детали. В зависимости от взаимного расположения
тела и блока проверки окончания цикла образуются структуры
ЦИКЛ-ПОКА или Ц И К Л ‘ДО.
В процессе разработки схем алгоритмов удобно пользоваться
карандашом и резинкой.
Литература к главе 3
1. Д е м и д о в и ч Н. Б., М о н а х о в В. М. Программиро­
вание и ЭВМ.— М.: Просвещение, 1977.
2. Г у д м а н С., Х и д е т н и е м и С. Введение в анализ и
разработку алгоритмов.— М.: Мир, 1981.
3. Х ь ю з Д ж ., М и ч т о м Д ж . Структурный подход к про­
граммированию.— М.: Мир, 1980.
4. Основы информатики и вычислительной техники: Проб. учеб.
пособие для сред. учеб. заведений. Часть 1 / Под ред. А. П. Ершо­
ва, В. М. Монахова.— М.: Просвещение, 1985.
1
V
Г л а в а 4.
ЭЛЕМЕНТЫ П РО ГРАМ М И РО ВАН И Я
4.1. АЛФАВИТ И ПРОСТЕЙШИЕ КОНСТРУКЦИИ ЯЗЫКА БЕЙСИК
Алгоритмический язык Бейсик предназначен для решения боль­
шого круга математических и инженерных задач в режиме диалога
человек — ЭВМ. Программы на языке Бейсик могут быть реали­
зованы на малогабаритных отечественных микроЭВМ типа «Элек­
троника-60», «Электроника ДЗ-28», «Искра-226», Д ВК и др.,
получающих в настоящее время широкое распространение в учеб­
ных заведениях. Ниже рассматриваются первоначальные сведения
о языке Бейсик, необходимые для составления простейших про­
грамм.
1.
Алфавит. Символы, воспринимаемые на языке Бейсик, мо­
гут быть подразделены на следующие группы:
а) прописные латинские буквы А, В, С, ..., 2;
б) прописные русские буквы А, Б, В, ..., Я (кроме Е и Ъ );
в) цифры 0, 1 ,2 , 3, 4, 5, 6 , 7, 8 , 9';
г) знаки арифметических операций:
2.
| (возведение в степень)
(умножение);
/ (деление);
+ (сложение);
(вычитание);
д) знаки отношении:
>
(равно);
(меньше);
(больше);
е) специальные символы . , : ; " ( )
' В Бейсике ЭВМ «Искра-226» наряду с десятичными цифрами возможно
использование шестнадцатеричных цифр 0, I. 2, .... 9, А, В, С, О. Е, I*.
В отличие от буквы О цифра (9 в записях на языке Бейсик перечеркивается.
* В некоторых версиях Бейсика операция возведения в степень обозна­
чается символом Д или 1.
153
I
ж) служебные символы "пр." (пробел), "в. к." (возврат
каретки);
;
^
з) буква л, имеющая значение числа 3,14159265359.
Клавишное устройство ЭВМ «Искра-226», в которой ввод сим­
волов сопровождается их отображением на экране дисплея, отож­
дествляет возврат каретки с переходом на новую строку: для
этих целей клавиатура ЭВМ «Искра-226» имеет клавишу С К /Ь Р
(см. рис. 59).
Л
2. Числа. В языке Бейсик используются числа двух типов:
целые и действительные. Знак <<1щ|> перед числом не ставится, а
для отделения целой части при записи десятичных дробей исполь­
зуется точка. Нулевую целую часть дробного числа можно опус­
кать. Примеры записи чисел:
целые
0
143
— 362
действительные
.01
12.
—24.356
Действительные числа могут представляться в экспоненциальной
форме. Так, например, число 0,005342 может быть представлено
в любой из следующих форм:
.5342Е — 2
.00005342Е2
534.2 Е — 5
Здесь буква Е имеет смысл «возвести 10 в степень». Показатель
степени (порядок) может не иметь знака, если он положителен;
отрицательный порядок обязательно должен иметь знак « — ».
Разрядность чисел в микроЭВМ «Искра-226» — 13 десятичных
разрядов. Диапазон целых чисел — от 0 до 7999, дробных —
от 1 0 ~ 99 до ( 1 0 — 1 0 ~ 12) 10 " .
3. Символьные константы. Язык Бейсик допускает обработку
не только числовой, но и символьной информации1. Символьной
константой может быть цепочка символов, заключенная в кавычки,
например:
‘ Ш
"АВС"
л
"АХ = В"
"24 ОКТЯБРЯ 1984 Г, 9.30"
В цепочке символов могут быть любые символы языка (пробелы,
запятые, точки и т. п.), кроме кавычек.
4. Переменные. Числовая переменная в Бейсике обозначается
любой буквой латинского алфавита или любой латинской буквой,
за которой следует одна цифра. Например:
А
1
Х5
В2
1 Среди отечественных микроЭВМ такую версию Бейсика используют «Искра-226», Д В К и др.
'Ш
/ ■*-'У?: .г. у
/; у-
154
зона 7
зона о
зона 4
Совокупность букв и цифр, обозначающих переменную, называют
ее именем (или идентификатором). В языке Бейсик ЭВМ
«Искра-226» числовые переменные, как и сами числа, могут быть
двух типов: целые и действительные. Значениями целых перемен­
ных всегда являются целые числа, значениями действительных —
действительные. Признаком целой переменной в ее обозначении
является присутствие символа %, располагаемого вслед за именем
переменной. Примеры простых переменных целого типа:
Х%
1%
А5%
Носителями значений символьных констант в Бейсике являются
символьные переменные. Идентификатор символьной переменной
состоит из буквы латинского алфавита или буквы и цифры, за ко­
торыми следует символ Щ . Примеры:
Ап
В2 п
Х 7п
Стандартная длина символьной переменной— 16 символов. Если
символьной переменной присваивается значение, содержащее ме­
нее 16 символов, то недостающие до 16 символы заполняются
пробелами. В случае присвоения символьной переменной зна­
чения, содержащего более 16 символов, символы сверх шестнад­
цати игнорируются. В Бейсике есть, однако, способ устанавливать
произвольную (от 1 до 253) длину символьных переменных.
Таким образом, в языке Бейсик используются константы и
переменные трех типов: целые, действительные и символьные.
Выше мы рассмотрели примеры безындексных, или так называ­
емых простых, переменных. В Бейсике, кроме простых переменных,
могут использоваться переменные, с индексами, служащие для
обозначения элементов массивов. Переменная с индексом обозна­
чается именем массива, за которым в круглых скобках указывают­
ся индексы — числовые или буквенные. Именем массива может
быть любая простая переменная — целая, действительная или
символьная. Примеры: X (2) А% (1,3) В (2 * I, | | С Д (М, Ы)
В языке Бейсик допускается использование только одномер­
ных и двумерных массивов. В общем случае индексом в переменной
с индексами может быть произвольное арифметическое вы­
ражение.
г
;| | |
5.
Арифметические выражения составляются из чисел и пере­
менных с помощью знаков арифметических действий и круглых
скобок. Например:
Рщ 1/■ - ! !| И В щ Ш И
Обычная запись
5х
ах2-\-Ьх-\-с
Ц (х + 5,3 у)
Запись на Бейсике •
5*X
А * Х |2 + В * Х + С
А (I) * (Х + 5.3* V)
Внутри скобок или в бесскобочных записях порядок действий сов­
падает с общепринятым: сначала выполняются все возведения в
степень, потом умножения и деления и, наконец, сложения и вы156
чит&ния. Операции одного приоритета выполняются слева на­
право
Наряду с числами и переменными в состав арифметических вы­
ражений могут входить стандартные функции Бейсика. Каждая из
функций обозначается соответствующим именем, за которым сле­
дует аргумент в круглых скобках. Ниже приводится перечень стан­
дартных функций Бейсика ЭВМ «Искра-226».
Название функции
Синус X
Косинус X
Тангенс X
Арксинус X
Арккосинус X
Арктангенс X
Случайное число между 0 и 1
Абсолютное значение X
Целая часть "X
Сигнум (знак) X
Натуральный логарифм X
Экспонента X (е*)
Квадратный корень из X
Обозначение
5Ш (X)
СОЗ (X)
ТАЫ (X)
АКС5Ш (X)
АКСС05 (X)
АКСТАЫ (X)
Ю Т (X)
АВ5 (X)
I » (X)
50Ы (X)
Ш О (X)
ЕХР (X)
5<э р (X)
Аргументом X может быть число, переменная, арифметическое
выражение (в том числе содержащее функции). Тригонометриче­
ские функции в обычных условиях вычисляются для аргументов,
выраженных в радианах1. Аргумент функции ЩЧЙ (X) не исполь­
зуется и может быть любым числом. Функция 50Ы (X) вычисля­
ется по правилу:^
5 (Ш ( Х ) = 1, если Х > О ,
50Ы (X) == 0, если Х = 0 ,
50Ы (Х) = — 1, если Х <0.Примеры записи арифметических выражений с функциями:
Обычная запись
Запись на Бейсике
3 51п
—Ь—
.
—\ас
2а
агс!е ( Зх — 2е 1х~ |’81)
3 * 5 Ш (Х/2)
( _ в — 5С?К (В{2 — 4 * А * С ))
/ (2 * А)
АРСТАЫ (3 * X—2
ЕХР (АВ5 (X — 1.8)))
1
В версии Бейсика ЭВМ «Искра-226» при желании может быть установ­
лен любой из трех режимов вычислений тригонометрических и обратных три­
гонометрических функций: градусы, радианы или грады (1 град = я/200). Для
этой цели используется специальный оператор-описатель ЗЕЬЕСТ (ЗЕЬЕСТ О —
градусы, ЗЕЬЕСТ К —- радианы, ЗЕЬЕСТ О — грады). При отсутствии.указаний в
форме оператора БЕЬЕСТ автоматически устанавливается режим К (радианы).
■> г Л
-
I
157
6 . Условия. Особую категорию выражений в Бейсике пред­
ставляют условия, которые являются логическими выражениями и
принимают в соответствии с этим лишь два значения — «истинно»
и «ложно». В зависимости от состава 1 ходящих зеличин условия
могут быть двух типов — арифметического и символьного.
И в том и в другом случае условие конструируется одинаково —
оно состоит из левой и правой частей соединенных между собой
одной из операции отношения:
Левой и правой частью условия арифметического типа может
быть произвольное арифметическое выражение. Примеры условий
арифметического типа:
Обычная запись
Запись на Бейсике
х> 0
х О
ах
Ьх-\-с
А * Х |2 = В * Х + С
2 51П X
Ш О (X) < 2 * З Щ (X)
1п х
Условия символьного типа составляются из символьных констант
и переменных, например:
ХП
Ап
Уп
"В"
Сравнение символьных величин ведется слева направо в порядке
следования символов, их составляющих (если в сравнении участ­
вует символьная переменная, то имеется в виду последователь­
ность символов символьной константы, которая является ее теку­
щим значением). Сравнение ведется до первой пары символов, не
удовлетворяющей проверяемому условию. Так, например, процесс
сравнения двух констант из условия
Г/АВВА // // АША //
остановится на второй паре символов, причем будет получено зна­
чение «ложно», так как символы В и Ь не совпадают. Если
сравнение доходит до конца, то значением условия будет значение
«истинно».
При проверке условий с операциями
учитывается порядок старшинства символов алфавита. Самую
низкую степень старшинства имеет символ «пробел». Ниже пере­
числены сим толы алфавита языка Бейсик в порядке возрастания
степени их старшинства (слева направо и сверху вниз):
//
пробел I
# а % О
+
/
0 1 2 3 4 5 6 7 8 9 : ;
А В С О Е Р О Н П К Ь М Ы О Р
дкзтыушхугюАБцдЕФ
Г Х И Й К Л М Н О П Я Р С Т У Ж В Ь
Ы 3 Ш Э Щ ч
Пользуясь приведенным порядком старшинства символов, можно,
например, заключить, что значением истинности условия
158
\
"КВАДРАТ" < "КУБ"
будет значение «ложно», так как В < У (оба символа — русские
буквы) неверно. Это же значение будет иметь и условие
"КУБИК" < "КУБ",
так как, дойдя до четвертого символа, процесс сравнения приведет
к ложному неравенству И < "п р о б е л ".
Контрольные
вопросы
1. Какие основные группы символов составляют алфавит языка
Бейсик?
2. Какие типы чисел используются в языке Бейсик, как они
записываются?
3. Как обозначаются простые (целые, действительные и сим­
вольные) переменные? переменные с индексами?
4. Как определяется порядок действий в арифметических
выражениях?
5. Как составляются условия в языке Бейсик?
6 . Каков порядок сравнения символьных величин?
.
;
*
Упражнения
1. Записать на Бейсике следующие числа:
а) 0,0094;
в) 10~3;
б) -г-13,037;
г) —5,86-104.
2. Выделить из заданных чисел целые и действительные:
а) — 0;
в) 425;
д) —265;
б) 0.0;
г) .425;
е) —26.3Е5.
3. Записать на языке Бейсик следующие арифметические выра­
жения:
.- „
а) х 1,37;
в) (0,1275 -+- 2 з т V®) + 2со$ ;
Ю
,
,
2
б) ао + а ^ + а г х 2;
Ч л/з'П 2 ( х — « ) + 1
г)
|
•
4. Записать на языке обычных математических обозначений:
а) ( 5 —А * Х )/В ;
б) А / В / С * 0 * Е ;
в) АВ5 ( Х - У ) / ( 1 + Х ) \ (А 1 2);
г) (4 * А (I, Л) § ( — 2))/1Х Ю (АВ5 (X )).
5. Даны текущие значения переменных: Х = 2, У = 3, А = 5.
Определить истинность условий:
а) Х < = 2 ;
б) Х * У > Х | У ;
в) А + Х | 2 > = У | 2;
г) ШТ (У/Х) = У - Х .
6 . Определить значения истинности условий:
а) "А РФ А "< "МАРФА";
б) "Д А " < "НЕТ".
4.2. ОРГАНИЗАЦИЯ ПРОГРАММЫ
Программа на языке Бейсик представляет собой последо­
вательность строк. К аж дая строка программы снабжается де­
сятичным номером, который может принимать значения от 0 до
9999. Выполнение программы осуществляется в порядке возраста­
ния номеров строк1, причем в языке Бейсик не требуется, чтобы
строки программы нумеровались непременно последовательными
натуральными номерами. По этой причине для того, чтобы облег­
чить в процессе составления программы запись новых строк между
уже имеющимися, строки программы обычно нумеруют с какимлибо шагом, например, через 10 номеров: 10, 20, 30 и т. д.
Основными компонентами программы, побуждающими ЭВМ
к действию, являются операторы, из которых и состоят строки
программы. Одна строка программы может содержать один
или несколько операторов; операторы в строке программы
отделяются друг от друга двоеточием. Каждый оператор состоит
из двух частей: служебного слова (имени) и информационной
части оператора, называемой телом.
Наиболее употребительный оператор, обеспечивающий в прог­
раммах производство вычислений,— это оператор присваивания,
который в Бейсике имеет две формы — отдельно для числовых
и символьных переменных. Оператор присваивания для числовых
переменных имеет вид:
Ь Е Т < числовая переменная > = С а р н ф м . выражение > 2.
Действие оператора ЬЕТ заключается в данном случае в при­
сваивании переменным, стоящим слева, значений арифметических
выражений, стоящих справа от знака равенства. В частности,
арифметическим выражением может быть число или отдельно взя­
тая переменная.
Примеры:
ЬЕТ 1% = 1 — целой переменной 1% присваивается значение 1 ;
ЬЕТ А = 23.7 — действительной переменной А присваивается
значение 23,7;
'
1'V-ед
ЬЕТ Х = А * 51Ы ( Т ) — действительной переменной X при­
сваивается значение выражения А з»п Т при текущих значениях
переменных А и Т.
У
оператора присваивания для символьных значений в левой
части находится <С символьная переменная> , а в правой —
< символьная переменная > или < символьная константа > .
Примеры:
ЬЕТ А П = "К О Н ЕЦ " — символьной переменной А О присваи­
вается символьное значение "КОН ЕЦ";
Если не предусмотрено программное изменение последовательности выпол­
нения строк.
2 Перевод английских служебных слов дан в конце пособия.
160
-
-
Ц -Т В п —А п — символьной переменной В ц присваива­
ется текущее значение символьной переменной А п .
С помощью оператора ЬЕТ можно присвоить одно и то же
значение не только одной переменной, но и нескольким перемен­
ным сразу; в этом случае переменные перечисляются в левой части
оператора ЬЕТ через запятую:
I
ЬЕТ
* Ш О (В) —значение а 1п Ь присваивается
каждой из переменных х и у.
Служебное слово ЬЕТ в записи оператора присваивания, как
правило, может опускаться.
В программах для ЭВМ обычно предусматривается ввод на­
чальных значений и вывод результатов. Для ввода значений
в ходе исполнения программы используется оператор Ш р О т ,
имеющий вид:
ЙДШЙ № список переменных > .
Переменные в < списке переменных > разделяются запятыми.
В этом списке могут быть как числовые, так и символьные пере­
менные. Встретив в программе оператор 1ЫР1ЛТ, ЭВМ делает
паузу, выводит знак вопроса и ждет, когда с клавиатуры вводно­
го устройства будет введено столько значений, сколько перемен­
ных в списке оператора Ш Р1Л \ Вводимые значения в процессе
ввода разделяются запятыми. При вводе смешанных (числовых
и символьных) значений порядок их чередования должен в точ­
ности соответствовать порядку следования соответствующих пе­
ременных в < списке переменных > оператора ШРГ1Т. После
ввода последнего по списку значения нажимается клавиша пе­
рехода на новую строку, и ЭВМ продолжит выполнение программы.
Так, например, в ответ на запрос оператора ввода
|;
^
Ш Р И 1X , V, и П
на клавиатуре может быть набрана следующая последователь­
ность трех значений:
6.5, 12.8, ВАРИАНТ
В результате ввода эти значения будут присвоены переменным
из списка оператора Ш Р 1 1 Т в порядке их появления в нем:
Х = 6 .5 ,
У = 1 2 .8 ,
О ц = "ВАРИАНТ"
Вывод (печать) результатов осуществляется в языке Бейсик
оператором РКШ Т, имеющим вид:
РКШ Т < список>
где < с п и с о к > может содержать переменные (числовые или
символьные), арифметические выражения (в частности, число­
вые константы), строки текста (т. е. символьные константы)
или и то и другое.
6 Заказ 43
|0 |
I
Если список оператора РК Ш Т состоит из числовой перемен­
ной, то при выполнении оператора произойдет вывод значения
этой переменной (число). Так, например, в результате выпол­
нения оператора
РК1ЫТ А%, В, С
может быть выдана строка числовых значений вида:
23 8.324109283572 — 124.0803250723
Список оператора РКШ Т может содержать и выражение, на­
пример:
РК Ш Т Х-ЬАКСТАЫ(Т)
В этом случае оператор РК Ш Т произведет все предусмотренные
выражением операции и выдаст полученный числовой результат.
Наличие запятой между элементами списка оператора РКШ Т
показывает, что информация выводится в зонном формате (дли­
на зоны — 16 символов; при выводе информации на экран дисп­
лея ЭВМ «Искра-226» следует иметь в виду, что одна строка
вмещает 80 символов). Элемент РИШ Т, перед которым имеется
запятая, выводится в начале следующей зоны. Если между эле­
ментами списка оператора РКШ Т стоит точка с запятой, то ин­
формация выводится в уплотненном формате.
Весьма удобной особенностью оператора РКШ Т в языке
Бейсик является то, что этот оператор может использоваться
для вывода сообщения, комментария или любой строки символов.
Это делается путем включения в список оператора РКШ Т сим­
вольных констант или переменных. Пусть, например, текущее
значение числовой переменной Р в программе равно 46. Тогда
выполнение оператора
РК Ш Т "ПРОПУЩ ЕНО ЧАСОВ"; Р
повлечет выдачу текста:
ПРОПУЩ ЕНО ЧАСОВ 46
В текст программы на Беисике можно включать строки с не­
обходимыми пояснениями, комментариями, что облегчает чтение
листинга программы. Д ля этой цели используется оператор КЕМ,
записываемый по форме
КЕМ <; цепочка символов > ,
где < цепочка символов > может содержать текст (без кавы­
чек) , составленный из любых символов, кроме двоеточия. Опера­
тор КЕМ не исполняется машиной и может размещаться в любом
месте программы. Пример:
140 КЕМ БЛО К СИГМА (X)
Составим теперь несложную вычислительную программу.
П р и м е р 4.2.1. Пусть Ц — диаметр основания цилиндра.
162
а Н
его высота. Площадь поверхности цилиндра и объем вы­
числяются по формулам
5=~+лО Н ,
У =~Н .
Программа вычисления значений 5 и V по задаваемым значе­
ниям Ц и Н может иметь вид:
10
20
30
40
50
60
КЕМ Ц И Л И Н Д Р
Ш Р 1 Л Э, Н
ЬЕТ 5 = я * В \ 2 /2 - \- п * О * Н
Ц М У = л * Ш 2 * Н /4
р Щ
" 5 = " ; 5; " У = " ; V
ЕШ
При вводе значений 0 = 0,6, Н = 1 машина выведет следующие
результаты:
5=2.4504422698
V =.282743338823
Программа состоит из 6 строк. Первая строка содержит не­
исполняемый оператор КЕМ с комментарием, адресуемым человеку и выполняющим в данном случае роль заголовка программы.
Во второй строке расположен оператор ввода 1ЫР1Л, с помощью
которого определяются начальные значения переменных Р и Н.
В строках с номерами 30 и 40 расположены операторы присваи­
вания, вычисляющие искомые значения переменных 5 и V (сим­
вол л, имеющийся на клавиатуре ЭВМ «Искра-226», на экране
дисплея и в печати изображается в форме # Р 1 ) . И наконец,
в строке с номером 50 расположен оператор вывода РК1Г^Т, ко­
торый составлен таким образом, что машина выведет не просто
сами значения 5 и V, а снабдит эти значения принятыми для
подобных случаев обозначениями: 5 = , У = . В последней стро­
ке программы поставлен оператор Е N ^, который обозначает
конец программы. Использование оператора ЕЫЕ> в конце текста
программы необязательно, так как выполнение программы авто­
матически заканчивается после выполнения всех ее строк. Однако
при наличии оператора ЁрГр по окончании счета по программе
ЭВМ дает сообщение об объеме свободной памяти.
Приведенная выше программа Ц И Л И Н Д Р составлена так,
что в результате ее выполнения вычисляется лишь одна пара
значений 5 и V. Если бы понадобилось вычислить значения 5
и V для другой пары значений переменных Э и Н, программу
пришлось бы вводить в память ЭВМ заново. Впрочем, програм­
му нетрудно видоизменить так, чтобы ее без повторного ввода
можно было бы использовать для повторных вычислений. Доста­
точно сделать так, чтобы после выполнения оператора вывода
(строка 50) снова выполнялся оператор ввода (строка 20). Это
достигается заменой оператора ЕЫО (строка 60) оператором
безусловного перехода, который в языке Бейсик имеет вид:
6*
163
I
СОТО < номер строки >
Действие этого оператора заключается в безусловном переходе
к строке с указанным номером. Преобразованная программа бу­
дет иметь вид:
10 КЕМ Ц И Л И Н Д Р Ы
20 ШР1ТГ Р . Н
30 ЬЕТ 3 = л * Щ 2 / 2 + Я * Р * Н
40 ЬЕТ У = л * Р | 2 * Н /4
50 РК Ш Т " 5 = " ; 5, " V » * ; V
60 СОТО 20
Программу Ц И Л И Н Д Р Ы можно использовать для неоднократ­
ных вычислений, так как каждый раз после вывода очередной
пары значений 5 и V машина будет переходить к строке 20 и
запрашивать новые значения исходных данных Б и Н. Ниже
приведен протокол выполнения программы для двух пар значе­
ний Р и Н:
' Ц :
? 0 .6 , I
3 —2.4504422698
V — .282743338823
? 1.4, 2.3
5 = 13.19468914508 V - 3,540574920595
Вычисления в данном случае можно организовать и так, что­
бы все исходные данные (если их не слишком много) были сразу
размешены в тексте программы и автоматически выбирались
машиной по мере потребности в них. Для этой цели в языке
Бейсик имеется пара специальных операторов О АТ А и КЕАО,
которые всегда используются совместно и имеют вид:
О АТА < список констант >■
КЕАО < список переменных >
Строка с оператором ВАТА вводит в программу список кон
стаит*. которые перечисляются после слова ОАТА через заня­
тую, например:
■
. •. .
БАТА 2, 4. 3.2, 10.3, 2.71Е—3
Сами по себе операторы РАТА никакого действия ие вызывают
и могут располагаться в любом месте программы. Чтение разме­
шенных в операторе РАТА констант осуществляется операто­
ром КЕАР, содержащим перечень переменных, расположенных
вслед за словом КЕАР через запятую, например:
КЕАО А. В, С, Р
1 К ак и оператор ШР1ЛГ, операторы ОАТА и РЕАО могут работать с
числовыми и символьными величинами. Пока что мы будем иметь дело только
с числами,
,
164
При выполнении программы операторы ОАТА игнорируются до
тех гор, пока встретится оператор КЕАО. Затем отыскивается
первый по порядку оператор Е)АТА и перечисленные в нем кон­
станты в порядке их следования присваиваются переменным в
операторе КЕАО. Так, если в программе будут использованы
указанные выше примеры операторов ОАТА и КЕАО, то в резуль­
тате выполнения оператора КЕАО произойдут следующие при­
сваивания: А = В , В = 4, С = 3 .2 , 0 = 1 0 .3 . Операторов ОАТА
и КЕАО в программе может быть не по одному, и число их мо­
жет не совпадать, однако количество констант, вводимых в про­
грамму операторами ОАТА, должно быть по крайней мере не
меньше, чем количество переменных, содержащихся в операто­
рах КЕАО. Если оператор ОАТА содержит больше значений,
чем имеется переменных в списке оператора КЕАО, то следую­
щий оператор КЕАО начинает присвоение с первого неиспользо­
ванного при предыдущем чтении значения в операторе ОАТА1.
Если же окажется, что оператор КЕАО содержит больше пере­
менных, чем значений, имеющихся в операторе ОАТА, то разы­
скивается следующий оператор ОАТА, а в случае его отсутствия
выдается сообщение об ошибке (см. приложение).
Ниже приводится программа Ц И Л И Н Д РЫ , в которой исполь­
зованы операторы ОАТА и КЕАО.
10 КЕМ Ц И Л И Н Д РЫ
20 КЕАО О, Н
30 5 = л * ^ \ 2 / 2 + п * О * Н
40 У = п * 0 ^ 2 * Н /4
50 РКШ Т " 5 = " ; 5; " У = " ; V
60 СОТО 20
70 ОАТА 0.6, | 1.4, 2.3, 0.9, 11.2
В ходе выполнения программы переменные © и Н сначала полу­
чат значения соответственно 0.6 и 1, затем 1.4 и 2.3 и т. д.
Каждый раз при повторном прохождении программы опера­
тор КЕАО будет обращаться к первой неиспользованной паре
данных в операторе ОАТА. Печать результатов для заданных
оператором ОАТА исходных значений будет иметь вид:
5=2.4504422698
5 = 13.19468914508
8 = 32.93959897289
V =.282743338823
V =3.540574920595
V =7.125132138343
После исчерпания всех чисел в операторе ОАТА машина выдаст
сообщение ЕКК 27 и остановится.
П р и м е р 4.2.2. В треугольнике известны длины сторон А
и В ^-величина угла между ними X. Нужно вычислить длину стоВ языке Бейсик имеется оператор КЕ5ТОКЕ, с помощью которого взаи­
мосвязь между операторами К ЕА б и ЭАТА в программах может устанавли­
ваться более изощренным способом.
165
роны С, площадь треугольника 5 и радиус описанной окружно­
сти Р. Пусть для определенности А = 8.7, В = 1 7 .3 и X = 68 °.
Программа может иметь вид:
10 КЕМ ТРЕУГОЛЬНИК
20
30
40
50
60
70
80
ЗЕЬЕСТ О
КЕАР А, В, X
С = 3<ЭК (А * А + В * В - 2 * А * В * СОЗ (X))
5 = А * В * 5 Ш (Х )/2
К = С /( 2 * 5 Ш (X))
РК Ш Т "С="-, С; " 3 = лг; 5; "К = "; К
ЭАТА 8.7, 17.3, 68
В соответствии с формой задания значения X в строке 20 разме­
щен оператор ЗЕЬЕСТ, устанавливающий в качестве единицы
измерения аргументов тригонометрических функций градусы
(режим Э ) .
В результате выполнения программы для заданных значе­
ний А — 8.7, В = 17.3, Х = 68 ° ЭВМ выведет значения:
С = 16.19308257405
3 = 69.7752209754
К = 8.73240107357
Понятно, что если исходные данные А, В и X являются числами
приближенными, то в отпечатанных значениях С, 3 и К большин­
ство десятичных знаков являются сомнительными. В Бейсике
имеется функция округления КОЫЫЭ (X, п), где X — арифме­
тическое выражение, задающее округляемое значение, а п —
арифметическое выражение, задающее уровень округления.
В случае, когда значение п не является целым, его дробная часть
автоматически отбрасывается. Округление с помощью функции
КОЫЫО выполняется по правилам:
а) При я > 0 происходит округление до п-й цифры после де­
сятичной точки.
Примеры: КОЫЫО (5.326,2) = 5 ,3 3
К О Ы Ш (2.17, 1.5) = 2 ,2
б) При л = 0 — округление до ближайшего целого.
Примеры: К О Ь ^ Э ( — 2.7,0) = —3
К О Ы Ш (6.5,0) = 6
в) При / г < 0 — округление до (|/г| -(- 1)-й цифры влево от
десятичной точки.
Примеры: К О Ы Ш (2386, — 1) = 2390
К О Ш О ( —84732, — 3 ) = —85000
Так, если в приведенной выше программе строку 70 перепи­
сать в виде
70 РК11ЧТ "С = "; К О Ы Ш (С, 2), " 3 = "; К О Ш 1 ) ( 3 ,2 ) ,
"К = "; К О Ш Р (К, 2),
то программа отпечатает округленные результаты:
С = 16.19
!66
3 = 69.78
К = 8.73
Используя функцию КСЮ Ш (X, п) и какую-либо из известных
методик учета погрешностей, можно, вообще говоря, программ­
ным Путем находить значение п для каждой вычисляемой вели­
чины X и производить округление до верной цифры. Очевидно,
однако, что такой подход сильно усложнит программу.
В небольших по объему вычислениях при фиксированных
значениях входных величин уровни округления вычисляемых
значений могут быть определены «вручную» и заранее заложены
в операторах РКШТ.
Контрольные
вопросы
1. Какова общая структура программы на языке Бейсик?
2 . Каким оператором Бейсика обеспечивается ввод исходных
данных с клавиатуры в ходе исполнения программы?
3. Как работает оператор вывода РКШТ?
4. С помощью какого оператора в программу на языке Бей­
сик включаются пояснения, комментарии?
5. Как с помощью оператора СОТО организуется неодно­
кратная работа одной и той же программы?
6 . Каким образом с помощью операторов ОАТА и КЕАО
организуются запись и считывание исходных данных в тексте
программы?
Упражнения
1. Составить программу вычисления площади поверхности 5
и объема V конуса, заданного диаметром основания О и длиной
образующей
а) с использованием оператора ШР1_1Т;
б) с использованием операторов ОАТА и КЕАО (для трех
пар произвольно выбранных значений О и /,).
2. Радиус окружности, вписанной в равносторонний треуголь­
ник, равен К. Составить программу вычисления стороны, высоты
и площади треугольника.
3. Сосуд имеет форму опрокинутого конуса, осевое сечение
которого — равносторонний треугольник. В сосуд брошен желез­
ный шар радиуса К и налита вода так, что поверхность воды
касается погруженного в сосуд шара. Составить программу вы­
числения уровня воды после того, как шар будет вынут.
В программе использовать функцию округления К01Ж О , при­
чем уровни округления выходных данных заложить вместе с
входными значениями радиуса /? в операторе ОАТА.
167
4.3. ПРОГРАММИРОВАНИЕ
ВЕТВЛЕНИЙ
Д ля программирования разветвляющихся алгоритмов в языке
Бейсик имеется оператор условного перехода (или. коротко, опе­
ратор 1Р), имеющий вид:
1Р < у сл о в и е> ТНЕN •< номер строки >
Действует этот оператор так: если условие при текущих значени­
ях входящих в него переменных истинно, то происходит переход
к строке, номер которой указан после ТНЕЫ; в противном случае
происходит переход к оператору программы, расположенному
за оператором 1 Р (таким оператором может оказаться либо опе­
ратор из той же строки, что и оператор 1Р, но расположенный
за ним через двоеточие, либо — если оператор 1Р в своей строке
является последним — первый оператор из следующей по поряд­
ку строки программы).
Образец записи оператора условного перехода:
20 1Р Х < 0 ТНЕЫ 50
30 РК Ш Т У
Пусть, к примеру, в момент выполнения оператора 1Р текущее
значение переменной Х = —3. Тогда условие Х < 0 будет истинно
и произойдет переход к строке с номером 50. Если же, например,
Х = 5, то условие Х < 0 будет ложно и произойдет переход к стро­
ке с номером 30.
В приведенном выше примере условие оператора 1Р состав­
лено из арифметических выражений, т. е. является условием
арифметического типа. Рассмотрим фрагмент:
40 1Р А а =~"ДА" ТНЕЫ 70
*
50 Р Р Ш Т "В Е РН И С Ь К РА ЗД ЕЛ У 8 "
Условием оператора 1Р в данном случае является условие сим­
вольного типа А п = " Д А " . Если к моменту выполнения опера­
тора 1Р значением символьной переменной А ф будет "Д А ", то
условие А п = " Д А " будет истинно и оператор 1Р осуществит
переход к строке 70. Если же значением переменной А О будет
не константа "Д А ", то 1Р передаст управление строке 50.
Прежде чем перейти к составлению разветвляющихся прог­
рамм, рассмотрим общие приемы программирования средствами
языка Бейсик базовой структуры РАЗВИЛКА (см. п. 3.3). По­
нимание общих принципов программной реализации всех р аз­
новидностей основных структур алгоритмов облегчит затем со­
ставление более сложных программ, включающих базовые струк­
туры как составные части.
Полная условная конструкция. Программирование этой базо­
вой структуры (см. рис. 35) на Бейсике выполняется аналогич­
но записи средствами построчной алгоритмической нотации. Ни­
же приведена запись фрагмента программы, реализующей пол168
ную условную конструкцию (слева — схема, справа — условное
представление соответствующего фрагмента):
со
<0
1Р Р ТНЕЫ
+10
:
о + 20
СОТО о + 30
(0 -4-20
<о+ 30
Неполная условная конструкция. При программировании этой
структуры целесообразно в качестве условия в операторе 1Р взять
не Р, а его отрицание^/1:
ш
1Р Р ТНЕЫ
«о+ 20
ю+10
со+ 20
Перейдем теперь к программированию разветвляющихся
алгоритмов.
П р и м е р 4.3.1. Составить программу поиска большего из
двух чисел.
Программа с использованием оператора ввода ШР1ЛТ мо­
жет иметь вид:
10 КЕМ МАХ (А, В)
20 ШР1ЛГ А, В
30 1Р А > В ТНЕЫ 50
40 X —В:СО ТО 60
50 Х = А
60 РКШ Т "МАХ("; А; ",
В; ") = " ; X
70 СОТО 20
Тело оператора РКШ Т организовано так, что печать результата
будет иметь форму МАХ (А, В) = Х , где А, В — исходные числа,
а X — найденный результат. Так, если задать программе значе­
ния А = 5 , В = 3, то ответ будет выдан в виде
МАХ (5 ,3 ) = 5
П р и м е р 4.3.2. Составить программу решения уравнения
ах — Ь для произвольных значений числовых параметров а и Ь
(см. упражнение 2 к п. 3.4).
Схема алгоритма изображена на рисунке 40. Составим прог­
рамму с использованием операторов Е)АТА и КЕАЭ для трех пар
значений а и Ь, иллюстрирующих работу алгоритма в каждом
из трех логически возможных случаев:
10 КЕМ УРАВНЕНИЕ АХ = В
20 КЕАБ А, В
30 1Р А = 0 ТНЕЫ 70
40 ЬЕТ Х = В /А
50 РК Ш Т " Х = " ; X
60 СОТО 110
70 1Р В = 0 ТНЕN 100
80 РК Ш Т "РЕ Ш Е Н И Й НЕТ"
90 СОТО 110
100 РК Ш Т "РЕ Ш Е Н И Й БЕСК МН"
110 СОТО 20
120 БАТА 0, 0 , 0 , 4, 2, 3
130 Е Ш
П р и м е р 4.3.3. Составить программу решения неравенства
а х > Ь , где а и Ь — произвольные действительные числа (см.
также упражнение 3 к п. 3.4).
г
Рассмотрев всевозможные сочетания значений параметров
а и Ь, приходим к программе, которая может иметь вид:
10 КЕМ А Х > В
20 ШР1ЛГ А, В
30 РК Ш Т "НЕРАВЕНСТВО"; А; " * Х > " ; В
40 1Р А = 0 ТНЕЫ 90
50 С = В/А
60 1Р А > 0 ТНЕЫ 80
70 РК Ш Т " Х < " ; С :С О Т О 120
80 РК Ш Т " Х > " ; С :С О Т О 120
90 1Р В < 0 ТНЕЫ 110
100 РКШ Т "РЕ Ш Е Н И Й Н Е Т ":С О Т О 120
110 РКШ Т "X — ЛЮ БОЕ ЧИСЛО"
120 СОТО 20
Д ля иллюстрации работы программы на ввод необходимо подать
пары значений а и Ь, соответствующих каждому из четырех воз­
можных исходов, например: 0 и — 5 (х — любое число), 0 и 3 (ре­
шений нет), 2 и 6 (х > 3 ), —2 и 6 ( ж —3). Выдача результата
в программе организована таким образом, что каждый раз сна­
чала выводится само решаемое неравенство. Например, после
ввода значений 0 и —5 программа выдаст текст:
НЕРАВЕНСТВО 0 * X > — 5
X — ЛЮ БО Е ЧИСЛО
Использование символьных величин, в том числе и при фор­
мулировании условий для операторов IР, позволяет составлять
программы, в которых диалог человека и ЭВМ происходит в
170
форме «беседы», т. е. на уровне текстовых сообщений. Рассмот­
рим простейший пример такой программы.
П р и м е р 4.3.4. Шуточная программа ТЕСТ, представлен­
ная ниже, сначала выясняет имя собеседника, а затем инте­
ресуется уровнем его математических познаний, требуя ответа на
сакраментальный вопрос «Можно ли делить на нуль?»:
10
20
30
40
50
60
70
80
90
100
110
120
КЕМ\ ПРОГРАММА ТЕСТ
РКЮ Т "ВВЕДИТЕ ВАШЕ ИМЯ"
ящ ер I а
РКШ Т "М ОЖ НО Л И Д ЕЛ И ТЬ НА НУЛЬ?"
ШР11Т А □
1Р А О = "НЕТ" ТНЕЫ 100
1Р А а = "Д А " ТНЕЫ 90
РКШ Т I П ; ", ВАМ НЕОБХОДИМО ПОВТОРИТЬ
МАТЕМАТИКУ": СОТО 110
РКШ Т I а ;
У ВАС СЕРЬЕЗН Ы Е ПРОБЕЛЫ
В МАТЕМАТИКЕ": СОТО 110
РКШ Т "ВЫ, "; I □ ; ", МОЛОДЕЦ!"
РКШ Т "КТО СЛЕДУЮ Щ ИЙ?"
СОТО 20
Логика этой программы несложна, однако анализируя ее рабо­
ту, полезно уяснить, как происходит ввод и последующее исполь­
зование символьных величин.
Программа выводит текст ВВЕДИТЕ ВАШЕ ИМЯ и перехо­
дит к строке 30. Оператор ШР1ЛТ, стоящий в этой строке, выводит
знак вопроса и ждет ввода. Допустим, что собеседник ЭВМ вво­
дит с клавиатуры имя САША. После нажатия клавиши перехода
на новую строку константа САША присваивается символьной
переменной I а . Вслед за этим ЭВМ выводит текст МОЖНО
ЛИ Д ЕЛ И ТЬ НА НУЛЬ? и снова переход к оператору ШР1ГГ
(в строке 50). Любой ответ, вводимый теперь с клавиатуры,
становится значением символьной переменной А П , после чего
происходит переход к строке 60 (оператор 1Р). Если ответом бы­
ло слово НЕТ, то ЭВМ переходит к строке 100 и выводит текст
ВЫ, САША, МОЛОДЕЦ!, в противном случае происходит пе­
реход к строке 70, в которой также стоит оператор 1Р. Если от­
ветом является слово ДА, то ЭВМ выдаст текст САША, У ВАС
СЕРЬЕЗН Ы Е ПРО БЕЛЫ В МАТЕМАТИКЕ. Если ответ не сов­
падает ни со словом ДА, ни со словом НЕТ (например, НЕ
ЗНАЮ ), то ЭВМ перейдет к строке 80 и выдаст текст САША,
ВАМ НЕОБХОДИМО ПОВТОРИТЬ МАТЕМАТИКУ. В каждом
из трех случаев программа заканчивает работу вопросом
КТО СЛЕДУЮ Щ ИЙ? и переходит к началу.
Рассмотренные возможности языка Бейсик позволяют состав­
лять серьезные диалоговые программы, в том числе программы
обучения и контроля знаний.
171
Контрольные
вопросы
1. Какова структура оператора условного перехода в языке
Бейсик? Как действует этот оператор?
2 . Как программируется на языке Бейсик базовая структура
РАЗВИЛКА в виде полной условной конструкции?
3. Как программируется на языке Бейсик базовая структура
РАЗВИЛКА в виде неполной условной конструкции:
а) когда блок 5 расположен На линии «—»;
б) когда блок 5 расположен на линии «-{-»?
Упражнения
ФУ
а) Пг)
г , если г ^ 1 ,
1 — г, если г < 1 ;
б) !(х)
О для целого х,
с 1 § л х для нецелого х.
2. Составить программу поиска большего из трех чисел
(см. схему на рис. 3 9 ).
3. Составить программы решения квадратного уравнения
ах2-\-Ь х с = 0 ( а ^ 0 ): а) в области действительных и б) в области комплексных чисел.
4. Составить программу решения неравенства а л г с З .
5. Составить программы вычисления значений функций:
51П X
з , если х
1,
агссоз х , если — 1
1 п ( х 0 ,8 ), если х
1
/
2и
+
1 , если и
0
,
б) Г (и)
I соз и, если и 0 , где
х ), если ж < 0 ,
\ Х , если х ^ О .
а) Ж
1,
1
6.
Составить программу, которая в процессе беседы со сту­
дентом ставит перед ним какой-либо вопрос и требует ответа.
При этом программа должна предоставлять студенту три попыт­
ки для формулирования правильного ответа и в каждом случае
комментировать действия студента.
4.4. ПРОГРАМ М ИРОВАНИЕ Ц И КЛО В
Д л я составления циклических программ важно понять прин­
ципы программирования средствами языка Бейсик всех разновид­
ностей базовой структуры Ц И К Л (см. п. 3.3). Программные ан а­
логи этой структуры с использованием оператора 1Р составляются
172
аналогично их записи в построчной нотации (п. 3.4). Ниже приве­
дены схемы программ на языке Бейсик для базовых структур
ЦИКЛ-ПОКА и ЦИКЛ-ДО.
Базовая структура ЦИКЛ-ПОКА:
1Р Р ТНЕЫ
а» + 1 0
со+ 20
СОТО со
со-1-20
Базовая структура ЦИКЛ-ДО:
Замена в записи оператора 1г условия Р его отрицанием Р,
как и при программировании базовой структуры РАЗВИЛКА,
обусловлена выбором наиболее целесообразного способа програм­
много представления алгоритмов. Рассмотрим теперь соответ­
ствующие примеры.
П р и м е р 4.4.1. Составим программу нахождения наибольше­
го общего делителя (НОД) двух целых положительных чисел.
Схема алгоритма (метод вычитания) изображена на рисун­
ке 43. Программа может иметь вид:
10 РЕМ НОД (А, В)
20 Ш Ш Т А, В
30 Х = А : У = В
40 1Р Х = У ТНЕЫ 80
50 1Р Х > У ТНЕЫ 70
60 У = У—Х:СОТО 40
70 Х=~Х—У:ООТО 40
80 РКШ Т "Н О Д ("; А; ", "; В; " ) = " ; X
90 СОТО 20
Печать результата имеет форму НОД (А, В) = Х , где А и В — ис­
ходные числовые значения, а X — найденный числовой результат.
Так, например, если программе задать значения А = 1 2 и В = 1 8 ,
то ответ будет выдан в виде НОД (12, 18) = 6 .
Д ля того чтобы сохранить для печати исходные значения
0
ЙИКш Ш ЁЁ
-
Й&
173
данных А и В, в начале программы (строка 30) эти значения
передаются рабочим переменным X и V.
П р и м е р 4.4.2. Составить программу вычисления (генериро­
вания) 100 членов последовательности, заданной формулой
а * = Р Т Г ( ^ = 1 . 2 , . . . , 100).
Схема алгоритма, использующего структуру ЦИКЛ-ПОКА,
изображена на рисунке 60. Соответствующая программа может
иметь вид:
10 РЕМ А = К \ 2 / (К | 3 + 1 )
20 КЕМ ЦИКЛ-ПОКА
30 К = 1
40 1Р К > 100 ТНЕЫ 90
50 А = К 1 2 / ( К \ 3 + \ )
60 РК Ш Т К; А
70 К = К + 1
80 СОТО 40
90 Е Ш
Каждый член последовательности выводится на печать вместе со
своим номером (строка 60). Печать станет еще наглядней и естест­
венней, если оператор РК Ш Т организовать так:
60 РК Ш Т "А ("; К;") = " ; А
Не следует думать, что логика построения циклической про­
граммы каждый раз жестко определяется самим программируе­
мым алгоритмом, очень часто один и тот же алгоритм можно запро­
граммировать как с помощью структуры ЦИКЛ-ПОКА, так и с по­
мощью структуры Ц И КЛ-ДО . Речь может лишь идти об использо­
вании адекватного и наиболее целесообразного для данного алго­
ритма способа программирования. Впрочем, часто выбор того или
иного способа программной реализации связывается только со
вкусами или привычками автора программы.
Рассмотренная выше программа генерирования 100 членов по­
следовательности (пример 4.4.2) может быть составлена по схе174
ме ЦИКЛ-ДО. Действительно, схему этого алгоритма можно
составить и так, как показано на рисунке 61. Соответствующая
программа будет иметь вид:
10
20
30
40
50
60
70
80
КЕМ А = К | 2 / ( К | 3 + 1 )
КЕМ Ц ИКЛ-ДО
К= 1
А = К | 2 / (К \ г + \ )
РКШ Т "А ("; К; ") = " ; А
К=К+1
1Р К .< = 100 ТНЕЫ 40
РФ
В рамках задачи, для решения которой они составлены, две
последние программы равносильны в том смысле, что они дадут
одинаковый результат. Впрочем, программист должен ясно отда­
вать себе отчет в том, что одинаковые по смыслу программы,
составленные на основе структур ЦИКЛ-ПОКА и ЦИКЛ-ДО, всетаки различны. Это различие обусловлено различием самих базо­
вых структур. Как известно, блок 5 в структуре ЦИКЛ-ДО всегда
выполняется по меньшей мере один раз независимо от истинности
условия Р, в то время как в структуре ЦИКЛ-ПОКА при лож ­
ности Р блйк 5 не выполнится ни разу. Если допустить, что в з а ­
дачах, подобных рассмотренной выше, верхняя граница параметра
цикла К заранее не известна и определяется, скажем, в результате
предыдущего счета, то может оказаться, что вторая программа
(ЦИКЛ-ДО) в этой ситуации даст нелепый результат. Дей­
ствительно, если окажется, например, что заданная граница зна­
чения параметра К неположительна, то последовательность ста­
новится неопределенной. А вторая программа в этом случае всетаки выведет первый ее член. Подобные ситуации требуют
особого внимания при составлении программ, суммирующих по­
следовательности.
П р и м е р 4.4.3. Составить программу вычисления суммы п
к
членов последовательности
•
При составлении алгоритма будем исходить из того, что число
п должно определяться в результате ввода. Учитывая это об­
стоятельство, в основу алгоритма положим структуру ЦИКЛПОКА (см. рис. 62). Соответствующая программа будет иметь
вид:
175
I
Рис. 62
10
20
30
40
50
60
70
80
КЕМ СУММА
Ш Р1/Г N
К = 1 :3 = 0
1Р К > Ы ТНЕЫ 70
5 = 5 + К /(К |2 + 1 )
К = К + 1 :С Ю Т 0 40
РК Ш Т "СУММА= " ; 5
ЕЫБ
Иной принцип организации имеют циклические программы сум­
мирования числовых рядов не по заданному количеству членов,
а в зависимости от значения самих членов.
П р и м е р 4.4.4. Составить программу вычисления суммы
4Хг , не меньших по абсолютной величине за:
'' '
1
данного числа 8.
"•
::
Как следует из формулы общего члена, значение первого
члена ряда равно 1 /х. Значение каждого последующего члена
также может быть вычислено по формуле а — к /л:* (при к = 2 , 3 ,...).
Примем вначале 5 = 0 и будем добавлять к искомой сумме очеред­
ной член ряда при соблюдении условия \ а \ ^ е . Схема алгоритма,
основанного на структуре ЦИКЛ-ПОКА, изображена на рисун­
ке 63. Пользуясь этой схемой, легко составить программу на
языке Бейсик:
'
1
нИ Н И бЯн
всех членов ряда
10 КЕМ СУММА РЯДА
20 ШР1ЛГ Е, X
30 К = 1:5 = 0 : А = 1/Х
40 1Р АВ5 (А) < Е ТНЕМ 70
50 5 = 5 + А : К = К - Н
60 А = К /Х | К:СОТО 40
70РК Ш Т "5 = " ;5
80 Е ^
По поводу полученной программы можно заметить, что исполь­
зование для ее составления структуры Ц И К Л -Д О оказалось бы
176
ошибочным, так как при определенном сочетании задаваемых
программе значений е и х значение результата 5 может оказаться
равным 0, в то время как программа ЦИКЛ-ДО и в этом случае
выдаст в качестве результата значение первого члена 1 /х.
Рассмотрим сейчас особо случай, когда условием Р в структу­
ре Ц И КЛ-ДО (см. рис. 36,6) является неравенство вида а > р ,
где параметр цикла а имеет своим начальным значением ао, а в
каждом обороте цикла преобразуется по закону арифметической
прогрессии а : = а - \ - к ( к — заданный шаг). Соответствующий
циклический алгоритм описывается схемой, изображенной на ри­
сунке 64. Для программирования циклических алгоритмов такого
вида в языке Бейсик имеются два специальных оператора: опера­
тор начаЛа цикла (или, коротко, оператор РОК) и оператор конца
цикла (оператор ЫЕХТ). Операторы РОК и ЫЕХТ всегда использу­
ются совместно.
Оператор начала цикла (его называют еще заголовком цикла)
имеет вид:
РОК < прост. п ер е м .> = < а р . в ы р а ж .> ТО < а р . в ы р а ж .>
5ТЕР < а р . выр. >
Вслед за оператором начала цикла располагают строки програм­
мы, которые должны выполняться циклически (эти строки образу­
ют тело цикла). За последней строкой тела цикла размещается
строка со специальным оператором конца цикла, который имеет
вид:
ЫЕХТ < простая переменная >
Переменная, указываемая после ЫЕХТ, должна быть той же (прос­
той) переменной, что и в операторе начала цикла после РОК
(эту переменную и называют параметром цикла). Выражения,
стоящие слева и справа от ТО, задают соответственно начальное
и конечное значения параметру цикла. Выражение, стоящее после
слова 5ТЕР, задает шаг (число), на величину которого изме­
няется параметр цикла после каждого повторения тела цикла.
Шаг может быть как положительным, так и отрицательным.
Условная программная запись алгоритма, изображенного на
рисунке 64, с помощью операторов РОР и ЫЕХТ может иметь вид:
о РОК <х= ао ТО В 5 ТЕР к
I
I
со+ 20 ЫЕХТ а
Выполнение этой программы (как это и следует из схемы, изо­
браженной на рисунке 64) происходит следующим образом.
Параметру цикла а присваивается его начальное значение
ао и один раз выполняется тело цикла 5 (т. е. группы операторов,
размещенных между заголовком цикла и соответствующим ему
оператором ЫЕХТ). Вслед за этим оператор ЫЕХТ увеличивает
значение параметра цикла а на величину шага к и проверяет,
не превосходит ли новое значение параметра цикла арифмети­
ческого выражения р, расположенного за словом ТО в заголовке
цикла. Если неравенство не соблюдается, то осуществляется пов­
торное выполнение тела цикла, в противном случае — выход из
цикла, т. е. переход к оператору, следующему за ЫЕХТ.
Если шаг цикла равен -(-1, указание 5ТЕР 1 в операторе
начала цикла может опускаться. Операторы РОК и ЫЕХТ могут
быть записаны в строках с несколькими операторами при условии,
что РОК является первым оператором в своей строке, а ЫЕХТ —
последним оператором в своей строке'.
Легко видеть, что все алгоритмы, программируемые с помощью
операторов Р О К ^ Е Х Т , могут быть запрограммированы и обычны­
ми средствами языка Бейсик. Это вытекает уже из того, что сама
программная реализация алгоритма средствами Р О К ^ Е Х Т , при­
еденная выше, может быть заменена равносильной записью
с использованием оператора IР :
со а . = = а о
а
ш-4-10
со+ 20 1Р а < р ТНЕЫ а>+10
со4-30 в ы х о д
Приведенная выше запись может рассматриваться как опреде­
ление операторов цикла РОК-ЫЕХТ.
Тем не менее использование операторов цикла (там, где
это возможно) позволяет более лаконично и выразительно опи1 Последнее замечание не относится к случаю вложенных циклов (см
дальш е), когда в одной строке может размещаться несколько операторов ЫЕХТ
178
сыветь циклические алгоритмы по схеме ЦИКЛ-ДО. Так, напри­
мер, .программа генерирования членов последовательности с об­
щим членом а*=-р-р-р (см. схему на рис. 61) может быть сос­
тавлена и таким образом:
10 КЕМ А = К | 2 / ( К * 3 + 1 )
ЩШр й й
\ 20 КЕМ РОК1МЕХТ
30 РОК К = 1 ТО 100
40 А = К | 2 / ( К | 3 + 1 )
50 РКШ Т "А (";■ К; ") = "• А
60 ЫЕХТ К
Здесь тело цикла составляют строки 40 и 50, параметром цикла
является переменная К, а выражение 5ТЕР 1 в заголовке цикла
опущено.
Близкими по характеру к алгоритмам генерирования членов
числовой последовательности являются алгоритмы табулирования
функций.
П р и м е р 4.4.5. Составить программу табулирования функ­
ции
'
Щ
|
.
гм -Щ Р -■
на отрезке [0 ; 1 ] с шагом 0,05.
Схема алгоритма табулирования (ЦИКЛ-ДО) изображена
на рисунке 65. Программа на языке Бейсик:
10
20
30
40
50
60
КЕМ ТАФ
РКШ Т "X", "Р "
РОК Х = 0 ТО 1 5ТЕР .05
Р = Ш О ( Х + 1 ) /( Х + 2 + 1 )
РКШ Т X, Р
ЫЕХТ X
Программа будет выводить две колонки числовых значений:
слева — значения аргумента X, справа — значения функции Р.
Сравнивая эту программу с программой, составленной в при­
мере 1.5.3 (см. п. 1.5), можно сделать вывод о том, насколь­
ко эффективнее решение программируемых задач на микроЭВМ,
обладающей языком высокого уровня, по сравнению даже с
достаточно хорошим программируемым микрокалькулятором.
Рис. 65
Рис. 66
' ^1
Операторы цикла РОК-ЫЕХТ могут эффективно использо­
ваться при составлении циклических программ, работающих с
массивами. В языке Бейсик разрешено использовать только од­
номерные и двумерные массивы.
в ■„
М ассивы , используемые в п рограм м ах на язы ке Беисик, д о л ж ­
ны быть в этих п рограм м ах о б язател ьн о описаны. О писание
массивов осущ ествляется с помощ ью о п ер ато ра-о п и сател я Ш М .
По описанию массива ЭВМ резервирует в памяти необходимое
количество мест для его элементов. Оператор Щ М размещается
в программе раньше, чем начинается работа с соответствующим
массивом. Описание делается так: вслед за словом Ш М поме­
щается имя массива, а за ним (в круглых скобках) верхние
границы индексов — для двумерных массивов через запятую.
Так, массив а,, а 2, ..., а ,0о будет описан следующим образом:
Ш М А (100)
•ЯР-
Максимальной верхней границей индекса в языке Бейсик являет­
ся число 7999. Одним оператором Ш М можно описать несколь­
ко массивов, в этом случае описания различных массивов рас­
полагаются в строке оператора Ш М через запятую. Так, напри­
мер, описание
Ш М Т (50), X (4), 1(14,26)
резервирует в памяти места для двух одномерных и одного
двумерного массива. Как и прочие строки программы, строки
описаний получают свои порядковые номера.
П р и м е р 4.4.6. Дан одномерный массив х х, х2,
*н- Соста­
вить программу вычисления суммы 5 = *1 -\-Х2 -\-.. . хц.
Ввод элементов массива в память ЭВМ, как и сам процесс
вычислений суммы 5 , носит циклический характер; в целях сокра­
щения программы эти два цикла объединены в один — и ввод
очередного элемента хк, и добавление его к искомои сумме &
входят в тело одного и того же цикла (см. схему на рис. оо).
С помощью операторов РОК-ЫЕХТ этот алгоритм программирует­
ся следующим образом:
10 КЕМ СУММА МАССИВА
20 Ш М X (14)
30 5 = 0
40 РОК К = 1 ТО 14
180
\
50
60
70
80
90
100
\
КЕАР X (К)
5 = 5 + Х (К )
ЫЕХТ К
РКШ Т "СУММА 5 = "- 5
О АТА 1, 2, 3, 4, 5, 6, 7
РАТА 8, 9, 10, 11, 12, 13, 14
В качестве конкретных значений в списки операторов РАТА
включены для примера натуральные числа от 1 до 14
С помощью операторов РОК-ЫЕХТ особенно эффективно прог­
раммируются алгоритмы с вложенными циклами.
П р и м е р 4.4.7. Составить программу вычисления и печати
элементов таблицы Пифагора.
Таблица Пифагора — это квадратная матрица из п строк и п
столбцов. Первый столбец и первая строка состоят из натуральных
чисел 1, 2, ..., п так, что левый угловой элемент о.\ | равен 1.
Каждый элемент ац определяется формулой
ч;
•
ац = I X ]«
Алгоритм можно построить следующим образом: сформиро­
вать искомый двумерный массив А и напечатать его в форме
квадратной матрицы (схема приведена на рис. 67). Алгоритм
содержит два цикла: внутренний цикл, подготавливающий эле­
менты строки (при этом значение / остается постоянным, а
изменяется от 1 до п), и внешний цикл, осуществляющий пере­
ход от строки к строке (/ изменяется от 1 до п). Искомая
программа будет содержать два вложенных цикла РОК-ЫЕХТ,
причем параметром внутреннего цикла служит переменная Л, а
внешнего — переменная I:
* '
10
20
30
40
50
60
70
80
90
КЕМ ТАБЛИЦА ПИФАГОРА
Р1М А (10, 10)
РОК 1= 1 ТО 10
РОК Л = 1 ТО 10
А (I, Л) =1*Л
ЫЕХТ Л
ЫЕХТ I
МАТРКШТ А
ЕЫР
Рис. 67
181
Приведенная программа составлена для п — 10 (10 строк и 10
столбцов). Строки 40, 50, 60 образуют тело внешнего цикла,
которое выполняется 10 раз (1 = 1, 2, ..., 10). При этом строка
50, являясь телом внутреннего цикла, выполняется 10 раз(Л =
= 1, 2, ..., 10) для каждого значения I. Таким образом, строка 50
в общей сложности выполняется 1 0 X 1 0 = 1 0 0 раз.
Печать результата осуществляется специальным оператором
МАТРКШТ, который построчно выводит двумерный массив (мат­
рицу) А в виде:
*■, .
1 2 3 4 5 6 , 7
8 9
10
2
4
6
8
10 12 14 16 18
20
3
6
9
12 15 18 21 24 27
30
4
8
12 16 20 24 28 32 36
40
5
10 15 20 25 30 35 40 45
50
6
12 18 24 30
36 42 48 54
60
7
14 21 28 35
42 49 56 63
70
8
16 24 32 40
48 56 64 72
80
9
18 27 36 45
54 63 72 81
90
10 20 30 40 50
60 7080 90
100
К онтрольны е
вопросы
1. Как программируются базовые структуры ЦИКЛ-ПОКА и
Ц И К Л -Д О в языке Бейсик с помощью оператора 1Р (все слу­
чаи)?
2. В чем заключаются особенности циклических программ
составленных на основе алгоритмических структур ЦИКЛ-ПОКА
и Ц И К Л -Д О , и как это следует учитывать в программирова­
нии?
„
3. Как записываются и как действуют операторы цикла
РОК-ЫЕХТ? Какая из структур циклических алгоритмов реали­
зуется этими операторами?
4. Как составляются описания массивов в программах на
языке Бейсик?
Упражнения
1. Составить программу генерирования 50 членов последо­
вательности, заданной формулой общего члена Ь*
=
'*
а) с использованием оператора 1Р (по схемам ЦИКЛ-ПОКА и
Ц И К Л -Д О );
б) с использованием операторов 1- и к - 1мп.л 1 .
2. Составить программы табулирования функций:
а)
(х)= 2' Н г- на отрезке [— 1, 1] с шагом 0,1;
1
I . .
4
*
х
__________________
. л/2*2И 1» 1*1 < 4
Щ Д ан ряд
оо
у,
П—I
л + 0 ,8
= а з 1 ш +
1,8
8,8
'
Составить программы:
а) вычисления суммы первых N членов ряда;
б) вычисления суммы всех первых членов ряда, величина ко­
торых не меньше заданного числа е. (Значения параметров N
и е определяются при вводе.)
50
4. Составить программу вычисления суммы 2 ^ - ! — .
т *-у
V
"»
•
г
-
I
п= 1
П р и м е ч а н и е . Использовать рекуррентную формулу, свя­
зывающую два соседних члена ряда.
5. Составить программу поиска максимального элемента в
одномерном массиве (длину массива выбрать произвольно).
6. Составить программу вычисления значений функции
/ (*> У ) — ' \ * - \ - у для всевозможных значений х и у из после­
довательностей
Х 2, . . . , Х \0 И у I у 2, . . . , 1/20.
4.5. ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ И ПОДПРОГРАММЫ
В программировании иногда возникают случаи, когда однотип­
ные вычисления приходится производить в разных местах прог­
раммы (см. п. 3.4). Чтобы каждый раз не писать одинаковые опе­
раторы, в алгоритмические языки включают специальные сред­
ства, позволяющие описывать повторяющиеся в программе вы­
числения только раз, а по мере необходимости использовать эти
описания в тех местах, где это требуется. В алгоритмических
языках для обозначения такого рода средств обычно используется
общее наименование — процедуры. Имеются такие средства и в
языке Бейсик. К ним относятся определяемые функции (или
функции пользователя),'подпрограммы и подпрограммы с пара­
метрами.,
Функции пользователя. Составитель программы на языке Бей­
сик может по своему усмотрению определять часто используемые
в программе математические функции, а затем использовать их
так, как используются стандартные (встроенные) функции типа
5Ш , СОЗ, ЬОО и т. п. Определяется функция пользователя
с помощью оператора ОЕРР1Ч (служебное слово ОЕРРЫ обра­
зовано сокращением двух английских слов: ^ЕРIN IТIО N и
РУЫСТЮЫ), который записывается в виде:
О Е Р Р Ы с и м я Р Ы > ( < простая числовая переменная > )
арифметическое выражение
Здесь < и м я Р Ы > — цифра или буква латинского алфавита,
183
выполняющая роль обозначения определяемой функции. Пример
определения функции:
ЭЕРРЫ А ( Х ) = Х |2 + 5 * Х + 6
Если в ходе выполнения программы необходимо использовать
значение определенной в программе новой функции при конкрет_______
_
т>л^оп*«'гч_
о
ил^ипм
нужном
ном значении ее аргумента, то достаточно вставить
след
месте идентификатор этой функции вида РЫ < имя РЫ
простой
числовой
пере­
за которым в круглых скобках вместо
м е н н о й > , выполняющей роль формального параметра, вставить
определенной
нужное значение аргумента. Так, например, вызов
обращением
выше функции А (X) может быть осуществлен
РЫА (3).
.- Ц ВЗ; И
_
Действие оператора ©ЁРРН вызывается только обращением из
функции РЫ, поэтому сам по себе он не является исполняемым
оператором и может быть размещен в любом месте
р-----—Iпрограммы.
*уи щ
арифметическое
П равая часть определения функции РЫ (т. е.
себя другие определяемые
выражение> ) может включать |в сеии
функции, но если, например, функция А вызывает функцию В,
В
не
может
вызывать
А
(получается
бесконечный
цикл).
то
П р и м е р 4.5.1. Составить программу вычисления значения
выражения
Ш(х+ а)-МЬ (х + Ь)
1 { х ) рй (х —а) И с1Ь Щ—Ь)
Учитывая, что тангенс гиперболический вычисляется по фор­
муле
*
I
.
_ _
1Н х
_ ____ Л
м.
«чг
шж
жя Л / 'П Г 'Л
V1
О О ИЖ
КТ
—X
—х У
1ВП1
а с1Н х — 1/1Ь х, в программе целесообразно определ!
дуру-функцию вычисления гиперболического тангенса.
10 НЕМ 2 (X)
„ ■
20 РЕРРЫ Т (X) = (ЕХР ( X ) —ЕХР ( — Х ))/(Е Х Р
4 - ЕХР ( —X ))
30 1ЫРУТ X, А, В
Х+ А :д = Х + В
40
50 К = Х —А :5 = Х — В
(<
Э
))/0
/Р
М
Т
(К)
+
1/РЫТ
(5
))
60
// 2
70
80
Подпрограммы. Подпрограмма представляет собой логически
законченный участок вычислительного процесса, завершаемый
оператором КЕТУКЫ. Подпрограмма располагается в произволь­
ном месте общей программы, а ее строки нумеруются обычным
порядком. Существенное значение при этом имеет номер пер­
вой строки подпрограммы, так как он используется при обращении
к подпрограмме. Обращение к подпрограмме осуществляется
184
с помощью специального оператора СОЗЫВ (сокращение английскик слов СОТО и 5ЦВ1КЮ ПЫ Е). После служебного слова
иОЬи)В указывается натуральное число — номер строки с кото­
рой начинается подпрограмма, например:
00511В 120
После обращения к подпрограмме выполняются все предусмотрен­
ные в ней действия, а когда очередь доходит до оператора
КЕТШШ, он осуществляет возврат в основную программу, т. е.
передает управление тому оператору, который стоит непосредст­
венно за соответствующим оператором вызова подпрограммы
005Ш .
^П р и м е р 4.5.2. Рассмотрим работу простой вычислитель­
ной программы, иллюстрирующей процесс обращения к подпро­
грамме с помощью оператора С051)В:
10 Х = 5 : У = 15:2 = 20
20 0 0 5 1 Ш 80
30 Х = 1 8 : У = 2 * Х : 2 = Х | 2 —У
- 40 0 0 5 1® 80
50 Х = 2 3 :У = 5<ЭК (X |3 + 1 4 ) : 2 = Х * У
. 60 0 0 5 и В 80
5 70 Е Ш
| Г 80 А = Х * У + 2
| ; | 90 1Р А > 100 ТНЕN 110
о ! 100 Р = 0:ООТО 120
с 1110 Р = 1
§ 1 1 2 0 РКШ Т "Р = "; Р
с и 30 К Е Ш Ш
Подпрограмма в данном случае располагается в строках 80 —
130 н предназначена для вычисления и печати значения призна­
ка Р ( Р = 0 или Р = 1 ) , значение которого находится в за ­
висимости от определяемых в основной программе параметров
X, У, 2. После каждого из трех обращений (операторы 20,
40, 60) оператор КЕТ1ЛКМ осуществит возврат соответственно
к строкам 30, 50 70, причем содержащийся в строке 70 опе­
ратор Е N ^ остановит программу.
Подпрограммы могут входить одна в другую, однако оператор
0051ЛВ нельзя применять для входа внутрь цикла. Если под­
программа имеет в своем составе цикл, то он должен полностью
заканчиваться в этой подпрограмме (т. е. оператор NЕXТ цикла
должен стоять раньше оператора КЕТ^КN соответствующей под­
программы).
Как видно из рассмотренного примера, подпрограмма, ор­
ганизуемая операторами 0 0 5 1 Ш и КЕТЫКМ, не имеет строго
обозначенного начала, так что в нее можно при желании вхо­
дить в любом месте. Другие способы организации процедур в
Бейсике предполагают строгое определение их начала.
185
Подпрограммы с параметрами. Первый оператор (заголовок)
подпрограммы с параметрами имеет вид:
Б Е Р Р Ы ' < номер подпрограммы> ( < список параметров> )
Обозначение ЭЕРРЫ ' читается как «помеченный РЕРРК». Номе­
ром подпрограммы может быть любое целое число от 0 до 255.
Переменные из < списка параметров >
оператора ОЕРР1М'
представляют собой формальные параметры, перечисленные через
запятую. Как и при организации обычных подпрограмм, послед­
ним оператором помеченной подпрограммы является оператор
КЕТЫКЫ. Операторы, расположенные между ОЕРРЫ ' и КЕТУКН;
образуют тело подпрограммы.
Вызов помеченной подпрограммы осуществляется оператором
СОЗЫ В', имеющим вид:
СО ЗЫ В ' < номер подпрограммы > (С с п и с о к парам етров> )
Здесь < номер подпрограммы > равен соответствующему < но­
меру подпрограммы > из текста соответствующего оператора
ОЕРРЫ', а с список параметров > содержит перечисленные через
запятую фактические параметры. Фактическими параметрами могут
быть или константы, или переменные, однако в последнем случае
их значения перед обращением к подпрограмме должны быть
определены в основной программе. Формальные параметры после
обращения принимают значения соответствующих им фактических
параметров, после чего тело подпрограммы исполняется обыч­
ным порядком.
П р и м е р 4.5.3. Вернемся к задаче вычисления площади
четырехугольника, заданного сторонами х, у, г, I к длинами
отрезков г, з, и, V, соединяющих вершины с внутренней точ­
кой (см. упр. 2 к п. 3.6). Составим программу вычисления пло­
щади четырехугольника, используя подпрограмму с параметрами
вычисления площади треугольника по формуле Герона. В при­
веденной ниже программе эта подпрограмма имеет заголовок
ОЕРРЫ ' 5 (А, В, С, 5) (5 — номер подпрограммы, А, В, С, 5 —
формальные параметры):
10
20
30
40
50
60
70
80
90
100
110
120
186
КЕМ ЧЕТЫ РЕХ У ГО Л ЬН И К
Ш Р Ш X, У, 2 , Т, К, 5, Ы, V
С О ЗЫ В ' 5 (X, 3, К, Р 1 )
С О ЗЫ В ' 5 (У, Ы, 3, Р2)
С О ЗЫ В ' 5 (2, Ы, V, РЗ)
С О ЗЫ В ' 5 (Т, V, К, Р4)
РК1ЫТ "П Л О Щ А Д Ь =
Р 1 + Р 2 + РЗ + Р4
ЕШ
ОЕРРЫ ' 5 (А, В, С, 3 )
Р = ( А + В + С)/2
3 = 3 д к ( Р * ( Р - А ) * (Р — В) * ( Р - С ) )
КЕТЫКЫ
Контрольные
вопросы
Ц Какие средства языка Бейсик используются для исклю
чения повторяющихся в программах описании однотипных вы­
числений?
2. Каков порядок определения и использования в програм­
мах функций пользователя?
3. Каков порядок использования подпрограмм без парамет­
ров в языке Бейсик?
4. Как оформляются и используются помеченные подпрограм­
мы (подпрограммы с параметрами)? . 1
Упражнения
1. Составить программу вычисления значения
1 И у)
выражения
2,3 УТГ+2 51п (х+г/)|
8,94 + Й 1 + 2 зш (х2—8 |
используя определяемую функцию РЫА ( Т ) = 5 ( З К (АВ5 (1 +
+ 2 * 5 Ш (Т ))).
2. Составить программу вычисления числа сочетаний Ст =
т\
п\(т — п)\ ’ ИСП0ЛЬЗУЯ подпрограмму с параметрами для вычисле-
ния значения факториала.
4.6. ГРАФИКА
Используя соответствующие выводные устройства, ЭВМ мо­
жет выдавать информацию в графической форме. Рассмотрим
первоначальные сведения о средствах вывода графической ин­
формации языка Бейсик микроЭВМ «Искра-226».
Устройствами вывода графики в микроЭВМ «Искра-226»
являются символьно-графический дисплей и графопостроитель.
В первом случае графическая информация изображается в
световой форме на экране дисплея, во втором — | форме графи­
ческого изображения на листе бумаги. И дисплей, и графопострои­
тель имеют рабочее поле в форме прямоугольника и вычерчи­
вают графику на своем рабочем поле пишущим узлом, который
перемещается дискретно. Элементарное перемещение пишущего
узла называется дискретом. В зависимости от исходного положения за один дискрет пишущии узел может переместиться (см.
рис. 68): а) из любой узловой точки рабочего поля в одну из
трех соседних точек (четыре случая); б) из любой граничной
не узловой точки в одну из пяти соседних точек; в) из любой
внутренней точки рабочего поля в одну из восьми соседних точек.
Линейные размеры рабочего поля экрана дисплея — 230Х
ХЮ 5 мм, графопостроителя — 300X 200 мм. На рабочем поле
экрана помещается 5 0 0 X 2 5 6 = 1 4 3 600 точек, на поле графои
а)
б)
В)
Рис. 68
построителя — 4 0 0 0 X 2 6 6 6 = 10 664 ООО точек. Расстояние между
соседними точками (по вертикали и горизонтали): у дисплея —
примерно 0,41 мм, у графопостроителя (при номинальном масшта­
бе регистрации) — 0,075 мм. Пишущим узлом экрана дисплея
является световой маркер — графический курсор (имеет форму
буквы "г", местоположение точки указывает вершина угла),
пишущим узлом графопостроителя является перо. И в том и в
другом случае вывод графики происходит в прямоугольной
декартовой системе координат с началом в левом нижнем углу
рабочего поля. Исходным положением пишущего узла является
начало координат, перо графопостроителя при этом находится в
приподнятом положении.
Д ля управления устройствами вывода графики в языке Бейсик
микроЭВМ «Искра-226» имеет специальный оператор РЬОТ.
С некоторыми допустимыми способами записи оператора РЬОТ
познакомимся постепенно.В простейшем случае оператор РЬОТ имеет вид:
РЬОТ < Д х , Ду, 2 >
Здесь угловые скобки есть символы языка Бейсик (знаки срав­
нения < и > ) , они являются неотъемлемым атрибутом в
любой . конкретной записи оператора РЬОТ, и их не следует
в данном случае смешивать с использовавшимися раньше для
определения объектов языка Бейсик металингвистическими угло­
выми скобками.
Параметры Ах и к у задают направления и размеры пере­
мещений соответственно по оси Ох и Оу. Если Д х > 0 , то пере­
мещение осуществляется вправо; если Д х < 0 , то влево. Ана­
логично в зависимости от знака щ. происходит перемещение
или вверх (Д*/>0), или вниз (Д#<с0). В общем случае п ар а­
метрами Дх и Ду могут быть произвольные арифметические
выражения. В этом случае используется целая часть арифме­
тических выражений. Если один или оба эти параметра не з а ­
даны, то соответствующее, перемещение считается равным нулю;
запятые внутри угловых скобок, однако, сохраняются и в этих
случаях.
'у .А -V
Щ
Параметр г используется, в частности, для определения сос188
О
280
,
560
о 5
а)
260
545 560
5)
Рис. 69
тояния пишущего узла. Если вместо г ставится параметр
Ц (с1о\уп — вниз), то пишущий узел будет перемещаться в опу­
щенном (рабочем) состоянии. Если вместо г поставить пара­
метр ® (ир — вверх), то пишущий узел будет находиться в
поднятом (нерабочем) состоянии.
Пусть устройством графического вывода является экран дис­
плея, а курсор находится в исходном положении (в левом ниж­
нем углу). Тогда оператор
РЬОТ < 280, , У
(здесь Д х = 2 8 0 , Д(/ = 0) вызовет холостое перемещение курсора
по горизонтали вправо на 280 точек, т. е. до середины экрана.
А оператор
РЬОТ
, 240, Р
прочертит вертикальную линию в движении снизу вверх на 240
дискрет. Если эти
а оператора выполнить один за другим, то
на экране получится изображение в виде вертикальной линии, пе­
ресекающей экран точно посередине (рис. 69, а). Для последо­
вательного выполнения двух указанных операторов можно раз­
местить их в программе друг за другом, но можно и объединить
в один, расположив их правые части в порядке следования опе­
раторов через запятую:
РЬОТ < 2 8 0 , Ы
240,
Нетрудно составить продолжение, с помощью которого на экране
будет изображена, например, прямоугольная система координат с
началом (относительно исходной системы) в точке (280, 40):
РЬОТ
540, , Й
275, , У
200, V
Первый элемент этого оператора осуществит холостое переме­
щение курсора по вертикали вниз на 200 дискрет, второй эле­
мент сдвинет курсор в этом же (нерабочем) состоянии влево
на 275 дискрет, третий элемент прочертит горизонтальную прямую в движении вправо на 540 дискрет. Поскольку первые два
элемента определяют действия курсора в одном и том же (не­
рабочем) состоянии Щ их можно объединить:
Р Ш Т < —275, - 2 0 0 , Ы > , <54(3, , 0 >
Изображение полученной таким образом системы координат по­
казано на рисунке 69, б.
С помощью оператора РЬОТ может быть изображен любой
символ алфавита или строка символов (символьная константа).
Делается это заменой параметра 2 в операторе РЬОТ соот­
ветствующей символьной константой (в кавычках) или символь­
ной переменной. Вернемся к рассмотренной выше последователь­
ности действий по изображению прямоугольной системы коорди­
нат и заставим оператор РЬОТ «пометить» оси координат сим­
волами X и V.
Символы, выводимые оператором РЬОТ, имеют размер мат­
рицы 5 X 7 шагов, причем вычерчиваются, начиная с левого
нижнего угла этой матрицы. После вычерчивания символа пи­
шущий узел устанавливается в правом нижнем углу матрицы в
поднятом состоянии. Начиная теперь от положения курсора, опре­
деленного оператором
РЬОТ < 2 8 0 , , 1 1 > , < , 240, Э >
установку символа у можно осуществить с помощью элемента
< 3 , 5 " У " > . В элементе оператора, возвращающем курсор
вниз, нужно теперь учесть поправку на ширину символа V (5 дис­
крет) и расстояние от оси Оу до символа V (3 дискрета).
РЬОТ < — 283, — 205, Ы > , < 540, , Б >
Установка символа X вслед за этим может быть осуществлена
следующим образом:
РЬОТ < 5 , 3, "Х" >
Быстрое перемещение пишущего узла в поднятом положении в
левый нижний угол (исходное начало координат) осуществляет­
ся оператором
РЬОТ < , , К >
Здесь символ Р (гезе! — восстановить) вставлен в элементе опе­
ратора РЬОТ на место параметра г, а значения \ х и Ау без­
различны.
Таким образом, построение координатных осей с центром в
точке (280, 40) вместе с обозначениями осей символами X и V и
установкой курсора в начале исходной системы координат может
быть выполнено операторами:
РЬОТ < 2 8 0 , , Ы > , < , 240, Э > , < 3 , 5, " У " >
РЬОТ < — 283, —205, Ы > , < 5 4 0 , , В >
РЬОТ < 5 , 3, " Х " > , < , , К >
Д ля построения графиков функций удобно иметь процедуру вы­
черчивания координатных осей на рабочем поле с началом в
190
произвольно заданной точке. Ниже приведена программа, в ко­
торой описана и используется такая процедура (подпрограмма
с параметрами 1000 (А, В )):
10 РЕМ СИСТЕМА КООРДИНАТ
20 ЗЕЬЕСТ РКШ Т 10
30 Ш РО Т А, В
40 СОЗЫВ' 1000 (А, В)
50 5ТОР
60 СОТО 30
70 МЙЩ Ж 1000 (А, В)
80 Р Ш Т < А , , Ы > , < , 240, 0 > , < 3 , 5, " У " >
90 РЬОТ < —А —3, В —245, Ы > , < 5 4 0 , , Р >
100 Р Ш Т < 5 , 3, " Х " > , < , , К >
110 к е т ы к ы
Оператором ЗЕЬЕСТ РКШ Т 10 устанавливается графический
режим работы дисплея. Схема расчета смещений для элементов
оператора РЬОТ показана на рисунке 70. Как следует из этой
схемы, исходные значения параметров в приведенной выше
программе следует задавать в промежутках 5 <1'-А< 545,
1< В < 240.
Приведем сейчас дополнительные сведения по использованию
оператора РЬОТ.
Оператор РЬОТ позволяет регулировать масштаб изображае­
мых символов — с этой целью на место параметра г ставится
символ С, а Дх в этом случае задает масштаб (Ду безразлично).
Так, например, оператор
РЬОТ < 3 , , С > , < 2 0 , 40, "ИСКРА-226">
первым элементом устанавливает утроенные размеры символов, а
191
I
вторым выдает этими символами текст ИСКРА-226, начиная с
точки (20,40). Расстояние между символами регулируется пара­
метром з ’. В этом случае элемент оператора РЬОТ имеет вид
< А х , Ау, 3 > , где Ах и Ау задают расстояния сдвига между
символами по горизонтали и вертикали соответственно. С по­
мощью такого элемента можно, например, раздвинуть символы
в тексте ИСКРА-226:
|1
РЬОТ < 3 , , С > , < 1 0 , , 5 > , < 2 0 , 40, "И С К РА -226">
Элемент оператора РЬОТ будет исполняться повторно, если перед
ним разместить < арифметическое выражение > . Количество
повторений задается целой частью < арифметического выраже­
ния > , значение которого должно быть положительным. 1ак,
например, оператор
РЬОТ 5 < 1 0 , 20, " Х " >
5 раз выведет символ X, сдвигая каждое новое его положение
на 10 дискрет по горизонтали и на 20 дискрет по вертикали.
Одной из форм представления символьных констант в Ьеисике
является так называемая НЕХ - функция. Ее аргумент состоит
из конечной совокупности двузначных шестнадцатеричных кодов,
например:
й
;
НЕХ (1В0С4А), НЕХ (4С21) и т. п.
С помощью двузначных шестнадцатеричных кодов (НЕХ-кодов)
в языке Бейсик кодируются любые символы языка, а такж е раз­
личные управляющие сигналы (таблицы НЕХ-кодов имеются
в технической документации микроЭВМ). Так, например, управ­
ляющий сигнал очистки экрана дисплея и установки графического
курсора в начало координат имеет код 0 0 . Если соответствующую
НЕХ-функцию (как символьную константу) вставить на место
параметра т. в элемент оператора РЬОТ.
РЬОТ < Ах, Ау, НЕХ (0 0 ) > ,
то оператор РЬОТ реализует указанный выше управляющий сиг­
нал (здесь Ах и Ау безразличны). Управляющие НЕХ-коды
можно выводить и не используя оператор РЬОТ. Д ля этой
цели может быть использован обычный оператор РКШ Т, на­
пример:
РК1ЫТ НЕХ (0 0 )
Приведем примеры на использование рассмотренных выше средств
управления графикой.
П р и м е р 4.6.1. Вывести на экран изображение равносто­
роннего треугольника.
Примем длину стороны треугольника за 100 единиц,
тогда его высота равна (\00^ /3 )/2 ш 8 7 . Если нижнюю левую
вершину поместить в точку (230,50), то построение обеспечива192
етея оператором (см. рис. 71):
РЬОТ
87, Й
230, 50, Ы
87, ©
50,
100, О
50,
Нетрудно определить процеду­
ру с параметром для построения
равностороннего треугольника
по заданной стороне А с учетом
симметричного расположения
фигуры на экране:
100 ОЕРР1Ч' 3 (А)
110 Х = Ш Т ((560 —А I)/2
! ). :Т
—ИЙЙР#® (3) /2
120 1Р ШТ (Т) < 2 5 6 ТНЕМ 150
130 РКШ Т "УМЕНЬШИТЕ Д ЛИ Н У СТОРОНЫ //
140 СОТО 180
150
= ШТ ((256 - Т ) / 2
160 РЬОТ
X, V, 1
ШТ (А /2), ШТ (Т), Е>
170 РЬОТ < Ш Т (А /2 ), — ШТ (Т), 0 > , < - А , , Р > , <
К
180 КЕТ11КЫ
П р и м е р 150 ^ ®ь,вести на экран график функции / (х)
0,1х2—2х
Организуя построение графика функции на рабочем поле
устройства графического вывода, необходимо правильно опреде­
лить положение осей координат с тем, чтобы точки графика на
выбранном промежутке изменения аргумента не выходили за пре­
делы рабочего поля. В данном случае ось Ох необходимо поднять
по меньшей мере на 160 дискрет. В приведенной ниже программе
сначала строится система координат с центром в точке (280, 160).
Построение точечного графика параболы ведется оператором
РЬОТ Ш'*
X, л/V, " "
который в каждом обороте цикла возбуж­
дает движение графического курсора из начала исходной систе­
мы координат к точке с координатами (Х + 280, У4-160), т. е.
к точке (X, V)
новой системе координат:
10 ЗЕЬЕСТ РКШ Т 10
20 РЬОТ
280, , Щ Ш < , 240, О
3,5, "У
30 РЬОТ
—283, - 8 5 , §
560, , Е>
40 РЬОТ
5, 3, "X"
1*к
50 РОК X = —40 ТО 60
60 У=х.1 * Х |2 —2 * X — 150
70 2 = Х + 280: Т = У + 1 6 0
80 РЬОТ < 2 , Т,
< , 1К
90 ЫЕХТ X
100 ЕЫР
193
Параметр X в цикле изме­
няется от —40 до 60, и такие
границы X в данном случае
выбраны не случайно, так как
при всех значениях аргумента
из этого интервала точки строя­
щегося графика оказываются
в пределах рабочего поля экра­
на (см. рис. 72). Дело в том,
что при несоблюдении этого
Рис. 72
правила график будет изобра­
жаться в искаженном виде.
Путем незначительных усовершенствований программу можно
сделать более универсальной. Д ля этого нужно прежде всего пре­
дусмотреть задание нового центра координат {А, В) путем вво­
да: это позволит пользователю самому определять положение
новой системы координат с целью получения наиболее желатель­
ного расположения графика на поле экрана. При таком подходе,
однако, в программе придется перед изображением каждой точки
графика проверять, не оказывается ли она за пределами рабо­
чего поля. Универсальный характер приведенной ниже программе
придает также возможность определять вид функции с помощью
оператора ОЕРРЫ, не изменяя всей программы в целом.
10 КЕМ ГРАФИК ФУНКЦИИ
20 БЕЬЕСТ РК Ш Т 10
30 ШРЫТ А, В
40 Р Ш Т < А, , Р Й Я < , 240, Э > , < 3 , 5, " У " >
50 Р Ш Т < —А —3, В — 245, Ы > , < 5 4 0 , , 0 >
60 РЬОТ < 5 , 3, " Х " > , < , , К >
70 РОК Х = — А ТО 560— А
80 У = РЫР (X)
90 1Р У > (256—В ) ОК У < — В ТНЕЫ 120
100 2 = Х + А :Т = У + В
110 Р Ш Т < 2 , Т,
<, , К>
120 ЫЕХТ X
130 5 Т О Р :Р К Ш Т НЕХ (0Э)
140 СЮТО 30
150 ЭЕРРЫ Р ( Х ) = .1 * X |2 — 2 * Х — 150
Путем незначительных изменений параметров оператора РЬОТ,
входящего в тело цикла, можно добиться получения графика
функции в виде сплошной линии.
Способность дисплея быстро перемещать изображения в раз­
личных' направлениях позволяет программировать и демонстри­
ровать на экране мультипликационные сюжеты.
П р и м е р 4.6.3. Составим программу старта космической
ракеты.
■
Пусть (х, у) — координаты левого нижнего края «ракеты» (см.
194
%
рис.. 73). Приняв изображен­
ные на рисунке размеры и кон­
фигурацию ракеты, ее изобра­
жение в некотором текущем
положении, определенном точ­
кой (х, у), можно получить
операторами:
РЬОТ < Х , V, Ц > , < , 50, 0 > ,
< 1 0 , 10, 0 > , < 1 0 , - 1 0 , Э >
РЬОТ < , — 50, Ь > , < - 2 0 , ,
и > , < , , Н Е Х (0 О )>
Последний элемент с помощью НЕХ-кода 0 0 гасит содержимое
экрана и перемещает пишущий узел к началу координат.
Если теперь в цикле менять параметры X и V, то «ракета»
станет перемещаться по экрану. Увеличивая значение У (при неиз­
менном значении X), мы получим изображение вертикального
старта. Программа, помещенная ниже, демонстрирует старт бес­
конечной серии «ракет», причем точка старта каждой из них в
пределах от 1 до 550 определяется случайно.
10 ЗЕЬЕСТ РКШ Т 10
20 Х = Ш Т р Щ ( — 1)* 5 5 0 + 1 )
30 РОК У = 0 ТО 260
40 РЬОТ < Х , У, ЩЩ, < , 5 0 , 0 > , < 1 0 , 10, 0 > , < 1 0 ,
- 10, 0 >
50 РЬОТ < , - 5 0 , 0 > , < - 2 0 , , Йй>, < , , НЕХ (0 О )>
60 ЫЕХТ У
70 СОТО 20
Контрольные
вопросы
1. Какие устройства вывода графики входят в комплект
микроЭВМ?
2. Каковы характеристики рабочих полей дисплея и графо­
построителя?
3. Каковы основные возможности оператора РЬОТ в изображе­
нии графической и символьной информации?
А
Упражнения
1. Составить программу вывода на экран дисплея чертежа рав­
нобочной трапеции с основаниями А и В (Л > В) и боковой сторо­
ной С.
2. Составить подпрограмму с параметрами для построений гра­
фика функции. Подпрограмма должна строить график в произ­
вольно задаваемой системе координат в виде сплошной (на участ­
ках непрерывности) линии, предусматривать возможность измене­
ния масштаба и отмечать в ходе построения графика точки его
195
пересечения с осями координат соответствующими числовыми зн а ­
чениями.
4.7. РЕАЛИЗАЦИЯ СТРУКТУРНЫХ АЛГОРИТМОВ СРЕДСТВАМИ ЯЗЫКА
ПАСКАЛЬ
Желание усовершенствовать методику конструирования алго­
ритмов, приведшее к появлению структурного подхода, не могло
не оказать влияния на разработку новых языков программирова­
ния. Потребность в разработке новых алгоритмических языков
вытекает из многих факторов. Это и стремление учесть не­
достатки и ошибки ранее разработанных языков, а также (и это
наиболее существенно) учесть новые возможности вычислитель­
ных систем. Так, появившиеся в сравнительно недавнее время
версии алгоритмических языков Паскаль и Ада уже учитывали
потребности их использования в реальном масштабе времени, в
режимах мультипрограммирования и параллельной обработки.
В новых языках предусмотрена возможность описывать произ­
вольные типы данных, в том числе символьные данные, массивы и
множества. Вместе с тем и язык Паскаль, а затем и построенный
на его основе язык Ада не избежали влияния идей структуриза­
ции, что привело к появлению в них специальных средств, облег­
чающих описание структурированных алгоритмов.
Рассмотрим кратко эти новые черты современных языков на
примере алгоритмического языка Паскаль, который является в
настоящее время составной частью математического обеспечения
ряда последних моделей микроЭВМ. Принципы построения основ­
ных операторов языка Паскаль, как и других современных
алгоритмических языков, имеют много общего с характером
структурной алгоритмической нотации, рассмотренной в п. 3.7.
Строки программы на языке Паскаль не требуют сквозной
нумерации, как это делается, например, в языке Бейсик. Прин­
ципы организации программ на языке Паскаль, основываясь на
строгом синтаксисе языка, допускают тем не менее достаточно
свободы для наглядного изображения программ на бумаге в про­
цессе их разработки. Эти особенности программирования на П ас­
кале при достижении определенного навыка существенно подры­
вают традиционную роль графических схем алгоритмов как
средства их предварительной записи.
В программе на языке Паскаль выделяются следующие
основные разделы:
<С заголовок программы > ;
< описания > ;
< операторы > .
|
Разделы отделяются друг от друга точкой с запятой, в конце
программы ставится точка. Каждый раздел начинается со своего
ключевого слова.
196
/
.
щ
Ключевым словом заголовка является слово РКООКАМ1.
Вслед за ключевым словом указывается имя программы, а также
информация об использовании устройств ввода-вывода! Пример
заголовка:
РРООКАМ ПОИСК (О1ЛГР0тГшР1ГГ);
ПОИСК — это в данном случае имя программы, а служебные сло­
ва 01ЛР11Т и ШР11Т сообщают машине, что в программе
будет предусмотрен вывод результатов (0 1 Л Р 1 Л ), а также ввод
значений исходных данных в процессе работы программы
(Ш Р 1Л ). Второе из этих указаний может в определенных ситуа­
циях отсутствовать.
Раздел описании содержит информацию для машины о перечне
и свойствах величин, используемых в программе. В Паскале описа­
ния подразделяются на описания меток, описания констант, описания типов данных, описания переменных и описания функций и
процедур. В каждой конкретной программе могут присутствовать
не все из указанных описаний, однако отмеченный выше порядок
их следования должен выдерживаться. Обязательной частью раз­
дела описаний является описание переменных. Описание пере­
менной имеет вид:
УАК »:Т
Здесь V — имя (идентификатор) переменной, а Т — ее тип. В
Паскале действуют четыре стандартных типа величин (помимо тех,
что могут быть дополнительно-определены в каждой программе —
в разделе описания типов данных): ШТЕОЕК (целый), КЕАЬ
(действительный), СНАК (символьный), ВООЬЕАЫ (логический).
Имена переменных одного типа могут быть указаны в одной строке
описания через запятые. Пример описания переменных действи­
тельного типа:
§?>■■■
| УАК А, В, 51ЛМ, АЬРА!, АЬРА2:КЕАЬ
Именем (идентификатором) в Паскале может быть любая последо­
вательность букв и цифр, начинающаяся с буквы.
Выражения в языке Паскаль конструируются в рамках уста­
новленных типов величин и допустимых операций над этими
величинами. Так, к объектам целого типа применимы операции
+ . — , X , а также две особые. операции Щ У (целочисленное
деление; вычисляется частное от деления двух натуральных чи­
сел) и МОО (вычисление остатка от целочисленного деления).
К объектам реального типа применимы арифметические операции
Ш —! X , / (в Паскале нет операции возведения в степень). Над
В зависимости от возможностей устройств ввода-вывода изобразительные
средства языка Паскаль в конкретных реализациях могут расширяться за счет ис­
пользования различных шрифтов. В данном случае, как и при изложении языка
Бейсик, используются лишь прописные буквы латинского и русского алфавитов.
Щ
'
'
197
объектами символьного типа, как и в языке Бейсик, можно произ­
водить только операции сравнения { < , <1, ==, Ф ,
> ) , при­
менение которых основывается на определенном для конкретной
реализации Паскаля способе упорядочения символов языка. Сим­
вольные константы в языке Паскаль заключаются в апострофы.
Д ля объектов логического типа определены логические операции
Д (и), V (или) и | (н е )1. Значением истинности логических
выражений является одна из двух констант: ТНЫЕ (истинно)
или РАЬЗЕ (ложно). В Паскале установлен следующий порядок
выполнения операций: наивысшую степень старшинства имеет опе­
рация |', затем выполняются операции типа умножения ( X , /. Л»
Э1У, МОЭ) и, наконец, операции типа сложения ( + , —, V)Язык Паскаль имеет свой перечень стандартных функций.
В их числе обычные для алгоритмических языков функции, такие,
как 5 Ш (синус), СОЗ (косинус), АКСТАЫ (арктангенс), ЬЫ (на­
туральный логарифм), ЕХР (экспонента), З Р К Т (квадратный ко­
рень), АВ5 (абсолютная величина). Но есть и новые: 5 0 К (вто­
рая степень), РК ЕЭ (предшествующий элемент; например,
Р К Е О ( —5 ) = —6, Р К Е О (4 )= 3 ), 511СС (следующий элемент),
ТК1ЛЧС (отбрасывание дробной части; например, ТРи1ЫС(л) =
= 3), К О и N 0 (целая часть числа). Используя в арифмети­
ческих выражениях объекты типа КЕАЬ и 1ЫТЕОЕК, нужно
учитывать следующие условия. В выражении типа КЕАЬ любой
элемент типа КЕАЬ может быть заменен на элемент типа
ШТЁОЁК. Но если есть потребность использовать элемент ти­
па КЕАЬ там, где используются только элементы типа ШТЕОЕК,
то необходимо использовать явную функцию преобразования тяпов (например, ТК1ЛМС или К01Ж Е)).
,|
Основным разделом программы является раздел операторов,
который состоит из последовательности операторов, заключенных
в операторные скобки ВЕСНЫ и ЕЫО (такая конструкция в П аска­
ле называется составным оператором). Операторы отделяются
друг от друга точкой с запятой, но перед ЕЫЭ запятая опуска­
ется. Знак присваивания в Паскале обозначается : = , так что
операторы присваивания имеют вид:
< переменная > : = * < выражение >
Исходные данные к программам частично определяются, как это
бывает иногда в самих программах, однако основная их часть
помещается обычно после текста программы. Д ля ввода исходных
данных применяются процедуры ПЕЛО и КЕАОЬЫ (второе имя
происходит от слияния двух слов КЕАО и Ы Ы Е). После выпол­
нения процедуры КЕАО значение следующего данного читается из
1 В некоторых реализациях языка логические операции обозначаются сло­
вами АЫЭ ( Д ) , ОК ( V ) . ЫОТ ( | ).
#
198
йй
I
это*) же строки, а при выполнении процедуры КЕАОЬЬ’
с новой строки. Вывод данных осуществляется процедурами
ШЭДгЕ и ШШТЕЬЫ (от слов ШК1ТЕ и ЬШ Е). Во втором случае
после выполнения предписанных указаний о печати происходит
переход на новую строку.
Теперь мы можем привести пример записи программы на языке
Паскаль.
П р и м е р 4.7.1. Определить, имеется ли среди чисел а, Ь и с
хотя бы одна пара взаимно обратных.
РКООКАМ ВЗОБР (ОПТР11Т, ШРЫТ);
УАК А, В, С: КЕАЬ;
Р: ВООЬЕАЫ;
ВЕОШ
КЕАЭ (А, В, С);
Р: = (А*В = 1)V(А * С = 1 ) У ( В * С * 1 ) ;
ШШТЕЬГМ(Р)
ЕШ .
Эта простейшая программа, помимо общих принципов организа­
ции программы на языке Паскаль, демонстрирует еще и использо­
вание величин логического типа. Результатом работы программы
будет вывод одной из логических констант: Т1ШЕ (пара взаимно
обратных чисел имеется) или РАЬЗЕ (взаимно обратных чисел
среди а, Ь и с нет).
Условный оператор в языке Паскаль имеет две формы, соответ­
ствующие вариантам базовой структуры РАЗВИЛКА (см. п. 3.3).
Одна из них является аналогом полной условной конструкции:
1Р < логическое вы раж ение> ТНЕЫ < оператор> ЕЬЗЕ
< оператор > ;
другая — неполной:
1Р <Слогическое выражение > ТНЕЫ < оператор >
Используя условный оператор, вывод результата в предыдущей
программе можно сделать более информативным. Можно, напри­
мер, заменить оператор А^К1ТЕЬЫ (Р) тремя операторами:
МУШТЕ ('С РЕ Д И ЧИСЕЛ А, В И С ');
1Р Р
ТНЕЫ Ш 1 Т Е ('ИМЕЕТСЯ ПАРА')
ЕЬЗЕ ^К 1 Т Е ('НЕ ИМЕЕТСЯ');
Щ
»
('ВЗАИМНО ОБРАТНЫХ')
Как видно уже из этого простого примера, естественная форма
оператора 1Р позволила отказаться от неизбежного в данном слу­
чае при использовании языка Бейсик оператора СОТО, что делает
программу более наглядной.
:
199
ч
Особенно эффективно идеи структуризации реализованы в опе­
раторе цикла языка Паскаль. Этот оператор имеет три формы з а ­
писи, две из которых фактически совпадают с базовыми структу­
рами ЦИКЛ-ПОКА и Ц И К Л -Д О (см. п. 3.3).
Оператор типа ЦИКЛ-ПОКА имеет в Паскале вид:
ОО
условие
тело
тело
является логическим выражением, а
Здесь
условие
состоит из одного или нескольких операторов (в последнем слу­
чае тело является составным оператором, т. е. заключается в
скобки ВЕСНЫ и ЕЫО). Тело цикла исполняется до тех пор, пока
< у с л о в и е > не станет ложным.
Оператор цикла, соответствующий структуре Ц И К Л -Д О , запи­
сывается по форме
КЕРЕАТ
тело
условие
Ш Т1Ь
ШН1ЬЕ
В данном случае выход из цикла происходит сразу после того,
как < условие> станет истинным.
Если число повторений в цикле не зависит от результата
работы оператора цикла, а, например, известно заранее, то для
этих целей лучше всего может быть использован имеющийся в П ас­
кале оператор цикла с параметром:
выражение
ОО
выражение
ТО
параметр
РОК
тело
Рассмотрим примеры организации циклических программ на языке
Паскаль.
П р и м е р 4.7.2. Программа нахождения наибольшего общего
делителя двух целых положительных чисел (см. такж е рис. 43 и
программу примера 4.4.1):
г,
? -®
^
РКООКАМ Н ОД (ОЫТРиТ, Ш Р О Т );
УАК А, В : Ш ТЕОЕК;
ВЕОШ
КЕАО (А, В);
X : = А; V : = В;
\УН1ЬЕ Х=И=У ОО
1Р Х > У
ТНЕЫ X
X—V
Е Ь ЗЕ У
У -Х ;
\УК1ТЕ ('Н О Д (', А,
В, , ) = , ,Х )
ЕШ .
П р и м е р 4.7.3. Программа генерирования 100 членов после
Ц
довательности с общим членом а * = р -т " р
200
3
\
\
Н
И
■
Ы,
У
х
РКОСКАМ ПОСЛ (011ТР11Т);
УАК К, №: ШТЕОЕК;
А : КЕАЬ;
ВЕОШ
К : — 1;
КЕРЕАТ
N : = 5 Р К (К );
А : = Ы /(Ы * К + 1 )
1
ш и т Е и м ('А (', к , А ) ;
\
К := К + 1
Ш Т 1 Ь к > 100
ЕШ .
Роль операторных скобок ВЕОШ и ЕЫЭ для тела цикла в данном
случае выполняют ключевые слова КЕРЕАТ и ШЧТГЬ.
Эта же задача может быть решена и с использованием
оператора цикла с параметром. Ниже приведена только опера­
ционная часть программы:
ВЕОШ
РОК К = 1 ТО 100 ЙЙ
ВЕОШ
N = 5(31* (К);
А = 1 Ч /(1 М * К + 1 );
Щ Ш Ш ('А (', К, ')
ЕШ
ЕЫО.
А)
Выше были рассмотрены лишь самые первоначальные сведения
о некоторых конструкциях языка Паскаль, отвечающих духу
структурного программирования. Язык программирования Пас­
каль, как и последовавший за ним алгоритмический язык Ада, во­
брали в себя новые глубокие идеи программирования, подробное
рассмотрение которых требует значительно большего места и вре­
мени.
Контрольные вопросы
1. Из каких основных разделов состоит программа на языке
Паскаль?
2. Какие стандартные типы величин могут использоваться в
языке Паскаль?
3. Каков перечень стандартных функций в языке Паскаль?
4. Каковы правила совместного использования величин типа
КЕАЬ и ШТЕОЕК?
5. Какова структура условных операторов в языке Паскаль?
6. Какую форму имеют в языке Паскаль операторы ЦИКЛПОКА, ЦИКЛ-ДО, оператор цикла с параметром?
^ ^ Н Н Н В а ’
шШ
201
Упражнения
Составить программы на языке Паскаль для решения следую­
щих задач:
,
1 -у-./
1. Решение уравнения а х = Ь .
2. Решение неравенства а х > Ь .
3. Табулирование функции на отрезке.
4.8. ЛАБОРАТОРНАЯ РАБОТА № 4
Т е м а . Составление программ на ЭВМ.
З а д а н и е 1. Написать арифметические выражения Бейсика,
соответствующие следующим формулам:
с ! г ( х — 1п у)
1.
у
3. агс1§
5.
Ш + </2)
2. 2
+
51(1 X
+
\а х+ Ь у \
1
4. 1ое 51ПX соз 1 ®
5
—
ИоЯзес*
(1
—
$1й
2х).
1— л х
VI
6. е1е х соз (\ах2 + Ь\
1).
,2х
7. ( з т 0,7х)СО85,1д: “Ь 2х ‘
9. 6 ,4 * д 3 ( 1 п 4 х ) + | ^ - .
2 \з т 2х
П. (х*+ ит
+ 1п
13. агс*д ^ о д ! V*
15. Ш
2х
17. 1п 1п
агееоз
.
0,625*
Щ х — 1 |§ 2х
" -/-1
1
9В Я
л/1+2х '
| С 05 д: 1
§рЙ | 1
19. &т (ху + ех) + е ?- У 1— х
8. 4,03 созес — —— (- (1п лх)2х.
1
10. агееоз
+ 32х.
У2х
12. 0,98
,5'” у1 + 0 , 6 Г У.
1п ( д г + о )
14. (8,1 р 1,5| — 1о§х*(2х В 3).
16
Ш/ агсс!^ 4,7х
V
—5-----------V 1Г — зес х
18. (1&3х/
И
.С0 5
ес х
X
х2-\-2х-\- 1
и —п
Ц /з т -(с о 5 4,89х)
+ 0 ,8*.
Чп (**+»*+1)
З а д а н и е 2. Составить на языке Бейсик программу решения
простой вычислительной задачи, используя операторы ввода-вы­
вода 1ЫРШ \ НЕАО —БАТА, РК1ЫТ.
1. В усеченном конусе длина диагонали осевого сечения р ав­
на (1, образующая составляет с плоскостью основания угол а и
равна а. Вычислить площадь боковой поверхности конуса.
2. Вычислить объем призмы, боковые грани которой — квад­
раты, а основанием служит равносторонний треугольник, вписан­
ный в круг радиуса /?.
3. Треугольник задан тремя сторонами. Вычислить его медианы.
4. В шар радиуса У? вписан конус с углом а при вершине
в осевом сечении конуса. Определить объем и полную поверхность
конуса.
V; '
202
•■5. Вычислить диагональ и площадь прямоугольника, вписан­
ного в окружность радиуса Р, если отношение его сторон равно п.
6' Даны две стороны треугольника и угол между ними. Определить третью сторону, площадь и радиус вписаннои окружности.
7. Вычислить процент материала, ушедшего в отходы, если
из куба с ребром а был выточен шар радиуса Р (Р с а).
8. Вычислить площадь кольца, ширина которого равна а,
а отношение радиусов окружностей равно Ь.
9. Вычислить периметр и площадь прямоугольного треуголь­
ника с гипотенузой с, описанного около круга радиуса р.
10. Вычислить диаметр трубы, пропускная способность которой
позволяет заменить ею две трубы с диаметрами Р\ и Р 2:
11. Вычислить высоты треугольника со сторонами а, Ь и с.
12. Вычислить площадь круга и равнобочной трапеции, описаннои около него, если периметр трацеции Р, а угол при нижнем
основании равен а.
13. Вычислить площадь правильного л-угольника, описанного
около круга радиуса Р.
14. Стороны треугольника равны а, Ь и с. Вычислить его
углы.
15. У конуса высота равна Я, а радиус основания Р. Вычислить
объем шара, вписанного в конус.
16. Вычислить массу / м свинцовой трубы (плотность
11,4 г/см3), толщина стенок которой а мм, а внутренний диаметр
г мм.
17. Вычислить в равностороннем треугольнике сторону, вы­
соту, площадь, если радиус вписаннои окружности равен г.
18. Стальной вал, имеющий / мм длины и й мм в диаметре,
обтачивается на токарном станке, причем диаметр уменьшается
при обточке на 5 мм. Вычислить, на сколько уменьшается масса
вала (плотность стали 7,4 г/см3).
19. Вычислить объем цилиндра, вписанного в правильную
шестиугольную призму, у которой каждое ребро равно а.
20. Вычислить объем призмы, боковые грани которой — квад­
раты, а основанием служит равносторонний треугольник, вписан­
ный в круг радиуса Р.
З а д а н и е 3. Составить схемы алгоритмов и программы на
языках Бейсик и Паскаль для решения следующих задач:
1.
Самолет находится на расстоянии / от радиолокационной
станции с радиусом действия Р и движется прямолинейно под
углом а к прямой, соединяющей начальное положение самолета
со станцией. Определить, будет ли обнаружен самолет. Если
станция не обнаруживает самолет, то на печать вывести также
минимальное расстояние, на котором будет находиться от стан­
ции самолет во время движения.
2. Решить систему
О
а х - \- Ь у — с]
с1х-\-еу=[.
203
3. Определить число точек пересечения прямой у = кх-\-Ь с
окружностью х2-\-у2= К 2.
4. Упорядочить по возрастанию последовательность трех чисел
х, у, г (выдать на печать заданные числа в порядке возрас­
т а н и я ).;
•
5. Квадраты для игры в крестики-нолики занумерованы слева
направо и сверху вниз. Заданы номера трех квадратов N 1, Л/2 и N3,
причем N 1 < N 2 < . N3. Определить, леж ат ли квадраты на одной
прямой.
■V- . Ф;Щт
6. Найти среди чисел а, Ь и с наименьшее и заменить им
число, большее из них.
7. Вычислить величину
Д
I / ч , г 2, если 2 ^ 1,
I — г , если г < 1, ■
Условии' В
2х, если х ^ О ,
— х, если лг-сО.
8. Вычислить значение функции
если
х с — 1,
4х ’
71
ж
агссоз х, если — 1 ^ х ^ 1 ,
лх
— , если
■,
1.
9. Каждое из чисел а и Ь отлично от нуля. Если они оди­
наковых знаков, то заменить меньшее из них большим; если же
числа имеют разные знаки, присвоить каждому из них знак числа,
меньшего по абсолютной величине.
10. Шар массой М с радиусом /? и постоянной плотностью р
притягивает материальную точку массой т, находящуюся на рас­
стоянии г от центра шара. Вычислить силу притяжения по фор­
муле
в Я
| | | | если $ $ 0
уг, если ЩщШ
-
||
3
•Ш
*—
4
/
■-
где у = — л /р т ( / — гравитационная постоянная).
11. Заменить каждое из чисел а, Ь и с значением -^-[тах
(а, Ь, с ) + т т ( а , Ь, §11
2 аШ
ФУ
если х < — 1,
■
агссоз х2, если — 1 ^ х ^ 1 ,
1п (х + 0,8), если х > 1 .
13.
Числа а и Ь выражают длины катетов одного прямоуголь­
ного треугольника, а с и с1 — другого. Узнать, являются ли тре­
угольники подобными.
204
14. Вычислить значение величины
У
17,3л:
О, если х
1,
9дс+1,46, если 1
а х, если х ^ 5.
5,
15. А, В , г 1 и г 2 заданные целые положительные числа.
Выяснить, является ли хотя бы одно из чисел г\ или г2 ос­
татком от деления А на В.
16. Вычислить значение величины Т
ь
2 (ах)3-)-2 1п | ах
ах
1п а
если | а х | > 1 , величины Н = У а * 7 +
если | ах\
л /У + Р + Г
1
1
и величины 5
1.
з
2
17. Задана тройка чисел а, Ь и с. Вывести на печать:
1) шах (|аК |6|), если а Ь с < 0;
2) шах ( |а |, |с|), если а Ь с > 0;'
3) шах (|й |, \с\), если аЬс— 0.
1,
18. Определить, какая из точек плоскости А (аь Ь\), В (а2, Ь2),
С (аз, Ьз) ближе к началу координат.
19. Определить, делителем каких целых чисел из А , В и С
является целое число N.
20. Определить, какие из заданных трех действительных чисел
А , В и С являются целыми.
З а д а н и е 4. По заданной формуле члена ряда с номером к
составить две программы, используя структуры ЦИКЛ-ПОКА,
ЦИКЛ-ДО или оператор цикла с параметром: а) программу
вычисления Суммы п первых членов заданного ряда ( к = 1, 2, ...,
п); б) программу вычисления суммы всех членов ряда, не меньших
заданного числа е.
1.
1
(2к
3.
5.
7.
2.
4.
А+1
к У**+2'
к3
ш р
•
к+
0,5
9.
3« + 2
11.
1
к*+Зк + 4
6.
к
(*+1)2+ 3
2А+1
(2 к *+ 1 )к
8к
Зк +10 '
’
3(А+1)
8.
7А + 9
1
10
-# 3+ 15 '
к+ 1
12.
13.
14.
15.
16.
к (к + 2 ){к + 3 )
4к
5к2+ 8к - 1 ’
к+ 4
ш т т щ
•
205
I»
9к
1 Л *» + * + Т -
|^
1п _ 1 _
20.
' л /Р + 7 '
»
3*2 + * + 2 ’
!
И
»
.
:
* +4Л — 1
, ч
И
З а д а н и е 5. Составить программы решения следующих
задач:
у
1. Найти наименьший элемент в одномерном числовом массиве.
2. На плоскости на расстояниях й\, йъ, •••, Ап от центра
кругового кольца с внутренним радиусом г и внешним
расположены точки. Определить количество точек, расположенных
внутри кольца.
|^Щ
3. Проверить, имеется ли в одномерном числовом массиве хо­
тя бы одна пара соседних чисел, являющихся противоположными.
4. Вычислить сумму
IШ Ш Ш 1 Й 1 Й 1 Ш
5. Дан массив чисел а\, а% ..., ап. Вывести на печать
массив Ь\, % .... Ьп, в котором 6, = а 1+ а 2+ . . . + а„ / = 1 , 2, ..., п.
6. Проверить, является ли заданный одномерный числовой
массив упорядоченным по возрастанию.
7. Многочлен степени п задан массивом своих коэффициен­
тов. Найти производную многочлена.
8. Вычислить скалярное произведение векторов а: = (л:I, Хг, ...,
хп) и У—(Уи Уь Щ |н)г
’
Ш
9. Точки х и у заданы своими координатами в л-мерном
арифметическом пространстве. Вычислить координаты точки г это­
го же пространства по формуле
г 1 =Мх[уй, 1 = \ , 2, ..., п.
10. Точки А н В заданы своими координатами в л-мерном
арифметическом пространстве. Вычислить расстояние между эти­
ми точками в смысле евклидовой метрики.
111
Многочлен степени п задан массивом своих коэффициен­
тов. Вычислить значение многочлена по схеме Горнера.
У к а з а н и е . Многочлен аохп-\-а. 1Хп~' §§... -\-ап- \ Х - \ - а п, пред­
ставленный по схеме Горнера, имеет вид:
.,((а0х + а\) х + а 2) х -+-... + а „ _ |) х + а„.
12. Числовой массив а\, щ ..., ап упорядочен по воз­
растанию. Известно, что число х принадлежит отрезку числовой
оси, вмещающему заданный массив. Определить номер к, для ко­
торого
а*.
БШ н!
13. Задан одномерный числовой массив. Вычислить сумму про­
изведений всех пар соседних чисел.
14. Определить в одномерном числовом массиве число соседств
из двух чисел разного знака.
5
206
<
а
1Г
1с/ Найти произведение ненулевых элементов в одномерном
числовом массиве.
16. Вычислить в одномерном числовом массиве суммы положи­
тельных и отрицательных элементов.
17. Определить номера строк прямоугольной матрицы, содер­
жащих только положительные элементы.
18. Координаты точек х и у
мерного арифметического
пространства заданы двумя одномерными массивами длины п.
Координаты точки г этого же пространства являются средними
арифметическими соответствующих координат точек т и у. Вывести
на печать координаты точки г.
19. Определить в одномерном числовом массиве число со­
седств из взаимно обратных чисел.
20. Дан одномерный числовой массив. Вычислить сумму произ­
ведении всех троек соседних чисел.
21*. Определить сумму положительных элементо прямоугольной матрицы.
ш
22*. Вывести на печать значения функции 2
+ *2+ */2+ 1
для всевозможных пар значений х и и из следующих
последовательностей:
•••» Х т И у | , У2у •••» У п •
23 . Дана прямоугольная матрица. Получить новую матрицу
путем деления всех 'элементов исходной матрицы на число г.
24* Проверить, имеется ли в данном одномерном числовом
массиве хотя бы одна пара чисел, совпадающих
'
по: величине.
шт. Упорядочить массив а\, щ, ..., ап по возрастанию,
пользуясь следующим методом. Сравниваются два соседних элеIмента а, и
Если
с.ели а |+ 1< а „ то элементы переставляются
местами. Если в результате последовательного просмотра всех
соседних элементов происходит хотя бы одна перестановка, про­
цесс повторяется.
З а д а н и е 6. Для заданной функции /(*) (см. табл. 4.1)
методом табулирования локализовать корни уравнения ( ( х ) = 0
(т. е. выделить по возможности наименьшие отрезки, содержащие
по одному корню). Если корней бесконечное множество, то
взять 2—3 корня, ближайшие к началу координат. Для выделенно­
го таким путем участка области определения составить программу
построения графика функции ( (х), выбрав подходящим образом
центр новой системы координат на рабочем поле устройства
графического вывода.
З а д а н и е 7. Составить программу построения чертежа з а ­
данной плоской фигуры.
1. Треугольник со сторонами а, Ь и с.
2. Правильный 5-угольник со стороной а.
3. Ромб со стороной а и острым углом а.
4. Треугольник со сторонами а и Ь и углом между ними С.
5. Прямоугольник со сторонами а и Ь.
20 /
\
Таблица 4.1
Номер
вари­
анта
/
д
1
2
3
*
2
'
\
СОЗ Х — ЗГ
х — соз х — 2
2 -фс— с05 0,5*
4
5
6
7
8
1
2 1п х
X
X3— ЗШ X
X ЗШ X — 1
2х — 3
2х— 2 соз х
9
л /^ + 1
10
Номер
вари­
анта
о
^
:
|
’Щ
11
12
13
51П 2х — 0,2х
х — 0,5х-+-1
х 1п х — 0,5
14
2 ” * — 31П X
15
16
17
3х— 4х
х— Ю зтх
1пх + у х
2 — х — 1п х
1
8
19
ё*— х — 4
20
х 1п х — 0,5
/V
5 соз х — х
6. Правильный 6-угольник со стороной а.
3
7. Окружность радиуса /?, вписанную в квадрат.
8. Треугольник с вершинами в точках А (а, а), В (а, Ь), С (с, а)
(при условии, что а, Ь, с — положительные числа, причем а < Ь
И в '< с ) .
/
: л- '
9. Окружность с центром в точке О (а, Ь) и радиусом /?.
10. Параллелограмм со сторонами а и Ь и острым утлом С.
11. Трапеция с основаниями а и Ь, боковой стороной с и
высотой Л.
г';./ 12. Четырехугольник, вершины которого находятся в точках
А ( — 8, 4), В (5, 12), С (10, —6), й ( —4, — 7).
I
13. Верхняя полуокружность с центром в точке О (а, Ь) и р а­
диусом /?, опирающаяся на диаметр.
Щ
14. Треугольник с основанием а, высотой к и утлом при
вершине X.
15. Правильная пятиконечная звезда со стороной а.
16. Равносторонний треугольник и вписанный в него квад­
рат, две вершины которого леж ат на одной из сторон треуголь­
ника (длина стороны квадрата равна а ) .
*
17. Квадрат, на одной из сторон которого как на основа­
нии построен равносторонний треугольник со стороной а.
18. Правильный 8-угольник со стороной а.
19. Равнобедренный треугольник с основанием а и высотой А.
20. Треугольник с основанием а и прилежащими к нему
углами 'В и С.
■'■■■■.'зШЯН
З а д а н и е 8. Составить программу, реализующую темати­
ческий диалог школьника и ЭВМ (тему «беседы» выбрать произ­
вольно). В программе заложить постановку перед школьником
ряда вопросов, а такж е предусмотреть комментарии ЭВМ в
зависимости от характера ответов на эти вопросы.
208
Пояснения к выполнению лабораторной работы № 4.
Прежде чем приступить к выполнению лабораторной работы
необходимо проработать материал главы 4, внимательно разо­
брать все приведенные примеры и выполнить упражнения
При выполнении з а д а н и я 1 необходимо строго соблюдать
правила записи арифметических выражений на языке Бейсик
В некоторых случаях требуется предварительное преобразование
заданных выражений к виду, содержащему элементарные
функции из списка стандартных функций Бейсика.
З а д а н и е 2 предусматривает организацию простой вычисли­
тельной программы, использующей только операторы присваива­
ния и ввода-вывода. На примере этой программы следует
показать разные способы организации процесса решения: не­
однократное повторение счета для различных исходных данных
с помощью оператора СОТО, а также использование операторов
КЕАО Ш Т А (см. примеры 4.2.1, 4.2.2). При формировании
оператора вывода РКШ Т следует позаботиться о том, чтобы
выдаваемая информация была достаточно содержательной, т. е.
включать в вывод необходимые символьные константы.
В з а д а н и и 3 необходимо написать программу, еодержащую разветвления. При выполнении задания удобно придержи­
ваться следующей последовательности: сначала построить струк­
турную схему алгоритма решения задачи, а потом сделать запись
программы на алгоритмическом языке. При этом интересно
сопоставить программы на алгоритмических языках Бейсик и
Паскаль.
Для выполнения з а д а н и я 4 требуется написать две циклические программы суммирования ряда с использованием двух
способо
гия цикла: в первом случае по заданному количеству члено
во втором
по заданному условию.
Перед составлением программ нужно правильно оценить целе­
сообразность использования того или иного способа структурной
организации цикла.
З а д а н и е 5 предполагает составление циклической про­
граммы, работающей с массивом, причем в некоторых случаях
требуется организация вложенного цикла (соответствующие
задачи помечены звездочками). Д ля практической реализации
программ на Бейсике в качестве исходных данных следует
взять массивы чисел ко....г ____ Ц ...... ..
В з а д а н и и 6 требуется сначала составить программу табу­
лирования функции. Используя эту программу на избранных
участках области определения, методом табулирования опреде­
ляются по возможности наименьшие отрезки, содержащие корни
(разумеется, перед пуском программы полезно методом аналити­
ческого исследования прикинуть наиболее перспективные участки
для поиска корней). После определения интервала, содержащего
корни функции (необязательно все), составляется вторая про­
грамма — программа вычерчивания графика функции в системе
о Заказ 43
209
координат, положение которой на рабочем поле устройства
графического вывода устанавливается наиболее подходящим
образом в зависимости от поведения функции на участке изо­
бражения графика. При необходимости в программу построения
графика могут быть введены масштабные коэффициенты,
регулирующие размеры графика относительно рабочего поля
устройства графического вывода.
З а д а н и е 7 предусматривает составление программы по­
строения плоского чертежа заданной фигуры. Перед использо­
ванием оператора Р Ш Т обычно требуется произвести вычисле­
ния каких-либо недостающих для ее построения элементов.
Перед выполнением з а д а н и я 8 необходимо разработать
несложный «сценарий» диалога школьника и ЭВМ по какойлибо теме, связанной с изучением школьной дисциплины.
Диалог может проходить, например, в форме обучения или
контроля знаний школьника по этой теме. В этом случае логика
программы может предусматривать постановку дополнительных
(наводящих) вопросов, предоставление школьнику вспомогатель­
ной информации или даж е отсылку его к соответствующим
источникам. При достаточно глубокой проработке такие програм­
мы могут оказаться полезными в учебном процессе.
Литература к главе 4
1. Машина вычислительная электронная клавишная програм­
мируемая «Искра-226». Инструкция по программированию (базо­
вый объем). 1.320.136 Д 14 — I. Часть I, 1983.
н
2. У о р т Т. Программирование на языке Бейсик.— М.: Мир,
1981.
3. В и р т Н. Систематическое программирование: Введение /
Пер. с англ. под ред. Ю. М. Банковского,— М.: Мир, 1977.
4. Г р о г о н о П. Программирование на языке П а с к а л ь /
Пер. с англ. под ред. Д. Б. Подшивалова.— М.: Мир, 1982.
5. В е г н е р П. Программирование на языке Ада / Пер. с англ.
под ред. В.,Ш . Кауфмана.— М.: Мир, 1983.
6. Т у р с к и й В. Методология программирования / Пер. с
англ. под, ред. А. П. Ершова.— М.: Мир, 1981.
7. П у л Л. Работа на персональном компьютере / Пер.
с англ.— М.: Мир, 1986.
Я
ОТВЕТЫ К УПРАЖНЕНИЯМ
Глава 1
1.3
2. а) *
□
[х~| г
в) х
г) X
у
г
б
)
*
Ш
у
У
в
в
х
0
В*Е\
Е1
у
0
У
В“
“
□
У
3. а) у
б) У р ~ |
4.
1)
У
х
В гЕ 1
В*Е 1
г) ^
Ш*В*ВВ
В 2В
“Е к В В ^ В В
Д> У 0 г
0 «
0 *
0
0
»
0
<0 У 0 г
0 и
0 | ,
0
0
»
0 »
0
2) а) у \ Т ] г |= = ][З А П
У
8*
В гВ(
ЗАП
х
211
6) у
Р |[ з л п
X
в | у [ х ] 2 [ = | | ЗАП
ЗАП
г) 2 Р ] м
д>
0
*
“
□ ® В 'Е
е) у
т
.
г
0 Н В " 0 » В
6. а) а
б) у
1.4
I.
2. Д ля МК «Электроника БЗ-18А»:
х
а) а
В В!
«>-В'ВВ[
в) 0
0
ЗАП I Ь
У
ЗАП | Ь
в*
[З А П ] а 0
х д
д [ п + д
6
У
ВЁЗ
ЗАП
г) Ь
у
Д ля МК-41:
в
« П> В* Ш0Ш* В» ИВ
а) а
212
х
ь
у
а д
X
Ш° ЕВ* И И 20 В 0 60 "0 0
2
г»ШвВ *0 0 2ШЕ1Ш40 2□
□В
у
2
3. На МК-41:
(Ответ. 23,14.)
л'- 0 0 10 В
(Ответ. 22,46.)
4. На БЗ-18А
а) У
ШЕИ
ИП
В
б) у
в) Ь
В1
агс
г)
соз
1ШЕ±>В
У
ИП
ВВ
На МК-41
а) х П П У
б) *
у
в) о [7~]
Г)
соз
0 0
ь
3 0 В» 0 0 Е 10*Ек
2
ШИЕ1
1.5
I. а) 3,18 [ В ? ] 24,76 р ~ | [ 7 " | [ > Г |
213
I
б) 0,9 Г в Л [ в Т ] [ х ] [ х ] о ,84 0 Е 3 1 Н ]
,8
в) 0,7
2
4
,
3
0
0
Е
Ё
]
И
0
,
2
6
1
г) 1,5
2
,
0
0
ь
с
2. I
1
0
,
6
3
а
1
Адрес
команды
Выполняемое действие
Команда
Запись числа /? в регистр У
Вычисление Я
Ввод числа п в регистр X
Вычисление л/?
Остановка и индикация ответа
С /П
5. Память: х = 0
Л = 0,1
КО
К1
Программа табулирования
214
0
Команда
Команда
Таблица функции 1 ( х ) = 3 х— 4х на отрезке [0; 2]:
X
0
0,1
0,2
0,3
0,4
0,5
0,6
0,7
0,8
0,9
1
X
Ш
1
0,7161232
0,4457309
0,1903891
— 0,0481545
-0 ,2 6 7 9 4 9 3
— 0,4668181
— 0,6423309
— 0,7917755
— 0,9121248
— 1,0000006
т
1,1
№
1,3
1,4
1,5
1,6
1,7
1,8
1,9
2,0
,
-1 ,0 5 1 6 3 1 1
— 1,0628078
— 1,0288334
— 0,9444645
— 0,8038484
— 0,6004551
— 0,3269937
— 0,0246724
0,4636239
0,999984
Как следует из таблицы, уравнение Зх — 4 х = 0 имеет на отрезке
[0; 2] два корня: лг(6[0,3; 0,4] и х2€[1>8; 1,9].,
6. Значение е перед пуском программы вводится на индикатор
(регистр X). Программа:
Адрес
03
Команда
|Х — П
04
05
2
1
|п - * х
2
215
Команда
Команда
7. Исходные данные (числа а и Ь) помещаются в регистры
Ка и РЬ. •
.
Адрес
Команда
08
09
I
а
10
11
00
12
13
09
14
П +Х
15
216
Ь
\
Глава 2
! ’■
». а) 18В73Р
б) 79В46, В50ВЕ
в) 1011Р, 75С5С
г) 149ЕА7 \
д) ВА2АЗ, 713В
2. 21АЕ0
21АЕ0
21АЕ2
21АЕ4
21АЕ4
21АЕ8
21АЕ6
21АЕС
21АЕ8
21АР0
21АЕА
21АР4
21АЕС
21АР8
21АЕЕ
21АРС
21АР0
21В00
3. а) 440,259765625,0
б) 3753,06005859375ю
в) 165,504а
г) 1В,А04|6 ,
2.2
21АЕ0
21АЕ8
21АР0
21АР8
21В00
21В08
21В10
21В18
21В20
д) 1010111100010111,0011001101111,
е) ЗЕ3588Е,РЕ8,6
ж) 264А, 116872В0... 16
з) 17407,17323...в
I '.'
2.3
1. 1067в—
|- 201 в-Н12в —
|—372в = 1674в
2. Распределение памяти:
а
1000
Ь 1001
с
1002
X 1003
У 1004
Программа приведена в таблице:
Номер
ячейки
Код
операции
А,
5000
01
02
03
04
003
001
003
001
017
1000
1004
1004
1004
0000
3.
Ё
II
Аг
Аз
Пояснения
1003
1001
1003
1002
0000
1004
1004
1004
1004
0000
а Х хшж=> и
у + Ь => у
иХх=> у
1/ +1 С=> ч
и/
V
Стоп
аи— Ь2 ’
Р
-
2
А
2. а) 000000, 000001, 000002, 000003, 000004, 000005 и т. д.;
б) 000000, 000002, 000004, 000006, 000008. 00000А и т. д.;
217
в)
г)
3. а)
в)
д)
4. а)щ
б )г
000000,
000000,
Регистр
Регистр
Регистр
000004, 000008, 00000С, 000010, 000014 и т д.;
000008, 000010, 000018, 000020, 000028 и т д.
б) Регистр 5: 0075 3511
3: 0004 9221
3: РРРВ ВВР7 г) Регистр 5: 0000 0000
е) Регистр 4: 007Р ЕВ37
4: 0000 2304
1001 ООП 0010 1101
9
0
3
2
2
7
5. а) 009А58 —59:
в) 009А5С —5Р:
Е>
6
С
8
0000 0010 0111 0110
1000 1100
016С
64А4 Р251
Глава 3
2. а)
б)
1.
2.
3.
4.
5.
6.
3.2
1. чтение х
2. если х ^ О , идти к 5
3.,4/: = — х
4. идти к 6
5. у :
6. запись у
7. конец
1.
2.
3.
4.
5.
6.
7.
чтение а, Ь
если а Ь, идти к 5
М: = Ь
идти к 6
М := а
запись М
конец
3.3
Результатом решения квадратного уравнения ах2-\-Ьх-\-с 0
два
действительных
чисел)
может
быть:
а)
множестве
(в
корня (при ^ -Ь2— 4 ас 0); б) отсутствие корней (при О 0 ).
Схема алгоритма решения квадратного уравнения (КВУР)
изображена на рисунке 74.
а) Схема алгоритма изображена на рисунке 75.
б) Схема алгоритма изображена на рисунке 76.
а) Схема алгоритма изображена на рисунке 77.
б) Схема алгоритма изображена на рисунке 78.
Схема алгоритма изображена на рисунке 79.
Схема алгоритма изображена на рисунке 80.
Схема алгоритма изображена на рисунке 81.
218
ш т
чтение Щщш
запись
\'решений нет
запись х* х
конец
Рис. 74
• Рис. 75
Рис. 76
чтение а
за п и сь
запись
запись
“х -л ю б о е число"
" х < Ь"
конец
Рис. 77
чтение а, Ь
I
запись
"х-любое число
Запись
решений нет
запись
Рис. 78
220
§
пX>С
запись
х< с
Рис. 79
чтение
массива
аьа2г..,ат
Рис. 80
Рис. 81
3.4
I. Алгоритм 1(х)
1. чтение х
2. если
к 4
3. у : = 2 х 2— 51п х; к 5
4. у : = 3 1п 4 х ^ х —Г
5. запись "у — "; у
6. конец
2. Схема алгоритма изобра* жена на рисунке 40.
Алгоритм ЛУР
1. чтение а , Ь
2. если а — 0 к 5
3. х : = 6 / а
4. запись х; к 8
5. если 6 = 0 к 7
6. запись "решений нет";
к 8
~7. запись "решений беек.
мн// '
8. конец
3. Схема алгоритма изобра­
жена на рисунке 78.
Алгоритм Н ЕР
1. чтение а, Ь-~
2. если а — 0 к 8
3. с: — Ь/а
4. если а > 0 к 6
5. запись " х < . " , с; к 7
6. запись " х > " , с
7. идти к 11
8. если ^ < 0 к 10
9. запись "решений нет";
гтт
10. запись "х — любое чис­
ло^
11. конец
4. Алгоритм ТАБ
1. чтение а, Ь, Н
2. XI = о,
3. у : = 2 \ п х — Зх24* 1
4. запись х, у
5. х: = х + Л
6. если
к 3
7. конец
5. Схема алгоритма изобра­
жена на рисунке 43.
Алгоритм Н ОД
1. чтение а, Ь
2. если а — Ь к 6
3. если а > Ь к 5
4 Ь : = Ь — а ; к^2
5. а: = а — Ь\ к 2
6. запись " Н О Д а
7. конец
6. Алгоритм СУМПР
1. чтение п
2. к: = 1; 5 : = 0 ;
Р: = 1
3. если к > п к 7
4. 3 7 ^ 5 + ( 6 + 1 )/(263- 1 )
5. Р: = Р - ( к - \ - 1)/(2к3— 1)
6. к : == к + 1 ; к 3
7. запись " 5 = ", 5
8. запись " Р = " , Р
9. конец
3.5
1. Алгоритм ПЮ ИЗВЕДЕНИЕ
1. чтение п, а 1;я
1
2. Р:
Г; 2:
3. если О п к 6
4. Р . — Р • а,
5. 2: 2-+-1* х 3
т
р
6. запись "Р
7. конец
2. Алгоритм СУМПОЛ
1. чтение п, а[:п
2. I
1; 5 : = 0
3. если 1 > п к 7
4. если а , < 0 к 6
5.
222
3-4-01
6. 2: = 1+ 1; к 3
П
7. запись " 5 =
8
8. конец
3. Алгоритм ПРОВЕРКА
1. чтение п, а,.п
2. 2:
1
3. если I п 1 к 7
4. если а , > а 1+) к 6
5. 2: = 1 + 1 ; к 3
//.
6. запись "не упорядочен
к~§
7. запись "упорядочен"
8. конец
3.6
1. Подалгоритм АБС (а, т)
1. если а ^ О к 3
2. т: = —а; к 4
3. т: = а .
4. возврат
Алгоритм У (X)
1. чтение х
2. Ь: = х * — 3х
3. АБС (Ь, т)
4. с: = х 3+ х + 1
5. АБС (с, п)
6. у : = т /(п-\-4х2)
7. запись у
8. конец
2. Четырехугольник изображен на рисунке 82.
Подалгоритм ГЕРОИ (а, р, у, а)
Г р : = ( а + Р + у)/2__________
2. о : = ^ р ( р — а ) ( р — Щ р Щ у )
3. возврат
Алгоритм ЧЕТЫРЕХУГОЛЬНИК
1. чтение *, у , г, I, г, 8, и, V
2. ГЕРОН (х, г, з, 5г)
3. ГЕРОН (у, з, и, 5 2)
4. ГЕРОН (г, и, V, 5з)
5. ГЕРОН (V, (, г, | 4)
6. 5 : =51-)-52 + 5 з 4-54
7. запись " 8 — ", 8
8. конец
3. Подалгоритм ФАКТ (к, Р)
1. Е: — I; к: — I
2. если к > п к 5
3. Е: = Р - к
4. А : = Л + 1 ; к 2
5. возврат
Алгоритм Ст
1. чтение т, п
2. р: = т — п
3. ФАКТ (т, М)
4. ФАКТ (п, ЛО
5. ФАКТ (р, Р)
6. С: = М / Ы / Р
7. запись " С — ", С
8. конец
г
Рис. 82
3.7
1. Алгоритм ЛУР
чтение а, Ь
если а = 0
то
если 6 = 0
то запись "х — любое
иначе запись "решени
все
иначе
я
//
х: — Ь /а
запись "л: = //, х
все
конец
Алгоритм СЛУР
чтение а, 6, с, а, е, /
0 : ==ае —- ь а
Ох: = е с - - М
Оу : -ск
если
то
0
щ
если о х= о
//
то запись "реш. беек.
иначе запись "решений нет"
все
иначе
х : = О х/й', запись "х
у : = Б у/
запись "у = " , у
все
конец
3. Алгоритм РАВНЫЕ ЧИСЛА
чтение а, Ь, с
Р' = 1
если а ф Ь
то если Ь ф с
то если а Ф с
то р : = О
все
все
се
если р = 1
то запись "имеется"
иначе запись "не имеется "
все
конец
224
4. Алгоритм Ц ЕЛЫ Е
чтение а, Ь, с
N1=0
если епИег ( а ) = а
то N1 = А/+ 1
все
если епИег'(Ь)=Ь
то №: = Л /+ 1
все
если еп11ег (с)— с
то №: = # + 1
все
//
запись "N
, N
конец
5. Алгоритм СУММА
5: = 0
для к = 1 до 20 шаг 1
цикл
Щ р 5 + ( 2 6 - И )/(4 к
3)
все
//
запись "3
конец
7. Алгоритм СУММА
5 : = 0 ; а: = 0 ,2 5 ; к :
1
пока а
цикл
5+ а
8. Ал го
чтение га, а,.„
Р: = 1
Для Л = 1 до га шаг 1
цикл
если акф 0
то Р : = Р - а к
все
все
запись " Р = ' \ р
конец
10. Алгоритм МАТРИЦА
чтение гаг, п, а 1:т
5: = 0
для I— 1 до т
цикл
Для у = 1 до га
цикл
если а
то
все
все
все
запись " 5
конец
//
, 5
к:= к+ 1
а: = * /(* + !)
все
запись " 8 — ", 5
конец
Глава 4
4.1
к а) .0094
в) 1.Е — 3
б) — 13,037
г ) —5.86Е4
2. б), г), е) Действительные; а), в), д) — целые.
3. а) X|1.37
б) А0 + А1 *Х + А 2 * Х |2
в) (.1 2 7 5 + 2 * 5 Ш (5<ЭК (5(38 (А )))) |3 + 2 | СОЗ (В)
г) | р | (51Ы (X У)|2
1)/( 1 + А В 5 ( Х | 2 - У+2))
ах
х—
и\
4. а)
1+ х?Т
айе
4
б)
г)
Ьс
а?.*1п и ]
5. в Истинно: б) ложно: в) истинно; г) истинно.
6. а) Ложно; б) истинно.
Е§
0
/
4.2
1. а) 10 ШР1ЛГ О, Ь
20 5 = # Р1 * 0 * ( 0 + 2 * Ь )/4
30 У = # Р1 * 0 | 2 * 5ф К (4 * 142 — 0 | 2 ) / 2 4
40 РК Ш Т " 5 = " ; 5, " У = " ; V
50 СОТО 20
б) 10 КЕАО и , Ь
20 5 = # Р1 * О * Р + 2 * Ь )/4
30 У = # Щ * Щ 2 * 5 Ш (4 * Ь \ 2 — 0 { 2 ) /2 4
40 РК Ш Т " 5 = " ; 5, " У = " ; V
50 СОТО 20
60 ОАТА .24,1.06,2,48,1.84,12.09,28.3
2. 10 КЕМ ТРЕУГОЛЬНИК
20 1ЫММ К
30 А = 2 * К * 5<ЭК (3)
40 Н = 3 * К
50 5 = 3 * К |2 * 5<ЭК (3)
60 РК Ш Т "СТОРОНА = "; А
70 РК Ш Т "ВЫСОТА = "; Н
80 РК Ш Т "П Л О Щ А Д Ь = "; 5
90 СОТО 20
3. 10 КЕМ КОНУС— ШАР
20 РК Ш Т "ВВЕДИТЕ ЗНАЧЕНИЕ РАДИУСА"
30 Ш Р Ш К
40 РК Ш Т "ВВ ЕД И ТЕ УРОВЕНЬ О КРУ ГЛЕН И Я"
50 ШР1ГГ N
60 КЕМ ОБЪЕМ VI КОНУСА С. ШАРОМ
70 VI = 3 * # Р1 * К^З
80 КЕМ ОБЪЕМ У2 КОНУСА Б Е З , ШАРА
90 У2 = 5 * # Р1 * К |3 / 3
100 КЕМ ВЫСОТА Н КОНУСА БЕЗ, ШАРА
110 Н = 3 * К * 5<ЭК (5)
120 РК Ш Т "УРОВЕНЬ ВОДЫ = "; К 0 1 Ш 0 (Н, N1
130 СОТО 20
4.3
1. а) 10 ВЕМ Р (2)
20 Ш Р 1 Л 2
30 1Р 2 < 1 ТНЕЫ 50
40 Р = 2 |2 : СОТО 60
50 Р = 1 — 2
60 РК Ш Т "Р ("; 2; " ) = " ; Р
70 СОТО 20
б) КЕМ Р (X)
20 Ш Р 1 Я X
30 1Р X — Ш Т (X) = 0 ТНЕЫ 50
40 Р = 1/ТАЫ (X): СОТО 60
50 Р = 0
226
\ 60 РКШТ "Р ("; X;
Р
| | 4 \ 70 СОТО 20
2.
10 КЕМ БИТ
20 ШРЦГГ А, В, С
30 1Р А > В Т Ь ^ 50
40 У = В : СОТО 60
50 У= А
60 1Р У > С ТНЕЫ 80
70 У = С
80 РКШТ "МАХ ("; А; ", "■ В- " "• С- " ) = " ■
90 СОТО 20
3. а) 10 КЕМ КВУРДЕЙСТВ
20 ШР11Т А, В, С
30 0 = В |2 — 4 * А * С
40 1Р 0 < 0 ТНЕЫ 90
50 Х1 = ( - В - 5 д К (О) ) / ( 2 * А)
60 Х 2 = ( - В + 5 д К ф ) ) / ( 2 * А)
70 РКШТ "Х 1="; XI; " Х 2= " ; Х2
80 СОТО 20
90 РКШТ "РЕШЕНИЙ НЕТ"
100 СОТО 20
б)
10 КЕМ КВУРКОМПЛЕКС
20 Ш Р 1Я А, В, С
30 0 = В | 2 — 4 * А * С
40 1Р О < 0 ТНЕЫ 80
50 К1 = ( - В - З д К (О ) ) / (2 * А)
60 К 2 = ( - В + 5дК (О ) ) / ( 2 * А)
70 11,12 = 0: СОТО 100
80 К1, К 2 = — В / (2 * А)
90 В Н
( — О ) / (2 * А ) : 12 = — II
100 РКШТ "XI = ("; К1; " ) + 1 * ( " ; И; ")"
110 РКШТ " Х 2 = ("; К2; " ) + 1 * ( " ; 12; ")"
120 СОТО 20
5. а) 10 КЕМ Р (X)
20 ШРЫТ X
30 1Р Х < — 1 ТНЕЫ 70
40 1Р Х > 1 ТНЕ1Ч 60
50 Р = АКССОЗ (Х |2 ): СОТО 80
60 Р = Ш О (Х + .8): СОТО 80
70 Р = 5 Ш ( Х ) / ( 1 - Х | 3 )
80 РКШТ "Р ("; X; " ) = " ; Р
90 СОТО 20
б) 1 0 К Е М Р ( 1 ] ( Х ) )
20 ШР11Т X
30 1Р Х < 0 ТНЕЫ 50
40 11 = З д К ( X ) : СОТО 60
50 Ц Г=Ш О ( - Х )
60 1Р
= 0 ТНЕЫ 80
Г., Я
•
V
227
I
70
80
90
100
Р = С 0 5 (Ы): СОТО 90
Р = 2 * Ш + -1
РК Ш Т "Р р ("; X; " ) ) = " ; Р
СОТО 20
4.4
1. а)
б)
2. а)
б)
3. а)
228
10
20
30
40
50
60
70
80
КЕМ 1Р (Ц ИКЛ-П ОКА)
К= 1
1Р К > 5 0 ТНЕЫ 80
В = 5дК ( К ) / ( К + . 5 )
Р К Ш Т "В ("; К; ") = " ; В
К=К+1
СОТО 30
ЕШ
10
20
30
40
50
60
70
10
20
30
40
50
10
20
30
40
50
60
10
20
30
40
50
60
70
80
10
20
30
40
50
60
КЕМ 1Р (Ц И К Л -Д О )
К=1
В = 5дК ( К ) / ( К + .5)
РК Ш Т "В ("; К; " ) = " ; В
К= К+1
1Р К < = 5 0 ТНЕN 30
ЕЫЭ
КЕМ РОК—ЫЕХТ
РОК К = 1 ТО 50
В = 5 р К ( К ) / ( К + .5)
РК Ш Т "В
К; " ) = " ; В
ЫЕХТ К
КЕМ ТАВ Р1 (X)
РК Ш Т "X", "Р1 (X )"
РОК Х = — 1 ТО 1 5Т Е Р .1
Р1 = 2 * (5 Ш ( Х ) | 3 ) / ( 1 + Х | 2 )
РК Ш Т X, Р1
ЫЕХТ X
КЕМ ТАВ Р2 (X)
//
РК Ш Т "X", "Р2 (X)
РОК Х = — 10 ТО 10
1Р АВ5 (X) < 4 ТНЕЫ 60
Р2 = Ш О (АВ5 (X — .6 ) ) : СОТО 70
Р2 = 5 р К ( 2 * Х | 2 + 1 )
РК Ш Т X, Р2
ЫЕХТ X
КЕМ СУММА 5 (N1)
ШР1ГГ N
К=1: 5=0
1Р К > Ы ТНЕЫ 70
5 = 5 + 5 д К ( К ) / ( К | 3 + .8)
К = К + 1 : СОТО 40
йш
\
70 РКШ Т "СУММА 5 (ГМ) ="■ 5
' 80 Е$Ш
б)
10
20
30
40
50
60
70
80
90
КЕМ СУММА 5 (Е)
Ш РЦ Г Е
К = 1: 5 = 0 : А = 1/1.8
1Р А < Е ТНЕЫ 80
5 = 5 + А: К = К + 1
А = 5 р К ( К ) / ( К | 3 + .8)
СОТО 40
РКШ Т "СУММА 5 (Е)
ЕШ
4 п — п+ ‘
п ,
й'
л! ’ “
я+ 2
(я+ 1 )!
'/
~
_
’
'
а„
’ 0'
1 '"*1
5
( я + 2)'я!
(я + 1 )!(л + 1 )
*
'* '
“
я+ 2
(д + 1 )2 ’ т - е ^
- .д ' 'Т‘:
; _ [^ г 1
Цр 'Пп. Учитывая, что 01= 2, все остальные члены
ап+\ —
заданного ряда, начиная со второго, могут быть получены по
формуле
10
20
30
40
50
60
70
80
5.
10
20
30
• 40
50
60
70
80
90
100
110
120
&
10
30
40
50
60
70
80
90
00
ап+\ = ^ _ ^ ) 4 1• Дл при п = 1, 2, ..., 49. Программа:
КЕМ РЕКУРР
5 = 2: N = 1
1Р N > 4 9 ТНЕЫ 70
А = А * ( Ы + 2 ) / Ш + 1) \2
5 = 5 + А: N = N + 1
СОТО 30
РКШ Т " 5 = " ; 5
Е№>
КЕМ ПОИСК ОДНОМЕРНЫЙ
Э1М X (10)
РОК К = 1 ТО 10
ШР1ГГ X (К)
ЫЕХТ К
М = Х (1)
РОК К = 2 ТО 10
1Р М > = Х (К) ТНЕЫ 100
М = Х (К)
1МЕХТ К
РКШ Т "М = "; М
(10)
РОК К = 1 ТО 10
ШРЫТ X (К)
ЫЕХТ К
РОК К = 1 ТО 20
Ш Р 1 Л У (К)
ЫЕХТ К
//
РКШ Т "X", "У". "Р (X, У)
РОК 1 = 1 ТО 10
229
110
120
130
140
1.
2.
РОК Л = 1 ТО 20
Р = 5<ЭК (X (I) |2 + У р | \2
РК Ш Т X (I), У (Л), Р
ЫЕХТ Л: ЫЕХТ I
4.5
10 КЕМ А (X, V)
20 Э Е Р РЫА (Т) = 5(^К (АВ5 ( 1 + 2 * 5 Ш (Т )))
30 Ш Р О Т X, V
40 и = Х + У: V = X |2 — У
50 А = 2.3 * РИА (У )/(8 .9 4 + РЫА (V))
60 РК Ш Т "А (X, У) = " ; А
70 СОТО 30
10 КЕМ СОЧЕТАНИЯ С (М, 14)
20 Ш Р О Т М, Ы: Р = М — N
30 Н Ш ! 20 (М, Р 1 )
40 а о з ш ' 20 (ы, Р2)
50 СЮ51Ш 20 (Р, РЗ)
60 РК Ш Т "С (М, 1М)="; Р 1 /Р 2 /Р З
70 СОТО 20
80 Б Е РРЫ ' 20 (К, Р)
90 Р = 1
100 РОК 1 = 1 ТО К
110 Р = Р * I
120 ЫЕХТ I
130 КЕТ1ЛКЫ
4.6
1. Левую нижнюю вершину трапеции поместим в точку (х, у).
Значение высоты Н = ~ \/С 2—- ((А — В ) / 2 ) 2.
10 КЕМ ТРАПЕЦИЯ
20 Ш РО Т А, В, С, X, У: Н = 5<2К ( С | 2 — ( ( А - В ) /2 ) |2 )
30 РЬОТ < Х , У, Ы > , < (А — В ) /2, Н, 0 > , < В , , 0 >
40 РЬОТ < (А — В )/2 , - Н , Э > , < - А , , Э > , < „ К >
50 СОТО 20
4.7
1. РКООКАМ ЛУ Р (ОЫТРОТ, Ш Р О Т );
УАК А, В, X: КЕАЬ;
ВЕОШ
КЕАО (А, В );
1Р А = 0 ТНЕЫ
1Р В = 0 ТНЕЫ
\УК1ТЕЬЫ ('X — ЛЮ БО Е Ч И С Л О ')
ЕЬЗЕ
ШК1ТЕ1Ш ('Р Е Ш Е Н И Й НЕТ')
ЕЬ8Е
В ЕО Ш X: = В / А ;
230
ШШТЕЫМ ('Х = ', X)
ЕЫЭ.
|ои тР 1гт, ш р ш у
УАК А, В, С: НЕАЬ;
ВЕСШ
КЕАЭ (Ак В );
1Р А = 0 ТНЕЫ
1Р В < 0 ТНЕN
\УК1ТЕЬЫ ('X — ЛЮБОЕ ЧИО
ЕЬ5Е
АУШТЕЬЫ ('РЕШЕНИЙ НЕТ')
ЕЕ5Е
ВЕСНЫ С: = В /А ;
1Р А > 0 ТНЕЫ
ШШТЕЬЫ ( 'Х > ', С)
ЕЬ5Е
ШШТЕЬЫ ('Х < ', С)
ЕШ
ЕШ .
ркоокам н ера в
ПРИЛОЖЕНИЯ
1. ЗАГРУЗКА, РЕДАКТИРОВАНИЕ И ПУСК ПРОГРАММЫ
НА МИКРОЭВМ «ИСКРА-226»
Рассмотрим кратко перечень действий, которые должен про­
делать пользователь ЭВМ «Искра-226» для ввода и пуска про­
граммы.
Щ.\
После включения машины и загрузки необходимого математи­
ческого обеспечения на экране дисплея фиксируется конфигу­
рация:
/V" -У'Ш
КЕАЭ У
#
Это означает, что ЭВМ не производит никаких операций и готова
к приему информации. С имвол__(курсор) всегда показывает мес­
то экрана, на котором будет отображен очередной вводимый с
клавишного устройства символ.
Д ля загрузки текста программы используется клавишное
устройство, обеспечивающее возможность ввода любого символа
алфавита языка Бейсик. Приведем краткое описание состава кла­
виатуры и назначение отдельных клавиш.
•
На клавишном устройстве условно выделяются 8 функциональ­
ных зон (см. рис. 59). Клавиатура первой зоны работает
в трехрегистровом режиме. Нижний регистр содержит операторы
языка Бейсик. Верхний регистр зоны содержит прописные русские
и латинские буквы (в зависимости от положения переключателя
«лат/рус») и специальные символы. Переход на верхний и нижний
регистры осуществляется соответственно клавишами 5Н1РТ и
5Н1РТ ЬОСК, причем при переходе на нижний регистр загора­
ется индикаторная лампочка. После нажатия клавиши 5Н1РТ
ЬОСК клавиатура первой зоны фиксируется в положении ниж­
него регистра, и эта фиксация снимается нажатием клавиши
5Н1РТ. При переходе на верхний регистр нужно нажать клавишу
5Н1РТ и, не отпуская ее, нажать требуемую клавишу.
Вторая зона, имеющая один регистр,
содержит клавиши
управления счетом и клавиши редактирования при вводе. Третья
юна содержит стандартную цифровую клавиатуру для набора
десятичных цифр и десятичной точки. Четвертая зона имеет один
регистр и содержит часто используемые операторы языка. Пятая
зона, имеющая два регистра, включает арифметические операции
232
и стандартные математические функции. Шестая зона, имеющая
одиА регистр, содержит клавиши редактирования текста програм­
мы. Седьмая зона имеет 2 регистра и 16 клавиш, с помощью кото­
рых могут быть реализованы 32 специальные клавиши (СФ) поль­
зователя. Восьмая зона, имеющая один регистр, содержит 6 кла­
виш управления курсором.
Отображение вводимой с клавиатуры в память ЭВМ информа­
ции на экране дисплея дает возможность контролировать процесс
ввода, а также редактировать вводимую информацию.
Ввод готовой информации с клавиатуры ведется построчно,
начиная каждый раз с номера строки. Номер строки можно
вводить нажатием соответствующих цифровых клавиш, но можно
воспользоваться и специальной клавишей 5ТМТ ЬШМВЕК (31а1етеп1 питЬег — номер инструкции). Первое нажатие этой кла­
виши вводит номер строки, равный 10. При каждом последую­
щем нажатии вводится номер очередной строки, на 10 больший
предыдущего. Именно по этой причине при составлении програм­
мы строки удобно нумеровать десятками (разумеется, любой
другой номер при необходимости может быть введен с помощью
обычных цифровых клавиш). После ввода полного текста строки
нажимается клавиша перехода на новую строку С Р /Ь Р .
Пока не нажата клавиша С К /ЬР, текст вводимой строки
можно отредактировать, используя клавиши ВАСК ЗРАСЕ и
ЬШ Е ЕКА5Е.
С помощью клавиши ВАСК ЗРАСЕ можно осуществлять
посимвольное стирание текста в движении справа налево. Пусть,
для примера, при вводе на экран очередной строки программы
сложилась ситуация:
180 А = 5 + З д К ( 2 + СОЗ(1 _
и надо ошибочно введенное имя функции СОЗ исправить на
ЗШ . Тогда пятикратным нажатием клавиши ВАСК ЗРАСЕ по­
очередно стираются символы
?
'
1 (3 О С
и возникает следующая конфигурация:
180 А=5-}-5<ЗК ( 2 + __
Вслед за этим обычным образом вводится правильный текст.
Стирание всей строки до нажатия клавиши С К /Ь Р можно осу­
ществить с помощью клавиши ЬШ Е ЕКАЗЕ. После нажатия этой
клавиши текст строки исчезает, а курсор становится в начальное
положение строки, что позволяет вводить любой желаемый текст.
Отредактированная строка нажатием клавиши С Р /Ь Р вводит­
ся в память ЭВМ. Затем нажимаются клавиши ЗТМТ ЫУМВЕК
и происходит переход к вводу очередной строки программы.
При необходимости редактирования программной строки,
уже введенной в память, необходимо перевести эту строку в
состояние редактирования ЕБ1Т. Для этого надо набрать на
1§У : И аВ Ш Ш а
гзз
цифровой клавиатуре номер строки и нажать клавишу ЕШ Т,
около набранного номера строки слева появится звездочка.
Вслед за этим нажимается клавиша КЕСАЬЬ и строка ызывается
используются
режиме
на экран, Д ля редактирования
клавиши:
стирается символ на местоположении курсора, а
ОЕЬЕЦЕ
часть строки справа от курсора сдвигается лево на один символ;
ЕКАЗЕ
стирается часть строки, расположенная справа от
местоположения курсора;
Ш 5ЕК Т — раздвигается строка для вставки символа.
Д ля управления положением курсора на поле дисплея исполь­
зуются шесть клавиш. Клавишами
и — | смещают курсор
вправо или влево по строке программы на одно знакоместо. Д ля
ускоренного перемещения курсора по горизонтали используют
и
смещающие курсор сразу на
аналогичные клавиши
пять знакомест. Смещение по вертикали (переход на строку выше
или ниже) достигается нажатием клавиш Ш и ш
Клавиши
редактирования и управления курсором действуют в пределах
редактируемой строки (программная строка может занимать
три строки экрана). Отредактированная строка нажатием клави­
ши С К /Ь Р вводится в память ЭВМ. Д ля полной замены строки,
находящейся в памяти ЭВМ, на новую следует ввести номер
этой строки, новый текст и нажать клавишу С К /Ь Р . Чтобы вве­
денную строку стереть из памяти, набирают на клавиатуре ее
номер и нажимают С К /Ь Р .
После того как вся программа введена в память машины и
отредактирована, можно приступить к ее выполнению. Пуск прог­
раммы со строки с наименьшим номером осуществляется с по­
мощью оператора К1Ш, 1ля чего последовательно нажимаются
клавиши КГШ (зона 4) и С К /Ь Р . В общем случае рограмма
может быть пущена с любой строки, а не только с первой по
порядку номеров, т. е. оператор ВУЫ может использоваться
в виде:
К1Ж (номер строки),
о
о
где, (номер строки) является целым числом, указывающим на но­
мер начальной строки при пуске программы.
Текст программы при желании можно вывести на печатающее
устройство, для этого надо нажать клавиши:
Ы 5Т
Д ля вывода результатов работы программы на печатающее уст­
ройство нажимаются клавиши:
234
|5ЕЬЕСТ | | р р ш т |
Переключение вывода на экран
|5 Е Ь Е С Т | | р к ш
т
ИЕ
[ск/ЬР |
производится клавишами
И
5||СК/ЬР|
Для очистки памяти машины от хранящихся в ней программ
и данных нажимаются клавиши:
[с ь ё а й
На передней панели клавишного устройства расположена кноп­
ка КЕ5ЕТ, используемая для подачи команды аварийного оста­
нова. Нажатие кнопки КЕ5ЕТ прекращает выполнение оператора,
действия устройств ввода-вывода и передает управление пользова­
телю. При нарушении каких-либо правил общения с ЭВМ она
выдает сообщение об ошибке в виде текста ЕККОК XX, где XX —
номер ошибки, по которому в технической документации машины
можно найти объяснение причин возникновения сигнала об ошиб­
ке и рекомендации по их устранению. В приложении 2 даны
сведения о некотором (неполном) перечне сообщений об ошиб­
ках.
2. ПЕРЕЧЕНЬ СООБЩЕНИЙ ОБ ОШИБКАХ
ДЛЯ МИКРОЭВМ «ИСКРА-226»1
Номер ошибки
5У5ТЕМ ЕКК 00
5У5ТЕМ Е1Ж 01
5У5ТЕМ Е Щ 02
в
Причины, рекомендации по устранению
Системные ошибки. При случайном системном сбое пользова- 1
телю рекомендуется попытаться устранить причину, из­
менив последовательность операций, приведших к сбою,
используя кнопку КЕ5ЕТ, оператор СЬЁАЙ, либо выклю­
чить и еще раз включить машину. Если машину не удалось
вывести из этого состояния и сбой носит постоянный
характер, то необходим ремонт.
1
ЕКК 01
Текстовое переполнение. Использован весь доступный
пользователю объем оперативной памяти. Укоротить про­
грамму и (или) разбить ее на части.
ЕКК 02
Переполнение таблиц. Отведенное в ОЗУ место на запомина­
ние внутренних операционных таблиц и идентификаторов
переменных полностью использовано либо недопустимая
глубина вложений подпрограмм и циклов. Укоротить,
отредактировать и (или) разбить программу на сегменты.
1 Полный перечень сообщений об ошибках имеется в технической докумен­
тации микроЭВМ.
'
235
I
Продолжение
Номер ошибки
Причины, рекомендации по устранению
ЕКК 03
Математическая ошибка: нарушение областей определения
математических функций, деление на нуль, отрицательный
или нулевой аргумент логарифма, недопустимое возведение
в степень, недопустимые аргументы функций 51М, СОЗ,
ТАЫ и т. п.
ЕКК 06
Синтаксическая ошибка при вводе с клавиатуры. Исправить
текст строки.
.
ЕКК 07
Синтаксическая ошибка при вводе с ленты, с диска. Ис­
править текст строки.
Е Ш 08
Функция РN не определена. Определить функцию
сослаться на определенную функцию.
ЕКК 11
Не определена строка, на которую произведена ссылка.
Исправить текст программы.
ЕКК 12
При счете по программе встретился ошибочный оператор.
Исправить текст оператора.
ЕКК 18
Использование недопустимой величины (числа, размерности, массива, индекса). Например, размерность больше
чем 7999 либо индекс массива превышает заданную размер­
ность.
ЕКК 20
Недопустимый формат числа, порядок больше 99.
ЕКК 22
При выполнении программы встретились неопределенный
массив или переменная.
ЕКК 25
Нарушения в организации пар сопряженных операторов
Р О К /^Е Х Т
(или 0 0 $ Ш / К Ё Т Ш Н ). Например, для
встретившегося в программе оператора ЫЕХТ отсутствует
сопряженный оператор РОК или осуществлен переход внутрь
цикла (подпрограммы).
ЕКК 27
При исполнении оператора КЕАО данных, перечисленных
в РАТА, не хватило или данные, указанные в операторе
КЕЗТОКЕ, находились за допустимыми пределами. Испра­
вить текст программы, дополнив ее нужным количеством
данных, либо исправить оператор КЕЗТОКЕ.
236
или
Продолжение
Номер ошибки
Причины, рекомендации по устранению
ЕКК 29
Недопустимый формат данных в операторе ПМР1ЛГ. На­
пример, целой или действительной переменной присваивает­
ся не число. Ввести заново данные в исправленном формате.
ЕКК 42
Недопустимое присвоение целой переменной (число больше
чем 7999).
ЕКК 45
Длина оператора превышает 255 байтов. Исправить Текст
оператора.
ЕКК 47
Недопустимое задание номера внешнего устройства.
ЕКК 48
Нет подпрограмм ОЕРРЫ с указанным номером. Исправить
текст программы.
ЕКК 60
Файл не открыт или не существует.
3. СЛОВАРЬ АНГЛИЙСКИХ
ЖЕБНЫХ СЛОВ
СЛУ
А
N
АЫО (энд) — и
ЫЕХТ (некст) — следующий
ЫОТ (нот) „— не
В
ВАСК ЗРАСЕ (бэк спэйс) — обрат­
ный ход
ВЕСПЫ (бигин) — начало
ВООЬЕАЫ (булен) — логический (бу­
левский)
С
О
ОК (ор) — или
оитрыт (аутпут) — вывод
р
г
'; . л
I
РЬОТ ( плот) — чертить
РКШ Т (принт) — печатать
РКООКАМ (проугрэм) — программа
СНАК (АСТЕК) (кэрэктэ) — символь­
ный
СЬЕАК (клиэ) — очищать
К
ОАТ А (дейт) — данные
ОЕРШГПОЫ (дефинишн) — определе­
ние
•
■'
ОЕ1.ЕТЁ (дили:т) — вычеркивать
01М(ЕЫ5Ю М) (д и м э н ш )------ размер­
ность
ОО (ду) — выполнять
КЕАО (рид) — читать
КЕАЬ (риэл) — реальный, действитель­
ный
КЕСАЬЬ (рико:л) — отзывать
К ЕМ (А К К )
(римагк) — примечание
КЕРЕАТ (репит) — повторять
К Е Т Ы ^ (ритён) — возврат
К 0 1 Ж 0 (раунд) — округлять
КИМ (ран) — пуск
Е
5
Е01Т (эдит) — редактировать
ЕЬЗЕ (элс) — иначе
ЕМО (энд) — конец
ЕКАЗЕ (ирэйз) — стирать
ЕККОК (эрро) — ошибка
ЗЕЬЕСТ (селект) — выбирать
ЗТЕР (стэп) — шаг
31ГВК01ЛТ1УЕ (сабрутин) — подпро­
грамма
Р
т
РОК (фо) — для
Р1ЛМСТЮЫ (фанкшн) — функция
СОТО (гоуту) — идти к
:: й |
1Р (иф) — если
ШР1ЛТ (инпут) — ввод
Ш 5ЕКТ (инсэ:т) — вставить
1МТЕОЕК (интиджер) — целый
Ь
ЬЕТ (лет) — пусть
ЬШЕ (л а й н )— линия
Ы ЗТ (лист) — список
238
ТНЕЫ (зен) — то
ТО (ту) — до
о
С
*
■ш р
’ ■I*
1ЛЧТ1Ь (антил) — до
V
УАК(1АВЬЕ)
ная
(вэариэбл) — перемен­
\УЩЬЕ (вайл) — пока
МК1ТЕ (райт) — писать
ОГЛАВЛЕНИЕ
Предисловие
.........................................................................................................
Введение. Краткий очерк истории вычислительной техники . . . .
3
5
Глава 1. М ик рокальк уляторы ....................................................................................
10
1.1. Общие с в е д е н и я ...........................................................................................—
1.2. Способы представления ч и с е л ...............................................................
11
1.3. Вычисления нэ арифметических микрокалькуляторах . . . .
13
1.4. Микрокалькуляторы инженерного т и п а .......................................... 25
1.5. Программируемые м и к р о к а л ь к у л я т о р ы ..........................................39
1.6. Лабораторная работа № 1
............................................................... 54
Глава 2. Электронные вычислительные машины ( Э В М ) ............................ 62
2.1. Назначение и структура Э В М ...............................................................—
2.2. Системы с ч и с л е н и я ....................................................................................66
2.3. Архитектура первых поколений ЭВМ. Принцип программного уп­
равления
....................................................................................
. . .
71
2.4. Форматы команд и данных ЕС Э В М .................................................79
2.5. Развитие программного обеспечения Э В М .......................................... 90
2.6. Микропроцессоры. Мини- и м и к р о Э В М ..........................................94
2.7. Лабораторная работа № 2 ......................................................................97
Глава 3. А л г о р и т м и з а ц и я ........................................................................................... 103
3.1. Принцип алгоритмизации в использовании вычислительной тех­
ники
.
....................................
* . . . . . . .
—
3.2. Алгоритмы и способы их з а п и с и ................................................. . 1 0 5
3.3. Структурный подход к разработке а л г о р и т м о в ............................ 113
3.4. Построчная алгоритмическая н о т а ц и я .................................................123
3.5. Массивы
.................................................................................................. 133
3.6. Использование подчиненных а л г о р и т м о в .......................................... 137
3.7. Структурная алгоритмическая нотация
.......................................... 141
3.8. Лабораторная работа № 3 ............................................................... .
148
Глава 4. Элементы п р о г р а м м и р о в а н и я ..........................................
153
4.1. Алфавит и простейшие конструкции языка Б е й с и к ............................ —
4.2. Организация п р о г р а м м ы ............................ ......................................... 160
4.3. Программирование в е т в л е н и й ............................................................... 168
4.4. Программирование ц и к л о в ...................................................................... 172
4.5. Функции пользователя и п о д п р о г р а м м ы .......................................... *83
4.6. Г р а ф и к а .........................................................................................................
4.7. Реализация структурных алгоритмов средствами языка Паскаль
196
4.8. Лабораторная работа № 4 ...................................................................... 202
Ответы к у п р а ж н е н и я м ........................................................................................... 211
Приложения
................................................................................................................ 232
1. Загрузка, редактирование и пуск программы на микроЭВМ «Иск%
.
|
Ф
.
♦
. •
-
.
•
*
*
Л
V
Ж
*
2. Перечень сообщений об ошибках для микроЭВМ «Искра-226» . . .
235
3. Словарь английских служебных с л о в ........................................................ 238
Ё
: I ;:
’ '
239
\
Михаил Павлович Лапчик
В Ы Ч И С Л И Т Е Л ЬН А Я ТЕХНИКА
И П РО ГРА М М И РО ВА Н И Е
Зав. редакцией Р. А. Хабиб
Редактор А. К. Ком пане ц
Младший редактор Л. Е. Козырева
Художественный редактор Е. Р . Даш ук
Технический редактор С. С. Якуилкина
Корректор НК. С.'Соболева
н/к
Сдано в набор 26.01.87. Подписано к печати 24.08.87. Формат 60 X 90’/ , 6. Бум. оф сетная № 2.
Гарнит. литературная. П ечать офсетная. Уел. печ. л. 15,0. Уел. кр.-отт. 15.25. Уч.-изд. л. 12.82.
Тираж 40 000 экз. З а к а з № 43. Цена 40 коп.
' -Я Ш
Ордена Трудового Красного Знамени издательство «Просвещение* Государственного комитета
РС Ф С Р по делам издательств, полиграфии и книжной торговли. 129846, Москва, 3-й проезд Марьиной
рощи, 41.
р
Саратовский ордена Трудового Красного Знамени полиграфический комбинат Рос глав пол игр афпрома Государственного комитета Р С Ф С Р по делам издательств, полиграфии и книжной торговли.
410004, С аратов, ул. Чернышевского, 59.
Документ
Категория
Без категории
Просмотров
1
Размер файла
14 305 Кб
Теги
vichislitelnaya, programmirovania, tehnika, lapchik, 3235
1/--страниц
Пожаловаться на содержимое документа