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

книги из ГПНТБ / Бухтияров А.М. Сборник задач по программированию учеб. пособие для студентов высш. техн. учеб. заведений

.pdf
Скачиваний:
13
Добавлен:
24.10.2023
Размер:
10.77 Mб
Скачать

/

А.М. Б У Х Т И Я Р О В , Л. М. З И К Е В С К А Я ,

Г.Д . Ф Р О Л О В

СБОРНИК ЗАДАЧ по

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

Под редакцией

Н . А. К Р И Н И Ц К О Г О

ИЗДАНИЕ ТРЕТЬЕ, СТЕРЕОТИПНОЕ

 

Допущено

Министерством

 

высшего и среднего

специального

образования

СССР

в

качестве

учебного

пособия

 

для студентов

высших

технических

учебных

заведений

И З Д А Т Е Л Ь С Т В О « Н А У К А »

Г Л А В Н А Я Р Е Д А К Ц И Я Ф И З И К О - М А Т Е М А Т И Ч Е С К О Й Л И Т Е Р А Т У Р Ы

М О С К В А 1973 • У

Отдблоь'й^СІНІГБ С С С Р при И и с ^ у т в -с&ц^внмя.

работни»<о& л: и Гіл OA С С С й Н Г

6П2.15

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Б 94

 

 

 

 

 

 

 

 

 

 

 

 

 

 

У Д К 681,142.2

(075.8)

 

е-. -'-'^

ека с СОР

 

 

 

 

 

 

 

 

"' -"••"Л<І;>Н^ГО_ЗАЛА

 

 

 

 

 

 

 

 

 

t-ч -

ч</-*Ъ

 

 

 

Сборник

 

з а д а ч

 

по

п р о г р а м м и р о в а н и ю .

 

А. М . Б у х т н я р о и , Л . М . З и к е в с к а я ,

 

Г. Д . Ф р о л о в , Г л а в н а я р е д а к ц и я ф и з и к о -

 

м а т е м а т и ч е с к о й

л и т е р а т у р ы

изд - ва

« Н а у к а » ,

 

1973.

 

 

 

 

 

 

 

 

 

 

 

 

«Сборник

з а д а ч

по п р о г р а м м и р о в а н и ю »

рассчитан

на

подготовку

специалистов

по

п р о г р а м м и р о в а н и ю

на

ц и ф р о в ы х

вычислительных

м а ш и н а х

(ЦВМ)

р а з ­

л и ч н ы х типов

и с о д е р ж и т :

условия з а д а ч ,

решения,

к р а т к и е

описания

ЦВМ,

д л я

к о т о р ы х

приведены

ре­

шения

з а д а ч

(исключения

 

с о с т а в л я ю т

БЭСМ-4

и

Л1инск-22,

 

полные сведения о которых имеются в

отечественной

л и т е р а т у р е ) .

 

 

 

 

 

 

 

 

Сборник

имеет

т е м а т и ч е с к о е

строение .

К а ж д ы й

п а р а г р а ф

с н а б ж е н теоретической

справкой,

к о т о р а я

п о з в о л я е т

у ч а щ и м с я д о с т а т о ч н о просто

 

восстановить

о - п а м я т и

все н е о б х о д и м ы е

д л я д а н н о й

темы

теорети ­

ческие з н а н и я .

 

 

 

 

 

 

 

 

 

 

 

Книга

рассчитана на у ч а щ и х с я

с п е ц и а л ь н ы х учеб­

ных з а в е д е н и и ,

студентов в у з о в и

втузов, инженеров,

и

научных

с о т р у д н и к о в .

 

 

 

 

 

 

 

 

Т р е т ь е

и з д а н и е печатается

с м а т р и ц

 

второго .

 

 

Т а б л ,

33.

И л л . 20. Б и б л .

7 н а з в .

 

 

 

 

0224—1744

Б042 (02)-73

ОГЛАВЛЕНИЕ

П р е д и с л о в ие редактора ко второму изданию

 

5

Предисловие авторов ко второму изданию

 

6

Введение

7

