
- •220300 - Системы автоматизированного проектирования
- •Состав языка и принцип работы компилятора языка высокого уровня
- •Идентификаторы
- •Альтернативный ввод-вывод в стиле с
- •Константы
- •Манипуляторы
- •Преобразования типов
- •Арифметические операции
- •Функции стандартной библиотеки
- •Операции отношения и логические операции
- •Базовые конструкции структурного программирования
- •Цикл с параметром (for)
- •Цикл с предусловием (while)
- •Цикл с постусловием (do while)
- •Рекомендации по программированию циклов
- •Ветвления
- •Условный оператор if
- •Вложенные конструкции
- •Проблемы соответствия if и else во вложенных ветвлениях
- •Условная операция
- •Оператор switch
- •Операторы передачи управления
- •Контрольная работа
- •Массивы
- •Сортировка массива методом выбора
- •Сортировка массива методом пузырька
- •Многомерные массивы
- •Операции со строками
- •Функции
- •Void starline(); // объявление функции (прототип)
- •Передача аргументов в функцию по значению
- •Void charline(char sim, int n); // объявление функции (прототип)
- •Возвращение функцией значения
- •Передача аргументов по ссылке
- •Возвращение значения по ссылке
- •Перегруженные функции
- •Переменные и функции
- •Передача массивов в функции
- •Указатели
- •Указатели и массивы
- •Указатели и функции
- •Указатели и строки
- •Динамический массив и динамическое выделение памяти
- •Ввод/вывод
- •Форматированный ввод/вывод
- •Конструкторы и методы
- •Двоичный ввод/вывод. Бинарные файлы
- •Двунаправленный ввод/вывод
- •Функции стандартной библиотеки для работы с файлами или ввод/вывод в стиле с
Цикл с постусловием (do while)
В цикле while в случае невыполнения условия при первой проверке тело цикла вообще не исполняется. Но бывают ситуации, когда необходимо выполнить тело цикла хотя бы один раз. Для этого существует цикл do while, в котором условие продолжения цикла располагается не перед, а после тела цикла.
Приведём синтаксис цикла с постусловием:
do {
оператор; // тело цикла состоит из нескольких операторов - блок
оператор;
оператор;
} while (условие выполнения);
Сначала выполняются операторы, составляющие тело цикла, а затем вычисляется условное выражение. Если оно истинно, тело цикла выполняется ещё раз, если оно ложно, цикл завершится. Рассмотрим пример.
#include <iostream>
using namespace std;
int main() {
float a, b;
char answer;
do { // начало действия цикла do
cout << "\nVvedite dva chisla cherez probel: ";
cin >> a >> b;
cout << "Proizvedenie chisel: " << a*b << endl;
cout << "\nProdolgite?(y/n): ";
cin >> answer;
} while(answer != 'n'); // условие цикла
return 0;
}
Данная программа будет работать до тех пор, пока пользователь не введёт n, т.е. если программа получает в ответ символ отличный от n , то условное выражение сохраняет значение true.
Рекомендации по программированию циклов
При программировании циклов очень часто допускают такие ошибки, как использование в теле цикла неинициализированных переменных и неверная запись условия выхода из цикла. Чтобы избежать элементарных ошибок, рекомендуется: а) проверить, всем ли переменным, встречающимся в правой части операторов присваивания, присвоены начальные значения; б) проверить, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла.
Имеющиеся в С++ типы циклов взаимозаменяемы, но можно привести некоторые рекомендации по их выбору. Оператор do while обычно используют, когда цикл требуется обязательно выполнить хотя бы раз (например, ввод данных). Оператором while удобнее пользоваться в случаях, когда число итераций заранее не известно, очевидных параметров цикла нет или модификацию параметров удобнее записывать не в конце тела цикла. Оператор for предпочтительнее в большинстве остальных случаев (однозначно – для организации циклов со счётчиками).
Лекция 4 (8 стр.)
Ветвления
Конструкции ветвления предназначены для осуществления логичного перехода в другую часть программы в зависимости от значения соответствующего условного выражения. В С++ существует несколько типов ветвлений, наиболее важным из которых является if…else, как правило осуществляющее выбор между двумя альтернативами. Рассмотрим существующие конструкции ветвлений по порядку.
Условный оператор if
Условный оператор if используется для разветвления процесса вычислений на два направления. Рассмотрим синтаксис этого оператора:
if (условие выполнения)
оператор_1; // тело состоит из одного оператора, который можно заключить в { }
else оператор_2;
или
if (условие выполнения) {
оператор_1; // тело конструкции состоит из нескольких операторов - блок
оператор_Х;
оператор_Х;
}
else {
оператор_2; // тело конструкции состоит из нескольких операторов - блок
оператор_У;
}
Сначала вычисляется условное выражение и если оно истинно, выполняется оператор_1, иначе – оператор_2. В операторе ветвления if…else использование else не является обязательным. В зависимости от решаемой задачи можно использовать конструкцию с else или без. Рассмотрим примеры:
if (a<0) b=1; //1
if (a<b && (a>d || a==0)) b++; else b--; //2
if (a<b) { if(a<c) m=a; else m=c; } else { if(b<c) m=b; else m=c; } //3
if (a++) b++; //4
if (b>a) max = b; else max = a; //5
Приведём пример программы, иллюстрирующий применение оператора if.
int main() {
int x;
cout << "Vvedite chislo: "; cin >> x;
if(x > 100) cout << x << " bolshe 100 " << endl;
getch(); return 0;
}
Как видно из данного примера, одиночный оператор if позволяет совершать действие в том случае, если выполняется некоторое условие. Если же условие не выполняется, никакого действия не происходит (если ввести число < 100, то ничего не произойдёт). Когда необходимо совершить одно действие в случае выполнения условия и другое действие в случае невыполнения этого условия, целесообразно использовать конструкцию if…else.
int main() {
int x;
cout << "Vvedite chislo: "; cin >> x;
if(x > 100) cout << x << " bolshe 100 " << endl;
else cout << x << " ne bolshe 100 " << endl;
getch(); return 0;
}
Иногда бывают ситуации, когда необходимо получать более точный ответ, тогда, как правило, удобнее использовать одиночные операторы if.
int main() {
int x;
cout << "Vvedite chislo: "; cin >> x;
if(x > 100) cout << x << " bolshe 100 " << endl;
if(x < 100) cout << x << " menshe 100 " << endl;
if(x == 100) cout << x << " ravno 100 " << endl;
getch(); return 0;
}
Д/З |
П
1
очко
2
очка
0
1 2
|
Ответ |
1 вариант int main() { float x, y; int kol_och; cout << "Vvedite koordinaty vystrela: "; cin >> x >> y; if ((x*x + y*y) < 1) kol_och = 2; else if ((x*x + y*y) < 4) kol_och = 1; else kol_och = 0; cout << "\n Ochkov: " << kol_och; getch(); return 0; } 2 вариант int main() { float x, y; int kol_och; cout << "Vvedite koordinaty vystrela: "; cin >> x >> y; if ((x*x + y*y) < 1) kol_och = 2; if ((x*x + y*y) > 1 && (x*x + y*y) < 4) kol_och = 1; if ((x*x + y*y) > 4) kol_och = 0; cout << "\n Ochkov: " << kol_och; getch(); return 0; } |