Практикум по основам программирования. Язык Паскаль
.pdfбулевского типа было ложно при первом входе в цикл, то оператор А не выполняется ни разу. Очевидно, что один из операторов, находящихся внутри цикла, дол жен влиять на значение выражения, поскольку иначе цикл будет повторяться бесконечно.
Проиллюстрируем использование оператора цикла с предусловием:
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) |
7Г/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 ПЕРЕЧИСЛИМЫЕ СКАЛЯРНЫЕ ТИПЫ
Перечислимый тип данных задается списком зна чений (объектов), которые могут принимать перемен ные этого типа.
При этом каждый объект есть имя. Числа, ло гические и символьные константы не могут яв ляться объектами перечислимых типов.