Funkcja w programie – to blok zawierający instrukcje, opatrzony nazwą. Gdy wywołasz tę nazwę, zostaną wykonane wszystkie instrukcje w niej umieszczone.
W C++ trzeba podać typ wyniku, zwracanego przez funkcję, np.: int, float, string. Jeśli funkcja nie ma zwracać żadnego wyniku, jej typ nazywa się void.
Funkcja może pobierać parametry. Ich typy i nazwy podaje się w nagłówku funkcji, w nawiasach okrągłych. Przy wywołaniu funkcji trzeba wówczas podać aktualne wartości tych parametrów, dokładnie tyle parametrów ile ma zdefiniowanych.
W każdym programie konsolowym C++jest funkcja main(), od niej system zaczyna wykonanie programu. Funkcja main() zwraca do systemu wartość typu int, która informuje system o tym jak zakończyło się wykonanie tej funkcji: jeśli 0 (lub EXIT_SUCCESS) to znaczy że pomyślnie.
Oprócz funkcji main() program może zawierać wiele innych funkcji. Trzeba je zdefiniować przed blokiem funkcji main(), aby mogła ona z nich korzystać (wywoływać je). Albo przed main() wrzucić przynajmniej prototyp funkcji.
W ciele funkcji można deklarować zmienne. Ich zasięg jest lokalny, ograniczony tylko do bloku tej funkcji: gdy zakończy się wykonanie funkcji, te zmienne sa usuwane z pamięci.
Jeśli zmienna ma być dostepna w kilku funkcjach, trzeba ją zadeklarować jako zmienną globalną, na zewnątrz tych funkcji, przed definicjami tych funkcji. Funkcja może odczytać i zapisać wartość zmiennej globalnej. Wartość zmiennej globalnej nie zniknie po zakończeniu wykonania funkcji.
Program zrobiony na zajęciach:
#include <iostream>
#include <windows.h>
#include <cstdlib>
using namespace std;
char c; // zmienna globalna, dostepna we wszystkich funkcjach
// funkcja ustawia kursor, czyli wyznacza miejsce gdzie bedzie cos pisane
void kursor(int x, int y)
{
HANDLE h = GetStdHandle(STD_OUTPUT_HANDLE); // wymaga #include <windows.h>
COORD gdzie = {x,y};
SetConsoleCursorPosition(h,gdzie);
}
// funkcja rysuje linie zlozone ze znakow c. liczba linii: wys, liczba znakow w linii: szer
void prosto (int odx, int ody, int szer, int wys)
{
for (int y=0; y<wys; y++) { // dla kazdej linii
kursor(odx,ody+y); // ustaw kursor
for (int x=0; x<szer; x++) cout<<c; // pisz znaki
cout<<endl;
}
}
int main()
{
int a,b,x,y;
system("color 2E"); // kolor tla (pierwsza cyfra 0-7) i kolor czcionki (druga cyfra 0-F)
do {
kursor(0,0); // ustaw kursor w lewym gornym wierzcholku okienka
cout<<" "; // wyczysc poprzedne dane
kursor(0,0); // ponownie ustaw kursor w lewym gornym wierzcholku okienka
cout<<"podaj x,y oraz a,b oraz znak c ";
cin>>x>>y; // wspolrzedne poczatku Twojego prostokata (lewy gorny wierzcholek)
cin>>a>>b; // podaj wymiary swojego prostokata (szrokosc i wysokosc)
cin>>c; // podaj znak ktorym mam wypelnic prostokat
prosto(x,y,a,b); // rysuj prostokat
} while (a!=0 && b!=0); // powtarzaj aż podasz rozmiary prostokata 0 0
system("PAUSE");
return EXIT_SUCCESS;
}