Tip имя ( формальные параметры)

{

return (выходная переменная);

}

После оператора заголовка ; не ставится !!!!!!

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

Формальный параметр записывается следующим образом

ТИП: ИМЯ. Для обращения к функции используется формат dd=имя() или непосредственно из выражения, где dd-имя переменной .

У функции могут быть внутренние переменные, которые также должны быть обьявлены внутри функции. Эти переменные являются локальными. Если имя глобальной совпадает с локальной то преимущество отдается локальной.

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

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

При записи заголовка функции в качестве прототипа в конце ; ставится !!!. Напоминание в самой функции нет !!!!!

42 вопрос *** Обмен данных с функцией

Обмен данными между вызывающей программой и функцией может осуществляться 3 методами

1. по значению

2. с помощью указателей *

3. с помощью адресов (ссылок) &

При помощи первого метода данные могут передаваться только в одном направлении из вызывающей программы в функцию , в обратном направлении не допустимо !!!!!

При помощи второго и третьего методов в обеих направлениях!!!!!!

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

1. Пример Передача параметров по значению

#include <stdio.h>

int iadder(int ix, int iy); // prototype

main ()

{

int ia=23;

int ib=13;

int ic;

ic=iadder(ia,ib);// вызов функции

printf(“summa=%d\n”,ic);

}

int iadder (int ix,int iy) // заголовок

{

int iz;

iz=ix+iy;

return(iz);

}

2. Пример передачи параметров посредством указателей ( с и с++)

#include <stdio.h>

int iadder(int *px, int *py); // prototype

int main ()

{

int ia=23;

int ib=13;

int ic;

ic=iadder(&ia,&ib);

printf("summa=%d\n",ic);

return(0);

}

int iadder (int *ix, int *iy)

{

int iz;

iz=*ix+*iy;

return(iz);

}

3. Передача параметров посредством адресов (ссылок) (только в с++_)

#include <stdio.h>

int iadder(int &px, int &py); // prototype

int main ()

{

int ia=23;

int ib=13;

int ic;

ic=iadder(ia,ib);

printf("summa=%d\n",ic);

return(0);

}

int iadder (int &ix,int &iy)

{

int iz;

iz=ix+iy;

return(iz);

}

43 вопрос *** Передача массивов в функцию

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

Пример Передача массивов с помощью указателей

#include <stdio.h>

int vag (int *b, int n); // prototype

main ()

{

int a[7]={2,4,5,12};

int s1;

s1=vag(a,2);

printf("summa=%d\n",s1);

return(0);

}

int vag (int *b,int n)

{

int s=0,i;

for (i=0;i<=n;i++)

s=s+b[i];

return(s);

}

Пример Передача массивов стандартным способом

#include <stdio.h>

int vag (int b[],int n); // prototype

int main ()

{

int a[7]={2,4,5,12};

int s1;

s1=vag(a,2);

printf("summa=%d\n",s1);

return(0);

}

int vag (int b[],int n)

{

int s=0,i;

for (i=0;i<=n;i++)

s=s+b[i];

return(s);

}

Пример Решение квадратного уравнения

#include <stdio.h>

#include <math.h>

float x1(float &a,float &b,float &c,float &x2);

main()

{float a1=1,b1=-5,c1=6,z1,z2;

z1=x1(a1,b1,c1,z2);

printf ("%8.2f %8.2f",z1,z2);

}

float x1(float &a,float &b,float &c,float &x2)

{float d,w;

d=b*b-4*a*c;

if (d<0)

{

printf ("ответа нет");

x2=0;

w=0;

return(w);

}

else

{x2=(-b+sqrt(d))/(2*a);

w=(-b-sqrt(d))/(2*a);

return (w);

}

}

44 вопрос *** Передача данных с помощью глобальных переменных

Этот пример иллюстрирует механизм передачи данных с помощью глобальных переменных.

Пример

#include <stdio.h>

int vag (int b[], int n); // prototype

int cc=10; // глобальные используются везде

int main ()

{

int a[7]={2,4,15,12,10,8,4};

int s1;

s1=vag(a,7);

printf("summa=%d\n",s1);

return(0);

}

int vag (int b[],int n)

{

printf("n=%d\n",n);

int s=0,i;

for (i=0;i<n;i++)

if (b[i]<=cc) s=s+b[i];

return(s);

}

45 вопрос ***Структуры

Структуры как и массивы относятся к сложным типам данных и строятся на основе простых.

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

Пример

struct dataw

{

int day // den

int month // mesac

int year // god

};

Здесь определена структура data w которая задает дату состоящую из трех полей. После того как структура определена, можно определять переменные этого типа

Dataw farida, aytan; // здесь обявлены 2 переменные типа dataw

Данные типа структура могут быть инициализированы

dataw vagif={25,12,1952}; // определена переменная vagif и инициализирована

Для обращения к отдельным полям структуры используется операция. (точка) или ->.

farida.day=23;

aytan.month=10;

Наши рекомендации