Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги из ГПНТБ / Соловейчик, Р. Э. Программирование на АЛГОЛ-60 учеб. пособие

.pdf
Скачиваний:
7
Добавлен:
19.10.2023
Размер:
3.78 Mб
Скачать

Министерство высшего и среднего специального образования РСФСР

Ленинградский ордена Ленина, ордена Октябрьской Революции

иордена Трудового Красного Знамени 'горный институтi нм.Г.В.Плеханова

Р.Э.СОЛОВЕЙЧИК

ПРОГРАММИРОВАНИЕ

НА АЛГОЛ-60

с* ?

О/ ' У 'г ? / '

-/ о ' f j / o

1 ’ ЧНастоящееапт пособие представляет собой переработ­

ку книги Мак-Кракена 'Программирование на АЛГОЛе' £ l'J . кроме нее, при написании пособия была исполь -

эована литература £ 2 -5 ] . Дополнительно в пособие включено изложение нескольких процедур, имеющих при­ менение главным образом в области экономики.

Пособие Лредназначено для студентов следналь-

гостей 1705 и 1708, к также может быть использовано для самостоятельного изучения этого языка студента­ ми других специальностей ЛГИ.

Научный редактор Б^З.Беэмоэгин

Р. Э. Соловейчик

ПРОГРАММИРОВАНИЕ НА АЛГОЛ-60 Учебное пособие

Редактор Г. Н.Казакова

М - 2

5 3 6 7 .2 2

. Г .7 4. Печ.л.5.Изд.№ 1 2 .3 .2 6 9 4

.т .5 0 0 экз.

Цена 3 0 коп.

 

 

РТП

ЛГИ. Ленинград, 1 9 9 0 2 6 , 21 линия, 2

 

Изд. ЛГИ © 1974

3

I

В в е д е н и е

За последние 25 лет исключительно широкое развитие полу­ чила электронно-цифровая вычислительная техника и: одновремен­ но выявился целый ряд недостатков и трудностей в ее использо­ вании.

Не останавливаясь на многочисленных преимуществах этой техники в связи с их общеизвестностью, отметим только ее ос­ новное недостатки.

I. Процесс программирования, весьма трудоемок и требует для своего осуществления времени, во много раз превосходяще­ го машинное время, затрачиваемое ка вычисление по готовой и полностью отлаженной программе.

2 k Каждая программа, составленная для какой-нибудь конк­ ретной машины, не может быть использована в другой машине.

3. Публикация результатов по программированию применяет­ ся сравнительно редко как из-за большого объема программ, так к из-за их машинной ориентированности (т.е. составления их для конкретной машины). Все это настоятельно ставило воп­ рос об автоматизации программирования и сведения к- минимуму "ручной работы". При этом естественно возникла мысль о создан нии некоторого промежуточного языка, который допускал бы ав­ томатическую трансляцию (перевод) с этого языка на язык конк­ ретной машины и был бы удобен для публикаций. Конечно, при этом возникает' необходимость создания таких трансляторов для каждой конкретной машины.

Проект такого языка, предназначенного для описания вы­ числительных алгоритмов, был разработан в 1958 г., а его окончательный вариант принят в I960 г. Этот язык получил название АЛГ'Ш-бО (Algorithmic Language — алгоритмический язык).

4

В настоящее время этот язык нашел широкое распростра­ нение во всем мире, в том числе и в СССР. Он используется не только в практике программирования, но и в качестве языка для публикаций (АСЫ Communications в США, "Алгоритмы" в

СССР). Характерной особенностью АЛГОЛ-60 является его аксиома­ тическая система построения с помощью так называемых металинг­ вистических формул.

В пособии не будет подробно описано, что собой представ­ ляют металингвистические формулы, заметим только, что в них используются знаки

•.= "это есть" , I "или" <

Это так называемые металингвистические связки, в кавыч­ ках приведены их значения. Кроме связок, в металингвистичес­

ких формулах используются скобки: ^ - открывающая и ]> -зак­

рывающая. В этих скобках стоят символы металингвистических пе­ ременных, выбранные так, чтобы их названия приближенно описы­ вали смысл этих вершенных.

