Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Краткие теоретические сведения. В практике программирования циклы – выполняющиеся повторения одних и тех же простых или составных операторов – играют очень важную роль



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

Итеративный цикл (с шагом)

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

for <Параметр цикла>:= <Начальное значение> to <Конечное значение> do

<Оператор>; { шаг = 1 }

for <Параметр цикла>:= <Начальное значение> downto <Конечное значение> do

<Оператор>; { шаг = -1 }

На блок-схеме алгоритма цикл обозначается следующей структурой:

Оператор, представляющий тело цикла, может быть простым, составным или пустым (в этом случае после Do сразу ставится «;»).

Примеры (сколько раз выполниться цикл?):

for i:= 1 to 3 do; { 7 раз i: Integer, byte,... }

for ch:= ‘a’ to ‘d’ do; { 4 раза ch: char }

for i:= 5 to 5 do; { 1 раз }

for i:= 7 to 1 do; { ни разу }

for i:= 7 downto 1 do; { 7 раз }

for i:= -7 to 7 do; { 15 раз }

for i:= 3.5 to 5.5 do; { Ошибка!!! Не перечислимый тип }

for i:= True to False do; { ни разу }

for ch:= ‘А’ to ‘Я’ do; {? раз }

for ch:= ‘а’ to ‘я’ do; {? раз }

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

Далее приведены основные правила, необходимые для использования оператора for:

Параметр цикла, начальное значение и конечное должны быть перечислимого типа.

Количество итераций вычисляется по формуле: <Кол-во операций> = <Конечное значение> - <Начальное значение> +(-) 1

Параметр цикла внутри цикла переопределять нельзя.

For i:=i+5 to n do;

For i:=1 to n do i:= i+5;

Параметр цикла за пределами цикла считается неопределенным.

Заголовок цикла читается только один раз.

Компилятор несоблюдение правила № 2 «не замечает», но программа с приведенными заголовками не заслуживает никакого доверия.

Итеративные циклы – очень быстрые и генерируют компактный выполнимый код, но правила №1-2 ограничивают их применение.

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

Цикл с предусловием

Синтаксис цикла с предусловием следующий:

While <Условие входа в цикл> do <Оператор>;

На блок-схеме алгоритма цикл обозначается следующей структурой:

Оператор («тело цикла») будет выполняться до тех пор, пока выполняется логическое условие, т.е. пока значение «Условия» равно True. Само условие может быть логической константой (возможен «вечный цикл»), переменной или выражением с логическим результатом. Условие проверяется перед выполнением каждой итерации, поэтому если условие сразу не выполняется, то «тело цикла» игнорируется и оператор (простой или составной) выполняться не будет.

Основные правила, которые необходимо соблюдать для правильного использования цикла While:

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

Чтобы программа не «зациклилась», действие (оператор) должно влиять на условие выполнения цикла;

Переменная цикла должна изменяться внутри цикла принудительно, в явной форме;

За пределами цикла переменная цикла сохраняет свое значение.

Переменная цикла может иметь любой числовой тип.

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

Цикл с постусловием

Синтаксис цикла с постусловием следующий:

Repeat

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

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

...

<ОператорN>;

Until <Условие выхода из цикла>;

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

На блок-схеме алгоритма цикл обозначается следующей структурой:

 
 
Repeat   Until False; { Вечный цикл }  


Замечание: В силу своей гибкости циклы While и Repeat используются для контроля ввода переменных

Примеры

PROGRAM fac1;

USES Crt;

VAR

f,n:real;

a:integer;

BEGIN {Начало программы}

Clrscr ;{Очистка экрана}

f:=1 ;{Присвоение начального значения факториала равного 1}

Writeln('Vvedite kol-vo elementov posledovatelnosti');

Readln(n); {Ввод с клавиатуры числа, факториал которого необходимо вычислить}

{Вычисление факториала с помощью цикла с постусловием}

