Алгоритмы: понятие, свойства и классификация

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

Рубрика Программирование, компьютеры и кибернетика
Вид отчет по практике
Язык русский
Дата добавления 15.05.2012
Размер файла 2,6 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Министерство образования РФ

Донской государственный технический университет

Кафедра «информатика»

Отчет по

компьютерной практике

Сдала:

Приняла:

Оценка:

Ростов-на-Дону

2009

СОДЕРЖАНИЕ

1. Понятие алгоритма

2. Свойства и классификация алгоритмов

3. Основные функциональные элементы блок-схемы

4. Примеры

Список литературы

1. Понятие алгоритма

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

Алгоритм -- описанная на некотором языке точная конечная система правил, определяющая содержание и порядок действий над некоторыми объектами, строгое выполнение которых дает решение поставленной задачи. Понятие алгоритма, являющееся фундаментальным в математике и информатике, возникло задолго до появления средств вычислительной техники. Слово «алгоритм» появилось в средние века, когда европейцы познакомились со способами выполнения арифметических действий в десятичной системе счисления, описанными узбекским математиком Муххамедом бен Аль-Хорезми («аль- Хорезми» - человек из города Хорезми; в настоящее время город Хива в Хорезмской области Узбекистана). Слово алгоритм -- есть результат европейского произношения слов аль - Хорезми. Первоначально под алгоритмом понимали способ выполнения арифметических действий над десятичными числами. В дальнейшем это понятие стали использовать для обозначения любой последовательности действий, приводящей к решению поставленной задачи.

Любой алгоритм существует не сам по себе, а предназначен для определенного исполнителя (человека, робота, компьютера, языка программирования и т.д.). Свойством, характеризующим любого исполнителя, является то, что он умеет выполнять некоторые команды. Совокупность команд, которые данный исполнитель умеет выполнять, называется системой команд исполнителя. Алгоритм описывается в командах исполнителя, который будет его реализовывать. Объекты, над которыми исполнитель может совершать действия, образуют так называемую среду исполнителя. Исходные данные и результаты любого алгоритма всегда принадлежат среде того исполнителя, для которого предназначен алгоритм.

2. Свойства и классификация алгоритмов

алгоритм арифметический цикл

Значение слова «алгоритм» очень схоже со значениями слов «рецепт», «метод», «процесс». Однако, в отличие от рецепта или процесса, алгоритм характеризуется следующими свойствами:

ь дискретностью

ь массовостью

ь определенностью

ь результативностью

ь формальностью.

Дискретность (разрывность -- противоположно непрерывности)-- это свойство алгоритма, характеризующее его структуру: каждый алгоритм состоит из отдельных законченных действий, говорят: «Делится на шаги».

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

Определенность (детерминированность, точность) -- свойство алгоритма, указывающее на то, что каждый шаг алгоритма должен- быть строго определен и не допускать различных толкований; также строго должен быть определен порядок выполнения отдельных шагов. Помните сказку про Ивана- царевича? «Шел Иван-царевич по дороге, дошел до развилки. Видит большой камень, на нем надпись: «Прямо пойдешь - голову потеряешь, направо пойдешь-- жену найдешь, налево пойдешь - разбогатеешь». Стоит Иван и думает, что дальше делать». Таких инструкций алгоритм содержать не может.

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

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

Элементарные шаги алгоритма можно объединить в следующие алгоритмические конструкции:

1. Линейная алгоритмическая конструкция

2. Разветвляющаяся алгоритмическая конструкция

a. Команда «Выбор»

3. Алгоритмическая конструкция «Цикл»

a. Арифметический цикл

b. Цикл с предусловием

c. Цикл с постусловием

4. Рекурсивный алгоритм

1. Линейная алгоритмическая конструкция

Линейной называют алгоритмическую конструкцию, реализованную в виде последовательности действий (шагов), в которой каждое действие (шаг) алгоритма выполняется ровно один раз, причем после каждого i-го действия (шага) выполняется (i+1)-е действие (шаг), если i-е действие -- не конец алгоритма.

Например, сложение двух чисел а и b на псевдокоде в виде блок-схемы:

Блок-схема сложения двух чисел

2. Разветвляющаяся алгоритмическая конструкция

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

Полное ветвление

Неполное ветвление

а. Команда «Выбор»

Часто при выборе одного из возможных вариантов действий приходится проверять значение выражения на принадлежность заданному набору данных. Для этого существует команда «Выбор». При ее исполнении сначала вычисляется значение некоторого выражения 2. Затем последовательно проверяются условия VI, V2, ..., Vn относительно Z, начиная с первого, до тех пор, пока не встретится условие, принимающее значение ИСТИНА. Далее выполняется соответствующее этому условию действие (или серия действий), после чего команда выбора завершается. Если ни одно из условий не является истинным, то выполняется действие (или набор действий), идущее по ветви ЛОЖЬ для каждого из условий. На рисунке представлена блок-схема команды «Выбор» для п = 3.

3. Алгоритмическая конструкция «Цикл»

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

Рассмотрим три типа циклических алгоритмов: цикл с параметром (который называют арифметическим циклом), цикл с предусловием и цикл с постусловием (их называют итерационными) .

Правило изменения параметра i: i = N, K, h означает

1-й шаг цикла

i = N

2-й шаг цикла

i = N + h

3-й шаг цикла и т.д.

i = N + 2h

последний шаг

i = K

а. Арифметический цикл

В арифметическом цикле число его шагов (повторений) однозначно определяется правилом изменения параметра, которое задается с помощью начального (N) и конечного (K) значений параметра и шагом (h) его изменения. Т.е., на первом шаге цикла значение параметра равно N, на втором - N + h, на третьем - N + 2h и т.д. На последнем шаге цикла значение параметра не больше K, но такое, что дальнейшее его изменение приведет к значению, большему, чем K.

b. Цикл с предусловием

Количество шагов цикла заранее не определено и зависит от входных данных задачи. В данной циклической структуре сначала проверяется значение условного выражения (условие) перед выполнением очередного шага цикла. Если значение условного выражения истинно, исполняется тело цикла. После чего управление вновь передается проверке условия и т.д. Эти действия повторяются до тех пор, пока условное выражение не примет значение ЛОЖЬ. При первом же несоблюдении условия цикл завершается. Блок-схема данной конструкции представлена на рисунке двумя способами: с помощью условного блока а и с помощью блока границы цикла b. Особенностью цикла с предусловием является то, что если изначально условное выражение ложно, то тело, цикла не выполнится ни разу.

c. Цикл с постусловием

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

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

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

последовательные вложенные запрещенные

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

4. Рекурсивный алгоритм

Рекурсивным называется алгоритм, организованный таким образом, что в процессе выполнения команд на каком-либо шаге он прямо или косвенно обращается сам к себе.

3. Основные функциональные элементы блок-схемы

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

Рассмотрим некоторые основные конструкции, использующиеся для построения блок-схем.

4. Примеры

1. Одним из наиболее распространенных алгоритмов, встречающихся в литературе по информатике, является алгоритм Евклида - алгоритм нахождения наибольшего общего делителя двух натуральных чисел m и n (m n).

Блок-схема алгоритма Евклида

2. Суммирование. Для заданного натурального числа N вычислить сумму 1+ + +…+ .

Подсчет суммы осуществляется следующим образом. Сначала считаем, что сумма S есть первое слагаемое (S=1). Далее к первому слагаемому прибавляем второе, получаем новую сумму S = 1 + . Но на предыдущем шаге S = 1, поэтому можно записать S = 1 + . К сумме двух первых слагаемых прибавляем третье

S = 1 + + . Но на предыдущем шагу S = 1 + , поэтому можно записать S = 1 + и т.д.

Получили следующую последовательность шагов:

1) S = 1

2) S = S +

3) S = S +, запишем i-й шаг, опираясь на два предыдущих:

4) S = S + .

Выясним правило изменения номера шага i. В описанной последовательности i=1,2,3 и т.д. В сумме N слагаемых последним значением i будет N. Отсюда нашли правило изменения i=1,N,1.

Сверяя инструкции каждого шага, находим, что выражение на первом шаге отличается от других (однотипных). Чтобы оно стало таким как все, в сумму надо добавить S, т.е записать: S = S + 1. Отсюда для S возникает необходимость задания начального значения , но такого, чтобы S + 1 = 1, этим числом является нуль, при сложении с нулем сумма не меняется.

Так как известно число шагов цикла, то для построения алгоритма используем цикл с параметром i.

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

1. Ввод N.

2. S = 0.

3. Для i=1,N,1 повторить:

a. S = S + .

4. Вывод S.

5. Конец.

5. Список литературы

1. Б.В. Соболь [и др.]. Информатика: учебник - Ростов н/Д: Феникс, 2007.

2. Кнут Дональд Э. Искусство программирования. Т.1. Основные алгоритмы.

- М.: Издательский дом «Вильяме», 2000.

3. Кормен Т., Лейзерсон Ч., Ривест Р. Алгоритмы: построение и анализ. - М.:

МЦНМО, 2001.

Размещено на Allbest.ru


Подобные документы

  • Понятие алгоритма, его свойства и способы описания. Схемы алгоритмических конструкций: линейная, разветвляющаяся, циклическая. Особенности и применение электронных таблиц Excel. Задачи, решаемые с помощью системы Mathcad. История создания языка Pascal.

    курсовая работа [601,9 K], добавлен 20.11.2010

  • Применение циклической управляющией структуры для организации многократного выполнения некоторого оператора. Конструкция цикла: заголовок и тело, и алгоритм выполнения операторов while, do while и for. Отличия циклов с постусловием и предусловием.

    контрольная работа [65,8 K], добавлен 30.12.2010

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

    курсовая работа [2,4 M], добавлен 11.03.2015

  • Общее понятие, свойства, уровень важности, классификация, жизненный цикл и защита информации. Принципы, субъекты и объекты информационных отношений. Особенности потребностей и этапы их формирования. Механизм реализации информационной потребности.

    курсовая работа [31,2 K], добавлен 10.03.2014

  • Понятие алгоритма и история его формулировки, характерные свойства и формы представления. Виды алгоритмический структур и их признаки. Алгоритмы сортировки и методы их реализации. Применение алгоритмических законов для решения экономических задач.

    курсовая работа [359,0 K], добавлен 03.01.2010

  • Понятие алгоритма как фундаментальное понятие информатики. Алгоритмизация является набором определенных практических приемов, особых специфических навыков рационального мышления в рамках языковых средств. Человек - исполнитель алгоритма. Свойства алгоритм

    лекция [84,4 K], добавлен 09.02.2009

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

    курсовая работа [38,4 K], добавлен 18.03.2013

  • Составление алгоритмов и программ для вычисления значений неизвестных: программирование формул; операторы ввода и вывода; условный оператор; цикл с предусловием и с постусловием, с заданным числом повторений; графические средства; тестирование программы.

    курсовая работа [1,5 M], добавлен 13.03.2011

  • Понятие алгоритма, его свойства. Дискретность, определенность, результативность, формальность как свойства алгоритма. Программа как описание структуры алгоритма на языке алгоритмического программирования. Основные структурные алгоритмические конструкции.

    реферат [1,3 M], добавлен 18.11.2010

  • Операторы цикла, присутствующие в языках программирования. Простой арифметический оператор цикла Паскаля, управление циклом с помощью переменной порядкового типа. Арифметический оператор цикла Паскаля с произвольным шагом, оператор цикла с предусловием.

    реферат [59,5 K], добавлен 01.04.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.