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

bobalo(1)

.pdf
Скачиваний:
587
Добавлен:
12.02.2016
Размер:
1.24 Mб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”

С.І. БОБАЛО

У. Б. МАРІКУЦА О.Е. МАРКЕЛОВ

ЛАБОРАТОРНИЙ ПРАКТИКУМ

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

Частина 1

Рекомендувало Міністерство освіти і науки України як навчальний посібник для студентів

вищих навчальних закладів

Львів Видавництво Національного університету “Львівська політехніка”

2009

ББК 32.973.01 я73 Б 72

УДК 004.432(075.8)

Рекомендувало Міністерство освіти і науки України як навчальний посібник для студентів

вищих навчальних закладів

(протокол № 1.4/18-Г-2884 від 24.12.2008 р.)

Рецензенти:

Русин Б.П., доктор технічних наук, професор, завідувач відділу Фізико-механічного інституту ім. Г.В. Карпенка НАН України;

Каркульовський В.І., кандидат технічних наук, доцент кафедри автоматизованих систем проектування Національного університету “Львівська політехніка”

Бобало С.І. та ін.

Б 72 Лабораторний практикум з основ програмування. Ч. 1: Навч. посібник / С.І. Бобало, У.Б. Марікуца, О.Е. Маркелов. – Львів: Видавництво Національного університету “Львівська політехніка”, 2009. – 144 с.

ISBN 978-966-553-751-9

Посібник містить сім інструкцій до виконання лабораторних робіт з курсу “Основи програмування”.

Буде корисним для студентів базових напрямів 6.0305 “Філологія” та 6.0804 “Комп’ютерні науки”.

ББК 32.973.01 я73

 

© Бобало С.І., Марікуца У.Б.,

 

Маркелов О.Е., 2009

 

© Національний університет

ISBN 978-966-553-751-9

“Львівська політехніка”, 2009

2

ВСТУП

Навчальний посібник “Лабораторний практикум з основ програмування” відрізняється за структурою від загальноприйнятої форми подачі матеріалу, що викликано методикою викладання. Весь матеріал поділено на окремі теми (лабораторні роботи), які містять теоретичну частину і окремі завдання, за допомогою яких студент засвоюватиме певну тему. У теоретичній частині розкрито основні аспекти мови Паскаль за конкретною темою, наведено багато прикладів, які ілюструються блок-схемами алгоритмів.

Такий метод подачі матеріалу вибрано тому, що тільки пишучи і налагоджуючи програми, можна навчитися програмувати. Мало вивчити правила запису операторів і структуру програми, необхідно ще й навчитися використовувати їх для розв’язання конкретних задач.

Чому з-поміж багатьох сучасних мов програмування високого рівня вибрано саме мову Паскаль?

Алгоритмічна мова Паскаль була розроблена професором Швейцарської вищої школи Ніклаусом Віртом у 1970 році спеціально для навчання програмуванню, вона є легкою для розуміння і вивчення. Однак, незважаючи на відносну простоту, мова Паскаль придатна для широкого спектра завдань: як для розв’язання простих задач, так і для побудови складних програмних комплексів (операційних систем, баз даних тощо).

У мові Паскаль реалізовано ряд концепцій, які є основою „дисциплінованого” програмування:

1) концепція структурованого програмування, яка здійснюється не тільки шляхом впорядкування зв’язків між фрагментами програми, але й за рахунок структуризації даних;

2) вперше у мові Паскаль втілено концепцію визначення нових типів.

Розробники компіляторів і систем програмування на базі мови Паскаль сьогодні використовують три стандарти: британський, міжнародний та ANSI. У посібнику використовується міжнародний стандарт ISO 7185, прийнятий у 1982 році. Існуючі версії Turbo Pascal є розширеннями цього стандарту і різниця між ними і стандартом обумовлюється при подачі конкретного матеріалу.

Посібник розрахований для студентів комп’ютерних спеціальностей, однак простота і послідовність викладення матеріалу робить його загальнодоступним. Він може використовуватися і для самостійного вивчення студентами за дистанційною формою навчання.

3

ПОНЯТТЯ ПРО СИСТЕМИ ЧИСЛЕННЯ ТА ОДИНИЦІ ВИМІРЮВАННЯ ІНФОРМАЦІЇ В ЕОМ

