Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
15
Добавлен:
31.03.2015
Размер:
97.28 Кб
Скачать

6 Понятие Алгоритма, его свойства.

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

дискретностью, массовостью, определенностью, результативностью, формальностью.

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

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

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

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

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

7 Способы записи алгоритмов (виды) алгоритмов.

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

Словесное описание представляет структуру алгоритма на естественном языке. Например, любой прибор бытовой техники (утюг, электропила, дрель и т.п.) имеет инструкцию по эксплуатации, т.е. словесное описания алгоритма, в соответствии которому данный прибор должен использоваться. Никаких правил составления словесного описания не существует. Запись алгоритма осуществляется в произвольной форме на естественном, например, русском языке. Этот способ описания не имеет широкого распространения, так как строго не формализуем (под «формальным» понимается то, что описание абсолютно полное и учитывает все возможные ситуации, которые могут возникнуть в ходе решения); допускает неоднозначность толкования при описании  некоторых действий; страдает многословностью. 

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

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

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

Программа - описание структуры алгоритма на языке  алгоритмического программирования.

8 Примеры алгоритмов вычисления конечных сумм и произведений, итерационные алгоритмы на основе общего члена ряда и на основе промежуточных результатов

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

a := a+1; { Увеличение а на единицу } x := sin(x); { В х записывается значение синуса х } y := -y; { Изменение знака y } Значение переменной, которая участвует в операции пере присваивания, должно быть к этому моменту определено!

Ниже приведены примеры программ, вычисляющих следующие выражения

;    

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

В итерационных алгоритмах выход из тела цикла происходит при выполнении некоторого условия. Если блок проверки этого условия располагается до тела цикла, такие алгоритмы называются циклом с предусловием. Если блок проверки условия выхода из цикла располагается после тела цикла, такие алгоритмы называются циклом с постусловием.

Итерационные циклы

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

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

Пример. Составить алгоритм вычисления суммы ряда

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

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

При составлении алгоритма нужно учесть, что знаки слагаемых чередуются, и степень числа х в числителях слагаемых возрастает.

Решая эту задачу "в лоб" путем вычисления на каждом i-ом шаге частичной суммы

S:=S+(-1)**(i-1)*x**i/i ,

мы получим очень неэффективный алгоритм, требующий выполнения большого числа операций. Гораздо лучше организовать вычисления следующим образом: если обозначить числитель какого-либо слагаемого буквой р, то у следующего слагаемого числитель будет равен -р*х (знак минус обеспечивает чередование знаков слагаемых), а само слагаемое m будет равно р/i, где i - номер слагаемого.

Сравните эти два подхода по числу операций.

Алгоритм на школьном АЯ

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

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

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

9 Технология структурного программирования , структуризация программы, последовательность, альтернатива, цикл.

Технология структурного программирования

Мы рассмотрели множество тем: типы данных и операторы Паскаля, использование подпрограмм и модулей, работу с динамической памятью и файлами. Такой багаж позволяет писать довольно сложные программы, но коммерческий программный продукт можно создать, только следуя определенной дисциплине.

Рассмотрим свойства, отличающие кустарные поделки от профессиональных продуктов.

Критерии качества программы

Основное требование, предъявляемое в настоящее время к программе, — надежность. Под надежностью подразумевается способность программы работать в полном соответствии со спецификацией и адекватно реагировать на любые действия пользователя.

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

   Кроме того, программа должна быть выпущена к заявленному сроку. Это значит, что весь процесс производства программы должен четко планироваться и контролироваться.

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

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

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

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

Этапы создания структурной программы

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

Постановка задачи

Создание любой программы начинается с постановки задачи. Изначально задача формулируется в терминах предметной области, и необходимо перевести ее на язык понятий, более близких к программированию. Поскольку программист редко досконально разбирается в предметной области, а заказчик — в программировании (простой пример: требуется написать бухгалтерскую программу), постановка задачи может стать весьма непростым итерационным процессом. Кроме того, при постановке задачи заказчик зачастую не может четко и полно сформулировать свои требования и критерии.

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

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

• описание исходных данных и результатов (типы, форматы, точность, способ передачи, ограничения);

• описание задачи, реализуемой программой;

• способ обращения к программе;

• описание возможных аварийных ситуаций и ошибок пользователя.

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

Соседние файлы в папке Информатика (1 семестр) (билеты)