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

Вид материалаМетодическое пособие

Содержание


VI.7.Вопросы для самопроверки
VII. Операторы цикла
"Постусловие" "предусловие"
Print "x", "f"
Оператор цикла с предусловием (цикл While)
Оператор цикла с постусловием (цикл Repeat..untiI)
Оператор цикла с параметром (цикл For)
Подобный материал:
1   ...   9   10   11   12   13   14   15   16   ...   25

VI.7.Вопросы для самопроверки


1. Какая команда называется командой ветвления?

2. Какие служебные слова образуют структуру команды?

Формы команды ветвления.

3. Что надо помнить при организации команды ветвления в алгоритме?

4. Особенности команды ветвления на Бейсике и на Пас­кале.

5. Что такое разветвленный алгоритм?

(ответы на все вопросы сопровождать примерами)

VII. Операторы цикла


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


Структура цикла "ДО": Структура цикла "ПОКА"

"ПОСТУСЛОВИЕ" "ПРЕДУСЛОВИЕ"



нет


нет

Цикл "ДО" применяется при необходимости выполнить какие-либо вычисления несколько раз до выполнения некоторого условия. Особенность этого цикла в том, что он всегда выполняется хотя бы один раз, так как первая проверка условия выхода из цикла выполнено.

Цикл "ПОКА" отличается от цикла "ДО" тем, что проверка условия проводится до выполнения тела цикла, и если при первой проверке условие выхода из цикла выполняется, то тело цикла не выполняется ни разу.

VII.1.Бейсик


В Бейсике - это пара операторов FOR - NEXT.

FOR v=A1 TO A2 STEP A3

NEXT v

где v - любая переменная - управляющая переменная цикла;

A1, A2, A3 - начальное, конечное значения и шаг изменения управляющей переменной цикла - любые арифметические выражения.

Если A3=1, то конструкцию STEP A3 можно опустить. Операторы, расположенные между операторами FOR и NEXT, образуют тело цикла и выполняются многократно.

Выполнение цикла, образованного операторами FOR-NEXT, заключается в следующем: переменной v присваивается начальное значение A1, и она сравнивается с конечным значением A2. Если при положительном шаге A3 удовлетворяется условие A1<=A2 или при отрицательном шаге A3 удовлетворяется условие A1>=A2, то выполняются операторы, расположенные между операторами FOR-NEXT, и по оператору NEXT осуществляется возврат к началу цикла. Значение v изменяется на шаг A3, т. е. v=v+ A3 , и снова проверяется условие. Если условие удовлетворяется, то тело цикла выполняется повторно. В противном случае происходит выход из цикла и переход к оператору, следующему за NEXT.

пример: 10 FOR I=1 TO 100

20 NEXT I

30 END

пример задачи: 10 REM Табулирование
  1. PRINT "X", "F"
  1. FOR X=0 TO 1 STEP .05
  1. F=LOG (X+1) / (X2+1)
  1. PRINT X, F
  1. NEXT X



VII.2.Паскаль


Имеется три основных вида циклов: цикл while, цикл repeat и цикл for. Рассмотрим их в этом же порядке.

Оператор цикла с предусловием (цикл While)


Оператор while используется для проверки некоторого ус­ловия в начале цикла. Введем следующую программу:

program Hello;

var

Count: integer;

begin

Count:= 1;

while Count <= 10 do begin

Writeln(' Здравствуйте и до свидания ');

Inc(Count)

end;

Writeln(' Это конец! ') end.

Первое, что произойдет при запуске этой программы, это присваивание Count значения 1, затем следует цикл while. Здесь сначала проверяется, не является ли значение Count меньшим или равным 10. Если да, то выполняется тело цикла  (begin…end). При этом на экране печатается сообщение "Здравствуйте и до свидания", затем значение Count увеличи­вается на 1. Count проверяется заново и тело цикла выполня­ется еще раз. Это продолжается до тех пор, пока значение Count при проверке меньше или равно 10. Как только Count принимает значение 11; цикл завершается, и на экране печата­ется строка "This is the end!" (" Это конец ").