В языке АЛГСШ-60 используются слова, взятые из английско­ го языка,во В связи с тем, что их очень немного, это не усложгняет изучение языка.

Ниже приводится перевод всех английских слов, применяе­ мых в АЛГОЛ-60 (при печати эти слова набираются полужирным шрифтом, а в рукописях они подчеркиваются):

gO to

if then

else for -

_do— step

until while

-перейти к;

-если ;

-то ;

-иначе

-для;

-делать;

-шаг ;

-до;

-пока;

own

-

собственный;

Boolean

-

булевский;

integer

- целый;

real

- вещественный;

-arrav

-

массив ;

switch

- переключатель;

procedure

- процедура;

string

-

строка;

label

- метка;

5

comment

-

цримечание;

 

value

значение;

begin

- начало;

.

_

истина;

end

-

конец;

 

false

ложь.

В настоящее время существуют три разновидности языка

АЛГОЛ-60: I) эталонный язык;

2) язык публикаций;

3) конк­

ретные представления.

 

 

В дальнейшем будет рассмотрен эталонный язык, как наибо­

лее строгий и определяющий. Он является основой для

создания

трансляторов, образцом для конкретных представлений.

Кроме

того, значительная часть публикаций осуществляется на эталон­ ном языке. Язык публикаций, как это следует из названия, при­ способлен для обмена информацией, но не получил широкого рас­ пространения. Язык конкретных цредставлений приспосабливает эталонный язык к использованию в конкретной машине с учетом ее конструктивных особенностей.

Следует подчеркнуть, что описание эталонного языка будет вестись несколько упрощенно. Подробно изучать язык ЛЛГ0Л-60 едва ли целесообразно, но делающие могут ознакомиться с ним по книге М.И.Агеева "Основы алгоритмического языка АДГОЛ-бО" (1965).

Что такое алгоритм

Рассмотрим вначале особенности процесса постановки за­ дач для' вычислительной машины.

I. Все должно быть точно определено заранее.

Из курса программирования известно, что после составле­ ния программы и ее ввода в машину миссия человека окончена. Втолнение программы происходит внутри машины, и оно пол­ ностью автоматизировано: программа выполняется без вмешатель­ ства человека. Это значит, что нужно заранее (т.е. при сос­ тавлении программы) предусмотреть, что должна делать машина цри тех или иных обстоятельствах. Например, если нужно пос­ тупить, каким-то специальным образом в том случае, когда какая-то переменная окажется отрицательной, то необходимо

6

предусмотреть это заранее, поставив в программу соответствую­ щие управляющие приказы. ■

Если требуется, чтобы машина остановилась в том случае, когда какая-то переменная примет очень большое значение, то нужно заранее сообщить машине, что означают слова "очень боль­ шое" и предусмотреть соответствующий останов машины.

Если нужно напечатать результаты не всех, а только неко­ торых вычислений, то необходимо заранее сообщить машине, как она будет устанавливать, какие из результатов печатать, а ка­ кие нет и т.д. и т.п.

Во всех этих случаях указания машине должны быть исчерпы­ вающе точны и не допускать возможности из различного истолко­ вания.

2. Вычислительная машина не может сама принять даже мого простого решения, если ей не были даны необходимые указа­ ния человеком, ставящим задачу.

Всегда нужно помнить, что машина не может мыслить, хотя ее действия напоминают работу мыслящего существа. Однако на самом деле весь процесс мышления был осуществлен человеком заранее. Вот эти-то рассуждения приводят к понятию алгоритма, который представляет собой точное и полное описание вычисли­ тельного процесса.

Очень важно, чтобы этот алгоритм был хорошим, т.е. что­ бы программа, построенная по нему, была бь? оптимальной и что­ бы он был написан на языке, применяемом в трансляторе исполь­ зуемой конкретной машины.

Остановимся на таком , не совсем строгом аксиоматическом описании понятия алгоритма и поясним его дальнейшими примера­

ми.

,

 

 

 

 

П;р и м е р

I. Найти х

и

у , если дано, что

 

а х

+

Ъ у

=

С ;

 

dx

+

еу

=

f .

