Podstawy programowania w języku C++ Zadania

Podobne dokumenty
Programowanie Obiektowew języku C++ Zadania L2

Programowanie Obiektowew języku C++ Zadania L2

Programowanie Obiektowew języku C++ Zadania L4

Podstawy programowania w języku C++ Zadania - dziedziczenie i polimorfizm

Programowanie Obiektowew języku C++ Zadania L4

Programowanie Obiektowew języku C++ Zadania L8

Programowanie Obiektowew języku C++ Zadania L9

Programowanie Obiektowo Zorientowane w języku c++ Konstruktory

Programowanie Obiektowo Zorientowane w języku c++ Przestrzenie nazw

Październik Data Dzień tygodnia Szczęśliwy numerek [Wybierz inny miesiąc]

Programowanie Obiektowo Zorientowane w języku C++ Klasy, pola, metody

Programowanie w C++ Wykład 13. Katarzyna Grzelak. 4 czerwca K.Grzelak (Wykład 13) Programowanie w C++ 1 / 26

TEMAT : KLASY DZIEDZICZENIE

2017 r. STOPA BEZROBOCIA r. STOPA BEZROBOCIA

ODCZYT STANU WODY NA RZECE DRWĘCY mierzone dla posterunku Nowe Miasto Lubawskie

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 20 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 32

PARADYGMATY PROGRAMOWANIA Wykład 3

Programowanie proceduralne w języku C++ Pętle, tablice

Programowanie w C++ Wykład 11. Katarzyna Grzelak. 13 maja K.Grzelak (Wykład 11) Programowanie w C++ 1 / 30

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Zadania z podstaw programowania obiektowego

Programowanie w C++ Wykład 12. Katarzyna Grzelak. 28 maja K.Grzelak (Wykład 12) Programowanie w C++ 1 / 27

Wyliczanie wyrażenia obiekty tymczasowe

ORGANIZATOR SPORTU DZIECI I MŁODZIEŻY W ŚRODOWISKU WIEJSKIM

dr inż. Jarosław Forenc

Programowanie w C++ Wykład 14. Katarzyna Grzelak. 3 czerwca K.Grzelak (Wykład 14) Programowanie w C++ 1 / 27

Wolumen - część II Budynki Urzędu Gminy Kulesze Kościelne i Ochotniczej Straży Pożarnej Grodzkie Nowe w grupie taryfowej G

Wskaźniki i dynamiczna alokacja pamięci. Spotkanie 4. Wskaźniki. Dynamiczna alokacja pamięci. Przykłady

Program 6. Program wykorzystujący strukturę osoba o polach: imię, nazwisko, wiek. W programie wykorzystane są dwie funkcje:

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Język C++ wykład VIII

ROK 2007 Sprawozdanie o rynku pracy Styczeń

IV SEKTOR - HARMONOGRAM WYWOZU ODPADÓW WIELKOGABARYTOWYCH Z BUDYNKÓW WIELORODZINNYCH NA 2015 ROK

PROGRAMOWANIE OBIEKTOWE W C++ cz. 2. Dziedziczenie, operacje wej cia-wyj cia, przeładowanie operatorów.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 4. Karol Tarnowski A-1 p.

IMIĘ i NAZWISKO: Pytania i (przykładowe) Odpowiedzi

Karta Aktualizacji Nr 1/P/1/2014 Instrukcji Ruchu i Eksploatacji Sieci Dystrybucyjnej

SEMESTR II. 08:15-10:30 Sieci komputerowe WYKŁAD 10:45-13:00 Sieci komputerowe LABORATORIUM 13: PRZERWA. mgr inż.

Programowanie proceduralne w języku C++ Pojęcia podstawowe - kod źródłowy

Java - tablice, konstruktory, dziedziczenie i hermetyzacja

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta Strona 1 z 26. Powrót. Full Screen. Zamknij.

KLASA UCZEN Uczen imię, nazwisko, średnia konstruktor konstruktor Ustaw Wyswietl Lepszy Promowany

Programowanie w Javie 1 Wykład i Ćwiczenia 2 Przegląd podstawowych klas w Javie (elementy programowania obiektowego) Płock, 16 października 2013 r.

Pętle i tablice. Spotkanie 3. Pętle: for, while, do while. Tablice. Przykłady

Język C++ wykład VI. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VI. dr Jarosław Mederski.

Programowanie obiektowe

1. Które składowe klasa posiada zawsze, niezależnie od tego czy je zdefiniujemy, czy nie?

Język C++ umożliwia przeciążanie operatora, tzn. zmianę jego znaczenia na potrzeby danej klasy. W tym celu definiujemy funkcję o nazwie:

Mechanizm dziedziczenia

Argumenty wywołania programu, operacje na plikach

Deklaracja i definicja metod, zwracanie wartości z metod, przekazywania parametrów do metod

Programowanie obiektowe, wykład nr 6. Klasy i obiekty

