Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Практикум по основам программирования. Язык Паскаль

.pdf
Скачиваний:
9
Добавлен:
15.11.2022
Размер:
6.27 Mб
Скачать

Выписать все допустимые значения этой перемен­

ной.

3.Какие операции определены над переменными множественного типа и каков их приоритет?

4.Будут ли равны множества:

а) [’A’..’D’] и [’A 7B7C 7D ’];

б) [ЛЕТО, ЗИМА] И [ЗИМА, ЛЕТО] ?

5*. Какие из приведенных ниже выражений являются неправильными с точки зрения языка ПАСКАЛЬ и почему?

а)

[’А’,’В’,’С ,’К’] / [’А’,’В’];

б)

[5, б, 1, 3] > = [1, 3, 5, 6];

в) [КУБ, ШАР] + [ПРИЗМА];

г) [УРАВНЕНИЕ, СИСТЕМА] • [НЕРАВЕНСТВО, СИСТЕ­

МА];

 

д)

[3-5, 7.1, 2.0]-[1,2].

6*. Вычислить следующие выражения:

а) [5] < = [1.-5];

б) PAV'D’, ’KV’M’] + [DV’K’];

в) [МОСКВА ЛЕНИНГРАД, СОЧИ]«[СОЧИ];

г) [7, 1, Э..6]=[1..7];

Д) Р.7С,’)’>’•’] - Г.” ’];

с) 15 IN [1..10].

7*. Дана программа. На вход ее подается следующий текст: 5A7233111BGE2257CDE., признаком конца текста является точка. Определить, что напечатано в резуль­ тате обработки этого текста программой ZAF:

PROGRAM ZAF!INPUT,OUTPUT>|

VAR Z:SET OF 0..9} I,KlINTEGER; SIICHAR; BEGIN READLN; WRITE!•->•>; Zs=CJ;

REPEAT

READ(Si); K:-ORD(SI)-ORD<'0'>;

IF К IN C0..93 THEN Zi-Z+CKJ UNTIL K“*.•;

IF Z=£J THEN WRITELNi'B ТЕКСТЕ НЕТ ЦИФР'» ELSE BEGIN

WRITE!'В ТЕКСТЕ ИМЕЮТСЯ СЛЕДУЮЩИЕ ЦИФРЫ! ); FOR Ii-1 ТО 9 DO

IF I IN Z THEN WRITE!Is2); WRITELN

END

END.

8*. Вычислить следующие выражения:

а) [’АУВ’,’С’]= [’В’.’С’.’А’]; б) [3, 4, 6]< =[2..8];

в) [ ]> = [!, 2];

г) TRUNC(8.3) IN [1—9];

д) SUCC(’C’) IN

е) [2] <> [2 2 2];

ж) 16 IN [16].

9*. Вычислить выражение:

[1..14]*[5, 12..60]+[4..7] - [2..16]*[6]

10. Дан текст, содержащий N символов. Распечатать, какие из указанных символов (ТУ Т ’, ’Z’, ’X’) входят в данный текст. Составить программу, используя множе­ ственный тип.

11*. Упростить данные выражения множественного ти­ па:

а) [11..17]*[2]+[7,17-40]»[2..17] - [2-8]; б) (А - В)»А+ (А - В)*В; в) (А+В)»(А - В)*(В - А); г) А+ В - (А - В) - (В - А); д) А - ( А - В ) .

6.4.ПРАКТИЧЕСКИЕ ЗАДАНИЯ

ЗАДАНИЕ 1. РАБОТА С МНОЖЕСТВЕННЫМИ ТИПАМИ ДАННЫХ

Це л ь з а д а н и я

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

венного типа и выполнении простейших операций над ними.

2. Знакомство с задачами, в которых целесообразно ис­ пользовать переменные множественных типов.

П о с т а н о в к а з а д а ч и Ознакомиться с конечным и упорядоченным мно­

жеством символов, определенным на используемой для выполнения задания ЭВМ.

Составить программу для одного из вариантов. С о д е р ж а н и е о т ч е т а

1.Постановка задачи.

2.Текст программы и результаты ее выполнения.

3.Выводы.

82

М е т о д и ч е с к и е у к а з а н и я Программа должна правильно работать для произ­

вольного набора символов. Для выполнения задания следует ознакомиться с приведенной выше программой LAT. Входная строка символов может быть длиннее строки экрана терминала, при этом программа работа­ ет не с функцией EOLN, а с признаком конца строки, который задается программистом.

В а р и а н т ы з а д а н и я Дана непустая последовательность символов. Тре­

буется построить и напечатать множество, элементами которого являются встречающиеся в последовательно­ сти:

