Выполнение каждой программы на c начинается с функции

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

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

Изучение Си в одном видео уроке за час!

Рассмотрим случай, который может иметь место в реальной жизни: вы читаете книгу и вспоминаете, что вам нужно позвонить по телефону. Вы помещаете закладку в свою книгу, совершаете телефонный звонок, а когда заканчиваете телефонный звонок, вы возвращаетесь в место, которое отметили закладкой, и продолжаете читать книгу с того места, где остановились.

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

Функция, инициирующая вызов функции, называется вызывающей функцией или caller, а вызываемая функция – callee.

Пример пользовательской функции

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

тип_возвращаемого_значения идентификатор() // идентификатор заменяется именем вашей функции < // ваш код здесь >

4. Структура программы

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

Каждая программа на языке C++ начинается с оператора #include, например (см. табл. 16):

Оператор #include сообщает компилятору, какие заголовоч­ные файлы (файлы с расширением h) нужно включить в програм­му. Заголовочные файлы — это файлы, которые содержат определения, предоставляемые компилятором для выполнения раз­личных операций (например, операций ввода-вывода, матема­тических операций и т.д.). Заголовочные файлы записаны в фор­мате ASCII, их содержимое можно вывести для просмотра на экран или на принтер из каталога INCLUDE.

Читайте также:
Сайт с рецептами из того что есть в холодильнике программа

Язык C++ с нуля | #14 Функции в c++.

Тело программы состоит из одной или нескольких функций. Каждая программа на C++ содержит главную функцию, с которой начинается выполнение программы. Главная функция начинается с оператора

После оператора начала главной функции следуют операто­ры программы, заключенные в группирующие фигурные скобки <>.

//позволяет перевести из фунтов в метры и сантиметры

float feet, meters, centimeters;

centimeters = feet * 12 * 2.54;

Файл IOMANIP.H, подключаемый в начале программы, содержит объявления трех функций, являющих­ся членами класса ios (базовый в иерархии классов ввода/вывода): setw(), setprecision () и setiosflags(). Функция setw() задает минимальную ширину (в символах) выводимого поля. Функция setprecision () задает число цифр после десятичной точки при выводе чисел с плавающей запятой. Функция setw () вынуждена повторяться три раза, нескольку определяет формат вывода только следующей за ней переменной, после чего все сделанные установки сбрасываются. В отличие от нее функция setios — f lags () вызывается один раз, устанавливая флаг fixed, который задает вывод чисел с плавающей запятой в фиксированном формате, т.е. без экспоненты.

5. Операторы языка C++

Операторы в языке C++ предназначены для описания дей­ствий. Любой оператор может быть помечен меткой. Операто­ры отделяются друг от друга точкой с запятой.

К простым операторам языка C++ относятся оператор присваивания, операторы ввода и вывода данных, оператор перехода.

Оператор присваивания

Оператор присваивания является основным, фундаменталь­ным оператором. Общий вид оператора: имя_переменной=выражение;

Выражение состоит из операндов и операций. Операндом мо­жет быть константа, переменная или функция. Операции объеди­няют операнды и выражения. Перечень операций языка C++ при­веден в приложении 7. Вид выражения однозначно определяет правила его вычисления: действия выполняются слева направо с соблюдением старшинства, указанного в таблице приоритетов (табл. 17).

Наиболее часто используемые в программах математические функции языка C++ находятся в библиотеке math.h, расположен­ной в каталоге INCLUDE. Если вы хотите воспользоваться эти­ми функциями, то в начало программы необходимо включить заголовочный файл: #include

Начальное значение переменной в языке C++ можно присво­ить при ее объявлении, например, int х=16, у=32;

В отличие от других языков программирования в C++ опера­тор присваивания может использоваться в выражениях, которые включают в себя операторы сравнения или логические операто­ры, например: if ((x=x+5)>0) cout«»Bывод»;

В этом примере сначала происходит увеличение переменной на 5, а затем ее значение сравнивается с нулем.

Для того чтобы присвоить одинаковое значение, например 2*k, нескольким переменным, можно воспользоваться операто­ром присваивания: x=y=z=2*k;

В языке C++ есть дополнительные операции присваивания: +=, — = , *=, /=, %=. Например, вместо оператора х=х+5; можно записать: х+=5;

Часто в C++ используются префиксные (до) и постфиксные (после) операции увеличения и уменьшения значений переменных на единицу.

