Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Использование функций в С++

Использование функций в С++

Презентация использовалась на занятиях профессионального модуля в ОПК СТИ НИТУ МИСиС

21.12.2017

Содержимое разработки

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

Функция – именованная последовательность описаний и операторов, выполняющая некоторое действие. Может иметь параметры и возвращать значение.

Функция должна быть объявлена и определена. Объявление функции (прототип, заголовок) задает имя, тип значения и список формальных параметров. Определение содержит кроме объявления тело функции в фигурных скобках.

Вложенность функций в С++ не допускается!

[ класс ] [inline] тип имя ( [ список параметров ] ) { тело функции } Класс определяет видимость функции extern  - во всех файлах программы (по умолчанию) static – только в файле, в котором ф-ция определена Модификатор inline определяет функцию как встроенную. Компилятор по мере возможности будет вместо вызова функции помещать в точку вызова ее код. Тип может быть любым кроме массива (но может быть указателем  на массив). Если значение не возвращается, используется void Список параметров определяет величины, значения которых передаются в функцию при ее вызове. Элементы списка разделяются запятыми. Для каждого параметра указывается тип и имя. В объявлениях имена можно опускать. Для возврата значения используется оператор    return выражение

[ класс ] [inline] тип имя ( [ список параметров ] )

{ тело функции }

Класс определяет видимость функции

  • extern - во всех файлах программы (по умолчанию)
  • static – только в файле, в котором ф-ция определена

Модификатор inline определяет функцию как встроенную. Компилятор по мере возможности будет вместо вызова функции помещать в точку вызова ее код.

Тип может быть любым кроме массива (но может быть указателем на массив). Если значение не возвращается, используется void

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

Для возврата значения используется оператор

return выражение

 имя (список фактических параметров) Круглые скобки в С++ - операция с максимальным приоритетом // максимум трех чисел #include   int max(int a, int b) ;  int main() { int a, b, c;  cout  Enter three numbers a b c; cout return 0; } int max(int a, int b) { if (a b) return a; else return b; } Вызов функции без параметров: f() " width="640"

имя (список фактических параметров)

Круглые скобки в С++ - операция с максимальным приоритетом

// максимум трех чисел

#include

int max(int a, int b) ;

int main()

{ int a, b, c;

cout Enter three numbers ";

cin a b c;

cout

return 0;

}

int max(int a, int b)

{ if (a b) return a; else return b; }

Вызов функции без параметров: f()

 Все величины, описанные внутри функции, а также ее параметры – локальные.  Область видимости и жизни – тело функции (кроме статических переменных) .  Величины, описанные вне тела функций – глобальные.  Локальные объекты перекрывают глобальные

Все величины, описанные внутри функции, а также ее параметры – локальные.

Область видимости и жизни – тело функции (кроме статических переменных) .

Величины, описанные вне тела функций – глобальные.

Локальные объекты перекрывают глобальные

 Функции в С++ работают только с параметрами – значениями. Только массивы и функции передаются по адресу.  Для передачи параметров по адресу используется либо указатель, либо ссылка.  #include   void f(int i, int* j, int& k) { i++; (*j)++; k++; }  int main() { int i = 1, j = 1, k = 1;  f( i, &j, k);  cout   return 0; }

Функции в С++ работают только с параметрами – значениями. Только массивы и функции передаются по адресу.

Для передачи параметров по адресу используется либо указатель, либо ссылка.

#include

void f(int i, int* j, int& k)

{ i++; (*j)++; k++; }

int main()

{ int i = 1, j = 1, k = 1;

f( i, &j, k);

cout

return 0;

}

Параметры-константы. Значения по умолчанию.  Указание перед именем параметра const запрещает его изменение .  В заголовке у параметров могут быть указаны значения по умолчанию  void f( const int n = 10 );

Параметры-константы. Значения по умолчанию.

Указание перед именем параметра const запрещает его изменение .

В заголовке у параметров могут быть указаны значения по умолчанию

void f( const int n = 10 );

 Передается указатель на первый элемент. Если размер массива не является константой, то он должен передаваться внутрь функции. #include  int sum(int mas[], const int n) { int s = 0;  for (int i = 0; i   return s; } int main() { const int n = 5;  int marks[5] = { 1, 2, 3, 4, 5};  cout   return 0; }

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

#include

int sum(int mas[], const int n)

