Język ANSI C – funkcje
Transkrypt
Język ANSI C – funkcje
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 5 - sem.III Dr inż. M. Czyżak Język ANSI C – funkcje Ogólna budowa programu w języku C W języku C program składa się z jednego lub większej liczby segmentów kodu zwanych funkcjami, z których jedna musi nazywać się main(). Wykonanie programu zaczyna się od funkcji main() i program powinien kończyć się wraz z zakończeniem działania funkcji main(). Program również może się zakończyć, gdy pojawi się sytuacja nienormalna-wyjątek, np. dzielenie przez zero, albo też gdy zostanie zakończony w sposób jawny ( ctrl-break, zamknięcie okna w systemie Windows), powodem zakończenia może być też wywołanie funkcji exit(). Język C – funkcje Powody stosowania funkcji w programach (1) 1. Korzystanie z bibliotek lub funkcji stworzonych przez innych programistów. 2. Podział zadania programistycznego na mniejsze, które mogą być opracowywane niezależnie( np. w różnym czasie lub równocześnie przez różnych programistów). Język C – funkcje Powody stosowania funkcji w programach (2) 3. Ułatwienia w uruchamianiu dużych programów ( można niezależnie uruchamiać i testować poszczególne funkcje). 4. Program jest zbyt duży, by pisać go jako jedną funkcję main(). 5. Unikanie powtarzania w programie tego samego kodu, gdy pewne zadania trzeba wykonywać wielokrotnie. Język ANSI C – funkcje Funkcje a struktura programu w języku C (1) Program w języku C może być programem jednoplikowym lub wieloplikowym. W programie jednoplikowym wszystkie funkcje znajdują się w jednym pliku źródłowym lub są do niego dołączane przy zastosowaniu dyrektywy #include. W programie wieloplikowym pliki są łączone w sposób zależny od środowiska (np. w środowisku Dev C++ opcja Projekt->Dodaj do projektu). Język ANSI C – funkcje Funkcje a struktura programu w języku C (2) - Funkcje nie muszą występować w pliku źródłowym w określonym porządku ( pewne sposoby uporządkowania mogą wymagać dodatkowych deklaracji), jednak umieszczenie main() jako pierwszej funkcji w pliku ułatwia analizę programu. - Każda funkcja może wywoływać dowolną inną funkcję. - Nie jest dopuszczalne zagnieżdżanie funkcji, tzn. nie można jednej funkcji definiować wewnątrz innej funkcji. - W programie występuje tylko jedna funkcja main() i musi ona wystąpić niezależnie od liczby plików źródłowych. Język ANSI C – funkcje Przykład. Prosty program stosujący funkcję do obliczania kwadratu pewnej wartości. #include <stdio.h> // lub #include <cstdio> int kwadrat (int num){ int pom; // zmienna lokalna funkcji pom=num*num; return pom; } // zmienna pom nie jest konieczna, //być return num*num; int main() { int kw, wartosc; printf("\n Podaj wartosc :"); scanf("%d",&wartosc); Język ANSI C – funkcje Wywołanie funkcji (uruchomienie kodu funkcji) kw= kwadrat(wartosc); /* zmienna wartosc jest tzw. argumentem funkcji, zmienna wartość zawiera liczbę, która ma być podniesiona do kwadratu */ printf ("\n Kwadrat liczby %d wynosi :%d",wartosc, kw); system("PAUSE"); return 0;} W momencie zakończenia działania, funkcja kwadrat przesyła do funkcji main() obliczoną wartość i wartość ta jest wstawiana w miejsce wywołania funkcji. W kolejnym etapie następuje wstawienie tej wartości do zmiennej kw. Język ANSI C – funkcje Przykład. Zastosowanie deklaracji funkcji. #include <stdio.h> int kwadrat (int); // deklaracja funkcji int main() { int kw, wartosc; printf("\n Podaj wartosc :"); scanf("%d",&wartosc); kw=kwadrat(wartosc); printf("\n Kwadrat liczby %d wynosi:%d \n", wartosc,kw); system ("PAUSE"); return 0;} int kwadrat (int num){ int pom; pom=num*num; return pom;} Język ANSI C – funkcje Wynik działania programu -----------------------Podaj wartosc :25 Kwadrat liczby 25 wynosi:625 Aby kontynuować, naciśnij dowolny klawisz . . . Język ANSI C – funkcje Przykład. (do wykonania w trakcie wykładu) Napisać i wywołać w main() następujące funkcje: a) funkcję obliczającą sumę swoich argumentów typu int b) funkcję obliczającą różnicę swoich argumentów typu int c)funkcję obliczającą iloczyn swoich argumentów typu double Funkcje obliczające sumę i różnicę wywołać dla dwóch par argumentów. Język ANSI C – funkcje #include <stdio.h> int sum (int a, int b); // deklaracje funkcji int roznica (int a, int b); double iloczyn (double a, double b); int main() { int a,b,c,d,sum,roz; double e,f,ilo; printf("\n Podaj a :"); scanf("%d",&a); printf("\n Podaj b :"); scanf("%d",&b); sum=suma(a,b);// a,b to argumenty wywołania funkcji Język ANSI C – funkcje cz 2. programu printf("\n Suma %d + %d =%d ", a,b,sum); printf("\n Podaj c :"); scanf("%d",&c); printf("\n Podaj d :"); scanf("%d",&d); sum=suma(c,d); printf("\n Suma %d + %d =%d ", c,d,sum); roz=roznica(a,b); printf("\n Roznica %d - %d =%d ", a,b,roz); roz=roznica(c,d); printf("\n Roznica %d - %d =%d \n", c,d,roz); Język ANSI C – funkcje cz 3. programu printf("\n Podaj e :"); scanf("%lf",&e); printf("\n Podaj f :"); scanf("%lf",&f); ilo=iloczyn(e,f); printf("\n Iloczyn %f * %f =%f \n", e,f,ilo); system ("PAUSE"); return 0; } Język ANSI C – funkcje cz 4. programu int suma (int a, int b){ int sum; sum=a+b; return sum;} int roznica (int a, int b){ int roz; roz=a-b; return roz;} double iloczyn (double a, double b){ double ilo; ilo=a*b; return ilo;} Język ANSI C – funkcje Wynik działania programu --------------------------------Podaj a :2 Podaj b :3 Suma 2 + 3 =5 Podaj c :4 Podaj d :5 Suma 4 + 5 =9 Roznica 2 - 3 =-1 Roznica 4 - 5 =-1 Podaj e :2.5 Podaj f :3.5 Iloczyn 2.500000 * 3.500000 =8.750000 Aby kontynuować, naciśnij dowolny klawisz . . . Język ANSI C – funkcje Przykład. Napisać i zastosować w programie funkcję silnia. #include <stdio.h> int silnia (int n ){ int i, sil=1; if (n>0) for (i=1;i<=n;i++) sil=sil*i; return sil; } int main() { int l1=5, l2=6; int sil1,sil2; sil1=silnia (l1); sil2=silnia (l2); printf("\n % d ! wynosi %d", l1,sil1); printf("\n % d ! wynosi %d\n", l2,sil2); system("PAUSE"); return 0;} Język ANSI C – funkcje Przykład. Napisać i zastosować w programie funkcję silnia. Wynik działania programu 5 ! wynosi 120 6 ! wynosi 720 Aby kontynuować, naciśnij dowolny klawisz . . .