1
Informatyka 1
Informatyka 1
zaj
zaj
ę
ę
cia nr 4
cia nr 4
Elektrotechnika, semestr II
Elektrotechnika, semestr II
rok akademicki 2008/2009
rok akademicki 2008/2009
mgr in
mgr in
ż
ż
. Pawe
. Pawe
ł
ł
Myszkowski
Myszkowski
Plan dzisiejszych zaj
Plan dzisiejszych zaj
ęć
ęć
1.
1.
Idea funkcji u
Idea funkcji u
ż
ż
ytkownika
ytkownika
2.
2.
Konstrukcja funkcji w j
Konstrukcja funkcji w j
ę
ę
zyku C
zyku C
3.
3.
Przyk
Przyk
ł
ł
ady funkcji u
ady funkcji u
ż
ż
ytkownika
ytkownika
4.
4.
Gdzie umieszczamy deklaracj
Gdzie umieszczamy deklaracj
ę
ę
funkcji?
funkcji?
5.
5.
Zmienne globalne i lokalne
Zmienne globalne i lokalne
2
Funkcja
Funkcja
–
–
wysoce niezale
wysoce niezale
ż
ż
ny blok definicji
ny blok definicji
i instrukcji programu.
i instrukcji programu.
U
U
ż
ż
ywa si
ywa si
ę
ę
tak
tak
ż
ż
e terminu
e terminu
podprogram
podprogram
lub
lub
procedura
procedura
, chocia
, chocia
ż
ż
w niekt
w niekt
ó
ó
rych j
rych j
ę
ę
zykach
zykach
programowania
programowania
procedura
procedura
i
i
funkcja
funkcja
to
to
dwie r
dwie r
ó
ó
ż
ż
ne rzeczy.
ne rzeczy.
1. Funkcje u
1. Funkcje u
ż
ż
ytkownika
ytkownika
-
-
idea
idea
1.
1.
Funkcje u
Funkcje u
ż
ż
ytkownika
ytkownika
-
-
idea
idea
System
operacyjny
Funkcja
main()
Funkcja
biblioteczna
lub
użytkownika
Uruchomienie
programu
Wywołanie
funkcji
Zwrócenie
wartości
Zwrócenie
wartości
3
Schemat:
Schemat:
typ_zwracanego_wyniku
typ_zwracanego_wyniku
nazwa_funkcji
nazwa_funkcji
(
(
parametry_funkcji
parametry_funkcji
)
)
{
{
//cia
//cia
ł
ł
o funkcji, czyli deklaracje zmiennych, instrukcje
o funkcji, czyli deklaracje zmiennych, instrukcje
return
return
warto
warto
ść
ść
_zwracana_przez_funkcj
_zwracana_przez_funkcj
ę
ę
;
;
}
}
Lini
Lini
ę
ę
typ_zwracanego_wyniku
typ_zwracanego_wyniku
nazwa_funkcji
nazwa_funkcji
(
(
parametry_funkcji
parametry_funkcji
)
)
nazywamy nag
nazywamy nag
ł
ł
ó
ó
wkiem funkcji.
wkiem funkcji.
2. Konstrukcja funkcji w j
2. Konstrukcja funkcji w j
ę
ę
zyku C
zyku C
1) Funkcja, kt
1) Funkcja, kt
ó
ó
ra nie zwraca
ra nie zwraca
ż
ż
adnej warto
adnej warto
ś
ś
ci
ci
i nie ma parametr
i nie ma parametr
ó
ó
w
w
Definicja:
Definicja:
void
void
plansza(void
plansza(void
)
)
{
{
printf("Oto
printf("Oto
program
program
obliczaj
obliczaj
ą
ą
cy
cy
…
…
\
\
n
n
\
\
n
n
");
");
printf("Autor
printf("Autor
: imi
: imi
ę
ę
i
i
nazwisko
nazwisko
\
\
n
n
\
\
n
n
");
");
getch
getch
(); //dzia
(); //dzia
ł
ł
a podobnie jak
a podobnie jak
system("PAUSE
system("PAUSE
");
");
return;
return;
}
}
Wywo
Wywo
ł
ł
anie:
anie:
plansza(); //wywo
plansza(); //wywo
ł
ł
ujemy w funkcji
ujemy w funkcji
main
main
3. Przyk
3. Przyk
ł
ł
ady funkcji u
ady funkcji u
ż
ż
ytkownika
ytkownika
void ma tu dwojakie znaczenie:
1) typ pusty (brak zwracanej wartości)
2) brak parametrów funkcji
4
2) Funkcja, kt
2) Funkcja, kt
ó
ó
ra nie zwraca
ra nie zwraca
ż
ż
adnej warto
adnej warto
ś
ś
ci
ci
ale ma parametry
ale ma parametry
Definicja:
Definicja:
void
void
wypisz_sume(int
wypisz_sume(int
a,
a,
int
int
b)
b)
{
{
int
int
c=a+b
c=a+b
;
;
printf("
printf("
\
\
nSuma
nSuma
%d oraz %d wynosi %
%d oraz %d wynosi %
d",a,b,c
d",a,b,c
);
);
} //funkcja nic nie zwraca, ale wypisuje wynik na ekranie
} //funkcja nic nie zwraca, ale wypisuje wynik na ekranie
Wywo
Wywo
ł
ł
anie:
anie:
int
int
x1, x2;
x1, x2;
printf("Podaj
printf("Podaj
dwie liczby ca
dwie liczby ca
ł
ł
kowite: ");
kowite: ");
scanf("%d%d",&x1,&x2);
scanf("%d%d",&x1,&x2);
wypisz_sume(x1,x2);
wypisz_sume(x1,x2);
3. Przyk
3. Przyk
ł
ł
ady funkcji u
ady funkcji u
ż
ż
ytkownika
ytkownika
3) Funkcja, kt
3) Funkcja, kt
ó
ó
ra zwraca warto
ra zwraca warto
ść
ść
i ma parametry
i ma parametry
Definicja:
Definicja:
int
int
sumuj(int
sumuj(int
a,
a,
int
int
b)
b)
lub pro
lub pro
ś
ś
ciej
ciej
int
int
sumuj(int
sumuj(int
a,
a,
int
int
b)
b)
{
{
{
{
int
int
c=a+b
c=a+b
;
;
return (
return (
a+b
a+b
);
);
return c;
return c;
}
}
}
}
Wywo
Wywo
ł
ł
anie:
anie:
int
int
x1, x2, wynik;
x1, x2, wynik;
printf("Podaj
printf("Podaj
dwie liczby ca
dwie liczby ca
ł
ł
kowite: ");
kowite: ");
scanf("%d%d",&x1,&x2);
scanf("%d%d",&x1,&x2);
wynik=sumuj(x1,x2);
wynik=sumuj(x1,x2);
//inne wywo
//inne wywo
ł
ł
anie by
anie by
ł
ł
oby b
oby b
łę
łę
dne!
dne!
3. Przyk
3. Przyk
ł
ł
ady funkcji u
ady funkcji u
ż
ż
ytkownika
ytkownika
5
Deklaracj
Deklaracj
ę
ę
(cia
(cia
ł
ł
o funkcji) mo
o funkcji) mo
ż
ż
emy umie
emy umie
ś
ś
ci
ci
ć
ć
:
:
1)
1)
w tym samym pliku co funkcja
w tym samym pliku co funkcja
main
main
()
()
a) przed funkcj
a) przed funkcj
ą
ą
main
main
()
()
b) po funkcji
b) po funkcji
main
main
()
()
2)
2)
w osobnym pliku (biblioteka funkcji
w osobnym pliku (biblioteka funkcji
u
u
ż
ż
ytkownika .h)
ytkownika .h)
4. Gdzie umieszczamy deklaracj
4. Gdzie umieszczamy deklaracj
ę
ę
funkcji?
funkcji?
1a) przed funkcj
1a) przed funkcj
ą
ą
main
main
()
()
#
#
include
include
<
<
stdio.h
stdio.h
>
>
…
…
typ_zwracany
typ_zwracany
moja_funkcja(parametry
moja_funkcja(parametry
)
)
{
{
//cia
//cia
ł
ł
o funkcji
o funkcji
}
}
…
…
int
int
main
main
()
()
{
{
…
…
moja_funkcja
moja_funkcja
(
(
…
…
); //wywo
); //wywo
ł
ł
anie funkcji
anie funkcji
}
}
4. Gdzie umieszczamy deklaracj
4. Gdzie umieszczamy deklaracj
ę
ę
funkcji?
funkcji?
6
1b) po funkcji
1b) po funkcji
main
main
()
()
#
#
include
include
<
<
stdio.h
stdio.h
>
>
…
…
typ_zwracany
typ_zwracany
moja_funkcja(parametry
moja_funkcja(parametry
); //tzw. prototyp funkcji
); //tzw. prototyp funkcji
…
…
int
int
main
main
()
()
{
{
…
…
moja_funkcja
moja_funkcja
(
(
…
…
); //wywo
); //wywo
ł
ł
anie funkcji
anie funkcji
}
}
typ_zwracany
typ_zwracany
moja_funkcja(parametry
moja_funkcja(parametry
)
)
{
{
//cia
//cia
ł
ł
o funkcji
o funkcji
}
}
4. Gdzie umieszczamy deklaracj
4. Gdzie umieszczamy deklaracj
ę
ę
funkcji?
funkcji?
1) Zmienne globalne
1) Zmienne globalne
Zmienne globalne "widoczne" s
Zmienne globalne "widoczne" s
ą
ą
w ca
w ca
ł
ł
ym programie,
ym programie,
zar
zar
ó
ó
wno w funkcji
wno w funkcji
main
main
() jak te
() jak te
ż
ż
w funkcjach
w funkcjach
u
u
ż
ż
ytkownika.
ytkownika.
#
#
include
include
<
<
stdio.h
stdio.h
>
>
int
int
zmienna_globalna
zmienna_globalna
;
;
//zmienne globalne deklarujemy w nag
//zmienne globalne deklarujemy w nag
ł
ł
ó
ó
wku
wku
…
…
int
int
main
main
()
()
{
{
zmienna_globalna=10;
zmienna_globalna=10;
}
}
5. Zmienne globalne i lokalne
5. Zmienne globalne i lokalne
7
2) Zmienne lokalne
2) Zmienne lokalne
Zmienne lokalne "widoczne" s
Zmienne lokalne "widoczne" s
ą
ą
tylko w tym
tylko w tym
bloku programu, w kt
bloku programu, w kt
ó
ó
rym s
rym s
ą
ą
zadeklarowane.
zadeklarowane.
int
int
main
main
()
()
{
{
int
int
zmienna_lokalna
zmienna_lokalna
;
;
//zmienna lokalna funkcji
//zmienna lokalna funkcji
main
main
//jest niewidoczna wewn
//jest niewidoczna wewn
ą
ą
trz funkcji u
trz funkcji u
ż
ż
ytkownika
ytkownika
}
}
5. Zmienne globalne i lokalne
5. Zmienne globalne i lokalne
2) Zmienne lokalne c.d.
2) Zmienne lokalne c.d.
#
#
include
include
<
<
stdio.h
stdio.h
>
>
…
…
int
int
moja_funkcja(void
moja_funkcja(void
)
)
{
{
int
int
zmienna_lokalna
zmienna_lokalna
;
;
//zmienna lokalna funkcji
//zmienna lokalna funkcji
//jest widoczna tylko wewn
//jest widoczna tylko wewn
ą
ą
trz funkcji
trz funkcji
moja_funkcja
moja_funkcja
}
}
5. Zmienne globalne i lokalne
5. Zmienne globalne i lokalne
8
Dzi
Dzi
ę
ę
kuj
kuj
ę
ę
za uwag
za uwag
ę
ę