====== Jak korzystać z wiki? ======
===== Nawigacja =====
Na stronach w [[https://www.dokuwiki.org/dokuwiki|DokuWiki]] spotkasz dwa typy odnośników:
* [[:start|zielone]] -- do innych stron należących do tej samej wiki
* [[https://www.dokuwiki.org/dokuwiki|niebieskie]] -- do stron "zewnętrznych"
===== Przypisy =====
Niektóre informacje uzupełniające (dodatkowe) podano w formie przypisów, np.
> //%%C++%% to bardzo przydatny język programowania((zob. [[http://www.google.com]]))//
Aby zobaczyć podgląd przypisu, najedź na niego (na liczbę) myszką. Aby przejść do przypisu, kliknij na niego LPM.
===== Znaczniki =====
W treści konspektów użyto pewnych znaczników i elementów, które mają na celu zwrócenie uwagi na niektóre zagadnienia.
==== Ważne ====
Szczególnie ważne informacja (zwykle w kontekście rozwiązania zadania) są oznaczane symbolem ":!:" albo za pomocą odpowiedniej ramki z wykrzyknikiem:
important box
==== Szczególnie przydatne informacje ====
Szczególnie przydatne informacje (np. zasady, które pozwolą Ci sprawnie rozwiązać pewne dylematy projektowe) zamieszczono w ramkach z symbolem żarówki:
tip box
==== Wskazówki i odpowiedzi ====
W niektórych zadaniach zamieszczono wskazówki i odpowiedzi w formie rozwijalnego elementu:
++++ Kliknij, aby rozwinąć... |
Treść elementu.
++++
Treść takiego elementu możesz zobaczyć klikając na jego nagłówek.
==== Informacje dodatkowe ====
Informacje dla chętnych i ciekawostki oznaczono symbolem "8-)".
===== Kursy programowania =====
Poniższe informacje odnoszą się do kursów programowania dostępnych tutaj: **[[teaching:programming:start]]**.
==== Podręcznik ====
Integralną część kursów programowania (w języku %%C++%% i w języku Python) stanowią podręczniki dostępne w formie dokumentu PDF na stronie właściwego kursu. Konspekty starają się nie dublować treści z podręczników, dlatego na początku strony poświęconej danemu zagadnieniu podano tytuły rozdziałów (w podręcznikach), z którymi należy zapoznać się, aby być w stanie rozwiązać zadania ćwiczeniowe.
==== Zadania ====
Przy większości zadań podano informację, jakiego typu elementów/konstrukcji języka należy użyć do rozwiązania problemu.
==== Jak prosić o pomoc? ====
Przede wszystkim bądź konkretny. Zastanów się -- czego dokładniej nie rozumiesz, z czym masz problem? \\
Odpowiedź w stylu //"nic nie rozumiem"// lub //"mam problem ze wszystkim"// to __nie__ są właściwe odpowiedzi.
Jeśli napisany kod nie działa i chcesz zadać pytanie prowadzącemu lub na np. [[https://stackoverflow.com/|Stack Overflow]], przygotuj tzw. //minimalny działający przykład// -- [[https://en.wikipedia.org/wiki/Minimal_working_example|minimal working example]] (MWE).
MWE powinien:
* zawierać komplet informacji niezbędnych do odtworzenia problemu (zwykle: pliki źródłowe i ew. konfiguracyjne)
* być możliwie krótki i zwięzły (m.in. należy usunąć fragmenty kodu nie związanego z problemem)
Krótki poradnik poświęcony tworzeniu MWE znajdziesz tu: [[https://stackoverflow.com/help/mcve|How to create a Minimal, Complete, and Verifiable example]]
Dodatkowo, w przypadku błędów budowania programu (kompilacji lub konsolidacji), do dobrej praktyki należy zamieszczanie pełnych logów budowania, np.:
====================[ Build | log_test | Debug ]================================
"C:\Program Files\JetBrains\CLion 2018.3.1\bin\cmake\win\bin\cmake.exe" --build D:\log-test\cmake-build-debug --target log_test -- --no-print-directory
"C:\Program Files\JetBrains\CLion 2018.3.1\bin\cmake\win\bin\cmake.exe" -SD:\log-test -BD:\log-test\cmake-build-debug --check-build-system CMakeFiles\Makefile.cmake 0
C:/PROGRA~1/MINGW-~1/X86_64~3.0-P/mingw64/bin/mingw32-make.exe -f CMakeFiles\Makefile2 log_test
"C:\Program Files\JetBrains\CLion 2018.3.1\bin\cmake\win\bin\cmake.exe" -SD:\log-test -BD:\log-test\cmake-build-debug --check-build-system CMakeFiles\Makefile.cmake 0
"C:\Program Files\JetBrains\CLion 2018.3.1\bin\cmake\win\bin\cmake.exe" -E cmake_progress_start D:\log-test\cmake-build-debug\CMakeFiles 2
C:/PROGRA~1/MINGW-~1/X86_64~3.0-P/mingw64/bin/mingw32-make.exe -f CMakeFiles\Makefile2 CMakeFiles/log_test.dir/all
C:/PROGRA~1/MINGW-~1/X86_64~3.0-P/mingw64/bin/mingw32-make.exe -f CMakeFiles\log_test.dir\build.make CMakeFiles/log_test.dir/depend
"C:\Program Files\JetBrains\CLion 2018.3.1\bin\cmake\win\bin\cmake.exe" -E cmake_depends "MinGW Makefiles" D:\log-test D:\log-test D:\log-test\cmake-build-debug D:\log-test\cmake-build-debug D:\log-test\cmake-build-debug\CMakeFiles\log_test.dir\DependInfo.cmake --color=
Scanning dependencies of target log_test
C:/PROGRA~1/MINGW-~1/X86_64~3.0-P/mingw64/bin/mingw32-make.exe -f CMakeFiles\log_test.dir\build.make CMakeFiles/log_test.dir/build
[ 50%] Building CXX object CMakeFiles/log_test.dir/main.cpp.obj
C:\PROGRA~1\MINGW-~1\X86_64~3.0-P\mingw64\bin\G__~1.EXE -g -std=gnu++14 -o CMakeFiles\log_test.dir\main.cpp.obj -c D:\log-test\main.cpp
[100%] Linking CXX executable log_test.exe
"C:\Program Files\JetBrains\CLion 2018.3.1\bin\cmake\win\bin\cmake.exe" -E cmake_link_script CMakeFiles\log_test.dir\link.txt --verbose=1
"C:\Program Files\JetBrains\CLion 2018.3.1\bin\cmake\win\bin\cmake.exe" -E remove -f CMakeFiles\log_test.dir/objects.a
C:\PROGRA~1\MINGW-~1\X86_64~3.0-P\mingw64\bin\ar.exe cr CMakeFiles\log_test.dir/objects.a @CMakeFiles\log_test.dir\objects1.rsp
C:\PROGRA~1\MINGW-~1\X86_64~3.0-P\mingw64\bin\G__~1.EXE -g -Wl,--whole-archive CMakeFiles\log_test.dir/objects.a -Wl,--no-whole-archive -o log_test.exe -Wl,--out-implib,liblog_test.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\log_test.dir\linklibs.rsp
[100%] Built target log_test
"C:\Program Files\JetBrains\CLion 2018.3.1\bin\cmake\win\bin\cmake.exe" -E cmake_progress_start D:\log-test\cmake-build-debug\CMakeFiles 0
Build finished
Taki log w szczególności zawiera informacje o użytym kompilatorze oraz o flagach kompilacji:
C:\PROGRA~1\MINGW-~1\X86_64~3.0-P\mingw64\bin\G__~1.EXE -g -std=gnu++14 -o CMakeFiles\log_test.dir\main.cpp.obj -c D:\log-test\main.cpp
które są zwykle istotne podczas diagnostyki i rozwiązywania problemów.
Aby uzyskać log budowania w CLion, w przypadku programów korzystających z CMake należy:
* dodać poniższe linijki do pliku //CMakeLists.txt// \\
set(CMAKE_VERBOSE_MAKEFILE ON)
set(CMAKE_RULE_MESSAGES OFF)
* Wejść w //File -> Settings -> Build, Execution, Deployment -> CMake// i w polu //"Build options"// wpisać ''%%--no-print-directory%%''.