Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PASСAL_a4_2007.doc
Скачиваний:
31
Добавлен:
13.09.2019
Размер:
2.51 Mб
Скачать

5. Вопросы для самоконтроля

  1. Какие из стандартных типов данных можно отнести к перечислимым типам?

  2. В каких случаях целесообразно использовать ограниченный тип данных? Перечислимый тип?

  3. Что будет выдано на экран дисплея при выполнении данных фрагментов:

а) Type цветы=(розы, ромашки, тюльпаны, ландыши, васильки);

var букет: цветы;

...

for букет:=розы to васильки do

writeln(‘цветы полевые’);

...

б) Type число=(один,два,три,четыре);

var кролики: число;

...

кролики:=один;

while кролики<четыре do

begin

writeln(‘кол-во кроликов’,ord(кролики));

кролики:=succ(кролики)

end;

...

в) Type возраст=1..99;

var мужчины, женщины: возраст;

...

write(‘Возраст мужчины -‘); readln(мужчины);

write(‘Возраст женщины -‘); readln(женщины);

if мужчины/2+7=женщины then

writeln(‘Они подходят друг другу’)

else

writeln(‘Они не подходят друг другу’)

...

  1. Найдите ошибки в приведенных фрагментах:

а) Type town=(Moscow,London,Paris);

var capital:town;

...

capital:=Ekaterinburg;

writeln(capital);

...

б) Type town=(Moscow,London,Paris);

var capital:town;

...

readln(capital);

writeln(capital);

...

  1. Математическое множество может содержать любое, даже бесконечное число элементов. Может ли множество в языке Pascal содержать бесконечное число элементов?

  2. Какие из следующих описаний множеств недопустимы? Объясните, почему.

Type A=set of real;

B=set of char;

C=set of integer;

D=set of 1..11;

E=set of (Nike,Bob,Den,Leo);

F=set of (‘a’,’b’,’c’);

G=set of (a,b,c);

H=set of a,b,c;

  1. Какие операции можно выполнять над множествами?

  2. Как сделать множество пустым?

  3. Как проще всего определить количество элементов, содержащихся в данном множестве?

  4. Назовите основные алгоритмы, где целесообразно использование множеств.

  5. Следующие шесть множеств получают начальные значения:

Type charset=set of char;

numset =set of 0..100;

var set1,set2 : numset;

set3,set4,set5: charset;

set6 : set of (dog,cat,mouse);

...

set1:=[1..20];

set2:=[1,3,5,7,9,11,13,15,17,19];

set3:=[’f’,’g’,’t’];

set4:=[’d’,’o’,’g’,’c’,’a’,’t’];

set5:=[’t’,’a’,’g’];

set6:=[cat,dog];

...

Покажите, к какому результату приведет вычисление каждого из следующих выражений (True, False или, быть может, приведет к вычислительной ошибке):

а) set1=set2 ж) set5<=set3

б) 3 in set1 з) set5>=set3

в) set4>=set6 и) d in set6

г) [dog,cat]<=set3 к) not set3=set5)

д) set2=set5 л) set4<=set5

e) set1>=set2 м) [3] in set1

Теоретическая работа д. Циклы с параметром: быстрое начало

1. Когда используется цикл с параметром

Часто в программах приходится одни и те же действия повторять многократно. Для того, чтобы не приходилось их также многократно записывать, в языках программирования существуют конструкции цикла. Самым простым циклом в языке Pascal является цикл с параметром. Такая конструкция используется в тех случаях, когда заранее известно, сколько раз следует повторить те или иные действия.

2. Форма записи цикла с параметром

For <Имя>:=<Выр_1> to <Выр_2> do <Оператор>

For <Имя>:=<Выр_1> downto <Выр_2> do <Оператор>

В этой конструкции:

<Оператор> - оператор, который должен повторяться (если операторов больше одного, то они заключаются в операторные скобки begin ...end);

<Имя> - переменная целого, перечислимого или символьного типа, которая играет роль параметра цикла, ее значение автоматически изменяется на 1 (в первом случае увеличивается, во втором - уменьшается) после каждого исполнения действий;

<Выр_1> и <Выр_2> - границы изменения параметра (сначала Имя принимает значение Выр_1; выполнение действий заканчивается, когда значение параметра превысит значение Выр_2).

Слова to или downto указывают направление изменения параметра цикла:

  • если требуется, чтобы параметр цикла УВЕЛИЧИВАЛСЯ, используется to;

  • если параметр цикла следует уменьшать, используйте downto.

Поясним это на примерах.

For i:=1 to 10 do Writeln ('Что случилось?');

При выполнении этого фрагмента программы переменная i (это и есть параметр цикла) будет принимать значения 1, 2, ..., 10, при этом 10 раз будет повторяться одно действие - на экране будет печататься фраза "Что случилось?"

For i:=15 downto 0 do WriteLn(i);

При выполнении этого фрагмента программы переменная i будет принимать значения 15, 14, ..., 0, а на экран будет выдаваться очередное значение параметра цикла i.

For x:=0 to 639 do

begin

SetFillStyle(1,Red);

Bar(x,200,x+10,210);

Delay(20); {задержка работы программы на 20 миллисекунд}

SetFillStyle(1,Black);

Bar(x,200,x+10,210)

end;

Этот фрагмент программы иллюстрирует "движение" по черному экрану красного квадратика со стороной 10 пиксель. Идея моделирования движения состоит в том, что мы сначала рисуем объект нужного цвета в какой-то позиции, затем "стираем" его (т.е. рисуем в той же позиции цветом фона). Повторяя эти действия многократно с изменением позиции, мы получаем имитацию движения объекта.

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