Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вопросы для проверки знаний. ClrScr;GotoXY(LPass,1);writeln(Str);{очистка экрана, подвод курсора, вывод слова}




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) в диагональном направлении (вниз и вправо с возрастающей скоростью). При достижении правой или нижней границы экрана перемещение символа заканчивается и программа завершает свою работу.

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 296; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.011 сек.