Podstawy programowania. Wykład 3 wprowadzenie do funkcji
Małgorzata Nalbach-Moszyńska
5 Funkcje ............................................................................................................................... 2
5.1 Wywołanie funkcji ...................................................................................................... 2
5.2 Definiowanie funkcji ................................................................................................... 3
5.3 Przekazywanie parametrów ......................................................................................... 6
5.4 Uwagi o tworzeniu funkcji .......................................................................................... 6
1
Podstawy programowania. Wykład 3 wprowadzenie do funkcji
Małgorzata Nalbach-Moszyńska
5 Funkcje
" Podstawowe cegiełki , których buduje się program.
" W każdym programie musi być co najmniej jedna funkcja main.
" Może być wiele definicji i wywołań innych funkcji
5.1 Wywołanie funkcji
#include
#include /*tu są prototypy funkcji matematycznych*/
/* double sqrt(double); prototyp funkcji sqrt-
można zamiast #include */
int main(){ /*funkcja wywołująca */
double arg= 4;
double wart;
wart = sqrt(arg); /*sqrt - funkcja wywoływana,*/
/*arg -argument funkcji */
printf( "sqrt( %f ) = %f\n", arg, wart );
/*co zostanie wyświetlone? */
return 0;
}
" Kompilator musi znać wszystkie identyfikatory występujące w programie. Musi
wiedzieć, że:
o Identyfikator jest nazwą funkcji,
o typ wartości tej funkcji to ...
o liczbę i typy argumentów (parametrów funkcji)
Te informacje są zawarte w:
o definicji funkcji,
o prototypie funkcji.
" Oznacza to, że przed wywołaniem funkcji musi wystąpić albo definicja, albo prototyp
funkcji, w przeciwnym przypadku wystąpi błąd kompilacji;
" Standardowe pliki nagłówkowe zawierają prototypy funkcji standardowych np. plik
zawiera prototypy funkcji matematycznych. Przykłady:
sqrt (pierwiastek kwadratowy),
double sqrt( double arg);
cos (cosinus),
double cos(double arg); prototyp fcji
log (logarytm naturalny),
log10 (logarytm dziesiętny).
2
Podstawy programowania. Wykład 3 wprowadzenie do funkcji
Małgorzata Nalbach-Moszyńska
Jak to działa?
Funkcja wywołująca Funkcja wywoływana
...
kod funkcji sqrt()
int main(){
...
...
...
wart = sqrt(arg);
...
...
return()
//powrót do funkcji wywołującej
}
5.2 Definiowanie funkcji
Schemat definicji funkcji
( ){
}
Przykład Obliczanie pola prostokąta
double pole (double dlug, double szer){ /*nagłówek funkcji*/
return dlug * szer; /* ciało funkcji*/
/* i zwracana wartość */
}
" Wartość zwracana typ double
" Nazwa funkcji pole
" Dwa argumenty dlug i szer - oba typu double.
" Parametry w nagłówku definicji funkcji to parametry formalne, a parametry w
wywołaniu to parametry aktualne.
Jeżeli nie interesuje nas wartość zwracana to nadajemy typ void i return bez
wartości.
3
Podstawy programowania. Wykład 3 wprowadzenie do funkcji
Małgorzata Nalbach-Moszyńska
Przykład 2 program z polem prostokąta najpierw definicje funkcji - potem wywołanie.
/* w3p2 - definiowanie funkcji - obsługa prostokątów
najpierw definicje funkcji - potem wywołanie */
#include
float pole (float dlug, float szer){
/* funkcja pole oblicza pole prostokąta */
printf("Wyliczam pole prostokata. Dlugosc %2.2f szerokosc
%2.2f \n",dlug,szer);
/* wydruk kontrolny, ułatwia testowanie */
return (dlug * szer);
}
void wyswietlProst (float dl, float szer, float area){
/* funkcja wyswietlProst wyświetla dane prostokąta */
printf("Dane prostokata\n");
printf("\t Dlugosc = %2.2f \t Szerokosc = %2.2f \t Pole =
%4.2f\n",dl,szer,area);
return;
}
int main(){
float dlug, szer, area;
/* wczytujemy wymiary */
printf("\t Podaj dlugosc = ");
scanf("%f", &dlug);
printf("\n\t Podaj szerokosc = ");
scanf("%f", &szer);
area = pole(dlug, szer); /* obliczamy pole */
wyswietlProst (dlug, szer, area);
return 0;
}
4
Podstawy programowania. Wykład 3 wprowadzenie do funkcji
Małgorzata Nalbach-Moszyńska
Przykład program z polem prostokąta najpierw prototyp, potem wywołanie na końcu
definicja.
/* w3p3 - definiowanie funkcji - obsługa prostokątów
najpierw prototypy funkcji - potem wywołanie, na koniec
definicja */
#include
float pole (float dlug, float szer);
void wyswietlProst (float dl, float szer, float area);
int main(){
float dlug, szer, area;
/* wczytujemy wymiary */
printf("\t Podaj dlugosc = ");
scanf("%f", &dlug);
printf("\n\t Podaj szerokosc = ");
scanf("%f", &szer);
area = pole(dlug, szer); /* obliczamy pole */
wyswietlProst (dlug, szer, area);
return 0;
}
float pole (float dlug, float szer){
/* funkcja pole oblicza pole prostokąta */
printf("Wyliczam pole prostokata. Dlugosc %2.2f szerokosc
%2.2f \n",dlug,szer);
/* wydruk kontrolny, ułatwia testowanie */
return (dlug * szer);
}
void wyswietlProst (float dl, float szer, float area){
/* funkcja wyswietlProst wyświetla dane prostokąta */
printf("Dane prostokata\n");
printf("\t Dlugosc = %2.2f \t Szerokosc = %2.2f \t Pole =
%4.2f\n",dl,szer,area);
return;
}
5
Podstawy programowania. Wykład 3 wprowadzenie do funkcji
Małgorzata Nalbach-Moszyńska
5.3 Przekazywanie parametrów
" Przez wartość podczas wywołania tworzona jest kopia parametru (zmienna o takiej
samej nazwie);
" Skutki:
o nie można zmienić wartości po wyjściu z funkcji parametr zawsze ma taką samą
wartość, jak przy wywołaniu;
o można wywoływać z wyrażeniem jako parametrem; np
double powierzchnia;
powierzchnia = pole (2+dlug, szer * 3);
Jeżeli musi być zmieniona wartość parametru, to przekazuję adres zmiennej.
5.4 Uwagi o tworzeniu funkcji
1. Pomaga zachować strukturę programu projektować w stylu top-down.
2. Dekomponuje trudny problem na szereg łatwiejszych
3. Zwiększa czytelność programu.
4. Funkcja musi do czegoś służyć!
5. Zawiera ściśle określoną funkcjonalność nie należy łączyć kilku działań. Jeśli
funkcja ma coś wyliczać, to nie powinna nic wyświetlać do tego lepiej użyć innej
funkcji.
6. Raz zdefiniowaną funkcję można wielokrotnie, nawet w tym samym programie
wywoływać.
7. Ułatwia podział pracy w zespole każdą funkcję może pisać ktoś inny biblioteki
funkcji.
6
Wyszukiwarka
Podobne podstrony:
Wyklad 3 funkcje wprowadzenie
Wyklad 2 FUNKCJE POCHODNA IN EKOL
Wyklad 5 FUNKCJE POCHODNA Biol 2012
Wykład 8 Funkcje skrótu
Wyklady z funkcji analitycznych I M Jarnicki
wykład 5 Funkcje wielu zmiennych
Wykład 01 Wprowadzenie do sieci telekomunikacyjnych
wyklad 3 Funkcje gestosci prawdopodobienstwa PL [tryb zgodności]
Matematyka Sem 2 Wykład Funkcje Uwikłane
IO Wyklad 01 Wprowadzenie
funkcje wprowadzenie
Jarnicki M Wykłady z funkcji analitycznych
Wykład 01 Wprowadzenie klasyfikacja
wykład funkcje rekurencyjne
wyklad i funkcje i definicje pieniadza
więcej podobnych podstron