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

Зубенко, Омельчук - Програмування. Поглиблений курс

.pdf
Скачиваний:
49
Добавлен:
07.03.2016
Размер:
4.72 Mб
Скачать

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

Зовнішня пам'ять містить також пристрої введення-виведення, які забезпечують обмін інформацією між суб'єктами інформаційної час- тини. Це можуть бути різного роду термінали, клавіатура, миша, при- строї друку тощо.

Центральний процесор. Зупинимось детальніше на структурі ЦП, загальну схему якого зображено на рис. 2.3.

Безпосередньо команди виконує арифметико-логічний пристрій (АЛП). Порядок, за яким виконуються команди, задає пристрій керу- вання (ПК). Важлива роль відводиться регістру лічильнику команд – PC (англ. – Program Counter), в якому формується адреса наступної для виконання команди.

Алгоритм виконання машинної програми наведено на рис. 2.4. Він до- сить схематичний деякі операції можуть виконуватися паралельно тощо.

Регістр стану процесора – PS (англ. – processor status) містить ін-

формацію про поточний стан процесора й деякі побічні результати виконання останньої команди. Ця інформація використовується для керування роботою процесора (може впливати на вибір наступної команди тощо). ЦП має також власну робочу пам'ять у вигляді зага- льних регістрів R0, R1, …, Rn і регістр-покажчик системного стеку SP (англ. – Stack Pointer), в якому зберігається адреса вершини стеку. Системний стек це службова ділянка ОП, що використовується для підтримки процесу виконання програм.

Загальна схема ЦП:

Регістр стану процесора

PS

Регістр R0

РегістрR1

АЛП

.

.

.

Пристрій

керування

Лічильник команд PC

Покажчик cистемного

cтеку SP

Рис. 2.3

151

ПРОГРАМУВАННЯ

Алгоритм виконання машинної програми подає така схема:

Установка в РС адреси першої команди

програми

Вибір із програми команди за адресою

(РС) та її декодування

стоп? +

_

Виконання команди

Формування нового значення РС

Рис. 2.4

2.3.2. СТРУКТУРА Й ФУНКЦІЇ ОПЕРАЦІЙНИХ СИСТЕМ

Процесор, пам'ять і зовнішні пристрої є основними ресурсами комп'ютера. Будь-яка програма потребує для підготовки й виконання певних ресурсів. Машинну програму в стадії виконання назвемо про- цесом. Керування ресурсами, зокрема планування й розподіл їх між процесами, здійснює операційна система.

Операційна система (ОС)– це комплекс машинних програм, призначений для автоматизованого керування ресурсами комп'ютера й забезпечення зв'язку між ним і користувачем.

152

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

Окрім автоматизованого керування, ОС надає користувачу засоби для оперативного керування комп'ютером, розробки програм, вве- дення-виведення даних тощо. Структуру ОС можна зобразити так:

 

 

 

Структура ОС

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Системи

 

 

Керування

 

Командний

 

Утиліти

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

 

 

ресурсами

 

процесор

 

 

 

 

 

(ядро ОС)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Командний процесор надає засоби для оперативного керування робо- тою комп'ютера і є спеціальним мовним інтерпретатором, що реалізує спеціальні команди, за допомогою яких можна змінювати параметри ОС, керувати зовнішніми пристроями, обробляти файли, розробляти програ- ми, запускати системні й прикладні програми на виконання тощо.

Системи програмування призначені для автоматизації процесу програмування й виконання програм. Вони реалізують мови про- грамування і складаються з текстових редакторів, трансляторів (компіляторів та інтерпретаторів), компонувальників, завантажни- ків програм тощо.

Утиліти обслуговуючі програми, що здійснюють введення- виведення й реорганізацію даних. Типовими з них є програми роботи з файлами, сортування й архівації даних, фільтри, антивірусні про- грами тощо.

Розглянемо детальніше процес створення й виконання програм:

 

 

 

 

 

 

Заванта-

Створення

 

Препроце-

 

Компону-

 

одиниць

 

сування й

 

вання

 

ження

трансляції

 

трансляція

 

об'єктних

 

програми

програми

 

коду

 

модулів

 

в ОП і

 

 

 

 

 

 

виконання

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Програми складаються з однієї чи кількох одиниць трансляції. Одиниця трансляції це програма чи її частина у вигляді текстових файлів, що допускає автономну трансляцію. Спочатку за допомогою текстового редактора формуються одиниці трансляції програми. По- тім до них послідовно застосовуються препроцесор (за необхідності) і транслятор мови програмування.

