Пример 3. Преобразование температуры
Вот формула преобразований. Звездочка (*), когда используется для объединения двух значений, означает «умножить на».
Fahrenheit = (Celsius * 1.8) + 32
В наше время полезная программа не будет все время просто рассчитывать единственное значение температуры и завершаться. В этом случае было бы проще использовать программу Windows Calculator! Нет, действительно полезная программа будет принимать любое значение температуры по шкале термометра Цельсия и преобразовывать его. Для этого потребуется использование нескольких новых возможностей:
✓ Организовать пользовательский ввод;
✓ Сохранять введенное значение в переменной.
Ниже приведена такая программа полностью. Откройте новый исходный файл, наберите код и сохраните его под именем convert.срр. После этого скомпилируйте и запустите программу.
#include <iostream>
using namespace std;
int main() {
// Объявляем переменную
double ctemp, ftemp;
// Выводим приглашение и вводим значение переменной
cout << "Input a Celsius temp and press ENTER: ";
cin >> ctemp;
// Вычисляем ftemp (Fahrenheit) и выводим ее
ftemp = (ctemp * 1.8) + 32;
cout << "Fahrenheit temp is: " << ftemp;
return 0;
}
Программы проще сопровождать, если в них добавлены комментарии, которые в языке C++ обозначаются двойными значками дроби, слэшами (//). Комментарии игнорируются компилятором языка C++ (то есть они не влияют на поведение программы), однако полезны для людей.
Упражнение 3: написать программу, которая вычисляет квадрат введенного числа.
Упражнение 4: перепишите пример таким образом, чтобы он выполнял обратное преобразование: сохранял вводимое значение в переменной ftemp (значение по шкале термометра Фаренгейта), а результат преобразований сохранял в переменной ctemp (значение по шкале термометра Цельсия). Затем напечатайте результат. (Подсказка: формула для обратных преобразований - ctemp = (ftemp - 32) /1.8.)
Инструкции if и if-else
Самый простой способ запрограммировать поведение - это сказать «Если А истинно, то необходимо выполнить В». Это именно то, что делает инструкция i f языка C++. Ниже представлена простая форма синтаксиса инструкции if:
if (условие)
инструкция
Рассмотрим инструкцию if, сравнивающую две переменные, х и у. (Предположим, что переменные были заранее объявлены, как это и полагается.)
if (х == у)
cout << "х and у are equal.";
Странно. В примере используются два знака «равно» (==) вместо одного (=). Но это не опечатка. В языке C++ в этом отношении есть два отдельных оператора: один знак «равно» означает присваивание, которое копирует значение в переменную; два знака «равно» выполняют проверку на равенство.
Что, если вместо выполнения только одной инструкции в ответ на условие, вы желаете выполнить ряд инструкций? Ответ заключается в использовании составной инструкции (compound statement) (называемой также «блоком инструкций» (statement block)):
if (х == у)
{
cout << "х and у are equal." « endl;
cout « "Isn't that nice?";
they_are__equal = true;
}
Значение этого синтаксиса заключается в том, что либо выполняются все инструкции, либо не выполняется ни одна из них. Если условие (х равняется у, в данном случае) ложно, управление программы переходит на конец составной инструкции - другими словами, управление переходит на первый оператор после закрывающей фигурной скобки (}).
Открывающая и закрывающая фигурные скобки ({}) определяют, где начинается и заканчивается составная инструкция. Это может быть вставлено в синтаксис инструкции if, благодаря еще другому важному правилу:
Везде, где в языке C++ можно использовать инструкцию, можно использовать составную инструкцию.
Можно также указать действия, выполняемые в том случае, когда условие ложно. Это совсем необязательно. Как можно предположить, в этой вариации используется ключевое слово else.
if {условие}
инструкция1
else
инструкция2
Пример 4: Чет иди нечет?
Настало время посмотреть на готовую программу, использующую принятие решений. Это простой, почти банальный пример, но он знакомит нас с новым оператором (%) и демонстрирует синтаксис инструкции if-else в действии.
Эта программа принимает значение, введенное с клавиатуры, и сообщает, является ли число четным либо нечетным. Операция является простейшей, однако она демонстрирует простое использование инструкции if.
#include <iostream>
using namespace std;
int main()
{
int n, remainder;
cout << "Enter a number and press ENTER: ";
cin >> n;
// Получим остаток после деления на 2
remainder = n % 2;
// Если остаток равен 0, то число четное, иначе нет
if (remainder == 0)
cout << "The number is even.";
else
cout << "The number is odd.";
return 0;
}
Первая инструкция программы объявляет две целочисленные переменные n, remainder.
Следующая инструкция делит значение переменной n на 2 и получает остаток. Эта операция называется делением по модулю (modulus) или остатком от деления (remainder). Результат сохраняется в переменной, называемой (достаточно подходяще) «remainder» (остаток от деления).
remainder = n % 2;
Знак процентов (%) в языке C++ теряет свое обычное значение и вместо этого обозначает остаток от деления. Вот несколько примеров результатов:
Пример Остаток от деления Примечания
3 %2 1 Odd (Нечетное)
4 % 2 0 Even (Четное)
25% 2 1 Odd
60% 2 0 Even
25 % 5 0 Divisible by 5 (Делится на 5)
13 % 5 3 Not divisible by 5 (He делится на 5)
Упражнение 5: Определить является человек несовершеннолетним (вводится возраст в виде целых лет жизни).
Упражнение 6: Проверить делится ли первое введенное с клавиатуры число на второе введенное число.