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

advertisement
Условные операторы
Условный оператор if
Для организации вычислений в зависимости от какого-либо условия в C++
предусмотрен условный оператор if, который в общем виде записывается
следующим образом:
if (условие) оператор_1; else оператор_2;
Здесь условие - это логическое выражение, переменная или константа.
Работает условный оператор следующим образом: сначала вычисляется
значение выражения, записанного в виде условие; если оно имеет значение
истина (true), выполняется оператор_1, в противном случае (значение
ложное (false) ) оператор_2. При этом, если в качестве условия используется
выражение с некоторым численным значением, то оно приводится к
логическому типу исходя из того, что 0 соответствует ложному значению
условия, а 1(или любое другое значение, отличное от нуля) соответствует
истинному значению. Таким образом, запись «if(25)» будет аналогична
записи «if(true)».
Если в задаче требуется, чтобы в зависимости от значения условия
выполнялся не один оператор, а несколько, их необходимо заключить в
фигурные скобки.
if (условие) { оператор_1; оператор_2; … }
else { оператор_1; оператор_2; … }
Альтернативная ветвь else в условном операторе может отсутствовать, если в
ней нет необходимости.
Пример: Дано квадратное уравнение 𝐴 × 𝑥 2 + 𝐵 × 𝑥 + 𝐶 = 0, необходимо
найти его корни. Для решения этой задачи необходимо найти дискриминант
и проверить случаи, когда решений нет, когда существует только одно
решение и когда решений два.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double A,B,C; //описываем переменные для коэффициентов уравнения
cin >> A >> B >> C; //вводим коэффициенты с клавиатуры
double D=B*B-4*A*C; //находим значение дискриминанта
if(D<0) //рассмотрим случай, когда решений не существует
cout << “корней нет” << endl;
else if(D>0) //здесь рассматривается случай, когда решений два
{
double x1=(-B+sqrt(D))/(2*A);
double x2=(-B-sqrt(D))/(2*A);
cout << “x1 = ” << x1 << “, x2 = ” << x2 << endl;
}else //рассматриваем вариант, когда корень только один
{
double x=-B/(2*A);
cout << “x = ”<<x<<endl;
}
system(“pause”);
}
Оператор варианта switch
Он необходим в тех случаях, когда в зависимости от значений переменной
надо выполнить те или иные операторы.
switch (выражение)
{
case значение_1: операторы_1; break;
case значение_2: операторы_2; break;
case значение_3: операторы_3; break;
…
case значение_n: операторы_n; break;
default: операторы; break;
}
Вычисляется
значение выражения.
Затем
выполняются операторы,
помеченные значением, совпадающим со значением выражения. То есть если
выражение принимает значение_1, то выполняются операторы_1 и т.д. Если
выражение не принимает ни одного из значений, то выполняются операторы,
расположенные после слова default. Ветвь default может отсутствовать.
Оператор break необходим для того, чтобы завершить работу оператора
switch.
Если
он
не
указан,
то
будут
выполняться
все
последующие операторы из списка, несмотря на то, что значение, которым
они помечены, не совпадает со значением выражения.
Пример: Необходимо написать программу, в которой пользователь вводит
номер дня недели, а программа выдаёт ему на экран название этого дня, либо
пишет, что номер указан некорректно.
#include <iostream>
using namespace std;
int main()
{
int x;
cin >> x;
switch(x){
case 1: cout << “Понедельник” << endl; break;
case 2: cout << “Вторник” << endl; break;
case 3: cout << “Среда” << endl; break;
case 4: cout << “Четверг” << endl; break;
case 5: cout << “Пятница” << endl; break;
case 6: cout << “Суббота” << endl; break;
case 7: cout << “Воскресенье” << endl; break;
default: cout << “Такого дня недели не существует” << endl;
}
}
Цикл for
Цикл — многократное прохождение по одному и тому же коду программы.
Циклы необходимы программисту для многократного выполнения одного и
того же набора действий, пока выполняется условие цикла. Если условие
всегда истинно, то такой цикл называется бесконечным, у такого цикла нет
точки выхода.
В языке программирования С++ существуют такие циклы:
цикл for
цикл while
цикл do while
Тело цикла будет выполняться до тех пор, пока условие будет истинно.
Форма записи оператора цикла for:
for (выражение1; выражение2; выражение3)
{один оператор или блок операторов;}
Если в теле цикла for должен выполниться один оператор, фигурные скобки
можно опустить
Выражение 1 - объявление (и) или инициализация переменной-счетчика,
которая будет отвечать за истинность условия в цикле. Переменная-счетчик
всегда должна иметь целочисленный тип данных. Если переменная была
объявлена в цикле (все равно в каком), по завершении цикла эта переменная
будет уничтожена. Кроме того это выражение по синтаксису языка вполне
допустимо опускать и оставлять выражение1 в описании цикла пустым.
Выражение 2 - это условие выполнения цикла for, оно проверяется перед
каждым выполнением цикла на истинность, и цикл продолжит выполняться
только в случае истинности условия.
Выражение 3 служит для изменения значения переменной-счетчика. Это
выражение выполняется каждый раз после завершения очередной итерации
цикла. Вполне допустимо, чтобы это выражение было пустым, но тогда
изменение переменной-счетчика необходимо делать внутри тела цикла.
Выражения 1, 2, 3 отделяются друг от друга обязательными разделителями точкой с запятой, но при этом могут быть пустыми. Тело цикла заключается
в фигурные скобки. Если тело цикла состоит из одного оператора, то
фигурные скобки можно опустить. Под изменением значения переменной
подразумевается, как правило, уменьшение или увеличение значения.
for ( int counter = 0; counter < 15; counter++) // выполняется приращение
переменной counter с шагом 1 от 0 до 15
Шаг в цикле for может быть отличным от единицы, то есть любым целым
числом. На самом деле в любом из трёх выражений цикла может быть любая
синтаксически допустимая конструкция на языке C++.
Если все три выражения оставить пустым, то будет запущен бесконечный
цикл без точки выхода, прервать который будет возможно только при
помощи оператора break внутри тела цикла. Бесконечный цикл с помощью
цикла for будет выглядеть следующим образом:
for(;;)
{
один оператор или блок операторов; }
Пример: Необходимо найти сумму всех целых чисел в диапазоне от 1 до n,
где n – положительное число, заданное пользователем с клавиатуры.
#include <iostream>
using namespace std;
int main(){
int n, s=0;
for(int i=1; i<=n; ++i)
s+=i;
cout << “Сумма = ” << s << endl;
}
Download