Оператор цикла с заданным числом повторений – оператор FOR.




Выглядит примерно так: FOR i:=1 to 5 do тело цикла

Здесь I – счетчик цикла, это должна быть целая переменная (имя, конечно, может быть любое).

1 и 5 – начальное и конечное значение счетчика цикла (числа могут быть любые)

После слова do должен стоять только один оператор. Он называется телом цикла. Если надо в цикле выполнить несколько команд, то надо заключить их в скобки begin…end

Работает оператор цикла так.

1) Сначала счетчику цикла присваивается начальное значение.

2) Значение счетчика цикла сравнивается с конечным.

3) Если значение счетчика цикла меньше или равно конечному значению, выполняется тело цикла.

4) Значние счетчика цикла увеличивается на 1

5) И переходим к пункту 2

 

Смотрим на примерах. Внимание! Во всех примерах приведены только фрагменты программы! Чтобы оно работало, надо добавить хотя бы описание переменных!

 

For i:=1 to 5 do writeln(i); Эта команда выводит на экран (в столбик) пять чисел – от 1 до 5

 

For i:=10 to 15 do writeln(i); Эта команда тоже выводит на экран (в столбик) пять чисел, но числа от 10 до 15

 

For i:=1 to 5 do begin Writeln(‘vvedite chislo ‘); Readln(a); Writeln(‘kvadrat raven ‘,a*a); End; А эти команды позволяют ввести пять чисел, и для каждого числа выводят его квадрат. Обратите внимание – переменная I внутри цикла никак не используется, она нужна только для того, чтобы отсчитать пять повторений

 

For i:=1 to 5 do write(‘*’); Эта команда выводит на экран (в строчку) пять звездочек Здесь тоже переменная I нужна только для отсчета повторений

 

Внутри цикла (в теле цикла) могут быть любые команды, в том числе и операторы цикла. Если внутри одного цикла есть другой, это называется вложенными циклами. Циклы долдны быть действительно «вложены» друг в друга, если соединить начало и конец операторов цикла, то линии не должны пересекаться. И счетчики цикла долдны быть разными переменными!

For i:=1 to 5 do begin For j:=1 to 10 do begin Write(‘*’); End; Writeln; End; Здесь во внутреннем цикле (где счетчик – переменная j) на экран в строчку выводится 10 звездочек. В теле цикла всего одна команда, поэтому скобки begin… end можно было бы не писать, но один написаны, чтобы можно было показать линией начало и конец цикла. А во внешнем цикле во-первых, выполняется этот внутренний (то есть выводится строка из 10 звездочек), а во-вторых, переводится строчка. В результате на экране получается прямоугольник из звездочек – 5 строчек по 10 звездочек в каждой. Обратите внимание на форматирование! Рекомендуется внутренний цикл сдвигать вправо относительно внешнего

 

Оператор goto

Оператор goto позволяет перейти к заданному месту в программе. Чаще всего используется для выхода из цикла.

program p3; {operator for} uses CRT; label 5; var i:integer; a:real; begin clrscr; for i:=1 to 10 do begin write('vvedite chislo '); readln(a); if a=0 then goto 5; writeln(a,' v kvadrate ravno ',a*a); end; 5: readln; end. Эта программа позволяет ввести с клавиатуры 10 чисел, и для каждого числа выводит на экран его квадрат. Если бы не было строчки, выделенной жирным шрифтом, то нам пришлось бы обязательно вводить все 10 чисел. Но нам может это надоесть, и мы можем захотеть закончить работу раньше. Для этого в программе есть строчка if a=0 then goto 5; Она проверяет, является ли введенное число нулем. Если да, то осуществляется переход к метке 5 то есть выход из цикла. Значит, если во время работы программы нам надоест вводить числа и любоватьсяна их квадраты, нам надо будет ввести 0,и программа закончит работу

 

Сейчас будем тренироваться, но сначала –

долой серость! (В смысле, учимся выводить текст на экран разными цветами)

 

Изменить цвет символов можно командой textcolor(цвет).

Цвета могут быть: red, green, blue, cyan, magenta, lightred, lightgreen, lightblue, lightcyan, lightmagenta, brown, yellow, white, darkgray, lightgray, black (вроде не перепутала). Но можно писать не название цаета, а его номер – число от 0 до 15.

