Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРОГРАМУВАННЯ_FULL.docx
Скачиваний:
6
Добавлен:
18.09.2019
Размер:
112.09 Кб
Скачать

17 Типи вірусів

файлові віруси заражають програмні файли з такими розширеннями, як COM, EXE, DLL, SYS, DRV, VXD . Файлові віруси можуть заражати файли практично будь-якої операційної системи незалежно від її версії. Окремою категорією коштують віруси, які заражають документи, соз дані за допомогою пакету програм Microsoft Office, це так називає миє макровіруси;

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

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

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

мережеві віруси — ця категорія вірусів здатна самостійно пері давати свій програмний код всім комп'ютерам, підключеним до ло кальной мережі. Часто цю категорію вірусів називають черв'яками;

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

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

18. Шляхи проникнення вірусів у комп'ютер і механізм розподілу вірусних програм  Основними шляхами проникнення вірусів у комп'ютер є знімні диски (гнучкі й лазерні), а також комп'ютерні мережі. Зараження жорсткого диска вірусами може відбутися при завантаженні програми з дискети, що містить вірус. Таке зараження може бути випадковим, наприклад, якщо дискету не вийняли з дисководу А і перезавантажили комп'ютер, при цьому дискета може бути і не системною. Заразити дискету набагато простіше. На неї вірус може потрапити, навіть якщо дискету просто вставили в дисковод зараженого комп'ютера і, наприклад, прочитали її зміст.  Вірус, як правило, впроваджується в робочу програму таким чином, щоб при її запуску управління спочатку передалося йому і тільки після виконання всіх його команд знову повернулося до робочої програми. Отримавши доступ до управління, вірус насамперед переписує сам себе в іншу робочу програму і заражає її. Після запуску програми, що містить вірус, стає можливим зараження інших файлів. Найчастіше вірусом заражаються завантажувальний сектор диска і виконувані файли, що мають розширення EXE, COM, SYS, BAT. Вкрай рідко заражаються текстові файли.  Після зараження програми вірус може виконати якусь диверсію, не дуже серйозну, щоб не привернути уваги. І нарешті, не забуває повернути управління тій програмі, з якої було запущено. Кожне виконання зараженої програми переносить вірус у наступну. Таким чином, заразиться все програмне забезпечення.  Для ілюстрації процесу зараження комп'ютерної програми вірусом має сенс уподібнити дискову пам'ять старомодному архіву з файлами на тасьмі. У папках розташовані програми, а послідовність операцій з впровадження вірусу буде в цьому випадку виглядати наступним чином. 

19

Антивірусна програма — це програма, яка запобігає зараження ПК комп'ютерними вірусами і дозволяє усунути наслідки зараження.

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

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

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

На сьогоднішній день найбільш популярними є антивірусні про грами:

AVP або Антивірус Касперського,

Dr . Web, створена фахівцями компанії "Діалог-наука

Symantec Norton Antivirus,

20

 Структура  програми на мові Сі.

 Програма на С складається із сукупності функцій, одна з яких повинна називатись main(). Описані функції складаються із заголовку і тіла функції. Заголовок містить оператори (директиви) передпроцесора, наприклад, #include та ім’я функції. Ім’я пізнається по круглим дужкам, які можуть бути порожніми. Тіло функції береться у фігурні дужки і складається із ряду операторів, кожний з яких закінчується крапкою з комою. Усі програми, написані на мові Сі, повинні містити в собі хоча б одну функцію. Функція main() - вхідна точка будь-якої програмної системи, причому немає різниці, де її розміщувати. Але потрібно пам'ятати наступне: якщо вона буде відсутня, завантажувач не зможе зібрати програму, про що буде виведене відповідне попередження. Перший оператор програми повинен розміщуватися саме в цій функції.

Мінімальна програма на мові Сі має вигляд:

main()

{

   return 0;

}

     Функція починається з імені. В даному прикладі вона не має параметрів, тому за її ім'ям розташовуються порожні круглі дужки (). Далі обидві фігурні дужки {...} позначають блок або складений оператор, з яким ми працюватимемо, як з єдиним цілим.

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

код запуску

21

Оголошення велечин.

Величина – характеристика об’єкта, яка може набувати різних

значень. Ім’я величини (змінної, алгоритму, програми) – символ або група символів, що використовується для позначення величини (змінної, алгоритму, програми).

Cтала величина (або константа) – це величина, яка не може змінювати своє значення в процесі виконання алгоритму (програми).

Змінна – це іменована величина, яка в процесі виконання алгоритму

(програми) може набувати і зберігати різні значення.

Тип величини – це характеристика величини, яка визначає множину її

допустимих значень і спосіб їх подання в пам’яті комп’ютера, а

також множину допустимих операцій над величиною.

Є 5 основних типів змінних char, int, float, double i void. Тип char інтерпритується як однобайтова ціла величина від 0 до 255 або символ. Тип int таож зміна цілого типу але з областю від -32768 до +32768 і займай в памяті 2б. Типи  float і double оголошують змінні дійсного типу. float  займай в памяті 4б і займає область від -10^37 до +10^37 і doubleзаймає 8б з облюстю від -10 до +10 в 368 степенні.

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

22

Запис арифметичних виразів на мові Сі

Арифметичними виразами з двома операндами є +, -, *, / і оператор коефіцієнту %. Поділ цілих відкидає дробову частину. Вираз

x % y

повертає залишок поділу x на y, і нуль, якщо ділення відбудеться без залишку. Наприклад, рік буде високосним, якщо він кратний 4, але не 100, за винятком того, що роки кратні 400 — теж високосні. Таким чином

if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

printf("%d is a leap year\n", year);

else

printf("%d is not a leap year\n", year);

Оператор % неможливо застосувати із float та double. Напрямок округлення у випадку / і знак результату % є машинозалежним для від'ємних чисел, так само як дії у випадку втрати значності або переповнення. Оператори + та - рівні за пріоритетом, але мають менший пріоритет ніж *, / і %, які в свою чергу, поступаються унарним + та -. Арифметичні оператори діють з ліва на право.Арифметичні вирази будує користувач відповідно до умови задачі зі сталих, змінних, функцій, поєднуючи їх за певними правилами за допомогою символів операцій.

 Результатом обчислення арифметичного виразу є число.

 І. Числові вирази

         В них використовуються арифметичні та логічні операції, операції порівняння і виконуються арифметичні функції.

 Арифметичні операції: -  - зміна знаку;  наприклад: -а, -3; *, / - множення, ділення;

 \ - ділення націло;  наприклад: 10\3→3;

 MOD - знаходження остачі від ділення;  наприклад: 10 MOD 3 →1

  +, -  - додавання, віднімання.

         Для зміни природної послідовності виконання арифметичних операцій використовують круглі дужки. Інші види дужок не допускаються. Кількість відкритих і закритих дужок у виразі повинна бути однаковою. Спочатку обчислюють вирази в дужках.

   ІІ. Символьні (текстові) вирази

     Результатом обчислення є рядок. Над рядками символів можна виконувати такі операції:

 1) + , з'єднання, наприклад: “місто”  +   “   “   +   “Луцьк”  результат -  “місто Луцьк”

 2) визначення довжини рядка; 3) виділення підрядка з рядка; 4) порівняння рядків і т.д.

23

Oсновні арифметичні функції, їх застосування У програмі на мові Сі.

арифметичні функції містяться у файлі <math.h> (компілятори мови С) або у файлі <сmath> (компілятори мови С++). Аргументи x та y мають тип double, n – тип int; усі функції повертають значення типу double.

24

Логічні вирази – вирази, призначені для записування різноманітних умов.Умовні оператори забезпечують виконання чи невиконання деякого оператора або послідовності операторів в залежності від заданих умов

Умовні оператори реалізують розгалуження процесу виконання програми та дають змогу вибрати один з можливих варіантів продовження програми. Мова С має два вии умовних операторів: if та switch.

25

Операції автоматичного збільшення та зменшення на мові Сі.

У мові C++ є дві операції для збільшення і зменшення значень змінних. Унарна операція збільшення ++ (інкремент) додає одиницю до свого операнда, а унарна операція зменшення -- (декремент) віднімає одиницю. Наприклад, використання операції ++ для збільшення змінних:

if(c == '\n')

  i++;

Незвичайний аспект полягає в тому, що операції ++ і -- можна використати як префіксні (++n), так і як постфіксні (n++). Ефект в обох випадках полягає в збільшенні N. Але вираз ++n збільшує змінну n до використання її значення, у той час як n++ збільшує змінну n після того, як її значення було використано. Це означає, що використання ++n і n++ призводить до різних результатів. Якщо n = 5, то:

х = n++; // встановлює x рівним 5,

х = ++n; // встановлює x рівним 6.

В обох випадках n стає рівним 6. Операції збільшення і зменшення можна застосовувати тільки до змінної. Вираз типу х = (I + J)++ є помилковим.

У випадках, де потрібне тільки збільшення, а саме значення не використовується, як, наприклад, у

if (c == '\n')

          nl++;

то вибір префіксної або постфіксної операції довільний, але є ситуації, де потрібно використати саме ту або іншу операцію.

26

Операція присвоєння

У Сі присвоюються значення виразів. Крім простого привласнення допомогою операції =, Сі

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

1. Звичайне змінна=вираз

2. Послідовне зиінна1=....зміннаN=вираз

3. Присвоїння з одночасним виконанням операцій змінна+=вираз, змінна/=змінна+=+вираз

Приклади:

х+=1

а/=5

b&=c

y+=a*b-c*d

4. Послідовне з використанням +.-.*./

a+=b*=c/=a+b

27

Умовний вираз (операція ? ) на мові Сі

    Умовна операція ?: - єдина тернарна операція в мові Сі. Її синтаксис :

умова ? вираз_1 : вираз_2

    Принцип її роботи такий. Спочатку обчислюється вираз умови. Якщо цей вираз має ненульове значення, то обчислюється вираз_1. Результатом операції ?: в даному випадку буде значення виразу_1. Якщо вираз умови рівний нулю, то обчислюється вираз_2 і його значення буде результатом операції. В будь-якому випадку обчислюється тільки один із виразів (вираз_1 або вираз_2).

    Наприклад, дану операцію зручно використати для знаходження найбільшого з двох чисел x і y:

