[C] Język programowania C jak uczyć się

rymek94
Użytkownik
Użytkownik
Posty: 273
Rejestracja: 9 paź 2013, o 19:34
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 75 razy
Pomógł: 18 razy

[C] Język programowania C jak uczyć się

Post autor: rymek94 »

Witam, Jak w temacie, chciałem nauczyć się programować w języku C. docelowo chodziło by mi o programowanie mikroprocesorów, ogólnie nie zaczynam od 0, tzn wiem co to kompilator, wydjae mi się że wiem o co chodzi we wskaźnikach. umiem tworzyć tablice, dwu i więcej wymiarowe, dynamiczne statyczne... . Jednak mam chciałbym nauczyć się trochę więcej i usystematyzować to co już wiem. W sumie to zaczynam trochę powyżej linii startu. Potrzebowałbym ćwiczeń, które pozwoliłyby mi wykorzystywać to co już się nauczyłem. Czy ktoś zna jakieś dobre książki lub jakieś materiały, w których znajdę ćwiczenia do przerobienia by móc. No i docelowo to mikroprocesory, czy znacie jakieś godne polecenia pozycje które wprowadzają krok po kroku jak programować taki mikroprocesor, z uwzględnieniem jak taki mikroprocesor podłączyć do komputera itd...
Ostatnio zmieniony 26 cze 2015, o 08:40 przez Afish, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
chlorofil
Użytkownik
Użytkownik
Posty: 548
Rejestracja: 16 cze 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 29 razy
Pomógł: 96 razy

[C] Język programowania C jak uczyć się

Post autor: chlorofil »

Do usystematyzowania wiedzy najlepsza na początek będzie nieśmiertelna książka Kernighana i Ritchiego pt. "Język ANSI C". W książce jest zawarte całkiem sporo ćwiczeń. Przy ich rozwiązywaniu na pewno uzupełnisz swoją wiedzę oraz ją usystematyzujesz.
rymek94
Użytkownik
Użytkownik
Posty: 273
Rejestracja: 9 paź 2013, o 19:34
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 75 razy
Pomógł: 18 razy

[C] Język programowania C jak uczyć się

Post autor: rymek94 »

No co do Kernighana, to słyszałem opinię że jest to książka trochę archaiczna niby, ale wypożyczę w takim razie
chlorofil
Użytkownik
Użytkownik
Posty: 548
Rejestracja: 16 cze 2010, o 18:30
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 29 razy
Pomógł: 96 razy

[C] Język programowania C jak uczyć się

Post autor: chlorofil »

Wiesz, zasadniczo język C w ogóle jest "archaiczny" i nie zmienił się wiele od tamtej pory. Naprawdę to jest podstawowa książka, którą należy przeczytać i której materiał należy znać. Jak zrozumiesz wszystkie rozdziały i zrobisz zadania z tej książki, to będziesz mógł poczytać coś pod konkretne mikroprocesory/systemy.
rymek94
Użytkownik
Użytkownik
Posty: 273
Rejestracja: 9 paź 2013, o 19:34
Płeć: Mężczyzna
Lokalizacja: Warszawa
Podziękował: 75 razy
Pomógł: 18 razy

[C] Język programowania C jak uczyć się

Post autor: rymek94 »

Oo takiej rady oczekiwałem, dzięki
ksisquare
Użytkownik
Użytkownik
Posty: 132
Rejestracja: 1 cze 2012, o 07:04
Płeć: Mężczyzna
Lokalizacja: Polska
Pomógł: 15 razy

[C] Język programowania C jak uczyć się

Post autor: ksisquare »

A narwańców \(\displaystyle{ \mu C}\) spotkasz np. tu:
pb9
Użytkownik
Użytkownik
Posty: 3
Rejestracja: 25 cze 2015, o 14:13
Płeć: Mężczyzna
Lokalizacja: Polska

[C] Język programowania C jak uczyć się

Post autor: pb9 »

Ja polecam książkę K.N Kinga "C Programming: A Modern Approach" .Omówiona dość spora liczba zagadnień a na końcu każdego rozdziału jest sporo ćwiczeń i zadań do zrobienia.Pdfa można łatwo w necie znaleźć.
Awatar użytkownika
miki999
Użytkownik
Użytkownik
Posty: 8358
Rejestracja: 28 lis 2007, o 18:10
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Podziękował: 36 razy
Pomógł: 1001 razy

