Люблю Паскаль, пишу на Паскале, думаю на Паскале Заметка 5. Цикл FOR. Часто встречается ситуация, когда надо многократно (а иногда и бесконечно) повторять одни и те же действия. К примеру, выведем на экран несколько рядов звездочек. program Project5; {$APPTYPE CONSOLE} begin writeln ('************************'); writeln ('************************'); writeln ('************************'); writeln ('************************'); readln; end. Многократное повторение вызова процедуры writeln загромождает код программы. А если мы, когда пишем программу еще не знаем, сколько строчек звездочек пользователь захочет вывести на экран? На помощь нам приходит оператор цикла. Изучение циклов (а их в традиционном паскале 3 вида, в последних версиях Delphi добавился еще один) мы начнем с «цикла по параметру» — цикла for. Конструкция оператора цикла по параметру выглядит следующим образом: for I:= 0 to 9 do writeln (‘*’); После ключевого слова for указывается имя переменной – счетчика повторений, и через оператор присваивания «:=» (не путать с «=» — это оператор сравнения) в переменную счетчика записывается некоторое начальное значение. В данном случае «0». После ключевого слова to указывается, до какого значения должен дойти счетчик, прежде чем цикл будет прерван. У нас это число «9». Наш цикл выполнится ровно 10 раз. После ключевого слова do пишется оператор (процедура) который должен быть многократно выполнен. Сразу напишем пример, где пользователь будет вводить с клавиатуры количество повторений, а программа будет печатать на экране нужное число строк. program Project5; {$APPTYPE CONSOLE} var I: Integer; //счетчик Count: Integer;//количество повторов begin writeln ('Enter count');//просим ввести количество строк readln (Count);//получаем в переменную Count количество строк введенных пользователем for I:= 1 to Count do writeln ('************************'); readln; end. Давайте еще немного модифицируем код нашей программы – будем выводить номера строчек. program Project5; {$APPTYPE CONSOLE} var I: Integer; //счетчик Count: Integer;//количество повторов begin writeln ('Enter count');//просим ввести количество строк readln (Count);//получаем в переменную Count количество строк введенных пользователем for I:= 1 to Count do begin write (I); writeln ('************************'); end; readln; end. В данном примере нам понадобилось вызвать процедуру write, которая в отличие от writeln выводит информацию на экран без перехода на следующую строчку. А вслед за ней, уже процедуру writeln. Однако, оператор for позволяет многократно выполнять лишь один оператор или процедуру. На помощь нам приходит так называемый «составной оператор». Если заключить любой фрагмент программы между ключевыми словами begin и end, причем end должен заканчиваться «;» — компилятор паскаля будет считать такой фрагмент за один оператор.  Циклы можно вкладывать друг в друга. Для примера модернизируем нашу программу, чтобы звездочки также выводились с помощью цикла. program Project6; {$APPTYPE CONSOLE} const StarCount = 10;//количество звездочек в строчке var I,J: Integer; //счетчики Count: Integer;//количество повторов begin writeln ('Enter count');//просим ввести количество строк readln (Count);//получаем в переменную Count количество строк введенных пользователем for I:= 1 to Count do begin write (I);//выводим номер строки for J:= 1 to StarCount do write('*'); //этот оператор будет повторен StarCount раз writeln; //переходим на следующую строку end; readln; end. Ну на сегодня, пожалуй, достаточно. Впереди — знакомство еще с двумя видами циклов — по предусловию и по постусловию. А завершим мы знакомство с циклами довольно необычной конструкцией, которая появилась в языке pascal относительно недавно. |
Комментарии
RSS лента комментариев этой записи.