цифры от ЧУ до ’9’;

(буквы от ’А’ до ’F и от ’X’ до ’Z’;

буквы от ’G’ до ’N* и цифры от ’0’ до ’9’; знаки препинания;

буквы от ’А’ до ’Z’ и цифры от ’0’ до ’5’; буквы от Т ’ до ’X’ и знаки препинания; цифры от ’5’ до ’9’ и знаки арифметических

операций;

8)знаки арифметических операций и знаки пре­

пинания;

9)цифры и знаки арифметических операций;

10)знаки препинания и буквы от ’Е’ до ’№;

11)знаки операций отношения;

12) цифры от ’3’ до ’9’, буквы от ’А’ до ’F и зна­ ки препинания;

13)знаки арифметических операций и операций

отношения;

14)буквы от ’F до ’М’ и знаки арифметических

операций;

15)знаки препинания и операций отношения.

ЗАДАНИЕ 2. ОПЕРАЦИИ НАД МНОЖЕСТВАМИ

Це л ь з а д а н и я

1.Получение навыков в организации ввода/вывода зна­ чений множественных типов.

2.Получение практических навыков в выполнении операций над множествами.

П о с т а н о в к а з а д а ч и Задан список объектов, включающий в зависимо­

сти от варианта названия ЭВМ или видов спорта. Из­

вестно, что в каждом техникуме имеется определен­ ный набор вычислительных машин, а учащиеся каж­ дой группы занимаются определенными видами спор­ та. Необходимо задать конкретные наборы ЭВМ (пе­ речни видов спорта) для каждого техникума (каждой

группы). Количество техникумов (групп) указано в ва­ рианте.

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

С о д е р ж а н и е о т ч е т а

1.Постановка задачи для конкретного варианта.

2.Инструкция пользования программой.

3.Текст программы и результаты ее выполнения.

4.Выводы.

М е т о д и ч е с к и е у к а з а н и я При выполнении задания следует учесть приемы

программирования, использованные в приведенной ни­ же программе AMAF.

Известен набор продуктов - хлеб, масло, сыр, мо­ локо, имеющихся в ассортименте магазинов. В три ма­ газина доставлены отдельные виды этих продуктов. Требуется построить множества А, В, С, которые со­ держат соответственно:

-продукты, имеющиеся одновременно во всех ма­ газинах;

-продукты, имеющиеся по крайней мере в одном из магазинов;

-продукты, которых нет ни в одном из магази­

нов.

PROGRAM AMAF(INPUT,OUTPUT)|

CONST N-3j