Г л а в а I . Арифметические основы цифровых

3

Ответы

вычислительных м а ш и н {ЦВМ)

а д а "

н решения

§1. Позиционные системы счисления . Форма представле­

ния чисел с

фиксированной з а п я т о й . Перевод

чисел

 

в десятичную

систему счисления (1 — 9)

10

120 •

§2. Арифметические действия на д числами, представлен­

 

 

ными

в

форме

с

ф и к с и р о в а н н о й

з а п я т о й ,

 

в

двоич­

 

 

 

 

ной,

восьмеричной,

шестнадцатеричной

 

системах

 

 

 

 

счисления

(10 — 21)

 

 

 

 

 

 

 

 

- . . .

12 '

121

§

3.

П е р е в о д

чисел,

представленных

в

форме с

фиксиро ­

 

 

 

 

в а н н о й з а п я т о й ,

из одной

позиционной системы счис­

 

 

 

 

ления

в

д р у г у ю

(22 — 48)

 

 

 

 

 

 

 

 

18

122

§

4.

Ф о р м а

 

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

чисел

с п л а в а ю щ е й

запятой .

 

 

 

 

Н о р м а л ь н а я

форма

представления чисел. Преобразова ­

 

 

 

 

ние чисел из одной формы

в д р у г у ю

(49 — 64)

. . . .

24

125

§

5.

Арифметические

 

д е й с т в и я .

н а д

нормализованными

 

 

 

 

числами

(65 — 80)

 

 

 

 

 

 

 

 

 

 

26

126

§

6.

П р я м о й ,

обратный

и

дополнительный коды

двоичных

 

 

 

 

чисел

(81—96)

 

 

 

 

 

 

 

 

 

 

 

31

128

§

7.

П р е д с т а в л е н и е двоичных чисел

в

ячейках

памяти ма­

 

 

 

 

ш и н ы . Десятично - двоичные

коды

(97— 115)

 

 

 

36

130

' §

8.

Неарифметические

операции

на д

двоичными

кодами

 

 

 

 

( 1 1 6 - 1 1 9 )

 

 

 

 

 

 

 

 

 

 

 

 

44

133

 

 

Г л а в а I I . Элементы

программирования

 

 

 

 

§

9.

Строение

команды

и

составление

отдельных

команд

48

 

 

 

( 1 2 0 - 1 3 1 )

 

 

 

 

 

 

 

 

 

 

 

 

133

§

10.

П р о г р а м м и р о в а н и е

операторов счета (132—140)

. . .

63

136

§

11.

П р о г р а м м и р о в а н и е

логических

операторов

(141 — 177)

68

150

§

12.

П р о г р а м м и р о в а н и е

в а р ь и р у ю щ и х

о п е р а т о р о в

(178 —

 

 

 

 

199)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

75

178

§

13.

Составление

циклических

программ

(200 — 228)

. . .

80

202

4

 

 

 

 

 

 

 

ОГЛАВЛЕНИЕ

 

 

 

 

 

 

Г л а в а

III. Н е к о т о р ы е

п р и е м ы

п р о г р а м м и р о в а н и я

 

 

§

14.

Вынесение

величин

в

с т а н д а р т н ы е

я ч е й к и .

И с п о л ь ­

 

 

 

 

з о в а н и е индексных

р е г и с т р о в (229—239)

 

 

 

85

238

§

15.

П о д п р о г р а м м ы

(240—247)

 

 

 

 

 

 

89

249

§

16.

Ввод

и

в ы в о д

и н ф о р м а ц и и .

В н е ш н я я память

(248—

 

 

 

 

253)

 

 

 

 

 

 

 

 

 

 

 

 

93

254

§

17.

Р а з н ы е

з а д а ч и

{254—276)

 

 

 

 

 

 

95

 

Г л а в а IV . П р о г р а м м и р о в а н и е на я з ы к е А Л Г О Л 60

 

 

§

18.

М е т а л и н г в и с т и ч е с к и е

ф о р м у л ы

(277—281)

 

 

 

103

263

§

19.

Числа,

н н д е н т п ф и к а т о р ы ,

с т а н д а р т н ы е

 

ф у н к ц и и

 

 

 

 

(282—292)

 

 

 

 

 

 

 

 

 

 

103

264

§

20.

П р о с т ы е а р и ф м е т и ч е с к и е

в ы р а ж е н и я .

О п е р а т о р ы

 

 

 

 

п р и с в а и в а н и я ,

с о д е р ж а щ и е

простые

а р и ф м е т и ч е с к и е

 

 

 

 

в ы р а ж е н и я (293—301)

 

 

 

 

 

 

 

105

264

§ 21 . П р о с т ы е л о г и ч е с к и е в ы р а ж е н и я . О п е р а т о р ы п р и с в а и ­

 

 

 

 

в а н и я , с о д е р ж а щ и е п р о с т ы е л о г и ч е с к и е в ы р а ж е н и я

 

 

 

 

(302—309)

 

 

 

 

 

 

 

 

 

 

107

265

§

22.

У с л о в н ы е

а р и ф м е т и ч е с к и е

и л о г и ч е с к и е

в ы р а ж е н и я .

 

 

 

 

О п е р а т о р ы п р и с в а и в а н и я , с о д е р ж а щ и е у с л о в н ы е в ы ­

 

 

 

 

р а ж е н и я

(310—321)

 

 

 

 

 

 

 

 

109

265

§

23.

М е т к и .

И м е н у ю щ и е

в ы р а ж е н и я ,

не

с о д е р ж а щ и е

у к а ­

 

 

 

 

з а т е л е й

п е р е к л ю ч а т е л я . О п е р а т о р ы

перехода

(322—

 

 

 

 

330)

 

 

 

 

 

 

 

 

 

 

 

 

111

266

§ 2 4 .

С о с т а в н ы е

о п е р а т о р ы . У с л о в н ы е

о п е р а т о р ы

(331—338)

112

267

§

25.

О п е р а т о р ы

цикла (339—345)

 

 

 

 

 

113

268

§

26.

П е р е к л ю ч а т е л и

(346—351)

 

 

 

 

 

 

114

269

§

27.

П р о ц е д у р ы

(352—360)

 

 

 

 

 

 

.

116

269

§ 2 8 .

П р о г р а м м ы

(361—365)

 

 

 

 

 

 

 

118

270

 

 

 

 

 

 

П р и л о ж е н и е

 

 

 

 

 

 

 

§

29.

Ц и ф р о в а я

в ы ч и с л и т е л ь н а я

м а ш и н а

У-1

 

 

 

271

 

§

30.

Ц и ф р о в а я

в ы ч и с л и т е л ь н а я

м а ш и н а

У-2

 

 

 

275

 

§

31.

Ц и ф р о в а я

в ы ч и с л и т е л ь н а я

м а ш и н а

У-3

 

 

 

281

 

§

32.

Ц и ф р о в а я

в ы ч и с л и т е л ь н а я

машина

Р

 

 

 

285

 

Л и т е р а т у р а

 

 

 

 

 

,

 

 

 

 

,

, . .

287

 

ПРЕДИСЛОВИЕ РЕДАКТОРА КО ВТОРОМУ ИЗДАНИЮ

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

ностью оправдали.

Сейчас не

вызывает никаких

сомнений тот

факт, что подготовка программистов должна иметь

универсальный

характер, что

она

не должна

быть ориентирована

на

определен­

ную

цифровую вычислительную

машину (ЦВМ)

или

на

определен­

ную

систему

математического

обеспечения

ЦВМ.

Недостатком

первого издания безусловно является слишком малое число задач каждого класса.

При подготовке второго издания «Сборника задач по про­

граммированию»,

как

и первого, авторы исходили из необходи­

мости универсального

характера

подготовки

программистов, что

соответствует быстрому

прогрессу

ЦВМ и большому их

разнооб­

разию и позволяет получать специалистов

с высоким

уровнем

подготовки. Во

втором

издании значительно

увеличено

количест­

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

мированию

на

универсальном алгоритмическом

языке

АЛГОЛ .

