This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
THEN <S1> ELSE <S2>; где IF (если) THEN (то) ELSE (иначе) – служебные слова языка Паскаль; Р – некоторое логическое условие; S1, S2 – любые операторы языка.
а) Не полная +
-
P
IF
THEN <S1>;
S1
б) +
P
S1
IF < P > THEN <S1>; где P – некоторое логическое условие (отрицание условия P или противоположное условию P);
Развилка может иметь вложенную структуру, любой степени вложенности. Любой из операторов S1 или S2 может быть условным, причём не обязательно в нём будет присутствовать часть ELSE <S…>. Подобная неоднозначность решается следующим образом: любая встретившаяся часть 4
ELSE соответствует ближайшему к ней «сверху» части THEN условного оператора. При необходимости выполнить в условном операторе несколько операторов их заключают в операторные скобки BEGIN - END, в противном случае в условном операторе выполняется только первый после ключевого слова THEN или ELSE оператор. 2. ОПЕРАТОР БЕЗУСЛОВНОГО ПЕРЕХОДА
В программе можно осуществить переход на помеченный оператор (не зависимо от какого либо условия), прервав последовательное выполнение программы. Для этого служит простой оператор безусловного перехода. Общий вид оператора: GOTO ; Метка назначается пользователем и представляет собой целое число без знака, содержащее не более четырёх цифр или обычный идентификатор и отделяется от оператора двоеточием. Например: GOTO 120; GOTO 250; Используемые в программе метки должны быть описаны в разделе описания меток. Для приведённого примера раздел меток выглядит так: LABEL 120, 250; Язык ПАСКАЛЬ является структурированным, поэтому особой необходимости в операторе безусловного перехода нет. Использовать его следует в редких случаях, например, для выхода к концу программы или процедуры в случае неправильного задания данных или выхода из цикла. Неправильное использование оператора GOTO усложняет программу за счёт многократных переходов вперёд или назад по программе, затрудняет её чтение, отладку и проверку на правильность. Задача 1: Составить программу вычисления значения функции
z = x 3 / y , где y = sin nx + 0,5 . Если y=0, то выдать сообщение «Z НЕ ВЫЧИСЛЕНО. Y=0» •
Введём обозначения: N, X – исходные данные; Y – промежуточное значение; Z – имя результата.
Для записи программы используется два варианта записи условного оператора: а) условный оператор;
5
•
Блок-схема:
•
начало N, X Y:=sin(N*X)+0.5 +
Y=0
Z не вычислено. Y=0
-
Z:=X*sqr(X)/Y) Z
Листинг программы:
Program Prim_a; Var N: integer; X, Y, Z: real; Begin write(‘Введите значения N, X:’); read (N, X); Y:=sin(N*X)+0.5; If Y=0 then write (‘ Z не вычислено. Y=0’) else begin Z:=X*sqr(X)/Y; write (‘Z=’,Z:8:3); end; End.
конец б) условный оператор и безусловный оператор; •
Листинг программы:
Program Prim_b; Label 20, 30; Var N: integer; X, Y, Z: real; Begin write(‘Введите значения N, X:’); read (N, X); Y:=sin(N*X)+0.5; If Y=0 then Goto 20; Z:=X*sqr(X)/Y; write (‘Z=’,Z:8:3); Goto 30; 20: write (‘ Z не вычислено. Y=0’) 30: End. 3. ОПЕРАТОР ВАРИАНТА
Условный оператор позволяет при выполнении программы выбирать одно из двух возможных действий. Если же необходимо сделать много 6
взаимоисключающих проверок, то удобнее воспользоваться оператором выбора варианта. Общий вид оператора варианта: CASE OF : ; … : ; ELSE END; Ключ выбора (селектор) представляет собой выражение скалярного типа (но не вещественного). Выполнение оператора варианта начинается с вычисления значения ключа выбора. Затем для использования выбирается оператор, одна из меток которого совпадает с полученным значением. После выполнения этого оператора (он может быть простым или составным) управление передаётся на оператор, следующий за оператором варианта. Если же значение ключа выбора не совпало ни с одной из меток, управление передаётся оператору, стоящему за словом Else. Часть Else может отсутствовать. Задача 2: Написать программу для вывода дня недели, который следует за тем днём недели, номер которого ввел пользователь. • Введём обозначения: N – номер дня недели. • Блок-схема: начало N N:=N+1 N
2
Вторник
3
Среда
4
Четверг
5
Пятница
6
Суббота
7
Воскресенье
8
Понедельни
конец
Другое
значение № дня недели введён не верно
• Листинг программы: Program Z2; Label nm; Var a, b, P, S: real; Begin nm: write(‘Введите номер дня недели: ’); read (N); N:=N+1; Case N Of 2: write(‘Вторник’); 3: write (‘Среда’); 4: write (‘Четверг’); 5: write (‘Пятница’); 6: write (‘Суббота’); 7: write (‘Воскресенье’); 8: write (‘Понедельник’); Else Begin writeln(‘Номер дня недели введён не верно’); writeln(‘Повторите ввод ’); Goto nm; End; 7 End.
4. ВОПРОСЫ И УПРАЖНЕНИЯ ДЛЯ САМОСТОЯТЕЛЬНОЙ ПОДГОТОВКИ 1. Какие из приведенных ниже операторов являются неправильными и почему? а) If A0,7
Тест: a=0,25; a=0,9
11
19
y k=3,5c 0,005 c3 , 2c b=2x1 -ln
1+x12 , y2
c=
3b 2
+cos 2 y-7,36
y
⎧⎪ y 2 -2 y>0,9 x1 = ⎨ y ⎪⎩ 2 +3y y ≤ 0,9
Тест: y=5,26; y=0,1 20
p=n
m=
x1 +2
x
e 1 m4 2 2 2 2 3 + 2 +sin (x1 +n ), n= x1 + n -2x1 2 x1 ⎧⎪2x1 -cos x1 x2 = ⎨ ⎪⎩ 3 x1
x 2 x 2 -3,6x1 , 3x1 1+x 2
x1 4,25
r=ln 3a-m3 +sin 2 am ,
x=
2,7b-6,1 - ab , 5ab+7,3
Тест: a=3,48; a=4,99 22
2
k=
c+y c +π ⋅ c ⋅ y+ , y c 2,7y e -e
7,5x1 b= + x12 +y 2 , yx1 -yx13
c=lg b-2by+3y 2 ⎧⎪7y3 -3y 2 x1 = ⎨ ⎪⎩ y -2,5
y>5,2 y ≤ 5,2
Тест: y=6,1; y=0,7 23
x1n +n ⋅ sinx1 +1 , ⎛ 2n 3 ⎞ cos ⎜ x1 + n ⎟ e ⎠ ⎝
2
2
p=
n=
7,25- m -x m-x1
2 1
3
⎧⎪2,28 ⋅ x12 x1 1,7 ⎪ Y= ⎨ x x ≤ 1,7 ⎪ax2πx ⎩ K=4cos 2 z+2z-
5
z 2,1π
a=4,9 Тест: x=9,4; x=3,53
z=16,7
в) Даны числа n, m, p. Имеется ли среди них хотя бы одно, положительное, кратное 3. 30. а) ⎧ ax 2 -πx x a=-1,9 +e x ≥ 3,7 ⎪ Y= ⎨ 3 ax ⎪ ax-2π +ln ax ⎩
б) K=-
z-5z 2 e
-3z
x