формат оператора while имеет вид:

while выражение do оператор

где "выражение" - это булевское выражение, а оператор - оди­ночный или составной оператор.

В цикле while вычисляется выражение. Если оно имеет значение True, то оператор выполняется и выражение вычисля­ется заново. Если выражение имеет значение False, то цикл while завершается и выполнение программы продолжается.

Оператор цикла с постусловием (цикл Repeat..untiI)


Второй вид представлен циклом repeat..unti1, который использован в программе DORATIO.PAS:

program DoRatio;

var

A,В: integer;

Ratio: real;

Ans: char;

begin

repeat

Write(' Введите два числа: ');

Readln(A,B);

Ratio := A / B;

Writeln(' Отношение равно ', Ratio)

Write(' Повторить (Y/N) ');

Readln(Ans)

until (Ans = ' n ') or (Ans = ' N ')

end.

Как указывалось выше, эта программа повторно выполняет­ся до тех пор, пока не будет получен ответ n или N на вопрос "Повторить". Другими словами, заключенное между repeat и until повторно выполняется до тех пор, пока выражение после until имеет значение True.

Обобщенный формат для цикла repeat..unti1 имеет вид:

repeat

оператор;

оператор;

• • • оператор until выражение

Имеется три основных различия между циклом while и цик­лом repeat. Во-первых, операторы в цикле repeat всегда вы­полняются хотя бы один раз, поскольку проверка выражения осуществляется не сразу после ключевого слова repeat. Наобо­рот, в цикл while, если выражение изначально имеет значение False, то пропускается все тело цикла.

Во-вторых, цикл repeat выполняется до тех пор, пока вы­ражение не примет значение True; в отличие от него цикл while выполняется, пока выражение имеет значение True. Это означает, что следует внимательно заменять один тип цикла на другой. Например; рассмотрим программу HELLO, переписанную с использованием цикла repeat:

program Hello;

var

Count: integer;

begin

Count:= 1;

repeat .

Writeln (' Здравствуйте и до свидания ');

Inc(Count)

until Count > 10;

Writeln(' ЭTO конец! ')

end.

Отметим, что теперь проверяется, не является ли значе­ние Count большим 10, в то время как в цикле while проверя­лось, не является ли значение Count меньшим или равным 10.

Наконец, цикл repeat может содержать несколько операто­ров, не образующих составной оператор. Заметьте, что в пос­ледней программе не используется begin..end, в то время как в варианте с циклом while это имело место.

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

Оператор цикла с параметром (цикл For)


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

ргоgram Hello;

var

Count: integer;

begin

for Count:= 1 to 10 do

Writeln(' Здравствуйте и до свидания '); \

Writeln(' Этo конец ')

end.

При выполнении этой программы можно убедиться, что рас­сматриваемый цикл выполняется так же, как циклы while и repeat и фактически он точно эквивалентен циклу while. Обоб­щенный формат для цикла for имеет следующий вид:

for индекс:= выражение1 to выражение 2 do оператор

где индекс - это переменная скалярного типа (целого типа, символьного, булева или перечисляемого типа), "выражение1" и "выражение 2" представляют собой выражения, имеющие тип, сов­местимый с индексом, а "оператор" - это одиночный или сос­тавной оператор. Индекс увеличивается на 1 после каждого прохождения цикла.

Вы можете также уменьшать, а не увеличивать индексную переменную, для этого нужно заменить ключевое слово to на dоwntо.

Цикл for эквивалентен следующей программе:

index:= expri;

while index <= expr 2 do

begin

оператор

Inc(индекс)

end;

Основным недостатком цикла for является то, что он поз­воляет увеличивать или уменьшать только на 1. К его основным преимуществам относятся краткость и возможность использова­ния символьного и перечисляемого типов в диапазоне значений.