Какую функцию должны содержать все программы на с

от admin

Структура программы на языке с

В табл. перечислены 32 ключевых слова, определенные стандартом С89. Они же являются ключевыми словами языка С как подмножества C++. В табл. 1.3 приведены ключевые слова, добавленные стандартом С99. Набор ключевых слов вместе с формальным синтаксисом С составляет язык программирования С.

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

В языке С различаются верхний и нижний регистры символов:

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

Любая программа на С состоит из одной или нескольких функций.

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

Структура программы С изображена на рис., здесь f1() — fN() означают функции, написанные программистом.

Структура программы на языке С

Объявление глобальных переменных

//главная фунция

Int main(список параметров)

последовательность операторов

тип_возвращаемого_значения f1(список параметров)

последовательность операторов

тип_возвращаемого_значения f2(список параметров)

последовательность операторов

Библиотека и компоновка

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

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

При вызове библиотечной функции компилятор «запоминает» ее имя. Потом компоновщик связывает код исходной программы с объектным кодом, уже найденным в стандартной библиотеке. Этот процесс называется компоновкой, или редактированием связейУ некоторых компиляторов есть свой собственный компоновщик, другие пользуются стандартным компоновщиком, поставляемым вместе с операционной системой.

В библиотеке функции хранятся в переместимом формате. Это значит, что адреса машинных инструкций в памяти являются не абсолютными, а относительными. При компоновке программы с функциями из стандартной библиотеки эти относительные адреса, или смещения, используются для определения действительных адресов. Для того чтобы научиться программировать на С (а значит и понять дальнейший материал данной книги), этого объяснения достаточно, более подробно процесс настройки адресов изложен в других книгах.

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

Необходимо сказать несколько слов о языке C++. В нескольких словах, язык C++ — это объектно-ориентированный язык программирования, фундаментом которого является С. Язык С — это подмножество C++ и, следовательно, C++ — надмножество С.

В общем случае компилятор C++ можно использовать для компиляции программы, написанной на С. В настоящее время большинство компиляторов могут работать с программами, написанными как на С, так и на C++. Поэтому многие программисты используют компилятор C++ для компиляции программы, написанной на С. Но, поскольку C++ основан на стандарте С89, при написании программы С, рассчитанной на компилятор C++, допускается использование только тех возможностей языка, которые предусмотрены в С89

Основы языка программирования C++

Программа на С++ состоит из набора инструкций. Каждая инструкция (statement) выполняет определенное действие. В конце инструкции в языке C++ ставится точка с запятой (;). Данный знак указывает компилятору на завершение инструкции. Например:

Данная строка выводит на консоль строку «Hello world!», является инструкцией и поэтому завершается точкой с запятой.

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

В этом блоке кода две инструкции, которые выводят на консоль определенную строку.

Функция main

Каждая программа на языке С++ должна иметь как минимум одну функцию — функцию main() . Именно с этой функции начинается выполнение приложения. Ее имя main фиксировано и для всех программ на С++ всегда одинаково.

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

В частности, при создании первой программы использовалась следующая функция main:

Определение функии main начинается с возвращаемого типа. Функция main в любом случае должна возвращать число. Поэтому ее определение начинается с ключевого слова int .

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

И после списка параметров идет блок кода, который и содержит в виде инструкций собственно те действия, выполняемые функцией main.

В конце функции идет инструкция return :

Эта инструкция завершает выполнение функции, передавая управление во вне туда, где была вызвана функция. В случае с функцией main контроль передается операционной системе.

Число 0 после оператора return указывает операционной системе, что выполнение функции завершилось успешно, без ошибок.

Также стоит отметить, что в функции main можно опустить инструкцию return 0; :

Директивы препроцессора

В примере выше на консоль выводится строка, но чтобы использовать вывод на консоль, необходимо в начале файла с исходным кодом подключать библиотеку iostream с помощью директивы include .

