Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгор_ТХТК_пособие.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.6 Mб
Скачать

Var X,y,f: real;

{ Раздел операторов}

Begin

Writeln(' Введите x>=0 '); {Запрос на ввод x}

Readln(x); {Ввод значения x}

{Вычисление значений Y и F}

Y:= Exp (-a*x)*(x* Sin (a*x+b) -Sqrt (x)* Cos (b*x));

F:= Ln (Sqrt( Abs (a*x*x-b)))-1;

{Вывод результатов}

Writeln(' При x = ',x,' Y = ',Y,' F = ',F);

End.

Пример 4.2 Ввести в ЭВМ трёхзначное число и вывести на экран в столбик его цифры, начиная со старшей. Для выделения десятичных цифр воспользуемся операциями Div и Mod.

Program cifra;

Const

d = 10;

s = 100;

Var

num, c1, c2, c3 : integer;

Begin

Writeln('Введите целое трехзначное число');

Read(num);

C1:= num div S;

Writeln ('Цифра 1: ', С1);

C2:= (num mod S) div d;

Writeln('Цифра 2: ', С2);

С3:= num mod d;

Writeln('Цифра 3: ', С3);

end.

4.2 Разветвляющая структура (ветвление)

Разветвляющийся алгоритм предполагает выполнение вычислений по одному из возможных направлений в зависимости от исходных данных или промежуточных результатов. Ветвление в таких алгоритмах производится при проверке некоторых условий.

Условный оператор

Условный оператор позволяет выбрать и выполнить один из двух входящих в него операторов в зависимости от значения логического выражения. Он имеет следующий вид:

IF <логическое выражение> then

<Оператор 1>

[ Else

<Оператор 2>;]

Здесь IF , then, Else – зарезервированные слова языка, означающие соответственно ЕСЛИ, ТО, ИНАЧЕ, квадратные скобки означают, что конструкция Else <Оператор 2> может отсутствовать. Например, оператор

if X<>0 then

Y:= A/X

else

Y:= A;

Соответствует следующий ход вычислений:

Если в момент выполнения программы окажется, что X ≠ 0, то будет вычислено Y = A/X. Если же окажется, что X = 0, то будет вычислено Y = А.

Оператор IF , then, Else – это один оператор, поэтому ";" после оператора 1, т.е. перед Else, не ставится.

Порядок выполнения условного оператора приведен на рисунке 4.1.

Рисунок 4.1 – Схема полного условного оператора

Если условный оператор не имеет конструкции Else, то тогда он называется сокращенным условным оператором. Если логическое выражение принимает значение ЛОЖЬ, сразу выполняется оператор, следующим за условным (рисунок 4.2). Например, оператор

If X>0 Then

K:= K+1; {увеличение К на 1 (подсчет числа положительных Х)}

Рисунок 4.2 –Схема неполного условного оператора

Оператор выбора (варианта)

Оператор If позволяет выбрать один из двух возможных путей решения. В ряде случаев таких путей бывает гораздо больше. При этом также необходимо выбрать один из них. Применение оператора If для таких задач неэффективно.

В Паскале для выбора одного из нескольких путей решения используется оператор Case (вариант из) – обобщение условного оператора. В общем виде он записывается так:

Case выражение Of

Значения1 : Оператор1;

Значения2 : Оператор2;

. . . . . . . . . .

ЗначенияN : ОператорN;

End; { Конец списка выбора }

Выражение записывается относительно специальной переменной выбора (селектора), которая может быть любого перечисляемого типа (Integer, Char).

Значения1, . . . , Значения N – значения выражения, при которых выполняются Оператор1, . . . , Оператор N соответственно.

Если селектор принял значение, не принадлежащее ни одному из перечисленных, то оператор Case пропускается и выполняется следующий за ним оператор (как при неполном If).

Например:

Case Num Mod 2 Of

0 : Writeln('Четное');

1 : Writeln('Нечетное');

End;

или

Case Month Of

1,2,3 : Writeln('Первый квартал');

4,5,6 : Writeln('Второй квартал');

End;

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

Значенияi: Begin

операторы_i

End;

Пример 4.3 Перевести цифру римской системы счисления в ее десятичный эквивалент. Римская цифра вводится c клавиатуры (в виде похожей на нее латинской буквы), а затем на экране должен появиться ее десятичный эквивалент.

Программа будет иметь вид

Program Rim;

Var

R : Char;

N : Integer;

Begin

Writeln('Введите римскую цифру');

Readln(R);

Case R Of

'M': N:= 1000;

'D': N:= 500;

'C': N:= 100;

'L': N:= 50;

'X': N:= 10;

'V': N:= 5;

I': N:= 1

End; { Case }

Write ('Десятичное число:', N);

End.

Составной оператор и пустой оператор

Составной оператор – это последовательность произвольных операторов программы, заключенная в операторные скобки – зарезервированные слова BEGIN … END. Составные операторы – важный инструмент Pascal, дающий возможность писать программы по современной технологии структурного программирования (без операторов перехода GOTO).

Pascal допускает произвольную глубину вложенности составных операторов:

BEGIN

……

BEGIN

……

BEGIN

……

END;

……

END;

……

END.

Поскольку BEGIN и END представляют собой структурные скобки, то после BEGIN и перед END ставить знак «;» не обязательно.

В программе может применяться пустой оператор, не выполняющий никакого действия.

Метка и оператор перехода

Метка – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. В Паскале метка – это целое без знака. Метка располагается непосредственно перед помеченным оператором и отделяется от него двоеточием. Описание меток состоит из зарезервированного слова Label.

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

Структура оператора перехода имеет вид:

GOTO <метка>,

где GOTO – зарезервированное слово(«перейти на метку») <метка>- произвольный идентификатор.