ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 16.06.2020

Просмотров: 471

Скачиваний: 4

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Питання до модульного контролю № 1

1.Охарактеризувати поняття: інформація, її джерела, форми представлення, інформаційні процеси, мірила визначення, ентропія, надлишковість дискретного повідомлення.

2. Етапи розвитку обчислювальної техніки. Стандартизація ІТ.

3. Структурна схема обчислювальної системи, основні вузли.

4. Здійснити перевід числа ДДММРРРР у двійкову, вісімкову та шістнадцяткову системи числення. ДД.ММ.РРРР – день, місяць та рік народження.

5. Поняття файл, директорія, папка, ярлик. Процедури копіювання файлів у системі Windows.

6. Відеосистема обчислювальної системи, текстовий і графічний режими роботи.

7.Основні логічні операції. Навести таблиці істинності.

8. Пристрої введення/виведення інформації. Периферійні пристрої. Поняття інтерфейсу.

9. Особливості прінстонської архітектури.

  1. Зовнішня пам’ять комп’ютера, значення слів та абревіатур FDD, CD, HDD, вінчестер, DVD, cтример, CPU, драйвер, FAT, SOFTWARE.


  1. Охарактеризувати поняття: інформація, її джерела, форми представлення, інформаційні процеси, мірила визначення, ентропія, надлишковість дискретного повідомлення.


  1. Процесор обчислювальної системи, основні вузли, параметри, режими роботи.


  1. Структурна схема обчислювальної системи, основні вузли.


  1. Здійснити перевід числа ДД.ММ.РРРР у двійкову, вісімкову та шістнадцяткову системи числення. ДД.ММ.РРРР – день, місяць та рік народження.


  1. Логічні (булеві) змінні, основні поняття. Елементарні логічні функції (операції), таблиці істинності, властивості.


  1. Відеосистема обчислювальної системи, текстовий і графічний режими роботи.


  1. Системи числення, види. Запис числа з основою m для будь-якої системи числення.


  1. Операційні системи (ОС), призначення, найбільш поширені операційні системи на ринку ІТ. Поняття інтерфейсу, типи інтерфейсів.


  1. Особливості гарвардської архітектури.


  1. Внутрішня пам’ять комп’ютера, значення абревіатур ROM, RAM, CACHE, BIOS, CMOS, HARDWARE, NTFS.


Питання до модульного контролю № 2


  1. Структура процесорної шини, операнди та основні режими адресації, етапи виконання команд.

  2. Поняття машини Тюрінга.

  3. Мови програмування. Терміни: синтаксис, семантика, компілятор, інтерпретатор, компонувальник, відлагоджувач.

  4. Основні програми архівації даних та спектр послуг для роботи з архівами.

  5. Комп’ютерні віруси, типи, способи та ознаки інфікування комп’ютера. Головні антивірусні програмні засоби.

  6. Побудова блок-схеми алгоритму (впорядкування, пошук максимального елементу масиву).

  7. Навести алгоритм побудови гістограми розподілу випадкових чисел.

  8. Етапи ров’язання задач. Поняття алгоритму, вимоги, способи задавання, базові структури.

  9. Процедура написання програм і вимоги до програм. Мова асемблера та доцільність її використання.

  10. Надлишковість, суть завдання, алгоритми стиснення даних.

  11. Комп’ютерні загрози, що можуть бути отримані мережею Інтернет. Соціальна інженерія та заходи її запобігання.

  12. Побудова блок-схеми алгоритму (пошук мінімального елементу масиву; суми та добутку елементів масиву).

  13. Навести алгоритм побудови гістограми розподілу випадкових чисел.



1. Структура процесорної шини

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

                      шина адреси. По цій шині передається адреса комірки пам’яті, з якої потрібно зчитати або до якої потрібно записати інформацію. Розрядність шини адреси визначає кількість комірок оперативної пам’яті, до яких може звертатися процесор. Кажуть, що процесор може адресувати таку кількість пам’яті. Так, якщо шина адреси має розрядність 20 біт, то процесор може адресувати 220 байтів (1 мегабайт) пам’яті;

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

                      керуюча шина, призначена для передачі керуючих сигналів.

 

