Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа3_КОС_2ч.doc
Скачиваний:
12
Добавлен:
16.04.2015
Размер:
335.36 Кб
Скачать

Примеры использования оператора if.

    1. IF p>0.5 THEM GOTO 15;

    2. IF (x>0) AND (x<=10) THEN T:=x*3 ELSE T:=SQRT(y);

Вложенные IF:

IF X<=A THEN Z:=sin(x) ELSE IF x>0 THEN Z:=sin(x)/cos(x) ELSE Z:=cos(x);

Ключевое слово ELSE всегда относится к ближайшему ему IF.

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

где t=2.2.

Текст программы:

Program Lab21;

Const

t=2.2;

Var

x,z:real;

Begin

Writeln('Введите x');

Read(x);

If x<0.5 then z:=(ln(exp(3*ln(x)))+sqr(x))/sqrt(x+t)

else if x=0.5 then z:=sqrt(x+t)+1/x

else z:=cos(x)+t*(sqr(sin(x)));

Writeln ('z=',z:8:3);

End.

Результат выполнения программы:

z(0.1)=-4.548

z(0.5)=3.643

z(1)=2.098

Пример 2. Ввести число от 0 до 5. Вывести его название на английском языке.

Текст программы:

Program lab22;

Var

i:0..5;

Begin

Writeln('Введите целое число от 0 до 5');

Read(i);

Case i of

0:writeln('zero');

1:writeln('one');

2:writeln('two');

3:writeln('three');

4:writeln('four');

5:writeln('five');

end;

End.

Пример 3. Определение частного от деления целых чисел

{Вариант № 1 (с применением оператора GOTO)}

Program DELZEL_1(input,output);

Label metka1;

Var x, y, Res : integer ;

BEGIN

Write ( ‘ Введите делимое: ’);

Readln (x);

Write ( ‘ Введите делитель: ’);

Readln (y);

If y = 0 then

begin

Writeln ( ‘ Деление на ноль! ’);

GOTO metka1;

end;

Res : = x div y;

Writeln ( ‘ Частное равно : ‘, Res : 10 : 3 );

metka1; {метка пустого оператора}

END.

{Вариант № 2 (без оператора GOTO)}

Program DELZEL_1(input,output);

Var x, y, Res : integer ;

BEGIN

Write ( ‘ Введите делимое: ’);

Readln (x);

Write ( ‘ Введите делитель: ’);

Readln (y);

If y < > 0 then

begin

Res : = x div y;

Writeln ( ‘ Частное равно : ‘, Res : 10 : 3 );

end

Else Write ( ‘ Деление на ноль! ’);

END.

Условные конструкции в Си/С++.

1. Операторы if

Эти операторы иначе называются условными операторами и позволяют реализовывать разветвления в программах.

Пример 4. Программа осуществляет преобразование дюймов в сантиметры и сантиметров в дюймы; предполагается, что Вы укажете единицы измерения вводимых данных, добавляя i для дюймов и c для сантиметров:

#include <iostream.h>

void main()

{

const float fac = 2.54;

float x, in, cm;

char ch = 0;

cout << "введите длину: ";

cin >> x >> ch;

if (ch == 'i') { // inch - дюймы

in = x;

cm = x*fac;

}

else if (ch == 'c') // cm - сантиметры

{ in = x/fac;

cm = x;

}

cout << in << " in = " << cm << " cm\n";

}

Условие в операторе if должно быть заключено в круглые скобки.

2. Операторы switch

Оператор switch производит сопоставление значения с множеством констант.

Проверки в предыдущем примере можно записать так:

switch (ch) {

case 'i':

in = x;

cm = x*fac;

break;

case 'c':

in = x/fac;

break;

default:

in = cm = 0;

break;

}

Операторы break применяются для выхода из оператора switch. Константы в вариантах case должны быть различными, и если проверяемое значение не совпадает ни с одной из констант, выбирается вариант default. Программисту не обязательно предусматривать default.

3. Проверки

Проверка значения может осуществляться или оператором if, или оператором switch:

if ( выражение ) оператор

if ( выражение ) оператор else оператор

switch ( выражение ) оператор

В C++ нет отдельного булевского типа.

Операции сравнения

== != < <= > >=

возвращают целое 1, если сравнение истинно, иначе возвращают 0. В операторе if первый (или единственный) оператор выполняется в том случае, если выражение ненулевое, иначе выполняется второй оператор (если он задан). Отсюда следует, что в качестве условия может использоваться любое целое выражение. В частности, если a целое, то

if (a) // ...

эквивалентно

if (a != 0) // ...

Логические операции

&& || !

наиболее часто используются в условиях. Операции && и || не будут вычислять второй аргумент, если это ненужно. Например:

if (p && count) // ...

вначале проверяет, является ли p не нулем, и только если это так, то проверяет count.

Скобки вокруг условия необязательны, но когда они используются, программу легче читать.

Некоторые простые операторы switch можно по-другому записать в виде набора операторов if. Например:

switch (val) {

case 1:

f();

break;

case 2;

g();

break;

default:

h();

break;

}

иначе можно было бы записать так:

if (val == 1)

f();

if (val == 2)

g();

else

h();

Смысл тот же, однако первый вариант (switch) предпочтительнее, поскольку в этом случае явно выражается сущность действия (сопоставление значения с рядом констант). Поэтому в нетривиальных случаях оператор switch читается легче.

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

switch (val) {

case 1:

cout << "case 1\n";

case 2;

cout << "case 2\n";

default:

cout << "default: case не найден\n";

}

при val =1 напечатает

case 1

case 2

default: case не найден

Самый обычный способ завершить случай - это break, иногда можно даже использовать goto. Например:

switch (val) {

case 0:

cout << "case 0";

case1:

case 1:

cout << "case 1";

return;

case 2;

cout << "case 2";

goto case1;

default:

cout << "default: case не найден";

return;

}

При обращении к нему с val =2 выдаст

case 2

case 1

Заметьте, что метка case не подходит как метка для употребления в операторе goto:

goto case 1; // синтаксическая ошибка