Засоби протидії комп’ютерним вірусам 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Засоби протидії комп’ютерним вірусам



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

За принципом дії виділяють наступні основні типи антивірусних програм:

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

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

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

Ефективними антивірусними програмними засобами є:

Anti-Viral Toolkit Pro (www.avp.ru);

Dr. Solomon Anti-Virus (www.drsolomon.com);

F-Prot for Windows (www.percomp.com);

Inoculan Anti-Virus (www.microbasic.de);

McAfee Virusscan (www.nai.com);

Norman Virus Control (NVC) (www.norman.com);

Norton AntiVirus (www.symantec.com);

Panda Anti-Virus (www.omegasee.com);

Sophos Sweep Win 95/98 (www.sophos.com);

ThunderByte Anti-Virus Utilities (www.authentax.com).

 


Тема 9. Розв’язання задач за допомогою

Персонального комп’ютера

 

Лекція 14

 

Для того, щоб вирішити яку-або задачу на ЕОМ, необхідно провести деяку підготовчу роботу. Наприклад, вибрати один з можливих алгоритмів рішення, однозначно його записати, яким чином-те образом зробити цей алгоритм доступним ЕОМ. Але навіть якщо і є ЕОМ, це ще не значить, що задача з її допомогою вирішена. Що же необхідно виконати для того, щоб таке рішення стало можливим?

Певно, для цього в першу чергу необхідно з’ясувати, а яку саме ми хочемо вирішити задачу? Наприклад, звернемося до квадратного рівняння. Якщо наша задача полягає в рішенні одного такого рівняння – це одне діло, а якщо же нам необхідно вирішити 20 або 1000 таких рівнянь і коефіцієнти всіх цих рівнянь вже відомі – інше. Звичайно, можна звести рішення цієї задачі до попереднього випадку. Але таке рішення, незважаючи на його очевидність, нас може не влаштувати хоча б тому, що всі корені повинні бути виведені в вигляді деякої єдиної таблиці або по яким-або іншим міркуванням необхідно вирішувати цю задачу не шляхом 1000-кратного запуску ЕОМ на рішення, а шляхом одного запуску, але послідовного рішення всіх 1000 рівнянь при одному запуску. Відмінність мов б не істотна, але воно повинно бути врахована в алгоритмі рішення задачі.

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

А) змістовне порушення задачі. Тут необхідно на загальнодоступному рівні викласти суть задачі і вимоги, що накладаються на рішення цієї задачі;

Б) формалізоване (математичне) порушення задачі. Тут змістовне порушення задачі перекладається на мову математичних формул.

Звичайно пункт а виконується особою, зацікавленим в рішенні задачі, так званим замовником, в той час як пункт б виконують фахівці-математики. Вже відомо, що математичний запис – це завжди конкретно, лаконічно і зрозуміло. Але як видно з квадратного рівняння (1.1), навіть математичний запис задачі,що вирішується ще не визначає однозначно алгоритм її рішення. Тому наступний етап полягає в виборі засобу рішення задачі. На цьому етапі необхідно пірняти наявні засоби рішення задач того класу, до якого відноситься задача,що вирішується; оцінити ефективність кожного засобу, перевірити доступність всіх необхідних для рішення даних. Тільки після вибору засобу рішення задачі можна приступати до наступного етапу – етапу алгоритмізації (укладанню алгоритму) рішення задачі. Тут необхідно представити алгоритм в спеціальному вигляді, наприклад, в вигляді блок-схеми або з допомогою псевдокоду. Після цього можна розпочати етап програмування. На даному етапі може зажадатися аналіз алгоритму або яких-те його частин. Після укладання програми її вводять в ЕОМ. Це може здійснюватися або безпосередньо за терміналом ЕОМ, або з заздалегідь підготованих носіїв, на що була перенесена програма. В якості таких носіїв можуть використовуватися перфострічка, магнітна стрічка або магнітний диск. В останній час найбільш часто використовуються магнітні диски або дискети. Цей процес називається етапом підготовки (препарації) програми до виконання.

З раніше сказаного слідує, що виконувати програму треба багаторазово в процесі проведення етапу тестування і відпрацювання. При виконанні цього етапу особливо багато уваги приділяється укладанню тестових прикладів. Ще Раз підкреслимо, що тестовий приклад включає вхідні дані і результати рішення задачі, що обчислюються без застосування тестуємої програми. Бажано в тестовий приклад включати і найбільш важливі проміжні дані. Вони допоможуть при пошуку місця помилки в програмі. Для цього в програмі передбачається висновок на печатку значень проміжних даних під час виконання програми, це робиться з допомогою так званої налагоджувальної печатки. Налагоджувальну печатку слідує ретельно проектувати, бо, з одного боку, проміжні дані допомагають знаходити помилки, але з друга – надмірна кількість проміжних результатів ускладнює розуміння ходу рішення задачі. Слідує відзначити: для того, щоб легше зрозуміти, як працює програма, необхідно проміжні дані постачати деякими коментарями при їхньому висновку.

