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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

Алгоритм - точное предписание исполнителю совеpшить определенную последовательность действий для достижения поставленной цели за конечное число шагов.Одним из фундаментальных понятий в информатике является понятие алгоритма. Происхождение самого термина «алгоритм» связано с математикой.

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

Данное выше определение алгоритма нельзя считать строгим – не вполне ясно, что такое «точное предписание» или «последовательность действий, обеспечивающая получение требуемого результата».

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

Такими свойствами являются:

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

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

Результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов.

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

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

Такая трактовка понятия “алгоритм” является неполной и неточной.

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

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

Формы записей алгоритмов. Общие принципы.

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

Словесное описание алгоритма

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

Рассмотрим пример на алгоритме нахождение максимального из двух значений:

Определим форматы переменных X, Y, M, где X и Y – значения для сравнения, M – переменная для хранения максимального значения;получим два значения чисел X и Y для сравнения; сравним X и Y.если X меньше Y, значит большее число Y. Поместим в переменную M значение Y. Если X не меньше (больше) Y, значит большее число X. Поместим в переменную M значение X. Словесный способ не имеет широкого распространения по следующим причинам: такие описания строго не формализуемы; страдают многословностью записей; допускают неоднозначность толкования отдельных предписаний.

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

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

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

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

Псевдокод

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

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

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

Пример записи алгоритма на школьном алгоритмическом языке:

алг Сумма квадратов (арг цел n, рез цел S)

дано | n > 0

надо | S = 1*1 + 2*2 + 3*3 +... + n*n

нач цел i

ввод n; S:=0

нц для i от 1 до n

S:=S+i*i

Кц

вывод "S = ", S конец

Программное представление алгоритма

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

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

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

Типы данных в Паскале.

Операции над множествами.

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

Задания массива элементы которого вводятся с клавиатуры.

Пример 1.

Программа на Паскале

Program Faktorial

Var F:Longint; i,N:Integer;

Begin write('N=');

ReadLn(N);

F:=l; i:=l;

While i<N Do

Begin

F:=F*i;

i:=i+l

End;

WriteLn(N,'!=',F)

End.

Обратите внимание на операторы в теле цикла. При практическом использовании этой программы не следует забывать, что факториал — очень быстро растущая функция, и поэтому при определенных значениях N выйдет из диапазона, соответствующего типу long int. Задав для переменной F тип unsigned long, можно сдвинуть эту границу, но этого может оказаться недостаточно. Предлагаем в качестве самостоятельного задания исследовать предельные значения N для двух указанных типов переменной F. Интересно свойство следующего оператора: while (1); Это бесконечный пустой цикл. Использование в качестве выражения константы 1 приводит к тому, что условие повторения цикла все время остается истинным и работа цикла никогда не заканчивается. Тело в этом цикле представляет собой пустой оператор. При исполнении такого оператора программа будет «топтаться на месте». Рассмотрим еще один пример использования оператора цикла while. Вернемся к задаче итерационного вычисления суммы гармонического ряда: 1 +1/2+1/3+... с заданной точностью г (см.\ разд. 3.10, пример 2

Пример 2.

Программа на Паскале Программа на Си++

Var n: Integer; S,eps: // Сумма

Real; //гармонического ряда

Begin finclude <iostream.h>

Write ('Точность:'); #include <limits.h>

ReadLn(eps); void main()

n:=l; S:=0; {int n=l;

While (l/n>eps) double S=0, eps;

And(n<MAXINT) Do cout«"To4HOCTb: ";

Begin S:=S+l/n; cin»eps;

n:=n+l while (1.0/n>eps &&

End; n<INT_MAX)

WriteLn('Сумма=',S) S+=l./n++;

End. cout<<"\nCyMMa="<<S;}

Файл l i m i t s. h, подключаемый препроцессором, содержит определения предельных констант для целых типов данных. В частности, константа с именем INT_MAX равна максимальному значению типа i n t в данной реализации компилятора. Если для типа int используется двухбайтовое представление, то INT_MAX=327 67. В этом же заголовочном файле определены и другие константы: INT_MIN=-327 68; LONG_MAX=2147483647 И Т.Д. Цикл с постусловием. Формат оператора цикла с постусловием: do оператор while (выражение); Цикл выполняется до тех пор, пока выражение отлично от Нуля, т.е. заключенное в нем условие цикла истинно. Выход из Цикла происходит после того, как значение выражения станет ложным, иными словами равным нулю. Таким образом, в отличие от оператора repeat... u n t i l, используемого в Паскале, где в конце пишется условие выхода из цикла, в операторе do... while в Си в конце пишется условие повторения цикла. В качестве примера рассмотрим программу вычисления N1, в которой используется цикл с постусловием, и сопоставим ее с аналогичной программой на Паскале.

Пример 3.

Программа на Паскале

Program Faktorial

Var F:Longint; i,N:

Integer;

Begin Write('N=');

ReadLn(N);

F:=l; i:=l;

Repeat

F:=F*i;

i:=i+l

Until i>N;

WriteLn(N,'!=',F)

End.

Процедуры в Паскале

Структура процедуры аналогична структуре программы и состоит из заголовка и блока (тела процедуры).

PROCEDURE <имя>(<сп. форм. пар.>);
<блок>
где PROCEDURE – зарезервированное слово процедура;
<имя> - имя процедуры, является уникальным, выбирается по общим пра-
вилам, желательно чтобы оно отражало смысл процедуры;
<сп. форм. пар.> - список формальных параметров т.е. список имен обозначаю-
щих исходные данные и результат работы процедуры с указани-
ем их типов;
<блок> - тело процедуры представляющее разделы описаний и раздел
операторов, представляющий составной оператор (совокупность
операторов, заключенных в операторные скобки BEGIN END).

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

Глобальные объекты – это объекты, описанные в разделах описаний основной программе. Областью их действия является программа и все, содержащиеся в ней подпрограммы.

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

Локальные описания отменяют глобальные.
Оператор вызова процедуры активизирует процедуру.
Он имеет вид: <имя>(<сп. факт. пар.>); где: <имя> -имя процедуры; <сп. факт. пар.> - список фактических параметров.

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

Виды параметров в Паскале

Различают четыре вида параметров: - параметры- значения; - параметры- переменные;- параметры- процедуры; - параметры- функции.

Параметры- значения – используются для передачи исходных данных в подпрограмму. Формальные параметры при этом записываются через запятую с указанием их типов. Они получают значения фактических параметров, но не могут передавать свои значения фактическим параметрам.

Параметры- переменные – играют роль как входных, так и выходных (возвращаемых) параметров процедуры. В списке формальных параметров они перечисляются после слова Var с указанием их типов.

Параметры- процедуры – указываются после слова Procedure.

Параметры- функции -. указываются после слова Function.

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

Алгоритм - точное предписание исполнителю совеpшить определенную последовательность действий для достижения поставленной цели за конечное число шагов.Одним из фундаментальных понятий в информатике является понятие алгоритма. Происхождение самого термина «алгоритм» связано с математикой.

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

Данное выше определение алгоритма нельзя считать строгим – не вполне ясно, что такое «точное предписание» или «последовательность действий, обеспечивающая получение требуемого результата».

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

Такими свойствами являются:

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

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

Результативность (конечность) – алгоритм должен приводить к решению задачи за конечное число шагов.

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

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

Такая трактовка понятия “алгоритм” является неполной и неточной.

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



Поделиться:


Последнее изменение этой страницы: 2016-09-18; просмотров: 460; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.21.104.109 (0.041 с.)