6 funkcje id 44102 Nieznany (2)

background image

1

Funkcje

Program w języku C zbudowany jest z funkcji. Definiowanie własnych funkcji ułatwia programowanie

i czyni program bardziej czytelnym. Definicja funkcji może zawierać deklarowany typ funkcji, nazwę,

listę argumentów, deklaracje argumentów oraz treść funkcji wraz z instrukcją return, która zwraca

określoną wartość w miejscu wywołania:

typ nazwa(lista argumentów)
deklaracje argumentów
{
deklaracje i instrukcje funkcji – treść funkcji
return (wyrażenie);
}

Niektóre elementy można pominąć – obowiązkowa jest jedynie nazwa, nawiasy ograniczające listę

argumentów oraz nawiasy klamrowe. Domyślnym typem funkcji jest int. Aby wywołać funkcję, czyli

spowodować wykonanie instrukcji zawartych w treści funkcji należy podać jej nazwę oraz listę

parametrów aktualnych w nawiasach. Przed wywołaniem funkcji musi wystąpić jej definicja lub

deklaracja. Deklaracja funkcji ma postać: typ nazwa();

Argumenty

Argumenty funkcji są przekazywane przez wartość, co oznacza, że wywoływana funkcja dysponuje

kopiami wszystkich argumentów. Są to zmienne lokalne o wartościach odpowiadających wartościom

parametrów aktualnych. Inaczej jest, gdy parametrem jest nazwa tablicy – wówczas do funkcji

przekazany jest adres początku tablicy i w odniesieniu do tej tablicy funkcja działa w tej samej

przestrzeni adresowej, co funkcja wywołująca.

Program z poprzedniego rozdziału można zapisać przy pomocy funkcji:

double f1(double x) // deklaracja parametru funkcji w nagłówku
{
double y; //zmienna lokalna
y=10*x;
return(y);
}
double f2(x)
double x; //oddzielna deklaracja parametru
{
y=-x*x+6;
return (y);
}
double f3(double x)
{
return(x*x*x+3); //funkcja zwraca wyrażenie
}

int main()

background image

2

{
double x,y;
scanf("%lf %lf",&x, &y);
if (y < f1(x) && y < f2(x) && y > f3(x))
printf ("punkt leży w wyznaczonym obszarze\n");
else
printf ("punkt nie leży w wyznaczonym obszarze\n");
}

Argumenty funkcji mogą być zadeklarowane na dwa sposoby: w nagłówku funkcji – jak w funkcji f1 i

f3

lub oddzielnie – jak w przypadku funkcji f2. Ten drugi sposób jest wygodniejszy, gdy liczba

parametrów tego samego typu jest większa od 1, ponieważ umożliwia wielokrotną deklarację (jeden

typ dla wielu nazw zmiennych), jednak taki zapis nie jest dopuszczalny w języku c++.

Dwa sposoby deklarowania argumentów funkcji:

int funkcja1(int a, int b)

{…..}

int funkcja1(a, b)

int a,b;

W pierwszym przypadku konieczne jest powtórzenie słowa kluczowego int dla każdego argumentu.

Wskaźniki jako argumenty funkcji

Za pomocą instrukcji return funkcja zwraca maksymalnie jedną wartość do funkcji wywołującej.

Jeśli chcemy w funkcji policzyć więcej wartości musimy posłużyć się wskaźnikami i sprawić, by funkcja

zwróciła obliczone wartości poprzez argumenty. Wskaźnik jest zmienną zawierającą adres innej

zmiennej. W poniższym przykładzie do rozwiązania rozważanego poprzednio problemu –

rozstrzygania, czy zadany punkt należy do podobszaru ograniczonego przez wykresy funkcji

zastosowano jedną funkcję o nazwie f. Jej parametrami są: współrzędna x punktu, adres zmiennej

F2

(&F2) oraz adres zmiennej F3 (&F3). Bezpośrednio, jak w poprzednich przykładach funkcja f

zwraca wartość odpowiadającą funkcji f1 z poprzedniego przykładu, natomiast wartości

odpowiadające funkcjom f2 i f3 są zapisane w pamięci pod adresami wskazanymi poprzez argumenty

wywołania. Dlatego parametry formalne zadeklarowane są jako wskaźniki, za pomocą operatora *

(oznacza to, że F2 i F3 są adresami zmiennych typu double). Funkcja f pod adres wskazany przez F2

podstawia wartość funkcji f2 dla zadanego parametru x, a pod adres wskazany przez F3 podstawia

wartość funkcji f3.

background image

3

double f(x, F2,F3)
double x,*F2, *F3;
{
double y;
y=10*x;
*F2=-x*x+6;
*F3=x*x*x+3;
return(y);
}

int main()
{
double x,y;
double f1,f2,f3;
scanf("%lf %lf",&x, &y);
f1=f(x,&f2,&f3);
if (y < f1 && y < f2 && y > f3)
printf ("punkt leży w wyznaczonym obszarze\n");
else
printf ("punkt nie leży w wyznaczonym obszarze\n");
}


Wyszukiwarka

Podobne podstrony:
5 ekstrema funkcji id 40709 Nieznany (2)
7 Funkcjonalizm id 44874 Nieznany (2)
Funkcje 5 id 181902 Nieznany
Funkcje 6 id 181903 Nieznany
AMI 14 Funkcje c d id 59050 Nieznany (2)
5 Badanie funkcji id 39644 Nieznany (2)
generator funkcji (1) id 187188 Nieznany
Pochdne funkcji id 364356 Nieznany
Granice funkcji 4 id 195392 Nieznany
C Typy Funkcje id 96656 Nieznany
cwiczenia4 funkcje id 124969 Nieznany
Funkcje 7 id 181904 Nieznany
Laboratorium nr 3 funkcje id 26 Nieznany
CV typ funkcjonalny id 121110 Nieznany
Pochodne funkcji 4 id 364442 Nieznany
5 ekstrema funkcji id 40709 Nieznany (2)
Funkcja opisujaca pop1 id 18182 Nieznany
Bezpieczenstwo funkcjonalne id Nieznany

więcej podobnych podstron