Laboratorium nr 6
Temat: Definiowanie i wykorzystanie funkcji oraz wst p do wska ników.
1)
Definiowanie funkcji
# include <stdio.h>
# include <conio.h>
char znak(void) {
char zmienna;
printf("Podaj znak=");
scanf("%c",&zmienna);
return zmienna;
}
main() {
char zmienna;
zmienna=znak();
printf("Wpisales
znak=%c\n",zmienna);
getch();
return (0);
}
# include <stdio.h>
# include <conio.h>
float liczba(void) {
float zmienna;
printf("Podaj liczbe=");
scanf("%f",&zmienna);
return zmienna;
}
main() {
float zmienna;
zmienna=liczba();
printf("Wpisales
liczbe=%f\n",zmienna);
getch();
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
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
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.
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
…
main() {
int a, *wsk_i, *wsk_j, *wsk_k;
…
(1) a=10;
(2) wsk_i=&a;
(3) wsk_j=wsk_i;
(4) *wsk_j=100;
(5) wsk_k=NULL;
…}
(1)
a
10
wsk_i
wsk_j
wsk_k
(2)
a
10
wsk_i
wsk_j
wsk_k
(3)
a
10
wsk_i
wsk_j
wsk_k
(4)
a
100
wsk_i
wsk_j
wsk_k
(5)
a
100
wsk_i
wsk_j
wsk_k
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