Andrzej Lemański  Website
  Katedra Fizyki Ciała Stałego     Wydział Fizyki i Informatyki Stosowanej     Akademia Górniczo-Hutnicza  
[pic]

[pic]   Organizacja ćwiczeń, tematyka zajęć





1. Organizacja zajęć. Programujemy w c. Narzędzia.    powrt

UWAGA: sposob przesyłania prac z laboratorium.
Link do strony: Wysyłka prac
Archwizowanie kilku plików do skompresowanego jednego pliku z rozszerzeniem zip:
$ cd nazwa_katalogu_z_plikami
$ zip nazwa_pliku_zgodna_z_wzorcem_bez_rozszerzenia *.cpp *.h
można też tak
$ zip nazwa_pliku_zgodna_z_wzorcem_bez_rozszerzenia A.cpp B.h
generowanie sumy kontrolnej
$ md5sum nazwa_pliku_zgodna_z_wzorcem.zip



2. Programujemy w c. Make, valgrind, gdb.    powrt

UWAGA: przykładowy kod.
Link do pliku: lab02.c
1. Korzystając z kompilatora, valgrind i gdb odnaleźć błedy w dostarczonym programie.
2. Poprawić kod.
3. Dopisać funkcję, która wypełnia w tablicy struktur pierwsze wolne miejsce.
4. Dopisać funkcję, która usuwa dane z tablicy i zwalnia miejsce.
5. W main pokazać użycie tych funkcji.



3. Programujemy w c. Może już nieco w C++.    powrt

1. Korzystając z struktury z poprzednich zajęć napisać funkcję,
     która wypełni strukturę danymi a strukturę zapamięta w tablicy.
     Dane do struktury pobieramy z standardowego wejścia.

2. Napisać funkcję, która podobnie jak w punkcie pierwszym
     przypisze elementom struktury dane odpowiedniego typu.

3. W main pokazać użycie tych funkcji.

Uwaga: można stosować funkcje standardowej biblioteki C oraz poznane metody i obiekty C++ (np cin, cout, new delete).



4. Programujemy w C++. Tworzymy klasę, a także użyjemy jej obiekty.    powrt

UWAGA: przykładowy kod.
Link do pliku: lab04.cpp
1. Zaprojektować klasę Estring, która udostępni nam interfejs do posługiwania się ciągami znaków.
     w standardowej bibliotece jest taka, nazywa się std::string,
     ale jej nie wolno nam używać.
     Napiszemy własną, trochę inną.

2. Napisać funkcje, których nazwy występują w podobnym kodzie.
     operatorPlus,append, c_str,substr, swap.

3. Nie zapomnieć o stosownych konstruktorach i destruktorze.
     ale to się nie da zapomnieć, jeżeli ma zadziałać podany kod.

4. W main użycie tych funkcji prowadzi do wyniku.
abc
abc123
abc123qaz
abc123
ert
789
12345



5. Programujemy w C++. Kontynuacja projektowania klasy.    powrt

UWAGA: przykładowy kod.
Link do pliku: lab05.cpp
1. Uzupełnić klasę Estring z poprzednich zajęć, która udostępni nam dalsze publiczne funkcje.
     W dalszym ciągu nie wolno nam używać klasy std::string z standardowej biblioteki,

2. Napisać funkcje, których nazwy występują w podanym kodzie.
sygnatury tych funkcji są nastepujące:

     Estring& assign ( const Estring& str);
funkcja ta zastępuje napis kopią napisu z argumentu str, zwraca *this.

     Estring& replace ( size_t pos1, size_t n1, const Estring& str );
funkcja ta zastępuje część napisu o n1 ilości znaków od pozycji pos1 zawartością napisu z argumentu str, zwraca *this.

     Estring& insert ( size_t pos1, const Estring& str);
funkcja ta wpisuje napisu z argumentu str, od miejsce pos1 odsuwając część napisu na koniec, zwraca *this.

     typ size_t mozna zastąpić typem unsigned int lub unsigned long int.

3. Nie zapomnieć o stosownych konstruktorach i destruktorze.
     ale to się nie da zapomnieć, jeżeli ma zadziałać podany kod.

4. W main użycie tych funkcji prowadzi do wyniku.
abc
0123456789
0123progra
0123123progra



6. Programujemy w C++. Operatory.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

1. Napisać klasę, która może reprezentować wektor pewnej wielkości fizycznej
     ( np. przesunięcie, siła ).

2. Napisać operatory dodawania, odejmowania, mnożenia i porównania wektorów.

3. Nie zapomnieć o fakcie, że wektor ma reprezentować konkretną wielkość,
     czyli także poprawne jednostki.

4. W main pokazać użycie napisanych operatorów.
D = A + B + C
D += A; E = A*B
F = C - A - B
if( A == B ) {}
if( A != B ) {}



7. Programujemy w C++. Dziedziczenie.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

UWAGA: przykładowy kod.
Link do pliku: lab07.cpp
1. Napisać klasę Instrument, która reprezentuje instrument muzyczny.
     ( np. instrument smyczkowy ).
     klasa ma być zaprojektowana do dziedziczenia.

2. Napisać klasy Skrzypce i Altówka dziedziczące po klasie Instrument ,      klasy te muszą mieć metodę, która wykonuje      właściwą część partytury.
     partytura to ciąg znaków o zmiennej ilości przechowywanej
     w pamięci przydzielanej przez operator new


4. Wynikiem działania przykładowego kodu ma być wyświetlony na konsoli tekst.
imitujący nuty
class Skrzypce ahcc
class Skrzypce cde
class Altowka gaha
class Altowka fgc



8. Programujemy w C++. Klasy.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

UWAGA: przykładowy kod.
Link do pliku: lab08.cpp
1. Napisać klasę PIterator, która pozwala na iterację po zbiorze elementów PersonSet
     obiektów klasy Person.

2. Napisać najprostszą wersję klasy Person przechowujacą nazwisko
3. Napisać najprostszą wersję klasy PersonSet przechowujacą w dowolny sposób obiekty klasy Person


4. Wynikiem działania przykładowego kodu mają być wyświetlone nazwiska.
umieszczone w zbiorze Personset



9. Programujemy w C++. Klasy. Operatory.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

UWAGA: przykładowy kod.
Link do pliku: lab09.cpp
1. Uzupełnić, poprawić lub napisać na nowo klasę PIterator,
     która pozwala na iterację po zbiorze elementów PersonSet
     obiektów klasy Person.

2. Uzupełnić, jeżeli zachodzi potrzeba wersję klasy Person przechowujacą nazwisko
Link do pliku: Person.cpp
Link do pliku: Person.h
3. Uzupełnić wersję klasy PersonSet przechowujacą obiekty klasy Person
Link do pliku: PersonSet.cpp
Link do pliku: PersonSet.h


4. Wynikiem działania przykładowego kodu mają być wyświetlone nazwiska.
     umieszczone w zbiorze Personset
5. Uwaga: funkcje begin() i end() powinny być zdefiniowane w klasie PersonSet,
     to wynika z kodu funkcji main() w pliku lab09.cpp.
6. Operatory *, !=, ++ to operatory klasy PIterator.
7. Brak komentarzy jest celowy. Kod jest wyczyszczony z instrukcji sprawdzających
     np. przekroczenie zakresu.



10. Programujemy w C++. Szablony.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

UWAGA: przykładowy kod.
Link do pliku: lab10.cpp
1. Napisać klasę base_ptr,
     która realizuje zadania inteligentnego wskaźnika,
     ze zliczaniem referencji.


2. Wynikiem działania przykładowego kodu ma być wyświetlony na konsoli tekst.
test_base_ptr::value_type is const: 0
[Dostep przez ->] 1
Type: test, object: 1, reference count: 2
Type: test, object: 8, reference count: 3
Type: test, object: 3, reference count: 1
test_const_ptr::value_type is const: 1
[Dostep przez -> i *] 3 3
Type: test, object: 3, reference count: 1
[Dostep przez *] test string
Type: std::string, object: test string, reference count: 1000
Type: std::string, object: test string, reference count: 2
Type: std::string, object: test string, reference count: 1
Type: std::string, object: NULL, reference count: 0



11. Programujemy w C++. Szablony.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

