Вычисление значения функции при помощи полинома Лагранжа

Тип работы:
Курсовая
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Оглавление

  • Задание курсовой работы
  • Вычислительные методы
  • Описание диалогового взаимодействия пользователя с программой
  • Текст программы на языке Pascal с комментариями
    • Модуль для ввода и вывода данных
    • Модуль для основных действий
    • Главная программа
  • Общие принципы работы программы
  • Контрольный пример
  • Компьютерные вирусы. Классификация вирусов. Антивирусные средства
  • Выводы

Задание курсовой работы

Найти значения функции y (x) в точках х=1. 52, 1. 55, 1. 58, 1. 61, 1. 67, если дана таблица ее значений в точках:

x

1. 50

1. 54

1. 56

1. 60

1. 63

1. 70

y

3. 853

3. 924

3. 950

4. 000

4. 037

4. 135

Изобразить график функции с отмеченными на нем точками

При этом программа должна иметь модульную структуру, быть оформлена в виде пользовательских (библиотечных) модулей, иметь графическую заставку, обеспечивать взаимодействие с пользователем через систему меню, предоставить возможность выбора пользователем подкоренного выражения и степеней функции, обеспечивать возможность ввода исходных данных, как с клавиатуры, так и из текстового файла, осуществлять вывод результатов на экран дисплея или в файл в виде таблиц с использованием кодов псевдографики, предусмотреть графическое отображение решения задачи.

Вычислительные методы

В данной курсовой работе для вычисления значения функции в заданных точках используется интерполяционный полином Лагранжа, который имеет вид:

Составить программу вычисления интерполяционного полинома Лагранжа, который имеет вид:

,

где xi и yi — значения функции, заданной таблично:

x

x0

x1

xn

y

y0

y1

yn

Описание диалогового взаимодействия пользователя с программой

Для удобного пользования данной программой в ней предусмотрена система меню, состоящая из 8 пунктов. При вводе номера одного из пунктов, вызывается подпрограмма, находящаяся в одном из модулей и соответствующая выбранному действию.

Текст программы на языке Pascal с комментариями

Модуль для ввода и вывода данных

Модуль «inout» содержит в себе все подпрограммы для организации ввода и вывода данных на экран и записи их в файлы. Данный модуль использует стандартные модули «сrt» и «graph».

unit inout;

interface

uses graph, crt;

type mas=array[1. 2] of real; -массив для хранения пары чисел х и у (х)

fm=file of mas; - файл для хранения чисел

procedure vvodklav (var f, n: fm);

procedure prosmotr (var f, n: fm);

procedure izmenenie (var f, n: fm);

procedure readfile (var f, n: fm);

procedure out (var f, n: fm; var t: text);

procedure zastavka;

implementation

Процедура vvodklav обеспечивает ввод данных с клавиатуры. У пользователя есть возможно выбрать вводить ли данные для расчета или те значения х, для которых будет считаться значение у (х). Процедура имеет два параметра — два файла, в которых будут храниться данные.

procedure vvodklav;

var c, i: integer; a: mas; b: real; z: char;

begin

window (20,5,60,20);

textbackground (7);

textcolor (0);

clrscr;

