Конспект лекций Часть II одесса, 2003
Download 0.65 Mb. Pdf ko'rish
|
atki188 c konspekt 2
Функции
С увеличением объёма программы становится невозможным удер- живать в памяти все её детали. Естественным способом борьбы со сложно- стью любой задачи является её разбиение на части. В С++ задача может быть разделена на более простые и понятные с помощью функций, после чего про- грамму можно рассматривать на уровне взаимодействия функций. Это важно, поскольку человек способен помнить ограниченное число фактов. Использо- вание функций является первым шагом к повышению степени абстракции программы и ведёт к упрощению её структуры. Разделение программы на функции позволяет также избежать напи- сания аналогичных частей кода, поскольку функцию записывают один раз, а вызывать её на выполнение можно многократно из разных точек программы. Функцию можно рассматривать как операцию, определённую поль- зователем. В общем случае она задаётся своим именем. Функция может при- нимать параметры и возвращать значение. Любая программа в С++ состоит из функций, одна из которых долж- на иметь имя main (с неё начинается выполнение программы). Функция на- чинает выполняться в момент вызова. Любая функция должна быть объявле- на и определена. Как и для других величин, объявлений может быть несколь- ко, а определение только одно. Объявление функции должно находиться в тексте раньше её вызова для того, чтобы компилятор мог осуществить про- верку правильности вызова. В объявлении функции (прототипе, заголовке, сигнатуре) описыва- ется её интерфйс. Он содержит все данные о том, какую информацию должна получать функция (список параметров) и какую информацию она возвраща- ет. Определение функции содержит, кроме объявления, тело функции, пред- ставляющее собой последовательность операторов и описаний в фигурных скобках: тип имя ([список_параметров]) {тело_функции} • Тип возвращаемого значения может быть любым, кроме массива и функ- ции (но может быть указателем на массив или функцию). Если функция не должна возвращать значение, указывается тип void. • Список параметров определяет величины, которые требуется передать в функцию при её вызове. Элементы списка параметров разделяются запя- тыми. Для каждого параметра, передаваемого в функцию, указывается тип и имя (в объявлении имена можно опускать). • Тело функции – действия, которые производит функция. В определении, в объявлении и при вызове одной и той же функции порядок следования параметров должны совпадать. Одесский колледж компьютерных технологий “СЕРВЕР” 5 Тип возвращаемого значения и типы параметров совместно опреде- ляют тип функции. Возврат значения из функции в вызывавшую её функцию реализует- ся оператором return [выражение]; Если функция описана как void, выражение не указывается. Примеры: int f1() {return 1;} //правильно void f2() {return 1;} //неправильно, f2 не должна возвращать значение double f3 {return 1;} //правильно, 1 преобразуется к типу double Чтобы использовать функцию, не требуется знать, как она работает – достаточно знать, как её вызывать. Это всё равно, что телевизор – вовсе не обязательно разбираться в электротехнике, главное знать, как его включить. Для использования функции тоже требуется знать только её интер- фейс. Для вызова функции нужно указать её имя, за которым в круглых скоб- ках через запятую перечисляются имена передаваемых аргументов. Вызов функции может находиться в любом месте программы, где по синтаксису допустимо выражение того типа, который формирует функция. Если тип воз- вращаемого значения не void, она может входить в состав выражений или, в частном случае, располагаться в правой части оператора присваивания. Пример функции, возвращающей сумму двух целых величин: #include int sum (int a, int b); //объявление функции int main(){ int a=2, b=3, c,d; c=sum(a,b); //вызов функции cin>>d; cout< return 0; } int sum(int a, int b){ //определение функции return (a+b); } Пример функции, выводящей на экран поля переданной ей структуры: #include struct Worker{ char fio[30]; int date, code; double zarplata; }; void print_worker(Worker); //объявление функции |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling