Вопросы для проверки знаний.
Begin
Begin
Begin
ClrScr;GotoXY(LPass,1);writeln(Str);{очистка экрана, подвод курсора, вывод слова}
LPass:= LPass+1;{наращивание длины пропуска в начале строки}
i:=i-5; if i<5 then i:=5; {коррекция времени}
Delay(i){ задержка наiмиллисекунд }
end;
ReadKey;{ожидание нажатия клавиши для перехода от пользовательского экрана в основной}
end.{конец раздела операторов и всей программы}
Пример 2. Разработать программу, реализующую перемещение заданного символа S со знакоместа с координатами (N,M) вниз с возрастающей скоростью (начальное время задержки 250 мс, на каждом шаге убывает на 10, но не должно быть меньшим 20 мс). При достижении нижней границы экрана перемещение символа заканчивается и программа завершает свою работу.
Решение. Перемещение символа обеспечивается тем, что на каждой итерации содержимое экрана очищается, а затем курсор подводится к новому месту вывода, сдвинутому на одну строку вниз, после чего символ выводится на экран. Код программы дан с необходимыми комментариями:
program move_symbol_up;
uses Crt;
var N,M,i:integer; S:char;
begin{открытие тела программы}
ClrScr; writeln('Vvedite symbol');{начальная очистка экрана изапрос на ввод символа S}
Read (S); { ввод символа S}
writeln('Vvedite symbol enter coordinates N (1-25),M (1-80)');{запрос на ввод начальных координат символа S}
Read (N,M); { ввод N,M – начальных координат символа S}
i:=250;{ задание начального значения длины ожидания в мксек}
while(N)<=25 do{проверка оконч. цикла - умещается ли вставляемая строка в экран}
ClrScr;GotoXY(M,N);write(S); {очистка экрана, подвод курсора, вывод символаS }
N:=N+1;{наращивание пропуска строк на единицу}
i:=i-10; if i<20 then i:=20; {коррекция времени ожидания}
Delay(i){задержка наiмиллисекунд }
end;
ReadKey;{ожидание нажатия клавиши для перехода от пользовательского экрана в основной}
end.{конец раздела операторов и всей программы}
Пример 3. Разработать программу, в которой вводится строковая величина (слово) Str. Затем должно происходить циклическое изменение цвета символов (в соответствии с таблицей цветов библиотеки CRT) в слове Str и его печать в новой строке. Всего должно произойти 50 смен цвета. Время задержки перед каждым изменением цвета задать равным 200 мс.
Решение. Для численного обозначения цвета введем целую переменную. Ее величину в каждой итерации цикла наращиваем на 1. Если она превышает 15, уменьшаем ее на 16. Код программы с необходимыми комментариями:
program word_var_color;
uses Crt;
var i,Clr:integer; Str: string;
begin{открытие тела программы}
ClrScr; writeln('Vvedite slovo');{начальная очистка экрана, запрос на ввод слова Str }
Read (Str); { ввод слова Str}
Clr:=-1; {задание начального номера цвета}
for i:=1 to 50 do{цикл, в котором изменяется цвет и выводится заданное слово}
Clr:=Clr+1; {наращивание номера цвета на единицу }
if Clr>15 then Clr:=Clr-16;{проверка и необходимая коррекция номера цвета }
TextColor(Clr); {задание номера цвета буквам}
writeln(Str); {вывод слова в следующей строке }
Delay(200) { задержка на 200 миллисекунд }
end;
ReadKey;{ожидание нажатия клавиши для перехода от пользовательского экрана в основной}
end.{конец раздела операторов и всей программы}
Начиная с версии 2.4.2. , Free Pascal наряду с обычными циклами Паскаля поддерживает цикл вида For...in, в котором переменной цикла принимает в порядке возрастания все возможные значения из заданного порядкового типа. Этот вид циклов рассмотрен в Главе 9.
1. Чем динамические функции интерфейса отличаются от статических ?
2. Для чего в тело цикла, выполняющего изменение элементов интерфейса необходимо включать процедуру delay?
3. Каким образом обеспечивается равномерное и неравномерное изменение свойств элементов интерфейса ?
4. Какие геометрические ограничения накладывает перемещение элементов интерфейса по экрану ?
Практическое задание.
1. Разработать программу, реализующую перемещение заданного символа S с произвольного знакоместа экрана с координатами (N,M) в диагональном направлении (вниз и вправо с возрастающей скоростью). При достижении правой или нижней границы экрана перемещение символа заканчивается и программа завершает свою работу.