Instrukcja

Transkrypt

Instrukcja
Laboratorium
Kierunki Rozwoju oprogramowania
Ewolucja języka C++
1. Instalacja najnowszego GCC. Dokładny opis
https://gist.github.com/application2000/73fd6f4bf1be6600a2cf9f563
15a2d91#file-how-to-install-latest-gcc-on-ubuntu-lts-txt
2. Instalacja clang-4.0. Opis w sekcji Install (development branch)
http://apt.llvm.org/
3. Kompilacja przy użyciu GCC z wykorzystaniem wszystkich
dostępnych funkcji z najnowszego standardu:
gcc main.cpp -o main -std=c++1z -fconcepts
4. Kompilacja przy użyciu pakietu LLVM
clang++ main.cpp -o main -std=c++1z -fconcepts
5. Otwórz plik ​nullptr_example.cpp​, przeanalizuj go i zastanów się czy
wszystkie linie kodu wykonają się/powinny się wykonać, a następnie
skompiluj z wykorzystaniem kompilatora G
​ CC​ w wersji nie wyższej
niż ​5​. Przeprowadź tą samą procedurę z wykorzystaniem ​GCC6.​
Dlaczego kod pomimo niezgodności typów zachowuje się w ten
sposób?
6. Otwórz plik 01.cpp, przeanalizuj go i postaraj się:
○ Zastąpić tablice wektorami
○ Usunąć (jeżeli to możliwe) allokowanie i deallokowanie pamięci
○ Usuńąć błędy logiczne i składniowe
○ Zastąpić (jeżeli możliwe) fragmenty kodu funkcjami lambda
○ Wykorzystać funkcje z STL <algorithm>
○ Zoptymalizować program (CPU Cache)
Zachowaj źródło.
7. Otwórz plik rvo.cpp. Przeanalizuj jego zawartość a następnie
skompiluj używając dodatkowej flagi ​-fno-elide-constructors​.
Skompiluj plik bez flagi i porównaj wynik. Zanotuj swoje
przemyślenia.
8. Wykonaj powyższe polecenie dla pliku ​cheap-move.cpp​ (zamiast
dodawania flagi do polecenia odkomentuj linijkę 9 i 13). Plik
uruchamiaj z wykorzystaniem polecenia time: ​time ./main​. Porównaj
wynik i zastanów się skąd bierze się różnica. Opisz swoje
przemyślenia.
9. Ściągnij i skompiluj przykłady z wykładu. Dodaj więcej wartości do
wektora wejściowego (możesz użyć nagłówka ​<random>​ i
generatora liczb pseudolosowych mt19937 z rozkładem
równomiernym). Dodaj dodatkowe warunki jakie muszą być
spełnione względem wektora wejściowego aby można go było
przetworzyć (wszystkie/co najmniej jedna/żadna wartość nie spełnia
warunku, funkcja warunkowa powinna być parametrem). Zadbaj o to
by ziarno dla generatora liczb pseudolosowych było inne przy
każdym uruchomieniu programu.
Zachowaj kod źródłowy
W sprawozdaniu powinien znaleźć się kod źródłowy z punktu ​6​ i ​9​, a także
odpowiedzi na pytania z punktów ​5​, ​7​ i ​8​ w postaci pliku tekstowego.
Całość spakuj do archiwum zip (​“imię_nazwisko.zip”​) i wyślij na adres
e-mail​ prowadzącego z tytułem [​ KRO][LAB01]Imię_nazwisko

Podobne dokumenty