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

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

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

булевского типа было ложно при первом входе в цикл, то оператор А не выполняется ни разу. Очевидно, что один из операторов, находящихся внутри цикла, дол­ жен влиять на значение выражения, поскольку иначе цикл будет повторяться бесконечно.

Проиллюстрируем использование оператора цикла с предусловием:

PROGRAM TEST(OUTPUT);

VAR KsINTEGER;

BEGIN К:=0;

WHILE K< =10 DO

BEGIN

K:=K+2; WRITE(Ks3>

END

END.

Врезультате отпечатаются четные числа от 2 до

12.Заметим, что сначала отпечатается число 12, а за­

тем проверится условие К <=10

и осуществится выход

из цикла. Результат печати имеет вид

2

4

6

8

10

12

О п е р а т о р ц и к л а

с

п о с т у с л о в и е м похож

на оператор цикла с предусловием, но условие вычис­ ляется и проверяется после выполнения операторов, составляющих тело цикла. Общий вид оператора цик­ ла с постусловием:

REPEAT A1;A2;...;AN

UNTIL В

ще A lrA2,...,ANоператоры тела цикла; В-выражение булевского типа.

Оператор цикла с постусловием начинается с вы­ полнения операторов внутри цикла. Затем вычисляется выражение В, и если получается истинное значение, то осуществляется выход из цикла. Если же значение

выражения

ложно, то

выполнение

операторов

A 1,A 2,...,A N

повторяется, а

затем снова

вычисляется

выражение В.

 

 

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

Ниже приведена программа, осуществляющая те же действия, что и в предыдущем примере, но с ис-

пользованием оператора цикла с постусловием:

PROGRAM ТТ(OUTPUT)s

VAR К:INTEGER; BEGIN К:=0;

REPEAT

К:=К+2; WRITE(Ks3) UNTIL Ю 1 0

END.

В результате отпечатаются четные числа от 2 до 12, что совпадает с результатами работы программы TEST, вде используется оператор цикла с предусловием.

2.3ВОПРОСЫ И УПРАЖНЕНИЯ

1.Нарисовать синтаксическую диаграмму условного оператора.

2*. Какие из приведенных ниже операторов являются

неправильными и почему?

а) Ш А < В

TH EN А:=А *А E L S E В:=В*В;

б) IF X AND Y THEN S:=S+1; ELSE S:=S -1 ;

в) IF KO

M THEN K:=M;

r) IF 5 THEN S:=S+5;

д)

12: IF (A < B ) OR C THEN C=FALSB;

е)

IF (A=B) AND P THEN P:=P+10S;

3. Какие значения имеют переменные А и В в ре­ зультате. выполнения условного оператора: IF А <В THEN А:=В ELSE В:=А, если перед его выполнением А=0.5, В= -1.7?

4. Какая задача решается при выполнении оператора:

IF X < Y TH EN M AX:=Y E L S E M A X = X ?

5. Задать с помощью условного оператора следующие

действия:

* меньшее из двух значений переменных вещ

а)

ственного типа X и Y заменить нулем, а в случае их равенства - заменить нулями оба;

б) наибольшее из трех различных значений пере­ менных целого типа X,Y и Z уменьшить на 0.3.

6*. Вычислить: у

 

х2 +1,

если

*<0;

х - 2,1, если

х>

 

 

 

 

2

 

ь

sinx,

если

.

2

7*. Поменять местами значения целых переменных А,В,С таким образом, чтобы оказалось А>В >С.

8. Булевской переменной В присвоить значение TRUE, если значения переменных X и Y равны, и значение FALSE в противном случае.

9. Какое значение примет переменная F после выпол­ нения следующих операторов:

 

а)

I: = l; F:=2; WHILE К б

DO I:=I+1; F!=F*I;

 

б)

I:= 1; F:=2; WHILE К б

DO BEGIN I:=I+1; F:=F*I END;

10*. Вычислить по схеме Горнера:

а)

у = a7 + 2a6 +3a5 + 4a4 + 5a3 + 6a2 + la + 8;

б)

у = 8a7 + la6+ 6as+ 5a* + 4a3 + 3a2 + 2a + L

11*. Дан текст, содержащий 30 символов. Подсчитать количество вхождений символов А и В.

12*. Написать программу вычисления:

х

х

х1

 

л"

+ с с точностью е=10

-4

v ш е = 1 + -

+— + ... +— + ...

 

1!

2!

 

п!

 

 

13. Написать программу вычисления:

 

 

 

дЗ

 

£

 

 

у = sin (х) = х - — +— — +... с точностью е=10'6.

 

 

 

3!

5!

71

 

 

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

З А Д А Н И Е 1. РЕШЕНИЕ УРАВНЕНИЙ И НЕРАВЕНСТВ

Це л ь з а д а н и я

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

2.Знакомство с задачами, для решения которых ис­ пользуются условные операторы.

П о с т а н о в к а з а д а ч и Составить программу решения уравнения (систе­

мы уравнений, неравенства, системы неравенств). На­ печатать исходные данные и результаты в принятом в математике виде.

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

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

2.Текст программы.

2—52

3.План отладки, тесты, результаты отладки на тестах.

4.Анализ допущенных ошибок.

М е т о д и ч е с к и е у к а з а н и я

1.Программа должна правильно выполняться при лю­ бых значениях начальных данных.

2.Правильность работы всех ветвей программы долж­ на быть проверена на тестах.

3.При отсутствии решения или бесчисленном множе­ стве решений должен быть напечатан соответствующий

текст. Например, НЕРАВЕНСТВО РЕШЕНИИ НЕ ИМЕЕТ или ЛЮБОЕ X ЯВЛЯЕТСЯ РЕШЕНИЕМ УРАВНЕНИЯ и т. п.

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

1.ах2+Ь

2.ах2+Ьх+с

3.ах2+Ь

4.ах2+£г^0

5.ах2 + Ьх +оО

6.ал^ + йх + с^О

7{а^х + Ъу + с ^ О \а2х + btf + с2 =О

g Га2х + 6Хi<0

\а 2х + Ь2<0

? [а2х + Ъ^i> 0 \a 2x + b2>0i

10. Га2х + ^>0 \а2х + Ь2<0

З А Д А Н И Е 2. ПОСТРОЕНИЕ ТАБЛИЦ ФУНКЦИЙ

Це л ь з а д а н и я

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

2.Знакомство с методами оптимизации программ.

П о с т а н о в к а з а д а ч и Составить программу вычисления значений функ­

ции F(3Q на отрезке [А,В] в точках Х/=А+£Н, ще Н=(В - А)/М, М - заданное целое число.

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

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

2.Текст программы.

3.Таблица результатов.

4.Анализ допущенных ошибок.

М е т о д и ч е с к и е у к а з а н и я

1.Для задания значений X и соответствующих значе­ ний функции следует использовать простые перемен­ ные.

2.Значение шага Н должно вычисляться один раз.

3.При изменении значения аргумента X использовать оператор присваивщия Х:=Х+Н, а не оператор с ис­ пользованием операции умножения Х:=А+1*Н, что су­ щественно сокращает время выполнения программы.

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

Номер

Функция F(X)

Параметры

М

варианта

 

A

В

1

х - sin(x)

0

я/2

10

2

sin(x)

я/4

я/2

15

3

cos(x)

/3

2п/3

20

4

tg(x)

0

я/4

10

5

ctg(x)

rr/4

я/2

15

6

arcsin(x)

0

1

20

7

arccos(x)

0.5

1

10

8

arctg(x)

2

7

15

9

sin(x) - cos(x)

0

я/2

20

10

xsin(x)

0

Зя

10

11

sin(l/x)

тг/8

2/я

15

12

cos(l/x)

я/4

4/я

20

13

sin(x^)

тг/6

2я/3

10

14

cosCx2)

ir/3

Зя/2

15

15

sin(x)+tg(x)

0

я/4

20

16

cos(x)+ctg(x)

я/4

я/2

10

17

tg(x/2)

0

2я/3

15

18

tg(x/2)+cos(x)

я/2

я

20

19

ctg(x/3)+sin(x)

я/4

я/2

10

20

sin(x/4)/2

я/2

я

15

З А Д А Н И Е 3. ОРГАНИЗАЦИЯ ЦИКЛОВ В ПРОГРАММЕ

Це л ь з а д а н и я

1.Получение навыков в выборе и использовании опе­

раторов цикла.

2. Знакомство с итерационными процессами-.

П о с т а н о в к а з а д а ч и Используя оператор цикла, найти сумму элемен­

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

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

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

2.Текст программы.

3.План отладки, тесты, результаты отладки на тестах.

4.Результат решения конкретного варианта.

5.Анализ допущенных ошибок.

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

пользовать рекуррентную формулу для получения сле­ дующего члена ряда.

Например, требуется найти сумму ряда с точностью £ =10 %общий член которого а„ = 2(п1У/(3<2п)1).

Для получения рекуррентной формулы вычислим отношение следующего члена ряда к текущему:

<Wi

2«и + 1)0*3(2п)!

п + 1

°п

3(2п+ 2)12(п!)2

2(2л+ 1)*

откуда

ал+1 = ая(п +1) / (2(2п +1))

2. Пример программы. При составлении программы будем считать, что точность достигнута, если an < g.

PROGRAM SYM(OUTPUT);

CdNST E=0.IE-3;

VAR N:INTEGER; AN ,SYMMA:REAL;

BEGIN

SYMMA:=0; N:=l; AN:=1/3;

WHILE AN>E DO

BEGIN

SYMMA:=SYMMA+AN; N:=N+1;

AN:=AN* <N+1)/2/(2*N+1)