Директива include является директивой препроцессора. Каждая директива препроцессора размещается на одной строке. И в отличие от обычных инструкциий языка C++, которые завершаются точкой с запятой ; , признаком завершения препроцессорной директивы является перевод на новую строку. Кроме того, директива должна начинаться со знака решетки #. Непосредственно директива «include» определяет, какие файлы и библиотеки надо подключить в данном месте в код программы.

Комментарии

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

В языке C++ есть два типа комментариев: однострочный и многострочный. Однострочный комментарий размещается на одной строке после двойного слеша //:

Многострочный комментарий заключается между символами /* текст комментария */ . Он может размещаться на нескольких строках. Например:

Компиляция

Создание исполняемого файла из исходного кода на C++ в общем случае состоит из трех этапов:

Препроцессор обрабатывает все директивы препроцессора (например, директиву #include )

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

Компоновщик (он же линкер/линковщик) объединяет все объектные файлы в единую программу. Данный процесс называется компоновкой/линковкой

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

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

Стейтменты

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, что, в свою очередь, позволяет выводить нам данные на экран.

Читать:
Dfast что за приложение

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

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

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

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

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

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

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

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

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

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

1.1 – Инструкции и структура программы на C++

Добро пожаловать в первую основную главу данной серии обучающих руководств о C++!

В этой главе мы сначала рассмотрим ряд тем, которые важны для каждой программы на C++. Поскольку тем, которые нужно охватить, довольно много, мы рассмотрим большую часть на довольно поверхностном (достаточном для понимания) уровне. Цель этой главы – помочь вам понять, как строятся простейшие программы на C++. К концу главы вы сможете писать свои собственные простые программы.

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

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

Инструкции

Компьютерная программа – это последовательность инструкций, которые говорят компьютеру, что делать. Инструкция (оператор, statement) заставляет программу выполнять какое-либо действие.

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

Большинство (но не все) инструкций в C++ заканчиваются точкой с запятой. Если вы видите строку, оканчивающуюся точкой с запятой, вероятно, это инструкция.

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

Для продвинутых читателей

В C++ есть много разных типов инструкций:

  1. инструкции объявления;
  2. инструкции переходов;
  3. инструкции выражений;
  4. составные инструкции;
  5. инструкции выбора (условия);
  6. инструкции итерации (циклы);
  7. блоки попыток (try).

К тому времени, когда вы прочтете эту серию статей, вы поймете, что всё это такое!

Функции и функция main

В C++ инструкции обычно группируются в блоки, называемые функциями. Функция – это набор инструкций, которые выполняются последовательно (по порядку сверху вниз). По мере того, как вы научитесь писать свои собственные программы, вы сможете создавать свои собственные функции, а также смешивать и сопоставлять инструкции любым удобным для вас способом (мы покажем, как это сделать в следующих уроках).

Правило

Каждая программа на C++ должна иметь специальную функцию с именем main (все буквы в нижнем регистре). Когда программа запускается, операторы внутри main выполняются в последовательном порядке.

Программы обычно завершают работу (завершают выполнение), когда выполняется последняя инструкция внутри функции main (хотя в некоторых случаях программы могут прерваться преждевременно или выполнить после этого некоторую очистку).

Функции обычно пишутся для выполнения определенной работы. Например, функция с именем " max " может содержать инструкции, определяющие, какое из двух чисел больше. Функция с именем " calculateGrade " может вычислять оценку учащегося на основе набора результатов тестов. Вскоре мы поговорим о функциях намного больше, поскольку они являются наиболее часто используемым инструментом организации в программе.

Примечание автора

При обсуждении функций довольно распространенным сокращением является добавление пары круглых скобок в конец имени функции. Например, если вы видите термин main() или doSomething() , это сокращение для функций с именами main или doSomething соответственно. Это помогает отличать функции от других типов объектов (например, переменных) без необходимости каждый раз писать слово «функция».

Препарирование программы HelloWorld!

Теперь, когда у вас есть краткое представление о том, что такое инструкции и функции, давайте вернемся к нашей программе « Hello world » и более подробно рассмотрим, что делает каждая строка.

Строка 1 – это особый тип строки, называемый директивой препроцессора. Эта директива препроцессора указывает, что мы хотели бы использовать содержимое библиотеки iostream , которая является частью стандартной библиотеки C++, которая позволяет нам читать и записывать текст из и в консоль. Эта строка нужна нам для использования std::cout в строке 5. Удаление этой строки привело бы к ошибке компиляции в строке 5, поскольку иначе компилятор не узнал бы, что такое std::cout .

Строка 2 пустая и игнорируется компилятором. Эта строка существует только для того, чтобы сделать программу более удобочитаемой для людей (путем разделения директивы препроцессора #include и последующих частей программы).

Строка 3 сообщает компилятору, что мы собираемся написать (определить) функцию с именем main . Как вы узнали ранее, каждая программа на C++ должна иметь функцию main , иначе она не сможет компилироваться.

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

Строка 5 – это первая инструкция в функции main и первая инструкция, которая будет выполняться при запуске нашей программы. std::cout (что означает «вывод символов») и оператор << позволяют нам отправлять буквы или числа на консоль для вывода. В этом случае мы отправляем текст « Hello world! », который будет выведен на консоль. Эта инструкция создает видимый вывод программы.

Строка 6 – это инструкция (оператор) возврата. Когда выполняемая программа завершает работу, она отправляет значение обратно в операционную систему, чтобы указать, успешно она выполнилась или нет. Этот конкретный оператор return возвращает операционной системе значение 0, что означает «всё прошло хорошо!». Это последняя выполняемая инструкция в программе.

Все программы, которые мы напишем, будут следовать этому общему шаблону или его разновидностям.

Примечание автора

Если часть (или всё из) приведенного выше объяснения сбивает вас с толку, то этого можно было ожидать на данном этапе. Это было просто для краткого обзора. В последующих уроках будут подробно рассмотрены все вышеперечисленные темы с большим количеством дополнительных объяснений и примеров.

Вы можете скомпилировать и запустить эту программу самостоятельно, и вы увидите, что она выводит на консоль следующее:

Если у вас возникнут проблемы при компиляции или запуске этой программы, ознакомьтесь с уроком «0.8 – Несколько основных проблем C++».

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

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

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

Давайте посмотрим, что произойдет, если мы опустим точку с запятой в строке 5 программы «Hello world», например:

Не стесняйтесь компилировать самостоятельно эту плохо сформированную программу.

Visual Studio выдает следующую ошибку (ваш компилятор может генерировать сообщение об ошибке с другой формулировкой):

Это означает, что у вас есть синтаксическая ошибка в строке 6: компилятор ожидал точку с запятой перед оператором return , но не нашел ее. Хотя компилятор сообщит вам, какую строку кода он компилировал, когда обнаружил синтаксическую ошибку, на самом деле пропуск может быть в предыдущей строке. В этом случае ошибка фактически находится в конце строки 5 (компилятор не обнаружил проблему до строки 6).

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

Вы можете попробовать удалить символы или даже целые строки из программы «Hello world», чтобы увидеть различные типы возникающих ошибок. Попробуйте восстановить отсутствующую точку с запятой в конце строки 5, а затем удалите строки 1, 3 или 4 и посмотрите, что произойдет.

Время для теста

Следующий тест призван укрепить ваше понимание представленного выше материала.

Вопрос 1

Что такое инструкция (statement)?

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

Вопрос 2

Что такое функция?

Функция – это набор инструкций, которые выполняются последовательно.

Вопрос 3

Как называется функция, которая должна быть во всех программах?

Вопрос 4

Где начинается выполнение, когда запускается программа?

Выполнение начинается с первой инструкции внутри функции main .

Вопрос 5

Каким символом часто заканчиваются инструкции в C++?

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

Вопрос 6

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

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

Вопрос 7

Что такое стандартная библиотека C++?

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

Related Posts