В отечественной учебной литературе это является

новинкой и отра­

жает уже

полностью утвердившуюся в нашей

стране

тенденцию

к автоматизации

программирования.

 

 

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

Характерной особенностью сборника является конструктивный подход к самому понятию системы команд ЦВМ. Это обеспечи­ вается не только наличием кратких описаний целого ряда систем

команд

как условных, так

и реальных ЦВМ,

но

и

наличием

задач,

в условиях которых

приведено описание

лишь

необходи­

мой для данной задачи части системы команд,

а

остальная ее

часть считается произвольной.

 

 

 

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

программирование.

 

 

 

 

 

 

 

Н. А.

Криницкий

ПРЕДИСЛОВИЕ АВТОРОВ КО ВТОРОМУ ИЗДАНИЮ

 

«Сборник задач по программированию» преследует

цель

при­

вить практические

навыки в

составлении программ

для

програм­

мно-управляемых

цифровых

вычислительных машин

(ЦВМ)

раз­

личных типов (одноадресных, двухадресных, трехадресных, с фиксированной и плавающей запятой).

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

 

Второе

издание

сборника отличается от

первого

существенны­

ми

изменениями

и дополнениями. Наиболее крупными

из

них

являются

следующие:

увеличено

количество задач

более

чем в

три

раза;

задачи,

для

которых

решение

представлялось

в

виде

больших программ, заменены на более простые в этом отношении

задачи;

глава об алгоритмическом

языке АЛГОЛ 60 написана

заново.

 

 

При

составлении сборника задач

по программированию авто­

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

Авторыпользуются случаем выразить глубокую признатель­

ность А. И.

Китову, Н. А.

Криницкому, Л . А. Люстернику и

А. А. Ляпунову за

ценные

советы, использованные при

написа­

нии второго

издания

книги,

а также всем товарищам,

которые

высказали свои замечания и

пожелания.

 

Авторы

ВВЕДЕНИЕ

«Сборник задач по программированию» состоит из двух частей и приложения. Первая часть содержит условия задач, вторая — ответы и решения. Приложение содержит краткое описание услов­ ных цифровых вычислительных машин (ЦВМ) У-3, У-2, У-1 и Р.

Первая часть состоит из четырех глав.

Глава I содержит задачи на арифметические основы ЦВМ. В этих задачах особое внимание уделяется различным формам пред­ ставления чисел и операциям над числами в двоичной системе счисления, которая является рабочей системой счисления для

большинства

современных

ЦВМ,

а

также

над

числами

в

других

системах

счисления.

 

 

 

 

 

 

 

 

 

 

 

 

Глава

 

I I

содержит задачи на элементы программирования.

В этих

 

задачах

основное

внимание

обращается

на

строение

команды,

 

на

программирование

операторов счета,

логических

и

варьирующих операторов, на программирование циклов.

 

 

Глава

 

I I I содержит

задачи

на основные

приемы

программиро­

вания,

к

числу которых относятся: вынесение величин в

стандарт­

ные ячейки,

программирование

с

использованием индексного

ре­

гистра, а также задачи на организацию программ.

 

 

 

 

Главы

 

I ,

I I и

I I I

разделены

на параграфы, каждый' из кото­

рых посвящен определенной теме и состоит

из пояснительного

текста,

в

 

котором

кратко

излагается

существо

рассматриваемого

вопроса,

 

и

задач,

относящихся

к

этому

же

вопросу.

Условия

большинства

задач не связаны с какими-либо конкретными

ЦВМ.

Однако

в

этих главах

содержится

 

ряд задач,

которые

отражают

специфику

программирования

для

ЦВМ

с определенной

струк­

турой команд (трехадресных, двухадресных и одноадресных) и определенной формой представления чисел (с фиксированной запя­ той и плавающей запятой). Кроме того, имеется ряд задач,

отражающих специфику программирования для ЦВМ типа

БЭСМ-4,

Минск-22.

Все

необходимые

сведения по этим

машинам

можно,

например, получить в [2, 4,

6,

7].

 

 

Глава

IV

содержит

