- •Алгоритм. Свойства алгоритма.
- •Алгоритм. Представления алгоритмов.
- •Алгоритм. Основные алгоритмические конструкции.
- •Этапы решения задачи на компьютере.
- •Структурное программирование.
- •Объектно-ориентированное программирование.
- •Эволюция и классификация языков программирования.
- •Трансляция, компиляция и интерпретация.
- •Моделирование.
- •Компьютерные сети. Серверы. Рабочие станции. Узлы. Ресурсы.
- •Сетевые протоколы. Модель osi.
- •Интернет.
- •Основы функционирования Интернета
- •Сервисы (службы) Интернета.
- •Защита информации. Юридические аспекты.
- •Защита информации. Вирусы.
- •Защита информации. Технические меры защиты.
- •Защита информации. Программные меры защиты.
- •Криптография. Основные понятия.
- •Криптография. Метод перестановки.
- •Криптография. Метода подстановки.
- •Криптография. Хэш.
Вопросы к зачету по курсу “ИНФОРМАТИКА”.
Теоретические вопросы.
-
Алгоритм. Свойства алгоритма.
Единого точного определения термина «Алгоритм» не существует. Разные источники дают его по-разному. Самое простое определение:
Алгоритм — это описание последовательности действий, приводящих к требуемому результату.
Под него попадают и кулинарный рецепт, и словесно-формульное описание метода решения квадратных уравнений, и программа, написанная на языке программирования.
Алгоритм (понятие, которое давал Шевченко) – четкая последовательность действий, которая приводит к решению задачи, либо доказывает, что решения не существует.
Алгоритм — это формализованное описание конечной последовательности дискретных, однозначно определенных действий, приводящих к требуемому результату.
Согласно этому определению алгоритм состоит из алгоритмических действий. Эти действия должен выполнять исполнитель алгоритма (человек, компьютер или дрессированный заяц), для которого эти действия должны быть однозначно понятны и выполнимы. Действия должны быть дискретны, т.е. отделены друг от друга и относительно независимы. Разнообразие их должно быть ограничено; чем оно меньше, тем лучше. Последовательность действий должна приводить к результату за конечное их число. И наконец, все описание должно быть представлено на некотором формализованном языке, не допускающем неоднозначную трактовку.
Свойства алгоритма
Алгоритм должен обладать рядом свойств, к которым относятся следующие:
-
Дискретность, уже обсуждавшаяся выше. Алгоритм строится из отдельных независимых команд (предписаний) и, тем самым, образует дискретную прерывистую структуру.
-
Понятность – содержание в своем составе предписаний, входящих в систему команд исполнителя. Исполнителю алгоритма все команды должны быть однозначно понятны.
-
Детерминированность или определенность исключает неоднозначность команд. На каждом шаге однозначно следует, что нужно выполнять на следующем. Исполнитель алгоритма не принимает каких-либо самостоятельных решений, а только исполняет команды. Это свойство приводит к тому, что при одних и тех же исходных данных алгоритм всегда выдает один и тот же результат.
-
Завершаемость – свойство, позволяющее алгоритму при корректно заданных исходных данных завершать свою работу за конечное число шагов.
-
Результативность – способность алгоритма завершаться определенными результатами, в том числе и сообщением о невозможности решения задачи при заданном наборе исходных данных.
-
Массовость – свойство алгоритма, обеспечивающее решение некоторого класса задач, а не одной конкретной. В самом простом случае, под массовостью понимают возможность получения результата при различных наборах исходных данных.
-
Алгоритм. Представления алгоритмов.
Алгоритм может иметь различные формы представления. Рассмотрим три наиболее распространенных из них, иллюстрируя примером алгоритма нахождения корней квадратного уравнения.
-
Вербальная или словесно-формульная форма. В ней алгоритмические действия описываются словами и, при необходимости, формулами.
Для выбранного примера описание алгоритма может иметь следующий вид:
Алгоритм вычисления корней квадратного уравнения . Входными данными являются коэффициенты a, b и c. Сначала необходимо вычислить дискриминант уравнения .
Если дискриминант имеет неотрицательное значение, то корни уравнения вещественные: ;
Если дискриминант отрицательный, то корни комплексно сопряженные: .
Словесно-формульная форма является естественной для человека, но, в сложных случаях, не дает четкого представления о последовательности действий и может обладать неоднозначностью их интерпретации. Она обычно используется при разработке алгоритмов как исходная.
-
Наиболее полной и корректной формой является запись алгоритма на специальном языке. За рубежом он называется PDL (Process Design Language), «псевдокод». Псевдокод - паскалеподобный язык, обладающий всей полнотой и корректностью описания алгоритма. Алгоритм решения квадратного уравнения на нем имеет следующий вид:
алг Root2 (вещ a,b,c,x1,x2; цел key)
арг a,b,c
рез x1,x2,key
нач
вещ D,re,im
D:=b2-4ac
re:=
im:=-
если D>=0
то
нач
x1:=re+im
x2:=re-im
key:=0
кон
иначе
нач
x1:=re
x2:=im
key:=1
кон
все
кон
Заголовок алгоритма содержит его имя, а также описание входных (арг) и выходных (рез) данных с указанием их идентификаторов и типов. Далее аналогично описываются промежуточные данные алгоритма. Начало и конец алгоритмических действий обозначены служебными словами нач и кон. Рассматриваемый в качестве примера алгоритм очень простой и содержит только операторы присваивания и одну структурную конструкцию – бинарное ветвление. Она оформляется служебными словами: если, то, иначе, все.
Представление алгоритма на псевдокоде допускает разные уровни абстракции и поэтому может быть использовано как при разработке алгоритма путем постепенной детализации, так и для его окончательного представления.
-
Блок-схем. По корректности он занимает промежуточное положение между словесно-формульным описанием и представлением на псевдокоде. Достоинством его является визуальная наглядность графического изображения. Каждая структурная конструкция имеет стандартное графическое изображение. Отдельные действия представляются в виде прямоугольников, последовательность их выполнения показываются стрелками (линиями потока).
Алгоритм решения квадратного уравнения представлен блок-схемой на рис.
Бинарное ветвление в ней представляется ромбовидной фигурой. В зависимости от значения записанного в ней логического выражения (условия) выполняется та или иная ветвь вычисления.
Блок-схемы допускают различные уровни детализации представляемых алгоритмических действий и поэтому очень удобны при разработке алгоритмов. Будучи дополнены комментариями с описаниями данных, они дают достаточно полное представлении об алгоритме.
-
Программа – форма записи алгоритма, понятная компьютеру. (про это в пособии и в интернете нет ничего, это Шевченко на лекции говорил