Для того чтобы полноценно вникнуть в вопрос коммуникации программиста с компьютером, рассмотрим простой и понятный пример.
В обществе люди коммуницируют между собой. В процессе коммуникации они передают друг другу различную информацию, транслируют эмоции. Это делает нас социальными существами. Как думаете, можем ли мы описать процесс коммуникации между людьми более коротко?
О да! Все люди в той или иной степени дают друг другу инструкции. Иногда они очень запутанные и их тяжело понять. Тогда люди спорят и ругаются. С компьютером все проще и сложнее одновременно.
Программист общается с ним тоже посредством инструкций. Из этих инструкций и состоят все программы на любом языке программирования. Компьютер, в отличие от людей, понимает только четкие и понятные инструкции. Каждое действие ему нужно объяснять пошагово. И чем четче будет ваше объяснение, тем ниже вероятность, что вы будете ругаться на монитор и кричать: "Да почему ты не работаешь, ...ать твою!".
Инструкции в C++
Любая компьютерная программа, написанная на языке С++ — это четкие инструкции компьютеру, которые он выполняет в той последовательности, в которой их написал программист.
Большинство инструкций в C++ заканчиваются точкой с запятой.
Группы инструкций (функции)
Функция в C++ — это набор инструкций, который выполняется компьютером строго по порядку, сверху вниз.
Функции помогают автоматизировать некоторые рутинные операции внутри программы. Чтобы не повторять каждый раз их описания для компьютера, их описывают один раз внутри функции и потом, каждый раз, когда это действие необходимо выполнить, вызывают функцию, в которой это действие определено.
Главная функция
В каждой самостоятельной программе на C++ должна быть одна обязательная функция main(). Назовем ее главной функцией. Именно она определяет с какого момента компьютер начнет исполнять инструкции программиста и когда закончит.
Функция main() — это точка входа в программу, она же определяет, когда программа должна завершить свою работу.
Стандартная структура программы на C++
В предыдущей статье мы запускали нашу первую программу, которая выводила на экран консоли текст: Hello, World!. Сейчас мы вспомним как она выглядела и кратко разберем ее структуру. Возможно, в процессе разбора некоторые моменты будут вам непонятны. Не пугайтесь, я постепенно объясню все в следующих статьях.
Вспомним как выглядела наша первая программа?
Если вы вдруг не сохранили ее код в решении своей IDE, я оставлю его ниже. Чтобы вы не тратили время на его переписывание, просто скопируйте и вставьте его в свой редактор.
____________________________________________________________________________________
#include <iostream>
int main()
{
std::cout << "Hello, World!";
return 0;
}
____________________________________________________________________________________
Такими горизонтальными линиями я буду отделять блоки с кодом в этой и следующих статьях.
Совет: старайтесь писать новые элементы кода самостоятельно. Это поможет вам обучаться эффективнее и не делать элементарных ошибок в коде. Функция копировать/вставить сейчас совсем вам не помощник. А скорее враг.
Наиболее эффективно будет разобрать нашу первую программу именно построчно.
Строка 1: Директива препроцессора
Большинство программ начинаются с директив препроцессора. Что это такое?
Дело в том, что перед компиляцией, программа проходит этап трансляции, вот во время трансляции и включается препроцессор. Он просматривает ваш код сверху вниз и ищет указания, которые выполнит. Первая строка в нашей программе — это и есть указание для нашей программы.
Что именно мы указываем препроцессору?
Первая строка начинается с #include (включи). Мы буквально даем указание препроцессору: включи <iostream>. Что это за чудесатый <iostream> и почему нам так нужно его включать в начале программы? Давайте разбираться!
Дело в том, что в ядре языка C++ нет встроенной поддержки ввода/вывода данных. Для решения этой проблемы создателями языка была придумана стандартная библиотека std, в которой описано множество разных функций, в том числе и необходимая нам функция вывода текста на экран.
Хорошо, а что же такое iostream? Это заголовочный файл, в котором описаны правила ввода с экрана и вывода данных на экран (описан поток ввода/вывода). iostream является частью стандартной библиотеки std. После того, как препроцессор возьмет iostream и вставит его содержимое на место директивы #include, компилятор сможет понять, как будут вводиться и выводиться наши данные.
Резюме:
- Директивы препроцессора начинаются с символа #
- Заголовочные файлы оборачиваются в <>
- Директивы предпроцессора не заканчиваются символом ;
- iostream с англ. input output stream — поток ввода/вывода.
- Поток в программировании — абстрактное понятие для операций с вводом и выводом данных. Иначе, источник или приемник данных. Обычно поток привязан к физическому источнику/приемнику: клавиатуре, файлу или консоли.
Строка 2: Функция main() или точка входа в программу
Выше уже было подчеркнуто то, что любая полноценная программа на C++ начинается с функции main().
Вы, объявляя функцию main(), говорите компилятору: отсюда начнется моя программа.
Подробнее о функции main() мы поговорим в следующих статьях, в том числе обсудим, почему вы должны ее писать именно так: int main()
И никак иначе.
Важно!
- Функции не требуют использования символа ; после их объявления.
- Тело функции (место в котором и будет описана ваша программа) обрамляется открывающей и закрывающей фигурной скобкой {внутри этих скобок будут написаны все инструкции}.
- Внутри функции main можно использовать другие функции, но сейчас мы не будем это делать.
Строки 3-6: Тело функции
Эти строки обрамлены фигурными скобками. Все что находится внутри, считается частью функции main.
Пройдет немного времени и ваши программы будут состоять не только из одной функции main. В них появится множество других функций, но правила их написания не изменятся.
Строка 4: Вывод символов в консоль
На строке 4 написана наша первая инструкция. Строка 4 говорит: возьми текст Hello world и отправь его в поток вывода на консоль (cout) принадлежащий пространству стандартных имен std.
Разберемся еще подробнее:
std::cout — означает, возьми предопределенную переменную cout (character output, вывод символов), которая описывает вывод символов на консоль, из пространства имен std. Принадлежность к пространству имен обозначается двумя двоеточиями ::
<< "Hello, World!"; — означает, отправь этот текст в поток вывода данных на консоль (cout) и заверши на этом инструкцию/перейди к следующей инструкции.
Это может быть важно!
<< — знак отправки куда либо.
"Hello, World!" — текст в C++ пишется всегда в двойных кавычках.
; — сигнал завершения инструкции и перехода к новой инструкции.
Строка 5: Оператор (инструкция) возврата
Когда программа завершается, ей нужно сообщить системе: успешно она завершена или нет. Для этого и существует оператор возврата. Он возвращает целое число. Сигналом успешного завершения служит число 0.
Строка 6: Скобка закрывающая тело функции
На строке 6 расположена, закрывающая тело функции, фигурная скобка.
____________________________________________________________________________________
Итак, мы только что разобрали как работает программа в C++. Эти принципы будут соблюдаться для всех программ в начале нашего пути.
Сегодня вы сделали маленький но первый важный шажок в изучении программирования на C++. Совсем скоро мы продолжим разбираться в тонкостях этого языка дальше. Подпишитесь на канал, чтобы не пропустить новые статьи.
Для закрепления материала я предлагаю вам потренироваться и несколько раз написать эту простую программу вручную у себя в редакторе. Потом откомпилировать и запустить ее. Можете даже поменять текст внутри кавычек.