UWAGA: przykładowy kod.
Link do pliku: lab11.cpp
1. Napisać klasę iterator (uogólniony wskaźnik), która pozwala na iterację
po zbiorze elementów template <typename T> PSet
     obiektów typu T.
2. Skorzystać z wyników ćwiczeń 8-10.



3. Wynikiem działania analogicznego do przykładowego kodu ma być wyświetlona zawartość klasy T.



12. Programujemy w C++. Strumienie. Operacje I/O.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

Napisać klasę - przykład prostej bazy opartej o plik tekstowy.
     Obiekt tej klasy będzie odpowiedzialny za wczytanie zawartości pliku
     i umieszczeniu jej w tablicy obiektów pewnego typu.

1. Napisać klasę przechowującą zbiór danych - jeden rekord bazy danych.
     Obiekty tego typu zawierają: nazwisko, imię, nr telefonu, mail, ilość punktów,
     wartość punktów ( liczba zmiennoprzecinkowa)
2. Napisać funkcję, która nadaje wartości zmiennym w obiektach klasy z pkt.1
     wartości te wczytywane są z klawiatury.
3. Napisać klasę, która posiada funkcję wczytującą z pliku wartości zmiennych,
     i inicjuje tymi wartościami obiekt klasy z pkt.1,
     po czym umieszcza obiekt w tablicy.
     Pojedyncza linia w pliku to zawartość jednego obiektu z pktu.1
4. Posiada funkcję zapisującą do pliku zawartość wymienionej tablicy.
     Pojedyncza linia w pliku to zawartość jednego obiektu z pktu.1

5. Posiada funkcję wyświetlającą zawartość wymienionej tablicy.
     w ładny sformatowany sposób.

6. W main, korzystając z napisanych klas,
     utworzyć tablicę obiektów,
     zapisać jej zawartość do pliku,
     wczytać zawartość pliku do innej tablicy,
     utworzyć jeszcze jeden obiekt i nadać wartości zmiennym korzystając z funkcji pkt.2,
     umieścić ten obiekt w tablicy,
     tablicę ponownie zapisać do pliku,
     wyświetlić zawartość tablicy.



13. Programujemy w C++. Strumienie. Operacje I/O.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

Napisać klasy obudowujące odczyt i zapis do pliku.
    
     .

1. Napisać klasę odczytującą zawartość pliku tekstowego.
     Obiekty tej klasy posiadają konstruktor, którego argumentem jest
     nazwa pliku ( lub pełna nazwa razem z nazwami katalogów )
2. Obiekty tej klasy posiadają funkcję, która odczytuje pełną linię tekstu
     i zwraca w postaci obiektu klasy string.
     wartości te wczytywane są z klawiatury.
3. Otwarcie pliku następuje przy pierwszym odczycie,
     zamknięcie pliku w chwili usunięcia obiektu,
     sytuacje błedne sygnalizowane są wyjątkami.
4. Napisać podobną klasę zajmującą się zapisem.

5. W main, wykorzystać klasy do rozwiązania problemu,
     toczy się eksperyment, który dostarcza serii dwóch typów danych,
     każdy pojedynczy pomiar charakteryzuje się:
     nazwą mierzonego parametru, liczbą porządkową,
     jednostką mierzonej wartości, wartością pomiaru.
     Pomiary te należy zapisać do pliku, zapisy będą wymieszane.
     Odczytać pomiar jednego typu
     i wyświetlić na ekranie w kolumnach:
     liczba porządkowa, wartość, jednostka,
     kolumny powinny być sformatowane.



14. Programujemy w C++. Kontenery STL.    powrt

Uwaga: rozwiązanie wysyłane po zakończeniu zajęć, będzie oceniane
z uwzględnieniem tego faktu.

Wykorzystanie biblioteki STL.


1. Napisać klasę P przechowującą wartości Nazwisko, Imie, Pesel.
2. Napisać funkcję, której argumentami są dwie listy obiektów typu P,
     funkca ta łączy zawartość obu argumentów.
     usuwa wartości powtarzające się,
     sortuje wg wartości Pesel,
     zwraca w postaci listy.

3. W main, napisać test pokazujący skuteczność rozwiązania.



line
Ostatnia modyfikacja: Poniedziałek, 4 maja 2015