























Studiuj dzięki licznym zasobom udostępnionym na Docsity
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Przygotuj się do egzaminów
Studiuj dzięki licznym zasobom udostępnionym na Docsity
Otrzymaj punkty, aby pobrać
Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium
Społeczność
Odkryj najlepsze uniwersytety w twoim kraju, według użytkowników Docsity
Bezpłatne poradniki
Pobierz bezpłatnie nasze przewodniki na temat technik studiowania, metod panowania nad stresem, wskazówki do przygotowania do prac magisterskich opracowane przez wykładowców Docsity
Debuguj metodą gumowej kaczuszki - tłumacz działanie programu komuś/sam sobie, aby łatwiej zauważać braki w logice. Przydatne są także logi programu, ...
Typologia: Ćwiczenia
1 / 31
Ta strona nie jest widoczna w podglądzie
Nie przegap ważnych części!
mgr inż. Łukasz Janiec
Politechnika Wrocławska Wydział Elektroniki, Fotoniki i Mikrosystemów, Katedra Cybernetyki i Robotyki
rok akademicki 2021/
(^1) Motywacja
2 Garść porad
(^3) Źródła
Osoby, które ze względu na stan zdrowia, niepełnosprawność lub inne obiektywne przesłanki mogą mieć szczególne potrzeby związane ze sposobem realizacji zajęć, zaliczenia bądź przygotowaniem materiałów proszone są o zgłoszenie się na konsultacje lub po zajęciach, napisanie takiej informacji na prywatnym czacie, bądź napisanie e-maila w tej sprawie. Będę starał się, aby na moich zajęciach każdy miał równe prawo do zdobycia wiedzy i rozliczenia się z niej.
Umiejętność programowania i wiedza jest zdobywana, nie wrodzona, metodą małych kroków, najlepiej każdego dnia. To trwa (długo), praktycznie nigdy się nie kończy, ale zaczyna być interesująco już po opanowaniu podstaw. Zostanie w tym mistrzem to zadanie na całe życie.
Nauka programowania to także świetna inwestycja czasu, ponieważ programowanie może być bardzo ciekawe, kreatywne (ang. logic based creativity ), ułatwiające i usprawniające życie, a także po prostu bardzo opłacalne w większości zawodów.
Nie ominie to też Państwa aż do końca tych studiów w żaden sposób, więc warto wejść w to gładko jak najwcześniej. Konkretnie - 4 duże kursy o samym programowaniu ( PProg , PO , PAMSI, SCR cz. 1 i cz. 2), wiele kursów z Matlabem (MUD, TR, SPC...), projekty na różnych zajęciach, gdzie się programuje (od sterowników PLC, przez mikrokontrolery, do aplikacji bazodanowych i algorytmów sterowania robotami), praca inżynierska i potem magisterska. Sposób myślenia inżyniera nabywany teraz będzie wszędzie podobny.
Dobrze skonfigurowane i opanowane środowisko pomaga w programowaniu! Nie warto walczyć ze środowiskiem, ale wykorzystać je jako sojusznika w walce z zadaniem.
Programuj przyrostowo : napisz fragment kodu od razu go przetestuj i ewentualnie poprawiaj (zbieraj tu także bazę testów poprawności działania programu) - to umożliwi ominięcie wielu problemów podczas debugowania niedziałającego kodu w całości.
Debuguj metodą gumowej kaczuszki - tłumacz działanie programu komuś/sam sobie, aby łatwiej zauważać braki w logice. Przydatne są także logi programu, chociaż lepszy będzie dobry debugger.
Staraj się rozumieć instrukcje, które piszesz - jeśli czegoś nie rozumiesz, przerwij na chwilę programowanie, doczytaj o tym i dopiero po zrozumieniu wróć do pisania programu, może to wydłużyć proces pisania, ale zaprocentuje w przyszłości.
Dobrą praktyką jest pisanie kodu i programowanie w języku angielskim. Dokumentacja może być po polsku.
Szczerość wobec siebie to podstawa - jeśli masz problem nie do rozwiązania samemu, szukaj pomocy bez żadnego wstydu - to ludzie mądrzy pytają o wątpliwości, głupcy milczą.
Powiązane z powyższym - brak plagiatów itp. (inaczej 2.0), to oszukiwanie głównie samego siebie, nie tylko mnie.
Pytaj o pomoc kolejno: Google lub mnie (zajęcia, e-mail), potem kolegów lub na konsultacjach (nie tylko moich, ale dowolnego prowadzącego kurs, zadania są te same w innych grupach).
Testuj funkcjonalność programu tak, jakbyś chciał go zepsuć, mimo używania zgodnie z przeznaczeniem.
Programuj defensywnie - myśl o testach do spełnienia przez dany fragment kodu zawczasu, przed pisaniem, szczególnie o przypadkach granicznych i krytycznych (także sprzętowych, np. ograniczenia pamięciowe przy braku zwalniania pamięci).
”Programuj i pisz kod taki, jaki powinien być, a nie taki, jaki umiesz (dop. obecnie) napisać.”, ale jednocześnie...
”Póki się nie nauczysz, pisz prosty kod. Potem tym bardziej.”
Jeśli istnieje gotowe rozwiązanie (np. moduł sprzętowy do liczenia transformaty Fouriera względem implementacji tego samodzielnie), to warto je wykorzystać, jeśli nie jest to zabronione wprost (”Nie wynajdujmy koła na nowo”).
Wykorzystuj zdalne repozytoria z rozproszonych systemów kontroli wersji, jak git, do przechowywania kodu.
Powtórz/zapisz w README podstawowe komendy w terminalu do uruchamiania programów przed pisaniem sprawozdania i PRZED oddaniem/prezentacją programu na żywo.
Nie zaczynaj robienia zadania dzień lub dwa przed terminem jego oddania - odcinasz się od źródeł pomocy (konsultacje, koledzy) i pracujesz w stresie. Wiem, że wielu z Państwa na tym punkcie polegnie, ale jest to poświęcenie, na które jestem gotów.
Sztywne zasady co do formy pisania programów na zajęcia uczą wymagań stawianych także w pracy (ustalona forma projektu, standardy formatowania kodu, praca w grupie, debugowanie i pair programming, code review działającego już kodu, dobre praktyki programowania, wzorce projektowe, metodyki...), to jest konieczne.
Styl pisania kodu powinien być czytelny nie tylko dla autora w chwili jego pisania (a później niekoniecznie nawet dla niego...), musi mieć dokumentację (nazwy funkcji, argumentów + komentarze - kod powinien się także sam dokumentować dobrymi nazwami zmiennych i funkcji), projekt ma mieć jasną strukturę oraz zautomatyzowane w sobie testy (w ramach rozsądku).
Standardy formatowania GNU kodu w C są tutaj: www.gnu.org/prep/standards/html_node/Writing-C.html, zalecam od siebie też tzw. camelCase. Analogiczne poradniki znajdą Państwo np. od Google i Nokii.
Proszę zawsze przemyśleć strukturę programu, kiedy postawione będzie zadanie bez wymaganego z góry układu.
Nie wszystko o języku C i działaniu programów w komputerze w teorii i praktyce zostanie powiedziane na zajęciach, to niemożliwe ze względu na ograniczony czas i długą historię oraz szerokie wykorzystanie tego języka. Kolejny język programowania, jaki Państwo na pewno poznają, C++ , wprowadza wiele nowych elementów w porównaniu z językiem C. Jeśli chcemy ich używać, musimy najpierw zrozumieć ich działanie. Głównym rozwiązaniem tutaj jest samodzielna nauka. Aby nauczyć się dobrze języka C lub C++, konieczne jest więc czytanie o nich i praca z nimi na własną rękę. Trzeba na to poświęcić trochę czasu, tym więcej, im większe mamy problemy na początku. Nie ma innej drogi. Na szczęście istnieje wiele wspaniałych źródeł do nauki tego języka. Korzystanie z odpowiednich źródeł znacznie ułatwia nam każde zadanie. Kilka przykładów podam na kolejnych stronach.
wykłady dra Muszyńskiego literatura zebrana przez dra Muszyńskiego na jego stronie:
Rysunek: Literatura podstawowa i standard C
książki: Symfonia C++ , Pasja C++ , Opus Magnum C++ (najnowsza), Grębosz J. [łatwy, obszerny podręcznik w 3 tomach]; Język C++ - kompedium wiedzy , Stroustrup B.; Skuteczny i nowoczesny C++ , Effective C++ 3rd Edition , Meyers S.; C++ Primer ; Leppman S.B. C++ Notes for Professionals (Stackoverflow) [zaawansowane!] Google C++ Style Guide (Google) Praktyczny wstęp do wytwarzania programowania (Nokia) [zaawansowane!] https://www.freecodecamp.org/news/search?query=c++
Google to mój przyjaciel , używaj mądrze stackoverflow.com devdocs.io/c/ i en.cppreference.com/w/- dobre interaktywne dokumentacje do C/C++ płytka STM32F4 od ST i własna elektronika, dokumentacja mikrokontrolera (dalej skrót uC), Forbot.pl i poniższe - systemy wbudowane to interesujący element studiów AiR, który pojawia się na nich zdecydowanie za późno. ( Uwaga - programowanie uC w C jest czymś zgoła innym niż programowanie na Linuxie w C! Trzeba być tego świadomym, to inne zastosowanie C. ) Arduino - proste, ciekawe, bardzo tanie jako sprzęt do wejścia w elektronikę, dużo przykładów w Internecie na szybki start Atmega32 od AVR - starszy, ale nawet fajny uC, pojawi się na Państwa studiach, książki/strony o nim: książki autorstwa Mirosława Kardasia (podstawy podstaw dla uC), mikrokontrolery.blogspot.com (jw.)