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;