Система числення – це правила запису чисел і виконання дій над ними. Всі системи числення можна поділити на дві групи: позиційні і непозиційні. Прикладом непозиційної системи числення є римська система, де для

позначення цифр використовуються знаки: I, V, X, L, C, M. За допомогою цих

знаків можна представити будь-яке натуральне число: 1 – I, 3 – III, 5- V, 55 – LV, 45 – VL, 151 – CLI.

Прикладом позиційної системи числення може бути найпоширеніша десяткова система. В позиційній системі положення цифри в числі одночасно визначає той внесок, який вона вносить в значення числа. Так, у числі 343 дві однакові цифри 3, але їх внесок різний – перша – це сотні, друга – одиниці.

Кожне число, задане у позиційній системі числення, можна представити поліномом:

794210 = 7 103 + 9 102 + 4 101 + 2 100 , 2,49510 = 2 100 + 4 101 + 9 102 + 5 103.

Сукупність цифр, що використовуються в позиційній системі для запису числа називається базисом системи числення. Базисом десяткової системи числення є : 0,1, 2, 3, 4, 5, 6, 7, 8, 9; Базисом двійкової системи числення є: 0,1. Кількість цифр базису визначає основу системи числення : Р. Основою системи числення може бути довільне натуральне число, більше за одиницю. В обчислювальній техніці найпоширенішими стали: двійкова, вісімкова і шістнадцяткова системи числення. Для системи числення з основою понад 10 кількість цифр базису необхідно доповнити буквами латинського алфавіту. Так, для шістнадцяткової системи числення

10

0

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

0

1

2

3

4

5

6

7

8

9

A

B

C

D

E

F

Виконання арифметичних операцій у різних системах числення

Арифметичні операції виконуються у різних системах числення за однаковими правилами. Наведемо таблиці виконання операцій додавання і множення у двійковій і вісімковій системах:

Для двійкової системи базисом є цифри Ø і 1 відповідно.

4

Таблиця додавання

+

0

1

0

0

1

1

1

10

Таблиця множення

*

0

1

0

0

0

1

0

1

Для вісімкової системи числення базисом є цифри : 0, 1, 2, 3, 4, 5, 6, 7 відповідно таблиці матимуть вигляд:

Додавання у вісімковій системі:

+

0

1

 

2

3

4

5

6

7

0

0

1

 

2

3

4

5

6

7

1

 

2

 

3

4

5

6

7

10

2

 

 

 

4

5

6

7

10

11

3

 

 

 

 

6

7

10

11

12

4

 

 

 

 

 

10

11

12

13

5

 

 

 

 

 

 

12

13

14

6

 

 

 

 

 

 

 

14

15

7

 

 

 

 

 

 

 

 

20

 

 

 

Множення у вісімковій системі:

 

 

 

 

1

 

 

 

 

 

 

 

*

0

 

2

3

4

5

6

7

0

0

0

 

0

0

0

0

0

0

1

 

1

 

2

3

4

5

6

7

2

 

 

 

4

6

10

12

14

16

3

 

 

 

 

11

14

17

22

25

4

 

 

 

 

 

20

24

30

34

5

 

 

 

 

 

 

31

36

43

6

 

 

 

 

 

 

 

44

52

7

 

 

 

 

 

 

 

 

61

Виконання арифметичних операцій в двійковій і вісімковій системах числення:

 

 

 

Додавання

У двійковій системі

У вісімковій

101100

 

2378

1011

 

148

 

110111

 

2538

 

 

 

5

 

 

 

Множення

 

У двійковій системі

 

У вісімковій

 

101

 

1738

3*2=6

*

11

 

218

7*2=16

 

101

 

 

173

 

 

101

 

366

6+7=15

 

1111

 

 

40538

6+1=7+1=10

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

Переведення чисел із однієї системи числення в іншу

Розглянемо переведення чисел з однієї системи числення в іншу. При роботі з різними системами числення основа системи Р записується у вигляді нижнього правого індексу: 1011012 37410 27F16.

Найпростішими є переходи з двійкової системи в вісімкову і шістнадцяткову, оскільки 16 = 24 , 8 = 23 , тобто кожна вісімкова цифра представляється тріадою з нулів і одиниць.

 

 

 

 

 

 

 

