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

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

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

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

ВВЕДИ X:

 

- 1 3

 

ПРИ Х=

-1 3 0 0 Y= -153494

Y ll= -1 5

Y22= -1 6

ВВЕДИ КООРДИНАТЫ: XI,Y1

031.2 FALSE

ПРОГРАММУ СОСТАВИЛ ИВАНОВ

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

 

1. a) Y - Т х- ^ х +

при

Х=4.741;

 

б) координаты исследуемой точки: (05;0Д).

Область изображена на рис. 1.2.

2. a) Y=^/e* - sinx

при X =2312;

б)

координаты

исследуемой

точки: (15;05).

 

на

 

Область изображена

рис. 1.3.

 

Рис. 13

3. a)

Y = -y j\x - 1| + sinx

при

Х =12.7409;

 

 

б) координаты исследуемой

точки: (0.2;0.9).

Область изображена на рис. 1.4.

4. a) Y=xcosx + sin3je при Х=32.872;

б) координаты исследуемой точки: (0.75; - 0,3).

Область изображена на рис. 1.5.

5.

a)

Y=tgx+ |х|

при

Х= -2.6312;

исследуемой

 

б)

координаты

точки: (0.2;0.45).

 

 

 

Область изображена на

рис. 1.6.

 

 

 

6.

a)

Y = 1 +-^ +-^-

при

 

 

*

дс2

 

Х= -0,387;

б) координаты исследуемой точки: (0.5;-2,5).

Область изображена на

рис.

1.7.

 

 

7. a) Y=ch \х +1|

при Х=4.352; ^

б) координаты исследуемой

точки: (0.0;0.0)

изображена

на

Область

рис. 1.8.

8.

a) Y=arcsin х + х2

при

Х=0.112.

б) координаты исследуемой точки: (1.0;1.5)

Область изображена на рис. 1.9.

9. a)

Y=sin arctg*

при Х= - 0.7129;

б)

координаты

исследуемой

точки: ( - 0.5;0.9).

Область изображена на рис. 1.10.

Рис. 1.6

Рис. 1.7

Ук

1

-1

10.

Y=5arctgx

при У

х=

- 4.41^2;

1

 

 

б) координаты исследуемой точки: (1.5;0.0)

Область изображена на рис. 1.11.

Г Л А В А 2

СЛОЖНЫЕ ОПЕРАТОРЫ

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

2.1 УСЛОВНЫЙ ОПЕРАТОР. СОСТАВНОЙ ОПЕРАТОР

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

Существует два вида условного оператора:

1) ш в THEN si

2) IF

В

TH EN SI E L S E S2

 

 

 

 

где В-выражение булевского типа;

SI,

S 2 -отдельные

операторы

или

операторы,

сгруппированные

вместе

при помощи операторных скобок BEGIN END. Такой

оператор

называется составным.

п е р в о г о

вида,

Для

у с л о в н о г о о п е р а т о р а

если выражение В принимает значение TRUE, выпол­

няется оператор S1, стоящий после THEN. Если же

выражение

В принимает значение FALSE, то этот опе­

ратор

не

.выполняется. Например:

IF

X >Y

THEN

Х:5.1.

Если значение X>Y,

то выполнится оператор

Х:=5.1 и переменная X примет значение 5,1; если

значение X<=Y,

т.е. выражение X >Y ложно,

то опе­

ратор Х:=5.1 не выполнится и значение X не изменит­

ся.

 

 

 

 

 

 

 

 

Для

у с л о в н о г о о п е р а т о р а

в т о р о г о

вида,

если выражение В принимает значение TRUE, то вы­

полняется

оператор S1, стоящий после THEN, a S2 не

выполняется. Если выражение В принимает значение

 

FALSE, то выполняется оператор S2, стоящий после

 

ELSE, a S1 не выполняется. Например: IF X >Y THEN

 

Х:=5.1 ELSE Y:=0.0;

X больше Y, т. е.

выражение

 

При

этом,

если

 

X >Y

истинно, X присваивается значение 5,1, a Y оста­

 

ется

без

изменения. Если же X < =Y, т. е.

выражение

 

X >Y

ложно, то Y присваивается значение

0.0, а X не

 

изменяется.

 

 

 

 

 

 

Следует помнить, что условный оператор управляет

 

только одним оператором, поэтому, если требуется

 

произвести более одного действия, необходимо исполь­

 

зовать составной оператор. Например, необходимо при­

 

своить целым переменным X и Y соответственно зна­

 

чения 5

и 23,

если

параметр

А <0, и нули в против­

 

ном случае.

 

 

 

 

 

 

 

Оператор IF запишется следующим образом:

 

 

IF А < 0 THEN BEGIN Х:=5; Y:=23 END

 

 

 

 

ELSE BEGIN X:=0; Y:=0 END;

 

 

 

На операторы, стоящие после THEN и ELSE, не

 

наложены ограничения. Особый интерес представляет

 

тот случай, когда эти операторы являются условными.

 

Рассмотрим следующие возможные варианты:

вида

 

1.

В

условном

операторе

первого

IF В1 THEN

S1

оператор S1

может быть условным

 

оператором первого вида, тоща будем иметь следую­ щую конструкцию: IF В1 THEN IF В2 THEN S11, что соответствует блок-схеме, приведенной на рис. 2.1.

