ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 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
а |
А+В+С |
Г 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