Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по программированию.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
682.73 Кб
Скачать

Экзаменационный вопрос № 20. Программирование разветвляющихся вычислительных процессов с использованием оператора case

Оператор варианта имеет вид

CASE <условие> OF <константа>|<диапазон> :

<оператор1>

ELSE

<оператор2>

END

Здесь диапазон следующий : <константа> . . <константа>.

Таким образом, если имеется n взаимоисключающих условий С1, … , Сn, то условный оператор

If <C1> then <оператор1> else

If <C2> then <оператор2> else

If <C3> then <оператор3> else

If <Cn> then <оператор n–1> else <оператор n>;

эквивалентен следующему оператору варианта:

case <условие> of

K1: <оператор1>;

K2: <оператор2>;

Kn: <оператор n>;

end;

Здесь Кi – одно из возможных значений <условия>, приводящее к истинности условия Сi.

<условие > в операторе варианта называется селектором. Его тип может быть только ординальным, <константы> принадлежат тому же типу. Например, оператор

If <условие> then <оператор1> else <оператор2>;

эквивалентен оператору варианта

case <условие> of

false: <оператор2>;

true: <оператор1>;

end;

Задание. Составить программу для определения функции с помощью оператора варианта.

с шагом ∆x при заданных коэффициентах. Построить таблицу результатов полученной функции.

Исходные данные.

Функция

Шаг

Коэффициенты

1

Код программы.

PROGRAM primer2;

Uses Crt;

var t: real;{значение функции} x: integer;

const a = 0.3; b = 4; h = 1; {шаг по оси х} x0 = 1; x1 = 9; { границы интервала}

begin

clrscr;

x:=x0; {берем в качестве х левую границу интервала}

writeln(‘| x | t |’); {выводим шапку таблицы}

writeln(‘|--------------------|’);

repeat

case x of {проверка, к какому интервалу принадлежит х}

1..2 : t:=exp(1/3*ln(abs(x)*b/a));

3..6 : t:=ln(x/a)/ln(10)+exp(x);

7..9 : t:=ln(b*x)–0.5;

end;

writeln(‘ ’, x , ‘ ’,t:5:3);

x:=x+h; {х увеличивается на значение шага}

until x>=x1;

{выполнятся до тех пор, пока х не выйдет за правую границу интервала}

readln;

end.

Экзаменационный вопрос № 21.

ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ ВЫЧИСЛИТЕЛЬНЫХ ПРОЦЕССОВ С ИСПОЛЬЗОВАНИЕМ В ОПЕРАТОРА ЦИКЛА WHILE

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

Оператор с предусловием имеет следующий вид:

WHILE <условие> DO <оператор>;

Здесь <условие> — выражение логического типа, <оператор> — оператор языка Turbo - Pascal. В процессе работы цикла WHILE <оператор> выполняется, пока выполняется <условие> (принимает значение «истина»), т. е. сначала проверяется условие, потом выполняется оператор.

П р и м е р

X:=1;

WHILE X<=10 DO X:=X+0.5;

В данном примере на каждой итерации цикла значение переменной X увеличивается на 0,5. Цикл повторяется 10 раз.

Задание. Составить программу для вычисления значения функции F(X) при изменении Х от 0 до 1 с шагом H. Определить количество отрицательных значений функции.

Исходные данные.

3, если X > D,

F(X) = 2X, если X = D,

7 + X, если X < D,

H = 0,2, D = 0,5.

Код программы.

PROGRAM primer3;

CONST {блок описания данных}

D = 0.5;

H = 0.2;

VAR

I : INTEGER;

Y,X,F : REAL;

BEGIN

I := 0; {задание начальных значений}

X := 0;

WHILE X <= 1 DO

BEGIN

If X>D {вычисление функции}

THEN F:=3

ELSE

IF X=D

THEN F:=2*X

ELSE F:=7+X;

WRITELN ('X =', X:6:3,', F(X) =',F:6:3); {вывод значений}

IF F< 0 THEN I:=I+1; {подсчет количества

отрицательных значений}

X:= X+H; {изменение аргумента}

END;

WRITELN(' количество отрицательных значений: ',I);

END.