Repeat {Начало цикла}

a:=a+1 ;{Увеличение счетчика на 1}

f:=f*a ;{Вычисление факториала}

Until a=n ;{Проверка условия}

Writeln('f=',f:2:2); {Вывод факториала на экран}

Readln;

END.

=========================================================

PROGRAM fac2;

USES Crt;

VAR

f,n:real;

a:integer;

BEGIN {Начало программы}

Clrscr; {Очистка экрана}

f:=1 ;{Присвоение начального значения факториала равного 1}

Writeln('Vvedite kol-vo elementov posledovatelnosti');

Readln(n );{Ввод с клавиатуры числа факториал которого необходимо вычислить}

{Вычисление факториала с помощью цикла с предусловием}

While a<n do {Проверка условия}

begin

a:=a+1 ;{Увеличение счетчика на 1}

f:=f*a ;{Вычисление факториала}

end;

Writeln('f=',f:2:2 );{Вывод факториала на экран}

Readln;

END.

===========================================================

PROGRAM fac3;

USES Crt;

VAR

f:real;

n,a:integer;

BEGIN {Начало программы }

Clrscr ;{Очистка экрана}

f:=1; {Присвоение начального значения факториала равного 1}

Writeln('Vvedite kol-vo elementov posledovatelnosti');

Readln(n); {Ввод с клавиатуры числа факториал которого необходимо вычислить}

{Вычисление факториала с помощью цикла со счетчиком}

For a:=1 to n do

f:=f*a ;{Вычисление факториала}

Writeln('f=',f:2:2 );{Вывод факториала на экран}

Readln;

end.

Практическая работа №4 (2 часа)

Тема: Составление и запись алгоритмов для вычисление суммы элементов массива, нахождение минимального элемента в виде блок-схемы.

Цель: Приобрести навыки составления и анализа алгоритмов заполнения и обработки элементов массивов, представления их в виде блок-схем.

Задание: Разработатьалгоритм решения задачи согласно варианту, представить его в виде блок-схемы.

Вариант 1. Заполнить матрицу 10х10 следующим образом:

Подсчитать количество ненулевых элементов и их произведение, найти минимальный элемент 2-ой строки, вывести полученные результаты.

Вариант 2. Заполнить матрицу 10х10 следующим образом:

Подсчитать сумму квадратов элементов, найти минимальный элемент 1-ой строки и вывести полученные результаты.

Вариант 3. Заполнить матрицу 10х10 следующим образом:

Подсчитать количество ненулевых элементов матрицы, у которых сумма индексов – четное число, найти максимальный элемент 5-ой строки, вывести полученные результаты.

Вариант 4. Заполнить матрицу 10х10 следующим образом:

Подсчитать сумму элементов матрицы, у которых сумма индексов – нечетное число, найти максимальный элемент 2-ой строки, вывести полученные результаты.

Вариант 5. Заполнить матрицу 10х10 следующим образом:

Подсчитать количество не нулевых элементов, больших 4 и меньших 9, найти максимальный элемент 2-ого столбца, вывести полученные результаты.

Вариант 6. Заполнить матрицу 10х10 следующим образом:

Подсчитать количество не нулевых элементов. Найти произведение всех элементов больших 4 и меньших 8, найти максимальный элемент 6-ой строки, вывести полученные результаты.

Вариант 7. Заполнить матрицу 10х10 следующим образом:

Найти сумму нечетных элементов матрицы, найти максимальный элемент 7-ого столбца, вывести полученные результаты.

Вариант 8. Заполнить матрицу 10х10 следующим образом:

Найти сумму четных элементов матрицы, найти максимальный элемент 6-ого столбца, вывести полученные результаты.

Вариант 9. Заполнить матрицу 10х10 следующим образом:

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

Вариант 10. Заполнить матрицу 10х10 следующим образом:

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





Дата публикования: 2015-02-22; Прочитано: 289 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...