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

1.4.3 Типичные ошибки

if(x==1) // правильно!

{

y=x+3;

z=y*5;

}

if(x=1) // неправильно!

// выполняется всегда!

{

y=x+3;

z=y*5;

}

ошибочное употребление операции присваивания = вместо операции равенства ==

if(x==1); // неправильно!

// выполняется всегда!

{

y=x+3;

z=y*5;

}

эквивалентно коду:

if(x==1)

{

[пустой оператор];

}

y=x+3;

z=y*5;

if(x==1) // неправильно!

y=x+3;

z=y*5;

отсутствуют фигурные скобки, хотя в условии задумано больше одного оператора

эквивалентно коду:

if(x==1)

{

y=x+3;

}

z=y*5;

 

1.4.4 Вложенные условия

Для вложенных условий, когда одно условие находится внутри другого очень важно соблюдать правильную последовательность операторов и правильно расставлять фигурные скобки.

Например:

if( х > 5 )

if( У > 5 )

cout<<"x and у are > 5";

else

cout<<"x is <= 5";

Судя по отступам, в данном примере ожидается, что оператор else относится к условию x>5. На самом же деле оператор else всегда относится к ближайшему к нему оператору if. Данный пример будет выполняться так:

if( х > 5 )

if( У > 5 )

cout<<"x and у are > 5";

else

cout<<"x is <= 5";

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

if( х > 5 )

{

if( У > 5 )

cout<<"x and у are > 5";

}

else

cout<<"x is <= 5";

1.5. Арифметический логический оператор (пример 6)

Арифметический логический оператор позволяет присвоить переменной одно из двух значений в зависимости от выполнения условия:

[переменная] [условие] ? [значение1] : [значение2];

Например:

int i=3;

int j=(i>0) ? 1 : -1; // j=1

Те же самые действия можно было бы записать более длинным способом при помощи оператора if:

if(i>0)

{

j=1;

}

else

{

j=-1;

}

1.6. Селективные конструкции

1.6.1 Селективные конструкции. Пример определения оценки в зависимости от количества баллов (пример 6)

Селективные конструкции позволяют осуществлять выбор блока операторов, который будет выполняться в зависимости от условий. Селективную конструкцию можно реализовать при помощи операторов if – if else – else или при помощи оператора switch.

if( условие 1 )

{

блок операторов 1;

}

else if( условие 2 )

{

блок операторов 2;

}

else

{

блок операторов 3;

}

switch ( переменная )

{

case константа 1:

{

блок операторов 1;

break;

}

case константа 2:

{

блок операторов 2;

break;

}

default:

{

блок операторов 3;

}

}

Рассмотрим пример определения оценки в зависимости от количества баллов

/////////////////////////////////////////////////////////////////////////////

// Прикладное программирование

// Пример 6. Пример определения оценки в зависимости от количества баллов

//

// Кафедра Прикладной и компьютерной оптики, http://aco.ifmo.ru

// СПб НИУ ИТМО

/////////////////////////////////////////////////////////////////////////////

// подключение библиотеки ввод-вывода

#include <iostream>

// подключение строковой библиотеки

#include <iostream>

// подключение стандартного пространства имен для использования библиотек

using namespace std;

/////////////////////////////////////////////////////////////////////////////

// функция main начинает исполнение программы

void main()

{

// количество баллов

int studentGrade;

// оценка (строка символов)

string studentMark;

// ввод баллов

cout<<"Please, input your grade: ";

cin>>studentGrade;

// определение оценки

if ( studentGrade >= 90 ) // 90 и более баллов - оценка 5А

studentMark="5А";

else if ( studentGrade >= 83 ) // 83-89 - оценка 4В

studentMark="4А";

else if ( studentGrade >= 74 ) // 74-83 - оценка 4С

studentMark="4С";

else if ( studentGrade >= 67 ) // 67-74 - оценка 3D

studentMark="3D";

else if ( studentGrade >= 60 ) // 60-67 - оценка 3D

studentMark="3E";

else // менее 60 - не сдано

studentMark="FX";

// вывод оценки на экран

// для вывода строки необходимо преобразовать ее в набор символов при помощи функции c_str()

cout<<"Your mark is "<<studentMark.c_str()<<endl;

}

/////////////////////////////////////////////////////////////////////////////

В этом примере условие проверяется последовательно – вначале больше ли studentGrade чем 90, если нет – проверяется следующее условие. Если ни одно из условий не выполнено, выполняется блок else.

Если пропустить последний блок else – возможна ситуация когда ни одно из условий не выполнится.