І останній етап – це виконання програми і аналіз отриманих результатів.

З всіх перерахованих етапів в нинішньому посібникові розглянуті тільки етапи алгоритмізації задачі, тестувані і відпрацювання алгоритму. Інші етапи складають предмет таких дисциплін, як "Технологія програмування", "Проектування машинної обробки", "Операційні системи", "Програмування для ЕОМ".

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

 


Лекція 15

 

 

Алгоритми

В своєму повсякденному житті людина використає безліч правила, сукупностей правила і дій, завдяки яким вона вирішує задач, що виникають перед нею. Це стосується, наприклад, правил настанови дзвінка будильника на необхідну годину, правил переходу вулиці, правил визначення значень функцій по таблицям Брадиса, правил розв’язання рівнянь другого ступеня і багатьох інших задач. Причому порушення подібних правил або послідовності їх виконання може призвести до невірному результату або трагічному результату. Послідовності названих вище правив інколи називають алгоритмами. В повсякденному житті цей термін використовується рідко, значно частіше він застосовується в математиці. З арифметики відомі алгоритми визначення найбільшого загального дільника і найменшого загального знаменника, з шкільної алгебри – формули Вієтта розв’язання квадратних рівнянь (формула – це компактний запис послідовності виконання арифметичних дій), з лінійної алгебри – правило Краммера і засіб Гаусса рішення систем лінійних алгебраїчних рівнянь і т. п. Або згадаємо, як ми в початкових класах вирішували задачі: спочатку задавали собі питання "скільки?", а після цього на нього відповідали. Вже тоді ми починали навчатися будувати алгоритми, не підозрюючи про таке хитре слово. А слово це пiшло від імені видатного узбецького ученого IХ ст. Мухамеда Аль-Хорезма, що, в частковості, виклав правила виконання арифметичних дій. З течією часу "Аль-Хорезм" трансформувалося в алгоритм (алгорифм).

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

Особливо уважно і докладно записуються алгоритми, коли потрібне доручити виконання розрахунків комусь іншому (менш досвідченому в правилах розв’язання задачі) або ЕОМ.

ЕОМ в початку їхнього розвитку називалися електронними цифровими обчислювальними машинами (ЭЦВМ). В самій назві підкреслювалося, що ці машини можуть працювати тільки з цифрами, числами. ЕОМ виконує тільки арифметичні і логічні операції (додавання, віднімання, множення, ділення, порівняння чисел і деякі інші). Таким Чином, для того, щоб "доручити" рішення задачі ЕОМ, необхідно алгоритми розписувати до рівня арифметичних і логічних операцій (дискретність алгоритму).

При вивченні правив рішення квадратних рівнянь зважує на той факт, що формули Вієтта залишаються справедливими (тобто можуть бути використані) для будь-якого квадратного тричлена, якщо тільки дискримінант цього тричлена невід’ємна величина. Що змінюється в рішенні різноманітних таких рівнянь? Очевидно, коефіцієнти при невідомих, що підставляються в формули Вієтта замість літер а, в і з, тобто ці формули можуть застосовуватися масово незалежно від конкретних значень коефіцієнтів рівняння. Таким Чином, цей алгоритм не залежить від конкретного рівняння – він записаний в загальному вигляді.

В загальному вигляді квадратне рівняння записується як

 

ax 2 +вx+c = 0, (1.1)

формула коренів – (1.2)

 

Для того, щоб з загального запису (1.1) отримати конкретне рівняння, необхідно замінити літери а, в і з реальними коефіцієнтами – числами. Аналогічно слідує надійти і з (1.2). Конкретні значення коефіцієнтів а, в і с прийнято називати похідними даними задачі. Міняючи вхідні дані, будемо одержувати нові рівняння, а їхні рішення визначаються по одному і тому же алгоритму (1.2) (масовість алгоритму).

Виконавши обчислення по (1.2), отримаємо значення коренів х 1 і х 2 рівняння, що були невідомі, але можна сказати, що заради отримання їхніх значень і виконувалися обчислення. Значення х 1 і х 2 називають результатами рішення задачі. Крім того, в (1.2) використовуються вхідні дані і деякі константи, самі же формули визначають правила перетворення вхідних даних (що можуть змінюватися – варіюватися) в цей результат. Причому всі дії висловлюються або можуть бути висловлені елементарними арифметичними і логічними операціями (перевірка в 2 – 4 ас > 0?). Формула (1.2) задає цілком певні дії і їхня послідовність (це слідує з математичних правив записи формул і обчислень по них). Очевидно, що кожний, хто знаком з правилами виконання арифметичних операцій, буде їх розуміти і виконувати цілком певним чином (визначеність, або детермінованість алгоритму).

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

a (хх 1) (хх 2) = 0, (1.3)

Де х 1 і х 2 корені рівняння (1.1). Звідси після нескладних перетворень слідує, що

