W tej lekcji zajmę się omówieniem kilku najpotrzebniejszych funkcji w języku C++. Język C++ sam w sobie jest dość ubogi, nie ma wielu wbudowanych funkcji, gdyż zdecydowano poumieszczać je w oddzielnych bibliotekach, które możemy dołączyć, kiedy będziemy ich potrzebować. Omówię tutaj kilka przydatnych funkcji. Aby ich używać należy dołączyć odpowiedni plik nagłówkowy, przy pomocy dyrektywy inculde.

Funkcje konwersji

Plik nagłówkowy: "cstdlib"

Chyba najczęściej używane funkcje spośród funkcji bibliotecznych. W konsoli nie są tak potrzebne, gdyż strumienie wejścia-wyjścia automatycznie konwertują łańcuchy znaków na liczby(i odwrotnie), ale pisząc pod Windows, nie ma tak dobrze.

Funkcje służące do konwersji łańcucha znaków na liczbę, jako argument podajemy łańcuch znaków, a skonwertowana liczba jest zwracaną wartością:

int atoi(const char* tekst);
//służy do konwersji łańcucha znaków do zmiennej typu int

int atol(const char* tekst);
//konwersja łańcucha znaków do zmiennej typu long int

int atof(const char* tekst);
//konwersja łańcucha znaków do zmiennej typu float

Funkcje służące do konwersji w drugą stronę, z liczb na łańcuch znaków:

char* itoa(int konwertowana_liczba,char* wskaznik_do_tablicy,int system_liczb);

Jako pierwszy argument, podajemy liczbę(typu int), jaką mamy skonwertować, drugim jest wskaźnik do łańcucha znaków, w którym ma być skonwertowana liczba do napisu, trzecim argumentem, jest system liczb, w jakim ma zostać wyświetlony wynik, dla systemu dziesiętnego podajemy wartość 10, dla szesnastkowego 16 itd.

char* gcvt(double liczba,int ilosc_cyf,char* wskaznik_do_tablicy);

Tutaj podobnie jak na górze, tylko, że ta funkcja służy do konwersji: ułamek na tekst. Pierwszy argument to konwertowana liczba(w double) drugi parametr to ilość cyfr, które ma zawierać tekst, bo wynik zostanie zaokrąglony do żądanej ilości cyfr, i ostatnim argumentem jest wskaźnik do tablicy, w której ma być umieszczony napis.

Jeszcze mówiąc o konwersji danych muszę wspomnieć o rzutowaniu typów, spójrzmy na przykład:

#include <iostream>


double funkcja(double argument)
{
  return argument;
}

int main(int argc,char *argv[])
{
  int liczba=
10
;
  funkcja((double)liczba);
//rzutowanie!

  return EXIT_SUCCESS;
}


Mamy taką sytuację, że chcemy podać zmienną int, jako argument do funkcji, która spodziewa się zmiennej typu double. W tym celu przy podawaniu argumentu do funkcji liczba, rzutujemy wartość zmiennej typu int, na wartość zmiennej typu double. Robi się to pisząc przed nazwą zmiennej w nawiasie typ, na który rzutujemy zmienną: (double)liczba rzutujemy wartość zmiennej typu int, na wartość typu double. RZUTOWANIE TO SPOSÓB, KTÓREGO POWINNIŚMY UŻYWAĆ W OSTATECZNOŚCI, BOWIEM NIE WSZYSTKIE TYPY SIĘ POPRAWNIE RZUTUJĄ.

Generowanie liczb losowych

Plik nagłówkowy: "cstdlib"

Niezbędny wszędzie tam gdzie liczby w programie mają być losowane.

Przed używaniem funkcji generującej liczby losowe, należy zainicjować generator liczb losowych dowolną wartością, przy każdym uruchomieniu programu generator powinien być zainicjowany inną liczbą, zapobiegnie to powtarzaniu się losowanych liczb. Do tego celu można pobrać datę z systemu i tu wszystko zależy od nas, możemy dodać, pomnożyć lub zrobić kilka różnych działań na liczbach z daty, im algorytm bardziej skomplikowany tym lepiej, tak, aby wynik był zawsze inny.

void srand(unsigned int liczba_inicjująca);
//inicjalizuje generator

Funkcja losująca liczbę z określonego przedziału liczb, początkiem przedziału jest zawsze liczba 0.

int rand();
// zwraca liczbę losową

Funkcji używa się z operatorem %

rand()%
10
;