Szablony funkcji i szablony klas

GRUPA 1. Adres: Plac Kościuszki 13, Tomaszów Mazowiecki

HARMONOGRAM ZAJĘĆ J. ANGIELSKI I SEMESTR rok akademicki 2015/2016 zimowy

Programowanie obiektowe 2005/2006. Laboratorium 1. Przeciążanie funkcji

Zajęcia nr 2 Programowanie strukturalne. dr inż. Łukasz Graczykowski mgr inż. Leszek Kosarzewski Wydział Fizyki Politechniki Warszawskiej

Język C++ wykład VII. uzupełnienie notatek: dr Jerzy Białkowski. Programowanie C/C++ Język C++ wykład VII. dr Jarosław Mederski. Spis.

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

Podstawy informatyki. Informatyka stosowana - studia niestacjonarne. Grzegorz Smyk

Wymiar czasu pracy w kwartałach 2018r. pełny etat

Programowanie komputerowe. Zajęcia 7

Programowanie obiektowe

Programowanie obiektowe w języku C++ dr inż. Jarosław Forenc

Programowanie proceduralne w języku C++ Podstawy

Wprowadzenie do programowania i programowanie obiektowe

Programowanie i struktury danych

Pośrednictwo pracy i aktywne formy przeciwdziałaniu bezrobociu styczeń 2002 r. Oferty pracy

Pośrednictwo pracy i aktywne formy przeciwdziałaniu bezrobociu styczeń 2003 r. Oferty pracy

Wiadomości wstępne Środowisko programistyczne Najważniejsze różnice C/C++ vs Java

ROK 2004 Sprawozdanie o rynku pracy Styczeń

Podstawy informatyki. Elektrotechnika I rok. Język C++ Operacje na danych - wskaźniki Instrukcja do ćwiczenia

Programowanie obiektowe - Przykładowe zadania egzaminacyjne (2005/2006)

Operacje wejścia/wyjścia (odsłona druga) - pliki

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Harmonogram egzaminów w SPNJO w roku akademickim 2016/2017

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Programowanie w języku Java

Informacje ogólne. Karol Trybulec p-programowanie.pl 1. 2 // cialo klasy. class osoba { string imie; string nazwisko; int wiek; int wzrost;

Przeciążanie funkcji. Przykład 1: #include <iostream> using namespace std; double srednia(double n1, double n2) { return ((n1 + n2)/2.

Przeciążenie operatorów

Programowanie obiektowe i C++ dla matematyków

Wymiar czasu pracy w kwartałach 2018r. pełny etat

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Algorytmy i język C++

Programowanie obiektowe Wykład 3. Dariusz Wardowski. dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21

Wymiar czasu pracy w kwartałach 2018r. pełny etat

Dziedziczenie & W slajdach są materiały zapożyczone z

Techniki Programowania wskaźniki

class Student Deklaracja klasy Osoba: Deklaracja klasy Student:

Programowanie obiektowe w języku C++ Zarządzanie procesami. dr inż. Jarosław Forenc. Przeładowanie (przeciążanie) operatorów

Rozdział 4 KLASY, OBIEKTY, METODY

Podstawy obiektowości

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Język C++ zajęcia nr 2

Wstęp do Programowania 2

Zad.30. Czy można utworzyć klasę, która implementuje oba interfejsy?

Wprowadzenie do szablonów szablony funkcji

Instrukcje warunkowe i skoku. Spotkanie 2. Wyrażenia i operatory logiczne. Instrukcje warunkowe: if else, switch.

Obiekt klasy jest definiowany poprzez jej składniki. Składnikami są różne zmienne oraz funkcje. Składniki opisują rzeczywisty stan obiektu.

Transkrypt:

Podstawy programowania w języku C++ Zadania Mirosław Głowacki 1,2 1 Akademia Górniczo-Hutnicza im. Stanisława Staszica w Ktrakowie Wydział Inżynierii Metali i Informatyki Stosowanej Katedra Informatyki Stosowanej i Modelowania 2 Uniwersytet im. Jana Kochanowskiego w Kielcach Wydział Matematyczno-Przyrodnmiczy Instytut Fizyki Zakład Informatyki Kwiecień 2017 Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 1 / 12

Spis treści 1 Zadania L6 2 Podpowiedzi do zadania L6-5 Obliczanie dnia tgodnia dla konkretnej daty Dostęp do danych prywatnych klasy Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 2 / 12

Klasy - L6-1 1 Zdefiniuj klasę Student wzorując się na zmieszczonej klasie Osoba, dodając jeszcze tekstową informację o kierunku studiów. class Osoba{ public: string imie; string nazwisko; Osoba(){ imie = "Nemo"; nazwisko = "Nemo";} Osoba(string im, string nzw){ imie = im; nazwisko = nzw;} void PrzedstawSie(){ cout << "Jestem: " << imie << " " << nazwisko << endl;} }; Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 3 / 12

Klasy - L6-2 2 Utwórz program główny umieszczając w nim instrukcje powodujące kolejno: utworzenie obiektu klasy Student o nazwie stud konstruktorem domniemanym utworzenie obiektu klasy Student o nazwie jk konstruktorem pozwalającym na nadanie wartości Jan polu imie oraz Kowalski polu nazwisko, wypisanie danych zawartych w obu obiektach przy użyciu marody PrzedstawSie, przypisanie danych obiektu jk obiektowi stud. ponowne wypisanie danych zawartych w obiekcie stud. Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 4 / 12

Klasy- L6-3,L6-4 3 Zdefiniuj klasę UJK, która pozwoli na przechowywanie w tablicy spisu wszystkich studentów: na początek możesz założyć, że liczba studentów nie przekracza 100, zdefiniuj metodę dodawania nowych studentów do UJK, zdefiniuj metodę wypisywania aktualnego spisu studentów, zastanów się, jak rozdzielić odpowiedzialności pomiędzy obie klasy przy tworzeniu obu powyższych metod. 4 Zmodyfikuj powstały wcześniej program tak, aby można było zapamiętać dowolną liczbę studentów bez zbędnej rezerwacji pamięci. Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 5 / 12

Zadanie L6-5 Zdefiniować klasy data i osoba tak, aby wykonanie programu głównego: int main(){ osoba JK("Jan", "Kowalski", data(5,4,1987)); osoba AN("Anna", "Nowak", data(23,11,2001)); cout << JK; cout << AN; } spowodowało wygenerowanie strumienia wyjściowego: Jan Kowalski - data ur.: Niedziela 5-4-1987 Anna Nowak - data ur.: Piatek 23-11-2001 UWAGA: Dzień tygodnia urodzin powinien być generowany automatycznie na podstawie daty urodzenia Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 6 / 12

Spis treści 1 Zadania L6 2 Podpowiedzi do zadania L6-5 Obliczanie dnia tgodnia dla konkretnej daty Dostęp do danych prywatnych klasy Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 7 / 12

Algorytm obliczania dni tygodnia Algorytm pozwala na szybkie obliczenie dnia tygodnia dla podanej daty dzień-miesiąc-rok. Wszystkie przedstawione operacje dzielenia są operacjami dzielenia całkowitego - (np. 5/2 = 2). Na wtępie wyznaczymy dzień tygodnia (d t1 ) dla pierwszego stycznia podanego roku (r) wg równania (1) - 0 dla poniedziałku, 1 dla wtorku,..., 6 dla niedzieli y = (r 1) mod 100 c = (r 1) y g = y + y/4 { d t1 = 5 [ (c/100) mod 4 ] } + g mod 7 (1) Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 8 / 12

Tabela pierwszych dni miesięcy Teraz zdefiniujemy pomocniczą tabelę określającą wartość d p, tzn. liczbę dni roku do końca miesiąca poprzedzającego miesiąc bieżący. Tabela zdefiniowana jest dla roku nieprzestępnego. Miesiąc d p styczeń 0 luty 31 marzec 59 kwiecień 90 maj 120 czerwiec 151 Miesiąc d p lipiec 181 sierpień 212 wrzesień 243 październik 273 listopad 304 grudzień 334 Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 9 / 12

Algorytm obliczania dni tygodnia Następnie wyznaczymy dzień roku d r jako sumę d p i bieżącego dnia miesiąca d m d r = d p + d m Liczbę d r należy zwiększyć o 1 dla marca i następnych miesięcy roku przestępnego d rp = d r + d d gdzie: d d = 1 dla marca i następnych miesięcy roku przestępnego, d d = 0 dla pozostałych mniesięcy Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 10 / 12

Rok przestępny Rok jest przestępny, gdy: 1 jest podzielny przez 4 i równocześnie nie jest podzielny przez 100 - np. rok 2012, 2 jest podzielny przez 400 - np. rok 2000. Z powyższego wynika, że lata 1900, 2001, 1998 nie są przestępne. Indeks dnia tygodnia (d t ) z zakresu (0, 1,..., 6) wyznaczamy z zależności: d t = (d t1 + d rp 1) mod 7 Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 11 / 12

Podpowiedzi 1 W celu umożliwienia dostępu do danych prywatnych klasy data przeciążanemu operatorowi operator<< należy go zaprzyjaźnić z tą klasą - może to wyglądać tak: class data{ friend ostream& operator<<(ostream&, const data&); unsigned short d, m, r;... }; 2 Analogiczne zaprzyjaźnienie powinno się pojawić w klasie osoba - tym razem dla operatora: ostream& operator<<(ostream& str, const osoba& os); 3 operator<< klasy osoba powinien skorzystać z usług operatora klasy data Mirosław Głowacki (AGH, UJK) Podstawy programowania - obiektowość 2017 12 / 12