10 января 2010 в 19:17
Разбор программы Fahrenheit to Celsius
В данной статье мы продолжим знакомиться с 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:
#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 (целое число). Данной константе нельзя присвоить никаких данных, кроме целого числа.
Например следующие примеры верны:
const int FREEZE_POINT_F = 12; const int FREEZE_POINT_F = 0; const int FREEZE_POINT_F = 3282;
а вот эти, нет:
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; }
комментарии отсутствуют
авторизуйтесь