// радиусами 20, 40, ... 200
fori:=1 to10 doCircle(200,200,i*20);
end.
Вот более сложный пример, разберитесь с ним сами. Ответьте на вопрос: «Почему используется цикл не for… to, а for… downto?»
ProgramConcentric2;
uses graphABC;
vari : integer; // для цикла for
begin
SetWindowSize (400,400);
SetPenStyle(psClear);
fori:=20 downto1 do
begin
SetBrushColor (RGB(10*i,0,0));
Circle(200,200,i*10);
end;
end.
Интересных эффектов можно добиться, используя так называемый «генератор случайных чисел». Встроенная функция random (N) возвращает случайное число в диапазоне от 0 до N– 1. Посмотрите, как эта возможность применяется в следующей программе.
ProgramRandomLines;
uses graphABC;
vari : integer;
begin
SetWindowSize (400,400);
fori:=1 to200 do
Line(Random(400),Random(400),Random(400),Random(400));
end.
Задание №5. Дополните вашу графическую программу узором, получаемым с помощью цикла for.
- 16 -
В языке Pascal существуют операторы, позволяющие изменить линейный ход программы.
Их можно разделить на две группы: развилки и циклы.
Развилки Циклы if... then... else... while if... then repeat... until case for
Развилки
Оператор if
Синтаксис [7] Синтаксис оператора – правила его записи.
оператора:
ifлогическое условие thenоператор-1 elseоператор-2;
Пример: ifx>0 thenz:=1 elsez:=–1;
Выполнение оператора начинается с проверки логического условия, если оно истинно, то выполняется оператор-1, иначе оператор-2. В качестве оператора может выступать простой оператор или составной оператор. Составной оператор – это группа операторов, заключенная в операторные скобки begin... end.
Пример:
ifx>0 then
begin
z:=1;
x:=2*x;
end
else
begin
z:=-1;
x:=-x;
end;
Обратите внимание, что перед elseточка с запятой не ставится. Точка с запятой используется только для разделения операторов друг от друга. Можно было бы и не ставить запятую после операторов x:=2*x и x:=-x, поскольку beginи endне являются операторами, а являются скобками. Паскаль будет интерпретировать [8] Интерпретировать – толковать.
точку с запятой перед end, как наличие пустого оператора между ней и end.
Обратите внимание на запись “лесенкой”, она не обязательна, но весьма желательна, поскольку помогает наглядно увидеть алгоритмическую структуру программы. Правило такое: endпишем под begin.
- 17 -
Оператор if(сокращенная форма)
Часто встречается ситуация, когда ветвь elseне нужна. В этом случае ее можно опустить.
Например: ifx<0 thenx:=-x; Обратите внимание, что точка с запятой ставится после оператора x:=-x в отличие от полной формы.
Пример программы с оператором if
ProgramOddEven;
{ Определение четного или нечетного числа }
varn : integer;
begin
write('Введите число '); readln(n);
ifodd(n)
then
writeln('Число нечетное')
else
writeln('Число четное ');
end.
Вложенные операторы if
Иногда возникает необходимость устроить развилку на более чем две ветви. В этом случае операторы ifможно вкладывать один в другой. С точки зрения алгоритмической корректности лучше, если вложенный оператор находится в ветви else. Приведем сразу пример программы
ProgramSign;
{ Определение знака числа }
varn : integer;
begin
Читать дальше