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

C_Kurs_Lekt / DOC_RAZNOE / TEMA-2 / Алгоритмы_for_s

.pdf
Скачиваний:
11
Добавлен:
13.02.2016
Размер:
232.88 Кб
Скачать

АЛГОРИТМЫ

1

Алгоритмы и способы их описания

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

Название "алгоритм" произошло от латинской формы имени среднеазиатского математика аль-Хорезми — Algorithmi.

Алгоритм (программа), содержит информацию о правилах получения результирующей (выходной) информации из заданной (входной) информации.

Приведем некоторые определения АЛГОРИТМА:

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

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

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

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

Алгоритмы должны обладать свойствами:

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

2.Определенности (детерминированности). Каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвольной трактовки. Т.е. должны быть определены любое предписание алгоритма и порядок выполнения предписаний алгоритма. Например, предписание «Сравнить числа а и b» может быть истолковано по-разному и не является определенным. Такие указания в алгоритмах недопустимы. Указание же «Если число а меньше числа b, то переменной c присвоить значение а, в противном случае переменной c присвоить значение b,» не допускает неоднозначноготолкования и вполне может быть указанием некоторого алгоритма.

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

4.Формальности. Алгоритм можно выполнить, совершенно отвлекаясь от той суммы знаний, которая нужна для того, чтобы написать алгоритм. Любой исполнитель, способный воспринимать

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

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

Предписания алгоритма должны иметь вид «выполнить», «сделать», а не «выполнять», «делать».

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

АЛГОРИТМЫ

2

Составляя алгоритм для определенного исполнителя, допустимо использовать лишь такие предписания, которые он может исполнить.

Формы представления алгоритмов

На практике наиболее распространены следующие формы представления алгоритмов: словесная (записи на естественном языке); графическая (изображения из графических символов);

псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.); программная (тексты на языках программирования).

Словесный способ записи алгоритмов представляет собой описание последовательных этапов обработки данных. Алгоритм задается в произвольном изложении на естественном языке.

Например. Записать алгоритм нахождения наибольшего общего делителя (НОД) двух натуральных чисел.

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

2.определить большее из чисел;

3.заменить большее из чисел разностью большего и меньшего из чисел;

4.повторить алгоритм с шага 2.

Описанный алгоритм применим к любым натуральным числам и должен приводить к решению поставленной задачи. Убедитесь в этом самостоятельно, определив с помощью этого алгоритма наибольший общий делитель чисел 125 и 75.

Словесный способ не имеет широкого распространения по следующим причинам:

такие описания строго не формализуемы;

страдают многословностью записей;

допускают неоднозначность толкования отдельных предписаний.

Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным.

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

одного или нескольких действий, связи между блоками отображаются в виде стрелок.

 

Такое представление алгоритма называется схемой алгоритма или блок-схемой.

 

 

Для построения блок-схем введены обозначения. ГОСТ 19.002-80 и ГОСТ 19.003-80

 

Название символа

Обозначение и пример заполнения

 

Пояснение

 

Процесс,

 

Вычислительное

действие

или

Вычислительный

 

последовательность действий

 

блок

 

 

 

 

 

 

 

 

Проверка

условий,

обеспечивает

Решение,

 

Логический блок

 

ветвление схемы в зависимости от

 

 

условий

 

 

 

 

Модификация

 

Начало цикла

 

 

 

 

 

Вычисления

 

по

подпрограмме,

Предопределенный

 

 

процесс

 

стандартной подпрограмме

 

 

 

Ввод-вывод в общем виде

 

Ввод-вывод

 

 

 

 

 

 

 

 

 

АЛГОРИТМЫ

3

Пуск-останов

Начало, конец алгоритма, вход и

 

выход в подпрограмму

 

Вывод результатов на печать

Документ

Перенос, разрыв потока:

Нумерация блока:

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

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

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

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

Алгоритм линейной структуры – алгоритм, в котором блоки выполняются последовательно друг за другом. Такой порядок выполнения блоков называется естественным.

Большинство реальных задач не соответствуют линейной структуре алгоритма.

Часто в зависимости от каких то промежуточных результатов необходимо организовать вычисления по одним либо другим формулам. Это выполняется алгоритмом разветвляющейся структуры. Алгоритмом разветвляющейся структуры – это алгоритм, в котором в зависимости от выполнения какого то логического условия вычисления могут идти по одной или другой (альтернативной) ветви.

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

Для организации цикла необходимо:

1.задать стартовые значения переменным, используемым в цикле;

2.задать начальное значения переменной, изменяющейся в цикле (ее называют параметром цикла, счетчиком);

3.проверить условие продолжения цикла;

4.если условие продолжения выполняется – выполнить тело цикла, в противном случае закончить выполнение цикла;

5.изменить значение переменной–параметра цикла;

6.продолжить выполнение с пункта 3.

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

Массивом называется конечная именованная последовательность однотипных величин, каждая из которых имеет номер (индекс).