В данной статье мы продолжим знакомиться с C++. Так как мы пока ещё очень мало знаем о программировании, то примеров из компьютерных игр пока не будет. Вместо этого мы будем считать градусы, что тоже, согласитесь, неплохо.

Добавление проекта в решение "solution"

Для начала нам нужно создать ещё один проект. Откройте IDE и выберите решение solution. Выберите в меню File -> New -> Project (Файл -> Создать -> Проект) или на панели инструментов щёлкните кнопку New Project.

В Project type должно быть выбрано Win32, в Templates - Win32 Console Application.

В поле Name (имя) пишем Fahrenheit to Celsius, а в выпадающем списке Solution (решение) выберите Add to solution (Добавить к решению). Жмём OK.

В появившемся помошнике жмём Next, а дальше для Application type (Тип приложения)выбираем Console application (Консольное приложение). В Addition options (Дополнительные свойства) ставим флажок напротив Empty project (Пустой проект). И нажимаем Finish.

В обозревателе решений появился новый проект. Сейчас нам нужно добавить в него файл. Жмём CTRL+N, выбираем C++ File (.cpp) и нажимаем Open.

В редакторе кода отобразится содержимое файла. Пока что тут пусто. В меню выбираем пункт File -> Move Source1.cpp into -> 2. Fahrenheit to Celsius. В появившемся диалоговом окне Save file As в поле для имени впишите - Fahrenheit to Celsius и нажмите Сохранить.

Программа Fahrenheit to Celsius

Программа сначала печатает значения по Фаренгейту для нуля и ста градусов Цельсия. Затем просит ввести пользователя значение температуры по Фаренгейту и переводит его в значение по Цельсию.

Полный листинг программы можно найти по ссылке в начале урока. Ниже в примере приводится фрагмент кода идущий сразу после директивы using namspace:

код на языке c++
#define BOILING_POINT_F 212

int main()
{
  setlocale(LC_CTYPE,"Russian");
  const int FREEZE_POINT_F = 32;
  float f, c;

  cout << "0 C = " << FREEZE_POINT_F << " F\n";
  cout << "100 C = " << BOILING_POINT_F << " F\n\n";

cout << "Введите температуру  по Фаренгейту: ";
cin >> f;

c = (f-32)*5/9;
cout << "Температура  по Цельсию равна " << c << "\n";

_getch();
return 0;
}

Приступим к осмотру пациента. Прежде всего мы добавили ещё один заголовочный файл - clocale. Он нужен нам для того, чтобы использовать функцию setlocale() в программе, которая в свою очередь позволяет выводить текст в консоли на русском языке.

Константы

Константы - это какие-то величины, которые нельзя изменять. Например, число Pi = 3,14, является константой. В С++, если вам нужно какое-то значение, которое будет постоянным во время выполнения программы, его лучше сделать константным. Сделать это можно двумя способами. И оба два представлены в нашей программе.

Первый. До определения функции main(), использовать директиву препроцессора #define:

#define BOILING_POINT_F 212

BOILING_POINT_F - это идентификатор (или имя) константы. Идентификатор позволяет использовать (ссылаться на) константу в программе. Этой константе пррисваивается значение 212.

Второй (более предпочтительный) способ объявления констант. Использование ключевого слова const:

const int FREEZE_POINT_F = 32;

FREEZE_POINT_F - это идентификатор (имя). Ключевое слово int - это тип данных. int от integer (целое число). Данной константе нельзя присвоить никаких данных, кроме целого числа.

Например следующие примеры верны:

код на языке c++
const int FREEZE_POINT_F = 12;
const int FREEZE_POINT_F = 0;
const int FREEZE_POINT_F = 3282;

а вот эти, нет:

код на языке c++
const int FREEZE_POINT_F = 12.2; //  для использования этих значений поменяйте
const int FREEZE_POINT_F = 0.5;  // int  на float или  в последнем случае на
const int FREEZE_POINT_F = 'Я';  // char

Обратите внимание на отличие синтаксиса при использовании #define и const:

