-
Typy danych
void,bool,char,int,double+ ich odmiany
-
Funkcje
- sygnatura (deklaracja) = typ zwracany, nazwa, argumenty
-
Instrukcje warunkowe
if,switch/case
-
Pętle
for,while,do/while
-
Tablice
Type t[N],operator[]
- Poczytaj dokumentację std::string. Znajdziesz tam m.in. opis funkcji
std::to_string. Przyda się :) - Zadanie 1 - Calculate (5 punktów)
- Zadanie 2 - Fibonacci - rekurencja i iteracja (6 punktów)
Za dostarczenie każdego zadania przed 24.05.2020 (niedziela) do 23:59 dostaniesz 2 bonusowe punkty (razem 4 punkty za 2 zadania).
- Poczytaj dokumentację typu std::vector. Poklikaj na różne funkcje i patrz głównie na przykłady użycia na samym dole stron.
- Możesz przyjrzeć się plikom z testami w zadaniach i spróbować dopisać własne przypadki testowe
Zaimplementuj funkcję, której zadaniem ma być wykonywanie działań arytmetycznych na dwóch liczbach.
Sygnatura - std::string calculate(const std::string& command, int first, int second).
const std::string& command- rodzaj działania. Jedno zadd,subtract,multiply,divideint first- pierwsza liczbaint second- druga liczba
std::string- wynik działania jako tekst
W przypadku podania błędnego parametru command funkcja powinna zwrócić napis "Invalid data".
auto result = calculate("add", 2, 3); // result = "5"
result = calculate("multiply", 2, 3); // result = "6"
result = calculate("hello", 2, 3); // result = "Invalid data"Zaimplementuj dwie funkcje. Obie mają liczyć n-tą liczbę ciągu Fibonacciego, ale na odmienne sposoby.
- iteracyjnie (z użyciem pętli)
- rekurencyjnie (funkcja ma wołać samą siebie)
Funkcje muszą mieć określone sygnatury:
int fibonacci_iterative(int sequence);
int fibonacci_recursive(int sequence);- Zrób fork repo cpp-fundamentals
- Ściągnij swój fork -
git clone https://github.com/YOURNICK/cpp-fundamentals.git - Przejdź do katalogu cpp-fundamentals -
cd cpp-fundamentals - Utwórz gałąź o nazwie
calculatena rozwiązanie zadania calculate -git checkout -b calculate - Przejdź do katalogu module1/homework/calculate -
cd module1/homework/calculate - Tutaj znajduje się szkielet programu, który musisz wypełnić. Szkielet programu zawiera już testy, które sprawdzą, czy Twoja implementacja jest poprawna. Zanim rozpoczniesz implementację wpisz następujące zaklęcia:
mkdir build # tworzy katalog build
cd build # przechodzi do katalogu build
cmake .. # generuje system budowania wg przepisu z pliku ../CMakeLists.txt
make # kompiluje
ctest -V # odpala testy- Zaimplementuj funkcjonalność (najlepiej po kawałku, np. zacznij od samego dodawania)
- Sprawdź, czy implementacja przechodzi testy -
make(kompilacja) orazctest -V(uruchomienie testów) - Zrób commit z opisem działającej funkcjonalności -
git commit -am"adding works" - Wróć do punktu 7 i zaimplementuj kolejny kawałek. Jeśli rozwiązanie przechodzi wszystkie testy przejdź do kolejnego punktu
- Wypchnij zmiany do swojego forka -
git push origin calculate - Wyklikaj Pull Request na GitHubie.
- Poczekaj chwilę na raport Continuous Integration (CI), aby sprawdzić, czy rozwiązanie kompiluje się i przechodzi testy także na GitHubie.
- Jeśli jest ✅ - brawo, rozwiązanie jest poprawne. Jeśli jest ❌ kliknij na niego i sprawdź opis błędu. Popraw go (punkty 7-11) i poczekaj na kolejny raport CI.
Najpierw wróć na gałąź główną - git checkout master i postępuj od kroku 4 dla kolejnego zadania (stworzenie nowej gałęzi o innej nazwie)
Możesz zaobserwować, że przełączenie się na inną gałąź spowodowało, że nie masz rozwiązania pierwszego zadania. Spokojnie, jest ono po prostu na innej gałęzi. Możesz do niego wrócić przechodząc na gałąź tego zadania - git checkout nazwa.