{ int s = 0;

for (int i = 0; i

return s;

}

int main()

{ const int n = 5;

int marks[5] = { 1, 2, 3, 4, 5};

cout

return 0;

}

m n; int **a, i, j; a = new int * [m]; for ( i = 0; i for ( i = 0; i for (int j = 0; j a[i][j]; cout return 0; } " width="640"

Многомерные массивы передаются как двойные указатели ( int ** a).

#include

int sum(int **a, const int m, const int n)

{ int s = 0;

for (int i = 0; i

for (int j = 0; j

return s;

}

int main()

{ int m, n ;

cin m n;

int **a, i, j;

a = new int * [m];

for ( i = 0; i

for ( i = 0; i

for (int j = 0; j a[i][j];

cout

return 0;

}

1) ? n * fact(n - 1) : 1; } " width="640"

long fact (long n)

{ return (n 1) ? n * fact(n - 1) : 1; }

 Одинаковые имена, но разные типы параметров.  int max (int, int)  char* max (char*, char*)  Автоматическое преобразование типов может  привести к неоднозначности   Функции не могут быть перегружены, если отличаются только модификатором const или использованием ссылки.

Одинаковые имена, но разные типы параметров.

int max (int, int)

char* max (char*, char*)

Автоматическое преобразование типов может привести к неоднозначности

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

Типы данных, определяемые пользователем typedef тип новое_имя [ размер ] Примеры: typedef unsigned long Cardinal; typedef char String [100]; Использование : const Cardinal p = 1000000; String a,b,c;

Типы данных, определяемые пользователем

typedef тип новое_имя [ размер ]

Примеры:

typedef unsigned long Cardinal;

typedef char String [100];

Использование :

const Cardinal p = 1000000;

String a,b,c;

 Перечисления – способ определения числовых констант с различными значениями. Константы, не имеющие явно указанных значений, получают их в порядке возрастания .  enum { список констант }  Пример:  enum {a, b, c=5, d} // a=0, b=1, c=5, d=6  Можно указать имя типа. Тогда переменной этого типа можно присваивать только одну из указанных констант  Пример:  enum year {winter, spring, summer, autumn};  year t;  t = winter;  cout

Перечисления – способ определения числовых констант с различными значениями. Константы, не имеющие явно указанных значений, получают их в порядке возрастания .

enum { список констант }

Пример:

enum {a, b, c=5, d} // a=0, b=1, c=5, d=6

Можно указать имя типа. Тогда переменной этого типа можно присваивать только одну из указанных констант

Пример:

enum year {winter, spring, summer, autumn};

year t;

t = winter;

cout

 Аналог записей Паскаля. Содержат элементы разных типов.  struct [ имя типа ] {    тип1 имя1 ;    тип 2 имя 2;    …  } [ список_переменных ];

Аналог записей Паскаля. Содержат элементы разных типов.

struct [ имя типа ] {

тип1 имя1 ;

тип 2 имя 2;

} [ список_переменных ];

#include  struct student {   char name[30], fam[30], gr[10];   int age; } vasya, group[25], *s; / *  Для инициализации структуры значения полей берут в фигурные скобки * / student masha = {“Mary

#include

struct student {

char name[30], fam[30], gr[10];

int age;

} vasya, group[25], *s;

/ * Для инициализации структуры значения полей берут в фигурные скобки * /

student masha = {“Mary", “Ivanova", "05MOS1",18};

int main()

{ s = &masha;

cout fam; // обращение к полям

}

 Структуры могут передаваться в функции и служить возвращаемым значением. struct ratio {  int m,n;  }; ratio  add (ratio a, ratio b) { ratio c;  c.m = a.m * b.n + a.n * b.m;  c.n = a.n * b.n;  return c; }

Структуры могут передаваться в функции и служить возвращаемым значением.

struct ratio {

int m,n;

};

ratio add (ratio a, ratio b)

{ ratio c;

c.m = a.m * b.n + a.n * b.m;

c.n = a.n * b.n;

return c;

}

 Поля структуры с размером в битах . Размер указывается через двоеточие после имени.  struct flags {    bool iszero:1;    bool isgreat:1;   int palette:6;  };

Поля структуры с размером в битах . Размер указывается через двоеточие после имени.

struct flags {

bool iszero:1;

bool isgreat:1;

int palette:6;

};

 Аналог записей с вариантами. Все поля располагаются по одному и тому же адресу. Длина объединения равна длине наибольшего поля. Используются для экономии памяти. Часто включаются внутрь структур.  Пример:  enum typeworker {student, teacher};  struct worker{   char fam[100];   typeworker wtype;   union department{  char chair[100];    int group;   };  };

Аналог записей с вариантами. Все поля располагаются по одному и тому же адресу. Длина объединения равна длине наибольшего поля. Используются для экономии памяти. Часто включаются внутрь структур.

Пример:

enum typeworker {student, teacher};

struct worker{

char fam[100];

typeworker wtype;

union department{

char chair[100];

int group;

};

};

-80%
Курсы дополнительного образования

Основы HTML

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Использование функций в С++ (52.5 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт

Пользовательское соглашение Политика обработки персональных данных Политика использования файлов cookie
Учителю!
Огромная база учебных материалов на каждый урок с возможностью удаленного управления
Тесты, видеоуроки, электронные тетради