C++ mgr inż. Tomasz Turba Politechnika Opolska 2016
Zajęcia [ ] Przestrzenie nazw i zagnieżdżanie Struktury Dane jak tabela Struktura w funkcji Dostęp do struktury wskaźnikiem Zadanie domowe
Przestrzenie nazw Zalety: Mogą zastąpić dużo zmiennych statycznych i globalnych Przy tworzeniu biblioteki funkcji, klas, nagłówka namespace twoja_nazwa { //tutaj możemy tworzyć zmienne, funkcje, struktury } using twoja_nazwa; //wywołanie wszystkich definicji twoja_nazwa::metoda(); //inicjalizacja
#include namespace pole_figur { const double PI = 3.14; double kolo(const double PI, short r) { return(PI * r * r); } int main() { using std::cout; using std::endl; using namespace pole_figur; double r; cout << "Podaj promien kola [R]: "; std::cin >> r; cout << "\nPole kola = " << pole_figur::kolo(PI, r) << endl; getch(); return 0; }
Struktury – WTF? Struktura danych ułatwia zorganizowanie danych w wygodniejszy sposób niż tabela. Dostęp do danych obiektowy. Kropka – dostęp do danych (nowe frameworki = autopodpowiedź) struct uzers //nazwa struktury { //opis struktury std::string imie; std::string haslo; short wiek; std::char plec; };
#include using namespace std; struct uZers { std::string imie; std::string nazwisko; std::string haslo; short wiek; char* plec; }; int main() { uZers TomaszTurba = { "Tomek", "Turba", "passw0rd", 30, "M" }; //LUB uZers KevinMittnick; KevinMittnick.imie="Kevin"; KevinMittnick.nazwisko="Mittnick"; KevinMittnick.haslo="hackTEHplanet!"; KevinMittnick.wiek=45; KevinMittnick.plec="M"; cout << "Lista uZers:" << endl << "Imie: " << TomaszTurba.imie << endl << "Imie: " << KevinMittnick.imie; getch(); return(0); }
Dynamiczne wypełnianie struktur Zgodnie z deklaracją Dostęp jak w tablicy Tworzenie OBIEKTU struktury Przypisanie struktury: struct panie { short grupa; short wiek; }; … panie Marta, Ania; Marta.grupa=13; Marta.wiek=20; Marta=Ania;
#include using namespace std; struct uZers { std::string imie; std::string nazwisko; }; int main() { uZers Uzytkownicy[3]; for(short i=0;i<3;i++) { cout << "Podaj imie: "; cin >> Uzytkownicy[i].imie; cout << "Podaj nazwisko: "; cin >> Uzytkownicy[i].nazwisko; } cout << "Wprowadzone dane: " << endl; for(short i=0;i<3;i++) { cout << "Uzytkownik " << i+1 imie: " << Uzytkownicy[i].imie << ", nazwisko: " << Uzytkownicy[i].nazwisko << endl; } getch(); return(0); }
Funkcje w strukturze Wyniki Pitagoras(Trojkat pobierzboki); void WyswietlWyniki(const Wyniki wynik);
Wskaźniki w strukturze struktura * wskaznik =& dane; wskaznik->liczba;
Zadanie domowe Project Manager poprosił Cię o napisanie programu dla firmy Asseco który będzie pomagał liczyć przepracowane godziny N-pracowników określając ich indywidualne wynagrodzenie (iloczyn stawka*godziny). Wykorzystaj wiedzę nt. struktur, funkcji i opcjonalnie wskaźników. Wprowadź dane pracowników Pokaż wszystkie dane pracowników wraz z obliczeniem wynagrodzenia (funkcją) Czekaj na wybór widoku przez użytkownika dopóki nie wciśnie „4” = exit Widoki: 1=Wiek – sortowanie pracowników po wieku (od najstarszego) 2=Stawka – sortowanie pracowników po wysokości stawki (od najwyższej) 3=Przepracowane – sortowanie pracowników po ilości przepracowanych godzin (od największej) 4=Koniec = exit Wyświetl sortowanie i wróć do menu lub zakończ if getchar(‚4’);
KROK 0: Podaj liczbę pracowników do wprowadzenia: N (max=3) KROK 1: Struktura pracownika = string Imię, string Nazwisko, short Wiek, float/real Stawka, short Przepracowana_liczba_godzin. KROK 2: Podaj dane pracownika i++ = (…) … Podaj dane pracownika i<n = (…) KROK 3: Funkcją wypisz na ekranie wszystkich pracowników w postaci: Pracownik: Imię Nazwisko Wiek: XX Stawka: YY.ZZ PLN Przepracowano: HH godzin Wynagrodzenie: YYY.ZZ PLN (stawka*przepracowano) KROK 4: Czekaj na wybór widoku użytkownika: Wybierz sortowanie: 1 = WIEK 2 = STAWKA 3 = PRZEPRACOWANE 4 = KONIEC KROK 5: Wypisz widok z kroku 4 na ekranie i powróć do KROK 4 KROK 6 = Jeżeli wybrano „4” = exit();
Klasa
Metoda
Konstruktor i destruktor
Zadanie domowe