I - Microsoft Visual Studio C++ 1. Nowy projekt z Menu wybieramy File -> New -> Projekt -> Win32 Console Application w okienku Name: podajemy nazwę projektu w polu Location: wybieramy miejsce zapisu i wciskamy OK następnie wciskamy: Next zaznaczamy: Empty project i wciskamy Finish w oknie Solution Explorer klikamy PPM na Source Files I wybieramy: Add->New Item- >C++ File(.cpp) podajemy nazwę pliku, np. main.cpp (będzie to oznaczało, że jest głównym plikiem projektu). Kompilacja i uruchamianie: Z Menu wybieramy Debug - > Start Debugging (F5) 1
2. 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> #include <iostream> using namespace std; int main(int argc, char *argv[]) /* instrukcje funkcji main */ return 0; 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: 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 2
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. Jeżeli nasz program posiada błędy zgłasza informację o ilości błędów, gdzie te błędy się znajdują i co to są za błędy: 3
4
II podstawy C++ 3. 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 Tablice: double tablica[20] tablica o nazwie tablica przechowująca 20 wartości typu double 4. Operatory: Arytmetyczne: + dodawanie - odejmowanie / dzielenie * mnożenie % reszta z dzielenia (dzielenie modulo) = przypisanie Relacje: a = = b a < b a <= b a > b a >= b a!= b a jest równe b a jest mniejsze od b a jest mniejsze bądź równe b a jest większe od b a jest większe bądź równe b a jest różne od b 5
Logiczne Suma && Iloczyn! Negacja Złożone += -= *= /= %= np. int a = 3; 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 " 5. Instrukcje Instrukcja if: if(a>0) instrukcja do wykonania; Instrukcja if... else: if(a>0) instrukcja1; else intrukcja 2; Operator warunkowy: (wyrażenie1? wyrażenie2 : wyrażenie3) Jest on równoważny instrukcji: if(wyrażenie1) wyrażenie2 else wyrażenie3 Na przykład: (a>b? a++ : b++), czyli jeżeli a>b, to zwiększamy a, a w przeciwnym wypadku zwiększamy b. 6
Pętla for for(i=1;100;i++) intrukcje; Pętla while while(a>0) intrukcje; Pętla do... while do intrukcje; while(warunek) Instrukcja switch switch(wyrażenie) case wartość1: instrukcje1; case wartość2: instrukcje2; case wartość3: instrukcje3; default: instrukcja domyślna; 6. 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. 7
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 7. Przykłady Przykład 1 Program wypisze na ekranie tekst "PODSTAWY INFORMATYKI" a w nowym wierszu poczeka na wprowadzenie dowolnego znaku. #include <iostream> using namespace std; int main() cout << "PODSTAWY INFORMATYKI\n" ; char x; cin >> x; return 0; 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. #include <iostream> using namespace std; 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"; 8
cout << endl; system("pause"); return 0; 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. #include <iostream> using namespace std; int main () int a; cin >> a; switch (a) case 1: cout << "jeden"; 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"); return 0; 9