Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика.pdf
Скачиваний:
305
Добавлен:
02.03.2016
Размер:
600.39 Кб
Скачать

PRINT " НОД ="; nod

END

5.3. Базовые алгоритмические структуры

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

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

При описании алгоритмов можно выделить и наглядно представить три простейшие структуры:

последовательность двух или более операций,

выбор направления,

повторение.

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

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

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

41

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

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

подготовку (инициализацию параметров) цикла,

выполнение вычислений в теле цикла,

модификацию параметров цикла,

проверку условия окончания цикла.

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

5.3.1. Структура «следование»

Структура «следование» имеет вид:

S1

SN

где S1, ..., SN — операторы.

На языках программирования она реализуется как последовательность операторов, следующих один за другим:

< оператор1>

<операторN>.

5.3.2. Структура «развилка»

Структура «развилка» имеет вид:

42

+

 

P

S1 S2

где Р – логическое выражение (условие), S1, S2 — операторы или группы операторов.

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

Бейсик

Паскаль

Си

IF <выражение> THEN

if <выражение>

if (<выражение>)

<оператор1>

then <оператор1>

<оператор1>;

ELSE

else <оператор2>;

else <оператор2>;

<оператор2>

 

 

END IF

 

 

Здесь <выражение> — логическое выражение (условие), <оператор> — это либо один оператор, либо группа операторов. В Паскале группа операторов заключается в операторные скобки begin — end, в Си — в фигурные скобки {}.

Структура развилка используется также в неполной форме. Такой вид развилки называется неполной условной конструкцией.

Структура неполной развилки имеет вид:

+

P

 

 

S

где Р — логическое выражение (условие), S — оператор или группа операторов.

Она реализуется следующим образом.

 

 

 

 

Бейсик

Паскаль

Си

IF <выражение> THEN

if <выражение>

if (<выражение>)

<оператор1>

then <оператор1>;

<оператор1>;

END IF

 

 

43

5.3.3. Структура «выбор»

Структура «выбор» является развитием структуры «развилка». В отличие от структуры «развилка» в ней имеется возможность выбора более двух действий. Она имеет вид:

где P1, …, РN — логические выражения (условия); S1, ..., SN+1 — операторы.

P1

+

 

 

S1

 

 

 

 

 

 

P2

+

 

 

S2

 

 

 

 

 

 

 

PN

+

 

 

SN

 

 

 

SN+1

На Бейсике данная структура реализуется следующим образом:

Бейсик

IF <условие1> THEN

 

<оператор1>

 

ELSEIF <условие2> THEN

 

<оператор2>

 

 

ELSEIF <условиеN> THEN

 

<операторN>

 

ELSE <операторN+1>

 

END IF

На блок-схемах структура «выбор» изображается также по-другому:

W

S1

 

S2

SN

 

SN+1

 

 

 

 

 

 

 

 

 

где W — выражение, S1, S2, …, SN+1 – операторы.

44

На Бейсике, Паскале и Си она реализуется в виде оператора варианта.

Бейсик

SELECT CASE <выражение>

 

CASE <условиe1>

 

<оператор1>

 

 

CASE <условиeN>

 

<операторN>

 

CASE ELSE

 

<операторN+1>

 

END SELECT

Паскаль

case <выражение> of

 

<список констант1> : <оператор1> ;

 

. . .

 

<список константN> : <операторN> ;

 

else <операторN+1>

 

end ;

Си

switch (<выражение>)

 

case <константа1> : <оператор1> ; break;

 

. . .

 

case <константаN> : <операторN> ; break;

 

default : <операторN+1> ; break;

Данная структура используется также в неполной форме. В этом случае она реализуется следующим образом.

Бейсик

SELECT CASE <выражение>

IF <условие1> THEN

 

CASE <условиe1>

<оператор1>

 

<оператор1>

ELSEIF <условие2> THEN

 

 

<оператор2>

 

CASE <условиeN>

 

<операторN>

ELSEIF <условиеN> THEN

 

END SELECT

<операторN>

Паскаль

сase <выражение> of

END IF

 

 

 

<список констант1> : <оператор1> ;

 

 

. . .

 

 

end ;

<список константN> : <операторN> ;

 

 

 

Си

switch (<выражение>)

 

 

case

<константа1> : <оператор1> ; break;

 

 

. . .

 

 

case

<константаN> : <операторN> ; break;

45