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

  Юрий  | 

    | 

  Обновл. 23 Фев 2019  | 

 47771

 ǀ   15 

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

Стейтменты

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

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

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

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

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

Выражения


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

  значения (например: 2, 4);

  переменные (например: х, у);

  операторы (например: +, -);

  функции.

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

Функции

В 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. В большинстве случаев компилятор правильно определяет строку с ошибкой, но есть ситуации, когда ошибка не заметна вплоть до начала следующей строки.

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

Тест

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

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

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

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

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

Ответы

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

Ответ №1

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

Ответ №2

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

Ответ №3

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

Ответ №4

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

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

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

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

  1. Аватар Илья:

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

    1. Юрий Юрий:

      А функции в библиотеке размещены как?

      1. Аватар Илья:

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

  2. Аватар Александр:

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

    1. Юрий Юрий:

      Пожалуйста 🙂

  3. Аватар somebox:

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

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

    1. Юрий Юрий:

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

  4. Аватар Константин:

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

  5. Аватар Алексей:

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

    1. Юрий Юрий:

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

    2. Аватар Pavel:

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

      1. Аватар Эльдар:

        У него

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

        1. Аватар Pavel:

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

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

  6. Аватар Семён:

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

    1. Аватар painkiller:

      Как успехи?

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

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