Урок #1

Перша програма, найпростіші математичні операції (+, -, *), змінні

Почавши вивчати C++, ви вибрали довгий, важкий і цікавий шлях. Звичайно, якщо ви вже вивчали якісь інші мови програмування, C++ не видасться таким складним. Що ж, приступимо до першого уроку.

Структура програми

У початковій школі ми опановуємо найелементарніші дії: складання, віднімання, множення та ділення чисел. Причому ми користувалися аркушем паперу і ручкою для того, що б виконувати математичні дії в стовпчик. Але потім ми просто виписували відповідь в рядок. Наприклад, склавши числа 1234 і 4321 в стовпчик ми отримаємо 5555, а відповідь виглядає так: 1234 + 4321 = 5555.

Будемо вважати себе лінивими, або ж ми такими насправді є 🙂 Тоді нам потрібен якийсь раб, який буде за нас виконувати всі дії в стовпчик. В цій ролі буде виступати комп’ютер. Але просто сказавши йому «Нуж бо, склади ці два числа», ми нічого не отримаємо. Для цього необхідно дати йому відповідну команду на зрозумілій йому мові. Тепер до справи береться C++, за допомогою якого ми будемо керувати комп’ютером.

Давайте розглянемо просту програму, яка виводить суму чисел 1234 і 4321.

Круто, правда? Виглядає незрозуміло. Тільки знак + є знайомим. Але це нормально. Якщо ви не вивчали китайську мову, то ви дивилися б на нього так само 🙂 Тепер треба розібрати цей код, що б зрозуміти, що і як працює. Оператор #include відповідає за підключення бібліотек в проекти. Зазвичай, в бібліотеках містяться функції, величезні функції, які часом навіть на C++ не написані. Бібліотека iostream відповідає за введення і виведення будь-яких даних в консолі. Без цієї бібліотеки std::cout не працював би або нам довелося використовувати такі функції як scanf і printf. Проте про це ми поговоримо пізніше. Сам запис std::cout означає «Функція cout знаходиться в просторі імен std». Навіщо потрібен це загадковий простір імен? Буває, що імена ідентифікаторів в різних бібліотеках можуть збігатися, але їх функції зовсім різні. Тому ми будемо використовувати функцію cout саме з простору імен std. Після цієї нескладної конструкції йдуть символи <<. Вони невіддільні від функції cout. Але чому ці символи повернені саме в ту сторону? Якщо говорити чесно, то тут логіки майже немає. Так домовились розробники мови. А ось далі ми бачимо звичний математичний вираз 1234 + 4321. Комп'ютер його вираховує та виводить на екран. Тут знову зустрічаються наші лапки. «Навіщо вони ще раз? Ми ж уже їх прописували»- подумаєте ви. Функція cout влаштована так, що перед будь-яким виразом, або звичайним текстом обов'язково ставляться ці лапки. Їх слід писати разом, без пробілу, т. як. Вони фактично як один символ. std::endl означає кінець рядка (end line) і цей ідентифікатор просто ставить знак закінчення рядка. Цей символ можна замінити і іншими способами, але про це поговоримо на наступних уроках. Символи { і } є операторними дужками.

Фух! Ми розібралися з цією програмою на 5 рядків. Це тільки на початку доводиться так багато описувати, тому що всі мови програмування не терплять помилки і вимагають суворого дотримання синтаксису написання програми.

Якщо тепер ми запустимо проект, то побачимо, що нам вивелося на екран число 5555.

5555 Для продовження натисніть будь-яку клавішу...

Ось і написана наша перша програма! Але операційна система не розуміє, що програма спрацювала правильно. Хоча, якщо не виникло помилок під час виконання проекту, то ОС вважає, що все нормально. Давайте ж скажемо нашій операційній системі, що все працює на «відмінно». Для цього напишемо маленьку конструкцію return 0; яка говорить системі, що код помилки 0, іншими словами помилки немає.

Проте зараз вікно консолі дуже швидко закрилося. Якщо без return 0; у Вас програма сама ставилася на паузу, то з цим оператором програма відразу закриється. Але чому все саме так? Сама конструкція return 0; повертає код помилки нуль і закриває програму. Тому вбудована пауза працювати не буде. Паузу можна поставити за допомогою цієї інтуїтивно зрозумілої команди system("pause");

Спробуйте самі скласти +, відняти - і помножити * два числа.

Ділення ми розглянемо пізніше, оскільки в його реалізації багато подробиць, які ми, на жаль, ще не можемо зрозуміти.

Змінні

Я сподіваюся, що ви не виконували протягом всього навчання у початковій школі виключно одну дію - додавання чисел 1234 і 4321, а ще й інші приклади. Наприклад: 2 * 3, 100 - 99, 78 + 57. Але ми не будемо сидіти і писати програми для кожного з цих випадків. Давайте ж будемо говорити комп'ютеру які саме два числа будемо складати (на домашнє завдання Вам залишиться віднімання і множення). Всі числа, які ми складали в молодших класах, ми записували на папері. Саме папір був місцем зберігання значення змінної. А змінна - це певна назва того, що змінюється. Це як x в квадратному рівнянні. Але як же сказати комп'ютеру, що x це змінна? Комп'ютер повинен знати не тільки ім'я нової змінної, але і її тип. «Навіщо знати тип? Це і так зрозуміло»- запитаєте ви. Але комп'ютер вибагливий і не хоче вгадувати що за тип у змінної x, він бажає знати відразу. Найпростіший тип - знаковий цілочисельний тип int (integer - ціле число). У кожного типу є діапазон - значення, які може приймати змінна цього типу. Тип int приймає значення від -2 147 483 648 до 2 147 483 647. Це вже багато, чи не так? Давайте напишемо програму, яка буде складати будь-які два цілі числа.

Ми створили дві змінні first і second типу int. Ми могли записати це як int first, second; що б заощадити нам час. Далі йде функція cin в просторі імен std. Її синтаксис дуже схожий на синтаксис cout, але має головну особливість: лапки спрямовані в іншу сторону. Функція cin читає змінні, які ви ій приписали, поки не натиснете enter.

Можливі питання за темою:

«Як розібратися з напрямком лапок в програмі?» - Уявіть, що cout - це літак, а всі повідомлення, яке знаходиться праворуч від нього - реклама, яка кріпиться до літака. А самі лапки << уявімо що це мотузка. Одним кінцем вона кріпиться до літака, а двома іншими до реклами. Думаю, було б неможливо прочитати рекламу, якщо мотузка була б закріплена навпаки :)

«Що робити, якщо типу даних не вистачає?» - Вивчати другий урок. Після цього ви будете Володарем типів!!!

«Хлопче, чому ти не розглядаєш ділення? Що воно тобі такого поганого зробило?»- Ми ще не вивчили типи даних для дійсних чисел і не вміємо їх гарно виводити. Незабаром ми цьому навчимося.

Додавайте свої питання в коментарі. Кращі потраплять до статті :)


Урок #0 Урок #2