Программирование разветвленных алгоритмов.
Операторы передачи управления
Структура условного оператора передачи управления:
IF <условие> THEN <оператор 1> ELSE <оператор 2>;
(Если) (то) (иначе) - ключевые слова,
где <условие> - это произвольное выражение логического типа, которое может принимать два значения: истина (TRUE) и ложь (FALSE);
<оператор> - любой оператор языка Паскаль.
Сокращенная форма условного оператора:
IF <условие> THEN <оператор>;
Оператор безусловной передачи управления GOTO <метка> позволяет перейти к строке с идентификатором <метка>. В языке Турбо Паскаль допускается использовать в качестве меток также целые числа без знака [0].
Метка от оператора отделяется в программе двоеточием (':').
Все использованные в программе метки должны быть описаны в разделе описаний программы с указанием ключевого слова 'LABEL'.
Оператор выбора CASE позволяет в зависимости от значения какой-либо переменной или выражения <ключа_выбора> выполнить те или иные операторы, помеченные соответствующими константами.
Структура оператора:
CASE <ключ_выбора> OF
<конст. выбора1>:<оператор1>;
<конст. выбора2>:<оператор2>;
. . .
<конст. выбораN>:<операторN>
ELSE <оператор>
END;
где <ключ выбора> - выражение (переменная) любого порядкового типа;
<конст. выбора> - константа того же типа, что и <ключ. выбора>;
<оператор> - произвольный оператор ТП.
Пример. Составить программу для начисления зарплаты согласно следующе - му правилу: если стаж работы сотрудника менее пяти лет, то зарплата равна 50$, при стаже работы от пяти до 15 лет - 100$, свыше 15 лет зарплата повышается с каждым годом на 10$, причем при стаже превышающем 30 лет она составляет 300$.
Для программирования решения этой задачи определим математическую формулировку задачи:
50, если ST < 5;
ZP= 100, если 5 ≤ST £ 15;
100+ (ST -15)*10, если 15 < ST≤ 30;
300, если ST > 30;
где ZP - зарплата, ST - стаж работы.
Program zarplata;
var ST: byte; {ST - стаж (байтовый (целый) тип)}
ZP: real; {ZP - зарплата (вещественный тип)}
begin
writeln ('введите стаж');
read(ST); ввод стажа
if ST<5 then ZP:=50 условный оператор
else if ST<15 then ZP:=100 вложенный условный оператор
else if ST>=30 then ZP:=300
else ZP:=100+(ST-15)*10;
writeln ('зарплата=',ZP:10:2,' $')
end.
Второй вариант реализации задачи:
Program zarplata2;
var ST: byte; {стаж (байтовый) тип)}
ZP: real; {зарплата (вещественный тип)}
begin
writeln('введите стаж');
read(ST); {ввод стажа}
case ST of {выбор из }
1..4: ZP:=50;
5..15: ZP:=100;
16..29: ZP:=100+(ST-15)*10;
else ZP:=300
end;
writeln('зарплата=',ZP:10:2,' $'); {вывод результата}
end.
Задание 1 (программа 2_1)
Вычислить значение функции в зависимости от интервала, в который попадает вводимый с клавиатуры аргумент:
1. Для t
[0,3],
at2lnt при 1
,
где a=-0.5,b=2 z= 1 при t<1,
eatcosbt при t>2,
2. Для x
[0,4],
при x>2,
где а=2.3 f= х при 0.3< x £ 2,
cos(x-a) при x
,
3. Для x
[0,7], (a+b)/(ex+cosx) при 0 £ x<2.3,
где a=-2.7,b=-0.27 z= (a+b)/(x+1) при 2.3£ x<5,
ex+sinx при 7
,
4. Для i
[7,12], ai4+bi при I< 10,![]()
где a=2.2,b=0.3. y= tg(i+0.5) при I= 10,
e2i+
при I>10,
5. Для x
[0.9,5],
x2-7/x2 при x<1.3,
где a=1.5 y= ax3+7
при 1.3 £ x<3,
lg(x+7
) при x
,
6. Для t
[-1.4],
при t<0.1,
где a=2.1,b=0.37. z= at+b при 0.1£ t< 2,
при t
,
7. Для x
[0,6], a esinx+2.5 при x<0.3,
где a=1.5. y = ecosx+a при 0.3£ x<4,
(sin x)/(a+ex) при x ³ 4,
8. Для x
[1,2], a/x+bx2-c при x
,
где a=1.8,b=-0.5, c=3.5 y= (a+bx)/
при x>1.2,
9. Для t
[1,5], t
при t>a,
где a=2.5 z= t sin at при t=a,
e-at cos at при t<a,
10. Для x
[0,4], e-bx sin bx при x<2.3,
где a=1,b=3. y= сos bx при 2.3
,
e-ax cos bx при x![]()
11. Для t
[0.5,3], at2-b
при t<a,
где a=1.3,b=6.5 z= a-b при a
a t2/3-
при t>b,
12. Для xÎ[0,2], |e-2x sin bx| при x >1,
где b=-2.9 y = cos bx при x = 1,
e-x cos bx при x < 1,
13. Для x
[0.5,2] sin (cos ax) при x >1,
где a=-0.8 z = tg ax при x = 1,
a2 x при x < 1,
14. Для x
[1,2], ln bx - 1/(bx+1) при x < 1.3,
где b=1.3. y = bx + 1 при 1.3 ³ x ³ 1.7,
ln bx +1/(bx+1) при x > 1.7,
15. Для x
[-1,1], ax2+bx2/3 при x<0.1,
где a=2.5,b=-0.9. z= a x2 при x=0.1,
b x2/3 при x>0.1.
Лабораторная работа 3
Программирование циклических алгоритмов с заданным
числом повторений
Первая форма счетного оператора цикла позволяет наращивать параметр цикла на единицу (+1):
FOR <параметр цикла>:= <min значение> TO <max значение> DO <оператор>;
(Для) (увеличивая к) (выполнять)
где <параметр цикла> - это переменная целого либо любого порядкового типа; <min, max значения> - это начальное и конечное значения параметра цикла (выражения того же типа, что и параметр цикла).
Вторая форма позволяет уменьшать значение параметра цикла на единицу (-1):
FOR <параметр цикла>:= <max знач.> DOWNTO <min знач.> DO <оператор>; (Для) (уменьшая к) (делать)
Пример 1. Вычислить сумму элементов s=1+1/4+1/9+1/16+... .
На основе анализа изменения параметра знаменателя определим алгоритм решения задачи и напишем программу:
PROGRAM suma;
VAR s, r: REAL;
i, N: INTEGER;
BEGIN
s:=0;
WRITELN('введите N');
READ(N);
FOR I:=1 TO N DO
begin
r:=1/sqr(i);
s:=s+r;
end;
WRITELN('Сумма=',s:6:2);
END.
Пример 2. Вычислить значения двух функций F1(x)=tg(x) и F2(x)=sin(x) в n точках, равномерно распределенных на интервале a ≤ x ≤ b, где a=-π/4, b=π.
Для реализации данной задачи разработана следующая программа:
Program Lab3;
Const а = -pi/4; b = pi;
Var F1, F2, x, dx: real; {dx - шаг изменения х}
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 |