задачи

по программированию на языке

А Л Г О Л

60, который в

настоящее время широко

используется во

многих

системах

автоматического

программирования

в качестве

входного

языка.

 

 

ЦВМ зна­

Язык

АЛГОЛ

60 не содержит

средств для ввода в

чений величин с внешних носителей информации и для вывода

значений

величин

из

ЦВМ

на

внешние

носители

информации.

Эти

средства

 

добавляются

в

язык

разработчиками

систем

авто­

матического

программирования.

В

настоящем

сборнике

авторы

пользуются

следующими операторами ввода и вывода:

 

 

 

 

 

(оператор

ввода) : : = read ((список вводимых

величин))

 

 

 

(список вводимых величин) : : =

(вводимая

величина) j (спи­

сок

вводимых

 

величии),

(вводимая

величина)

 

 

 

 

 

 

 

 

(вводимая

величина)

:: =

(переменная)|(идентификатор

мас­

сива)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(оператор

вывода)

: : =

print

«список

выводимых

величин))

 

 

(список выводимых величин) :: =

(.выводимая

величина) j (спи­

сок

выводимых

величин), (выводимая

величина)

 

 

 

 

 

 

,

(выводимая

величина)

:: =

 

(переменная)

| (идентификатор

массива)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Глава

IV

также разделена на параграфы, но пояснительный

текст к

этим параграфам не дается.

 

 

 

 

 

 

 

 

 

 

Вторую

часть

сборника

составляют

ОТЕЄТЬІ

всех

задач

первой

и

четвертой

глав

и

задач,

отмеченных звездочками

во

второй

и

третьей

главах.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В ряде

задач,

относящихся

к

первой

главе,

ответ

представ­

ляет собой приближенное значение искомого результата, а какой-

либо

специальной

оговорки

в

этом плане в ответах

указанных

задач

не делается.

 

 

 

 

 

 

 

 

 

Необходимо

отметить,

что

задачи

на

составление

программ

как в

командах

ЦВМ,

так

и

на

языке

АЛГОЛ 60, как правило,

имеют

много решений.

В этих

 

случаях

в

качестве ответа

приво­

дится

одно

из возможных

решений.

 

 

 

'ЦВМ

Ответ к

задаче

на

составление

программы в командах

представляется

в

виде

схемы

программы,

описания распределения

памяти и собственно программы,

составленной в командах

ЦВМ.

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

памяти

машины

и

Ееличины,

которые в них размещаются.

При

S T O M используются

следующие

обозначения:

 

 

( N ) — номер

ячейки, в которой размещается величина N ;

(N) — содержимое ячейки N .

ЦВМ

Р номера

 

В описании

распределения

памяти для

ячеек

снабжены либо

признаком полной ячейки

(Я),

либо признаком

неполной

ячейки (Я).

 

 

 

 

Вряде случаев авторы в условиях задач или в ответах

использовали знак

: =

(как правило, этот

знак

использовался

в записи y:=f(y),

что

равносильно записи

уп+1

~[(у,,)).

Ответы к простейшим задачам на составление программ не содержат схем программ.

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

существующим

ЦВМ;

поэтому авторы сочли целесообразным

вклю­

чить

в

качестве

приложения

к

 

сборнику

описания

реально

не существующих (условных)£/£Ш

У-3, У-2, У-1

и Р,

содержащих

небольшое

количество

наиболее

 

характерных

для

современных

ЦВМ

 

команд.

ЦВМ

У-3

относится

к типу

трехадресных

машин

с фиксированной

запятой с количеством

разрядов,

отведенных

под целую

часть

числа,

равным

нулю;

У-2 —к

типу

 

двухадрес­

ных машин с плавающей запятой;

У-1

— к

типу одноадресных

машин

с фиксированной

запятой

с

количеством

разрядов,

отве­

денных под целую-часть числа, равным девяти,

Р — к типу

одно­

адресных

машин

с фиксированной

 

и плавающей

запятой.

 

В

качестве

учебных

пособий

 

авторы

рекомендуют

[ 1 , 3 — 5].

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