Процедура —
#include <iostream>
int main() {
std::cout << "Hello world!";
return 0;
}
std используется как фамилия cout. Это показывает, что cout относится к пространству имен std.
Свойства С++:
- Полиморфизм
- Наследование
- Инкапсуляция
Свойство потокового ввода-вывода: можно в одну строчку писать несколько частей.
#include <iostream>
int main() {
std::cout << "Hello" << "world!";
return 0;
}
Знак '\n'
— переход на новую строку. Этот символ соответствует команде newline.
#include <iostream>
int main() {
std::cout << "Hello" << "world!\n";
std::cout << "Second line\n";
std::cout << "Third line \\n" << std::endl;
// здесь использован символ экранирования '\' благодаря чему '\n' выводится на экран
// и не воспринимается как команда для новой строки
std::cout << "C::\\Users\\Documents\\file.txt";
return 0;
}
Однако в разных операционных системах используются разные символы для перехода на новую строку где-то “\r”, где-то “\n”, а где-то “\r\n”.
Из-за этого теряется переносимость кода. Например, если программа писалась на Windows, то она может неправильно открыться на Linux.
Поэтому существует отдельный объект std::endl
. Он сам определяет, в какой системе запускается программа и вставляет соответствующий ей символ перехода на новую строку.
#include <iostream>
int main() {
std::cout << "Hello world!" << std::endl;
std::cout << "Second line";
return 0;
}
Кроме того, он включает в себя команду flush, благодаря которой гарантируется, что весь текст из буфера будет выведен в консоль. ‘\n’
этого не гарантирует, он лишь переводит на новую строку.
Часто можно видеть, что вместо постоянного указывание std:: используют конструкцию: using namespace std.
#include <iostream>
using namespace std;
int main() {
cout << "Hello world!" << endl;
cout << "Second line";
return 0;
}
Однако в разработке ее использование крайне не рекомендуется.
Попробуем написать программу, которая переводит градусы по Фаренгейту в градусы по Цельсию.
#include <iostream>
int main() {
double F; // вводим переменную типа данных double.
std::cout << "Input Fahrengheit: ";
std::cin >> F; // cin - поток ввода. Пользователь вводит значение,
// которое сохраняется в переменную.
double C = 5/9*(F-32); // создаем переменную, в которую записываем
// результат перевода в градусы по Цельсию.
std::cout << "Celsius = " << C << std::endl; // выводим результат на экран.
return 0;
}
Однако, если запустить данную программу, то она всегда будет выводить 0. Проблема в том, что при вычислении 5/9 выполняется целочисленное деление (т.к. 5 и 9 — целые) и в результате получится 0. Поэтому нужно указать, что хотя бы одно из чисел вещественное. Например:
double C = 5.0/9*(F-32);
Чтобы преобразовывать переменные в другие типы можно указывать нужный тип и в скобках переменную:
int C = 5;
std::cout << double(C);
// можно писать в стиле языка C, когда тип данных берется в скобки:
std::cout << (double)C;
// или более строгий и правильный вариант:
std::cout << "Celsius = " << static_cast<double>(C) << std::endl;
Давайте попробуем вывести информацию о том, жарко сейчас или холодно:
if (C >= 30) {
std::cout << "It's hot" << std::endl; // выполнится, если условие верно.
}
else {
std::cout << "It's cold" << std::endl; // выполнится, если условие неверно.
}
Изменим условие: будем считать, что нормально, когда температура от 10 до 30.
if (C >= 30) {
std::cout << "It's hot" << std::endl;
} else {
if (C > 10) {
std::cout << "It's norm" << std::endl;
} else {
std::cout << "It's cold" << std::endl;
}
}
Или, если более сокращенно:
if (C >= 30) {
std::cout << "It's hot" << std::endl;
} else if (C > 10) {
std::cout << "It's norm" << std::endl;
} else {
std::cout << "It's cold" << std::endl;
}
Однако гораздо более удобно использовать составные условия, которые можно создавать с помощью логических операторов:
- || — логическое или. Пример: (условие 1) || (условие 2)
- && — логическое и. Пример: (условие 1) && (условие 2)
- ! — логическое отрицание. Пример: !(условие 2)