Префиксные операции увеличивают (уменьшают) значение переменной на единицу, а затем используют это значение, напри­мер: х=++у;

В этом примере сначала происходит увеличение на единицу значения переменной у, а затем присваивание этого значения пе­ременной х.

Читайте также:
Программа для учета товаров это

Постфиксные операции сначала используют значение перемен­ной, после чего увеличивают (уменьшают) его, например: х=у- -; В этом примере переменная х получает значение у, после чего у уменьшается на единицу.

Дополнительные операторы присваивания: +=, -=, *=, /=, %=

В языке С++ имеется несколько операторов присваивания. Важнейшим из них, несомненно, является оператор =, который просто присваивает значение выражения, сто­ящего справа от знака, переменной, стоящей слева от знака операции. Другие операторы присваивания обнов­ляют или корректируют значения переменных. В запи­си каждого такого оператора имя переменной стоит слева от знака, а выражение — справа. Переменной присваи­вается новое значение, равное ее старому значению, скорректированному на величину выражения, стоящего справа. Результат зависит от используемой оператора, на­пример:

В представленном выше перечне мы воспользовались простыми числами, но мы вполне могли использовать более сложные выражения: х *= 3 * у 4- 12 то же самое, что и х = х*(3*у + 12)

Операторы присваивания, которые мы только что об­судили, обладают таким же низким приоритетом, что и оператор =, т.е. меньший, чем приоритет + или *. Это обстоятельство наглядно проявляется в последнем при­мере, когда 12 прибавляется к 3 * у, а после этого ре­зультат умножается на х.

Операции приращения и уменьшения.

Есть две разновидности префиксная форма ++а и постфиксная форма а++.

/* postjpre.c — постфиксная и префиксная формы */

int main(void)

int aplus, plusb;

aplus = a++; /* постфиксная форма */

plusb = ++b; /* префиксная форма */

return (0);

Если ваш компилятор работает корректно, получается следующий результат:

a aplus b plusb

Как и предполагалось, значение обеих переменных а и b увеличилось на 1. Однако переменной aplus значе­ние было присвоено перед изменением величины а, в то же время переменная plusb получила значение b уже после того, как была изменена величина b. В этом и зак­лючается различие между постфиксной и префиксной формами (рис. 5.5).

aplus = а++; /* постфиксная форма: а подвергается изменению после того, как ее значение использовано */

plusb = ++b; /* префиксная форма: b подвергается изменению перед тем, как ее значение использовано */

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

Каждой форме операции приращения соответствует операции уменьшения (декремента), при этом вместо ++,

— — count; /* префиксная форма операции уменьшения

count — -; /* постфиксная форма операции уменьшения

Источник: studfile.net

Функция main и выполнение программ

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

Читайте также:
Что делает программа транслятор

К функции применяется несколько ограничений main , которые не применяются к другим функциям C. Функция main :

  • Не может быть объявлен как inline .
  • Не может быть объявлен как static .
  • Не может быть принято его адрес.
  • Не удается вызвать из программы.

Сигнатура main функции

Функция main не имеет объявления, так как она встроена в язык. Если это так, синтаксис объявления для main будет выглядеть следующим образом:

int main( void ); int main( int argc, char *argv[ ] ); int main( int argc, char *argv[ ], char *envp[ ] );

Функция main объявляется неявно с помощью одной из этих сигнатур. При определении main функции можно использовать любую из этих сигнатур. Компилятор Майкрософт также позволяет main иметь тип возвращаемого void значения, если значение не возвращается. Параметры argv и envp можно wmain также определить как тип char** . Дополнительные сведения о аргументах см. в разделе Описание аргумента.

Примечания

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

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

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

Если вы хотите передать сведения в функцию main , параметры обычно называются argc и argv , хотя компилятор C не требует этих имен. Как правило, если третий параметр передается в main , этот параметр называется envp . Типы для argc , argv и envp определяются языком C. Можно также объявить argv как char** argv и envp как char** envp . В приведенных ниже в данном разделе примерах описывается использование этих трех параметров для доступа к аргументам командной строки. Эти параметры объясняются в следующих разделах.

Если ваш код соответствует модели программирования в Юникоде, в качестве точки входа в программу можно использовать версию расширенных символов main wmain майкрософт , . Дополнительные сведения об этой версии с расширенными символами main см. в разделе Использование wmain .

main Прекращения

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

Источник: learn.microsoft.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru