Оператор цикла с параметром
Здравствуйте. Оператор цикла с параметром используется в тех случаях, когда некоторое однообразное действие надо повторить определенное количество раз. Особенно, если это количество достаточно велико. Бывают же такие задачи, когда необходимо, например, вычислить сумму каких-либо величин, каждая из которых вычисляется по формуле. Ведь если непосредственно вычислять сумму 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 и равными радиусами пересекаются в точках А и В. Докажите, что четырёхугольник АО1ВО — параллелограмм.
решение к задаче приложено к ответу