Информатика. Информатика утверждено Редакционноиздательским советом университета в качестве учебного пособия Издательство Пермского государственного технического университета 2008 2 удк 004(075.
Скачать 1.98 Mb.
|
Средства антивирусной защиты. Основным средством защиты информации является резервное копирование наиболее ценных данных. Резервные копии должны храниться отдельно от компьютера на внешних носителях. Вспомогательным средством защиты информации являют- ся антивирусные программы, которые следует регулярно обнов- лять, так как антивирусная программа ищет вирус путем срав- нения кода программ с кодами известных ей вирусов, хранящи- мися в базе данных. Если база данных устарела, а вирус является новым, сканирующая программа его не обнаружит. Защита информации в Интернете. Понятие о шифро- вании информации. Принцип действия защиты информации в Интернете основан на том, чтобы исключить возможность подбора адекватного метода для преобразования данных в ин- формацию. Одним из приемов такой защиты является шифрова- ние данных. Обычный подход состоит в том, что к документу применя- ется некий метод шифрования (ключ), после чего документ ста- новится недоступен для чтения обычными средствами. Его мо- жет прочитать только тот, кто знает ключ, т.е. может применить адекватный метод чтения. Если в процессе обмена информа- цией для шифрования и чтения пользуются одним и тем же ключом, то такой криптографический процесс является сим- метричным. Основной недостаток симметричного процесса заключается в том, что, прежде чем начать обмен информацией, надо выпол- нить передачу ключа, а для этого опять нужна защищенная связь, т.е. проблема повторяется. Поэтому в настоящее время в Интернете используют не- симметричные криптографические системы, основанные на ис- пользовании не одного, а двух ключей. Компания для работы 44 с клиентами создает два ключа: один – открытый (публич- ный) ключ, а другой – закрытый (личный) ключ. На самом деле это как бы две «половинки» одного целого ключа, связанные друг с другом. Ключи устроены так, что сообщение, зашифро- ванное одной половинкой, можно расшифровать только другой половинкой. Таким образом, торговая компания широко расп- ространяет публичный ключ и надежно сохраняет закрытый. Оба эти ключа представляют собой некую кодовую последова- тельность. Защиту информации принято считать достаточной, если за- траты на ее преодоление превышают ожидаемую ценность са- мой информации. В этом состоит принцип достаточности за- щиты, которым руководствуются при использовании несим- метричных средств шифрования данных. 7. АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ ПАСКАЛЬ 7.1. Алгоритм и его свойства Под алгоритмизацией понимают сведение задачи к после- довательности этапов, выполняемых друг за другом, так что ре- зультаты предыдущих этапов используются при выполнении последующих. Алгоритм – это четкое описание последователь- ности действий, которые необходимо выполнить для решения задачи. Алгоритм обладает следующими свойствами: дискретно- стью, определенностью, результативностью, массовостью. Дискретность. Процесс преобразования исходных данных в результат осуществляется дискретно, так что значения вели- чин в каждый последующий момент времени получаются по оп- ределенным правилам из значений величин в предшествующий момент времени. Определенность. Каждое правило алгоритма должно быть четким и однозначным, не допускающим двусмысленного тол- кования. Результативность. Алгоритм должен приводить к резуль- тату за конечное число шагов. 45 Массовость. Алгоритм решения задачи разрабатывается в общем виде так, чтобы его можно было применить для класса задач, различающихся лишь исходными данными. Программа – это окончательный вариант решения задачи на языке программирования. Таблица 1 Символ Описание Пример Начало и окончание ал- горитма Ввод и вывод данных Операция, определяю- щая выбор направления выполнения алгоритма Обозначение операций присваивания Обозначение заголовка цикла с параметром Обозначение подпро- грамм Алгоритм решения задачи может быть представлен графи- чески – в виде блок-схем. Блок-схема алгоритма представляет собой совокупность блоков (табл. 1), соединенных между собой линиями связи. 7.2. Основные структуры алгоритмов Теория структурного программирования доказывает, что алгоритм любой степени сложности можно построить с помо- щью основного базового набора структур [2]. Начало Ввод Х X > 0 да нет Х = Х + 1 MAX i = 1, n 46 К основным (базовым) структурам алгоритмов относятся: следование, разветвление, цикл. Каждая из структур имеет один вход и один выход. Следование – это последовательное размещение блоков или групп блоков (рис. 3, а). Например, два блока S1 и S2 могут быть размещены друг за другом, при этом каждый из них в свою очередь может представлять собой любую базовую структуру. Разветвление состоит из логического блока с проверкой некоторого условия Р и блоков S1, S2. Разветвление может быть двух видов: полная условная конструкция (рис. 3, б) и неполная условная конструкция – обход (рис. 3, в). Полная условная кон- струкция применяется, когда в зависимости от условия Р нужно выполнить либо S1, либо S2. Для структуры обход блок S или выполняется, или не выполняется. а б в Рис. 3. Основные структуры алгоритмов: а – следование; б, в – разветвление Циклическими называются алгоритмы, у которых выпол- нение некоторых операторов (групп операторов) осуществляет- ся многократно с одними и теми же или модифицированными данными. В зависимости от способа организации числа повторений различают три типа циклов: цикл с заданным условием продол- жения работы (цикл-ПОКА, рис. 4, а), цикл с заданным услови- ем окончания работы (цикл-ДО, рис. 4, б) и цикл с заданным числом повторений (цикл с параметром, рис. 4, в). S1 S2 Р S2 S1 нет да Р S нет да 47 а б в Рис. 4. Типы циклов: а – цикл-ПОКА; б – цикл-ДО; в – цикл с пара- метром Тело цикла может включать в себя группу операторов лю- бой степени сложности. Для цикла-ПОКА (см. рис. 4, а) при выполнении условия Р выполняется тело цикла; если же условие не выполняется, то работа циклической структуры заканчивается и начинает вы- полняться следующая структура основного алгоритма. В этом случае Р – условие для продолжения цикла. Структура цикла-ПОКА предусматривает вариант, когда тело цикла не выполняется ни разу. Такое возможно, если усло- вие, стоящее в начале цикла, сразу же не выполняется. Когда при решении задач возникает необходимость использовать структуру, у которой тело цикла выполняется хотя бы один раз, то в этом случае применяется структура цикла-ДО (см. рис. 4, б). В этом случае Р – условие окончания цикла, т.е. выход из цикла- ДО осуществляется при выполнении условия. Выполнение цикла с параметром (см. рис. 4, в) осуществ- ляется следующим образом: при изменении параметра i от начального значения i н до конечного значения i к повторяется те- ло цикла. Р Тело цикла нет да Р Тело цикла нет да i = i н , i к Тело цикла 48 7.3. Алгоритмы линейной, разветвляющейся и циклической структуры Алгоритмы линейной структуры.Линейный вычисли- тельный процесс – это такой процесс, все вычисления которого выполняются последовательно одно за другим в естественном порядке. Пример. Даны катеты a, b прямо- угольного треугольника. Найти его ги- потенузу c и площадь s. Блок-схема ал- горитма приведена на рис. 5. Алгоритмы разветвляющейся структуры. Разветвляющимся (ветвя- щимся) называется алгоритм, который в зависимости от исходных данных или промежуточных результатов вычисле- ния реализуется по одному из несколь- ких заранее предусмотренных направ- лений. Такие направления называются ветвями вычислений. Выбор той или иной ветви осуществляется в зависимо- сти от результата проверки условия. В каждом конкретном случае алгоритм реализуется только по одной ветви, а выполнение остальных исключается. В качестве примера использования ветвлений рассмотрим составление ал- горитма для вычисления функции f(x) в зависимости от конкретных значе- ний x, a, b: 4 при , , 4 1 при , , 1 при , 2 2 x b x x b a x x a x f Блок-схема алгоритма решения этой задачи приведена на рис. 6. Начало Ввод a, b Вывод c, s Конец 2 2 b a c s = a b/2 Рис. 5. Пример линей- ного алгоритма 49 Рис. 6. Пример разветвляющегося алгоритма Алгоритмы циклической структуры. Алгоритмы, в кото- рых отдельные действия многократно повторяются, называются циклическими. Типовые алгоритмические структуры, реализую- щие циклический вычислительный процесс, приведены на рис. 4. Циклический алгоритм состоит из подготовки цикла, те- ла цикла и условия повторения цикла. Характерной для этого класса вычислительных процессов является задача табулирования функции, т.е. вычисления значе- ний функции y = f(x) на отрезке [x н , x к ] с шагом х (рис. 7). Начало Ввод a, b, x Вывод x, f Конец f = x + b 2 f = x + a 2 x 1 нет да x 4 нет да f = x – a b 50 Рис. 7. Блок-схема алгоритма табулирования функции Рис. 8. Блок-схема алгоритма вычисления суммы членов ряда Примером алгоритма циклической структуры является также задача вычисления суммы и произведения. Если необходимо вычислить сумму значений некоторой функции y = f(x) при различных значениях аргумента, то целесо- образно организовать цикл, в котором не только вычисляются текущие значения функции, но и накапливается их сумма путем прибавления полученного слагаемого к сумме предыдущих. Формула для вычисления суммы имеет следующий вид: Начало Ввод х н , х к , х х = х н х > х к х = х + х нет да y = f(x) Вывод x, y Конец Начало Ввод х S = 0 n = 1, 6 y = 1 4 ) 1 ( 2 1 2 1 n x n n S = S + y Вывод S Конец 51 i i i y S S 1 При первом выполнении цикла вычисляется значение 1 0 1 y S S , которое должно быть равно y 1 . Поэтому перед циклом началь- ному значению суммы следует присвоить значение ноль, т.е. S 0 = 0. Аналогично вычисляется и произведение, с той лишь раз- ницей, что для его накопления используется формула i i i y P P 1 , а начальное значение произведения должно быть равно единице, т.е. P 0 = 1. Пример: вычислить , 1 4 ) 1 ( 6 1 2 1 2 1 n n n n x S 3 , 0 x Блок- схема алгоритма решения этой задачи представлена на рис. 8. Так как результат решения представляет собой одно чис- ло, то блок печати стоит за циклом и результаты печатаются один раз. 7.4. Программирование на языке Паскаль Чтобы выполнить программу на языке Паскаль, ее необхо- димо ввести в память компьютера, оттранслировать, т.е. пере- вести на язык машинных кодов, и выполнить. Для этого на ком- пьютере должны быть специальные средства программного обеспечения, т.е. редактор текстов, компилятор и исполнитель- ная система. Все эти средства объединены в систему Turbo Pas- cal (Турбо Паскаль) [3]. Операторы языка. Служат для описания некоторого за- конченного этапа обработки данных. Операторы определяют действия над объектами программы; могут быть простыми и структурированными, т.е. состоящими из других операторов. Операторы, следующие в программе друг за другом, разделяют- ся точкой с запятой (;). Идентификаторы. Выполняют роль имен, которые дают- ся различным программным объектам – константам, типам, пе- 52 ременным величинам, функциям и т.п., чтобы программисту было удобно ссылаться на эти объекты. Идентификатор может начинаться только с буквы или знака подчеркивания. Пробелы и другие специальные символы недопустимы в идентификато- рах. Компилятор не делает различия между прописными и строчными буквами. Типы данных. Каждая константа, переменная, элемент массива принадлежит к определенному типу данных. Тип опре- деляет множество значений, которые может принимать объект программы, и совокупность операций, которые могут выпол- няться над значениями этого объекта. Тип констант распознает- ся компилятором автоматически. Тип переменных должен быть описан в разделе описаний (в разделе переменных, начи- нающемся со специального слова var). Паскаль характеризует- ся разветвленной структурой типов данных (табл. 2). В табл. 2 Таблица 2 Идентификатор Длина, байт Диапазон (множество) значений Целые типы integer 2 –32768…32767 byte 1 0…255 word 2 0…65535 shortint 1 –128…127 longint 4 –2147483648…2147483647 Вещественные типы real 6 2,9 10 –39 …1,7 10 38 (11–12) singl 4 1,5 10 –45 …3,4 10 38 (7–8) double 8 5 10 –324 …1,7 10 308 (15–16) extended 10 3,4 10 –4932 …1,1 10 4932 (19–20) Логический тип boolean 1 true (истина), false (ложь) Символьный тип char 1 все символы кода ASCII 53 представлена информация о простых типах данных, определен- ных в Турбо Паскале. Для вещественных типов в скобках указа- но количество сохраняемых значащих цифр мантиссы в деся- тичном представлении числа. Арифметическое выражение. Задает порядок выполнения действий над элементами данных и состоит из операндов (кон- стант, переменных, обращений к функциям), круглых скобок и знаков операций. Выражение должно содержать данные одного типа, при этом значение выражения получается того же типа. Однако допускается использование в одном выражении данных целого и вещественного типов, результат в этом случае получа- ется вещественного типа. Арифметические операции приведены в табл. 3. Операции выполняются в соответствии с их приоритетом. Операции с рав- ным приоритетом выполняются слева направо. В случае необ- ходимости изменения порядка выполнения операции использу- ются круглые скобки. Таблица 3 Знак опе- рации Содержание Выражение Тип операндов Тип результата + Сложение A + B Целый, вещественный Целый, вещественный – Вычитание A – B Целый, вещественный Целый, вещественный * Умножение A * B Целый, вещественный Целый, вещественный / Деление A / B Целый, вещественный Целый, вещественный div Целочислен- ное деление A div B Целый Целый mod Остаток A mod B Целый Целый 54 Операция div возвращает целую часть частного, дробная часть отбрасывается. Операция mod восстанавливает остаток, полученный при выполнении целочисленного деления. Стандартные функции. В языке Турбо Паскаль сущест- вуют заранее разработанные подпрограммы-функции (табл. 4), которые могут использоваться в программах. Аргументы функ- ций записываются в круглых скобках. Таблица 4 Обозначение Тип аргумента Тип результата Функция Pi – real Число = 3,1415926536 abs(x) integer/real integer/real Модуль аргумента arctan(x) integer/real real Арктангенс (радианы) cos(x) integer/real real Косинус (х в радианах) sin(x) integer/real real Синус (х в радианах) exp(x) integer/real real Экспонента е х frac(x) integer/real real Дробная часть х int(x) integer/real real Целая часть х ln(x) integer/real real Натуральный логарифм random real Псевдослучайное число из диапазона [0, 1) random(x) integer integer Псевдослучайное число из диапазона [0, х) round(x) real integer Округление до ближай- шего целого sqr(x) integer/real integer/real Квадрат х sqrt(x) integer/real real Корень квадратный trunc(x) real integer Ближайшее целое, не пре- вышающее х по модулю 55 В Паскале нет операции или стандартной функции возве- дения числа в произвольную степень. Для вычисления а х ис- пользуется следующая математическая формула: ) ln(a x x e a На Паскале это будет выглядеть так: exp(x*ln(a)). Вычисление tg(x) производится с помощью выражения sin(x)/cos(x). Вычисление log b a производится с помощью выражения ln(a)/ln(b). Например, запишем по правилам Паскаля следующее ма- тематическое выражение: 1 2 x x b a На Паскале это выглядит так: (a + b*x)/sqrt(x*x + 1). |