книги из ГПНТБ / Основы автоматизации для металлургов
..pdfпишущей машинки, печатают информацию не по знакам, а сразу целыми строками. Печатающие устройства могут быть сконструи рованы по механическому или электрооптическому принципу.
К механическим печатающим устройствам относятся печатаю щие устройства рычажного типа со скоростью печатания до 2— 3 строк в секунду и наиболее распространенные быстропечатаю щие ротационные устройства (рис. 135) со скоростью печатания до 10—20 строк в секунду. При этом одна строка содержит 120, 136 или 160 знаков. Количество различных символов, имеющихся в пе чатающем устройстве, составляет 16—128. Для печатания обычно используется рулонная бумага, имеющая по краям полосы перфо рацию для движения бумаги. Полосы с перфорацией можно при необходимости легко устранить, тогда формуляр приобретет стан дартный размер (А2, A3, A4).
Электрооптические печатающие устройства работают по различ ному принципу, например ксерографическому, магнитографиче скому, электрографическому. Они обладают большими скоростями, однако область применения их пока еще ограничена.
Ксерография является |
основным электрооптическим |
методом. |
|||
На диэлектрическом |
печатающем валике электрооптически |
заря |
|||
жаются до достаточного потенциала участки, соответствующие |
зна |
||||
кам, |
которые должны |
быть |
отпечатаны. К рассматриваемым |
уча |
|
сткам |
под действием |
статического электричества пристает |
цветной |
печатный порошок. Аналогичен принцип действия магнитографиче ских печатающих устройств, но печатный порошок в этом случае — металлический. Участки, где должен быть отпечатан текст, намаг ничиваются. В обоих способах к вращающемуся печатающему ва лику в определенном месте прижимается вращающийся валик с бу магой, на которой должен быть напечатан соответствующий текст. Скорость этих печатающих устройств 80—200 строк в секунду.
При электрографии искровой разрядник выжигает на бумаге соответствующие знаки. Скорость таких устройств достигает 600
строк в секунду. |
|
|
|
|
|
К о о р д и н а т н ы й с а м о п и с е ц с ц и ф р о в ы м |
у п р а в |
||||
л е н и е м . |
Если |
результаты вычисления нужно получить в виде |
|||
графика, |
чертежа |
или в другом графическом виде, то |
можно ис |
||
пользовать координатный |
самописец с цифровым управлением. |
||||
Предположим, |
что нужно графически |
изобразить |
определен |
||
ную зависимость |
у = у(х). |
Тогда следует |
запрограммировать вы |
||
числение |
п пар Xk и у (Xh) для /г=1, 2, . . ., п так, чтобы получить |
достаточно «плотную» последовательность точек кривой. Затем вы бирают необходимый масштаб графической записи и сигналы, со
ответствующие |
результатам вычисления, управляют |
движением |
||||
пера самописца |
или резца так, что они вычерчивают на |
подготов |
||||
ленном бланке |
зависимость |
у = у(х). Существует |
много |
способов |
||
графической записи — непосредственное нанесение |
на |
бланк |
рас |
|||
считанных точек Ук = у(хн), |
печатание ступенчатого графика |
(когда |
нежелательные изломы на кривой, обусловленные малым количе ством вычисленных точек, частично сглаживаются вследствие инер-
206
Емкость запоминающего устройства ВМ NCR CRAM 653-101 со
ставляет |
125 млн. байт, |
среднее время выборки одного блока |
зна |
||
к о в — 23 |
мсек. Информация записывается по |
методу фазовой |
мо |
||
дуляции. Управляющее |
устройство |
памяти |
позволяет присоеди |
||
нить до 8 указанных запоминающих |
устройств. |
|
Устройство для считывания напечатанного текста позволяет счи тывать (обычно оптически) текст, напечатанный стандартными шрифтами (знаками) на стандартных бланках.
Для различных видов делопроизводства в качестве входных бланков используют стандартные листы, где двоичная информация обозначается перечеркиванием (или неперечеркиванием) отмечен ных клеток. Эти листы затем вводятся в специальные периферий ные устройства для считывания документов. По аналогичному принципу работают сортировальная машина и устройство для счи тывания магнитных карт.
Специальными периферийными устройствами являются аналогоцифровые и цифро-аналоговые преобразователи, позволяющие осу ществлять прямую связь ЭВМ с физическим или технологическим процессом, а также таймеры, предназначенные для выработки син хронизирующих временных импульсов (рис. 137).
Основы программирования универсальных цифровых ЭВМ
Программирование в машинном коде, |
о котором |
говорилось |
в начале главы, требует достаточно подробного знания |
используе |
|
мой ЭВМ, знаний о специфике вычислений |
и расположении регист |
ров ЭВМ, памяти и др. Программирование непосредственно в ма шинном коде является поэтому затруднительным и сложным, причем у разных ЭВМ оно осуществляется по-разному. Поэтому
предпринимались |
попытки найти такой путь, который бы |
облег |
чил и позволил |
автоматизировать работу программиста. |
Первым |
шагом в этом направлении было создание языка условных и сим волических адресов. В целом эту проблему удалось решить благо даря созданию так называемых высших языков программиро вания.
Язык программирования, который должен служить для записи различных заданий для ЭВМ, должен быть прежде всего универ сальным, независимым от типа ЭВМ. Кроме того, он должен по зволять легко записать программу в виде, аналогичном обычному математическому выражению. Так как собственно ЭВМ осущест вляет вычисления всегда в машинном коде, необходимо программу, записанную на каком-либо языке, программирования, перевести пе ред началом вычислений на машинный код.
Идея осуществления перевода программы, записанной на выс шем языке программирования, на машинный код основана на том факте, что если какой-то порядок вычислений алгоритмизирован, т. е. описан однозначно и точно, кодирование его в машинном коде является уже вопросом чисто техническим. Если нужно, например, сложить две величины а и Ь, сумму возвести в квадрат и прирав-
208
нять ее к у , операция точно описывается — алгоритмизируется за писью
y = (a + bf.
Описание этой операции в машинном коде осуществляется за данием адресов переменных a, b, у и разложением вычислений в последовательность машинных операций (например, при помощи табл. 2 1 ) .
Очевидно, что такой стереотипный процесс можно легко авто матизировать.
Порядок вычисления программы, записанной на языке про граммирования, делится тогда на два этапа:
1.Программа, записанная на языке программирования, пере водится при помощи автоматической ЭВМ на машинный код.
2.Собственно вычисление этой транслированной программы осуществляется в машинном коде.
Чтобы ЭВМ могла осуществить перевод программы, записан ной на языке программирования, в машинный код, для ЭВМ, осу ществляющей этот перевод, необходимо иметь программу перевода. Э^а «программа перевода» — так называемый транслятор или ком пилятор 1 относится к основному программному оснащению ЭВМ. Компилятор обычно размещен в библиотеке программ или непо средственно в определенной ячейке памяти ЭВМ (например, на од ном из участков запоминающего устройства на ленте).
Длительность вычисления программы увеличивается на время, необходимое для перевода программы в машинный код. Это увели чение, однако, компенсируется простотой программирования на языке программирования.
В качестве простого примера можно привести порядок вычисле ния на языке MOST I на ЭВМ ODRA:
1.Программист осуществляет анализ задачи и подготавливает программу в виде блок-схемы.
2.Программа записывается на языке MOST I .
3. Подготовленная таким образом программа переписывается на телетайпе, с телетайпа получают пятидорожечную телетайпную перфоленту с закодированным текстом (каждому удару по клави атуре телетайпа соответствует комбинация отверстий, которая вы бивается на перфоленте).
4. |
В память ЭВМ вводится заранее |
подготовленный |
компиля |
|
тор. |
(Компилятор подготовлен изготовителем ЭВМ на перфоленте |
|||
1 |
Понятие «транслятор» |
вообще обозначает |
любую программу, |
переводящую |
с одного языка на другой. |
Компилятор — это |
транслятор, позволяющий пере |
водить с языка программирования на машинный код. Перевод часто осущест вляется таким образом, что сначала программа переводится на язык символи ческих адресов [33], а затем при помощи ассемблера заканчивается перевод на машинный код. Генератор часто называют программой, предназначенной для со ставления других, часто проблемно ориентированных программ. У самых новых ЭВМ трансляторы бывают реализованы аппаратурно при помощи специальных устройств.
14 |
З а к а з № 141 |
209 |
и при помощи устройства для считывания перфоленты он записы вается в память).
5.В устройство для считывания перфоленты вставляется теле тайпная перфолента с подготовленной программой. ЭВМ. затем по следовательно считывает команды на языке MOST I , при помощи компилятора переводит их в машинный код и записывает переве денную программу в свободные ячейки памяти.
6.После перевода всей программы в устройство для считыва ния перфоленты вставляют (если это нужно) ленту с исходными данными и осуществляют затем решение задачи в машинном коде.
Чтобы компилятор мог осуществить перевод с языка програм мирования на машинный код, язык программирования должен быть точно определен и ограничен. Компилятор, например, не может быть сконструирован так, чтобы он содержал переменные а, ß, у, которых нет на клавиатуре устройства для перфорации ленты; он
не может непосредственно |
работать со всеми типами функций |
(из-за их большого числа) |
и т. д. |
В настоящее время существует несколько основных языков про граммирования. Рассмотрим наиболее распространенные из них.
Язык программирования АЛГОЛ 60 — универсальный язык с очень свободной структурой записи, предназначенный для реше ния научно-технических задач. Его можно использовать и для мас совой обработки данных. Название возникло от сокращения назва ния «Algorithmic Language* (алгоритмический язык). Хотя АЛГОЛ 60 может использоваться и в ЭВМ с небольшой внутрен ней памятью, компилятор с АЛГОЛа будет работать достаточно быстро только у ЭВМ с внутренней памятью емкостью не менее 8000 слов. АЛГОЛ 60 является достаточно универсальным языком, и компиляторы, которые бы учитывали все его возможности, дол жны удовлетворять очень высоким требованиям. Это одна из при чин создания упрощенного варианта АЛГОЛ 60 — IFIP — SABSET АЛГОЛ, который входит в АЛГОЛ 60. И наконец, существуют ма шинные версии АЛГОЛа, которые, в отличие от указанных выше модификаций, включают операции с периферийными устройствами и у которых возможны небольшие изменения по сравнению с АЛГОЛ 60. Язык АЛГОЛ 60 в настоящее время применяется во многих современных автоматических ЭВМ. Особенно распространено при менение его в Европе.
В США возник другой очень распространенный универсальный язык программирования — ФОРТРАН (Formula Translation). Для этого языка также существует несколько версий — от первоначаль ного ФОРТРАН I до ФОРТРАН V. Язык ФОРТРАН синтаксически является более простым, чем АЛГОЛ. В настоящее время почти все крупные ЭВМ оснащены трансляторами с ФОРТРАНа.
Для решения задач массовой обработки данных (учет, склад ское хозяйство, административное делопроизводство и др.) служит язык КОБОЛ (Common Business Oriented Language). В зависи мости от емкости внутренней памяти изготовители ЭВМ постав ляют вместе с ВМ и трансляторы с КОБОЛа различного уровня.
210
Современным языком программирования, включающим преиму щества предыдущих языков, является язык PL 1 (Programming Language 1).
Наличие в ЭВМ необходимых языков программирования имеет такое же важное значение для ЭВМ, как и ее другие свойства, на пример быстродействие и емкость памяти. Языки программирова ния дают возможность обмениваться программами между отдель ными вычислительными центрами (издаются журналы с опубли кованными программами [2]).
Кроме указанных языков программирования, существует очень много других проблемно-ориентированных языков, предназначен ных для решения частных проблем. Для моделирования производ ственных процессов, например, служит имитационный язык SIMULA и т. д.; существует ряд языков, имеющих более низкий синтакси ческий уровень. Эти языки предназначены обычно для ЭВМ опре деленной фирмы и носят название автокодов (MOST для ЭВМ
ODRA, автокод |
МАТ для |
ЭВМ «Минск», язык для ЭВМ |
|
ELLIOT-803 и др.). |
|
||
Например, запись существа программы для вычисления рас |
|||
смотренного выше |
примера |
|
|
на языке АЛГОЛ |
60 получит |
вид |
|
у:={а |
+ Ь)\2, |
|
|
где |
f означает возведение в степень. |
В автокоде MOST 1, где операция возведения в степень отсут ствует, сущность программы для указанного задания имеет, на пример, вид
р = а-\~Ь\ У=Р*Р,
где р — вспомогательная переменная, а знак >J< — означает умно жение. Вся программа должна быть дополнена соответствующими инструкциями по считыванию, печатанию, а также информацией для компилятора. Так, например, при использовании автокода MOST 1 необходимо задать переменные, с которыми будут проводиться вычисления (в данном примере — переменные a, b, p, у), а также число блоков, содержащихся в программе (здесь—1 блок).
Запись этих данных производится в начале программы и назы вается декларацией программы, которая в рассмотренном примере имеет вид
read abpy; label 1.
Для отделения декларации от собственно программы служит команда begin, после которой следует собственно программа.
14* |
211 |
Предположим, что переменные а и b записаны на перфоленте; для считывания информации с ленты можно использовать команду read, после которой указывается переменная, которую нужно про читать
1: read а; read b
(перед первой командой нужно указать число, которое обозначает блок программы). Затем следует содержание программы:
р = а + Ь, У=Р*Р,
а также команда на печатание результатов print у.
Программа заканчивается командой stop и информацией, от куда следует начать вычисление start 1. Здесь 1—метка, в дан ном примере эта метка, стоит перед командой read а.
Вся программа тогда имеет вид:
read a b р у, label 1
begin
1 : read а read b
p = a-\-b
У = Р*Р print y stop
start 1.
Уже из этого примера видно, что программирование в автокоде является намного более простым, чем в машинном коде. Описание программы в машинном коде, резервирование ячеек в памяти для записи программы, входных данных, промежуточных результатов
(р) и результатов вычисления (у) компилятор осуществляет авто матически.
Подготовка задания для автоматической ЭВМ
Для решения задачи на автоматической ЭВМ необходимо перед проведением вычислений составить соответствующий алгоритм.
Алгоритм — это точное и однозначное описание порядка про ведения отдельных арифметических и логических операций в за данной последовательности, приводящее к решению задачи.
212
Задачу на ЭВМ можно решить в том случае, если известен алгоритм ее решения, поэтому первым шагом при решении задачи является разработка алгоритма. Эту работу обычно выполняет математик-аналитик совместно с сотрудником, выдающим зада ние. Для составления алгоритма нельзя дать каких-то общих ука заний, поскольку алгоритм зависит от характера задачи, и для мно гих задач можно найти обычно несколько различных возможных* алгоритмов их решения.
Следующим этапом при решении задачи является кодирование алгоритма на языке программирования.
Для наглядного выражения алгоритмов запись их осуществ ляется в виде блок-схем. Блок-схема представляет собой графи ческое изображение логической структуры решения данной проб лемы. При записи блок-схем обычно применяют следующие основ ные обозначения:
1. Операционный блок (рис. 138, а), в котором символически изображено выполнение определенной арифметической, логиче ской или машинной операции. Операционный блок имеет только один вход и один выход.
2. Знак развития (продолжения) программы (рис. 138, б), ко торый показывает последовательность выполнения операций.
3.Блок сравнения (рис. 138, в), в котором сравниваются две величины; он имеет два или более выходов. Ветвь выхода выби рается при вычислении в зависимости от того, выполнено или нет условие, записанное внутри блока. Блок сравнения позволяет осу ществлять разветвление программы, организовывать циклы в прог рамме и др.
4.Обозначение начала программы (рис. 138,г).
5.Обозначение конца программы (рис. 138,0).
6.Коннекторы (соединения), используемые в тех местах, где нельзя по графическим причинам непосредственно соединить со ответствующие участки программы (рис. 138, е).
7.Точка соединения (рис. 138, з) .
Из этих, а также некоторых вспомогательных обозначений со ставляется блок-схема алгоритмов. Мы не будем детально оста навливаться на методике работы с блок-схемами, приведем лишь пример их применения.
На перфоленте записано целое число N>1 |
и числа |
Al, |
А2,... |
||
AN. |
Составим |
блок-схему алгоритма выбора |
самого |
большого- |
|
числа |
из Al, А2, |
. ..AN. |
|
|
|
Блок-схема алгоритма показана на рис. 139. Так как на ленте переменные приведены в указанном порядке, устройство для считывания перфоленты прочтет с ленты сначала значение N (блок 1), после прочтения числа N последует считывание числа Al (блок 2).
Переменной М, которая по окончании вычисления должна соот ветствовать значению искомого максимума, придадим сначала зна чение Al (блок 3).
213
а |
А+В+С |
Г 2 — і\ |
6 ( |
А=В ) Да |
|
|
йа |
|
|
\Нет |
|
Нет |
|
|
|
|
|
7' АК-^П |
||
|
|
|
|
||
|
|
|
У |
Ma |
|
|
о |
|
Нет |
№•НапечатайM |
|
|
|
|
|||
|
|
/г*/-~л |
|
|
|
|
? |
9 : |
|
|
|
|
|
|
|
|
|
Рис. |
138. Обозначения на блок- |
Рис. 139. |
Блок - схема |
выбора |
самого |
|
с х е м а х |
большого числа из |
ряда |
чисел |
После сравнения последнего числа AN осуществляется печата ние значения M (блок 10), и вычисления прекращаются.
Номера блоков в блок-схеме обычно соответствуют меткам в программе. Блок-схема алгоритма позволяет легко записать прог рамму его вычисления в ЭВМ.
^Для сравнения рассмотрим, как будет выглядеть соответствую щая программа на языке АЛГОЛ 60.
Программа на языке АЛГОЛ 60 всегда начинается с обозна чения
BEGIN,
после которого следует декларация. В данном случае работа бу-
214
дет вестись с |
переменными N я К (целые числа) и |
действитель |
||
ной переменной М, чему соответствует запись: |
|
|||
INTEGER N, |
К; |
|
|
|
R E AL M, |
|
|
|
|
а также с действительными переменными Al, А2, |
AN, кото |
|||
рые образуют поле с N элементами. Предположим, что ІѴ^ІОО, |
||||
тогда |
поле Al, |
А2, |
.. .AN декларируется при помощи |
записи |
R E A L |
ARRAY A |
[I: 100], |
|
где в квадратной скобке приведены самое младшее и самое стар шее значения индекса. Далее следует запись собственно прог раммы.
Первый блок блок-схемы требует считывания с перфоленты константы N; соответствующая команда, реализующая считыва ние целого числа N, имеет вид
1 : INTEGER |
(1, N). |
|
|
|
Единица |
с двоеточием |
обозначает номер |
команды (1), |
единица |
в скобке обозначает номер периферийного |
устройства |
(канала). |
||
Затем следует считывание действительного |
числа Al; соответст |
|||
вующая инструкция имеет |
вид |
|
|
2 : INREAL (1, А [1]),
где 2: означает номер команды (2). Затем следует:
3:М:=А [1]; 4 : ЛГ : =2;
5: INREAL (1, А \К\);
6 : IF А [К] > Л 1 THEN ОО ТО 7 E L S E ОО ТО 8.
Команда с меткой 6: позволяет осуществить логический выбор, записанный в блоке 6; если АК>М, то вычисление продолжается от команды с меткой 7:, в противном случае ЭВМ переходит к ко манде 8:
7 : / И : = Л [К];
8 : IF К' = N THEN GO ТО 10 E L S E GO TO 9
Команда с меткой 8: аналогична команде 6:. В блоке 9 осу ществляется прибавление единицы к значению переменной К
9 : / С : = / С + 1 .
После выполнения команды 9 вычисление должно вернуться
ккоманде с меткой 5:, соответствующая команда имеет вид
ООТО 5.
215