2. Свойства алгоритмов.
Использование вычислительных машин в качестве исполнителей алгоритмов предъявляет ряд требований к алгоритмам. В отличие от людей, компьютер может выполнять только точно определенные операции. Поэтому машинные алгоритмы должны обладать следующими свойствами:
1. Чтобы исполнитель сумел решить поставленную перед ним задачу, используя алгоритм, он должен уметь выполнить каждое его указание. Иными словами, он должен понимать суть управления. То есть при составлении алгоритма нужно обязательно учитывать "правила игры", т.е. систему предписаний (или систему команд), которые понимает ЭВМ. Например, при решении какой-то задачи студент использовал обращение к функциям sin x (это тригонометрическая функция) и к функции Бесселя (это цилиндрическая функция), но компьютер (как и читатель, наверное) не понимает последней. Она создателями данного класса машин не предусмотрена. Следовательно, алгоритма (в целом) машина не поймет. Мы будем говорить в данном случае о "понятности" алгоритма.
Под "ПОНЯТНОСТЬЮ" алгоритмов понимают указания, которые понятны исполнителю.
2. Будучи понятным, алгоритм не должен все же содержать предписаний, смысл которых может восприниматься неоднозначно. Этими свойствами часто не обладают предписания и инструкции, которые составляются для людей. Например.
В приведенном выше рецепте приготовления омлета сказано: "Разбить в эту смесь 3 яйца и все -это хорошо взбить ложкой". На бытовом уровне нам понятно, что речь идет о трех куриных яйцах (а каких еще! - скажете вы). Но яйца могут быть и голубиные, и утиные, и даже страусиные (все резко отличаются по величине друг от друга). Здесь явно "закралась" неоднозначность.
Или указания типа: "посолить по вкусу", "насыпать две-три ложки сахарного песку", "получил оценку 4 или 5", "жарить до готовности"» "копать от забора до обеда" не могут встречаться в алгоритмах. Очевидно, что понятные в определенных ситуациях для человека предписания такого типа могут поставить в тупик ЭВМ.
Или вспомним известную всем притчу о царской воле. Царь приказал подчиненным выполнить такой указ: "Казнить нельзя помиловать". Он забыл в указе поставить запятую, а подчиненные не знали, что им делать. Указание "казнить нельзя, помиловать" и "казнить, нельзя помиловать" задают совсем разные действия, от которых зависит жизнь человека.
Кроме того, в алгоритмах недопустимы такие ситуации, когда после выполнения очередного предписания алгоритма исполнителю неясно, какое из них должно выполняться на следующем шаге.
Под ОДНОЗНАЧНОСТЬЮ алгоритмов понимается единственность толкования правил выполнения действий и порядка их выполнения.
3.Как мы уже знаем, алгоритм задает полную последовательность действий, которые необходимо выполнять для решения задачи. При этом, как правило, для выполнения этих действий их расчленяют (разбивают) в определенной последовательности на простые шаги. Возникает упорядоченная запись совокупности четко разделенных предписаний (директив, команд), образующих прерывную (или, как говорят, дискретную) структуру алгоритма. Выполнить действия следующего предписания можно лишь выполнив действия предыдущего.
Именно программирование — это процесс разложения сложной задачи на ряд простых действий.
Под ДИСКРЕТНОСТЬЮ понимают возможность разбиения алгоритма на отдельные элементарные действия, выполнение которых человеком или машиной не вызывает сомнения.
4. Очень важно, чтобы составленный алгоритм обеспечивал решение не одной частной задачи, а мог выполнять решение широкого класса задач данного типа.
Например. Необходимо решить конкретное квадратное уравнение х4- 4х+3=0. Но ведь можно составить алгоритм решения любого квадратного уравнения вида: ах2 + bх + с =0.
Действительно, для случая, когда дискриминант D = b2 - 4ас >0, корни квадратного уравнения можно найти по известным формулам.
если же D<0, то действительных корней не существует. Таким образом, этот алгоритм можно использовать для любого квадратного у равнения. Такой алгоритм будетМАССОВЫЙ.
Под КОНЕЧНОСТЬЮ алгоритмов понимают завершение работы алгоритма в целом за конечное число шагов.
Еще к желательным свойствам алгоритмов нужно отнести РЕЗУЛЬТАТИВНОСТЬ, она предполагает, что выполнение алгоритмов должно завершаться получением определенных результатов.
Подобные ситуации в информатике возникают, когда какие-либо действия невозможно выполнить. В математике такие ситуации называют неопределенностью. Например, деление числа на ноль, извлечение квадратного корня из отрицательного числа, да и само понятие бесконечности неопределенно. Поэтому, если алгоритм задает бесконечную последовательность действий, то в этом случае он также считается результатом неопределенным.
Но можно действовать по-другому. А именно: указать причину неопределенного результата. В таком случае, пояснения типа "на ноль делить нельзя", "компьютер выполнить такое не в состоянии" и т.п. можно считать результатом выполнение алгоритма.
Таким образом, свойство результативности состоит в том, что во всех" случаях можно указать, что мы понимаем под результатом выполнения алгоритма.
И последнее общее свойство алгоритмов - их правильность.
Мы говорим, что алгоритм ПРАВИЛЬНЫЙ, если его выполнение поет правильные результаты решения поставленных задач.
Соответственно мы говорим, что алгоритм СОДЕРЖИТ ОШИБКИ, если можно указать такие допустимые исходные данные или условия, при которых выполнение алгоритма либо не завершится вообще, либо не будет получено никаких результатов, либо полученные результаты окажутся неправильными.
- 7. Что такое электронная таблица?
- Ввод и редактирование данных
- Формат данных
- Функции и формулы
- Понятие формулы
- Понятие функции
- Мастер функций
- [Править]Применение в серверных приложениях
- [Править]Мультиплексирование
- Методы и средства защиты от несанкционированного доступа
- Криптография и шифрование Что такое шифрование
- Основные термины и определения криптографии
- Открытые ключи
- Проблемы использования открытых/закрытых ключей
- Сертификат
- [Править]Центры доверия
- Создание отчётов
- Изменение структуры отчёта
- Создание таблиц в режиме конструктора
- Формирование запросов на выборку
- Параметрические запросы
- Запросы на обновление
- Редактирование запросов
- Поля и записи
- Порядковые типы
- Целые типы
- Символьные типы
- Булевы типы
- Перечислимые типы
- Поддиапазонные типы
- Действительные типы
- [Править]Использование в форматах файлов
- 3.1. Выполнение задания
- 6.2 Построитель выражений
- Создание кнопочной формы с помощью диспетчера кнопочных форм
- Примечания
- Групповые функции в операторе select:
- Раторы сравнения
- Виды отношений
- Отношения в App Engine Один-ко-многим
- Один-к-одному
- Многие-ко-многим
- 2. Свойства алгоритмов.
- Вывод «Основные свойства алгоритмов»:
- 3. Способы описания алгоритмов.
- Тестирование программного обеспечения
- [Править]Уровни тестирования
- [Править]Статическое и динамическое тестирование
- [Править]Регрессионное тестирование
- [Править]Тестовые скрипты
- [Править]Тестирование «белого ящика» и «чёрного ящика»
- [Править]Покрытие кода
- Обеспечение целостности базы данных
- Электронная почта (e-mail)
- Группы новостей
- Службы мгновенных сообщений
- Основы tcp/ip
- Краткое описание протоколов семейства tcp/ip с расшифровкой аббревиатур
- Архитектура tcp/ip
- Уровни сетей и протоколы tcp/ip
- Краткое заключение