max=(x>y)?x:y;

    Приклад 1 :

#include<stdio.h>

void main()

{

  int points;

  printf("Введiть оцiнку [2..5]:");

  scanf("%d",&points);

  printf("%s",points>3?"Ви добре знаєте матерiал!":"Погано...");

}

    Приклад 2 :

j = (i<0) ? (-i) : (i); /* змінній j присвоюється модуль i*/

28

Вираз послідовного обчислення (операція , )

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

a=4;

b=a+5;

    можна записати так :

a=4, b=b+5;

    Операція послідовного обчислення використовується в основному в операторах циклу for()

    Для порівняння наводимо приклад з використанням операції слідування (приклад 1) та без неї (приклад 2):

    Приклад 1.

int a[10],sum,i;

/* ... */

sum=a[0];

for (i=1;i<10;i++)

sum+=a[i];

    Приклад 2.

int a[10],sum,i;

/* ... */

for (i=1,sum=a[0];i<10;sum+=a[i],i++) ;

29

Поняття про оператор на мові Сі. Структура оператора та його основні види

Всі оператори мови С можуть бути умовно розділені на наступні категорії:

- Умовні оператори, до яких відносяться оператор умови if і оператор вибору switch;

- Оператори циклу (for, while, do while);

- Оператори переходу (break, continue, return, goto);

- Інші оператори (оператор "вираз", порожній оператор).

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

Всі оператори мови С, крім складених операторів, закінчуються крапкою з комою ";".

Порожній оператор

Порожній оператор складається тільки з точки з комою. При виконанні цього оператора нічого не відбувається. Він зазвичай використовується в наступних випадках:  - В операторах do, for, while, if в рядках, коли місце оператора не потрібно, але зсинтаксису потрібно хоча б один оператор;  - При необхідності позначити фігурну дужку.  Оператор безумовного переходу Використання оператора безумовного переходу goto в практиці програмування на мові С настійно не рекомендується, так як він ускладнює розуміння програм і можливість їх модифікацій. Оператор if Формат оператора:  if (вираз) оператор;  Виконання оператора if починається з обчислення виразу.  Далі виконання здійснюється за наступною схемою:  - Якщо вираз істинний (тобто відмінно від 0), то виконується оператор.  - Якщо вираз помилково, то виконується наступний за if оператор. Оператор перемикач switch Оператор switch призначений для організації вибору з безлічі різних варіантів. Формат оператора наступний:  switch (вираз)  {[Оголошення]  :  [Case константне-вираз1]: [список-операторов1]  [Case константне-вираз2]: [список-операторов2]  :  :  [Default: [список операторів]]  }  Вираз, наступне за ключовим словом switch в круглих дужках, може бути будь-яким виразом, допустимими в мові С, значення якого повинно бути цілим.

Оператор циклу for

Оператор for - це найбільш загальний спосіб організації циклу. Він має наступний формат:  for (вираз 1; вираз 2; вираз 3) тіло  Вираз 1 зазвичай використовується для встановлення початкового значення змінних, керуючих циклом. Вираз 2 - це вираз, що визначає умову, за якої тілоциклу буде виконуватися. Вираз 3 визначає зміна змінних, керуючих циклом після кожного виконання тіла циклу.  Схема виконання оператора for:  1. Обчислюється вираз 1.  2. Обчислюється вираз 2.  3. Якщо значення виразу 2 відмінно від нуля (істина), виконується тіло циклу, обчислюється вираз 3 і здійснюється перехід до пункту 2, якщо вираз 2 дорівнює нулю (брехня), то управління передається на оператор, наступний за операторомfor.

Оператор циклу з передумовою while

Оператор циклу while називається циклом з передумовою і має наступний формат: while (вираз) тіло;  В якості виразу допускається використовувати будь-який вираз мови Сі, а як тіла будь-який оператор, в тому числі порожній або складової. Схема виконання оператора while наступна:  1. Обчислюється вираз.  2. Якщо вираз помилково, то виконання оператора while закінчується і виконується наступний по порядку оператор. Якщо вираз істинний, то виконується тіло оператора while.  3. Процес повторюється з пункту 1.  Оператор циклу виду  for (вираз-1; вираз-2; вираз-3) тіло;  може бути замінений оператором while наступним чином:  вираз-1;  while (вираз-2)  {  тіло  вираз-3;  }

Оператор циклу з післяумовою do - while

Оператор циклу do while називається оператором циклу з постусловіем і використовується в тих випадках, коли необхідно виконати тіло циклу хоча б один раз. Формат оператора має наступний вигляд:  do тіло while (вираз);  Схема виконання оператора do while:  1. Виконується тіло циклу (яке може бути складеним оператором).  2. Обчислюється вираз.  3. Якщо вираз помилково, то виконання оператора do while закінчується і виконується наступний по порядку оператор. Якщо вираз істинний, то виконання оператора триває з пункту 1.  Щоб перервати виконання циклу до того, як умова стане хибним, можна використовувати оператор break.