Таблиця 1

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

000

001

010

011

100

101

110

111

Кожен символ шістнадцяткового числа представляється тетрадою:

 

 

 

 

 

 

 

Таблиця 2

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

0000

0001

0010

0011

0100

0101

0110

0111

8

9

A

B

C

D

E

F

1000

1001

1010

1011

1100

1101

1110

1111

Число 5078 = 1010001112 14716 = 0001 0100 01112

Зворотні перетворення проводяться аналогічно, за таблицею

 

100 101111

 

= 457

 

 

0001 0010

 

 

= 12F

 

 

8

 

1111

{ { {

 

 

{ {

{

2

16

 

4 5 7

 

2

 

1 2

F

 

 

 

 

 

 

6

 

 

 

 

Так само просто переводити числа з вісімкової в шістнадцяткову систему числення і навпаки. Таке переведення роблять через двійково-вісімковий і двійково-шістнадцятковий код. Тобто число, записане у вісімковій системі числення переводиться в двійкову, а потім двійкове число переводиться у шістнадцяткову систему числення:

5278

16 = 15716

72F16 8 = 34578

0001 0101 0111

011100 101111

{{{

{ { { {

1

5

7

3

4

5

7

У разі переведення цілого числа з вісімкової системи у шістнадцяткову:

1.Кожен символ числа представляється тріадою нулів і одиниць відповідно до табл. 1.

2.Одержане двійкове число розбивається справа на тетради.

3.Якщо у найстаршій тетраді не вистачає розрядів, доповнюємо їх нулями зліва.

4.Кожна тетрада замінюється шістнадцятковим символом відповідно до

табл. 2.

5.Якщо здійснюється переведення дробового числа, то розбиття на тетради виконується в обидва боки від крапки.

} } }

714.318 16 = 1CC.6416

. } }

. } } } }}

7 1 4

3 1

1 C C

6 4

111 001100 . 011 001

11100 1100

. 0110 01

Складніша справа з переходом з десяткової системи числення у всі інші системи і навпаки. Оскільки 10 не є степенем двійки, то перехід здійснити значно важче. Переведемо дійсне число 327.48 у двійкову систему числення. Для переведення цілої частини числа з десяткової системи в двійкову поділимо це число на два.

327

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

163

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

16

 

81

 

2

 

 

 

 

 

 

 

 

 

 

 

 

12

3

8

 

40

 

2

 

 

 

 

 

 

 

 

 

 

7

2

 

1

40

 

20

 

2

 

 

 

 

 

 

 

 

6

1

0

 

0

20

 

10

 

2

 

 

 

 

 

 

1

 

 

1

 

 

 

0

10

 

5

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

0

4

 

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

1

2

 

1

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

Запишемо остачу від ділення, починаючи справа : 32710 = 1010001112 Щоб перевести дробову частину числа з десяткової системи у двійкову,

необхідно помножити це число на 2 і записати нуль або одиницю зліва від десяткової коми ( в обчислювальній техніці крапки).

0,48 * 2 = 0,96

=

0

+ 0,96

0,96 * 2 = 1,92

=

1

+ 0,92

0,92 * 2 = 1,84

=

1

+ 0,84

0,84 * 2 = 1,68

=

1

+ 0,68

0,68 * 2 = 1,36

=

1

+ 0,36

0,36 * 2 = 0,72

=

0

+ 0,72

0,72 * 2 = 1,44

=

1

+ 0,44

0,44 * 2 = 0,88

=

0

+ 0,88

0,88 * 2 = 1,76

=

1

+ 0,76

0,76 * 2 = 1,52

=

1

+ 0,52

0,52 * 2 = 1,04

=

1

+ 0,04

Обчислення виконується доти, поки дробова частина не стане близькою до нуля – 0,04.

0,4810 = .011110101112

Чим більше розрядів візьмемо, тим меншою буде похибка. Для зворотного перетворення числа із двійкової системи числення в десяткову існує два методи:

1.За допомогою полінома.

2.За допомогою множення цілої частини на два і ділення дробової

частини.

1)1010001112 → 28 + 26 + 22 + 21 + 20 =256+64+4+2+1=327

2) 1 * 2 = 2

 

2 + 0 = 2

2

* 2 = 4

 

4 + 1 = 5

5

* 2 = 10

10 + 0 = 10

10

* 2 =

20

20 + 0 = 20

20

* 2

=

40

40 + 0 = 40

40

* 2

=

80

80 + 1 = 81

81

* 2

=

162

162 + 1 = 163

163 * 2 = 326

326 + 1 = 327

 

 

 

 

 

8

Для дробової частини :

1).011110101112 → 2-2 + 2-3 + 2-4 + 2-5 + 2-7 + 2-9 + 2-10 + 2-11 = 0,479903.