TYPE ПРОДУКТ— (ХЛЕБ,МАСЛО,СЫР vМОЛОКО){ ACCOPT-SET OF ПРОДУКТ|

МАГАЗИН-ARRAYCl..N3 OF ACCOPT|

VAR MltМАГАЗИН| XlПРОДУКТ| A,В,C,XMisACCOPTj I,J,IkJ,Ml INTEGER|

BEGIN

FOR I«-l TO N DO BEGIN XM1«-C3|

MRITELN(‘ВВОДИ НОМЕРА ПРОДУКТОВ*,112,*-ГО МАГАЗИНА» )| REPEAT

READ(IW)|

CASE IW OF

la Ха-ХЛЕБ|

2i X1-МАСЛОI 3» X1—СЫР1

41 X1-МОЛОКО

END|

хт*-хн1«схэ;

UNTIL EOLNf И1С131-ХМ1

END| («КОНЕЦ ЦИКЛА ПО I *) A:■•tilС13? B»-C3| Ci-СХЛЕБ..МОЛОКО3| FOR la-1 TO N DO

BEGIN BI-B4H1CI3I Al-A*H1CI3| Ci-C-B

END;

FOR I»«l TO 3 DO BEGIN

CASE I OF

liWRITELN( ПРОДУКТЫ, ИМЕЮЩИЕСЯ ОДНОВРЕМЕЮЮ ВО ВСЕХ МАГАЗИ­

НАХ *)|

2iWRITELNC'АССОРТИМЕНТ ПРОДУКТОВ'>;

3lWRITELN( ПРОДУКТЫ, КОТОРЫХ НЕТ НИ В ОДНОМ МАГАЗИНЕ) END;

FOR X2«ХЛЕБ ТО МОЛОКО DO IF X IN A THEN

CASE X OF

ХЛЕБ l WRITE(' ХЛЕБ ');

МАСЛОl WRITE С' МАСЛО

*>|

СЫР I WRITE(* СЫР

'))

МОЛОКО! WRIТЕ('МОЛОКО') END;

IF 1-1 THEN As-B ELSE A»*C| WRITELN

END END.

В программе AMAF в разделе типов задается спи­ сок объектов (продуктов), определяющий базовый типШРОДУКТ), на котором определен множественный тип(АССОРТ). Информация о наличии продуктов во всех магазинах задается как массив множеств.

В начале программы вложенные циклы обеспечи­ вают ввод исходной информации. При этом во внут­ реннем цикле формируется множество ХМ1, характе­ ризующее наличие товаров в одном магазине. По вы­ ходе из внутреннего цикла эта информация заносится в массив Ml. Затем строятся множества А, В, С с ис­ пользованием операций над множествами (пересече­ ния, объединения, вычитания). В конце программы вложенные цикла по I и X обеспечивают распечатку полученных множеств. При этом используется опера­ тор CASE.

П р о т о к о л р а б о т ы п р о г р а м м ы AMAF:

ВВОДИ НОМЕРА ПРОДУКТОВ 1-ГО МАГАЗИНА = > 1 3 ВВОДИ НОМЕРА ПРОДУКТОВ 2-ГО МАГАЗИНА = > 1 2 3 ВВОДИ НОМЕРА ПРОДУКТОВ 3-ГО МАГАЗИНА = > 1 ПРОДУКТЫ, ИМЕЮЩИЕСЯ ОДНОВРЕМЕННО ВО ВСЕХ

МАГАЗИНАХ

ХЛЕБ АССОРТИМЕНТ ПРОДУКТОВ

ХЛЕБ МАСЛО СЫР ПРОДУКТЫ, КОТОРЫХ НЕТ НИ В ОДНОМ МАГАЗИНЕ

МОЛОКО

В а р и а н т ы з а д а н и я

I. Задано множество вычислительных машин, которы­ ми может быть обеспечен техникум: ЕС1035, ЕС1045, ЕС1036, ЕС1066, СМ3, СМ4, ИСКРА. Известен набор машин, имеющихся в каждом техникуме. Количество техникумов (N) указано в варианте.

1.Требуется построить и распечатать множество, вклю­ чающее в себя вычислительные машины:

а} которыми обеспечены все техникумы (N=10); б) которые имеет хотя бы один техникум (N=10); в) которых нет ни в одном техникуме (N=10).

2.Требуется построить и распечатать два множества:

а) первое множество должно включать в себя ЭВМ, имеющиеся во всех техникумах; второе - ЭВМ,

имеющиеся хотя бы в одном техникуме (N=5);

себя

б)

первое множество

должно включать в

ЭВМ,

имеющиеся хотя бы

в одном техникуме;

вто­

рое-ЭВМ, которых нет ни в одном техникуме (N=5);

в)

первое

множество

должно включать в

себя

ЭВМ,

которых

нет ни

в одном техникуме;

вто­

рое-ЭВМ, имеющиеся во всех техникумах (N=5).

 

3. Требуется построить и распечатать три множества: первое множество должно включать в себя ЭВМ, име­ ющиеся во всех техникумах; второе - ЭВМ, имеющиеся хотя бы в одном техникуме; третье-ЭВМ, которых нет ни в одном техникуме (N=4).

П. В техникуме имеются секции по следующим видам спорта: лыжи, коньки, хоккей, футбол, регби и самбо. Известны виды спорта, которыми занимаются учащие­ ся каждой группы. Количество групп N указано в ва­ рианте.

1. Требуется построить и распечатать множество видов спорта:

а) которыми занимаются во всех группах (N=10); б) которыми занимаются хотя бы в одной группе

(N=10);

в) которыми не занимаются ни в одной из групп (N=10).

2. Требуется построить и распечатать два множества:

а) первое множество должно включать в себя ви-

лизаций существует шраничение: тип компонентов

файла не может быть файловым.

Определим файловый тип FPK следующим образом:

TYPE ZAP=RECQRD

ФИО: PACKED ARRAYС1..10: OF CHAR; ГОЙР: INTEGER

END;

FPK=FILE OF ZAP;

Тоща любая переменная типа FPK - это последова­ тельный файл, состоящий из записей. Каждая запись имеет два поля: ФИО(фамилия) и ГОДР(год рожде­ ния). Переменные файлового типа, как и обычные пе­ ременные, описываются в разделе переменных, напри­ мер

VAR СГРРК;

С переменной СТ автоматически связана некото­ рая буферная переменная СТ#, относящаяся к типу компонентов файла и представляющая собой своеобраз­ ное "окно", через которое можно просматривать или за­ писывать очередные компоненты. В любой момент времени доступен только один компонент ф айла-С Т/.

