7.36 Защита информации в локальных и глобальных компьютерных сетях. Электронная подпись
8 Алгоритмизация и программирование. Языки программирования высокого уровня
8.37 Алгоритм и его свойства. Способы записи алгоритма
Алгоритм — описанная на некотором языке точная конечная система правил, определяющая содержание и порядок действий над некоторыми объектами, строгое выполнение которых дает решение поставленной задачи.
Значение слова «алгоритм» очень схоже со значениями слов «рецепт», «метод», «процесс». Однако, в отличие от рецепта или процесса, алгоритм характеризуется следующими свойствами:
- дискретностью,
- массовостью,
- определенностью,
- результативностью,
- формальностью.
Дискретность (разрывность — противоположно непрерывности)— это свойство алгоритма, характеризующее его структуру: каждый алгоритм состоит из отдельных законченных действий, говорят: «Делится на шаги». Массовость — применимость алгоритма ко всем задачам рассматриваемого типа, при любых исходных данных. Например, алгоритм решения квадратного уравнения в области действительных чисел должен содержать все возможные исходы решения, т.е., рассмотрев значения дискриминанта, алгоритм находит либо два различных корня уравнения, либо два равных, либо делает вывод о том, что действительных корней нет. Определенность (детерминированность, точность) — свойство алгоритма, указывающее на то, что каждый шаг алгоритма должен быть строго определен и не допускать различных толкований; также строго должен быть определен порядок выполнения отдельных шагов. Результативность — свойство, состоящее в том, что любой алгоритм должен завершаться за конечное (может быть очень большое) число шагов. Вопрос о рассмотрении бесконечных алгоритмов остается за рамками теории алгоритмов. Формальность — это свойство указывает на то, что любой исполнитель, способный воспринимать и выполнять инструкции алгоритма, действует формально, т.е. отвлекается от содержания поставленной задачи и лишь строго выполняет инструкции. Рассуждать «что, как и почему?» должен разработчик алгоритма, а исполнитель формально (не думая) поочередно исполняет предложенные команды и получает необходимый результат. Способы описания алгоритма:
- словесное описание,
- псевдокод,
- блок-схема,
- программа.
Словесное описание представляет структуру алгоритма на естественном языке. Например, любой прибор бытовой техники (утюг, электропила, дрель и т.п.) имеет инструкцию по эксплуатации, т.е. словесное описания алгоритма, в соответствии которому данный прибор должен использоваться. Никаких правил составления словесного описания не существует. Запись алгоритма осуществляется в произвольной форме на естественном, например, русском языке. Этот способ описания не имеет широкого распространения. Псевдокод — описание структуры алгоритма на естественном, частично формализованном языке, позволяющее выявить основные этапы решения задачи, перед точной его записью на языке программирования. В псевдокоде используются некоторые формальные конструкции и общепринятая математическая символика. Строгих синтаксических правил для записи псевдокода не существует. Это облегчает запись алгоритма при проектировании и позволяет описать алгоритм, используя любой набор команд. Однако в псевдокоде обычно используются некоторые конструкции, присущие формальным языкам, что облегчает переход от псевдокода к записи алгоритма на языке программирования. Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором используемых слов и конструкций. Блок-схема — описание структуры алгоритма с помощью геометрических фигур с линиями-связями, показывающими порядок выполнения отдельных инструкций. Этот способ имеет ряд преимуществ. Благодаря наглядности, он обеспечивает «читаемость» Блок, характеризующий начало/конец алгоритма (для подпрограмм — вызов/возврат): Блок — процесс, предназначенный для описания отдельных действий: Блок — предопределенный процесс, предназначенный для обращения к вспомогательным алгоритмам (подпрограммам): Блок — ввода/вывода с неопределенного носителя’. Блок — ввод с клавиатуры’. Блок — вывод на монитор: Блок — вывод на печатающее устройство’ Блок — решение (проверка условия или условный блок): Блок, описывающий цикл с параметром’. Блок — границы цикла, описывающий циклические процессы типа: «цикл с предусловием», «цикл с постусловием»: Соединительные блоки. 8.38 Линейная алгоритмическая структура 8.39 Разветвляющаяся алгоритмическая структура 8.40 Циклические алгоритмические структуры 8.41 Основные операторы циклов и ветвления 8.42 Типовые алгоритмы 8.43 Рекурсивные алгоритмы 8.44 Эволюция и классификация языков программирования Процедурное программирование Фортран Кобол Алгол Basic PL/1 Pascal C Функциональное программирование LispЛогическое программированиеPrologОбъектно-ориентироdанное программирование (ООП)SmalltalkC++JAVAЯзыки программирования баз данныхSQLЯзыки программировании для компьютерных сетей(Скриптовые языки) HTMLJava-scriptPHPPerlTcl/TkСтруктурное программирование. Его методология основана на использовании подпрограмм и независимых структур данных, объединяющих связанные между собой совокупности данных. Подпрограммы позволяют заменять в тексте программ упорядоченные блоки команд, отчего программный код становится более компактным. Структурный подход обеспечивает создание более понятных и легко читаемых программ, упрощает их тестирование и отладку. Программирование сверху вниз, когда задача делится на простые, самостоятельно решаемые подзадачи. Затем на основе решенных подзадач выстраивается решение исходной задачи полностью — сверху вниз.