[C] Język programowania C jak uczyć się

Post autor: miki999 »

Do embedded (czyli właśnie między innymi programowanie mikrokontrolerów) teraz bardzo prosto wejść. Można bardzo prosto zacząć pisać oprogramowanie migające diodami, wyświetlającego coś na LCD albo przesyłające dane do PC. Najpopularniejsze i w Polsce są (lub były kilka lat temu) są atmegi. Są do nich nawet polskojęzyczne książki. Od siebie mogę polecić rodzinę MSP430 z bardzo tanim zestawem rozwojowym od producenta. Są jeszcze arm cortex, które są trochę bardziej skomplikowane (w sensie więcej trzeba się naczytać i napisać, by napisać pierwszy program, ale na pewno jest to cenny kolejny etap). Odradzam Arduino i tego typu wynalazki i nie uzależniać się od jakiegokolwiek środowiska typu AtmelStudio, CodeComposerStudio, CooCox itp. (chociaż oczywiście warto próbować wszystkiego, by na końcu stwierdzić, że rzeczywiście Eclipse jest najlepszy ).

Warto zaznaczyć, że podstawy elektroniki są bardzo przydatne, o ile nie konieczne. Czyli należy wiedzieć co to kondensator, rezystor, cewka i co powodują pojemności, opór, indukcyjność. Znać filtr RC, diody (zwykłe, LED), rozumieć np. klawiaturę matrycową, rozumieć różnicę między napięciem a natężeniem, pamięci flash, RAM itd. Dodatkowo czytanie schematów (często są ilustracje w dokumentacjach) gdzie mamy bufory, multipleksery, diody, bramki logiczne itp. Projektowanie i samodzielne wykonywanie PCB, to również fajna zabawa - nie zawsze gotowe płytki spełniają nasze oczekiwania.

Co do języka C. Samodzielna nauka bardzo dużo daje itp., ale jestem zdania, że dopóki nie zacznie się czegoś robić w jakimś profesjonalnym projekcie lub nie zacznie pracować, to nie jest w zwyczaju wyrabianie odpowiednich nawyków, więc zachęcam po poznaniu samej składni C i napisaniu nieco programów, zobaczyć jak robią to inni. Niekiedy to prawdziwa magia.

Kolejna rzecz ważna w embedded, to rozumienie co się kryje za tym co robimy. Czyli dlaczego przekazujemy wskaźnik a nie samą zmienną. Co się dzieje przy wchodzeniu do funkcji, co przy przerwaniu. Co oznacza, że zmienna jest const, volatile, static i gdzie się znajdują, zmienne automatyczne, stos. Co dzieje się przy budowaniu programu, kompilacja, linkowanie, sekcje pamięci.

Przy okazji warto wspomnieć, że podałem tu wiele zagadnień, o które pyta się podczas rozmów kwalifikacyjnych


Pozdrawiam.
liu
Użytkownik
Użytkownik
Posty: 1276
Rejestracja: 10 paź 2004, o 13:30
Płeć: Mężczyzna
Lokalizacja: Suchedniów
Pomógł: 104 razy

[C] Język programowania C jak uczyć się

Post autor: liu »

miki999, "Eclipse najlepszy" - przecież Atmel Studio to jest industry standard:P

W praktyce samo C stosowane w programowaniu mikrokontrolerów (szczególnie 8-bitowych) jest trywialne, bo jakież to zaawansowane mechanizmy (zarządzania pamięcią i tak dalej) da się wcisnąć w coś o architekturze harwardzkiej i do tego z 2 kB RAMu, większość kodu to przestawianie flag w rejestrach konfiguracyjnych i obsługa przerwań.
.
Za to należy się nauczyć obsługi funkcji mikrokontrolera, które nie występują w "dużej" informatyce (a przynajmniej nie oprogramowuje się ich bezpośrednio), czyli jak działa przetwornik A/D, jak się używa wbudowanych timerów, watchdoga, jak działa transmisja szeregowa, jakieś I2C i tak dalej, na czym polega PWM, czy dlaczego podpięcie silnika elektrycznego bezpośrednio pod pin wyjściowy mikrokontrolera jest słabym pomysłem.
ODPOWIEDZ