К файловым переменным применима стандартная функция EOF (< файловая переменная >), которая принимает булевское значение TRUE, если достигнут конец файла, и значение FALSE, если в файле еще имеются элементы. Если файл не имеет компонентов, то он называется пустым и функция EOF вырабатыва­ ет значение TRUE.

Для работы с последовательными файлами в большинстве версий языка ПАСКАЛЬ определены сле­ дующие операции:

-открыть файл для записи

REWRITE ( < файловая переменная > [,< внешнее имя>]);

-открыть файл для чтения

RESET ( < файловая переменная > [,< внешнее имл > ]);

-записать в файл

PUT ( < файловая переменная >);

-считать из файла

GET ( < файловая переменная > );

-закрыть файл

CLOSE ( < файловая переменная >).

Файловая переменная логически связана с внеш­ ним устройством. Если внешнее имя опущено при от­ крытии файла для записи, то файловая переменная трактуется как временный файл, который по оконча­

нии работы программы ликвидируется. Если внешнее имя опущено при открытии файла для чтения, то файловая переменная трактуется как временный файл, созданный ранее в этой же программе. Параметр (внешнее имя) определяется для каждой .конкретной реализации языка ПАСКАЛЬ по-разному.

В стандарте языка ПАСКАЛЬ в операторах REWRITE и RESET внешнее имя не указывается, а имя файловой переменной трактуется как имя внеш­ него файла, если оно указано в заголовке программы.

Чтобы осуществить запись данных в файл, его следует открыть операцией REWRITE. После открытия на запись файл считается пустым, а указатель устанав­ ливается на начало; в этот файл затем можно последо­ вательно заносить информацию из буферной перемен­ ной при помощи операции PUT. Если файл с таким именем уже существовал, то вся информация, хранив­ шаяся ранее в этом файле, становится недоступной. Операция PUT записывает в файл очередной компо­ нент и переставляет указатель на свободное место. Та­ ким образом, число компонентов ^файла увеличивается на единицу. Например, для записи в файл СТ очеред­ ного компонента, находящегося в буферной перемен­ ной СТ/, необходимо выполнить операцию PUT(CT).

Читать файл можно только с начала, предвари­ тельно открыв его на чтение операцией RESET. На­ пример, при открытии файла с именем СТ для чте­ ния соответствующая буферная переменная СТ/прини­ мает значение первой записи файла СТ. Если файл пуст, то EOF(CT)=TRUE, а значение СТ/ не определе­ но. Для чтения очередной записи из файла СТ необ­ ходимо выполнить операцию GET(CT). При этом счи­ танная запись станет доступной через буферную пере­ менную СТ

По окончании записи элементов в файл СТ его необходимо закрыть при помощи операции CLOSE(CT). При этом файл СТ сохраняется на внеш­ нем носителе, если при его открытии на запись было указано внешнее имя.

Открыть один и тот же файл и для чтения, и для записи одновременно нельзя, поэтому от­ крыть для чтения можно только предвари­ тельно закрытый файл.

Приведенная ниже программа РР71 демонстрирует работу с временным файлом FIZAP. В файл сначала заносятся три записи, каждая из которых представляет собой совокупность двух полей. Первое поле (ФИО) со­ держит фамилию, а второе поле (ГОДР)-год рожде­ ния. Ввод исходной информации осуществляется с терминала. Затем этот файл закрывается и вновь от­ крывается только уже на чтение, после чего из файла считываются три записи и выводятся на терминал. По окончании работы программы файл F1ZAP не сохраня­ ется, так как внешнее имя не было указано.

PROGRAM РР71(INPUT,OUTPUT); TYPE ZAP*RECORD

ФИО: PACKED ARRAY!1..103 OF CHAR? ГОДР: INTEGER

END; FPK=FILE OF ZAP;

VAR FIZAP:FPK; A,В:ZAP; J,I:INTEGER; BEGIN

REWRITE<FIZAP); READLN; FOR J:=1 TO 3 DO

BEGIN WRITE('=>');

FOR I:=1 TO 10 DO READ(В.фИОСI3); READLN(В.ГОДР); FIZAPt:=B; PUT(FIZAP)

END; CLOSE(FI ZAP); RESET(FIZAP) ;

FOR J:=1 TO 3 DO

BEGIN

A:=FIZAPT;

WRITELN(J:2,'-АЯ ЗАПИСЬ А.ФИО,А.ГОДР:5);

GET(FIZAP)

END

END.

П р о т о к о л р а б о т ы п р о г р а м м ы PP71:

= >КОНТАРЕНКО

1967

= > СЕМЕНОВ

1970

= > КОРНЕЕВ

1968

1 -А Я ЗАПИСЬ KOHTAPEHKO 1967