КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Алгоритмы. Основные свойства
Обработка информации предполагает выполнение какого-то правила (алгоритма), исходные данные для которого отождествляются с состоянием того или иного носителя. Почти во всех сферах жизни нам приходится иметь дело с инструкциями (предписаниями, рецептами, правилами), в соответствии с которыми можно или нужно что-то сделать. Например, инструкции по пользованию телефоном-автоматом или инструкции по эксплуатации пылесосов. Когда такие инструкции удовлетворяют определенным минимальным требованиям, говорят об алгоритме - совокупности правил, определяющих эффективную процедуру решения любой задачи из некоторого класса задач. Алгоритм является одним из основных начальных понятий математики. Так же, как и другие начальные понятия, такие как число, точка, множество, оно не имеет строгого определения, а может быть только пояснено. Говорят, что алгоритм - это точное предписание, которое задаёт дискретный пошаговый процесс, начинающийся с некоторых произвольных исходных объектов и направленный на получение полностью определяемого этими исходными объектами результата. В приведенном поясняющем определении неявно подразумевается наличие некоторого исполнителя, который способен выполнить предписанные алгоритмом действия и тем самым осуществить некоторый дискретный процесс получения нужного результата. Исполнитель может быть как специализированным исполнителем, способным выполнять один конкретный, как говорят, "зашитый" в него алгоритм, так и достаточно универсальным исполнителем, т.е. способным выполнять не один какой-то конкретный алгоритм, а любой из алгоритмов в некотором достаточно обширном классе алгоритмов. Каждый универсальный исполнитель обладает некоторым языком для записи алгоритмов. Универсальным исполнителем алгоритма может быть как человек, так и некоторое автоматическое устройство, например, компьютер. Язык записи алгоритмов компьютера называется языком программирования. Запись любого алгоритма на языке программирования называется программой. Подчеркнем, что алгоритмы не зависят от исполнителей и предоставляемых ими языков записи алгоритмов. Так, один и тот же алгоритм может быть записан множеством различных способов, в зависимости от того, на какой исполнитель ориентируется исполнение и какой при этом язык используется. Алгоритмы характеризуются следующими основными свойствами: дискретностью, определенностью, результативностью, массовостью. Дискретность. Любой исполнитель умеет выполнять только ограниченный конечный набор действий (приказов, команд). Следовательно, для выполнения сколь-нибудь сложного действия, оно должно быть разбито на совокупность более мелких действий, каждое из которых уже может быть непосредственно выполнено исполнителем. Отсюда следует, что запись алгоритма на заданном языке должна представлять собой совокупность из некоторого числа единиц этого языка, именуемых операторами, задающих действия исполнителя, которые он способен выполнить за один раз, не прибегая при этом к делению на более мелкие действия. Элементарные такты обработки чаще всего выполняются один за другим (последовательно), но иногда и одновременно (параллельно). Определенность. Набор операторов, составляющих запись алгоритма, должен быть не только понятен исполнителю, но и точен и не должен допускать двусмысленностей при выполнении. Описание должно быть составлено настолько точно, чтобы было возможно его однозначное понимание. Один и тот же алгоритм может быть записан на разных языках: русском, английском, на каком-либо искусственном языке или даже на языке пиктограмм. Для автоматических исполнителей предполагается использование формализованных строгих языков записи алгоритмов. Тем самым обеспечивается однозначность получаемых результатов. Описание должно быть конечным, иначе его передача исполнителю (человеку или компьютеру) длилась бы бесконечно долго. Результативность. Для всех случаев, для которых алгоритм предназначен, он должен приводить к результату после конечного числа шагов выполнения. Требуется, чтобы он обязательно заканчивался, т.е. содержал конечное число элементарных тактов. Массовость. Алгоритм должен быть применим к решению не какой-то одной единственной задачи, а к решению любой задачи из некоторого класса задач. В состав алгоритма могут входить: · последовательно выполняемые операторы · операторы ветвления (условные операторы и операторы выбора), выполняющие одну из своих ветвей операторов в зависимости от некоторого условия · циклические операторы (циклы) – операторы, выполняющие группу операторов указанное количество раз (циклы со счётчиком) или неопределённое количество раз в зависимости от некоторого условия, заданного перед (предусловие) или после выполняемых действий (постусловие) · процедуры (подпрограммы и функции) – ранее созданные алгоритмы, вызываемые при выполнении текущего алгоритма по своим именам. При вызове процедура может получать данные для выполнения действий с ними и возвращать в текущий алгоритм результаты этих действий (входные и выходные параметры). Некоторые процедуры могут быть рекурсивными – вызывающими процедуру с тем же именем с меньшими значениями входных параметров. При записи алгоритмов широко используются блок-схемы, диаграммы Насси-Шнейдермана и язык псевдокода. Для сложных задач бывает удобно записывать алгоритм решения с помощью этих приёмов промежуточной записи, а затем уже на основе этой записи разрабатывать программу решения задачи на выбранном языке программирования. Необходимость в дополнительной работе по записи алгоритмов вызывается следующими соображениями. Во-первых, алгоритм при такой записи записывают, не вдаваясь в излишние подробности, что приводит к более ясному представлению о процедуре решения и позволяет в итоге быстрее избавиться от различного рода ошибок. Во-вторых, это способ сохранения значительной части работы в виде, не зависящем от конкретного языка программирования, а зависящем только от специфики самой задачи. По записи алгоритма достаточно просто составляется программа решения задачи на языке программирования. Это обстоятельство особенно важно при интенсивном развитии вычислительной техники и систем программирования.
При блок-схемном методе записи алгоритма весь процесс решения задачи разделяется на отдельные этапы – блоки. В блок-схеме каждому типу действий соответствует геометрическая фигура с пояснительным текстом. Направление процесса обработки в блок-схеме указывается путём соединения отдельных элементов блок-схемы линиями переходов (стрелками). В таблице представлены используемые элементы:
В диаграммах Насси-Шнейдермана обозначения операторов имеют следующий вид
Псевдокод представляет собой близкий к языку программирования ограниченный вариант русского языка, использующий для обозначения операторов такие его слова как начало, конец, цикл, процедура и т.д.
Рассмотрим пример программы и приведённые для неё блок-схему, диаграмму Насси-Шнейдермана и запись на языке псевдокода. Программа на языке Visual Basic for Application даёт возможность ввести с клавиатуры массив чисел и вызывает подпрограмму-процедуру SumArray, суммирующую его отрицательные элементы:
Sub SumArray(A() As Integer, n As Integer, _ m As Integer, S As Integer) S = 0 For i = 1 To n For j = 1 To m If A(i, j) < 0 Then S = S + A(i, j) Next j Next i End Sub
Sub VV() Dim B(1 To 3, 1 To 2) As Integer Dim S As Integer For i = 1 To 3 For j = 1 To 2 B(i, j) = InputBox("B(" & i & "," & j & ")=") Next j Next i SumArray B, 3, 2, S MsgBox "Сумма отрицательных элементов массива равна: " &_ CStr(S) End Sub
Блок-схемы программ Процедура SumArray
Программа VV
Диаграммы Насси-Шнейдермана
Программа VV Процедура SumArray
Запись программы с помощью псевдокода:
1. Программа VV: начало целый массив B(от1 до 3, от 1 до 2) целая переменная S,i,j для i=1 до 3 с шагом 1 для j=1 до 2 с шагом 1 ввод B(i,j) конеццикла конеццикла процедура SumArray(B,3,2,S) вывод S конец
2. Процедура SumArray:
начало целый массив B(от1 до 3, от 1 до 2) целая переменная S,i,j S=0 для i=1 до 3 с шагом 1 для j=1 до 2 с шагом 1 если B(i,j)<0 то S=S + B(i,j) конеццикла конеццикла конец
Дата добавления: 2015-05-10; Просмотров: 886; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |