Пример 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: Проверить делится ли первое введенное с клавиатуры число на второе введенное число.