Операнди та основні режими адресації

 Як уже зазначалося, операнди команд (тобто дані, над якими виконуються операції) вказуються в самій команді. Коли процесор зчитує ім'я команди, він може визначити за цим ім'ям кількість і тип операндів. В залежності від типу операндів розрізняють такі основні режими адресації:

                      безпосередня. Значення операндів безпосередньо вказуються в самій команді;

                      пряма; в команді вказується адреса комірки пам'яті, в якій зберігається потрібне дане;

                      регістрова; в команді вказується назва регістру процесора, в якому зберігається значення операнду;

                      непряма; в команді вказується ім'я регістру процесора, але в ньому зберігається не саме значення операнду, а адреса комірки пам'яті, з якої його потрібно вибрати.

 

Етапи виконання команд

 Традиційно виділяють три етапи виконання кожної команди: вибірка команди; декодування команди; безпосереднє виконання.

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








2. Машина Тьюринга, що була описана А.Тьюрингом у 1936 р., являє собою теоретичну модель обчислювальної машини. Машину Тьюринга (МТ) слід розглядати як одну з можливих формалізацій поняття алгоритму. Її робота може бути описана таким чином.Розглянемо стрічку, розділену на окремі комірки; ця стрічка є потенційно нескінченною в обидва боки. В кожній комірці може бути записаний певний символ з деякого заданого алфавіту A. Машина Тьюринга в будь-який момент часу може перебувати в певному стані (множина станів S є скінченною) і вказувати на певну комірку.

Схема машини Тьюринга

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

Програма машини Тьюринга являє собою послідовність інструкцій, кожна з яких має вигляд
a
isj → akslI,
де a
i, akє A; sl, smS, I є {R, L, H}.
 Цей запис читається так: якщо машина перебуває в стані s
l і зчитує символ ai, вона повинна записати в поточну позицію символ ak, перейти до стану sm і зсунутися вправо (відповідає літері R), вліво (відповідає літері L) або зупинитися (відповідає літері H).
 Вважається, що на початку роботи машина перебуває на лівому кінці стрічки в початковому стані s
0. Вона виконує операції, що визначаються її програмою. Якщо вона в деякий момент зупиняється, результатом роботи алгоритму вважається послідовність символів, яка записана на стрічці в момент зупинки.
Приклад.
Наведемо програму для машини Тьюринга, яка обчислює функцію x+y, де x,y - натуральні числа. Необхідно домовитися про представлення цих чисел. Стандартним для машини Тьюринга є представлення натурального числа n послідовністю з n+1 одиниць.

 Ідея вирішення могла б полягати у тому, щоб замінити крайній зліва та крайній справа символи "1" на "0", а роздільник "0" - на "1". Якби були доступні відповідні команди, це можна було б зробити просто і швидко, але ми обмежені жорсткими рамками машини Тьюринга. За таких умов схема алгоритму полягає в такому: рухатися вправо до виявлення першої одиниці (початок першого числа); як тільки вона буде виявлена, замінити її на нуль і перейти в інший стан s1. Потім рухатися вправо, поки 0, який розділяє два числа, не буде замінений на 1; при цьому знову змінити стан. Далі рухатися вправо до появи першого нуля (кінця другого доданку). Після цього зсунутися вліво, замінити останню 1 на 0 та зупинитися.
Програма може мати вигляд:
0s
0 → 0 s0R
1s
0 → 0 s1R
1s
1 → 1 s1R
0s
1 → 1 s2R
1s
2 → 1 s2R
0s
2 → 0 s3L
1s
3 → 0 s4H.

Наведений приклад показує, що машина Тьюринга є дуже незручною для програмування. Ці незручності пов'язані з тим, що:


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

·                      неструктурованість записів на стрічці; заздалегідь невідомо, де закінчується одне число і починається інше;

·                      дуже обмежений набір команд; відсутні, наприклад, основні арифметичні операції.

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

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

 

Мови програмування високого рівня

 Мови програмування високого рівня дозволяють писати програми в формі, більш наближеній до звичайної мови. Програму, написаною мовою високого рівня, можна більш легко читати і модифікувати, і вони значно полегшують роботу програміста порівняно з написанням машинного коду.Для перекладу програм, написаних мовою високого рівня, в машинні коди, повинні існувати спеціальні програми. Такі програми називаються трансляторами.
 Важливою особливістю мов високого рівня є їх відносна незалежність від машини. Це означає, що правила запису програм не залежать або мало залежать від особливостей конкретної машини. Тоді для перенесення програми на іншу машину програму не обов'язково переписувати заново, достатньо лише віддтранслювати її в коди, специфічні для цієї машини. В крайньому разі, зміни в програмі повинні бути мінімальними.Слід відмітити, що повна незалежність від машини буває не завжди, на практиці програми не завжди можна переносити без змін з машини на машину. Часто доводиться здійснювати доробки, інколи досить значні.
 Кожна мова високого рівня повинна мати
