teoria
.pdf1.Алгоритм – свойства, базовые структуры, представление на языке С++.
2.Арифметические типы данных. Арифметические операторы. Арифметические выражения.
3.Логические типы данных. Логические операторы. Операторы сравнения. Логические выражения.
4.Структуры.
5.Операторы цикла (параметрический, с предусловием, с постусловием)
6.Оператор условного перехода.
7.Операторы переходов (goto, break, сontinue, return).
8.Массивы (одномерные и многомерные).
9.Форматный ввод/вывод.
10.Указатели.
11.Динамические переменные.
12.Одномерные динамические массивы.
13.Функции. Прототипы функций.
14.Функции, возвращающие результат.
15.Функции типа void.
16.Передача параметров функции по значению, по ссылке, с использованием указателей.
17.Параметры функции – простые переменные, массивы, структуры, функции.
18.Глобальные и локальные переменные.
19.Основные файлы проекта в среде С++ Builder.
20.Структура файла реализации в среде С++ Builder.
21.Многофайловые программы.
22.Двоичные файлы.
23.Текстовые файлы.
24.Компоненты Form, Button, Edit, Lable в среде С++ Builder.
25.Компонента StringGrid в среде С++ Builder.
26.Компоненты SaveDialog, OpenDialog.
27.Графика в C++
1) Алгоритм – свойства, базовые структуры, блок-схема, псевдокод, запись на языке C++. Алгоритм - это последовательность операций. Что за чем мы должны сделать, чтобы получить какой-то результат. [Свойства алгоритмов: Дискретность – поочередное выполнение команд алгоритма за конечное число шагов приводящее к решению задачи. Определенность – каждая команда алгоритма должна однозначно определять действие исполнителя. Понятность – алгоритм, составленный для конкретного исполнителя, должен включать только те команды, которые входят в его систему команд. Результативность – исполнение алгоритма должно закончиться за конечное число шагов.] Блок-схемой называют графическое представление алгоритма, в котором он изображается в виде последовательности связанных между собой функциональных блоков, каждый из которых соответствует выполнению одного или нескольких действий. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. Псевдокод представляет собой систему обозначений и правил, предназначенную для единообразной записи алгоритмов.Псевдокод занимает промежуточное место между естественным и формальным языками. С одной стороны, он близок к обычному
естественному языку, поэтому алгоритмы могут на нем записываться и читаться как обычный текст. С другой стороны, в псевдокоде используются некоторые формальные конструкции и математическая символика, что приближает запись алгоритма к общепринятой математической записи.В псевдокоде не приняты строгие синтаксические правила для записи команд, присущие формальным языкам, что облегчает запись алгоритма на стадии его проектирования и дает возможность использовать более широкий набор команд, рассчитанный на абстрактного исполнителя.
2) Основные арифметические типы данных( int, float, double, char + модификаторы)
Основные арифметические типы данных:-целочисленные-с плавающей точкойChar-символыInt- целочисленные Float-вещественные Double-вещественные с двойной точностьюVoid-отсутствие значенияBool-логический (true или false)Модификаторы:Short
Long Signed Unsigned Производные типы данных: -массивы –структуры –объединения –ссылки - указатели -функции Основные арифметические операции -бинарные-унарные «+» сложение «-» вычитание «*» умножение
«/» деление «%» остаток целочисленного деления Префиксная операция-знак операции стоит перед операндом.
Постфиксная - знак операции стоит после операнда. Префиксная операция увелечение/уменьшение – сначала увел./умен. Значение своего операнда, затем использует его в вычислениях. Постфиксная – наоборот. Операции присваивания x=y ―=‖ – присвоить х=5 ; х+=у; х=х+у + - сложение; sum - - вычитание; razn * - умножение; pow / - деление; div % - остаток от деления. sin(x) cos(x) tan(x) asin(x) acos(x) Опера́нд (0003008091008091807180англ. operand) в языках программирования ―
аргумент операции;данные, которые обрабатываются командой Порядок вычисления выражений: каждой операции имеется приоритет. Если в выражении неск. Операций то первая выполняется та, у которой более высокий приоритет, если приоритеты равны то операции выполняются слева направо
Тип результата: Типом результата является тип операнда после преобразования.
3) Логический тип данных логические операторы.
Так как bool используется исключительно для хранения результатов логических выражений. У логического выражения может быть один из двух результатов true или false. true - если логическое выражение истинно, false - если логическое выражение ложно.Константе true эквивалентны все числа от 1 до 255 включительно, тогда как константе false эквивалентно только одно целое число
— 0. '==' (равно) '!=' не равно '<' (меньше) '>' (больше) '<=' (меньше или равно) '>=' (больше или равно).'!' - логическое трицание '&&' - логическое "И" (пересечение): результат равен TRUE тогда и только тогда, когда равны TRUE оба операнда, и равен FALSE во всех остальных случаях. '||' - логическое "ИЛИ" (объединение): результат равен FALSE тогда и только тогда, когда равны FALSE оба операнда, и равен TRUE в любом другом случае
4) Структуры.
Структуры в С++ используются для логического и физического объединения данных произвольных типов, так же как массивы служат для группирования данных одного типа. Определение структуры вводит новый пользовательский тип в программу, который может быть использован так же, как любой встроенный тип.
В приведѐнном примере созданы три переменные –
counter типа int, direction типа vec3 и length типа double. Каждая переменная типа vec3состоит из трѐх членов: x, y и z, значения которых уникальны для каждой переменной vec3, также как уникальны значения каждой переменной типа int или double.
Доступ к членам структуры осуществляется посредством оператора . (точка):
1:direction.x = 0;
2:direction.y = 0;
3:direction.z = 1;
Формой записи, используемой при инициализации массива, можно воспользоваться и при инициализации членов структуры:
1:vec3 normal={0.0,0.0,0.0};
Использование структурСтруктуры в С++ используются для логической или физической группировки объектов, имеющих общий контекст. Наиболее очевидным использованием является создание пользовательских типов данных, упрощающих написание, понимание и сопровождение программы.Использование структур при написании собственных типов данных рекомендуется в том случае, если выполняется ряд условий:Создаваемый тип данных не имеет собственного поведения. То есть объек такого типа рассматривается как пассивный набор данных.Члены данных создаваемого типа данных не могут находиться во взаимно противоречивом состоянии. То есть любая комбинация значений членов структуры является допустимой.Для более сложных пользовательских типов данных в языке С++ используются классы.
Структуры позволяют достаточно эффективно решить вопрос возврата множества значений из функции. Если функция должна вернуть несколько значений в качестве результата, то их достаточно поместить в структуру и возвращать значение указанного типа.
Вэтом случае вызывающая функция будет получать результат типа Point, содержащий два значения – координаты x и y курсора:
Вкачестве типов членов структуры могут использоваться ранее объявленные пользовательские типы.
Объекты структур можно присваивать, передавать в качестве аргументов и возвращать в качестве значений функций. Другие операторы (такие как == и != не определены). Объекты структур могут являться элементами массивов.
До того, как будет изучен материал по классам, необходимо использовать структуры для описания пользовательских типов данных во всех случаях, когда это позволяет улучшить читаемость программы.
5) Оператор цикла параметрический.
1) Цикл с параметром (for - оператор) является разновидностью цикла с предусловием. Особенностью данного типа цикла является то, что в нем имеется параметр, начальное значение которого задается в заголовке цикла, там же задается условие продолжения цикла и закон изменения параметра цикла. Механизм работы полностью соответствует циклу с предусловием, за исключением того, что после выполнения тела цикла происходит изменение параметра по указанному закону и только потом переход на проверку условия.Цикл с предусловием (while - оператор)Если тело цикла расположено после проверки условий , то может случиться, что при определенных условиях тело цикла не выполнится ни разу. Такой вариант организации цикла, управляемый предусловием, называется циклом c предусловием.
Цикл с предусловием (while - оператор)Если тело цикла расположено после проверки условий , то может случиться, что при определенных условиях тело цикла не выполнится ни разу. Такой вариант организации цикла, управляемый предусловием, называется циклом c предусловием.Цикл с постусловием (do while - оператор) Возможен другой случай, когда тело цикла выполняется по крайней мере один раз и будет повторяться до тех пор, пока не станет ложным условие. Такая организация цикла, когда его тело расположено перед проверкой условия, носит название цикла с постусловием
6. Оператор условного перехода.
Оператор if используется для того, чтобы определить действия программы при различных условиях. Например у нас есть число. И если оно четное нам нужно его удвоить, а иначе разделить пополам. Для написания подобной программы и используется оператор if.
В самой простой вариации он будет иметь следующую форму
1
2
В этом случае если условие выполняется , то программа совершит некоторое действие. Например:
1
2
Что если мы захотим при невыполнении основного условия сделать что-нибудь другое? Для этого используется структура if() ; else ;
1if(a == 2) cout << a;
2else cout << 0;
Ачто если при невыполнении первого условия нам нужно проверять еще что-то? Приведем пример из жизни. Если на улице солнечно то мы можем одеть футболку. А если нет? То мы еще должны посмотреть на улице просто пасмурно, или идет дождь, или может даже снег. Для подобных ситуаций в программировании мы можем использовать структуру
if() ; else if() ; else ;
1 |
if(a > 100) cout << 3; |
2 |
else if(a > 50) cout << 2; |
3 |
else if(a >= 0) cout << 1; |
4 |
else cout << 0; |
7. Операторы переходов (goto, break, сontinue, return).
В структурном программировании признаются полезными "переходы вперед" (но не назад), позволяющие при выполнении некоторого условия выйти из цикла, из оператора выбора, из блока. Для этой цели можно использовать оператор goto, но лучше применять специально предназначенные для этих целей операторы break и continue.
Оператор break может стоять в теле цикла или завершать case - ветвь в операторе switch. Пример его использования в операторе switch уже демонстрировался. При выполнении оператора break в теле цикла завершается выполнение самого внутреннего цикла. В теле цикла, чаще всего, оператор break помещается в одну из ветвей оператора if, проверяющего условие преждевременного завершения цикла.
Оператор continue используется только в теле цикла. В отличие от оператора break, завершающего внутренний цикл, continue осуществляет переход к следующей итерации этого цикла.
Еще одним оператором, относящимся к группе операторов перехода, является оператор return, позволяющий завершить выполнение процедуры или функции. Его синтаксис:
return [выражение];
Для функций его присутствие и аргумент обязательны, поскольку выражение в операторе return задает значение, возвращаемое функцией.
8) Статистические массивы.
Статические массивы (одномерные и многомерные). Одномерный массив — массив, с одним параметром, характеризующим количество элементов одномерного массива. Фактически одномерный массив — это массив, у которого может быть только одна строка, и n-е количество столбцов. В двумерном массиве, кроме количества элементов массива, есть такие характеристики как, количество строк и количество столбцов двумерного массива. То есть, визуально, двумерный
массив — это обычная таблица, со строками и столбцами. Фактически двумерный массив — это одномерный массив одномерных массивов
9.Форматный вывод-ввод
Функция printf переводит внутренние значения в текст. int printf(char *format, arg1, arg2, ...)
В предыдущих главах мы использовали printf неформально. Здесь мы покажем наиболее типичные случаи применения этой функции: полное ее описание дано в приложении B.
Функция printf преобразует, форматирует и печатает свои аргументы в стандартном выводе под управлением формата. Возвращает она количество напечатанных символов.
Форматная строка содержит два вида объектов: обычные символы, которые напрямую копируются в выходной поток, и спецификации преобразования, каждая из которых вызывает преобразование и печать очередного аргумента printf. Любая спецификация преобразования начинается
знаком % и заканчивается символом-спецификатором. Между % и символом-спецификатором могут быть расположены (в указанном ниже порядке) следующие элементы:
·Знак минус, предписывающий выравнивать преобразованный аргумент по левому краю поля.
·Число, специфицирующее минимальную ширину поля. Преобразованный аргумент будет занимать поле по крайней мере указанной ширины. При необходимости лишние позиции слева (или справа при левостороннем расположении) будут заполнены пробелами.
·Точка, отделяющая ширину поля от величины, устанавливающей точность.
·Число (точность), специфицирующее максимальное количество печатаемых символов в строке, или количество цифр после десятичной точки - для чисел с плавающей запятой, или минимальное количество цифр - для целого.
·Буква h, если печатаемое целое должно рассматриваться как short, или l (латинская буква ell), если целое должно рассматриваться как long.
Функция scanf, обеспечивающая ввод, является аналогом printf; она выполняет многие из упоминавшихся преобразований, но в противоположном направлении. Ее объявление имеет следующий вид:
int scanf(char *format, ...)
Функция scanf читает символы из стандартного входного потока, интерпретирует их согласно спецификациям строки format и рассылает результаты в свои остальные аргументы.
Аргумент format мы опишем позже; другие аргументы, каждый из которых должен быть указателем, определяют, где будут запоминаться должным образом преобразованные данные. Как и для printf, в этом параграфе дается сводка наиболее полезных, но отнюдь не всех возможностей данной функции.
Функция scanf прекращает работу, когда оказывается, что исчерпался формат или вводимая величина не соответствует управляющей спецификации. В качестве результата scanf возвращает количество успешно введенных элементов данных. По исчерпании файла она выдаетEOF. Существенно то, что значение EOF не равно нулю, поскольку нуль scanf выдает, когда вводимый символ не соответствует первой спецификации форматной строки. Каждое очередное обращение к scanf продолжает ввод символа, следующего сразу за последним обработанным.
Существует также функция sscanf, которая читает из строки (а не из стандартного ввода). int sscanf(char *string, char *format, arg1, arg2, ...)
Функция sscanf просматривает строку string согласно формату format и рассылает полученные значения в arg1, arg2 и т. д. Последние должны быть указателями.
Формат обычно содержит спецификации, которые используются для управления преобразованиями ввода. В него могут входить следующие элементы:
·Пробелы или табуляции, которые игнорируются.
·Обычные символы (исключая %), которые, как ожидается, совпадут с очередными символами, отличными от символов-разделителей входного потока.
·Спецификации преобразования, каждая из которых начинается со знака % и завершается символом-спецификатором типа преобразования. В промежутке между этими двумя символами в любой спецификации могут располагаться, причем в том порядке, как они здесь указаны: знак * (признак подавления присваивания); число, определяющее ширину поля; буква h, l или L, указывающая на размер получаемого значения; и символ преобразования (o, d, x).
Спецификация преобразования управляет преобразованием следующего вводимого поля. Обычно результат помещается в переменную, на которую указывает соответствующий аргумент. Однако если в спецификации преобразования присутствует *, то поле ввода пропускается и никакое присваивание не выполняется. Поле ввода определяется как строка без символов-разделителей; оно простирается до следующего символа-разделителя или же ограничено шириной поля, если она задана. Поскольку символ новой строки относится к символамразделителям, то sscanf при чтении будет переходить с одной строки на другую. (Символами-разделителями являются символы пробела, табуляции, новой строки, возврата каретки, вертикальной табуляции и перевода страницы.)
Символ-спецификатор указывает, каким образом следует интерпретировать очередное поле ввода. Соответствующий аргумент должен быть указателем, как того требует механизм передачи параметров по значению, принятый в Си. Символы-спецификаторы приведены в таблице 7.2.
Перед символами-спецификаторами d, l, o, u и x может стоять буква h, указывающая на то, что соответствующий аргумент должен иметь тип short * (а не int *),или l (латинская ell), указывающая на тип long *. Аналогично, перед символами-спецификаторами e, f и g может стоять буква l, указывающая, что тип аргумента - double * (а не float *).
10) Указатели. Арифметика указателей.
. Указатель – переменная, значением которой является адрес ячейки памяти. То есть указатель ссылается на блок данных из области памяти, причѐм на самое его начало. Указатель может ссылаться на переменную или функцию. Для этого нужно знать адрес переменной или функции. Так вот, чтобы узнать адрес конкретной переменной в С++ существует унарная операция взятия адреса &. Такая операция извлекает адрес объявленных переменных, для того, чтобы его присвоить указателю.
Указатели используются для передачи по ссылке данных, что намного ускоряет процесс обработки этих данных (в том случае, если объѐм данных большой), так как их не надо копировать, как при передаче по значению, то есть, используя имя переменной. В основном указатели используются для организации динамического распределения памяти, например при объявлении массива, не надо будет его ограничивать в размере. Ведь программист заранее не может знать, какого размера нужен массив тому или иному пользователю, в таком случае используется динамическое выделение памяти под массив. Любой указатель необходимо объявить перед использованием, как и любую переменную.
Cin > ввод с клавы, cout << вывод на экран
11) Динамические переменные.
. Переменная — это именованная область памяти, в которой хранятся данные определенного типа. У переменной есть имя и значение. Имя служит для обращения к области памяти, в которой хранится значение. Во время выполнения программы значение переменной можно изменять. Перед использованием любая переменная должна быть описана.Пример описания целой переменной с именем а и вещественной переменной х: int a; float x; Общий вид оператора описания переменных:[класс памяти] [const] тип имя [инициализатор]; Рассмотрим правила задания составных частей этого оператора.Необязательный класс памяти может принимать одно из значений auto, extern, static и register. О них рассказывается чуть ниже.Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют именованной константой, или просто константой.При описании можно присвоить
переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах — со знаком равенства: = значение или в круглых скобках: ( значение )
12) Одномерные динамические массивы.
Динамическое выделение памяти необходимо для эффективного использования памяти компьютера. Например, мы написали какую-то программку, которая обрабатывает массив. При написании данной программы необходимо было объявить массив, то есть задать ему фиксированный размер (к примеру, от 0 до 100 элементов). Тогда данная программа будет не универсальной, ведь может обрабатывать массив размером не более 100 элементов. А если нам понадобятся всего 20 элементов, но в памяти выделится место под 100 элементов, ведь объявление массива было статическим, а такое использование памяти крайне не эффективно.
ВС++ операции |
new |
и |
delete |
предназначены |
для |
динамического |
распределения памяти |
||
компьютера. |
Операция |
new |
выделяет |
память |
из области |
свободной памяти, а |
операция delete высвобождает выделенную память. Выделяемая память, после еѐ использования должна высвобождаться, поэтому операции new и delete используются парами. Даже если не высвобождать память явно, то она освободится ресурсами ОС по завершению работы программы. Рекомендую все-таки не забывать про операцию delete.
Операция new создает объект заданного типа, выделяет ему память и возвращает указатель правильного типа на данный участок памяти. Если память невозможно выделить, например, в случае отсутствия свободных участков, то возвращается нулевой указатель, то есть указатель вернет значение 0. Выделение памяти возможно под любой тип данных: int, float,double, char и т. д.
13) Функции.
Функция - это группа операторов у которой есть имя. Во всех предыдущих уроках, код наших программ располагался в одной функции - main. Функции позволяют разбить программу на небольшие части, каждая из которых выполняет какую-то небольшую задачу. Посмотрите на полный код морского боя (раздел - Листинги). В нѐм больше 500 строк кода. Без функций было бы довольно проблематично написать эту программу. В ней используется 11 функций, самая длинная из которых состоит из 50 строк кода.Обязательными для функции являются два компонента: определение и вызовы.Описание функции состоит из двух основных частей - заголовка функции и тела функции.Заголовок функции содержит указание типа возвращаемого значения, название функции и список формальных параметров, обрамлѐнный круглыми скобками. Если функция не должна возвращать никакого значения, то еѐ тип обозначают void.Тело функции может состоять из простых и/или составных операторов, обращений к другим функциям и заключается в фигурные скобки
14) Функции возвращающие результат.
.Функцию можно рассматривать как операцию, определенную пользователем. В общем случае она задается своим именем. Операнды функции, или формальные параметры, задаются в списке параметров, через запятую. Такой список заключается в круглые скобки. Результатом функции может быть значение, которое называют возвращаемым. Об отсутствии возвращаемого значения сообщают ключевым словом void. Действия, которые производит функция, составляют ее тело; оно заключено в фигурные скобки. Тип возвращаемого значения, ее имя, список параметров и тело составляют определение функции.Функции, возвращающие значение, по завершению своей работы возвращают определѐнный результат. Такие функции могут возвращать значение любого типа данных. Структура функций, возвращающих значение будет немного отличатся от структуры функций рассмотренных ранее./ структура объявления функций возвращающих значения/*возвращаемый тип данных*/ /*имя функции*/(/*параметры функции*/) // заголовок функции{// тело функции return /*возвращаемое значение*/;}Структура объявления функций осталась почти неизменной, за исключением двух строк. В заголовке функции сначала нужно определять возвращаемый тип данных, это может быть тип данных int, если необходимо возвратить целое число или тип данных float - для чисел с плавающей точкой. В общем, любой другой тип данных, всѐ зависит от того, что функция должна вернуть. Так как функция должна вернуть значение, то для этого должен быть предусмотрен специальный механизм, как в строке 5. C C помощью зарезервированного слова return можно вернуть значение, по завершении работы функции. Всѐ, что нужно, так это указать переменную, содержащую нужное значение, или некоторое значение, после оператора return. Тип данных возвращаемого значения в строке 5 должен совпадать с типом данных в строке 2.
15. Функции типа void.
void синтаксически эквивалентен основным типам, но использовать его можно только в производном типе. Объектов типа void не существует. С его помощью задаются указатели на объекты неизвестного типа или функции, невозвращающие значение.
void f(); // f не возвращает значения
void* pv; // указатель на объект неизвестного типа
Указатель произвольного типа можно присваивать переменной типа void*. На первый взгляд этому трудно найти применение, поскольку для void*
недопустимо косвенное обращение (разыменование). Однако, именно на этом ограничении основывается использование типа void*. Он приписывается параметрам функций, которые не должны знать истинного типа этих параметров. Тип void* имеют также бестиповые объекты, возвращаемые функциями. Для использования таких объектов нужно выполнить явную операцию преобразования типа. Такие функции обычно находятся на самых нижних уровнях системы, которые управляют аппаратными ресурсами. Приведем пример:
void* malloc(unsigned size); void free(void*);
void f() // распределение памяти в стиле Си
{
int* pi = (int*)malloc(10*sizeof(int)); char* pc = (char*)malloc(10);
//...
free(pi);
free(pc);
}
Обозначение: (тип) выражение - используется для задания операции преобразования выражения к типу, поэтому перед присваиванием
pi тип void*, возвращаемый в первом вызове malloc(), преобразуется в тип int
16.Передача параметров функции по ссылке и по значению В функцию параметры могут передаваться как по значению, так и по ссылке.
При передаче параметров по значению они при выходе из функции не изменятся. Например, следующий фрагмент напечатет на экране 1 и 3:
...
int func(int k){
k*=2;
return k;
}
void main(){
int z=1, y=3, k;
k=func(z)+func(y);
cout<<z<<" "<<y;
...
При передаче же параметров по ссылке прив выходе из функции из значения могут измениться.
Как, например, в следующем фрагменте:
...
int func(int &k){
k*=2;
return k;
}
void main(){
int z=1, y=3, k;
k=func(z)+func(y);
cout<<z<<" "<<y;
...
После его выполнения на экране напечатается 2 и 6.
Разница между двумя этими фрагментами весьма невелика - всего 1 символ амперсанда (&) в
строке
...
int func(int &k){
...
Еще один классический пример на эту тему - это функция, которая меняет значения своих параметров:
void func(int &n, int &m){
int tmp=n;
n=m;
m=tmp;
}
После выполнения такой функции значения еѐ параметров поменяются местами.
В языках программирования существуют два способа передачи аргументов в подпрограмму. Первый из них известен как перелача параметров по значению (call by value). В этом случае формальному параметру подпрограммы присваевается копия значения аргумента, и все изменения параметра никак не отражаются на аргументе.
Второй способ называется передачей по ссылке (call by reference). При использовании этого метода параметру присваивается адрес аргумента. Внутри подпрогаммы этот адрес открывает доступ к фактическому аргументу. Это значит, что все изменения, которым подвергается параметр, отражаются на аргументе.
По умолчанию в языке C/C++ применяется передача по значению. Как правило, это означает, что код, образующий тело функции, не может изменять аргументы, указанные при ее вызове. Хотя в языке C/C++ по умолчанию прменяется передача параметров по значению, их можно передавать и по ссылке. Для этого в функцию вместо аргумента нужно передать указатель на него. Поскольку функция получает адрес аргумента, ее код может изменять значение фактического аргумента вне функции.Указатели передаются функции как обычные переменные. Естественно, они должны быть объявлены как указатели.
17. Параметры функции – простые переменные, массивы, строки, функции.
Функции, параметры функции в C++
ВC++, как и во всех других процедурных языках, функции нужны, чтобы разделить программу на относительно независимые части и кодировать каждую часть отдельно от других.
Параметры функции
ВC++ параметры передаются функции по значению. Это значит, что если аргумент — переменная, то функция получает копию этой переменной, которая существует лишь пока выполняется тело функции.
Пример. Определить функцию, которая складывает 2 числа и возвращает сумму в вызывающую программу.