Слайд 1Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ С++
Управляющие
инструкции
Слайд 2Управляющие инструкции
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Существует три категории управляющих
инструкций:
инструкции выбора (if, switch)
итерационные инструкции (for, while и do-while)
инструкции перехода (break, continue, return и goto)
Слайд 3Инструкция if
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Инструкция if позволяет
сделать выбор между двумя выполняемыми ветвями программы.
Полный формат ее записи таков.
if (выражение) инструкция;
else инструкция;
Слайд 4Инструкция if
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Вместо элемента инструкция
может быть использован блок инструкций. В этом случае формат записи if-инструкции принимает такой вид.
if (выражение)
{
последовательность инструкций
}
else
{
последовательность инструкций
}
Слайд 5Пример. Игра "Угадай магическое число"
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
#include
using namespace std;
int main()
{
int magic; // магическое число
int guess; // вариант пользователя
magic = rand(); // Получаем случайное число.
cout << "Введите свой вариант магического числа: ";
cin >> guess;
if (guess == magic) cout << "** Правильно **";
return 0;
}
Слайд 6Пример. Игра "Угадай магическое число"
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Попробуем
усовершенствовать нашу программу и в ее новую версию включим else-ветвь для вывода сообщения о том, что предположение пользователя оказалось неверным.
Слайд 7Пример. Игра "Угадай магическое число"
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
#include
using namespace std;
int main()
{
int magic; // магическое число
int guess; // вариант пользователя
magic = rand(); // Получаем случайное число.
cout << "Введите свой вариант магического числа: ";
cin >> guess;
if (guess == magic) cout << "** Правильно **";
else cout << "...Очень жаль, но вы ошиблись.";
return 0;
}
Слайд 8Условное выражение
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
для управления if-инструкцией
можно использовать любое С++ выражение.
Тип выражения необязательно ограничивать операторами отношений и логическими операторами или операндами типа bool.
Главное, чтобы результат вычисления условного выражения можно было интерпретировать как значение ИСТИНА или ЛОЖЬ.
Слайд 9Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Нет никакой необходимости использовать следующую
if-инструкцию.
if (b != 0) cout << а / b << '\n';
Эта форма if-инструкции считается устаревшей и потенциально неэффективной.
Слайд 10Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
using namespace std;
int
main()
{
int a, b;
cout << "Введите два числа: ";
cin >> a >> b;
if (b) cout << a / b << '\n';
else cout << "На ноль делить нельзя.\n";
return 0;
}
Слайд 11Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
using namespace std;
int
main()
{
setlocale(LC_ALL, "Russian");
int a, b;
cout << "Введите два числа: ";
cin >> a >> b;
if (a=b) cout << a <<'='<< b << '\n';
else cout << a << " не равно" << b;
system("pause");
return 0;
}
Данная программа
успешно скомпилируется?
Что будет выведено на
экран если ввести 3 и 4?
Слайд 12Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Результат выполнения
Слайд 13Вложенные if-инструкции
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Вложенные if-инструкции очень
популярны в программировании.
Главное здесь — помнить, что else-инструкция всегда относится к ближайшей if-инструкции, которая находится внутри того же программного блока.
Язык C++ позволяет 256 уровней вложения
Слайд 14Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
if (i)
{
if
(j) statement1;
if (k) statement2; // Эта if-инструкция
else statement3; // связана с этой else-инструкцией.
}
else statement4; // Эта else-инструкция связана с if(i).
Слайд 15Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
int main()
{
int magic;
// магическое число
int guess; // вариант пользователя
magic = rand(); // Получаем случайное число.
cout << "Введите свой вариант магического числа: ";
cin >> guess;
if (guess == magic) {
cout << " ** Правильно **\n";
cout << magic << " и есть то самое магическое число.\n";
}
else {
cout << "...Очень жаль, но вы ошиблись.";
if (guess > magic) cout << "Ваш вариант превышает магическое число.\n";
else cout << " Ваш вариант меньше магического числа.\n";
}
return 0;
}
Слайд 16Конструкция if-else-if
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Очень распространенной в
программировании конструкцией, в основе которой лежит вложенная if-инструкция, является "лестница" if-else-if. Ее можно представить в следующем виде.
if (условие)
инструкция;
else if (условие)
инструкция;
else if (условие)
инструкция;
.
.
.
else
инструкция;
Слайд 17Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
using namespace std;
int
main()
{
int x;
for (x = 0; x<6; x++) {
if (x == 1) cout << "x равен единице.\n";
else if (x == 2) cout << "x равен двум.\n";
else if (x == 3) cout << "x равен трем.\n";
else if (x == 4) cout << "x равен четырем.\n";
else cout << "x не попадает в диапазон от 1 до 4.\n";
}
return 0;
}
Слайд 18Результаты выполнения программы
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
х не попадает в диапазон от 1 до 4.
х равен единице,
х равен двум,
х равен трем,
х равен четырем.
х не попадает в диапазон от 1 до 4.
Слайд 19Инструкция switch
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Инструкция switch— это
инструкция многонаправленного ветвления, которая позволяет выбрать одну из множества альтернатив.
Значение выражения последовательно сравнивается с константами из заданного списка. При обнаружении совпадения для одного из условий сравнения выполняется последовательность инструкций, связанная с этим условием.
Слайд 20Инструкция switch
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Общий формат записи
инструкции switch
switch (выражение) {
case константа1:
последовательность инструкций
break;
case константа2:
последовательность инструкци
break;
case константа3:
последовательность инструкций
break;
.
.
default:
последовательность инструкций
}
Слайд 21Инструкция switch
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Для применения switch-инструкции
необходимо знать следующее.
Элемент выражение инструкции switch должен при вычислении давать целочисленное или символьное значение. (Выражения, имеющие, например, тип с плавающей точкой, не разрешены.)
Инструкция break завершает выполнение кода, определенного инструкцией switch.
Последовательность инструкций default-ветви выполняется в том случае, если ни одна из заданных case-констант не совпадет с результатом вычисления switch-выражения. Ветвь default необязательна.
Слайд 22Инструкция switch
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Для применения switch-инструкции
необходимо знать следующее.
Инструкция switch отличается от инструкции if тем, что switch-выражение можно тестировать только с использованием условия равенства
Никакие две case-константы в одной switch-инструкции не могут иметь идентичных значений.
Инструкция switch обычно более эффективна, чем вложенные if-инструкции.
Последовательность инструкций, связанная с каждой case-ветвью, не является блоком. Однако полная switch-инструкция определяет блок.
Согласно стандарту C++ switch-конструкция может иметь не более 16 384 case-инструкций.
Слайд 23Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
int choice;
cout << "Справка по темам:\n\n";
cout << "1. for\n";
cout << "2. if\n";
cout << "3. switch\n\n";
cout << "Введите номер темы (1-3): ";
cin >> choice;
cout << "\n";
switch (choice) {
case 1: cout << "for - это самый универсальный цикл в С++.\n"; break;
case 2: cout << "if - это инструкция условного ветвления.\n"; break;
case 3: cout << "switch - это инструкция многонаправленного ветвления.\n"; break;
default: cout << "Вы должны ввести число от 1 до З.\n";
}
return 0;
}
Слайд 24Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
int main()
{
int i;
cout << "Введите значение переменной i : ";
cin >> i;
switch (i) {
case 0: cout << "меньше 1\n";
case 1: cout << "меньше 2\n";
case 2: cout << "меньше 3\n";
case 3: cout << "меньше 4\n";
case 4: cout << "меньше 5\n";
}
cout << ' \n';
system("pause");
return 0;
}
Данная программа
успешно скомпилируется?
Что будет выведено на
экран
Слайд 25Результат выполнения программы
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Слайд 26Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Цикл for —
самый универсальный цикл C++.
Общий формат записи цикла for для многократного выполнения одной инструкции имеет следующий вид
for (инициализация; выражение; инкремент) инструкция;
Если цикл for предназначен для многократного выполнения не одной инструкции, а программного блока, то его общий формат выглядит так.
for (инициализация; выражение; инкремент)
{
последовательность инструкций
}
Слайд 27Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Элемент инициализация обычно
представляет собой инструкцию присваивания, которая устанавливает управляющую переменную цикла равной начальному значению.
Элемент выражение представляет собой условное выражение, в котором тестируется значение управляющей переменной цикла. Результат этого тестирования определяет, выполнится цикл for еще раз или нет.
Элемент инкремент— это выражение, которое определяет, как изменяется значение управляющей переменной цикла после каждой итерации.
Слайд 28Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
#include
using namespace std;
int main()
{
int num;
double sq_root;
for (num = 1; num<100; num++) {
sq_root = sqrt((double)num);
cout << num << " " << sq_root << '\n';
}
return 0;
}
Слайд 29Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Управляющая переменная цикла
for может изменяться как с положительным, так и с отрицательным приращением, причем величина этого приращения также может быть любой.
int main()
{
int i;
for (i = 100; i >= -100; i = i - 5)
cout << i << ' ';
return 0;
}
Слайд 30Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Важно понимать, что
условное выражение всегда тестируется в начале выполнения цикла for.
Это значит, что если первая же проверка условия даст значение ЛОЖЬ, код тела цикла не выполнится ни разу.
for (count = 10; count<5; count++)
cout << count; // Эта инструкция не выполнится.
Слайд 31Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Для управления циклом
for можно использовать несколько переменных
for (x = 0, у = 10; х <= 10; ++х, --у)
cout << х << ' ' << у << '\n';
Слайд 32Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Условным выражением, которое
управляет циклом for, может быть любое допустимое С++-выражение.
#include
#include
using namespace std;
int main()
{
int i;
// Вывод чисел на экран до нажатия любой клавиши.
for (i = 0; !kbhit(); i++)
cout << i << ' ';
return 0;
}
Слайд 33Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
В C++ разрешается
опустить любой элемент заголовка цикла (инициализация, условное выражение, инкремент) или даже все сразу.
#include
using namespace std;
int main()
{
int x;
for (x = 0; x != 123;) {
cout << "Введите число: ";
cin >> x;
}
return 0;
}
Слайд 34Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
using
namespace std;
int main()
{
int x,limit=100;
cout << "Введите номер позиции: ";
cin >> х;
for (; х return 0;
}
Слайд 35Цикл for
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Бесконечный цикл —
это цикл, который никогда не заканчивается.
for (;;)
{
//...
}
Слайд 36Задача
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
using namespace std;
int
main()
{
unsigned int x;
for (x<<=6; x; x>>=1)
cout << x << " ";
return 0;
}
Данная программа
успешно скомпилируется?
Что будет выведено на экран?
Слайд 37Цикл while
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Инструкция while —
еще один способ организации циклов в C++.
Общая форма цикла while имеет такой вид:
while (выражение) инструкция;
или
while (выражение)
{
набор инструкций
}
Слайд 38Цикл while
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Эта программа выводит
все символы, включая расширенный набор символов, если таковой существует.
#include
using namespace std;
int main(){
unsigned char ch;
ch = 32;
while (ch) {
cout << ch;
ch++;
}
return 0;
}
Слайд 39Цикл do-while
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Цикл do-while —
это единственный цикл, который всегда делает итерацию хотя бы один раз.
Его общий формат имеет такой вид.
do {
инструкции;
} while (выражение);
Слайд 40Цикл do-while
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
using
namespace std;
int main()
{
int num;
do {
cout << "Введите число (100 - для выхода): ";
cin >> num;
} while (num != 100);
return 0;
}
Слайд 41 Использование инструкции continue
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Инструкция
continue позволяет немедленно перейти к выполнению следующей итерации цикла.
Она принудительно выполняет переход к следующей итерации, опуская выполнение оставшегося кода в текущей итерации.
Слайд 42 Использование инструкции continue
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Пример
#include
using namespace std;
int main()
{
int x;
for (x = 0; x <= 100; x++) {
if (x % 2) continue;
cout << x << ' ';
}
return 0;
}
Слайд 43Инструкции break
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Инструкция break позволяет
немедленно выйти из цикла.
С помощью инструкции break можно организовать немедленный выход из цикла, опустив выполнение кода, оставшегося в его теле, и проверку условного выражения.
Слайд 44Инструкции break
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
Пример
#include
using
namespace std;
int main()
{
int t;
// Цикл работает для значений t от 0 до 9, а не до 100!
for (t = 0; t<100; t++) {
if (t == 10) break;
cout << t << ' ';
}
return 0;
}
Слайд 45Вложенные циклы
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
В C++
разрешено использовать до 256 уровней вложения.
Вложенные циклы используются для решения задач самого разного профиля.
Например, в следующей программе вложенный цикл for позволяет найти простые числа в диапазоне от 2 до 1000.
Слайд 46Пример
Никитин Михаил Евгеньевич, 2013
ГБПОУ ПК имени П.А.Овчинникова
#include
using namespace std;
int
main()
{
int i, j;
for (i = 2; i<1000; i++)
{
for (j = 2; j <= (i / j); j++)
if (!(i%j)) break;
if (j >(i / j)) cout << i << " - простое число\n";
}
return 0;
}