writeln (`Ввести исходные данные? y/n');

readln (z);

if z='y' then begin

writeln ('Ввод исходных данных');

writeln ('Сколько значений?');

readln (c);

rewrite (f);

for i: =1 to c do begin

writeln ('Введите x', i);

readln (a[1]);

writeln ('Введите y', i);

readln (a[2]);

write (f, a);

end;

close (f);

end;

window (20,5,60,20);

textbackground (7);

textcolor (0);

clrscr;

writeln ('Ввести данные для расчета? y/n');

readln (z);

if z='y' then begin

writeln ('Ввод данных для расчета');

writeln ('Сколько значений?');

readln (c);

rewrite (n);

for i: =1 to c do begin

writeln ('Введите x');

readln (a[1]);

a[2]: =0;

write (n, a);

end;

close (n);

end;

window (1,1,80,25);

textbackground (black);

end;

Процедура prosmotr выводит на экран значения функции, заданной таблично, и те значения х, для которых будут вычисляться значения у (х). У этой процедуры два параметра — файлы с данными.

procedure prosmotr;

var i: integer; a: mas; b: real;

begin

window (1,1,80,25);

textbackground (7);

textcolor (black);

clrscr;

reset (f);

writeln (' Данные для расчета');

writeln;

write ('X');

for i: =1 to filesize (f) do begin

read (f, a);

write (' ', a[1]: 5:2);

end;

close (f); reset (f);

writeln;

writeln;

write ('Y');

for i: =1 to filesize (f) do begin

read (f, a);

write (' ', a[2]: 5:2);

end;

close (f);

writeln;

writeln;

writeln;

reset (n);

write ('Считать для X=');

for i: =1 to filesize (n) do begin

read (n, a);

write (a[1]: 5:2,' ');

end;

close (n);

readln;

end;

Процедура izmenenie дает пользователю возможность изменить данные для расчета или те значения х, для которых будут вычислены значения у (х). Изменение происходит по номеру числа. Параметрами процедуры являются файлы с исходными данными.

procedure izmenenie;

var a: char; m: mas; c: integer;b:real;

begin

window (20,5,60,20);

textbackground (7);

textcolor (0);

clrscr;

writeln ('Изменить исходные данные? y/n');

readln (a);

if a='y' then begin

reset (f);

writeln ('Введите номер числа');

readln (c);

seek (f, c-1);

read (f, m);

writeln ('Изменить x или y?');

readln (a);

writeln ('Введите число');

if a='x' then readln (m[1]) else readln (m[2]);

seek (f, filepos (f)-1);

write (f, m);

close (f);

end;

window (20,5,60,20);

textbackground (7);

textcolor (0);

clrscr;

reset (n);

writeln ('Изменить данные для расчета? y/n');

readln (a);

if a='y' then begin

reset (n);

writeln ('Введите номер числа');

readln (c);

seek (n, c-1);

read (n, m);

writeln ('Введите новое значение');

readln (m[1]);

seek (n, filepos (n)-1);

write (n, m);

close (n);

end;

window (1,1,80,25);

textbackground (black);

end;

Процедура readfile дает пользователю возможность ввести данные из текстового файла, содержащего данные для расчета в первых двух строках и значения х в третьей. Считывание данных из файла происходит при задании имени файла, содержащего вышеуказанные значения. Переписывание данных происходит при помощи динамического массива (это удобно, так как количество чисел заранее не известно). Параметры данной процедуры — файлы, содержащие основные данные.

procedure readfile;

type m=array[1. 1] of real;

m2=array[1. 1] of real;

var d: text; s: string[25];a:^m; c: ^m2; b: real; k, i: integer; p: mas;

begin

window (20,5,60,20);

textbackground (7);

textcolor (0);

clrscr;

writeln ('Введите имя файла');

readln (s);

s: =s+'. pas';

assign (d, s); - связывание логического файла с указанным физическим файлом

reset (d);

k: =0;

while not seekeoln (d) do begin

read (d, b);

k: =k+1;

end;

close (d);

getmem (a, 6*k); getmem (c, 6*k);

reset (d);

for i: =1 to k do read (d, a^[i]);

readln (d);

for i:= 1 to k do read (d, c^[i]);

rewrite (f);

for i: =1 to k do begin

p[1]: =a^[i];

p[2]: =c^[i];

write (f, p);

end;

close (f);

freemem (c, 6*k); freemem (a, 6*k); k: =0;

readln (d);

while not seekeoln (d) do begin read (d, b); k: =k+1; end;

close (d);

getmem (a, k*6);

reset (d);

readln (d); readln (d);

for i: =1 to k do read (d, a^[i]);

rewrite (n);

for i: =1 to k do begin

p[1]: =a^[i];

p[2]: =0;

write (n, p);

end;

close (n);

freemem (a, 6*k);

close (d);

end;

Процедура out аналогична процедуре prosmotr, но она, в отличие от последней, выводит на экран как заданные значения х, так и вычисленные значения у (х). Кроме того, данная процедура записывает в новый текстовый файл значения х и вычисленные для них значения у. Если значения у (х) еще не были вычислены, на их месте стоят нули. Процедура имеет входные параметры — два файла, содержащие все данные и текстовый файл для удобного просмотра результатов.

procedure out;

var i: integer; a: mas;

begin

window (1,1,80,25);

textbackground (7);

textcolor (black);

clrscr;

reset (f);

writeln (' Данные для расчета');

writeln;

write ('X');

for i: =1 to filesize (f) do begin

read (f, a);

write (' ', a[1]: 5:2);

end;

close (f); reset (f);

writeln;

writeln;

write ('Y');

for i: =1 to filesize (f) do begin

read (f, a);

write (' ', a[2]: 5:2);

end;

close (f);

writeln;

writeln;

writeln;

reset (n); rewrite (t);

writeln (' Resultat');

write ('X'); write (t,'X');

for i: =1 to filesize (n) do begin

read (n, a);

write (' ', a[1]: 5:2); write (t,' '); write (t, a[1]: 5:2);

end;

writeln; writeln; writeln (t);

close (n); reset (n);

write ('Y'); write (t,'Y');

for i: =1 to filesize (n) do begin

read (n, a);

write (' ', a[2]: 5:2); write (t,' '); write (t, a[2]: 5:2);

end;

close (n); close (t);

readln;

end;

Процедура zastavka использует стандартный модуль «graph» и при помощи графического режима выводит на экран сообщение о том, что данная работа является курсовой, фамилию и группу студента, и фамилию преподавателя. Эта процедура не имеет параметров и появляется один раз при запуске программы.

procedure zastavka;

var gd, gm: integer;

begin;

gd: =detect;

initgraph (gd, gm,'');

setbkcolor (lightgray);

setcolor (red);

settextstyle (0,0,3);

outtextxy (160,180,'Yearly project');

delay (60 000);

delay (20 000);

settextstyle (0,0,1);

outtextxy (300,210,'Студент Бусыгина Нина, гр. Н202');

outtextxy (300,223,'Преподователь Лазарева Т. И. ');

delay (60 000);

delay (60 000);

closegraph;

end;

end.

Модуль для основных действий

Модуль count cодержит процедуры для выполнения основного задания — вычисления значения функции у (х), заданной таблично при помощи полинома Лагранжа и построения графика функции. Модуль использует стандартные модули «crt» и «graph», а также библиотечный модуль inout, в котором содержатся описания массива для хранения значений функции и файла для хранения данных.

unit count;

interface

uses graph, inout;

type m=array[1. 1] of real;

pm=^m;

z=array[1. 2] of pm;

procedure schet (var f: fm; var y: real; x: real);

procedure result (var f, n: fm);

procedure grafik (var f, n: fm);

implementation

Процедура schet используется для вычисления значения у (х) для одного конкретного значения х, которое, наряду с данными для вычисления, передается этой процедуре. Вычисленное значение у (х) передается при помощи механизма передачи параметров. При вычислении используется полином Лагранжа, при этом возникает необходимость обращения по номерам к данным для вычисления. Поэтому все значения до начала вычислений заносятся в динамический массив.

procedure schet;

var i, j: integer; m: z; c, u, d: real; w: mas;

begin

reset (f);

getmem (m[1], 6*filesize (f)); getmem (m[2], 6*filesize (f));

for i:= 1 to filesize (f) do begin

read (f, w);

m[1]^[i]: =w[1];

m[2]^[i]: =w[2];

end;

y: =0;

for i:= 1 to filesize (f) do begin-вычисление у (х)по формуле полинома Лагранжа

u: =1; d: =1; c: =1;

for j: =1 to filesize (f) do

if i< >j then begin

u: =u*(x-m[1]^[j]);

d: =d*(m[1]^[i]-m[1]^[j]);

end;

c: =(u/d);

y: =y+c*m[2]^[i];

end;

freemem (m[1], 6*filesize (f)); freemem (m[2], 6*filesize (f));

close (f);

end;

Процедура result имеет своими параметрами оба файла — для хранения данных для вычисления и файл со значениями х, для которых и производится вычисление. Эта процедура считает значение у (х) и записывает его в соответствующий файл. Именно эта процедура используется в главной программе. Предыдущая является вспомогательной.

procedure result;

var i: integer; m: mas;

begin

reset (n);

for i: =1 to filesize (n) do begin

read (n, m);

schet (f, m[2], m[1]);

seek (n, filepos (n)-1);

write (n, m);

end;

close (n);

end;

Процедура grafik использует два файла с данными. При помощи значений, содержащихся в этих файлах, она строит график функции, оси координат в графическом режиме. Также отмечаются точки, заданные изначально и вычисленные в процессе программы, и некоторые значения по осям.

программа функция полином лагранж

procedure grafik;

var m: z; i, j, k, gd, gm, cx, cy, xo, yo: integer; koefy, koefx: integer;

buf1,buf2,q, p: real; w, e: mas; s: string[7];

begin

reset (f); reset (n);

k: =filesize (f)+filesize (n);

getmem (m[1], 6*k); getmem (m[2], 6*k);

for i:= 1 to filesize (f) do begin

read (f, w);

m[1]^[i]: =w[1];

m[2]^[i]: =w[2];

end;

for i:= filesize (f)+1 to k do begin

read (n, w);

m[1]^[i]: =w[1];

m[2]^[i]: =w[2];

end;

for i: =1 to k-1 do

for j: =i+1 to k do

if abs (m[1]^[i])> abs (m[1]^[j]) then begin

buf1: =m[1]^[i];

buf2: =m[2]^[i];

m[1]^[i]: =m[1]^[j];

m[2]^[i]: =m[2]^[j];

m[1]^[j]: =buf1;

m[2]^[j]: =buf2;

end;

q: =m[2]^[1]; p: =m[2]^[1]; xo: =0; yo: =0;

for i: =1 to k do begin —

определение количества отрицательных чисел для сохранения правильности расстановки осей

if m[1]^[i]<0 then xo: =xo+1;

if m[2]^[i]<0 then yo: =yo+1;

if m[2]^[i]>q then q: =m[2]^[i];

if m[2]^[i]<p then p: =m[2]^[i];

end;

seek (f, 0); read (f, e);

close (f); close (n);

koefy: =round (400/(q-p)); -определение коэффициента по осям

koefx: =round (550/(m[1]^[k]-m[1]^[1]));

cx: =40+xo*koefx; -определение центра координат

cy: =450-yo*koefy;

gd: =detect;

initgraph (gd, gm,'');

setcolor (red);

line (40,cy, 640, cy); {os' x}

line (cx, 450, cx, 0); {os' y}

line (640,cy, 620, cy-2);

line (640,cy, 620, cy+2);

line (cx, 0, cx-2,20);

line (cx, 0, cx+2,20);

setcolor (white);

setlinestyle (0,0,3);

moveto (cx+10+round ((m[1]^[1]-m[1]^[1])*koefx), cy-10-round ((m[2]^[1]-

p)*koefy));

for i: =2 to k do lineto (cx+10+round ((m[1]^[i]-m[1]^[1])*koefx), cy-10-

round ((m[2]^[i]-p)*koefy)); -рисование графика

moveto (cx, cy);

setlinestyle (0,0,1);

i: =1;

while i<k do begin

line (cx+10+round ((m[1]^[i]-m[1]^[1])*koefx), cy-2,cx+10+round ((m[1]^[i]-

m[1]^[1])*koefx), cy+2);

str (m[1]^[i]: 4:2,s);

outtextxy (cx+10+round ((m[1]^[i]-m[1]^[1])*koefx)-8,cy+10,s);

i: =i+3;

end;

i: =1;

while i<k do begin

line (cx-2,cy-10-round ((m[2]^[i]-p)*koefy), cx+2,cy-10-round ((m[2]^[i]-

p)*koefy));

str (m[2]^[i]: 4:2,s);

outtextxy (cx-35,cy-10-round ((m[2]^[i]-p)*koefy), s);

i: =i+3;

end;

reset (f);

setcolor (yellow);

setfillstyle (1,yellow);

for i:= 1 to filesize (f) do begin

read (f, w);

fillellipse (cx+10+round ((w[1]-m[1]^[1])*koefx), cy-10-round ((w[2]-

p)*koefy), 3,3);

end;

close (f);

reset (n);

setcolor (red);

setfillstyle (1,red);

for i:= 1 to filesize (n) do begin

read (n, w);

fillellipse (cx+10+round ((w[1]-m[1]^[1])*koefx), cy-10-round ((w[2]-

p)*koefy), 2,2);

end;

close (n);

moveto (cx+450,cy-40);

fillellipse (getx, gety, 2,2);

outtextxy (getx+5,gety-2,'-вычислено'); -изображение легенды

setcolor (yellow);

setfillstyle (1,yellow);

fillellipse (cx+450,cy-20,2,2);

outtextxy (getx+5,gety+18,'-дано');

readln;

closegraph;

end;

end.

Главная программа

Из главной программы идет обращение ко всем процедурам, которые отвечают за реализацию действий, описанных в соответствующих пунктах меню.

Program main;

uses crt, graph, inout, count;

var f, n: fm; a: char; c: integer; t: text; y: real;

begin

assign (f,'ish. pas');

assign (n,'schet. pas');

assign (t,'result. pas');

zastavka;

repeat

window (1,1,80,25);

textbackground (0);

clrscr;

window (20,5,60,20);

textbackground (7);

textcolor (0);

clrscr;

writeln;

writeln (' 1. Ввести данные вручную');

writeln (' 2. Считать из файла');

writeln (' 3. Просмотр данных');

writeln (' 4. Изменить данные');

writeln (' 5. Выполнить расчет');

writeln (' 6. Показать график');

writeln (' 7. Показать результат и записать в файл');

writeln (' 8. Выход');

writeln (' Выберите пункт меню');

readln (c);

case c of

1: vvodklav (f, n);

2: readfile (f, n);

3: prosmotr (f, n);

4: izmenenie (f, n);

5: result (f, n);

6: grafik (f, n);

7: out (f, n, t);

8: halt;

end;

until c=8;

readkey;

end.

Общие принципы работы программы

Данная программа предлагает пользователю ввести данные вручную или из файла, имя которого указывает сам пользователь. Данные можно корректировать, выбрав соответствующий пункт меню. После этого пользователь может просмотреть начальные данные. Вычисление происходит при выборе пункта 5 в меню программы. Просмотр вычисленных данных может быть произведен при помощи 7-го пункта меню программы. При выполнении этого пункта происходит также запись вычислений в текстовый файл `result. pas'. Пункт 6-ой переводит экран в графический режим и выводит изображение графика функции, заданной таблично, с отмеченными на нем точками. Пункт 8 осуществляет выход из программы.

Контрольный пример

Функция задана значениями:

x

1. 50

1. 54

1. 56

1. 60

1. 63

1. 70

y

3. 853

3. 924

3. 950

4. 000

4. 037

4. 135

Вычисления проводятся для х=1. 51 и х=1. 69

Результат вычислений:

Х

1. 51

1. 69

У

3. 88

4. 12

Сравнивая полученные значения с заданными, мы видим, что они попадают в нужный интервал (при 1. 50<X<1. 54 3. 86<Y<3. 92, а при 1. 63<X<1. 70 4. 04<Y<4. 14). То есть можно сделать вывод, что программа работает правильно.

Компьютерные вирусы. Классификация вирусов. Антивирусные средства

Компьютерный вирус -- это специальная программа, Способная самопроизвольно присоединяться к другим программам и при запуске последних выполнять различные нежелательные действия: порчу файлов и каталогов; искажение результатов вычислений; засорение или стирание памяти; создание помех в работе компьютера. Наличие вирусов проявляется в разных ситуациях.

1. Некоторые программы перестают работать или начинают работать некорректно.

2. На экран выводятся посторонние сообщения, сигналы и другие эффекты.

3. Работа компьютера существенно замедляется.

4. Структура некоторых файлов оказывается испорченной.

Имеются несколько признаков классификации существующих вирусов:

· по среде обитания;

· по области поражения;

· по особенности алгоритма;

· по способу заражения;

· по деструктивным возможностям.

По среде обитания различают файловые, загрузочные, макро- и сетевые вирусы.

Файловые вирусы -- наиболее распространенный тип вирусов. Эти вирусы внедряются в выполняемые файлы, создают файлы-спутники (companion-вирусы) или используют особенности организации файловой системы (link-вирусы).

Загрузочные вирусы записывают себя в загрузочный сектор диска или в сектор системного загрузчика жесткого диска. Начинают работу при загрузке компьютера и обычно становятся резидентными.

Макровирусы заражают файлы широко используемых пакетов обработки данных. Эти вирусы представляют собой программы, написанные на встроенных в эти пакеты языках программирования. Наибольшее распространение получили макровирусы для приложений Microsoft Office.

Сетевые вирусы используют для своего распространения протоколы или команды компьютерных сетей и электронной почты. Основным принципом работы сетевого вируса является возможность самостоятельно передать свой код на удаленный сервер или рабочую станцию. Полноценные компьютерные вирусы при этом обладают возможностью запустить на удаленном компьютере свой код на выполнение.

На практике существуют разнообразные сочетания вирусов -- например, файлово-загрузочные вирусы, заражающие как файлы, так и загрузочные секторы дисков, или сетевые макровирусы, которые заражают редактируемые документы и рассылают свои копии по электронной почте.

Как правило, каждый вирус заражает файлы одной или нескольких ОС. Многие загрузочные вирусы такжеориентированы на конкретные форматы расположения системных данных в загрузочных секторах дисков. По особенностям алгоритма выделяют резидентные; вирусы, стелс-вирусы, полиморфные и др. Резидентные вирусы способны оставлять свои копии в ОП, перехватывать обработку событий (например, обращение к файлам или дискам) и вызывать при этом процедуры заражения объектов (файлов или секторов). Эти вирусы активны в памяти не только в момент работы зараженной программы, но и после. Резидентные копии таких вирусов жизнеспособны до перезагрузки ОС, даже если на диске уничтожены все зараженные файлы. Если резидентный вирус является также загрузочным и активизируется при загрузке ОС, то даже форматирование диска при наличии в памяти этого вируса его не удаляет.

К разновидности резидентных вирусов следует отнести также макровирусы, поскольку они постоянно присутствуют в памяти компьютера во время работы зараженного редактора.

Стелс-алгоритмы позволяют вирусам полностью или частично скрыть свое присутствие. Наиболее распространенным стелс-алгоритмом является перехват запросов ОС на чтение/запись зараженных объектов. Стелс-вирусы при этом либо временно лечат эти объекты, либо подставляют вместо себя незараженные участки информации. Частично к стелс-вирусам относят небольшую группу макровирусов, хранящих свой основной код не в макросах, а в других областях документа -- в его переменных или в Auto-text.

Полиморфность (самошифрование) используется для усложнения процедуры обнаружения вируса. Полиморфные вирусы -- это трудно выявляемые вирусы, не имеющие постоянного участка кода. В общем случае два образца одного и того же вируса не имеют совпадений. Это достигается шифрованием основного тела вируса и модификациями программы-расшифровщика.

При создании вирусов часто используются нестандартные приемы. Их применение должно максимально затруднить обнаружение и удаление вируса.

По способу заражения различают троянские программы, утилиты скрытого администрирования, Intended-вирусы и т. д.

Троянские программы получили свое название по аналогии с троянским конем. Назначение этих программ -- имитация каких-либо полезных программ, новых версий популярных утилит или дополнений к ним. При их записи пользователем на свой компьютер троянские программы активизируются и выполняют нежелательные действия.

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

К Intended-вирусам относятся программы, которые не способны размножаться из-за существующих в них ошибок. К этому классу также можно отнести вирусы, которые размножаются только один раз. Заразив какой-либо файл, они теряют способность к дальнейшему размножению через него.

По деструктивным возможностям вирусы разделяются на:

1. неопасные, влияние которых ограничивается уменьшением свободной памяти на диске, замедлением работы компьютера, графическим и звуковыми эффектами;

2. опасные, которые потенциально могут привести к нарушениям в структуре файлов и сбоям в работе компьютера;

3. очень опасные, в алгоритм которых специально заложены процедуры уничтожения данных и возможность обеспечивать быстрый износ движущихся частей механизмов путем ввода в резонанс и разрушения головок чтения/записи некоторых НЖМД.

Для борьбы с вирусами существуют программы, которые можно разбить на основные группы: мониторы, детекторы, доктора, ревизоры и вакцины.

Программы-мониторы (программы-фильтры) располагаются резидентно в ОП компьютера, перехватывают и сообщают пользователю об обращениях ОС, которые используются вирусами для размножения и нанесения ущерба. Пользователь имеет возможность разрешить или запретить выполнение этих обращений. К преимуществу таких программ относится возможность обнаружения неизвестных вирусов. Использование программ-фильтров позволяет обнаруживать вирусы на ранней стадии заражения компьютера. Недостатками программ являются невозможность отслеживания вирусов, обращающихся непосредственно к BIOS, а также загрузочных вирусов, активизирующихся до запуска антивируса при загрузке DOS, и частая выдача запросов на выполнение операций.

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

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

Программы-ревизоры анализируют изменения состояния файлов и системных областей диска. Проверяют состояние загрузочного сектора и таблицы FAT; длину, атрибуты и время создания файлов; контрольную сумму кодов. Пользователю сообщается о выявлении несоответствий.

Программы-вакцины модифицируют программы и риски так, что это не отражается на работе программ, но вирус, от которого производится вакцинация, считает программы или диски уже зараженными. Существующие антивирусные программы в основном относятся к классу гибридных (детекторы-доктора, доктора-ревизоры и пр.).

В России наибольшее распространение получили антивирусные программы Лаборатории Касперского (Anti-IViral Toolkit Pro) и ДиалогНаука (Adinf, Dr. Web). Антивирусный пакет AntiViral Toolkit Pro (AVP) включает AVP Сканер, резидентный сторож AVP Монитор, программу администрирования установленных компонентов. Центр управления и ряд других. AVP Сканер помимо традиционной проверки выполняемых файлов и файлов документов обрабатывает базы данных электронной почты. Использование сканера позволяет выявить вирусы в упакованных и архивированных файлах (не защищенных паролями). Обнаруживает к удаляет макровирусы, полиморфные, стеле, троянские, а также ранее неизвестные вирусы. Это достигается, например, за счет использования эвристических анализаторов. Такие анализаторы моделируют работу процессора и выполняют анализ действий диагностируемого файла. В зависимости от этих действий и принимается решение о наличии вируса.

Монитор контролирует типовые пути проникновения вируса, например операции обращения к файлам и секторам.

AVP Центр управления -- сервисная оболочка, предназначенная для установки времени запуска сканера, автоматического обновления компонент пакета и др.

При заражении или при подозрении на заражение компьютера вирусом необходимо:

1. оценить ситуацию и не предпринимать действий, приводящих к. потере информации;

2. перезагрузить ОС компьютера. При этом использовать специальную, заранее созданную и защищенную от записи системную дискету. В результате будет предотвращена активизация загрузочных и резидентных вирусов с жесткого диска компьютера;

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

Выводы

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

ПоказатьСвернуть
Заполнить форму текущей работой