jezc w05 funkcje

background image

Programowanie

w języku C

Programowanie

w języku C

© 2011

Grzegorz Łukawski & Maciej Lasota
Politechnika Świętokrzyska w Kielcach

Wykład nr 5:

Złożone operatory przypisania

Formatowanie printf() - uzupełnienie

Funkcje, argumenty funkcji, rekurencja

Funkcje ze zmienną liczbą argumentów

background image

Złożone operatory przypisania

a

= b;

a = a

b;

Zapis równoważny:

Operatorem

może być jeden z:

+ - * / % & | ^ << >>

a *= b + 1;
a = a * (b + 1);

background image

Formatowanie printf() / scanf()

%d

char, int, short, long

-23001

%x

char, int, short, long

f45aba

%X

F45ABA

%u

unsigned …

123400

%c

char

A

%s

char*

Tekst

%f

float, double

198.001468

%e

float, double

2.224653e+002

%E

2.224653E+002

%

Typy danych

Przykład

background image

Minus, dosuwający przekształconą wartość do lewej strony pola.

Zero, wymuszający uzupełnianie znakiem 0 (zero) do szerokości pola,

domyślnie jest to spacja.

Liczba określająca minimalny rozmiar pola. Przekształcona wartość będzie

wpisana do pola o co najmniej takim rozmiarze. Jeśli trzeba, pole będzie

uzupełnione do pełnego rozmiaru z lewej lub prawej strony. Dla tekstów

znakiem uzupełniającym jest spacja.

Kropka.

Liczba określająca precyzję – maksymalną liczbę znaków dla tekstu,
minimalną liczbę cyfr dla wartości całkowitej (uzupełnienie zerami), liczbę

cyfr po przecinku dla wartości zmiennoprzecinkowych.

Litera 'h' jeśli podany argument jest typu short, lub 'l' dla long/double.

Formatowanie printf() / scanf()

%

-04.4h

d

background image

Zawsze obok nazwy funkcji występują nawiasy okrągłe.

Na początku każdej funkcji można deklarować zmienne lokalne.

Funkcja w języku C może posiadać zmienną liczbę argumentów*.

Niemożliwe jest definiowanie funkcji wewnątrz innych funkcji

(dotyczy ANSI C).

Funkcje i „procedury”

typ_zwracanej_wartosci

nazwa

(argumenty) {

deklaracje_zmiennych;

instrukcje;

}

UWAGA!
Deklarując funkcje należy trzymać się zasady, że aby zmienna/funkcja

mogła być użyta, musi być zadeklarowana wcześniej w pliku źródłowym.

background image

Funkcja kończy się:

po klamrze zamykającej;

w miejscu wystąpienia instrukcji return (również dla funkcji nie
zwracających wartości).

Zakończenie funkcji

return

(wynik);

<==>

return

wynik;

Domyślny typ zwracanej wartości to int. Jeśli zaistnieje potrzeba, wartość

zwracana zostanie przekształcona na typ wyniku funkcji.

UWAGA!
Funkcja musi zakończyć się instrukcją return po każdym możliwym

wariancie zakończenia funkcji (po każdym odgałęzieniu instrukcji if),

w przeciwnym razie funkcja może zwrócić wartość nieokreśloną.

background image

Wartość zwracana przez funkcję może zostać zignorowana przez kod
wywołujący tę funkcję.

Zakończenie funkcji

Użycie return w funkcji main() spowoduje zakończenie programu

i zwrócenie wartości do systemu operacyjnego (powłoki).

background image

Argumenty (parametry) funkcji

Lista argumentów (parametrów) formalnych:

int

funkcja

(

int x

,

int y

) { … }

Lista argumentów (parametrów) aktualnych:

wynik =

funkcja

(

liczba

,

3

);

Jako argumenty funkcji można przekazywać wartości stałe, zmienne,
wyrażenia (ich wyniki), wyniki innych funkcji, elementy tabeli, itd....

Deklaracja argumentu funkcji przypomina deklarację zmiennej – zawsze
wymagane jest podanie typu i nazwy argumentu.

background image

Typ pusty void

Typ pusty void służy do deklarowania funkcji które nie zwracają żadnych

