Представлення та обробка інформації
Інформатика та інформаційні технології
Інформатика [computer science] - науковий напрямок, що займається вивченням законів, методів і способів накопичення, обробки і передачі інформації за допомогою ЕОМ та інших технічних засобів. Предметом вивчення інформатики є інформаційні технології та їх застосування для вирішення прикладних завдань. Технологія практично визначає що, як і скільки потрібно зробити, щоб отримати необхідний результат. Кінцева задача використання інформаційних технологій - це підготовка та прийняття управлінських рішень.
Інформація та дані
Первинне поняття інформатики - інформація. Дане поняття неопределяемо. Тому, строго кажучи, це поняття можна розкрити тільки через вказівку процесів, в яких вона бере участь. Найчастіше під цим поняттям мають на увазі змістовну сторону, відрізняючи його від поняття «дані», яке, отже, відбиває собою формальну сторону.
Будемо розуміти під інформацією [information] міру усунення невизначеності щодо результату цікавить нас.
Тоді під даними [data] будуть розумітися об'єкти будь-якої форми, що виступають в якості засобу представлення інформації. Можна сказати, що дані - це інформація, зафіксована в певній формі.
Одні й ті ж дані можуть нести різну інформацію для різних споживачів. Фіксація інформації у вигляді даних здійснюється за допомогою конкретних засобів (мовних, образотворчих, числових і т.д.) на конкретному фізичному носії.
Формальне призначення ЕОМ полягає в обробці даних. Причому ЕОМ обробляє дані без врахування їх смислового змісту. Для цієї обробки використовуються лише математичні операції. Оцінювати смисловий зміст даних може тільки людина.
Представлення та обробка даних
Для того, щоб використовувати ЕОМ для обробки даних, необхідно розташовувати деяким способом представлення даних. Спосіб представлення даних буде залежати від того, для кого ці дані призначені: для людини (зовнішнє подання) або для ЕОМ (внутрішнє подання).
У внутрішньому представленні дані можуть бути описані в аналоговій (безперервної) або цифровий (дискретної) формах. Відповідно до цього розрізняють аналогові та цифрові ЕОМ. Практично всі використовувані ЕОМ в даний час є цифровими. Таким чином, будь-які дані в сучасних ЕОМ представляються у вигляді цілих чисел.
Будь-які види даних, які обробляються на ЕОМ, можуть бути зведені до сукупності найпростіших форм: набір символів (текст), звук (мелодія), зображення (фотографії, малюнки, схеми), речові і цілі числа (числова інформація).
Кожен такий вид даних повинен бути деяким універсальним чином представлений у вигляді набору цілих чисел. Правила такого подання розробляються науковими інститутами і оформляються у вигляді стандартів.
У зовнішньому поданні всі дані зберігаються у вигляді файлів. У багатьох випадках потрібно ще більш високий рівень організації даних на зовнішньому рівні, тоді дані групуються в бази даних (див. рис.1.
Рис. 1. Рівні представлення даних
Завдання з обробки даних передбачають також способи опису процесу самої обробки. Процедури обробки даних також представляються на зовнішньому і внутрішньому рівні. На внутрішньому рівні кожна така процедура являє собою послідовність логічних операцій з цілими числами, і називається програмою. Самі логічні операції кодуються за допомогою засобів машинної мови.
Рис. 2 Рівні подання обробки даних
На зовнішньому рівні процедури представляються у вигляді алгоритму. Конкретний вид алгоритму залежить від використовуваного алгоритмічної мови (див. рис. 2).
Таким чином, рішення будь-яких завдань за допомогою ЕОМ в кінцевому рахунку зводиться до двох взаємопов'язаним проблемам: цифрового представлення даних та алгоритмическому поданням способів обробки даних.
Внутрішнє подання даних
Двійкова форма цілих чисел. Кількість інформації
ЕОМ є електричним приладом. Вона управляється за допомогою електричних сигналів. Тому будь-які дані повинні бути деяким універсальним чином представлені у такому вигляді, щоб їх можна було легко перевести на «електричний» мову. Такою властивістю володіють двійкова форма цілих чисел. Для запису числа в двійковій формі використовуються тільки два символи 0 і 1. Ці символи легко поставити у відповідність деякому фіксованому значенню напруги в електричних схемах ЕОМ (див. рис. 3).
Рис.3 Потік даних у двійковій формі
Щоб обробляти дані, необхідно мати певний універсальний спосіб представлення операцій з цілими числами, щоб ці операції були легко представимо на "електричному» мовою. Виявляється, що цій умові задовольняють три операції з двійковими числами. Це операції логічного складання «АБО», логічного множення «І» і заперечення «НЕ».
Таблиця 1. Операції з двійковими числами
x | y | АБО | І | НЕ х |
0 | 0 | 0 | 0 | 1 |
0 | 1 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 0 |
Таким чином, всі дані, з якими працюють ЕОМ, представлені у вигляді двійкових чисел, а всі дії з даними зводяться до комбінації трьох логічних операцій.
Приклад
Розглянемо складання чисел 4 +3. У двійковій формі ці числа будуть мати вигляд відповідно 0100 і 0011. Виконуючи операцію логічного складання з кожним розрядом обох чисел, отримаємо число 0111, що є двійковим поданням числа 7.
Кількість інформації, відповідне бінарного числа, називають бітом [bit]. Число, яке представлене N бітами називається N-бітним або N-розрядним.
Надалі виявилося зручним оперувати послідовностями нулів і одиниць, об'єднаних у групи фіксованого розміру.
Найбільше значення має послідовність з восьми двійкових чисел - 8-розрядне число. Кількість інформації, що вiдповiдає такому числу, називається байтом [byte]. Крім того, використовуються групи, звані словом [word]. Розмір слова залежить від характеристик конкретної ЕОМ, але, як правило, в більшості сучасних ЕОМ розмір слова дорівнює 2 байтам.
Дуже часто програмістам доводиться безпосередньо працювати з двійковими числами, тому, щоб спростити цю роботу, часто використовуються шістнадцяткове подання двійкових чисел.
Приклад
Для спрощення перекладу цілих чисел в двійкову і шістнадцяткову форми складається наступна таблиця:
Х10 | Х2 | Х16 | Х10 | Х2 | Х16 |
0 | 0000 | 0 | 8 | 1000 | 8 |
1 | 0001 | 1 | 9 | 1001 | 9 |
2 | 0010 | 2 | 10 | 1010 | A |
3 | 0011 | 3 | 11 | 1011 | B |
4 | 0100 | 4 | 12 | 1100 | C |
5 | 0101 | 5 | 13 | 1101 | D |
6 | 0110 | 6 | 14 | 1110 | E |
7 | 0111 | 7 | 15 | 1111 | F |
4310 = 2В16 = 001010112
Таким чином, перше завдання, яке ставиться в інформатиці - це завдання надання будь-яких даних у формі цілих чисел (у цифровій формі).
Цифрове представлення символів
Правило цифрового представлення символів наступне: кожному символу ставиться у відповідність деяке ціле число, тобто кожен символ нумерується.
Приклад
Розглянемо послідовність рядкових букв російського алфавіту: а, б, в, г, д, е, є, ж, з, і, й, к, л, м, н, о, п, р, с, т, у, ф , х, ц, ч, ш, щ, виданню, и, ь, е, ю, я. Привласнивши кожній букві номер від 0 до 33, отримаємо найпростіший спосіб представлення символів. Останнє число - 32 у двійковій формі має вигляд 100000, тобто для зберігання символу в пам'яті знадобиться 6 біт. Так як за допомогою шести біт можна представити число 26 - 1 = 63, то шести біт буде достатньо для представлення 64 букв.
Є різні стандарти для представлення символів, які відрізняються лише порядком нумерації символів. Найбільш поширений американський стандартний код для інформаційного обміну - ASCII [American Standard Code for Information Interchange] введений в США в 1963р. У 1977 році в дещо модифікованому вигляді він був прийнятий як всесвітнього стандарту Міжнародної організації стандартів [International Standards Organization - ISO] під назвою ISO-646. Згідно з цим стандартом кожному символу поставлено у відповідність число від 0 до 255. Символи від 0 до 127 - латинські букви, цифри і розділові знаки - становлять постійну частину таблиці. Решта символів використовуються для представлення національних алфавітів. Конкретний склад цих символів визначається кодовою сторінкою. У російській версії ОС Windows95 використовується кодова сторінка 866. В ОС Linux для представлення російських букв більш уживана кодування КОІ-8.
Недоліки такого способу кодування національного алфавіту очевидні. По-перше, неможливо одночасне подання росіян і, наприклад, французьких букв. По-друге, така кодування абсолютно непридатна для подання китайських або японських ієрогліфів. У 1991 році була створена некомерційна організація Unicode, в яку входять представники ряду фірм (Borland, IBM, Lotus, Microsoft, Novell, Sun, WordPerfect та ін), і яка займається розвитком і впровадженням нового стандарту. Кодування Unicode використовує 16 розрядів і може містити 65536 символів. Це символи більшості народів світу, елементи ієрогліфів, спецсимволи, 5000 місць для приватного використання, резерв з 30000 місць.
Приклад
ASCII-код символу A = 6510 = 4116 = 010 001 112;
ASCII-код символу G = 7110 = 4716 = 010 001 112;
ASCII-код символу Z = 9010 = 5A16 = 010110102.
ASCII-код символу C = 6710 = 4316 = 011 001 112
Unicode-код символу C = 6710 = 00000000011001112.
Цифрове представлення дійсних чисел
Для того, щоб представити дійсне число у вигляді набору цілих чисел, його необхідно привести до нормалізованої формі:
x = M * 2P;
де M - називається мантиссой (дробовою частиною), а P - експонентою (порядком).
Після цього мантиса і порядок переводяться в двійкове подання. У пам'яті ЕОМ дійсне число зберігається у вигляді:
тут S - ознака знака. Тому необхідно також визначити, який розмір пам'яті буде відведено під всі три частини нормалізованого числа.
Далі мають бути визначені правила (алгоритми), за якими будуть виконуватися арифметичні операції з нормалізованими речовими числами. Сукупність таких алгоритмів, а також правил представлення чисел в нормалізованому формі називається арифметикою плаваючих чисел [floating point number].
Оскільки розмір пам'яті, що відводиться під мантиссу і порядок, обмежений, то речові числа представляються з деякою погрішністю (точність десяткових цифр) і мають обмежений діапазон зміни. Чим більше розмір пам'яті для плаваючого числа, тим точніше можна представити дійсне число. Тому для користувача основними характеристиками арифметики плаваючого числа є довжина числа (розмір), яка вимірюється в бітах, і точність представлення числа. За точності представлення дійсних чисел розрізняють плаваючі числа одинарної і подвійної точності [single and double divcision].
Приклад
Розглянемо принцип цифрового представлення дійсного числа 15,375. Хай під мантиссу відведено 5 десяткових розрядів, а під порядок - 2 розряду. Уявімо число в нормалізованому формі: 15,375 »1,9219 * 23. Так як в нормалізованому формі перша цифра завжди дорівнює одиниці, то її можна не зберігати. Тоді число буде представлено у вигляді цілого числа 9219003 з відносною похибкою не більше 10-4, тобто число вірних десяткових чисел дорівнює 4. У пам'яті ЕОМ це число буде зберігатися в двійковій формі, причому можна легко підрахувати, що для зберігання такої кількості потрібно 27 біт. Максимальне число, яке можна представити таким чином - 9999999 = 1,99999 * 1099, а мінімальна, не рівне нулю - 0000100 = 0,00001. Якщо передбачити один біт для зберігання знака порядку, то мінімально репрезентована число дорівнюватиме 00001-99, тобто 0,00001 * 10-99.
При спробі вийти за допустимий діапазон ЕОМ видасть повідомлення про переповнення (underflow або overflow).
Конкретні характеристики арифметики різні для різних стандартів. Для ПЕОМ найбільш поширеним є IEEE-стандарт (IEEE-754-1985) [Institute of Electrical and Electronic Engineers], згідно з яким речові числа представляються в трьох основних формах (див. табл. 1.2).
Таблиця 2. Дані з плаваючою точкою по IEEE-стандарту
Тип | Розмір, біт | Діапазон зміни чисел максимум мінімум | Точність десяткові. цифр | Машинне e | |
single | 32 | 3.4 * 10-38 | 3.4 * 1038 | 6 | 1,192 * 10-7 |
double | 64 | 1.7 * 10-308 | 1.7 * 10308 | 15 | 2,221 * 10-16 |
long double | 80 | 3.4 * 10-4932 | 3.4 * 104932 | 19 | 1,084 * 10-19 |
Джерело: [5].
Тут потрібно відмітити, що характеристики плаваючого числа подвійної точності будуть залежати від тієї арифметики, яка використовується на конкретної ЕОМ.
Приклад
Запишемо число 15,375 в двійковому вигляді:
15.375 = 1111.0112 1.111011 * 2112
Тоді відповідно до стандарту IEEE число буде представлятися:
single
15,375 = 0 1000.0001.0 111.0110.0000.0000.0000.00002 = 4176000016
long double
15,375 = 0 1000.0000.00010. 1110.1100.0000.0000. ... 00002 = 402ЕС0000000000016.
Джерело: [5].
Особливості плаваючої арифметики можуть істотно впливати на результати розрахунків, аж до того, що похибка може зробити неможливим отримання будь-якого результату взагалі, тому знання деталей реалізації арифметики плаваючих чисел є необхідним для програмістів.
Приклад
Існує особлива характеристика плаваючої арифметики - машинне епсилон. Це число, яке визначається як
.
Для плаваючого числа одиничної точності (по IEEE стандарту):
.
Це означає, якщо написати програму на мові BASIC:
a = 1.2
b = 1.e-7
print a + b
то результат, який видасть програма, буде дорівнює 1.2.
Тому програми, що враховують особливості плаваючої арифметики можуть трактувати всі числа, менші, ніж машинне епсилон, практично дорівнюють нулю.
Цифрове представлення зображень
Під зображенням будемо розуміти прямокутну область, закрашеної безперервно змінюється кольором. Тому для представлення зображень в цілих числах необхідно окремо дискретизувати прямокутну область і колір.
Для опису області вона розбивається на безліч точкових елементів - пікселів [pixel]. Саме безліч називається растром [bit map, dot matrix, raster] (див. рис. 1.3), а зображення, які формуються на основі растра, називаються растровими.
Рис.4. Дискретизація області зображення
Кількість пікселів називається роздільною здатністю [resolution]. Часто зустрічаються значення 640х480, 800х600, 1024х768, 1280х1024. Кожен піксель нумерується, починаючи з нуля зліва направо і зверху вниз.
Для представлення кольору використовуються колірні моделі. Колірна модель [color model] це правило, за яким може бути обчислений колір. Найпростіша колірна модель - бітова. У ній для опису кольору кожного пікселя (чорного або білого) використовується всього один біт. Для представлення повнокольорових зображень використовуються декілька більш складних моделей. Відомо, що будь-який колір може бути представлений як сума трьох основних кольорів: червоного, зеленого і синього. Якщо інтенсивність кожного кольору представити числом, то будь-який колір буде виражатися через набір з трьох чисел. Так визначається найбільш відома колірна RGB-модель. На кожне число відводиться один байт. Так можна представити 224 кольору, тобто приблизно 16,7 млн. квітів. Білий колір в цій моделі представляється як (1,1,1), чорний - (0,0,0), червоний (1,0,0), синій (0,0,1). Жовтий колір є комбінацією червоного і зеленого і тому представляється як (1,1,0).
Приклад
Нехай є зображення виду
Будемо вважати, що білий колір представляється нулем, а чорний - одиницею, тоді в однобітовий моделі таке зображення представиться у вигляді:
0000000000000000
0000000000000000
0000111110000000
0000100010000000
0000100010000000
0000111110000000
0000000000000000
0000000000000000
У шістнадцятковому вигляді цей двійковий набір буде виглядати так:
00 00 00 00 0F 80 серпня 1980 серпень 1980 0F 80 00 00 00 00
Всього для зберігання такого зображення буде потрібно 16 байт.
Дане зображення легко перетворити в RGB-модель. Досить замінити всі нулі трійками (1,1,1), а всі одиниці - трійками (0,0,0). Тоді отримаємо наступне шістнадцяткове представлення зображення:
FF FF FF FF FF FF FF FF FF FF FF FF FF F0 00 1F FF FF
FF F1 FF 1F FF FF FF F1 FF 1F FF FF FF F0 00 1F FF FF