Рис. 2.1

Вэтом случае оператор определяется однозначно.

Вусловном операторе первого вида оператор S1 может быть условным оператором второго вида, тоща будем иметь следующую конструкцию: IF В1 THEN IF В2 THEN S ll ELSE S12, что соответствует блок-схеме, приведенной на рис. 2.2.

Рис. 12

В этом случае возникает вопрос: какому THEN со­ ответствует ELSE? Для обеспечения однозначности в языке ПАСКАЛЬ принято соглашение о том, что каж­ дому ELSE соответствует предыдущий свободный THEN.

2. В условном операторе второго вида IF В1 THEN SI ELSE S2 в качестве операторов S1 и S2 также могут использоваться условные операторы как первого, так и второго вида. Рассмотрим следующий случай: S 1 -ус­ ловный оператор первого вида; S2-He является услов­ ным оператором. Будем иметь конструкцию:

Ш В1 THEN BEGIN IF В2 THEN S ll END ELSE S2

Легко видеть, что в этом случае оператор S1 необ­ ходимо заключить в операторные скобки. Их отсутст­ вие привело бы к конструкции, схема которой изобра­ жена на рис. 2.2. Блок-схема данного примера приведе­ на на рис. 2.3.

Рис. 2.3

Здесь оператор Х:=4 выполнится в том случае, коща выражение А >В примет значение FALSE. Если

убрать операторные скобки, т. е. исключить из фрагмента BEGIN и END, то Х:=4 выполнится, когда выражение А>В примет значение TRUE, C <D - значе-

27

ние FALSE, а O D -тоже FALSE, т. е. в случае, коща C=D.

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

32: Х:=5;

В языке ПАСКАЛЬ все метки, встречающиеся в программе, должны быть описаны в разделе меток. Для приведенного примера раздел меток выглядит так: LABEL 32;

Приведем фрагмент программы, свидетельствую­ щий О влиянии операторных скобок:

__ IF А>В THEN BEGIN

IF С<D THEN X: ~ 2

ELSE IF C>D THEN X:=3

END

ELSE Xs =4;--

В программе можно осуществить переход на по­ меченный оператор, прервав последовательное выпол­ нение программы. Для этого служит простой оператор, т. е. оператор безусловного перехода, имеющий вид GO ТО < метка> .

Язык ПАСКАЛЬ является структурированным, по­ этому особой необходимости в операторе безусловного перехода нет.

2.2 ОПЕРАТОРЫ ЦИКЛА

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

Общий вид о п е р а т о р а ц и к л а с п а р а м е т р о м :

FOR P:=NV ТО KV DO А

или

FOR P:=NV DOWNTO KV DO A

где Р - параметр цикла; NV и KV - выражения, задаю­ щие начальное и конечное значения параметра цикла соответственно; А - простой или составной оператор.

Тип параметра цикла обязательно должен совпа­ дать с типом начального и конечного значений цикла. Из рассмотренных стандартных скалярных типов в ка­ честве параметра цикла нельзя использовать перемен­ ные вещественного типа.

Выполнение оператора цикла начинается с про­

верки

условия Р < =KV

для

цикла ТО (Р> =KV для

цикла

DOWNTO). Если

оно

не справедливо, то опера­

тор А не выполняется, а управление передается следу­ ющему оператору. Если же условие P<=KV истинно, то выполняется оператор А, а затем параметру цикла присваивается следующее значение P:=SUCC(P) (для цикла ТО) или предыдущее значение P:=PRED(P) (для цикла DOWNTO). Далее весь процесс повторяет­ ся. Если параметр цикла целого типа, то это означает его увеличение (соответственно уменьшение) на едини­ цу при каждом новом выполнении расположенного в цикле оператора.

Задать шаг, отличный от 1 или -1 , нельзя!

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

VAR S,I:INTEGER; SIM:CHAR; L:BOOLEAN;

1)S:=0;FOR I: =5 TO 7 DO S:=S+1;

2)S:=0;FOR I:=10 DOWNTO 6 DO S:=S+1;

3)S:=0;FOR SIM:=’A’ TO ’D’ DO S:=S+1;

4)S:=0;FOR L:=PALSE TO TRUE DO S:=S+1;

Впримере 1 после окончания работы оператора цикла значение переменной S=3, в примере 2 -значе­

ние S=5, в примере 3 - значение S=4, а в примере 4 -значение S=2.

Если в цикле необходимо выполнить несколько операторов, то пользуются составным оператором:

FOR К: = 10 ТО 13 DO BEGIN

L:=K»K; WRITELN(’L= ’,L:3)

E N D ;

В результате напечатается столбик чисел:

L=100

L=121

L=144

L=169

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

1)значения параметра цикла, начального и конечного значений параметра цикла изменять внутри цикла нельзя;

2)войти в цикл можно только через его на­ чало, а выйти-либо при исчерпании значений параметра цикла, либо при выполнении опера­ тора перехода по метке, расположенной вне данного цикла.

Следует помнить, что при выходе из цикла по исчерпании значений параметра цикла значение этого параметра не определено.

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

дов операторов цикла: с предусловием или с постусло­ вием.

О п е р а т о р ц и к л а с п р е д у с л о в и е м имеет

вид

WHILE В DO А

ще В-выражение булевского типа; А -простой или со­ ставной оператор.

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

30