Это методическое пособие предназначено для желающих самостоятельно научиться решать задачи по основным разделам предмета на языках Бейсик и Паскаль. Предлагаемая методика включает
Вид материала | Методическое пособие |
- Учебно-методическое пособие таганрог 2005 ббк 67. 01 Составитель, 578.81kb.
- Курс. 01;Мпк. 01;3 методическое пособие по курсовой работе методика воспитательной, 230.31kb.
- Методика преподавания хореографических дисциплин Учебно-методическое пособие для специальности, 1490.89kb.
- Ниязов Олег Нургалиевич Ниязов О. Н. Н60 методическое пособие, 75.1kb.
- Учебно-методическое пособие Йошкар-Ола, 2009 ббк п 6 удк 636, 3772.57kb.
- Учебно-методическое пособие и ситуационные задачи по урологии для студентов волгоград,, 482.99kb.
- Панасенко Александр Иванович, профессор кафедры органической и биологической химии, 259.01kb.
- Учебное пособие по курсу «управление банковским продуктом» Составитель: к э. н., доцент, 955.86kb.
- Предлагаемая работа представляет собой попытку в краткой форме изложить теоретический, 1296.91kb.
- Российской федерации, 664.65kb.
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 Табулирование
- PRINT "X", "F"
- FOR X=0 TO 1 STEP .05
- F=LOG (X+1) / (X2+1)
- PRINT X, F
- 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. К его основным преимуществам относятся краткость и возможность использования символьного и перечисляемого типов в диапазоне значений.