W06_funkcje_parametry.doc

(60 KB) Pobierz
Funkcje operujace na pamięci, łańcuchy

Funkcja ® wysoce niezależny blok definicji i instrukcji programu  (podprogram)

Każdy program napisany w języku C/C++ zawiera przynajmniej jedną funkcję o predefiniowanej nazwie: main( ). Najczęściej wykorzystuje się również wiele innych predefiniowanych funkcji np. printf(...), scanf(...), abs(...), sin(...), itp.
Można również definiować nowe-własne funkcje.

Składnia definicji funkcji:

              zwracany_typ  NAZWA_FUNKCJI (  lista parametrów  )

              {

                            instrukcja lub sekwencja instrukcji ;

              }

przykład:

              int  MAX ( int liczba_1 ,  int liczba_2  )

              {

                            if( liczba_1 > liczba_2 )

                                          return liczba_1 ;

                            else

                                          return liczba_2 ;

              }

Þ          lista parametrów może być pusta lub zawierać opisy kolejnych parametrów (pooddzielane przecinkami):

main( )          main( void )          main( int argc , char* argv[ ] )

Þ          parametry definiowane są tak jak zmienne. Uwaga: nie można grupować sekwencji parametrów tego samego typu:

int MAX ( int liczba_1, liczba_2 )    ¬   źle !

Þ          „ciało” funkcji jest zawarte pomiędzy nawiasami: { ... }  (bez średnika na końcu)

Þ          działanie funkcji kończy się po napotkaniu polecenia return lub po wykonaniu sekwencji wszystkich instrukcji zawartych w ciele funkcji,

Þ          jeżeli funkcja jest typu void, to używamy samego słowa return, bez żadnego wyrażenia po nim,

Þ          jeżeli funkcja jest typu innego niż void to po poleceniu return musi się pojawić wyrażenie odpowiedniego typu (może być w nawiasach), np.:

return liczba_1;         lub         return( liczba_1 ) ;

 

Prototyp funkcji ® deklaracja „uprzedzająca”, określa tylko nazwę funkcji oraz typy zwracanej wartości i parametrów (sam nagłówek funkcji zakończony średnikiem)

 

Deklaracja funkcji jest konieczna w przypadkach, gdy wywołanie funkcji występuje wcześniej niż jej definicja. Np.

 

              // program wyznaczający maksimum 3 liczb poprzez wywołanie funkcji MAX

 

              #include <stdio.h>

 

              int  MAX (  int ,  int ) ;              // Prototyp - deklaracja funkcji MAX

 

 

              void main( void )

              {

                            int a , b , c , m. ;

                            printf( " Podaj liczbe A = " );

                            scanf( " %d " , &a );

                            printf( " Podaj liczbe B = " );

                            scanf( " %d " , &b );

                            printf( " Podaj liczbe C = " );

                            scanf( " %d " , &c );

 

                            m = MAX( a , b );              // Wywolanie funkcji MAX

 

                            printf( " \n\nMaksimum z liczb A i B rowna sie = %d " , m ) ;

 

                            printf( " \n\nMaksimum z liczb B i C rowna sie = %d " , MAX( b,c ) ) ;

 

                            printf( " \n\nMaksimum z A,B,C rowna sie = %d " ,  MAX( a, MAX(b,c) ) ) ;

 

                            flushall();

                            getchar();

              }

 

 

 

              int  MAX (  int liczba_1,  int liczba_2 )              // Definicja funkcji MAX

              {

                            if( liczba_1 > liczba_2 )

                                          return liczba_1 ;

                            else

                                          return liczba_2 ;

              }

M.Piasecki: INFORMATYKA 1               - 1 -              (W6) Definiowanie własnych funkcji


FUNKCJE / PRZEKAZYWANIE PARAMETRÓW

1.              Funkcja bezparametrowa nie zwracająca żadnej wartości

              void nazwa_funkcji(void)        

              {

                            · · ·                           

                            return;  // powoduje natychmiastowe zakończenie wykonywania funkcji

              }                                                          // na końcu funkcji można pominąć             

 

przykład

              void odwrotność(void)

              {                                                                                                                // obliczenie odwrotności liczby wczytanej z klawiatury

                            double liczba;

                            scanf( ”%lf” , &liczba );

                            if( liczba == 0 )

                                          return;

                            printf( ”%f” , 1/liczba );

                            return;                            // to  «return»  można pominąć

              }

 

2.              Funkcja pobierająca parametr i zwracająca wartość

UWAGA !  w języku C parametry przekazywane są tylko przez wartość

              tzn. po wywołaniu funkcji tworzone są nowe zmienne (lokalne),

              których zawartość inicjowana jest wartościami parametrów

              (zmiennych, stałych lub wyrażeń) podanych przy wywołaniu.

przykład a)

              double odwrotność( double liczba )              // definicja funkcji «odwrotność»

              {

                            if( liczba == 0 )

                                          return( 0 );

                            else

                                          return( 1/liczba );

              }

 

              void main( void )

              {

                            double x=10, y;

                            y = odwrotnosc( 20 );      // przykłady wywoływania funkcji «odwrotnosc»

                            y = odwrotnosc( x );

                            odwrotnosc(  3*(15-x)  );

              }

przykład b)

...

Zgłoś jeśli naruszono regulamin