2)Починаючи з наймолодшого розряду, ділимо на 2 і додаємо наступний

розряд:

1 : 2 = 0,5

0,5 + 1 = 1,5

1,5 : 2 = 0,75

0,75 + 1 = 1,75

1,75 : 2 = 0,875

0,875 + 0 = 0,875

0,875 : 2 = 0,4375

0,4375 + 1 = 1,4375

1,4375 : 2 = 0,71875

0,71875 + 0 = 0,71875

0,71875 : 2 = 0,359375

0,359375 + 1 = 1,359375

1,359375 : 2 = 0,6796875

0,6796875 +1 = 1,6796875

1,6796875 : 2 = 0,83984375

0,83984375 + 1 = 1,83984375

1,83984375 : 2 = 0,91971875

0,91971875 + 1 = 1,91971875

1,91971875 : 2 = 0,959854375

0,959854375 + 0 = 0,959854375

0,959854375 : 2 = 0,4799271875

 

У результаті зворотного переведення ми отримали не 0,48 , а 0,4799272. Такий ефект називається похибкою заокруглення. Ми взяли одинадцять розрядів двійкового числа і одержали похибку в п’ятому розряді після крапки десяткового числа.

Отже, треба пам’ятати, що ціле число дискретне, воно представляється дискретно в пам’яті машини. 32710 – це завжди 1010001112 і ніяке інше.

Дробове число ( дійсне число) однозначно ( дискретно) в пам’яті машини не представляється. 0,48 може бути 0,47999274 або 0,48000014, або ще якось в залежності від кількості розрядів ЕОМ.

Правила переведення чисел з однієї системи числення в іншу

Існують два найпоширеніші методи переведення чисел з однієї системи числення в іншу.

Перший спосіб. Щоб перевести число із системи числення з основою q в систему числення з основою p, необхідно здійснити такі операції:

1.Записати число, яке переводиться, у вигляді полінома в степені системи числення q.

2.В отриманому поліномі замінити основу q і всі коефіцієнти числами в новій системі числення (р).

3.Виконати арифметичні операції в новій системі числення.

9

Приклад: перевести 3AD16 в десяткову систему числення:

3AD16 = 3q2 + Aq1 + Dq0 = 3*162 +10 *161 +13*160 = 3* 256 +10 *16 +13 =

= 768 +160 +13 = 94110

Другий спосіб. За другим методом окремо переводиться ціла і дробова частини. Для того щоб перевести цілу частину числа з системи числення з основою q в систему числення з основою р, необхідно:

1.Задане число розділити на основу р нової системи числення. 2.Залишок від ділення записати в новій системі. Це буде наймолодший

розряд шуканого числа.

3.Перевірити, чи частка від ділення дорівнює нулю.

4.Якщо частка від ділення дорівнює нулю, то отримано шукане число. 5.Якщо частка від ділення не дорівнює нулю, то повторюємо алгоритм з

пункту 1, тобто знову ділимо на основу р.

 

94110

16

 

941

 

16

 

 

 

 

 

80

 

58

16

 

141

 

48

3

16

128

10

0

0

13

||

3

 

||A

D

94110 = 3AD16

Щоб перевести дробову частину числа з системи числення з основою q у систему числення з основою р, треба:

1.Помножити задане число на р-основу нової системи числення. Ціла частина добутку буде першим розрядом після десяткової крапки шуканого числа.

2.Дробову частину одержаного добутку знову помножити на число р. Ціла частина одержаного добутку буде наступним (молодшим) розрядом шуканого числа.

3.Якщо дробова частина близька до нуля або досягнуто заданої точності, обчислення закінчуються.

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]