Docsity
Docsity

Przygotuj się do egzaminów
Przygotuj się do egzaminów

Studiuj dzięki licznym zasobom udostępnionym na Docsity


Otrzymaj punkty, aby pobrać
Otrzymaj punkty, aby pobrać

Zdobywaj punkty, pomagając innym studentom lub wykup je w ramach planu Premium


Informacje i wskazówki
Informacje i wskazówki

Katedra Cybernetyki i Robotyki, Ćwiczenia z Mikrokontrolery

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

2022/2023

Załadowany 24.02.2023

Osholom
Osholom 🇵🇱

4.5

(35)

304 dokumenty

1 / 31

Toggle sidebar

Ta strona nie jest widoczna w podglądzie

Nie przegap ważnych części!

bg1
Jak przeżyć kurs Podstaw Programowania /
Programowania Obiektowego
mgr inż. Łukasz Janiec
Politechnika Wrocławska
Wydział Elektroniki, Fotoniki i Mikrosystemów, Katedra Cybernetyki i Robotyki
rok akademicki 2021/2022
mgr inż. Łukasz Janiec (PWr, W12/KCiR) Jak przeżyć... rok akademicki 2021/2022 1 / 31
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Podgląd częściowego tekstu

Pobierz Katedra Cybernetyki i Robotyki i więcej Ćwiczenia w PDF z Mikrokontrolery tylko na Docsity!

Jak przeżyć kurs Podstaw Programowania /

Programowania Obiektowego

mgr inż. Łukasz Janiec

Politechnika Wrocławska Wydział Elektroniki, Fotoniki i Mikrosystemów, Katedra Cybernetyki i Robotyki

rok akademicki 2021/

Spis treści

(^1) Motywacja

2 Garść porad

(^3) Źródła

Oznajmienie

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.

Źródła, hasła, słowa kluczowe...

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.

Do C i ogólnie (1)

wykłady dra Muszyńskiego literatura zebrana przez dra Muszyńskiego na jego stronie:

Rysunek: Literatura podstawowa i standard C

Do C i ogólnie (3)

Do C i ogólnie (4):

Do C++ i ogólnie (2)

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++

Do C/C++ i inne dodatkowe wg. mnie

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.)