Файл: Основы автоматизации для металлургов..pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 14.10.2024

Просмотров: 116

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

и при помощи устройства для считывания перфоленты он записы­ вается в память).

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


' Прочитай AK
3 Al-~fï
2 Прочитай А1
1
Поочитай N
1
Так как К = 2 (блок 4), с ленты считывается значение следую­ щего числа Л2 (блок 5) и сравнивается со значением M (блок 6).
Если А2>М, то значение M изменится на А2 (блок 7), если Л2 не больше М, то переменная M для следующего вычисления оста­ нется неизменной. Затем осуществляется контроль, проведено ли сравнение для всех чисел АК (блок 8). Если K=N, то остается лишь напечатать переменную M (блок 10), если K<N, то необхо­ димо продолжить вычисления.
К значению К прибавляется единица (блок 9) и вычисление продолжается от блока 5 (прочи­ тывается переменная A3, ЛЗ срав­ нивается со значением M и т.д.) до тех пор, пока не будет про­ ведено сравнение для AN.

а

А+В+С

Г 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