Laboratorium nr 6

Temat: Definiowanie i wykorzystanie funkcji oraz wst p do wska ników.

1) Definiowanie funkcji

# include <stdio.h>

# include <stdio.h>

# include <conio.h>

# include <conio.h>

char znak(void) {

float liczba(void) {

char zmienna;

float zmienna;

printf("Podaj znak=");

printf("Podaj liczbe=");

scanf("%c",&zmienna);

scanf("%f",&zmienna);

return zmienna;

return zmienna;

}

}

main() {

main() {

char zmienna;

float zmienna;

zmienna=znak();

zmienna=liczba();

printf("Wpisales

printf("Wpisales

znak=%c\n",zmienna);

liczbe=%f\n",zmienna);

getch();

getch();

return (0);

return (0);

}

}

Uwaga:

Istniej dwa sposoby przekazywania parametrów do funkcji:

• przez warto – przesyłana warto parametru

• przez referencj (adres) – przesyłany adres parametru

J zyk C i C++ przesyła parametry przez warto , z jednym wyj tkiem – tj. tablice. W przypadku tablic przesyłany jest adres pierwszego elementu tablicy.

2) Przekazywanie parametrów do funkcji poprzez warto

# include <stdio.h>

# include <conio.h>

float kwadrat(float a, float b) {

float wartosc;

wartosc=a*b;

return wartosc;

}

main() {

float a,b,zmienna;

printf("Podaj pierwsza liczbe=");

scanf("%f",&a);

printf("Podaj druga liczbe=");

scanf("%f",&b);

zmienna=kwadrat(a,b);

printf("Kwadrat liczb=%f\n",zmienna);

getch();

return (0);

}

3) Wst p do wska ników

W j zyku C dla ka dego typu T mo na okre li odpowiedzialny mu typ zmiennych zawieraj cy adres miejsc pami ci, w których znajduj si obiekty typu T. Zmienne takie mo na traktowa jako wskazuj ce obiekty – st d nazwa wska niki.

AD.1. Podstawowe informacje o wska nikach

Mówi c potocznie, wska nik to po prostu zmienna zawieraj ca adres miejsca w pami ci, w którym znajduj si jakie dane. Jednym z najlepszych sposobów zrozumienia wska ników jest ich wizualizacja na diagramach. Zamiast w diagramach pokazywa konkretne adresy, zwykle u ywa si strzałek, które mówi , co wska nik wskazuje. Kiedy wska nik nie wskazuje niczego, czyli kiedy zostanie mu przypisana warto NULL

zaznacza si to kresk zako czon podwójn kresk poprzeczn . Deklaracja wska nika jest tym samym, co zadeklarowanie ka dej innej zmiennej, jednak wymaga to dodatkowo u ycia odpowiedniego operatora.

Operatory wska ników:

* Operator wska nika lub inaczej wskazania po redniego; ułatwieniem b dzie odczytanie tego operatora jako

"warto znajduj ca si pod adresem"

& Operator adresu; ułatwieniem b dzie odczytanie tego operatora jako "adres zmiennej"

Przykładowy diagram – niektóre operacje na wska nikach

…

(1)

(2)

(3)

(4)

(5)

main() {

int a, *wsk_i, *wsk_j, *wsk_k;

a

10

a

10

a

10

a

100

a

100

…

wsk_i

wsk_i

wsk_i

wsk_i

wsk_i

(1) a=10;

wsk_j

wsk_j

wsk_j

wsk_j

wsk_j

(2) wsk_i=&a;

wsk_k

wsk_k

wsk_k

wsk_k

wsk_k

(3) wsk_j=wsk_i;

(4) *wsk_j=100;

(5) wsk_k=NULL;

…}

Materiał do opanowania:

1. Podstawowe informacje o wska nikach

2. Alokacja pami ci

3. Agregaty i arytmetyka wska ników

4. Wska niki jako parametry funkcji

5. Wska niki do wska ników

6. Wska niki ogólne i rzutowanie

7. Wska niki do funkcji

4) Przekazywanie warto ci do funkcji poprzez referencj

# include <stdio.h>

# include <conio.h>

int kwadrat(float a, float b, float *wartosc) {

if((a<0||a>9)||(b<0||b>9)) return (1);

else *wartosc=a*b;

return (0);

}

main() {

float a,b,wartosc;

printf("Podaj pierwsza liczbe=");

scanf("%f",&a);

printf("Podaj druga liczbe=");

scanf("%f",&b);

if (!kwadrat(a,b,&wartosc)) printf("Kwadrat liczb=%f\n",wartosc); else printf("Niewlasciwe liczby\n");

getch();

return (0);

}

5) Zadanie: Opracuj prosty kalkulator wykonuj cy podstawowe operacje matematyczne, np. dodawania, odejmowanie, mno enie, dzielenie, pot gowanie itp. Program powinien posiada nast puj ce elementy: 1. krótkie "menu" wyboru,

2. obliczenia w oparciu o funkcje,

3. zabezpieczenia poprawno ci wprowadzanych danych oparte na operatorach relacji, 4. odwołanie do zmiennych poprzez referencje/wska niki.

Uwaga: działania matematyczne nale y wprowadza w jednej linii, np. a+b, a-b, a*b, a/b tzn.

Podaj dzialanie:

2+2

Wynik:

4.00