Практикум по основам программирования. Язык Паскаль
.pdfВыписать все допустимые значения этой перемен
ной.
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