Informatyka I - wykład 6
Funkcje
Slajd 1 Informatyka I wykład 6 G.P.Korbaś
Program 1. - Funkcja wypisująca gwiazdki
#include
using namespace std;
//jakiś zygzak
void gwiazdki()
{
const int maxx=5;
const int maxy=15;
int x=0,dx=1;
for (int i=0; i {
for (int ii=0;ii cout<<"*"< x+=dx;
if (x==maxx-1 || x==0) dx=-dx;
}
return;
}
Slajd 2 Informatyka I wykład 6 G.P.Korbaś
int main()
{
gwiazdki();
cout<<"Dzień dobry"<gwiazdki();
cout<<"To jest program z gwiazdkami"<gwiazdki();
system("PAUSE");
return 0;
}
Slajd 3 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 1.
void gwiazdki() prototyp funkcji o nazwie gwiazdki. Funkcja nie
pobiera żadnych argumentów i nic nie zwraca.
Slajd 4 Informatyka I wykład 6 G.P.Korbaś
Program 2. - Funkcja zwracająca liczbę losową od 0 do 99
#include
#include
using namespace std;
int losuj0do100()
{
int los=int(rand()*101/RAND_MAX);
if (los==101) los=100;
return los;
}
int main()
{
srand(time(0)*1000);
for (int i=0;i<10;i++)
cout< system("PAUSE");
return 0;
}
Slajd 5 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 2.
int losuj0do100() prototyp funkcji o nazwie losuj0do100.
Funkcja nie pobiera żadnych argumentów i zwraca liczbę całkowitą.
Slajd 6 Informatyka I wykład 6 G.P.Korbaś
Program 3. - Funkcja zwracająca liczbę powiększoną o 2
#include
using namespace std;
int dodaj2(int a)
{
a=a+2;
return a;
}
int main()
{
int u=1;
cout << u << endl; // 1
cout << dodaj2(u) << endl; // 3
cout << u << endl; // 1
cout << dodaj2(10) << endl; // 12
return 0;
}
Slajd 7 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 3.
int dodaj2(int a) prototyp funkcji o nazwie dodaj2. Funkcja
pobiera (przez wartość) liczbę całkowitą i zwraca liczbę całkowitą.
Pobieranie argumentów przez wartość oznacza, że wykonywana jest kopia
zmiennej. W ramach funkcji można posługiwać się zmienną argumentem
ale nie ma to wpływu na żadną zmienną poza funkcją.
Przy takim podawaniu parametrów można podać wartość wprost bez
pośrednictwa zmiennej.
Slajd 8 Informatyka I wykład 6 G.P.Korbaś
Program 4. - Funkcja zwracająca liczbę powiększoną o 2 argument przez referencję
#include
using namespace std;
int dodaj2(int &a)
{
a=a+2;
return a;
}
int main()
{
int u=1;
cout << u << endl; // 1
cout << dodaj2(u) << endl; // 3
cout << u << endl; // 3
return 0;
}
Slajd 9 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 4.
int dodaj2(int &a) prototyp funkcji o nazwie dodaj2. Funkcja
pobiera (przez referencję) liczbę całkowitą i zwraca liczbę całkowitą.
Pobieranie argumentów przez referencję oznacza, że do funkcji
przekazywany jest adres zmiennej w pamięci. Wszelkie zmiany
wykonywane na zmiennej w ramach funkcji wpływają na zmienną
przekazaną.
Przy takim podawaniu parametrów nie można podać wartość wprost bez
pośrednictwa zmiennej.
Slajd 10 Informatyka I wykład 6 G.P.Korbaś
Dotychczasowe przykłady pokazywały jak od razu deklarować i
definiować funkcje w jednym miejscu programu.
Deklaracja oznacza wskazanie kompilatorowi, że istnieje funkcja o
podanym prototypie.
Definicja oznacza określenie jak funkcja działa.
Można jednak deklarować i definiować funkcję osobno. Dalszy przykład
pokazuje jak zadeklarować funkcję na początku i zdefiniować pod koniec
kodu programu.
W praktyce większość deklaracji znajduje się w tzw. plikach
nagłówkowych .h a większość definicji w plikach .cpp.
Slajd 11 Informatyka I wykład 6 G.P.Korbaś
Program 5. - Funkcja zwracająca liczbę powiększoną o 2 rozbita deklaracja i definicja
#include
using namespace std;
int dodaj2(int a);
int main()
{
int u=1;
cout << u << endl; // 1
cout << dodaj2(u) << endl; // 3
cout << u << endl; // 1
cout << dodaj2(10) << endl; // 12
return 0;
}
int dodaj2(int a)
{
a=a+2;
return a;
}
Slajd 12 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 5.
int dodaj2(int a); przy samodzielnej deklaracji zaraz za
prototypem funkcji pojawia się średnik!
Slajd 13 Informatyka I wykład 6 G.P.Korbaś
Program 6. - Funkcja zwracająca największą z trzech liczb i program ją wykorzystujący
#include
using namespace std;
int maxi(int a, int b, int c)
{
int m;
if (a>b)
if (a>c) m=a; else m=c;
else
if (b>c) m=b; else m=c;
return m;
}
int main()
{
int u,v,w;
cin >> u >> v >> w;
cout << maxi(u,v,w);
return 0;
}
Slajd 14 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 6.
int maxi(int a, int b, int c) prototyp funkcji o nazwie maxi.
Funkcja pobiera (przez wartość) trzy liczby całkowite i zwraca liczbę
całkowitą.
Slajd 15 Informatyka I wykład 6 G.P.Korbaś
Program 7. - Funkcja normująca wektor
#include
#include
using namespace std;
void normuj(double &x, double &y, double &z);
int main()
{
double T[3];
cin >> T[0] >> T[1] >> T[2];
normuj(T[0],T[1],T[2]);
cout << T[0] << ' ' << T[1] << ' ' << T[2];
return 0;
}
void normuj(double &x, double &y, double &z)
{
double d=sqrt(x*x+y*y+z*z);
x=x/d;
y=y/d;
z=z/d;
}
Slajd 16 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 7.
void normuj(double &x, double &y, double &z) prototyp
funkcji normuj pobierający przez referencję trzy liczby rzeczywiste.
Funkcja nie zwraca żadnej wartości (void)
Slajd 17 Informatyka I wykład 6 G.P.Korbaś
Program 8. - normująca wektor z argumentem tablicowym
#include
#include
using namespace std;
void normuj(double X[])
{
double d=sqrt(X[0]*X[0]+X[1]*X[1]+X[2]*X[2]);
X[0]=X[0]/d; X[1]=X[1]/d; X[2]=X[2]/d;
}
int main()
{
double T[3];
cin >> T[0] >> T[1] >> T[2];
normuj(T);
cout << T[0] << ' ' << T[1] << ' ' << T[2];
system ("pause");
return 0;
}
Slajd 18 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 8.
W podanym programie funkcja została zadeklarowania jako otrzymująca
tablicę. Kopia tablicy nie jest wykonywana w przypadku tablic
przekazywany jest zawsze adres, co oznacza, że tablice przekazuje się
zawsze przez referencję!
Slajd 19 Informatyka I wykład 6 G.P.Korbaś
Program 9. - Funkcja zwracająca liczbę powiększoną o ...
#include
using namespace std;
void dodaj(int &a, int d=1)
{
a=a+d;
}
int main()
{
int u=1;
cout << u << endl; // 1
dodaj(u); cout << u << endl; // 2
dodaj(u,5); cout << u << endl; // 7
return 0;
}
Slajd 20 Informatyka I wykład 6 G.P.Korbaś
Uwagi do programu 9.
void dodaj(int &a, int d=1) prototyp funkcji o nazwie dodaj.
Funkcja pobiera (przez referencję) liczbę całkowitą i ewentualnie
(przez wartość) drugą liczbę całkowitą, dla której podano wartość
domyślną jeśli nie zostanie podana. Funkcja nic nie zwraca.
Slajd 21 Informatyka I wykład 6 G.P.Korbaś
Wyszukiwarka
Podobne podstrony:
inf1 w6 dod
W6
C w6 zmienne dynamiczne wskazniki funkcji
w6 paleoklimat
w6
MSI AiR w6 2004
W6
W6 Układy regulacji i dynamika AiS 2013
w6 TRB
W6 Układy regulacji i dynamika AiS 2013
TB W6 623C
W6 Instalacje bezpieczenstwa w obiektach budowlanych
w6
W6
w6
w6
więcej podobnych podstron