Zakres powyższej funkcji obejmuje 10 liczb, pamiętajmy, że liczymy od 0, czyli zakres wynosi od 0 do 9. Tu należy pamiętać, że po operatorze % podajemy ilość liczb w zakresie, a zaczyna się on od 0, więc gdy podajemy liczbę po %, zakres będzie się kończył liczbą o jeden mniejszą niż ta liczba. Dla przykładu, gdy po % podamy 10, to zakres będzie kończył się na liczbie o 1 mniejszej, czyli 9.

Przykład:

#include <cstdlib>
#include <iostream>


using namespace std;

int main(int argc,char* argv[])
{
  cout<<
"Podaj jakas liczbe do inicjacji jadra liczb losowych:\n"
;
  int i;
  cin>>i;
  srand(i);
  cout<<
"Rzucamy kostka...\n"
;
  system(
"PAUSE"
);
  cout<<
"Wylosowana liczba na kostce: "
<<(rand()%
6
)+
1
<<endl;
  system(
"PAUSE"
);
  return EXIT_SUCCESS;
}


W tym programie chcemy mieć zakres od 1 do 6, a wiadomo, że funkcja rand, losuje wartości tylko od 0, ale posłużyliśmy się pewnym mykiem, otóż do wyniku losowania dodajemy 1, dzięki czemu, najmniejszą wartości może być teraz 1, czy rozumiesz już jak łatwo można określić zakres losowania. Nasza funkcja losuje wartości pomiędzy 0 a 5, a my do wyniku dodajemy 1, więc uzyskujemy wartości od 1 do 6.

Funkcje matematyczne

Pliki nagłówkowe: "cmath" oraz pierwsza funkcja w "cstdlib"

W pliku "cmath" znajduje się wiele popularnych funkcji matematycznych, oto niektóre z nich:

int abs(int liczba);

Funkcja "abs" służy do obliczania wartości bezwzględnej. Jako argument podajemy liczbę całkowitą do obliczenia, zwracaną wartością jest wynik wartości bezwzględnej.

double ceil(double liczba);

Funkcja "ceil" służy do zaokrąglania w górę liczb ułamkowych.

double cos(double kat);

Funkcja "cos" zwraca cosinus kąta zmiennej kat(w radianach).

double fabs(double liczba);

Funkcja "fabs" służy do obliczania wartości bezwzględnej z liczb ułamkowych.

double floor(double liczba);

Funkcja "floor" służy do zaokrąglania w dół liczb ułamkowych.

double pow(double liczba,double potega);

Funkcja "pow" służy do podnoszenia liczb do potęgi, jako pierwszy argument podajemy wartość podnoszonej liczby, natomiast jako drugi argument potęgę, do której będziemy podnosić.

double sin(double kat);

Funkcja "sin" zwraca sinus kąta zmiennej kat(w radianach).

double sqrt(double liczba);

Funkcja "sqrt" zwraca pierwiastek drugiego stopnia zmiennej liczba.

double tan(double kat);

Funkcja "tan" zwraca tangens kąta zmiennej kat(w radianach).

Funkcja system

Plik nagłówkowy: "cstdlib"

Funkcja, którą już doskonale znamy, służy do wywoływania poleceń systemowych, każde polecenie ma swój tekst, którym go wywołujemy.

int system(const char* polecenie);

Jak widać argumentem jest łańcuch znaków(tekst).

system(
"PAUSE"
);

To polecenie jest już doskonale znane, zatrzymuje pracę programu, wyświetla napis "Aby kontynuować, naciśnij dowolny klawisz . . ."" (pod innymi systemami może wyświetlać się inny tekst) i czeka na naciśnięcie jakiegoś przycisku(sygnału z klawiatury).

system(
"CLS"
);

Polecenie "CLS" czyści ekran naszej konsoli(czarnego tła w programie).

system(
"TIME"
);

Pokazuje bieżący czas w systemie i pozwala go ponownie ustawić.

Funkcje kończące pracę programu

Plik nagłówkowy: "cstdlib"

void abort(void);

Wywołanie tej funkcji powoduje zakończenie pracy programu z powodu wystąpienia błędu.

void exit(int status);

Powoduje wyjście z programu w dowolnym miejscu. Podanie argumentu 0 zwykle oznacza, że program wykonał się poprawnie.

Wejść na stronę:     Ilość osób online:
Prawa autorskie © 2008 crayze. Wszelkie prawa zastrzeżone.
crayze7@gmail.com