Если задать цвет командой textcolor, то этот цвет символов будет использоваться до тех пор, пока не будет дана другая команда textcolor.

textcolor(red); for i:=1 to 5 do begin for j:=1 to 10 do write('*'); writeln; end; Этот фрагмент программы выводит на экран прямоугольник из звездочек (такой пример у нас уже был), но звездочки красные

 

for i:=0 to 15 do begin textcolor(i); write('*'); end; А эти команды выводят на экран 15 звездочек – все разных цветов

Можно задать не только цвет чисволов, но и цвет фона, на котором они выводятся. Для этого используется команда textbackground(цвет).

Цвета фона могут быть red, green, blue, cyan, magenta, brown, lightgray, black. Или можно цифрами задавать – от 0 до 7. на самом деле можно и другие числа указать, но при определении цвета фона в двоичной записи числа оставляется только три младших бита

for i:=0 to 15 do begin textcolor(i); textbackground(i); write('*'); end; Этот фрагмент программы выводит на экран 15 звездочек – все разных цветов. И при этом цвет фона задается с таким же номером, как цвет символа. Видно, что для первых 7 цветов символ сливается с фоном, а для остальных символы ярче, чем фон.

 

Но вообще с цветами особо заморачиваться не надо, эта информация только для того, чтобы вывод на экран был чуть посимпатичнее – тогда и программы писать веселее.

 

А теперь тренируемся.

1. Очень легкое задание. Написать программу, которая выводит на экран 10 чисел от 101 до 110 в строчку через пробелы

2. Задание посложнее. Вывести на экран 10 первых членов арифметической прогрессии, заданной формулой

An=5+10(n-1). То есть первый член равен 5, разность равна 10

3. Совсем сложное задание. Кроме того, что программа должна вывести на экран первые 10 членов арифметической прогрессии, она должна еще сосчитать их сумму (можно прочитать подсказку к программе 11).

4. А теперь еще чуть изменим задание 3 – количество членов арифметической прогрессии должно задаваться с клавиатуры.

5. Видоизменяем задание 1 – оно станочится очень сложным. Программа должна вывести 10 строчек. В первой строчке – числа от 101 до 110. Во второй – от 111 до 120, в третьей – от 121 до 122 и т.д. Подсказка: эту программу можно написать с помощью вложенных циклов, либо с помощью единственного оператора цикла, но в нем использовать оператор if для того, чтобы вовремя перевести строку... хотя мы еще не знаем, как проверить, что число делится на 10, так что придется извращаться)

6. А теперь отдыхаем. Пишем программу, которая выводит на экран российский триколор. Для этого точно понадобятся вложенные циклы.

7. Задание чуть-чуть посложнее, чем 6. Пишем программу, которая выводит на экран красный крест.

8. А теперь сложное задание. Пишем программу, котораявыводит на экран новогоднюю елку – три зеленых треугольника

9. Продолжаем развлекаться с цветами, но не забываем про числа Программа должна 5 раз повторить следующие действия: предложить ввести число с клавиатуры, если это число положительное, вывести красным цветом само число и корень из него; если число отрицательное, вывести синим цветом само число и сообщение о том, что оно отрицательное, а если число равно 0, то можно ничего не делать

10. Видоизменяем программу 9 – если с клавиатуры будет введен 0, программа должна закончить работу.

11. Пишем программу, которая позволяет ввести 10 чисел с клавиатуры и вычисляет их сумму (наверное, все-таки нужна подсказка, как сосчитать сумму. Надо исходно какой-то переменной (например, s) присвоить значение 0, и при вводе этого числа прибавлять это число к переменной s. В результате в переменной s накопится сумма введенных чисел

12. Видоизменяем программу 11. Во-первых, она должна заканчивать работу при вводе 0. Во-вторых, она должна сосчитать не только сумму, но и количество введенных чисел, а также их среднее арифметическое. При этом, если были введен все 10 чисел, программа должна вывести результаты синим цветом, а если работа программы закончена раньше времени (то есть по вводу 0) – результаты должны выводиться красным цветом



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-07 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: