Урок №8. Структура программ

  Юрий  | 

  |

  Обновл. 20 Дек 2022  | 

 231067

 ǀ   23 

Компьютерная программа — это последовательность инструкций, которые сообщают компьютеру, что ему нужно сделать.

Стейтменты

Cтейтмент (англ. «statement») — это наиболее распространенный тип инструкций в программах. Это и есть та самая инструкция, наименьшая независимая единица в языке С++. Стейтмент в программировании — это то же самое, что и «предложение» в русском языке. Мы пишем предложения, чтобы выразить какую-то идею. В языке C++ мы пишем стейтменты, чтобы выполнить какое-то задание. Все стейтменты в языке C++ заканчиваются точкой с запятой.

Есть много разных видов стейтментов в языке C++. Рассмотрим самые распространенные из них:

int х — это стейтмент объявления (англ. «statement declaration»). Он сообщает компилятору, что х является переменной. В программировании каждая переменная занимает определенное число адресуемых ячеек в памяти в зависимости от её типа. Минимальная адресуемая ячейка — байт. Переменная типа int может занимать до 4 байт, т.е. до 4 адресуемых ячеек памяти. Все переменные в программе должны быть объявлены, прежде чем использованы. Мы детально поговорим о переменных на следующих уроках.

х = 5 — это стейтмент присваивания (англ. «assignment statement»). Здесь мы присваиваем значение 5 переменной х.

std::cout << x; — это стейтмент вывода (англ. «output statement»). Мы выводим значение переменной х на экран.

Выражения


Компилятор также способен обрабатывать выражения. Выражение (англ. «expression») — это математический объект, который создается (составляется) для проведения вычислений и нахождения соответствующего результата. Например, в математике выражение 2 + 3 имеет значение 5. Выражения в языке С++ могут содержать:

   отдельные цифры и числа (например, 2, 45);

   буквенные переменные (например, х, у);

   операторы, в т.ч. математические (например, +, -);

   функции.

Выражения могут состоять как из единичных символов — цифр или букв (например, 2 или х), так и из различных комбинаций этих символов с операторами (например, 2 + 3, 2 + х, х + у или (2 + х) * (y - 3)). Для наглядности разберем простой корректный стейтмент присваивания х = 2 + 3;. Здесь мы вычисляем результат сложения чисел 2 + 3, который затем присваиваем переменной х.

Функции

В языке C++ стейтменты объединяются в блоки — функции. Функция — это последовательность стейтментов. Каждая программа, написанная на языке C++, должна содержать главную функцию main(). Именно с первого стейтмента, находящегося в функции main(), и начинается выполнение всей программы. Функции, как правило, выполняют конкретное задание. Например, функция max() может содержать стейтменты, которые определяют большее из заданных чисел, а функция calculateGrade() может вычислять среднюю оценку студента по какой-либо дисциплине.

Совет: Всегда размещайте функцию main() в файле .cpp с именем, совпадающим с именем проекта. Например, если вы пишете программу Chess, то поместите вашу функцию main() в файл chess.cpp.

Библиотеки


Библиотека — это набор скомпилированного кода (например, функций), который был «упакован» для повторного использования в других программах. С помощью библиотек можно расширить возможности программ. Например, если вы пишете игру, то вам придется подключать библиотеки звука или графики (если вы самостоятельно не хотите их создавать).

Язык C++ не такой уж и большой, как вы могли бы подумать. Тем не менее, он идет в комплекте со Стандартной библиотекой С++, которая предоставляет дополнительный функционал. Одной из наиболее часто используемых частей Стандартной библиотеки C++ является библиотека iostream, которая позволяет выводить данные на экран и обрабатывать пользовательский ввод.

Пример простой программы

Теперь, когда у вас есть общее представление о том, что такое стейтменты, функции и библиотеки, давайте рассмотрим еще раз программу «Hello, world!»:



Строка №1: Специальный тип инструкции, который называется директивой препроцессора. Директивы препроцессора сообщают компилятору, что ему нужно выполнить определенное задание. В этом случае мы говорим компилятору, что хотели бы подключить содержимое заголовочного файла <iostream> к нашей программе. Подключение заголовочного файла <iostream> дает нам возможность использовать функционал библиотеки iostream, что, в свою очередь, позволяет выводить нам данные на экран.

Строка №2: Пустое пространство, которое игнорируется компилятором.

Строка №3: Объявление главной функции main().

Строки №4 и №7: Указываем компилятору область функции main(). Всё, что находится между открывающей фигурной скобкой в строке №4 и закрывающей фигурной скобкой в строке №7 — считается содержимым функции main().

Строка №5: Наш первый стейтмент (заканчивается точкой с запятой) — стейтмент вывода. std::cout — это специальный объект, используя который мы можем выводить данные на экран. << — это оператор вывода. Всё, что мы отправляем в std::cout, — выводится на экран. В этом случае, мы выводим текст "Hello, world!".

Строка №6: Оператор возврата return. Когда программа завершает свое выполнение, функция main() передает обратно в операционную систему значение, которое указывает на результат выполнения программы: успешно ли прошло выполнение программы или нет.

Если оператор return возвращает число 0, то это значит, что всё хорошо! Ненулевые возвращаемые значения указывают на то, что что-то пошло не так и выполнение программы было прервано. Об операторе return мы еще поговорим детально на соответствующем уроке.

Синтаксис и синтаксические ошибки


Как вы, должно быть, знаете, в русском языке все предложения подчиняются правилам грамматики. Например, каждое предложение должно заканчиваться точкой. Правила, которые регулируют построение предложений, называются синтаксисом. Если вы не поставили точку и записали два предложения подряд, то это является нарушением синтаксиса русского языка.

Язык C++ также имеет свой синтаксис: правила написания кода/программ. При компиляции вашей программы, компилятор отвечает за то, чтобы ваша программа соответствовала правилам синтаксиса языка C++. Если вы нарушили правила, то компилятор будет ругаться и выдаст вам ошибку.

Например, давайте посмотрим, что произойдет, если мы не укажем в конце стейтмента точку с запятой:

Результат:

E0065: требуется точка с запятой ";"
C2143: синтаксическая ошибка: отсутствие ";" перед "}"

Допущена синтаксическая ошибка в строке №6: мы забыли указать точку с запятой перед оператором return. В этом случае ошибка на самом деле в конце строки №5. В большинстве случаев компилятор правильно определяет строку с ошибкой, но есть ситуации, когда ошибка не заметна вплоть до начала следующей строки.

Синтаксические ошибки нередко совершаются при написании программ. К счастью, большинство из них можно легко найти и исправить. Но следует помнить, что программа может быть полностью скомпилирована и выполнена только при отсутствии ошибок.

Примечание: Также Вы можете приобрести Самоучитель «Уроки по С++» в .pdf-формате.

Тест

Теперь давайте проверим то, как вы усвоили материал текущего урока. Ответьте на следующие вопросы:

   В чём разница между стейтментом и выражением?

   В чём разница между функцией и библиотекой?

   Чем заканчиваются стейтменты в языке С++?

   Что такое синтаксическая ошибка?

Ответы

Чтобы просмотреть ответ, кликните на него мышкой.

Ответ №1

Стейтмент — это «полное предложение», которое сообщает компилятору, что ему нужно выполнить определенное задание. Выражение всегда имеет результат (исключение — деление на ноль) и является частью стейтмента.

Ответ №2

Функция — это последовательность стейтментов для выполнения определенного задания. Библиотека — это последовательность функций, которые могут повторно использоваться в других программах.

Ответ №3

Точкой с запятой (;).

Ответ №4

Синтаксическая ошибка — это ошибка, указывающая на нарушение правил грамматики языка С++.

Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (1 637 оценок, среднее: 4,93 из 5)
Загрузка...

Комментариев: 23

  1. Nu1k:

    Разбор программы > «Строка №2»

    Если присутствует пустое место в программе и оно игнорируется компилятором, то зачем вообще нужны эти пустые места?

    Возможно я забегают вперёд (или что-то забыл в прошлых уроках) но предполагаю, что делается это для «визуала» — упрощения работы с кодом. А на оптимизацию влияет присутствие/отсутствие?

    Спасибо вам, уроки просто бомба. Кайфую читая всё это добро. Поражён качеством.

    1. Лев:

      Для удобного чтения кода и чтобы он не сливался в одну целую кашку.

  2. Аноним:

    Не хочу обидеть, но интересно почему у вас «оператор» в учебнике называется «стэйтмент»

    1. Фото аватара Юрий:

      Стейтмент — это инструкция, строка кода, которая может состоять с нескольких операторов, текста и других конструкция языка программирования.
      Оператор — это 1 объект.

  3. Роман:

    Спасибо. Очень все понятно.

  4. Илья:

    Хочу отметить качество перевода – по тексту даже и не подумал, что источник был англоязычный. По сложившейся в комментах традиции: если осилю курс – автору обязательно задоначу 🙂

  5. Даниил:

    Огромное спасибо Автору за подробные и понятные уроки!

  6. Жанибек:

    Решил поучится программированию, очень рад что зашел именно на этот курс))))

  7. Кирилл:

    Юрий, огромное спасибо вам за такие прекрасные уроки с разором понятий, приведением английских терминов.
    Вы второй такой замечательный автор в рунете: создатель матпрофи и вы)

  8. Artur:

    Спасибо огромное за ваш труд ! Очень качественный учебный материал.

    1. Фото аватара Юрий:

      Пожалуйста)

  9. Александр:

    Юрий я вам благодарен за качественно написанный урок. Спасибо

    1. Фото аватара Юрий:

      Пожалуйста 🙂

  10. somebox:

    > Например, каждое предложение должно оканчиваться точкой.

    Нет. Варианта четыре: точка, многоточие, вопросительный и восклицательный знак. 🙂

    1. Фото аватара Юрий:

      Действительно, здесь я промахнулся 🙂

  11. Константин:

    Юра, в этом уроке утверждается, мол, С++ не такой уж большой, но он укомплектован Стандартной библиотекой. Вопрос: а где она физически находится? Как туда заглянуть и взять что-нибудь "почитать"? Не в смысле поставить :: и вытащить нужный элемент, а в какой папке она лежит.

  12. Алексей:

    Программа написана не правильно! она будет вырубаться при запуске,
    нужно было так:

    1. Фото аватара Юрий:

      У меня в Visual Studio не вырубается. Что делать, чтобы не вырубалось — рассказывается в уроке 7.

    2. Pavel:

      Программа написана правильно. "Вырубание" программы означает всего лишь то, что после завершения программы ее окно закрывается. В любой среде программирования есть настройки, которые позволяют изменить такое поведение консольной программы. Т.е. можно сделать так, что после завершения программы окно консоли останется открытым.

      1. Эльдар:

        У него

        не написан.
        А программа не должна закрываться, так как у него прописано

        1. Pavel:

          А причем тут "у него"?
          Исходная программа в Visual Studio 2017 действительно закроет окно сразу по завершении. В настройках есть пункт, который изменяет такое поведение. Ну или можно писать

          На вкус и цвет товарища нет.

  13. Семён:

    Великолепно ! Все подробно описано !
    Но завтра надо почитать ещё раз …. Для большего усвоения .

    1. painkiller:

      Как успехи?

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *