Конспект лекций по информатике для специальностей 2102, 2103 Автор доц., к т. н. Каширская Е. Н
Вид материала | Конспект |
- Конспект лекций бурлачков в. К., д э. н., проф. Москва, 1213.67kb.
- Конспект лекций по курсу "Начертательная геометрия и инженерная графика" Кемерово 2002, 786.75kb.
- Конспект лекций по дисциплине «Маркетинг», 487.79kb.
- Конспект лекций для студентов всех специальностей дневной и заочной формы обучения, 1439.07kb.
- Конспект лекций для студентов, магистров и аспирантов всех специальностей, 373.35kb.
- Конспект лекций для студентов по специальности i-25 01 08 «Бухгалтерский учет, анализ, 2183.7kb.
- Конспект лекций организация производства и маркетинг для студентов 3 курса специальностей, 2989.73kb.
- Конспект лекций по дисциплине «психология и педагогика» омск 2005, 2020.42kb.
- Конспект лекций по курсу «Организация производства», 2034.84kb.
- Конспект лекций по курсу «Организация производства», 2032.47kb.
2.8. Организация циклов
Большинство задач, решаемых на ЭВМ, невозможно представить в виде последовательности простых вычислений; часто приходится организовывать повторяемость одних и тех же вычислений.
2.8.1. Использование операторов условного и безусловного перехода
1) Искусственно вводим счетчик числа шагов цикла
2) Проверяем условие окончания циклических расчетов
3) Если надо продолжить, увеличиваем значение счетчика
Задача. Вычислить таблицу квадратов и корней целых чисел от 1 до 100.
Здесь счетчиком чисел может служить само число. Дадим ему имя N.
Использовать операторы условного перехода в программе крайне не желательно!
2.8.2. Цикл с параметром
Если число повторений цикла известно, используется цикл FOR, для которого нет необходимости принудительно увеличивать значение параметра цикла. Такое увеличение производится автоматически.
Общий вид оператора цикла с параметром:
А) Если начальное значение параметра меньше конечного, то используется форма вида:
FOR I: = M TO N DO оператор;
Б) Если начальное значение параметра цикла больше конечного, то используется форма вида:
FOR I: = N DOWNTO M DO оператор;
M и N- выражения задающие начальное и конечное значения
параметра I,
А - простой или составной оператор.
Если после слова DO необходимо записать несколько операторов, то следует воспользоваться составным оператором BEGIN оператор1;
оператор2;
оператор3
END;
Параметр цикла не может быть вещественным(действительным), а только целым или другим типом, который можно пронумеровать и сосчитать. Шаг всегда равен 1 или –1. Задать другой шаг нельзя!
Пример(тот же).
For n :=1 to 100 do
Writeln(‘n=’,n,’sqr(n)=’,sqr(n),’sqrt(n)=’,sqrt(n));
С помощью этого цикла процедура WRITELN будет последовательно выполняться для следующих значений переменной N: 1,2,…,100.
Для циклов FOR нет необходимости следить за их завершаемостью. Поскольку множество значений, которое присваивается параметру цикла, конечно, то после конечного числа выполнений тела цикла весь цикл обязательно завершится.
Ограничения.
- Значения параметра цикла, начального и конечного значений параметра цикла изменять внутри цикла нельзя.
- Войти в цикл можно только через его начало, а выйти- либо при исчерпании значений параметра цикла, либо при выполнении оператора перехода GOTO по метке, расположенной вне данного цикла. При нормальном выходе из цикла значение его параметра равно конечному значению.
Итак, оператор цикла с параметром позволяет осуществить последовательный перебор значений параметра, но с приращением равным 1. В том случае, если шаг просмотра отличен от единицы или заранее не известно количество повторений тела цикла, необходимо применять один из двух других видов операторов цикла: с предусловием или с постусловием.
2.8.3. Цикл с предусловием - цикл WHILE
Пример. Составить таблицу квадратов и квадратных корней для чисел от 1 до 100.
N:=1 ;
While n<=100 do
Begin
Writeln (‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));
N: =N+1
End;
В общем случае данный оператор цикла записывается так:
While условие DO оператор;
Правило его выполнения следующее: оператор выполняется до тех пор, пока остается истинным условие цикла. Как только значение условия становится ложным, цикл прекращает выполняться. Если значение условия ложно перед первым выполнением цикла, то он не выполняется ни разу. Обратите внимание на то, что после слова DО может стоять только один оператор, поэтому чаще всего после слова DO стоит составной оператор.
Приведенный в примере оператор WHILE работает так. Первоначальное значение переменной NUMBER равно 1. Оно задается оператором присваивания. Затем проверяется условие, которое в данном случае имеет вид: N<=100. Знак <= означает “ меньше или равно”. Естественно, что условие 1<= 100 истинно, поэтому выполняется оператор стоящий после слова DO. Этот оператор называется телом цикла. Он вычисляет и выдает на печать значения квадрата и квадратного корня числа 1, а также увеличивает значение переменной на единицу. Теперь ее значение равно двум, условие цикла остается истинным, и цикл выполняется еще раз. Последний раз цикл будет выполняться для значения n=100. Условие 100<=100 истинно, и цикл выполняется. Внутри цикла происходит очередное увеличение переменной N на 1, и ее значение становится равным 101. Очередная проверка условия цикла дает значение условия ложное, и выполнение цикла прекратится. Таким образом, данный цикл выдает значения квадратов и квадратных корней для чисел от 1 до 100 включительно.
Выход из цикла осуществляется, когда условие перестает выполняться, значит можно задать цикл, который вообще ни разу не будет выполняться (поставить заведомо ложное условие).
2.8.4. Цикл с постусловием - цикл repeat
Он имеет вид:
REPEAT оператор1;
оператор2;
оператор3;
……………
оператор n
UNTIL условие;
В отличие от цикла предусловием, выход из цикла постусловием осуществляется при истинности условия. Этот цикл должен выполниться хотя бы один раз. Данный оператор цикла выполняется до тех пор, пока не станет истинным условие.
Заметим, что если в операторе WHILE условие проверяется до очередного выполнения цикла, то в операторе REPEAT - после очередного выполнения.
Таким образом, оператор REPEAT - оператор с постусловием) всегда выполняется, по крайней мере, 1 раз, в то время как оператор WHILE(оператор с постусловием) может не выполняться ни разу.
Еще одна особенность цикла REPEAT - в нем разрешается использовать произвольное число операторов.
Пример (тот же).
Repeat
Writeln (‘n=’,n,’sqr(n)’,sqr(n),’sqrt(n)’,sqrt(n));
N: =N+1
Until n>100;
Когда переменная NUMBER принимает последовательно значения 1,2,…,100, значение условия N>100 остается ложным и для них цикл выполняется (UNTIL- до тех пор, пока не). Как только переменная NUMBER принимает значение 101, то условие N>100 становится истинным (101>100) и выполнение цикла прекращается.
Заметьте, что при использовании как цикла WHILE, так и цикла REPEAT.
Необходимо принудительно увеличить значение переменной N. Если этого не делать, то цикл никогда не завершится, т.к. переменная N так и остается равным единице. Условие N<=100 никогда не станет ложным, а условие N>100 никогда не станет истинным. В результате оба цикла будут выполняться бесконечно долго. В этом случае говорят, что программа зацикливается. Оба этих цикла применяются, когда число повторений неизвестно(хотя это число можно сосчитать).
Пример. Лист бумаги разрезан пополам. Одну из полученных половинок снова делят пополам и т.д. Сколько понадобится делений, чтобы получить частицы размером с атом? Масса листа 1 грамм(М), масса атома 1Е-24 грамма.
Решение:
Program List;
Var m: real;
I: integer;
Begin
I:=1;m:=1;
While m>1E-24 do
Begin
M:=m/2;
I:=I+1;
End;
Writeln(‘I=’,I,’ делений’);
Writeln;
End.