Якщо процесором є інтерпретатор, то на вхід йому передаються вхідні дані, а трансляція (інтерпретація) полягає в побудові машинної

153

ПРОГРАМУВАННЯ

програми, завантаженні її (або її фрагментів) у ОП і виконанні на за- даних вхідних даних.

Якщо ж процесором є компілятор, то в результаті компіляції на ви- ході спочатку буде отримано об'єктний (бінарний) код програми, який подається на вхід редактора зв'язків, або компонувальника, який із цьо-

го об'єктного коду та об'єктних кодів стандартних функцій компонує образ задачі машинну програму з відносними (віртуальними) адреса- ми, що розміщується попередньо в зовнішній пам'яті. На відміну від ін- терпретатора компілятор не завантажує й не виконує програму.

Усі компілятори мають бібліотеки стандартних функцій, призначе- ні для виконання найважливіших загальних задач. Під час компіляції компілятор зазначає виклики стандартних функцій, потім програма- компонувальник пов'язує об'єктний код програми з об'єктними кода- ми бібліотечних функцій.

Щоб виконати образ задачі, його необхідно завантажити в ОП і пе- редати керування на першу команду. Під час завантаження віртуа- льні адреси образу задачі замінюються абсолютними адресами ОП.

Кожна з фаз створення програми ініціалізується певною командою командного процесора ОС.

Уся пам'ять, що надається машинній програмі для її виконання, розподіляється на чотири логічні області (рис. 2.5). Перша містить машинний код програми; у другій зберігаються глобальні дані; у стеку

автоматичні дані й параметри виклику функцій, адреси повернення з виклику функцій тощо; у купі решта програмних даних; у службо- вій частині ОП ядро ОС та інша службова інформація, необхідна для керування процесами.

Стек

Купа

Глобальні дані

Код програми

Службова частина ОП

Рис. 2.5

154

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

У сучасних ОС системи програмування забезпечуються інтегрова- ним графічним інтерфейсом і називаються інтегрованим середови-

щем розробки.

2.3.3. МАШИННІ ТИПИ ДАНИХ

Машинні типи даних становлять основу базових типів мов програ- мування. Це дані, якими безпосередньо оперують машинні команди. До них належать: беззнакові цілі, цілі, дійсні, літери, адреси (у тому числі й адреси машинних команд). Для подання даних машинних ти- пів зазвичай використовують двійкову позиційну систему числення.

Позиційні системи числення. Cистеми числення (СЧ) це де-

скриптологічні системи, призначені для подання чисел. В інформати- ці застосовують різні системи числення. Наприклад, у теорії винятко- во важлива роль належить індуктивному визначенню натуральних чисел. Однак для організації конкретних обчислень перевагу надають зображенню чисел у позиційних системах числення. Кожна з таких систем використовує певну основу довільне натуральне p 2 . Сис-

тему з основою p будемо позначати СЧ p . Вона є узагальненням зви- чайної десяткової системи. Алфавіт СЧ p складають p літер-цифр

Σ

p

= c

,c ,...,c

p 1}

і допоміжні літери

{".","+ ",""}. У випадку p >10

 

{ 0

1

 

 

перші 10 цифр є звичайними десятковими від 0 до 9, для решти ви- бираються свої фіксовані імена. Наприклад, для запису чисел з осно- вою 16 шістнадцяткові цифри від 10 до 15 позначаються латинськи- ми літерами A, B, C, D, E та F.

Ціле число у СЧ p має вигляд слова в алфавіті Σp . Далі під цілим та

іншими числами будемо розуміти залежно від контексту або їхній за- пис, або значення. Нехай n = akak 1...a0 ціле число. Тоді ai Σp ,

1 i k , називається i -м розрядом числа n , a0 молодшою, а ak

старшою його цифрами. Щоб підкреслити приналежність числа до даної системи, будемо індексувати число її основою p. Наприклад,

пишемо 2510 та 2516 , що означає відповідно число 25 у десятковій і

шістнадцятковій системах. Відсутність знака перед числом, або якщо йому передує знак " +", означає додатне число. Знак "-" перед числом є ознакою від'ємного числа.

155

ПРОГРАМУВАННЯ

 

 

Значенням

числа

np

вважається десяткова сума полінома

 

 

k

 

, де ci

та p

трактуються як відповідні десяткові чис-

np = ci pi

 

 

 

i =0

10

 

 

 

ла. Продовжуючи попередній приклад, отримаємо:

2510 = 5 ×100 + 2×101 = 2510 , 2516 = 5 ×160 + 2×161 = 3710 .

Раціональні числа мають дві форми подання з фіксованою й рухо-

мою точками. Число з фіксованою точкою (ФТ-число) має вигляд слова в алфавіті цифр, усередині якого (або на початку чи в кінці) розміщено

точку. Наприклад, 0.2510 , .2516 3.142810 , 101.12 , 1111.2 ФТ-числа.

Нехай

x = akak 1...a0 .b1b2...bl довільне ФТ-число. Тоді слово

akak 1...a0

називається цілою, а .b1b2...bl

дробовою його частиною.

Значенням числа x = akak 1...a0. b1b2...bl

є десяткова сума цілої й

дробової його частин. Значенням дробової частини числа x є сума

 

l

 

pi

, де b

та p трактуються як десяткові числа. Наприклад,

b

i

 

 

 

i

 

i =−1

 

10

 

 

0.2510 = 2×101 + 5 ×102 = 0.2 + 0.05 = 0.2510 , 0.2516 = 2×161 + 5 ×162 = 0.125 + 0.01953125 = 0.1445312510 ,

101.12 =101+.12 =1×20 + 0 ×21 +1×22 +1×21 = 5 + 0.5 = 5.510 .

Як і цілим, дробовим числам може передувати знак. Число з рухо- мою точкою (РТ-число) складається з мантиси m і порядку. Манти- сою може бути ціле число або число з фіксованою точкою. Порядок має вигляд e ±n , де літера e формальна ознака порядку, а n на- туральне число. Таким чином, РТ-число має вигляд m e ±n . Напри-

клад, 1e + 22 , 1.25e + 216 , 3.1428e 10010 РТ-числа.

Значенням РТ-числа m e ±n є значення мантиси, помножене на масштабний множник, який задається порядком. Якщо мантиса ціла, то вона перетворюється до еквівалентного ФТ-числа, а масштабний множник це степінь основи із заданим порядком. Наприклад:

1e +1002 =1.0 ×24 =16.0 ,

0.25e + 216 = −0.14453125 ×162 = −37.0 ,

3.1428e 50 = −0.00...031428 .

10 123

49

156

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

Потрібно сказати кілька слів про прагматику чисел і позиційних систем числення. З одного боку, числа служать кількісною мірою множин і окремих об'єктів, їх можна порівнювати й виконувати над ними арифметичні дії, які моделюють реальні й дуже важливі кількі- сні співвідношення між предметами та їхніми сукупностями. Не ви- падково більшість моделей, з якими мають справу природничі (а на- разі все частіше й гуманітарні) науки, є числовими або зводяться до числових. З іншого боку, як було зазначено у вступі, числа в позицій- них системах виявились зручними для механізації та автоматизації основних арифметичних операцій і відношень між ними.

Арифметичні операції додавання, віднімання, множення й ділення в позиційній системі з основою p виконуються за тими самими пра-

вилами, що й у десятковій системі.

Розглянемо як приклад додавання двох чисел з основою p

np = akak 1...a0 та mp = blbl 1...b0 .

Нехай

k > l , si = ai +bi , 0 i l , si = ai , si+1 = (si′ < p si +1|si +1 +1), l +1 i k , t = (sk′ < p k |k +1).st′ = (t = k sk|1).

Тоді

np + mp = k ai pi + i =0

l

= ((si < p si |si

i =0

l

l

 

k

s pi

=

b pi =

s pi +

i

i =0

i

i =l +1

i

 

i =0

 

 

 

p)pi + pi +1) +

k

 

=

t

 

s pi

spi .

 

 

i =l +1

i

 

i =0

i

 

 

 

 

 

Відоме правило додавання у стовпчик базується саме на цих співвід-

ношеннях і реалізує пошук цифр si

 

 

p + m

p .

Додамо, напри-

суми n

клад, двійкові числа 100102 та 111102 і шістнадцяткові F 5 та 66 :

 

а) + 100102

б) + F 5

 

 

 

 

 

 

 

 

111102

66

 

 

 

 

 

 

 

 

100000

15B

 

 

 

 

 

 

 

У другому

прикладі k = l =1,

 

= B(=11) ,

s1 = F + 6 = 21,

s0 = s0

 

= 2116 = 5,

 

=1.

 

 

 

s1

t = k +1 = 2 та k < t . Отже, s2

 

 

 

Аналогічно додаванню обґрунтовуються правила для решти ариф- метичних операцій.

Переведення чисел з однієї системи в іншу. У маніпуляціях із машинними даними важливу роль відіграє перекодування даних, тобто перехід від однієї СЧp до іншої СЧq так, щоб зберігалась інформація.

157

ПРОГРАМУВАННЯ

Такі перекодування отримали назву переведення чисел з однієї системи в іншу. Будемо їх позначати (p) (q ), де p,q основи відповідних СЧ.

Для перетворень вигляду (p) (10) достатньо скористатися ви- значенням значення числа з основою p і обчислити відповідну суму.

Для довільного переведення (p) (q ) теж скористаємося десятко- вою системою. Нехай np = akak 1...a0 довільне ціле в системі СЧ p і

необхідно знайти його еквівалент nq

= blbl 1...b0 у системі СЧq . Зна-

 

 

 

 

 

k

 

 

 

 

 

 

l

 

 

 

 

 

=

a

pi

 

 

 

=

 

b qi

у результаті мають збігатися.

чення n

p

 

та n

q

 

 

 

i

 

 

 

 

 

i

 

 

 

 

 

 

i =0

10

 

 

 

 

i =0

10

Покладемо u = n

p . З урахуванням того, що u

та q відомі, фактично

необхідно розв'язати рівняння

 

 

 

 

 

 

 

 

 

 

u = b ql +... +b q1

+b

= (b ql 1 +... +b )q +b

 

(*)

 

відносно bi .

 

 

l

 

1

0

 

l

1

0

 

 

 

 

 

що 0 b0 <q , то з визначень цілочислового ді-

Якщо взяти до уваги,

лення

( ÷ )

і

операції

взяття

 

залишку

(%)

 

випливає, що

(b ql 1

+... +b ) = u ÷q , b

= u%q .

Аналогічно

знаходять

b . Нехай

l

1

 

 

 

0

 

 

 

 

 

 

 

 

1

u =u q . Тоді u

=(b ql 2

+...+b )q +b = (u q)q +u %q

та

 

b =u %q . Про-

1

 

1

l

 

2

1

1

1

 

 

1

1

цес пошуку bi

буде продовжуватися, доки ui не перетвориться на 0.

Таким чином, можна сформулювати правило для переведення ці-

лих (p)(q ):

Щоб перевести довільне ціле системи з основою p у систему з основою q , необхідно знайти частку й залишок від ділення даного числа на основу q . Залишок є молодшою цифрою шуканого числа.

Повторювати дію для нових часток, дописуючи ліворуч черговий за- лишок до слова з уже знайдених залишків, і припинити, коли остан- ня частка стане 0.

Що можна сказати про довжину нового числа nq = blbl 1...b0 , тобто l +1? Позначимо m цифру q 1 . Найменшим і найбільшим числами з

(l +1)-розрядами у СЧ

q

є відповідно ql і число r = mm...m зі значен-

 

14243

 

 

l +1

158

Розділ ІІ. ЕЛЕМЕНТИ ІНФОРМАТИКИ

 

 

 

 

 

l

 

 

 

 

l

 

 

 

 

 

 

ням r

=

mqi

 

= m

 

qi

 

. За

формулою суми геометричної

 

 

 

 

i =0

10

 

i =0

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ql +1 1

 

= ql +1 1. Тоді ql n

 

< ql +! . Після лога-

прогресії маємо

r

=

m

 

 

 

 

q

 

 

 

 

 

 

 

 

 

 

 

 

 

 

q 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

рифмування

цієї

 

 

нерівності

отримаємо

 

l logq n

q < l +1,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

l logq nq < l +1 та l = logq nq . Отже, кількість цифр у числі nq до-

рівнює

 

 

 

 

+ 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

logq nq

 

 

 

 

 

 

 

 

 

 

Наведемо кілька прикладів переведень чисел з однієї системи в іншу. Приклад 2.5. Переведемо числа 2510 та A716 у двійкову систему.

Після

переведення ці числа матимуть

log

2

25 + 1

= 5 та

 

 

 

 

 

 

 

 

log

2

167 + 1

= 8 розрядів. Відповідні процеси

переведення відобра-

 

 

 

 

 

 

 

 

жено в стовпчиках таблиці. У лівому стовпчику розташовані частки

(ui ), у правому

 

залишки-цифри

 

(bi ). У результаті маємо:

2510 = 110012 та A716 = 101001112 :

 

 

 

 

 

 

 

 

 

 

 

 

A716 = 167( = u0 )

1

(= b0 )

 

 

83

(= u1 = u /2)

1

(= b1)

 

 

(= u2 = u1 /2)

 

 

(= b2 )

 

 

41

1

 

 

(= u3 = u2 /2)

 

 

(= b3 )

 

 

20

0

 

 

(= u4 = u3 /2)

 

 

(= b4 )

 

 

10

0

 

(= u5 = u4 /2)

 

 

(= b5 )

 

 

5

1

 

(= u6 = u5 /2)

 

 

(= b6 )

 

 

2

0

 

(= u7 = u6 /2)

 

 

(= b7 )

 

 

1

1

 

(= u8 = u7 /2)

 

 

 

 

 

 

0

 

 

 

 

 

 

2510 =25( = u0 )

 

1

(= b0 )

 

 

12

(= u1 = u /2)

 

0

(= b1)

 

 

(= u2

= u1 /2)

 

0(= b2 )

 

 

6

 

 

(= u3

= u2 /2)

 

(= b3 )

 

 

3

 

1

 

 

(= u4

= u3 /2)

 

 

(= b4 )

 

 

1

 

1

 

 

(= u5

= u4 /2)

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

159

ПРОГРАМУВАННЯ

Розглянемо правило переведення дробових частин раціональних чи- сел. Нехай yp = .b1b2...bl довільний дріб у системі СЧ p і необхідно знайти його еквівалент .b1b2...bl у системі СЧq . На жаль, точний

еквівалент дробу в новій системі може мати зліченну кількість розрядів після крапки, тобто виявитися періодичним. Наприклад,

.13 = (.333...)10 . Тому в загальному випадку може йтися лише про на-

ближення до еквівалента числа. Тоді або обмежуються s першими розрядами еквівалента для певного s , або роблять те саме, але з округ-

ленням. Покладемо u = yp . Знову необхідно розв'язати рівняння відно-

сно

b

, але вже інше:

u = b q1

+... +b

qs +... (**). Нехай x

та {x}

 

i

 

1

s

 

 

означають цілу й дробову частини дійсного числа. Помножимо обидві

частини (**)

на q . Тоді uq = b

1

+b

q1 +... +b

qs +1

+... та b

= uq ,

 

 

 

ql +1 +... = {uq}.

 

2

s

 

1

 

b q1 +... +b

l

Покладемо u

= {uq } .

Аналогічно знахо-

2

 

 

 

 

= {u q}

 

 

1

 

 

 

 

димо b

= u q

та u

2

і т. д., доки u

не набуде значення 0 або

2

 

1

 

 

 

1

 

 

i

 

 

 

 

будуть отримані перші s

розрядів. Таким чином, можна сформулюва-

ти правило для переведення правильних дробів (p)(q ):

 

Щоб перевести довільний дріб .b1b2...bl

системи з основою p у си-

стему з основою q , необхідно помножити дане число на нову основу q

і взяти цілу й дробову частини отриманого добутку. Ціла частина є старшим розрядом шуканого дробу. Повторювати процес для дробової частини добутку, додаючи праворуч кожного разу нову цілу частину до слова з раніше знайдених цілих частин, і припинити, коли чергова дробова частина стане 0 або будуть отримані перші s розрядів.

Приклад 2.6. Переведемо число .2510 у двійкову та п'ятіркову сис- теми, а число .A716 у двійкову. У наближеннях треба взяти три роз- ряди після коми. Спочатку знайдемо значення дробів: .25 = 0.25 ,

.A716 =10 ×161 + 7 ×162 = 0.625 + 0.02734375 = 0.65234375 . Відпові-

дні процеси переведення відображені у стовпчиках таблиці, де в лі- вих стовпчиках розташовані дробові частини відповідних добутків (ui ), а в правих їхні цілі частини-цифри (bi ). У результаті маємо

.2510 .1115 , .2510 = .012 і .A716 = .010011112 .

160