книги / Практикум по основам программирования. Язык Паскаль
.pdfPROGRAM REW <TNPUT,OUTPUT);
VAR MAS:PACKED ARRAYС1. .30D OF CHAR; I: INTEGER; BEGIN READLN; WRITE<*=>>;
FOR I:=30 DOWNTO 1 DO READ(MAS!13);
READLN;
WRITELN(MAS)
END.
13.
PROGRAM S P (INPUT,OUTPUT);
TYPE MAS-PACKED ARRAYC1..153 OF CHAR;
VAR SPISOK:ARRAYCl..253 |
OF |
MAS; I,JsINTEGER; |
|
BEGIN READLN; WRITE!'*>'); |
|
||
FOR I:=l TO 25 DO |
|
|
|
BEGIN |
TO |
15 |
DO READ(SPISOKC 1«J 3); |
FOR J:»l |
|||
READLN |
|
|
|
END; |
DO |
WRITELN(SPISOKC13) |
|
FOR Is =1 TO 25 |
|||
END. |
|
|
|
Глава 5
4. А.ГЛАВАСЕМЬИ: = ТОКАРЕВ A B .
А.ВОЗРАСГ:=65; А.ДЕТИ[1].ИМЯ: = ’ВЛАДИМИР А.ДЕТИ[1].ГОДР: = 1957; А.ДЕТИ[2] ИМЯ =*ОЛЕГ
А.ДЕТИ[2].ГОДР: = 1961; В:=А;
5. а) Не указан тип компонентов упакованного массива в поле НАЗВ, поля S и SP перечислены через точку с запятой вместо запятой и в конце отсутствует END.
PROGRAM WWZ(INPUT.OUTPUT); TYPE ВPEMS»»RECORD 4ACi0. .23;
МИН,СЕК:0..59 END;
VAR T1.T2*ВРЕМЯ; ТЕ1,TE2iINTEGER;
BEGIN
READ CT1. ЧАС,Tl. МИН,T1.CEK.T2. ЧАС.T2. МИН, Т2.СЕК); ТЕ1г-Tl.ЧАС*ЗА00+Т1.МИН*60+Т1.СЕК;
ТЕ2:—Т2.ЧАС*3£00+Т2.МИН*60+Т2.СЕК; IF ТЕ1>ТЕ2 THEN WRITELN(FALSE)
ELSE WRITELN(TRUE)
END.
Глава 6
5. а) Операция / над переменными множественного типа не определена.
д) Элементами множеств не могут быть вещественные числа.
6. |
a) TRUE; б) РА’..’М’]; в) [СОЧИ]; г) FALSE; |
||||||
Д) [’(’.ОТ- е) FALSE. |
|
||||||
7. |
Будет напечатано: В ТЕКСТЕ ИМЕЮТСЯ СЛЕДУ |
||||||
ЮЩИЕ ЦИФРЫ: 1 2 3 5 7 |
|||||||
8. |
В |
п. |
|
а), |
б), |
г), |
д), ж) ответ - TRUE, а в п. в), |
е) |
- FALSE. |
13, |
141. |
|
|||
9. |
[4, |
5, |
7, |
12, |
[ ]; г) А*В; д) А*В. |
||
11. |
а) |
17; б) А - В ; в) |
Глава 7
6. а) Возможны следующие способы описания:
11 VAR CT:FILE OF CHAR; ^определить сначала файловый тип: TYPE А=FILE OF CHAR;
а затем в разделе переменных: VAR СТА.;
3) воспользоваться именем стандартного типа: VAR СТ:ТЕХТ;
б) Возможны следующие способы описания:
1.
TYPE A-RF.CORD ФИО: PACKED ARRAY С1. .103 OF CHAR; ГОДР:1960..1980
END; F=FILE OF A;
VAR CT:F ;
2
TYPE A=RECORD ФИО:PACKED ARRAYC1..103 OF CHAR; ГОДР:1960..1980
END;
VAR CT:FILE OF A;
3. VAR CT:FILE OF RECORD ФИО:PACKED ARRAYCl..103 OF CHAR; ГОДР:1960..1980
END;
7.В п. б) вместо двоеточия использован знак равно, а
вп. г) не указан тип компонентов массива.
11.В разделе переменных должно быть описание: VAR FIL:FILE OF PACKED ARRAY[1..2] OF CHAR;
Буферной переменной FTLf присваивается значе ние строки из двух символов, и оно добавляется к файлу, а значение FILt после записи становится неоп ределенным.
14.Неправильно записаны операторы г), е), л), м). Эк вивалентными операторами являются а) и з), б) и и), ж) и н).
15.В п. а) разницы в работе нет, а в п. б) вместо од
ной строки ’АИСТ будет напечатано две строки: ’АИ’ и ’СТ.
16. В п. а) файл FIL одновременно открыт и на за пись, и на чтение, что недопустимо. В п. б) после вы полнения оператора GET(FEL) функция EOF(FIL) при нимает значение TRUE и значение буферной пере менной не определено, поэтому последний оператор присваивания не имеет смысла, так как файл содер жит только один элемент. В п. в) файл открыт на чтение, а оператор PUT(F1L) предназначен для записи.
Глава 8
3.Xf =12 и Y# =7.
4.Будет напечатано: АА.
5.Будет напечатано: АВА.
6.а)
'__М:=ХС11Т;
FOR 1:=2 ТО 50 DO
IF ГКХСПТ THEN M:=XCII+»...
При этом в разделе переменных должно быть до бавлено описание LINTEGER; M:REAL.
б)
...PR»«TRUE| NEG:-NIL( I«-lj
WHILE PR AND (K-S0) DO IF X[I]t<l THEN BEGIN
NEGt-ХСП; PR»«FALSE
END
ELSE Ii-1+Ц...
При этом в раздел переменных должно быть до бавлено описание
I:INTEGER; PR.BOOLEAN; NEG:CCbIJIKA.
7.Правильные результаты - п. а), в), д).
8.Результаты работы приведенных фрагментов будут разные, так как в области действия оператора присое динения нельзя изменять элементы списка перемен ных-записей, указанные в заголовке. Оператор С:=В недопустим, так как ссылочная переменная В изменя ет значение на каждой итерации цикла.
Глава 9
8. Считаем, что в разделе констант задано конкретное Значение N, а в разделе типов определен тип \1AS=ARRAY[1..N] OF REAL.
FUNCTION MAX(VAR Ms MAS; K:INTEGER):REAL;
VAR I:INTEGER; TsREAL;
BEGIN
T:=MC13;
FOR Is=2 TO К DO
IF MCI3>T THEN Ts=MCID;
MAXs =T
END;
При обращении к функции MAS в качестве фактиче ских параметров указываются имя массива и его ре альная длина, не превышающая N. Сам массив дол жен быть типа MAS, так как соответствующие формальные и фактические параметры должны быть од ного и того же типа.
9. PROCEDURE UP(VAR Ms MAS; KsINTEGER);
VAR JsINTEGER; TsREAL; PsBOOLEAN; BEGIN
Ps «TRUE; WHILE P DO
BEGIN Ps«FALSE;
FOR Js~l TO K-l DO
IF MCJKMCJ +l] THEN
BEGIN T:«MCJ+13; MCJ +l11=MC J 3; MCJ 3s=T; P:«TRUE
END
END
11. END;
FUNCTION ДНЕД(N:НОМЕР)8ДЕНЬНЕДЕЛИ; BEGIN
CASE N OF
1: ДНЕAs «ПОН; 2s AHEAs =BTOP; 3s AHEAs«СРЕДА; 4s ДНЕД:«ЧЕТВ; 5s AHEAs«ПЯТН; 6s ДНЕДз=СУББ; 7s AHEAs«ВОСКР
END
END;
12.
FUNCTION MAXMIN(PsBOOLEAN; X,YsINTEGER)sINTEGER;
BEGIN
IF P THEN IF X>Y THEN MAXMINs«X
ELSE MAXMINs«*Y
ELSE IF X<Y THEN MAXMINs=X
ELSE MAXMINs »Y
END;
Если фактический параметр, соответствующий па раметру Р, задать равным TRUE, то функция будет ис кать большее число, в противном случае - меньшее.
13. В программе допущены следующие ошибки:
а) в разделе операторов функции F применен опе ратор F:=F+X. Использование в правой части операто ра присваивания имени функции недопустимо;
б) вместо SINY следует писать SIN(Y), так как аргумент стандартной функции должен быть заключен в скобки;
в) в операторе процедуры выражение F(5) являет ся неверным, так как функция F требует веществен ного аргумента, т. е. имеет место несоответствие типов. 14. Будет напечатано: С=А и С=С.
FUNCTION CT<M,N:INTEGER)sREAL;
VAR К,T,It INTEGER; RsREAL;
BEGIN
K:=M+1; T:=1; R:=1;
FOR 15s1 TO N-M DO
BEGIN R«=R*K/T| Ks=K+l| Ts«T+l END
П.1. Синтаксические диаграммы
— Q б ун д а —
И мя
б укб а ' у
— ( Цифро'У*—
Ц елое без з н а к а
( Ц иф ра У
Г
Число без зн а ка
Целое
без зн а ка
Целое
без
знака
Конст ант а
|——{ И мя конст ант ы
Число без знака f
----^ -----^--^^Символ)----^
Переменная *\ И м я перем енной\
Имя |
поля |
|
В ы р а ж е н и е V T |
K |
T ) - |
|
||
|
|
|
* — |
о |
- |
|
|
|
|
- |
О - |
с |
Имя |
пол~я~\- |
|
|
|
|
|
|
|
■О |
|
|
|
|
М нож ит ель |
|
|
|
|
|
|
|
|
|
Конст ант а |
дез |
з н а к а } - |
|
|
|
||
|
— Н |
П ерем енная |------- |
|
|
|
|||
"I |
Имя ф ун кц и и 1 |
|
|
Вы раж ение ь |
к |
> |
н |
|
|
|
|
L-o—1 |
|
|
|||
—G> Ц В ы р а ж е н и е )- |
|
<2> |
|
|||||
K L> |
< ш > |
|
М нож и т ель\- |
|
|
|
||
Вы раж ение |
|— |
|
В ыр а же н и е | |
|
г О |
У |
||
|
|
|
|
|
= Q -
Слагаемое
Множитель
|
* ) |
( / ) |
( |
DIV ) ( MOV ) (AND |
Множитель |
|
|
|
|
П р ост ой т ип |
И м я т ип а |
|
||
|
|
|||
- о |
|
Имя |
|
<3 > |
о |
|
|||
|
|
|
||
Конст ант а h - |
о |
— |
- i Конст ант а |
Список полей
O n
Имя
|
|
I |
|
|
И м я т ипа |
|
£ |
о*- |
Конст ант а |
0 ~ ~ 0 " п С писок полей Н 2 г |
|
Простое вы раж ение |
|
|
Вы раж ение
[Целое дез знака |
|
|
|
|
|
|
|
Т--Перспсппинименная|------Г |
- 0 |
|
— И Выражение |- |
|
|||
I——| Имя |
ф ункции |— ' |
|
|
о-— |
|
||
|
|
|
|
|
|||
I И м я процедур(i3 W |
l ) p tВыражение}- |
<2> |
|||||
|
|
|
|
Имя процедуры |
|
||
—- { BEGIN |
У |
*\0перат ор\ |
|
-( |
END У ~ |
||
|
|
|
о |
|
|
|
|
—^ В ы р а м е й й ё \ ^ Н 1 н У ^О перат ор\— |
LSЕ^*|Оператор [■ |
||||||
|
|
|
|
|
|
I Оператор |
|
(WHILE ^ — *4 Выражений— »*(ш5)—И Оператор\ |
|
||||||
- • ( REPEAT |
У г-Н |
Оператору |
( U N T I L ^---- Н Выражение |
||||
т |
|
|
|
|
|||
|
|
о |
|
|
|
V 0 W N T 0 |
|
|
|
|
|
|
г<5 |
|
|
*( F 0 R |
переменной[— |
|
“ВыражениеН------— ** |
||||
|
|
*— * \ Выражение |
|
*(DO)----Н Оператор\- |
|||
|
г О |
|
|
|
|
|
|
-^(WITH |
У ^ |
I Прп |
|
|
|
Оператор] |
|
|
Переменная]---- — |
|
|||||
|
GQTo)- |
|
|
Целое без |
знака \ |
|