Оператор цикла с параметром
Здравствуйте. Оператор цикла с параметром используется в тех случаях, когда некоторое однообразное действие надо повторить определенное количество раз. Особенно, если это количество достаточно велико. Бывают же такие задачи, когда необходимо, например, вычислить сумму каких-либо величин, каждая из которых вычисляется по формуле. Ведь если непосредственно вычислять сумму 1 + 2 + 3 + ... + 1000, то программа разрастется до невообразимых масштабов.
Оператор цикла с параметром в народе ещё называют "оператор For", и в Pascal он бывает двух типов (второй тип смотрите ниже). Первый записывается так:
for i := N1 to N2 do
<ОПЕРАТОР>
Всё, что находится между for и do, называется заголовком цикла, после do – телом цикла. Переменная i зазывается параметром цикла и имеет порядковый тип (целые числа, логический тип, символы, перечислимый и диапазонный тип). Слова for, to и do – это служебные слова Pascal, которые использовать в своих программах для обозначения переменных нельзя. Индекс i, которым обозначаются номера действий в операторе цикла, изменяется от меньшего N1 к большему N2 (N1 ≤ N2). Первый номер N1 по значению не должен превышать второй N2, иначе цикл не запустится и ОПЕРАТОР ни разу не выполнится.
Важно помнить: ИЗМЕНЯТЬ ПАРАМЕТР ЦИКЛА i В ТЕЛЕ ЦИКЛА НЕЛЬЗЯ! — это вызовет ошибку.
Оператор цикла этого типа действует как:
— сначала индекс i приравнивается N1 – минимальному возможному значению;
— потом проверяется, не превышает ли i второго номера N2 (i ≤ N2). Если это условие выполняется, то идем на следующий пункт, иначе (то есть при i > N1) – выходим из цикла;
— выполняется ОПЕРАТОР в теле цикла;
— далее увеличивается i на 1, и повторяем со второго пункта (т.е. проверяем истинность условия i ≤ N2, выполняем оператор, увеличиваем i на 1, и т.д).
В роли начального значения N1 наиболее часто используют 1 или 0 (это зависит от задачи).
Приведем пример с вычислением упомянутой ранее суммой 1 + 2 + 3 + ... + 1000 первых 1000 натуральных чисел. Поскольку нужно сложить числа от 1 до 1000 включительно, то было бы естественно изменять индекс i от 1 до 1000. Тогда на каждой итерации цикла (при каждом выполнении) искомую сумму, которую мы обозначим sum, будем увеличивать на i. Вот, что у нас получится.
Посчитать сумму первых 1000 натуральных чисел
Код Pascal
1
2
3
4
5
6
7
8
9
10
var
i, sum: integer;
begin
sum := 0; //Начальное значение суммы
for i := 1 to 1000 do
sum := sum + i; //К сумме прибавляем i
writeln('Результат: ', sum);
readln
end.
После запуска программы вы должны увидеть результат: 500500. Что делает наша программа?
2 строка. Описываем переменные i (параметр цикла) и sum (конечная сумма) как целые;
5 строка. Начальному значению суммы sum присваиваем 0. Это называется инициализация начальной переменной;
6 строка. Числа будем складывать от 1 до 1000;
7 строка. На каждой последующей итерации цикла к сумме прибавляем i;
8 строка. После выхода из цикла (когда будет i = 1000) выводим конечный результат суммы.
Решим ещё одну задачку:
Напечатать ряд чисел 20 в виде: 20 20 20 20 20 20 20 20 20 20.
Код Pascal
1
2
3
4
5
6
7
var
i: byte;
begin
for i := 1 to 10 do write(' ', 20);
readln
end.
Мы видим, что количество выводимых чисел равно 10, поэтому запускаем цикл от 1 до 10, и выводим число 20 оператором вывода write(). Обратите внимание, что величина индекса изменяется лишь в пределах [1, 10], поэтому не имеет смысла использовать целый тип integer – достаточно обойтись типом byte (8 бит, или 1 байт). Особенность этого примера в том, что код программы не содержит переменной i в теле цикла (напоминаю, тело цикла – часть программы после do) – мы выводили несколько раз число 20. Бывает, когда параметр цикла используется в теле цикла, но во многих программах его использование лишнее.
А вот пример задачи, когда параметр цикла используется:
Напечатать "столбиком" все целые числа от 12 до 25.
Если промежуточное выводимое число обозначить n, то изменяя его с 12 по 25 включительно, выведем все числа. Только здесь нужно задействовать оператор вывода writeln – с переводом курсора на следующую строку.
Код Pascal
1
2
3
4
5
6
7
var
n: byte;
begin
for n := 12 to 25 do writeln(n);
readln
e
begin
sum := 0; //Начальное значение суммы
for i := 1000000 downto 1 do
sum := sum + 1/i; //К сумме прибавляем 1/i
writeln('Результат: ', sum);
readln
end.
А вот как эта задача решается с циклом первого типа, посмотрите на странице for 10-14. Только нужно иметь ввиду, что, хотя гармонический ряд и является расходимым – его частичные суммы стремятся к бесконечности при неограниченном возрастании членов) – но растет гармонический ряд очень медленно.
Вообще, в каждом отдельном случае нужно решать, какой цикл с параметром использовать лучше – с возрастающим или убывающим параметром. В разделе Задачника в группе "for" есть много примеров на тему цикла с параметром, например, Функции с использованием факториала. А пока на этом все, если есть во или пожелания, пишите в комментариях.
Резиновый молоток весом 1 кг. Нужен для пристукивания плитки при укладке, чтобы исключить пустоты под ней.
Лопатка-мастерок.
Зубчатый шпатель. Зубья 10 мм подходят для плитки со сторонами более 30 см, для небольшой плитки менее 20 см используют зубья 4-5 мм.
Ковш Шаульского. Он хорошо когда нужно быстро накидать клей или штукатурку
Скребок – для очистки стяжки от клея или гипса. Также им удобно поддевать старую плитку при демонтаже.
Набор пластиковых крестиков для плитки. Их толщину подбирают индивидуально, обычно чем крупнее плитка, тем меньше делают швы. Стандартные размеры 1,5-3 мм.
Переноски. Иногда на объекте розетка может быть очень далеко, поэтому нужно иметь переноску с тройником, длинной 30 метров. Также нужно иметь переноску с двумя лампочками – 500 Вт. Хорошее освещение позволит видеть все неровности при укладке.
Строительные карандаши и маркеры.
Строительный нож.
Валик или маховая кисть для нанесения грунтовки
Поделитесь своими знаниями, ответьте на вопрос:
Укажите литературного героя XIX века, которому автор даёт такое определение: это "портрет, но не одного человека: это портрет, составленный из пороков всего нашего
Тест прошел проверку