формальний опис. У цьому описі повинні бути визначені правила запису програмних конструкцій (синтаксис) і те, яким чином ці конструкції виконуються (семантика). Транслятори пишуться у відповідності до цього формального опису. Формальний опис надає розробникам трансляторів певну свободу, і транслятори можуть бути реалізовані по-різному. Кажуть про те, що мова високого рівня може мати різні реалізації. Різні реалізації мови можуть мати відмінності в синтаксисі. Тоді може виникати ситуація, коли один транслятор сприймає програму нормально, а інший видає повідомлення про помилку.
 
Авторським варіантом мови називається опис мови у тому вигляді, у якому він був запропонований розробником (однією людиною або комітетом).
 Важливе значення має поняття
стандарту. Стандартизація мов програмування здійснюється авторитетними міжнародними комітетами, і стандартизації підлягають, як правило, найбільш вдалі і популярні мови. Якщо опублікований стандарт, тобто стандартний опис мови, всі подальші реалізації повинні підпорядковуватися цьому стандарту. Втім, розробники часто доповнюють стандарти власними модифікаціями. У такому випадку, якщо автор програми використовує в ній лише можливості, визначені стандартом, програма може бути перенесена без змін на будь-яку іншу машину. Якщо ж програміст використовує особливості, специфічні для даної реалізації, перенесення без змін на іншу машину не гарантується.
 Виділяють два типи трансляторів - компілятори та інтерпретатори.
 
Компілятором називається програма, яка сприймає програму, написану мовою високого рівня, і генерує відповідний машинний код. Цей машинний код надалі може виконуватися незалежно від компілятора.
 
Інтерпретатор сприймає кожну інструкцію програми окремо, перетворює її на деякий проміжний код, і негайно виконує цей код. Незалежний машинний код при цьому не створюється.
 Надалі ми будемо розглядати лише транслятори компілюючого типу.


 

 Різні погляди на програмування і різні парадигми програмування

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

·                      програма є відображенням f: X → Y, яке ставить у відповідність елементам деякого простору вхідних даних X елементи з простору вихідних даних; це відображення можна розглядати як звичайний математичний оператор, хоч і з деякими специфічними властивостями;

·                      програма є кібернетичною системою, яка існує в певному середовищі і взаємодіє з цим середовищем, тобто сприймає від нього певні подразники і визначеним чином реагує на ці подразники; програма складається з підсистем, що певним чином взаємодіють між собою;

·                      програма являє собою певну модель, яка описує з деяким наближенням закономірності реального світу;

·                      програма є сукупністю правил, які дозволяють отримувати різноманітні наслідки (вихідні дані) з відомих передумов (вхідні дані);

·                      програма є засобом для вирішення конкретних практичних задач.

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

1.                   Процедурне програмування. Концепція процедурного програмування є історично першою та найбільш близькою до класичного визначення програми. В основі програми, побудованої за процедурними принципами, лежить послідовна зміна вхідних даних, поки не буде отриманий результат, причому кожна операція розписується в явному вигляді. Дані, з якими оперує програма, зберігаються в іменованих ділянках оперативної пам'яті, які називаються змінними. Найбільш відомими процедурними мовами є Паскаль і Сі в їх авторських варіантах.

2.                   Функціональне програмування. Виконання програми розглядається як виклик деякої функції, яка, в свою чергу, може викликати інші функції. Найбільш відомим представником цієї парадигми є Лісп.

3.                   Логічне програмування. В основі виконання програми лежить механізм автоматичного доведення теорем на основі логічного виведення. Найбільш відомий представник - Пролог.

4.                   Об'єктно-орієнтоване програмування. Ця парадигма є на сьогодні найбільш популярною і стрімко розвивається. Об'єктна програма розглядається як сукупність паралельно існуючих сутностей (об'єктів), які взаємодіють між собою. Кожний об'єкт вміє виконувати певні операції та характеризується певною поведінкою. Історично першою об'єктною мовою вважається Smalltalk. Найбільш відомими представниками цієї парадигми є C++; Object Pascal, що лежить в основі системи візуального програмування Delphi; Java.