lista 6, inf1 w6

background image

Informatyka I - wykład 6

Funkcje

Slajd 1

Informatyka I – wykład 6

G.P.Korbaś

background image

Program 1.

- Funkcja wypisująca gwiazdki

#include <iostream>

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<maxy;i++)
{

for (int ii=0;ii<x;cout<<' ',ii++);
cout<<"*"<<endl;

x+=dx;
if (x==maxx-1 || x==0) dx=-dx;

}
return;

}

Slajd 2

Informatyka I – wykład 6

G.P.Korbaś

background image

int main()
{

gwiazdki();
cout<<"Dzień dobry"<<endl;

gwiazdki();
cout<<"To jest program z gwiazdkami"<<endl;

gwiazdki();
system("PAUSE");

return 0;
}

Slajd 3

Informatyka I – wykład 6

G.P.Korbaś

background image

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ś

background image

Program 2.

- Funkcja zwracająca liczbę losową od 0 do 99

#include <iostream>

#include <ctime>
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<<losuj0do100()<<endl;

system("PAUSE");
return 0;

}

Slajd 5

Informatyka I – wykład 6

G.P.Korbaś

background image

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ś

background image

Program 3.

- Funkcja zwracająca liczbę powiększoną o 2

#include <iostream>

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ś

background image

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ś

background image

Program 4.

- Funkcja zwracająca liczbę powiększoną o 2 – argument przez referencję

#include <iostream>

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ś

background image

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ś

background image

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ś

background image

Program 5.

- Funkcja zwracająca liczbę powiększoną o 2 – rozbita deklaracja i definicja

#include <iostream>
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ś

background image

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ś

background image

Program 6.

- Funkcja zwracająca największą z trzech liczb i program ją wykorzystujący

#include <iostream>

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ś

background image

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ś

background image

Program 7.

- Funkcja normująca wektor

#include <iostream>
#include<cmath>
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ś

background image

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ś

background image

Program 8.

- normująca wektor z argumentem tablicowym

#include <iostream>

#include<cmath>
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ś

background image

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ś

background image

Program 9.

- Funkcja zwracająca liczbę powiększoną o ...

#include <iostream>

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ś

background image

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:
lista 6 inf1 w6 dod
lista 6 inf1 w6
lista 3 inf1 w3
lista 3, inf1 w3
W6 Technika harmonogramów i CPM
w6 Czołowe przekładanie walcowe o zebach srubowych
AM1 W6
ulog w6 E
Lista 2012 2
Polecenia lista 5
macierze i wyznaczniki lista nr Nieznany
Lista 14
Analiza matematyczna, lista analiza 2008 6 szeregi
Analiza III semestr lista nr 3 Nieznany (2)
lista produktow
ZP W6 Planowanie

więcej podobnych podstron