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

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

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

PROGRAM 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)-

 

 

Целое без

знака \