
- •Обзорные лекции по курсу
- •Арифметические операции
- •Int main()
- •Int main ()
- •Логические операции
- •Операторы сравнения
- •Int main ()
- •If(проверяемое_условие)
- •Int main ()
- •Int main()
- •If(проверяемое_условие)
- •Int main()
- •Int main ()
- •Int main ()
- •Int main ()
- •Int main()
- •Int.Main ()
- •Int main ()
- •Int main ()
- •Int main ()
- •Int main ()
- •Int main ()
- •Int main ()
- •Int main ()
- •Int main()
- •If(проверяемое_условие)
- •Int main ()
- •If(проверяемое_условие)
- •If(проверяемое_условие)
If(проверяемое_условие)
оператор1;
оператор2;
Проверяемое условие может быть любым выражением, но чаще всего оно содержит операторы сравнения.
Если проверяемое_условие принимает истинное значение (true), выполняется оператор1. В противном случае (false) выполнение программы переходит к оператору2.
В конструкциях языка C++ операторы могут быть блочными, т.е. выполняется не один, а целый блок операторов.
Блок начинается с открывающейся фигурной скобки { и заканчивается закрывающейся фигурной скобкой }. Все содержимое блока рассматривается компилятором как единый оператор.
Следующий пример иллюстрирует использование оператора if.
#include <iostream.h>
Int main ()
{
int b;
if(b > 0)
{
// Если условие b > 0 выполнено
cout « "b - положительное" ;
}
if(b < 0)
cout « "b - отрицательное";
return 0;
}
Операторы if-else
Оператор if с ключевым словом else имеет следующий вид:
If(проверяемое_условие)
предложение1;
else
предложение2;
предложение3;
Если проверяемое_условие выполняется, осуществляется переход к предложению1 с последующим переходом к предложению3. В случае, когда проверяемое_условие принимает ложное значение, программа выполнит ветвь, содержащую предложение2, а затем перейдет к предложению3.
Следует отметить, что комбинация if-else позволяет значительно упростить код программы.
Операторы if-else
Оператор if с ключевым словом else имеет следующий вид:
If(проверяемое_условие)
предложение1;
else
предложение2;
предложение3;
Если проверяемое_условие выполняется, осуществляется переход к предложению1 с последующим переходом к предложению3. В случае, когда проверяемое_условие принимает ложное значение, программа выполнит ветвь, содержащую предложение2, а затем перейдет к предложению3.
Следует отметить, что комбинация if-else позволяет значительно упростить код программы.
Оператор switch
Оператор ветвления switch является альтернативой управляющей конструкции if-else и имеет следующий синтаксис:
switch(выражение)
{
case константное_выражение :
группа операторов;
break;
case константное_выражение :
группа операторов;
break;
............
default константное_выражение :
группа операторов;
}
Конструкция switch-case представляет собой своеобразный "переключатель" и работает следующим образом.
При передаче управления на switch анализируется значение выражения и осуществляется переход к той ветви программы, для которой его значение совпадает с указанным константным_выражением. Далее следует выполнение оператора или группы_операторов до тех пор, пока не встретится ключевое слово break.При этом происходит выход из тела оператора switch-case. Если же значение выражения не совпадет ни с одним из константных_выражений, указанных в case,то выполнится группа операторов, определенная с помощью ключевого слова default.
Операторы цикла
Цикл задает многократное прохождение по одному и тому же коду программы(тело цикла). Он имеет точку вхождения, проверочное условие и (необязательно) точку выхода. Цикл, не имеющий точки выхода, называется бесконечным. Для бесконечного цикла проверочное условие всегда принимает истинное значение.
Проверка условия может осуществляться перед выполнением (циклы for, while) или после окончания (do-while) тела цикла.
Циклы могут быть вложенными друг в друга произвольным образом.
Циклы for
Синтаксис цикла for имеет вид:
for(выражение1; выражение2; выражение3)
оператор_или_блок_операторов;
Оператор работает следующим образом. Сначала выполняется выражение1,в котором переменной-счетчику повторений тела цикла присваивается начальное значение. Затем вычисляется величина выражения2, в котором приводится условие выхода из цикла, и, если полученный результат принял истинное значение, выполняется тело цикла (оператор_или_блок_операторов). В противном случае выполнение цикла прекращается и осуществляется переход к оператору, следующему непосредственно за телом цикла.
После выполнения тела цикла вычисляется выражение3, в котором устанавливается шаг изменения счетчика повторений, и осуществляется переход к пункту вычисления величины выражения2.
Все три выражения не обязательно должны присутствовать в конструкции for, однако синтаксис не допускает пропуска символа точка с запятой (;). Поэтому простейший пример бесконечного цикла for (выполняется постоянно до принудительного завершения программы) выглядит следующим образом:
for( ; ; )
cout « "Бесконечный цикл...";
Если в цикле должны синхронно изменяться несколько переменных, которые зависят от переменной цикла, вычисление их значений можно поместить в оператор for, воспользовавшись оператором "запятая".
Циклы while
Оператор цикла while выполняет оператор или блок операторов до тех пор, пока проверочное условие (выражение) остается истинным. Он имеет следующий синтаксис:
while(выражение)
оператор или_блок операторов;
Если выражение представляет собой константу с истинным значением, тело цикла будет выполняться всегда и, следовательно, мы имеем дело с бесконечным циклом. Цикл также окажется бесконечным, когда условие, определенное в выражении изначально, истинно и нигде далее в теле цикла не изменяется. Если же проверочное условие возвращает ложное значение, осуществится выход из цикла и тело оператора while будет пропущено.
Как и для оператора for, если в цикле должны синхронно изменяться несколько переменных, которые зависят от переменной цикла, вычисление их значений можно поместить в проверочное выражение оператора while, воспользовавшись оператором "запятая".
Циклы do-while
В отличие от оператора while, цикл do-while сначала выполняет тело (оператор или блок), а затем уже осуществляет проверку выражения на истинность. Такая конструкция гарантирует, что тело цикла будет обязательно выполнено хотя бы один раз.
Синтаксис оператора имеет вид:
do
оператор_или_блок_операторов ;
while(выражение)
Литература
Глушаков С.В. , Коваль А.В., Черепнин С.А. Язык программирования С++, учебный курс: Харьков: «Фолио Аст», 2001-500 с.
Харви Дейтел, Пол Дейтел, Как программировать на С++: Третье издание. Пер. с англ.-М.: ЗАО «Издательство БИНОМ», 2001 г. -1152 с.: ил.
Либерти, Джесс. Освой самостоятельно С++: Пер. с англ.-М.: ЗАО «Издательство Бином», 2001г,-1152 с.
Упражнения для самопроверки
1) Какие из следующих операторов С++ верно вычисляют значение выражения y=ax3+5
a) y=a*x*x*x+5;
b) y=a*x*x*(x+5);
c) y=(a*x)*x*(x+5);
d) y=(a*x)*x*x+5;
e) y=a*(x*x*x)+5;
f) y=a*x*(x*x+5);
2) Укажите порядок выполнения действий в каждом из следующих операторов и назовите значения переменной х после их выполнения:
a)x= 7+3*6/2-1;
b)x= 2%2+2*2-2/2;
c)x= (3*9*(3+(9*3/(3))));
3) Пусть исходные переменные получили значения: i=1,j=2,k=3,m=2. Что выводит каждый из следующих операторов? Необходимы ли скобки в каждом случае?
a) cout << (i==1)<<endl;
b) cout << (j==3)<<endl;
c) cout << (i >=1 && j<4)<<endl;
d) cout <<(m<=99&& k<m)<<endl;
e) cout <<(j>=i | | k==m)<<endl;
f) cout <<(k+m<j | | 3-j>=k)<<endl;
g) cout <<(!m)<<endl;
h) cout <<(!(j-m))<<endl;
i) cout <<(!(r>m))<<endl;
4)Определите значения каждой переменной после завершения вы- числений. Предполагайте, что перед выполнением каждого оператора все переменные имеют целое значение 5.
a) pr *= x++;
b) qt /= ++x;
5) Найдите и исправьте ошибки в следующих операторах:
a ) while (с <= 5)
{
pr*= с;
++с;
b)cin « value;
c) if (gender == 1)
cout « "Женщина" « endl;
else;
cout « "Мужчина" « endl;
6) Чем ошибочен следующий оператор цикла while:
while (z >= 0) sum += z;
7) Найдите ошибку в каждом из следующих фрагментов программы и объясните, как ее исправить.
a) x = l;
while (x <= 10);
x++; }
b) for (у = .1; у != 1.0; у += .1)
cout « у « endl;
c) switch (n) {
case 1:
cout « "Число равно 1" « endl;
case 2:
cout « "Число равно 2" « endl;
break;
default:
cout « "Число не равно ни 1, ни 2" « endl;
break; }
8) Что выведет на экран следующая программа?
#include <iostream.h>
main()
{
int y,x=1, tt=0;
while (x<=10)
{
y=x*x;
cout <<y<< endl;
tt += y;
++x;
}
cout << “tt равна”<<tt<<endl;
9) Напишите программу, использующую цикл и Esc-последовательность табуляции \t для печати следующей таблицы значений
N 10*N 100*N 1000*N
1 10 100 1000
2 20 200 2000
3 30 300 3000
4 40 400 4000
5 50 500 5000
10) Что выведет следующая программа?
#include <iostream>
main()
{
int count=1;
while(count<=10)
{
cout << (count% 2 ? “****” : “++++++++”) <<endl;
++count;
}
return 0;
}