b/а = – (х 1+ х 2), с / а = х 1 х 2. (1.4)

Якщо вдасться знайти два числа, що, будучи підставлені в (1.4) замість х 1 і х 2, будуть задовольняти цим співвідношенням, те рівняння (1.1) також буде вирішене. Але х1 і х2 тепер вже можна визначати не по (1.2), а засобом підбору по (1.4) або яким-або іншим засобом. Зрозуміло, що алгоритм рішення поставленої задачі буде вже іншим. І стосовно до кожного алгоритму повинно дотримуватися вимога однозначністі запису. Іншим прикладом на цю тему може служити задача рішення системи лінійних алгебраїчних рівнянь з квадратною матрицею. Така система може бути вирішена або по правилу Краммера, або з допомогою засобу Гаусса, а алгоритми цих двох засобів істотно відрізняються.

З неоднозначністі алгоритмів рішення задач слідує той факт, що для рішення задачі по різноманітним алгоритмам може знадобитися різноманітний час рішення задачі. Той алгоритм, що дозволяє більш швидко вирішити задачу, буде більш ефективним (ефективність алгоритму). В залежності від класів задач,що вирішуються до ефективності алгоритмів подаються різноманітні вимоги. Так, наприклад, якщо Ви вирішили злітати в Карпати або на Кавказ на зимові канікули і прийшли в агентство Аерофлота, щоб купити квиток на літак, те Вам, можливо, прийдеться почекати хвилин 5, доки касир буде "чаклувати " зі своїм терміналом (пультом зв’язку з ЕОМ), щоб забронювати і виписати квиток. Таке чекання неприємно, але не катастрофічно – невідомо, скільки Ви вже простояли в черзі, перш ніж надалася можливість поспілкуватися з касиром, тобто 5 хв. для вас не так вже істотні, тому з деякої натяжкою можна вважати, що алгоритм резервування квитків на літаки ефективний. Зовсім інше діло, якщо аналізується ефективність роботи алгоритму, керуючого роботою космічного апарату. Якщо до моменту отримання відповіді на питання "Що робити?" Мине 5 хв., те не тяжко уявити собі, що наш апарат може полетіти цілком не туди, куди йому слідувало б летіти, а, можливо, він і зовсім вже літати не зможе або відповідь їм так і не буде отримана.

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

Тепер можна підвести деякі підсумки. Розглянуті поняття алгоритму і його властивості.

"Алгоритм – цей точний припис, визначальний обчислювальний процес, ведучий від варіюваних початкових даних до цього результату" (ДГСТ 19781-74).

Алгоритм повинен володіти наступними властивостями:

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

Дискретність – подання алгоритму в вигляді послідовності кроків (елементарних операцій), здійсненність яких виконавцем (людиною або ЕОМ) не викликає сумнівів;

Масовість – придатність алгоритму для рішення будь-яких задач даного класу;

Ефективність – можливість отримання рішення задачі в прийнятні терміни;

Результативність – конечність алгоритму, тобто властивість призводити до цього результату за кінцеве число елементарних операцій в усіх тих випадках, для яких він створений.

Для чого створюються алгоритми?

Для того, щоб вирішувати з допомогою ЕОМ (а можливо, і без них) поставлені задачі.

Яким Чином працюють алгоритми?

Алгоритми переробляють (перетворюють) початкові дані в ці результати. Таким Чином, дані в алгоритмі діляться на початкові (тобто такі, що надходять (вводяться) в алгоритм і відомі до почала роботи алгоритмів) і результати (тобто такі, що виводяться з алгоритму). Окрім цих виглядів даних, в алгоритмі можуть використовуватися і дані, створювані в процесі роботи алгоритму, так звані проміжні (робітничі) дані. Наприклад, дискримінант (D) в алгоритмі рішення квадратного рівняння.

Після того, як складений алгоритм рішення задачі (припускається рішення задачі на ЕОМ), необхідно потурбуватися про підготовку введення алгоритму в ЕОМ. Звичайно алгоритм записується в вигляді, зручному для його розуміння людиною, а це не завжди прийнято для введення в ЕОМ. Для цих мети служать мови програмування. Алгоритм, записаний на такій мові, називається програмою, а процес написання програми – програмуванням. Власне програмування – це процес перекладу алгоритму з однієї системи запису в іншу. Часто цей процес називається кодуванням. Очевидно, що етап алгоритмізації вимагає більшої напруги інтелектуальних сил, ніж кодування.

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

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

Після того, як встановлений факт наявності помилки в програмі (алгоритмі), починається процес відпрацювання.

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

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

Результати досліджень показують, що на тестування і відпрацювання уходить від 30 до 70% від загального часу розробки програми. Пам’ятати про це при плануванні робіт по створенню програми.
Тема 11. Текстовий процесор Word XP

 

Лекція 16

 

 



Поделиться:


Последнее изменение этой страницы: 2016-04-19; просмотров: 278; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.217.208.72 (0.026 с.)