- •Пространство имен.
- •Представление целых чисел
- •Определение переменных
- •Особенности использования некоторых типов данных: переполнение регистров переменных
- •Базовые конструкции структурного программирования
- •Условный оператор if
- •Ветвление процесса выполнения программ
- •Тема: Указатели и ссылки
- •Адреса переменных. Оператор взятия адреса
- •Указатели
- •Динамически распределяемая память
- •Указатели на объекты
- •Выделяют два основных отличия между статическими и динамическими объектами.
- •Перегрузка функций
- •Значения параметров функции, используемые по умолчанию
- •Определение массива
- •“Sdjdkjdhkfsdjhvm,c,bnmsierhoerhsdklfhbnasmbf”; //правильно Пустая строка записывается “ ” и имеет тип const char[1]. Использование датчика случайных чисел для формирования массива
- •Конструкторы и деструкторы
Ветвление процесса выполнения программ
Для решения многих задач требуется многократное повторение одних и тех же действий. На практике это реализуется либо с помощью рекурсии либо с помощью итерации. Итерация – это повторение одних и тех же действий определенное количество раз. Основным методом итерации является цикл. Циклы в С++ могут быть трех видов:
цикл с предусловием – while
цикл с постусловием – do…while
цикл с управляющей переменной – for
Оператор цикла While
С помощью оператора цикла в программе создается цикл, который будет повторять последовательность операторов до тех пор, пока условие, определенное в начале цикла остается истинным.
Синтаксис оператора цикла с предусловием следующий:
while (выражение условия)
{
операторы тела цикла;
}
Выражение условия – это любое выражения языка С++ , а оператор – любой допустимый оператор или блок операторов. Если выражение истинно – возвращает значение 1, выполняется тело цикла (блок операторов), после чего выражение условия проверяется снова. Так будет продолжаться до тех пор, пока выражение не станет ложным (0); тогда цикл while завершится, а выполнение программы продолжится со следующей строки.
Таким образом, в цикле с предусловием сначала выполняется проверка условия, а затем, в зависимости от результата проверки, выполняется или нет тело цикла.
Пример. В приведенном ниже листинге программы на экран выводятся все значения переменной х, начиная с начального (х=0), увеличиваясь на единицу с каждой итерацией, до тех пор, пока х < 5.
#include <iostream>
int main()
{
int x=0; //присвоение начального значения
while(x<5) // проверка, истинно ли еще условие
{
x++; // тело цикла
std::cout<<"x= "<<x<<"\n";
}
std::cout<<" Complete. x: "<<x<<"\n";
return 0;
}
Сначала проверяется условие, и если оно истинно, то выполняется тело цикла. В данном случае условию удовлетворяют все х значения переменной х, меньшие 5. Если условие истинно, то значение переменной х увеличивается на 1 (выполняются операторы тела цикла), а следующая строка выводит это значение на экран. Как только значение счетчика достигает 5 (условие ложно), все тело цикла пропускается и программа переходит к строке 11.
Результат работы программы:
x= 1
x= 2
x= 3
x= 4
x= 5
Complete x: 5
Условие, проверяемое в цикле while может состоять из нескольких выражений, объединенных логическими операторами: &&, | |, ! . Например, приведенная ниже программа демонстрирует реализацию логической задачи. Вводятся два положительных числа – одно меньше, другое больше, их значения размещаются соответственно в переменных small и large. Далее меньшее начинает увеличиваться на единицу, а большее уменьшаться на два, процесс продолжается до тех пор, пока значения чисел не «встретятся». Цель задачи – определить эти числа. Для решения необходимо проверить три условия продолжения цикла:
- меньшее число меньше большего (small < large);
- большее больше нуля (0 < large);
- меньшее число меньше максимально допустимого.
#include <iostream>
using namespace std;
int main() {
unsigned short small; // от 0 до 65 535
unsigned long large; // от 0 до 4 294 967 295
const unsigned short MAX= 65535; //объявление константы МАХ и
//присвоение ей значения3
cout<<"Enter a small number: ";
cin>>small;
cout<<"Enter a large number: ";
cin>>large;
// при каждой итерации проверяются три условия
while (small<large && large > 0 && small < MAX)
{
small++;
large -=2;
}
cout<<"\nSmall: "<<small<<" Large: "<<large<<endl;
return 0; }
Результат
Enter a small number: 2
Enter a large number: 100000
Small: 33335 Large: 33334
Оператор цикла do…while
Цикл с постусловием является противоположностью цикла с предусловием. Возможен вариант, когда тело цикла while вовсе не будет выполнено. Оператор цикла while проверяет выражение условия цикла до того, как приступит к выполнению операторов тела цикла, и если условие ложно с самого начала, то тело цикла будет пропущено.
// Пример игнорирования цикла при заведомо ложном условии
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
char str[20];
int x;
CharToOem("Сколько приветов? : ", str);
cout<<str;
cin>>x;
while (x>0)
{
CharToOem("Привет!\n", str);
cout<<str;
x--;
}
return 0;
}