W programie zazwyczaj istnieją zmienne różnych typów - liczbowe, łańcuchy, logiczne i inne. Jeżeli chcemy używać jakiejś zmiennej to musimy ją zadeklarować podając jej typ. Oto przykład:
#include<iostream>
#include<string>
using namespace std;
int main()
{
string imie = "Zbylut";
double waga = 113.4;
cout << "Witaj " << imie << ", ja być program c++" << endl;
cout << "Gdyby ktoś się pytał to ważysz " << waga << "kg" << endl;
}
Na początku funkcji main zadeklarowaliśmy dwie zmienne -
imie i
waga. Pierwsza "typu" string, druga typu double oraz przypisaliśmy im domyślne wartości (nie jest to wymagane). Wartości zmiennych wyświetlamy wysyłając je do cout wpisując
<< nazwa_zmiennej - bez cudzysłowów. Program ten wyświetli:
Witaj Zbylut, ja być program c++
Gdyby ktoś się pytał to ważysz 113.4kg
. Typy danych opisane są nieco dalej a zanim do nich przejdziemy musimy omówić jeszcze kilka zagadnień...
#include<iostream>
#include<string>
using namespace std;
int main()
{
string imie;
double waga;
cout << "Podaj imię i wagę: ";
cin >> imie >> waga;
cout << "Witaj " << imie << ", ja być program c++" << endl;
cout << "Gdyby ktoś się pytał to ważysz " << waga << "kg" << endl;
}
Jest to przykład podobny nieco do pierwszego lecz w tym przypadku wartości zmiennych wpisujemy na rządanie programu. Definiujemy 2 zmienne, bez przypisania wartości domyślnej a następnie wyświetlamy tekst
Podaj imię i wagę: Po jego wyświetleniu program będzie czekał aż użytkownik wprowadzi dane oddzielone spacją, np.: "Jurek 100" i wciśnie enter co spowoduje dalsze wykonanie programu, który wyświetli wprowadzone dane.
cin czyli "Console Input" pobiera dane z konsoli (>> od cin do zmiennych) i przypisuje je zmiennym.
#include<iostream>
using namespace std;
double liniowa(double a, double b, double x)
{
return a*x+b;
}
int main(void)
{
double c = 2, z = 2, wynik;
wynik = liniowa(c,5,z);
cout << "Wynik funkcji: " << wynik << endl;
return 0;
}
W tym przykładzie zdefiniowaliśmy nową funkcję o nazwie
liniowa przyjmującą 3 argumenty typu double - liczby. Funkcja ta zwraca liczbę (funkcja double) a dokładniej wartość funkcji liniowej ax+b znanej każdemu z lekcji matematyki. W funkcji main zdefiniowaliśmy dwie z pośród trzech zmiennych dla funkcji oraz zmienną
wynik na wynik zwrócony przez naszą funkcję. Do zmiennej
wynik przypisujemy wartość zwróconą przez funkcję liniowa o parametrach c, 5, z - jak widać argument może być podany jako zmienna lub bezpośrednia wartość (5).
#include<iostream>
using namespace std;
int main(int argc, char **argv)
{
cout << "Nazwa programu: " << argv[0] << endl
<< "Ilość argumentów: " << argc << endl;
for(int i = 1; i < argc; i++)
{
cout << "Argument nr. " << i << " to: " << argv[i] << endl;
}
return 0;
}
Zazwyczaj do programu przekazujemy jakieś dane. By funkcja main je odbierała musi być zdefiniowana z nagłówkiem:
int main(int argc, char **argv)
int main(int argc, char **argv[])
Oba zapisy są jednoznaczne. Zmienna
argc zawiera ilość argumentów a
argv jest tablicą - listą parametrów, z czym że pierwszy element posiadający indeks/numer 0 (zero) jest nazwą skryptu. Tak więc
argv[0] to "nazwa" aplikacji,
argc ilość parametrów, a
argv[n] to n-ty parametr. W powyższym przykładzie stosujemy pętlę for wyświetlającą wszystkie elementy tablicy (bardzo podobne do PHP, czyż nie?). Tablice w C++ "nie wiedzą" ile mają argumentów, dlatego ich ilość musi być przekazana oddzielnie. Jeżeli naszą aplikację wywołamy z parametrami
./program bla bla bla --with=windows to dostaniemy:
Nazwa programu: ./a
Ilość argumentów: 5
Argument nr. 1 to: bla
Argument nr. 2 to: bla
Argument nr. 3 to: bla
Argument nr. 4 to: --with=windows
Preprocesor to program, który przetwarza kod przed przesłaniem go do kompilatora. Odpowiada on m.in. za np. zastąpnie
#include kodem tejże biblioteki ("wkleja" ją). Oprócz tego możemy z preprocesorem trochę pogadać, wszystkie instrukcję dla preprocesora noszą nazwę dyrektyw i zaczynają się od znaku #:
Pierwsza linia jest już nam znana - wstawia zawartość podanej biblioteki, z tym że dotyczy bibliotek z katalogu systemowego (biblioteki kompilatora itd.) druga wstawi plik, tyle że z bierzącego katalogu (brak ostrych nawiasów).
#define nazwa wartość
#define nazwa
#undefine nazwa
Pierwsza linijka - wszystkie wystąpienia frazy "nazwa" (leksemu) zostaną zastąpione podaną wartością.:
#define dim 256
int k = dim;
int dim2 = 1;
Da:
int k = 256;
int dim2 = 1;
Frazy zawierające w sobie zdefiniowaną nazwę nie będą zamienione :)
#undefine usuwa zdefiniowaną dyrektywę.
#define int double
int funkcja(int k, int m)
{
//cośtam
}
#undefine int
Dla danej funkcji "int" zostanie zastępiony przez "double" czyli funkcja będzie "pracowała" na zmiennych typu double a nie int. #undefine przywraca normalne znaczenie int dla dalszego kodu.
defined, !defined - zwrócą wartość prawda jeżeli nazwa jest zadeklarowana (lub gdy nie jest zadeklarowana dla !defined) lub wartość fałsz w przeciwnym wypadku. Dyrektywy te wykorzystuje się wraz z wyrażeniami warunkowymi:
#define dimen
// coś
#if defined dimem
// użyj tego kod jeżeli dimen jest zdefiniowany
#else
// jeżeli nie to tego
#endif
Oprócz tego mamy jeszcze #elif (else if), #ifdef ("skrót" od #if defined), #ifndef (#if !defined).
Przydać się to może np. do kontroli używanego kompilatora. Kompilator C++ definiuje nazwę
__cplusplus a C
__STDC__.
- Dodane: 14.07.2008 przez riklaunim