wyników, czyli tzw. „procedur”.

void

wyswietl(int a, int b) {

int suma = a + b;

printf(”Suma liczb = %d\n”, suma);

}

Funkcja tego typu nie musi zawierać instrukcji return.

W takim przypadku instrukcja return bez parametru może służyć do

wcześniejszego zakończenia funkcji.

void

wyswietl(int a, int b) {

int suma = a + b;

if(suma < 0) return;

printf(”Suma liczb = %d\n”, suma);

}

background image

Argumenty = zmienne lokalne

long

power

(

int baza

,

int n

) {

long p;

for(p=1;

n>0

;

--n

)

p*=

baza

;

return(p);

}

UWAGA!
Argumenty do funkcji w języku C przekazywane są zawsze przez

wartość (jako kopie)! Jedynym „wyjątkiem” są tablice...

background image

Prototyp funkcji (deklaracja zapowiadająca) – pozwala na korzystanie

z funkcji zanim jej treść zostanie zadeklarowana!

Prototypy funkcji

Prototyp zawiera informacje o nazwie, typie zwracanym oraz liczbie
i typie argumentów funkcji.

Prototyp funkcji może okazać się niezbędny, jeżeli następują bardziej

złożone wywołania rekurencyjne funkcji (rekurencja pośrednia).

Nagłówek:

Prototyp:

int fun(int x, float y) {…}

int fun(int, float);

void wyswietl(int t[32]) {…}

void wyswietl(int[32]);

float sumuj() {…}

float sumuj();

long power(int baza, int n) {…}

long power(int, int);

background image

UWAGA!
Prototyp musi zgadzać się z rzeczywistym nagłówkiem funkcji,

w przeciwnym wypadku kompilator (linker) nie utworzy pliku

wykonywalnego programu.

Prototypy funkcji – rekurencja pośrednia

?

int B();

int

A

() {


y =

B

();

}

int

B

() {


y =

A

();

}

int A();

int

B

() {


y =

A

();

}

int

A

() {


y =

B

();

}

background image

long

silnia

(int n) {

if(n==1)

return(1);

else

return(n *

silnia

(n-1));

}

Rekurencja – przykład

background image

Statyczne – zmienne globalne i lokalne poprzedzone słowem static, ich
wartość początkowa to zawsze 0.

Automatyczne (wewnętrzne, lokalne) – tworzone na stosie, bez
wartości początkowej, dotyczy też parametrów funkcji.

Rejestrowe – poprzedzone słowem register – sugestia dla kompilatora
że zmienna będzie często używana i należy ją umieścić w rejestrze CPU.

Rodzaje zmiennych

long

zliczaj

(int a, int b) {

static

long

suma

;

// Początkowo 0

suma

+= a*b;

return(

suma

);

}

a =

zliczaj

(2, 2);

// 4

b =

zliczaj

(3, 10);

// 34

c =

zliczaj

(1, 1);

// 35

background image

Parametry funkcji main()

ArgC

– liczba argumentów (>= 1);

ArgV[0]

– zawsze obecna nazwa programu;

ArgV[1], ArgV[2],... – pierwszy i kolejne argumenty.

int

main

(int ArgC, char *ArgV[]) {

}

UWAGA!
Funkcja main() może mieć argumenty tylko w tej formie (nazwy

argumentów mogą się różnić). Wszystkie argumenty przekazywane są do

programu jako ciągi znaków.


Document Outline


Wyszukiwarka

Podobne podstrony:
AM23 w05 Funkcje dwoch i trzech Nieznany
BANK CENTRALNY I JEGO FUNKCJE
Zaburzenia funkcji zwieraczy
Genetyka regulacja funkcji genow
BYT 2005 Pomiar funkcjonalnosci oprogramowania
Diagnoza Funkcjonalna
Insulinoterapia funkcjonalna
Postać kanoniczna funkcji kwadratowej
Wpływ choroby na funkcjonowanie rodziny
LAB PROCEDURY I FUNKCJE
STRUKTURA I FUNKCJONOWANIE GN
układ pokarmowy budowa i funkcja
15 Fizjologiczne funkcje nerek
funkcja produkcji

więcej podobnych podstron