END;

WRITELN('СУММА=',SYMMA, ПОСЛЕДНИЙ ЧЛЕН РЯДА=',АН>;

END.

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

СУММА=4.727439Е - 01 ПОСЛЕДНИЙ ЧЛЕН РЯДА= 4.113534Е-05

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

1.Найти сумму целых положительных чисел, крат­ ных 4 и меньших 100.

2.Найти сумму целых положительных четных чисел,

меньших 100.

3.Найти сумму целых положительных нечетных чи­ сел, меньших 200.

4.Найти сумму целых положительных чисел, боль­

ших 20, меньших 100 и кратных 3.

 

,

общий

5. Найти сумму ряда с точностью £ - 10‘3

член которого

 

 

 

 

а„= (-1)"'7п ".

 

 

 

 

6. Найти сумму ряда с

точностью

£ = 10"3

 

общий

член которого

 

 

 

 

1/2"+ 1/3".

 

 

 

 

7. Найти сумму ряда с

точностью

£ = 10~3

 

общий

член которого

 

 

 

 

я„ = <2л-1)/2".

 

 

 

 

8. Найти сумму ряда с

точностью

£ = Ю'3

 

общий

член которого

 

 

 

 

a„ = l/(G« - 2)G/t + l)).

 

 

 

 

9. Найти сумму ряда с

точностью £ = КГ3

 

общий

член которого

 

 

 

 

а„ т10”/л!.

 

 

 

 

10. Найти сумму ряда с

точностью £ *=10‘3

 

общий

член которого

 

 

 

 

а„= (л!) /Сп)!

 

 

 

 

11. Найти сумму ряда с

точностью

£ = 10’2

,

общий

член которого

 

 

 

 

а„ = л!/л".

12. Найти сумму ряда с точностью £ = Ю'2 член которого

ап = 2Гп1/(пП)1

13. Найти сумму ряда с точностью £ = Ю'3 член которого

а„ = 3"л!/6л)!.

14. Найти сумму ряда с точностью £ = Ю'3 член которого

ап ш п \ / (Зля).

15. Найти сумму ряда с точностью £ = 10'3 член которого

а„= (п!)2/(2"2)!.

16.Найти сумму 10 членов ряда, в котором а„ = 1п (и!)/п2.

17.Найти сумму 15 членов ряда, в котором

ап = пЫ / Ann)”.

18.Найти сумму 12 членов ряда, в котором

а„= л ! /п ^~п.

19.Найти сумму 7 членов ряда, в котором

п „-V" а„ = е v .

20. Найти сумму 9 членов ряда, в котором

общий

общий

общий

общий

З А Д А Н И Е 4. ИСПОЛЬЗОВАНИЕ СЛОЖНЫХ ОПЕРАТОРОВ ДЛЯ ОРГАНИЗАЦИИ СИМВОЛЬНОЙ ОБРАБОТКИ

Це л ь з а д а н и я

1.Закрепление навыков в использовании операторов цикла.

2.Получение навыков в работе с символьной инфор­ мацией.

3.Освоение алгоритма перевода чисел из произволь­ ной системы счисления в десятичную.

П о с т а н о в к а з а д а ч и Ввести последовательность символов, представляю­

щую собой запись числа в системе счисления Р. Коли­ чество N вводимых символов (разрядность исходного числа) определяется вариантом. Требуется перевести это число в десятичную систему счисления и опреде­ лить, кратно ли оно М (величина М определяется ва­ риантом). Вывести на печать число в исходной и де­ сятичной системах счисления. Если число кратно М, то напечатать TRUE, в противном случае напечатать FALSE.

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

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

2.Описание алгоритма перевода в десятичную систему

счисления.

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

4.Анализ допущенных ошибок.

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

приведенной ниже программой, которая вводит три символа, представляющих собой запись числа в шест­ надцатеричной системе счисления, переводит заданное число в десятичную систему счисления и распечатыва­ ет его:

PROGRAM СС <INPUT.OUTPUT);

VAR S:CHAR; I,Ms INTEGER;

BEGIN READLN; WRITE<'=>•>; M:=0; FOR I:=l TO 3 DO

BEGIN READ <S) ; WRITE(S);

IF <S>=*0*> AND (S<='9'> THEN M:=M*16+0RD<S>-ORP(*0*> ELSE M:=M*16+0RD(S>-OPD{ 'A ')+10

END;

WRITELN; WRITELN<'ЧИСЛО В 10-ОЙ C/C=',M:5> END.

П р о т о к о л

р а б о т ы

п р о г р а м м ы

СС:

 

= > F F F

 

 

 

 

 

 

FFF

 

 

 

 

 

 

ЧИСЛО В 10-ОЙ С/С=4095

 

 

 

 

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

 

 

 

 

Номер

N

Р

М

Номер

N

Р

М

варианта

 

 

 

варианта

 

 

 

1

3

11

3

6

3

12

10

2

5

8

4

7

3

11

11

3

6

7

5

8

4

9

7

4

8

6

8

9

5

2

2

5

9

4

9

10

3

13

9

Г Л А В А 3

ПЕРЕЧИСЛИМЫЕ И ОГРАНИЧЕННЫЕ ТИПЫ ДАННЫХ

Алгоритмический язык ПАСКАЛЬ предоставляет програм­ мисту широкие возможности для задания дополнитель­ ных типов, характеристики которых он может определять самостоятельно. Новые типы описываются в специаль­ ном разделе типов или определяются непосредственно при описании переменных. В этой главе рассматриваются возможности, предоставляемые языком, для задания пе­ речислимых и ограниченных типов, операции, определен­ ные над данными таких типов, а также примеры про­ грамм, иллюстрирующих способы их применения.

3.1 ПЕРЕЧИСЛИМЫЕ СКАЛЯРНЫЕ ТИПЫ

Перечислимый тип данных задается списком зна­ чений (объектов), которые могут принимать перемен­ ные этого типа.

При этом каждый объект есть имя. Числа, ло­ гические и символьные константы не могут яв­ ляться объектами перечислимых типов.