Вирушаючи в подорож C++, ми почнемо зі змінних, викликів функцій і коментарів.
Коментарі бувають двох видів: однорядкові та багаторядкові.
Усе, що йде після // у тому ж рядку, компілятор ігнорує.
Багаторядкові коментарі також називають коментарями в стилі C.
Їх обрамляють символами /* і */.
Усе, що стоїть між ними, також буде проігноровано.
C++ належить до типізованих мов.
Усі типи мають бути відомі під час компіляції, і зазвичай їх потрібно вказувати явно.
Тип змінної не може змінюватися.
Змінну цілого типу з назвою years можна оголосити так:
int years;
Гарною практикою є ініціалізація змінних під час оголошення. C++ пропонує для цього різні механізми. Варіант із фігурними дужками більше відповідає сучасному C++, але варіант зі знаком рівності теж дуже поширений.
int tomatoes{80};
int potatoes = 40;
C++ справді дозволяє використовувати неініціалізовані змінні. Доки змінній навмисно не надано значення, вона невизначена й може містити будь-що. Щоб уникнути помилок використання до присвоєння та невизначеної поведінки, радимо завжди ініціалізувати змінні. Невизначена поведінка може спричинити збій програми в найгірший момент, хоча раніше вона працювала бездоганно. Це варто підкреслити ще раз: уникаймо невизначеної поведінки за будь-яку ціну.
Арифметичні оператори, як-от *, + чи -, можуть бути частиною виразу, наприклад 3 * 2 або tomatoes + potatoes.
Змінним можна присвоювати нові значення, якщо вони зберігають свій тип:
tomatoes = tomatoes - 5; // tomatoes is now 75
potatoes = (32 * 2) + 11; // potatoes is now 75 as well
Функція має назву, тип поверненого значення та (можливо, порожній) список параметрів.
Ось приклад функції з назвою always_fortyseven, яка завжди повертає 47:
int always_fortyseven() {
return 47;
}
А ось vip_fee з одним параметром:
int vip_fee(int standard_fee) {
/*
vip_fee calculates the vip fee based on the standard_fee.
*/
int vip_multi{3};
return standard_fee * vip_multi;
}
Або total_fee, функція з трьома параметрами, що викликає іншу функцію.
int total_fee(int vips, int adults, int kids) {
/*
total_fee calculates the total price for a group of VIP and adult guests with kids.
Kids get a flat discount on the standard fee.
VIP guest fees are calculated by calling vip_fee.
*/
int standard_fee{30};
int kids_discount{15};
int kids_total_fee = kids * (standard_fee - kids_discount);
int vips_total_fee = vips * vip_fee(standard_fee);
int adult_total_fee = adults * standard_fee;
return vips_total_fee + adult_total_fee + kids_total_fee;
}
У C++ функції не повертають значення останньої інструкції, як у деяких інших мовах.
Щоб код скомпілювався, потрібне ключове слово return.
Пробільні символи використовують для форматування вихідного коду; до них належать пробіли, табуляції та переходи на новий рядок. Оскільки компілятор ігнорує зайві пробільні символи, їх можна використовувати, щоб структурувати код. Розумне використання пробільних символів може поліпшити читабельність коду. Існують різні стандарти форматування, але всі вони умовні, і компілятор їх не вимагає.
// Formatting makes it easier to find bugs
int eggs_yolks = 3;
int yeast = 15;
int flour=500;int sugar=200;// compact, but difficult to read
Дівчина Луціана ось-ось повернеться додому, а він ще не приготував вечерю на їхню річницю!
У цій вправі ми напишемо код, який допоможе Луціану приготувати вишукану лазанью за його улюбленою книгою рецептів.
На нас чекають чотири завдання, усі повʼязані з часом, витраченим на приготування лазаньї.
Визначте функцію ovenTime(), яка не приймає жодних аргументів і повертає, скільки хвилин лазанья має провести в печі.
Згідно з книгою рецептів очікуваний час запікання становить 40 хвилин:
ovenTime();
// => 40
Визначте функцію remainingOvenTime(int actualMinutesInOven), яка приймає як аргумент фактичну кількість хвилин, які лазанья вже провела в печі, і повертає, скільки хвилин лазаньї ще залишилося провести в печі, виходячи з очікуваного часу запікання з попереднього завдання.
remainingOvenTime(30);
// => 10
Визначте функцію preparationTime(int numberOfLayers), яка приймає як аргумент кількість шарів, доданих до лазаньї, і повертає, скільки хвилин ми витратили на підготовку лазаньї, якщо припустити, що на кожен шар потрібно 2 хвилини.
preparationTime(2);
// => 4
Визначте функцію elapsedTime(int numberOfLayers, int actualMinutesInOven), яка приймає два аргументи: перший аргумент - кількість шарів, доданих до лазаньї, а другий - кількість хвилин, які лазанья вже провела в печі. Функція повинна повернути, скільки хвилин ми витратили на приготування лазаньї, тобто суму часу підготовки у хвилинах і часу в хвилинах, який лазанья на цей момент провела в печі.
elapsedTime(3, 20);
// => 26
Зареєструйтеся на Exercism, щоб вивчати й опановувати C++, а також 19 концепцій100 вправ та справжнє наставництво від людей, і все це безкоштовно.