Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delphi.Начало.doc
Скачиваний:
0
Добавлен:
03.01.2020
Размер:
1.56 Mб
Скачать

Использование операторов Continue и Break в циклах

В теле цикла могут использоваться операторы Break и Continue.

Оператор Break обеспечивает выход из циклов for, while, repeat, и продолжает выполнение программы с оператора, непосредственно следующего за циклом. Например:

var

n:integer;

begin

n:=100;

while True do

begin

n:=n - 2;

if n = 0 then Break;

{ другие операторы цикла }

end;

end;

end;

В данном учебном примере в теле цикла выполняется изменение переменной n, если значение n становится равным 0, то с помощью оператора break выполняется выход из этого бесконечного цикла.

Оператор Continue позволяет перейти на начало цикла for, while, repeat. Пример использования Continue будет приведен ниже.

Задание случайных чисел. Функция Random. Процедура Randomize

При отладке широкого класса алгоритмов ввод значений переменных с клавиатуры, либо программным путем с помощью инициализации переменных является очень трудоемким. Значения переменных можно получать во время выполнения программы с помощью генерации случайных чисел, для этого используются функция Random и процедура Randomize.

Функция Random обеспечивает генерацию псевдослучайного числа. Синтаксис функции:

function Random [ ( Range: Integer) ];

Функция Random возвращает случайное число X, равномерно распределенное в интервале 0 <= X < Range.

Если функция используется без аргументов, возвращается вещественное число типа real в интервале 0 <= X < 1.

Для инициализации датчика случайных чисел используется процедура Randomize. Синтаксис:

Randomize.

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

Генерация случайных чисел широко используется при создании игр, она позволяет исключить повторение игровых ситуаций при новых запусках программы.

Например:

Random(4) – вернет случайное число от 0 до 3.

Random(15)+1 – вернет случайное число от 1 до 15.

Вложенные циклы

При создания сложных алгоритмов часто приходится использовать вложенные циклы. Это означает, что внутри одного цикла может содержаться один или несколько вложенных циклов. Различные варианты вложений циклов приведены на рисунке.

В качестве примера использования вложенного цикла рассмотрим такую задачу: нарисовать игровое поле размером 10 на 10, состоящее из разноцветных клеточек случайного цвета, как изображено на рисунке:

Для решения задачи введем ряд переменных:

X0,Y0 –задают координаты левого верхнего угла поля;

DX,DY – размер клеточки по X и Y;

TX,TY – переменные для хранения координат текущей клеточки по X и Y.

Col – переменная, в которой будет содержаться цвет очередной клеточки, который будем задавать случайным путем.

Алгоритм решения задачи очень прост. Так как поле состоит из рядов клеточек, то во внутреннем (вложенном) цикле будем рисовать, например, горизонтальный ряд клеточек. Во внешнем цикле будем сдвигаться по Y и снова с помощью внутреннего цикла рисовать очередной горизонтальный ряд.

Так как число шагов и внешнего и внутреннего цикла известно, это 10, то будем использовать циклы со счетчиком – for. Для задания счетчиков цикла обычно используются переменные i,j или k. Итак, опишем все необходимые переменные:

Var

x0, y0, dx, dy, tx, ty : integer;

i, j : integer;

col:TColor;

Зададим начальные значения для переменных (инициализируем переменные):

x0:=20; y0:=20; dx:=30;dy:=30;

Так как цвет клеточки будет формироваться случайным путем, необходимо выполнить процедуру Randomize один раз в теле программы, например, на событие OnCreate формы.

Программный код для рисования поля может выглядеть таким образом:

with canvas do

begin

ty:=y0;

{ внешний цикл}

for i:=1 to 10 do

begin

tx:=x0;

{вложенный цикл}

for j:=1 to 10 do

begin

col:=RGB(random(256),random(256),random(256));

brush.Color:=col;

rectangle(tx,ty,tx+dx,ty+dy);

tx:=tx+dx;

end;

ty:=ty+dy;

end;

end;

Перед входом во вложенный цикл необходимо установить значение переменной TX, которая во вложенном цикле будет использоваться для задания X-координаты очередной клеточки:

tx:=x0;

Во вложенном цикле выполняется рисование очередного горизонтального ряда клеточек. Счетчик j задает число повторов внутреннего цикла. Во вложенном цикле необходимо смещаться по оси X для рисования очередного элемента ряда:

tx:=tx+dx;

Во внешнем цикле переменная i задает число повторов внешнего цикла. Перед рисованием очередного ряда необходимо сместиться по оси Y:

ty:=ty+dy;

И установить переменную tx, равной X0:

tx:=x0;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]