1. Struktura programu c++ Ogólna struktura programu w C++ składa się z kilku części: część 1 część 2 część 3 część 4 #include <cstdlib> int main(int argc, char *argv[]) /* instrukcje funkcji main */ Część 1 - biblioteki Ta część programu opisuje biblioteki jakie mają być dołączone do programu. Biblioteki to pliki, których zawartość jest dołączana do programu za pomocą dyrektywy preprocesora #include. Biblioteka to plik o nazwie podanej w nawiasie "< nazwa biblioteki >", który posiada między innymi definicje przydatnych funkcji. Biblioteka cstdlib zawiera funkcje ogólne takie jak konwersje, alokacja pamięci czy funkcje matematyczne. Biblioteka iostream (input/output stream) jest standardową biblioteką wejścia/wyjścia w C++. Jeśli chcemy coś wyświetlać na ekranie (za pomocą obiektu cout i przeciążonego operatora "<<"), lub pobierać dane z klawiatury (za pomocą obiektu cin i przeciążonego operatora ">>") musimy ją dodać do nagłówka programu, np. math.h - > cmath Część 2 - przestrzenie nazw Dyrektywę using namespace musimy użyć w przypadku, gdy zamiast pliku iostream.h, będziemy używać iostream, w celu udostępnienia definicji zawartej w tym pliku. Podczas pracy nad dużymi projektami, w których używa się wielu bibliotek z licznymi deklaracjami, można natknąć się na problem konfliktu nazw - gdy kilka obiektów, typów czy funkcji ma tę samą nazwę. Rozwiązaniem może być np. zamknięcie nazw w "zakresach", w celu oddzielenia ich Wyobraźmy sobie, że mamy dwa pakiety, w których zdefiniowana jest funkcja o nazwie wspaniala(). Pierwszy pakiet jest od producenta JANEK, a drugi od MARCIN. Jeśli chcemy używać funkcji wspaniala() od MARCIN, bo uważamy, że jest lepsza, udostępniamy definicję przestrzeni nazw MARCIN: using namespace MARCIN, i nie musimy za każdym wywołaniem funkcji wspaniala(), pisać MARCIN::wspaniala(). Część 3 funkcja main Funkcja main() jest charakterystyczną funkcją w C++, która musi występować w każdym konsolowym programie. Wszystko co zaczyna się dziać w danej aplikacji, jest określana w ciele właśnie tej funkcji. Oczywiście wszystkie inne funkcje mogą być wywoływane z wnętrza tej funkcji. Funkcja main() ma kilka postaci: 1
int main() lub int main(void) lub main() - postacie równoważne, oznaczające, że w ciele funkcji pojawia się informacja zwrotna (return 0 lub return EXIT_SUCCESS), która zwraca do systemu operacyjnego informacje o zakończeniu działania danej aplikacji void main() - nie posiada informacji zwrotnej o zakończeniu działania programu, niezalecane, a w niektórych systemach niedopuszczalne int main(int argc, char *argv[]) - funkcja z argumentami. Argument int argc, mówi ile tych danych jest, natomiast char *argv[] przechowuje te dane. Część 4 życie programu W tej części programu zaczyna się życie naszej aplikacji. Wszystko to co tu napiszemy, będzie rzutowało na sposób zachowania się naszego programu. 2
2. Podstawowe typy danych W języku C++ mamy 5 podstawowych typów danych: int liczby całkowite float liczby rzeczywiste pojedynczej precyzji double liczby rzeczywiste podwójnej precyzji char typ znakowy string ciąg znaków Deklaracja zmiennej: int a; Definicja zmiennej: a=4; lub po prostu: int a=4; 3. Operatory: Arytmetyczne Relacje Logiczne + dodawanie a==b a jest równe b Suma - odejmowanie a<b a jest mniejsze od b && Iloczyn / dzielenie a<=b a jest mniejsze bądź równe b! Negacja * mnożenie a>b a jest większe od b % reszta z dzielenia (dzielenie modulo) a>=b a jest większe bądź równe b = przypisanie a!=b a jest różne od b Złożone += -= *= /= %= np. a += 4; //działanie to oznacza, że do aktualnej wartości zmiennej "a" dodajemy 4, czyli nowa wartość tej zmiennej wynosi 7 Inkrementacji i dekrementacji: ++a, a++, --a, a np. int a, b; a = 1; b = a ++; // w tym przypadku najpierw zostanie przypisana wartość do zmiennej "b", // a następnie zwiększona wartość zmiennej "a" o 1, czyli od tej chwili // " a = 2 " natomiast " b =1 " 4. Instrukcje Instrukcja if Instrukcja if... else Pętla for if(a>0) instrukcja do wykonania; if(a>0) instrukcja1; else intrukcja 2; for(i=1;i<=100;i++) intrukcje; 3
Pętla while Pętla do... while Instrukcja switch while(a>0) intrukcje; do intrukcje; while(warunek); switch(wyrażenie) case wartość1: instrukcje1; case wartość2: instrukcje2; case wartość3: instrukcje3; default: instrukcja domyślna; 5. Tablice W celu gromadzenia wielu danych różnego typu można używać tablic. Tablice statyczne mają z góry określony rozmiar, który jest ustalany w momencie tworzenia tablicy i nie może być zmieniany w trakcie działania programu. W c++ elementy tablicy zawsze są numerowane od 0. Zatem T[0] jest pierwszym elementem, a T[3] czwartym elementem tablicy T. Możliwe jest również używanie tablic dwuwymiarowych, które można traktować jak tablice tablic. Przykłady: int T[10] deklaracja tablicy T o 10 elementach typu całkowitego t[0]=3 spisanie do pierwszego elementu tablicy wartości 3 T[9]=T[3] wpisanie do 10 elementu wartości elementu czwartego X[1][0]=true wpisanie do elementu tablicy X wartości true 6. Przykłady Przykład 1 Program wypisze na ekranie tekst "PODSTAWY INFORMATYKI" a w nowym wierszu poczeka na wprowadzenie dowolnego znaku. int main() cout << "PODSTAWY INFORMATYKI\n" ; char x; cin >> x; 4
Przykład 2 Program odczytuje dwie liczby (np. oceny z kolokwium) i oblicza ich średnią. Jeśli średnia jest mniejsza niż 3.0, program wypisuje komunikat brak zaliczenia, w przeciwnym wypadku program wypisuje przedmiot zaliczony. Jeśli średnia przekracza 4.0, to dopisywane jest dodatkowo i to na wysokim poziomie. Następnie program czeka na wprowadzenie dowolnego znaku. int main () double a, b, s; cout << "Pdaj pierwsza ocene: "; cin >> a; cout << "Pdaj druga ocene: "; cin >> b; s = (a+b)/2; if (s < 3.0) cout << "brak zaliczenia"; else cout << "przedmiot zaliczony"; if (s > 4.0) cout << " i to na wysokim poziomie"; cout << endl; system("pause"); Przykład 3 Program tłumaczy liczbę na tekst. Program odczytuje liczbę całkowitą z przedziału <0,7> i wypisuje jej wartość słownie. Np. dla liczby 7 wypisuje siedem. int main () int a; cin >> a; switch (a) case 1: cout << "jeden"; 5
case 2: cout << "dwa"; case 3: cout << "trzy"; case 4: cout << "cztery"; case 5: cout << "piec"; case 6: cout << "szesc"; case 7: cout << "siedem"; default: cout << "zla liczba"; cout << endl; system("pause"); Przykład 4 Program w 10 - elementowej tablicy jednowymiarowej o nazwie tab umieszcza liczby od 1 do 10. int main() int tab[10]; // deklaracja tablicy 10-elemntowej for (int i=0; i<10; i++) //wypełnianie tablicy liczbami od 1 do 10 tab[i] = i+1; cout << "tab[" << i << "] = " << tab[i] << endl; // wypisanie tablicy system("pause"); 6