Заметим, что с поставленной таким образом задачей вычислитель­ ная машина почти ничего не сможет сделать. В лучшем случае она воспримет коэффициенты и свободные члены этих уравнений, но не сможет перейти к их решению.

7

Дело в том, что в задаче не указана процедура вычисле­ ний, применяемая для решения этой системы уравнений (а таких процедур имеется несколько). Но даже, если бы процедура вычис­ лений была единственной, все равно ее надо сообщить машине, так как она ее не "знает"). Выберем в качестве такой проце­ дуры привычные формулы Крамера:

 

се ~

fb

;

У

af

--do

х =*

=* ae

“ db •

ав -

аъ

 

 

 

 

Здесь уже видно, что решение зависит от того, будет ли

а« - db

о

 

или

ав - аь =

о

. Поэтому после вво­

да в машину коэффициентов и свободных членов системы уравне­

ний нужно выяснить, что будет с величиной, ав - аъ ,

Это

можно изобразить следущим образом:

 

Условимся, что в ромбах будут помещены так называемые усло­ вия.

В рассматриваемом примере, если ae ~ db f о , то име­

ется единственное решение, которое можно отразить, приписав

некоторой переменной,

называемой

Solution

, значение I,

а х и У

- их значения, вычисляемые по формулам

_

се -

fb

s

af -

de

*

— kb -

db

У = -— ------T7- •

 

 

 

 

ae —

db

Теперь изображение примет следующий чид (причем мы ввели ве­

личину delta

= ae

- dii

. являющуюся определителем системы,,

с тем, чтобы

не вычислять эту величину дважды, т.е. и при

вычислении т

и

цри вычислении у 1 ). Попутно отметим,

что в прямоугольниках будутобозначены вычислительные опе­ рации, а символ := будет использоваться вместо слов "ста-

новится равным

Если же в рассматриваемой примере

ае

-

аъ =

о

, то воз­

можны два

случая.

 

 

 

 

 

Если

се ■ fb I о и af - dc

=

о

, то

система уравне­

ний имеет бесчисленное множество решений, что можно отразить,

приписав переменной Solution

значение

2 (на самом деле

достаточно, чтобы имело место только одно

из двух равенств

се ~ fb = о и af - do = о , так как второе в этом случае является следствием, но этого можно и "не заметить").

Если се - п> / О и af - dc / О , to система уравне­

ний не имеет решений. Это можно отразить, приписав перемен­ ной solution значение 0 (и в этом случае достаточно, что­ бы имело место только одно из двух неравенств се - ft 4. о

и af - dc

^ о

, так как второе в этом случае является

следствием,

но

этого можно и "не заметить").

Все это войдет в окончательное изображение алгоритма, в

котором еще предусмотрен вывод решения рассматриваемого при­

мера, т.е.

печать значений

*

и

у

, а также значения

переменной

solution ,

 

 

 

 

Построенное графическое изображение

называется блок-

схемой алгоритма решения системы двух линейных алгебраичес­ ких уравнений с двумя неизвестными

9

нет

___

d e l t e =*ае - db ас ~ df

хг= delta

af ~ До yt= delta

3olutioni=1

Solutions О

Вывод \

у ,y, S olu tion ;

Пунктирная часть на блок-схеме может заменить соответ­ ствующую сплошную часть, но должна быть оставлена только

одна из них. Заметим, что

в построенной блок-схеме имеется

еще один момент. Машине не указано, какие значения должны

быть присвоены

*

и

У

в тех случаях, когда Solution =1

или

solution

= 2

, а

при выводе требуется печать значений

х, у

и Solution

 

. В дальнейшем лучше избегать подоб­

ных ситуаций. Написание блок-схемы, свободной от этого не­ достатка, предоставляется читателю.

П р и м е р 2. Найти х , если ах2+ Ъх + о = о. . И с этой задачей машина ничего не сможет сделать до тех пор, пока не будет указана какая-нибудь вычислительная процедура. В качестве таковой возьмем Хорошо знакомые формулы:

х1=

- Ъ + У Ъ 2- 4ас

;

-Ъ - У ъ 2 - 4ас'

2а . ■

*2“ ----- 5й-------- -

Соседние файлы в папке книги из ГПНТБ