Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник Задач v2.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
660.48 Кб
Скачать

Условные и безусловные операторы в языке Паскаль.

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

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

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

У словный оператор существует в двух формах записи: полной и сокращённой.

Полная форма записи: да нет

IF <условие>

THEN

<оператор 1>

ELSE

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

Служебные слова IF, THEN, ELSE означают соответственно: ЕСЛИ, ТО, ИНАЧЕ.

Принцип работы полного условного оператора: вначале проверяется условие стоящие после зарезервированного слова IF. Если оно истинно, то выполняется оператор 1, стоящий после зарезервированного слова THEN, а иначе, если условие оказывается ложным, то выполняется оператор 2 стоящий после зарезервированного слова ELSE.

Следует обратить внимание, что перед словом ELSE « ; » не ставится!

С окращённая форма записи:

IF <условие> да нет

THEN

<оператор >;

Принцип работы сокращённого условного оператора: если условие стоящие после зарезервированного слова IF истинно, то выполняется оператор, стоящий после зарезервированного слова THEN, и на этом действие условного оператора прекращается. Если условие ложное, то условный оператор не выполняет ни каких действий.

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

Наиболее часто используемые логические союзы – это конъюнкция и дизъюнкция.

Рассмотрим подробнее эти два союза:

Конъюнкция (от латинского conjunctio - связываю) или логическое умножение.

  • соответствует союзу И (AND)

  • обозначается &

Схематичное обозначение:

Формула:

С=А&В=АВ

Логический смысл: Сложное условие С будет истинным тогда и только тогда, когда будут истинным одновременно и условие А и условие В.

Т аблица истинности:

А

В

С

0

0

0

0

1

0

1

0

0

1

1

1

Дизъюнкция (от латинского disjunctio - различаю) или логическое сложение.

  • соответствует союзу ИЛИ (OR)

  • обозначается

Схематичное обозначение:

Формула

С=АВ=А+В

Логический смысл: Сложное условие С будет ложным тогда и только тогда, когда будут ложными одновременно и условие А и условие В.

Т аблица истинности:

А

В

С

0

0

0

0

1

1

1

0

1

1

1

1

При использовании сложных условий необходимо помнить:

  • что каждое простое условие, входящие в состав сложного условия должно заключаться в круглые скобки;

  • логический союз AND имеет больший приоритет, чем логический союз OR.

Рассмотрим примеры.

Пример1. Составить программу для вычисления значения функции:

Program Fuction;

Var x : integer;

y : real;

Begin

Write(‘Введите х=’);

Readln(x);

IF x>=0

THEN

Y:=sqrt(x)

ELSE

Y:=sqr(x);

Writeln(‘X=’,x,‘ Y=’,y);

End.

Пример2. Составить программу для нахождения модуля действительного числа (стандартную функцию ABS не использовать).

Program Modul;

Var а,b: integer;

Begin

Writeln(‘Введите а=’);

Readln(a);

IF а>=0

THEN b:=а

ELSE b:= –а;

Writeln(‘Модуль числа’,a,’=’,b);

End.

Пример 3. Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что (х< >0) и (y< >0).

Program Chet;

Var x,y:integer;

Begin

Write(‘введите координаты x и y:’);

Readln(x,y);

If (x>0) and (y>0)

Then

Writeln(1)

Else

If (x>0) and (y<0)

Then

Writeln(4)

Else

If (x<0) and (y>0)

Then

Writeln(2)

Else

Writeln(3);

End.

Пример 4. Даны два натуральных двузначных числа М и K. В большем из этих чисел проверить содержит ли оно цифру N или кратно ли оно N.

Program Number;

Var m,k,n,mx:integer;

Begin

Writeln(‘Введите три числа:’);

Readln(m,k,n);

If m>k

Then

mx:=m

Else

mx:=k;

If (mx div 10=n) or (mx mod 10=n) or (mx mod n=0)

Then

Writeln('Да')

Else

Writeln('Нет');

End.

Оператор выбора.

