vl@volk Пользователь Сейчас: Offline
Имя: Владислав Откуда: Земля Регистрация: 26.12.2012
| Циклы. Итак, изучив условия, перейдем к следующему типу операторов – циклы. Циклы тоже очень полезные операторы MIDlet Pascal. Циклы используют для повторения выполнения операторов. В играх без циклов – никуда. Ведь надо каждый раз обновлять экран. С помощь циклов можно реализовать движение объектов, например, когда движется герой игры – все это происходит с помощью циклов. А вы что думали, что сказку попали? Очнитесь! Вы в реально мире! Всего в MIDlet Pascal существует три оператора циклов: · Цикл for … to … do · Цикл while … do · Цикл repeat … until Начнем с цикла for … to … do. Этот оператор цикла называется счетчиком. Синтаксис цикла for … to …do: Forсчетчик:= начальное_значениеto конечное_значениеdo Begin Операторы; End; Для цикла for нужно объявить переменную-счетчик. Приведем пример цикла: Fori:=0to10d begin x:=x+2; End; В этом примере цикл выполнит код находящийся в операторных скобках begin … end десять раз (цикл сложит 10 раз выражение x:=x+2). Если, например будет равен 0, то при выполнении цикл к переменной x будет прибавляться 2. Когда цикл окончится, x будет равен 20. Чтобы показать на примере, как будет работать цикл, напишем небольшую программку, которая будет выводить цифры на экран от 0 до 100: Program NewProject; Var i:integer; Begin Fori:=0to 100dobegin// начинаемсчетчик setColor (255,255,255);//белы цвет fillRect (0,0,getWidth,getHeigh setColor (0,0,0); //черны цвет drawText (integerToString(i), 20,20); repaint; delay (200);//задерживаем end; delay(2000); end. В этом примере код внутри цикла будет выполняться 100 раз и счетчик i будет увеличиваться на 1. Процедура DrawTex будет использовать значение счетчика выводить это значение на экран. С помощью задержки мы регулируем ско��ость выполнения цикла: чем меньше задержка, тем быстрее выполняется код внутри цикла. Последняя задержка, идущая после цик задерживает программу на две секунды Если вам нужно сделать обратный отсче то вместо to применяйте downto. Ниже приведен тот же код с использованием downto, который будет реализовывать обратный отсчет: ProgramNewProject Var i:integer; Begin Fori:=100 downto0dobegin// начинаемсчетчик setColor (255,255,255);//белы цвет fillRect (0,0,getWidth,getHeigh setColor (0,0,0); //черны цвет drawText (integerToString(i), 20,20); repaint; delay(200);// задерживаем end; delay(2000); end. Объяснять я этот пример не буду, здесь практически так же как и в предыдуще примере. Рис. 11. Цикл с предусловием while … do условие Тело цикла Теперь ознакомимся с циклом while … d циклом с пре если проверя Сначала пров истинно, то ц опять провер выполняется показано на р является беск будет выполн проверяемое или пока не п Синтаксис опе предусловие wh условиеdobegin en Условие – это проверяемое условие. Есл оно истинно, то цикл выполняется. Если внутри цикла больше чем один операто то их нужно заключить в операторные скобки begin … end. Напишем для демонстрации небольшу программку, которая будет выводить н экран число, которое будет возрастать, при нажатии клавиши 5, счет будет закончен и программа завершится. ProgramNewProject; var a:integer; Begin a:=0; whiletruedobegin setColor(0,0,0); drawText (integerToString (a),5,5); repaint; a:=a+1; setColor (255,255,255); fillRect (0,0,getWidth,getHeigh ifgetKeyClicked KE_KEY5thenbreak;/ прерываемцикл end; End. Начну объяснять пример с цикла. В условии цикла стоит булево значение true, в таком случае условие истинно и и за этого запускается цикл, который буде выполнять код внутри цикла до бесконечности, пока вы не нажмете кнопку пять на клавиатуре своего телефона. При нажатии на клавишу пять запускается оператор break и цикл прерывается. Если цикл не прервать оператором brea или не остановить его ложным условие то произойдет зацикливание и приложение “зависнет”. Рис.12. Цикл с постусловием. repeat … until Тело цикла условие Теперь познак оператором ци цикл так же на постусловием, выполняется к потом проверя Хотел бы замет цикла с постусл иметь булево з например усло тело цикла все только один ра тело цикла буд пока условие н прервется опе может так же с рисунке 12 гра цикл с постусловием. Предыдущий пример можно было бы записать с циклом с постусловием таки образом: ProgramNewProject; var a:integer; Begin a:=0; repeat setColor(0,0,0); drawText (integerToString (a),5,5); repaint; a:=a+1; setColor (255,255,255); fillRect (0,0,getWidth,getHeigh ifgetKeyClicked KE_KEY5thenbreak;/ прерываемцикл untilfalse; End. Объяснять думаю, не придется.
__________________
знает толк |