#define расположена за пределами определения функции main(), а const внутри.
После директивы #define нет точки с запятой, это обычно для директив препроцессора.
В #define не используется оператор присваивания =, а идентификатор отделяется от значения пробелом, в отличии от const, где идентификатор и значение разделены этим знаком.
И последнее: при использовании const обязательно нужно указывать какого типа константа (целое число - int, вещественное - float, строка текста).
Поддержка русского языка
В первой программе мы выводили текст на английском языке. Консольные приложения не поддерживают русский язык. И чтобы это исправить нам нужна функция setlocale():

setlocale(LC_TYPE,"Russian");

В этом операторе происходит вызов функции setlocale(). То что это функция, можно догадаться по скобкам. То что находится в скобках мы пока обсуждать не будем. Просто если хотите использовать в своих программах русский язык, добавтье заголовочный файл clocale с помощью директивы #include, а в теле main() вызовите функцию setlocale(LC_TYPE,"Russian").

Использование переменных

С константами мы разобрались. Но что если нам нужно использовать величины, которые будут изменяться во время выполнения программы? Например, данные которые введёт пользователь? Для этого как раз и существуют переменные (variable - переменная). Значения переменных могут меняться во время выполнения программы

Перед тем как использовать переменные, их нужно сначала: обьявить, определить, инициализировать.

Обьявление и определение происходят в одной строке:

float f, c;

Здесь мы обьявили и определили две вещественные (числа с десятичной запятой) переменные f - для температуры по Фаренгейту и c - Для температуры по Цельсию.

При обьявлении переменной компилятор узнаёт о её существовании.
При определении, операционная система (ОС) выделяет место в памяти для переменной.
При инициализации, переменной присваивается начальное значение.
Все три действия можно выполнить в одной строке, например:

int var = 0; // целой переменной var присваивается ноль

Итак, чтобы создать переменную, нужно указать тип данных и идентификатор (имя). Разве это не просто?

Стандартный ввод

Следующий оператор, который мы пока не знаем:

cin >> f;

cin - обьект для работы с ввводом с клавиатуры. Операция >> - это операция извлечения. Она помещает в то что стоит справа, значение из левой своей части. То есть в переменную f будет помещено то, что содержится в cin. А содержаться в cin будет то, что пользователь введёт с клавиатуры во время работы программы.

Использование переменных

Следующий оператор довольно простой:
c = (f-32)*5/9;

Здесь высчитываются градусы по Цельсию исходя из значения температуры по Фаренгейту. Операции разности, произведения, деления и скобок используются точно так же как и в математике. Знак равно = называется оператором присваивания. То что находится слева принимает значение того что находится справа. Т.е. переменной c присваивается значение выражения (f-32)*5/9.

Каскадирование операции вставки <<

И последний оператор, который мы обсудим:

cout << "Температура по Цельсию равна " << c << "\n";

Мы уже встречались и с обьектом cout и с операцией <<. Но здесь используется каскадирование операции вставка <<. Сначала в cout копируется константная строка, затем переменная c и затем ещё одна константая строка содержащая символ конца строки.

Запуск программы

Теперь давайте запустим программу. Нажимаем F7, а затем F5. Но у нас запустилась программа hello world. Закройте её. В обозревателе решений вызовите контекстное меню для Fahrenheit to Celsius (Щёлкните на названии проекта правой кнопкой мыши) и выберите Set As StartUp Project (Сделать проектом по умолчанию). Попробуйте снова запустить проект, на этот раз должно получиться.

// Программа Fahrenheit to Celsius

#include <conio.h>
#include <iostream>
#include <clocale>

using namespace std;

#define BOILING_POINT_F 212

int main()
{
   setlocale(LC_CTYPE,"Russian");
   const int FREEZE_POINT_F = 32;
   float f, c;

   cout << "0 C = " << FREEZE_POINT_F << " F\n";
   cout << "100 C = " << BOILING_POINT_F << " F\n\n";

   cout << "Введите температуру  по Фаренгейту: ";
   cin >> f;
   c = (f-32)*5/9;
   cout << "Температура  по Цельсию равна " << c << "\n";

   _getch();
   return 0;
}
Статья взята с shatalov.su