Для ситуаций, где имеется несколько (три и более) альтернатив, вместо условного оператора больше подходит оператор выбора.

Общая форма записи:

case <выражение-селектор> of

<список значений 1> : <оператор 1>;

<список значений 2> : <оператор 2>;

…………………………:………………… ;

<список значений N> : <оператор N>;

else <оператор>;

end;

Принцип работы оператора выбора: при выполнении данного оператора вначале вычисляется значение выражения-селектора стоящего после зарезервированного слова case. Затем выбирается тот список значений, которому принадлежит полученное значение, и выполняется соответствующий оператор, следующий за двоеточием. Оператор стоящий после зарезервированного слова else выполняется если ни один из списков значений не удовлетворил значению выражения-селектора и может отсутствовать. В списках значений допустимыми являются скалярные типы переменных, которые включают целые и исключают вещественные типы. Любое заданное значение выражения-селектора может входить в список значений неоднократно, но выполнятся будет лишь первая подходящая ветвь.

Рассмотрим примеры.

Пример1. Вывести на экран словесную интерпретацию введенного однозначного натурального числа.

Program ramdjon;

Digit:integer;

Begin

Write (‘ввести одно число’);

Readn (digit);

If (digit<0) or (digit>9)

Then

Writeln (‘Вы ввели не однозначное число!‘)

Else

Case digit of

0:writeln ('ноль’);

1:writeln(‘один’);

2:writeln(‘два’);

3:writeln(‘три’);

4:writeln(‘четыре’);

5:writeln(‘пять’);

6:writeln(‘шесть’);

7:writeln(‘семь’);

8:wirteln(‘восемь’);

9:writeln(’девять’);

End;

End.

Пример2. Дано натуральное число N. Преобразовать его в зависимости от остатка деления числа N на число 17 по правилу:

если остаток равен 0, то N должно стать равным тоже 0;

если остаток равен 1 или 6, то N должно стать равным -N;

если остаток равен 2,3 или 5, то N должно стать равным 2N;

если остаток равен 4, то N должно стать равным 3N;

в остальных случаях N равняется 5N.

Program Ost;

Var n:word;

Begin

Write(‘Введите число n=’);

Readln(n);

Case n mod 17 of

0:n:=0;

1,6:n:=-n;

2,3,5:n:=2*n;

4:n:=3*n;

Else n:=5*n;

end;

Writeln(‘n=’,n);

End.

Пример2. Дано целое число N (N<10000 и N>-10000). Определить какое это число (однозначное, двузначное, трехзначное или четырехзначное).

Program Nat;

Var n:integer;

Begin

Write(‘Введите число n=’);

Readln(n);

Case n of

-9..9:Writeln(‘число ’,n,’ однозначное’);

-99..99:Writeln(‘число ’,n,’ двузначное’);

-999..999:Writeln(‘число ’,n,’ трехзначное’);

-9999..9999:Writeln(‘число ’,n,’ четырехзначное’);

Else Writeln(‘число ’,n,’ больше 10000 или меньше -10000’);

end;

End.

Оператор безусловного перехода

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

Общая форма записи:

Goto <Метка>;

Принцип действия: при выполнении программы, когда встречается данный оператор, то независимо от того какие ниже следуют операторы, выполнение программы передается в начало того оператора, перед которым стоит указанная метка с двоеточием (соответственно данная метка должна быть обязательно описана в разделе описания меток Label).

В качестве примера можно привести листинг следующей программы:

Program AAA;

Label M;

Var a,b:integer;

Begin

A:=2;

B:=3;

Goto M;

A:=A+B;

B:=B+A;

M: writeln(a,’ ‘,b);

End.

Результат выполнения программы: А=2, В=3.

Хочется отметить, что использование меток и оператора безусловного перехода не целесообразно при составлении программ и в программировании считается «дурным тоном». Поэтому, по возможности, следует избегать использовать данный оператор, хотя встречаются такие ситуации, когда без оператора Goto просто не обойтись.