Beste alle,

Ik wil graag leren programmeren in C. Ik heb geen ervaring in vergelijkbare talen. De taal waar ik voorgaand actief was was in PBASIC. Dit is een taal die bedoelt is voor het programmeren van robots (www.parallax.com). Voor de rest heb ik nergens in geprogrammeert. Welk boek zouden jullie mij advieseren? Het moet echt een boek zijn voor een beginners. Zet er ook even bij waarom je juist dit boek zo goed vindt. Dat is wat makkelijker voor de keuze.

RL600

"Het" C boek is natuurlijk "The C Programming Language" van Kernighan en Ritchie! Maar ik kan niet echt inschatten of dat een goed beginners boek is...

The C programming language is inderdaad het boek en geeft een complete beschrijving van alles wat je in C tegenkomt.

Een ander boek wat erg compleet is is deze: http://publications.gbdirect.co.uk/c_book/

Let wel op dat dit generieke C boeken zijn, die puur over C gaan en niet gericht zijn op microcontrollers. Als je meer dat wilt leren dan kun je misschien beter een boek als dit: http://www.amazon.com/Programming-Arduino-Getting-Started-Sketches/dp/… icm een Arduino aanschaffen.

Het belangrijkste is om ook gewoon te gaan programmeren; C leer je niet door alleen een boek te lezen.

Zelf programmeer ik o.a. AVR's.
Ik vind het boek van Wim Dolman erg duidelijk;
http://mic.dolman-wim.nl/index.html

Is ook te gebruiken bij het programmeren van de AVR's die op een Arduino gebruikt worden.

Sorry dat ik een beetje onduidelijk was, maar met het programmeren in PBASIS wou ik alleen zeggen wat mijn achtergrond is in programmeren. C wil ik echt leren los van de robotica. Het is vooral de bedoeling om apps te gaan maken. Hiervoor wil ik graag C leren.

RL600

Op 8 juni 2012 13:07:55 schreef RL600:
Sorry dat ik een beetje onduidelijk was, maar met het programmeren in PBASIS wou ik alleen zeggen wat mijn achtergrond is in programmeren. C wil ik echt leren los van de robotica. Het is vooral de bedoeling om apps te gaan maken. Hiervoor wil ik graag C leren.

RL600

Ga naar de bieb en pak gewoon een stapel C boeken en lees het eerste hoofdstuk en blader ze even door. Pak degenen die je het meest aanspreekt. Bijna iedere bieb zal wel het K&R boek hebben en leg die er naast als je je gekozen boek(en) bestudeerd. De K&R boek is de enige die ik aangeschaft heb, en de rest van de bieb. Leest veel makkelijker dan van je scherm.

Pak dan het internet erbij voor de compiler en tools. Kijk ook bij Lynda.com of youtube, er zitten goeie bij. Maar wat ik goed vind vind een ander bucht of te zwaar of te licht. Of te irritant, luisteren kijken, stoppen terug spoelen, shit, slechte verbinding, weer op nieuw, weer verder, eh terug. etc. Onverstaanbaar, had een Indiër gevonden, super in zijn code, maar zijn engels onverstaanbaar. Dus pak lekker een gratis boek.

Later ga je je bepaalde zaken afvragen en dan pak je de nodige forums erbij. En zoals eerder vermeld oefen, oefen en oefen. Beter in het begin tien kleine testjes dan een grote waar je later niet meer uit komt. En gebruik commentaar in je code, veel commentaar. Als je volgende week weer kijkt weet je niet meer wat het moet doen.

Echter ben ik bang dat je nu in een gebied zit dat nu niet meer bij CO past.

O, en ooit een C-programmeerbibliotheek boek ( 1984 ) om in C bomen, e.t.c. op te zetten. Twee aangeschaft dus.
Ik bedoel ermee, leen en lees de basis boeken en koop alleen datgene wat je daarna verder brengt.

Uiteraard System Libraries en frameworks etc zijn een ander verhaal en deze zal je bij je OS moeten zoeken.

Bij een linux OS zoals ubuntu zit standaard de gcc C compiler. Eerste programma:


#include <stdio.h>

static unsigned char i;

int main {
  printf("hallo\n");
  
  for (i = 0; i < 10; i++) {
    printf("i=%u\n", i);
    }
  }

dit in een tekst-editor typen, opslaan als 'test.c' in de map 'temp' (bijvoorbeeld). Open de terminal:


~$ cd temp
~$ gcc test.c
~$ ./a.out

Er gebeurt het volgende:

#include <stdio.h>

gebruik de standaard IO library. Standaard libraries bieden overal de zelfde functionaliteit en zijn ingebouwd. Je kunt het bestand 'stdio.h' niet zomaar vinden, daarom is het met < > ge-included. .h files zijn header files. Deze files genereren geen code, dat doet de .c file met dezelfde naam. Hier staan alleen de definities van de functies en variabelen in die door een andere module (.c file) gebruikt kunnen worden. In dit programma'tje gebruiken we de 'printf' functie die geformatteerde tekst naar de standaard output (= console) stuurt. Als je ooit toe bent aan zelf header files maken dan include je die met quotes - #include "test.h"

static unsigned char i;

definieer een variabele i (== reserveer een geheugenplaats) van het type char (=byte) zonder teken (van 0 tot 255), alleen te gebruiken door deze module (static).

int main() {

defineer een functie main (alle c programma's beginnen altijd met main) die als uitkomst een int (integer, meestal 4 bytes, afhankelijk van welke computer) geeft. Die uitkomst doen we nu niets mee. { betekend open een blok van statements. Het blok moet afgesloten worden met een }.

printf ("hallo\n");

stuur de string "hallo\n" naar de console. \ is het escape karakter, hiermee kun je speciale karakters sturen zoals newline (n).

for (i = 0; i < 10; i++) {

een for lus. Laat de eerder gedefinieerde variabele i starten bij 0. Ga door zolang i < 10, en hoog i steeds met 1 op (i++).

printf("i=%u\n", i);

stuur de string "i=%u\n" naar de console. % is het format karakter. Hiermee kun je aangeven dat er een decimaal getal zonder teken (u) mee wordt gegeven aan de functie (,i). Op je scherm komt dus "i=0".

----------

in de terminal:

gcc test.c

compileer test.c

./a.out

voer het programma uit (gcc geeft standaard de naam a.out aan een programma - dit kun je allemaal veranderen, daarvoor moet je de documentatie van gcc of je andere compiler doorlezen).

Dit was de spoedcursus C voor beginners. Beste manier is, zoals hier al gezegd, door gewoon te gaan programmeren. Alle fouten / dingen die je nodig hebt googelen.

Succes!

Tommyboy

Zo goed als het vroeger was, is het nooit geweest.

Je bent stap 1 vergeten: Noem je programma nooit, maar dan ook NOOIT!!!!!!! "test".

M-i-c-h-e-l

Golden Member

Zelf heb ik C geleerd uit "De taal C" van "Daryl McAllister".

Deze behandeld alleen de echte basis. Door zelf aan de slag te gaan, breid je vanzelf je kennis uit.

Op internet zijn ook genoeg cursussen / studies over C te vinden. Dat kan ook een optie zijn.

Dus je wilt apps gaan maken? Dat is wel erg vaag, kan van alles betekenen. Is het voor op de PC? Of voor in microcontrollers?

Probleem is dat dat nogal verschil maakt. De taal C zelf is niet zo moeilijk, maar dan komen de libraries (Standaard funkties) die je nodig hebt om je app te maken. Voor een PC applikatie op windows heb je heel andere funkties nodig dan in een microcontroller. En juist die libraries maken het ingewikkeld. Die worden niet behandeld in de meeste standaard 'C' boeken, dus dan moet je de documentatie gebruiken die meekomt met de programmeer tools die je gaat gebruiken.

big_fat_mama

Zie Paulinha_B

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Helemaal akkoord met deKees. Meer bepaald is K&R hoegenaamd NIET geschikt voor iemand die microcontrollers wil gaan programmeren, het boek is dan ook flink wat ouder dan die chips. K&R is goed voor iemand die weet wat programmeren is, en die in een karakter-georienteerde omgeving tekst-applicaties wil maken.

big_fat_mama

Zie Paulinha_B

hoe beter de vraag geschreven, zoveel te meer kans op goed antwoord

Noem je programma nooit, maar dan ook NOOIT!!!!!!! "test".

Waarom niet? Ik heb dat al meermaals gedaan. En er is niets ontploft, en de zon gaat nog steeds op in het oosten.

Gewoon Klaas

Henry Rolls (van Rolls- Royce): "The quality remains long after the price is forgotten,"

je zou ook hiervoor kunnen gaana, dan heb je een compleet pakket, ik heb zelf goede ervaringen met de pic boeken van Bert van Dam

http://www.elektor.nl/products/combi/electronics/combi-arm-microcontro…

JustME125

Correct me if I'm wrong!

Mijn weg door C/C++/C# was gewoon eraan beginnen. Google de basisprincipes van C bij elkaar en begin lekker in Visual Studio of een linux omgeving met simpele command line dingetjes. Probeer de hello world maar te maken en vooral te begrijpen.

Eerst de basisprincipes goed onder de knie hebben, daarna kun je relatief eenvoudig overstappen naar microcontrollers of totaal de andere kant op gaan en grafisch gaan werken in C++/C#.

Als je al een boek wil kopen, koop dan een naslagwerk over C waarin alle definities, regeltjes en de hele ins en outs van de taal uitgelegd worden. Ga geen boek met opdrachten en voorbeelden kopen want er staan ruim voldoende C tutorials op het www. Zo'n naslagwerk ga je dan gericht gebruiken als je ergens iets moet doen waarvan je weet dat het kan maar je even niet meer precies weet hoe het ook alweer moest.

Ik heb gedurende mijn opleiding een stuk C/C++ programmeren gehad. Er werd begonnen met een hoop opdrachtjes maken in C met de Borland omgeving. Dat ging al vrij snel naar iets met een stukje user-interface en wat relatief simpele dingetjes. De bedoeling was gewoon om je bekend te maken met C/C++.

Daarna kwam het stuk embedded C op een oude 8051 variant microcontroller. De syntax en basisregels kende we toen al, de uitdaging was nu dus om alles wat je kende van C in een micro te porren inclusief alle configuratie van de chip etc. Dat is allemaal controllerspecifiek en niet vastgelegd in de beschrijving van C, dat onderscheid moet je goed weten te maken want als je een C boek koopt zul je echt niks processorspecifiek vinden.

Uiteindelijk nog een blok C# en embedded systems gedaan waarbij het zaakje uiteenliep van videobewerking op een DSP tot het programmeren van een webserver en client combinatie op een linux single board computer en grafische toepassingen in C#.

Allemaal voorbeelden van C/C++/C#, geen enkel gebied was hetzelfde en toch was het allemaal in dezelfde taal geschreven (waarbij C++ een uitbreiding is van C, en C# een uitbreiding van C++).

Ik heb 1 naslagwerk over C, 1 over C++ en 1 C# for dummies achtig iets, welke weet ik even niet want ze liggen op het werk (ik ben maar een analoog man die ook een beetje embedded software doet).

@Gewoon Klaas: Ik heb een aantal boeken van Bert van Dam gelezen (min of meer) en een tweetal boeken van Elektor over C op AVR's en ik vond het allemaal te beperkt. Het brengt geen begrip van de taal en structuur, t leert je alleen maar een zeer specifiek setje kunstjes voor een specifieke familie microcontrollers, ik zou ze dus niet als uitgangspunt pakken.

Mzzls

M-i-c-h-e-l

Golden Member

Op 8 juni 2012 20:10:10 schreef big_fat_mama:
[...]

Waarom niet? Ik heb dat al meermaals gedaan. En er is niets ontploft, en de zon gaat nog steeds op in het oosten.

Nadeel als je je bestanden 'test' gaat noemen, dat je binnen de kortste keren met test1, test2, test_tijdelijk, test_michel, test120609 zit :-)

Het motto is: geef je bestandsnamen/projectnamen meteen een zinnige naam waaruit blijkt wat het programma doet.

hahah zo herkenbaar...

beste manier lijkt mij gewoon wat gaan prutsen met een editor.

fripster

Golden Member

Eens een wirehead,altijd een wirehead.... gopher://fripster.ydns.eu

ik gebruik altijd fantasienamen als 'prutje', 'effe', 'jfdkl', 'blabla'... werkt prima. Ff random op je toetsenbord rammen geeft prima resultaten ;-)

edit: oh ja, all time favorite: 'Blaat' (grijns)

[Bericht gewijzigd door fripster op zaterdag 9 juni 2012 10:41:11 (15%)]

Op 9 juni 2012 10:40:42 schreef fripster:
ik gebruik altijd fantasienamen als 'prutje', 'effe', 'jfdkl', 'blabla'... werkt prima. Ff random op je toetsenbord rammen geeft prima resultaten ;-)

edit: oh ja, all time favorite: 'Blaat' (grijns)

LOL blaat is zo herkenbaar!

flipflop

"We cannot solve our problems with the same thinking we used when we created them" - Albert Einstein

Overduidelijk, zo moet het niet dus.

Ik ga met de mening mee dat je beter gewoon kunt beginnen met programmeren. Er staat zo enorm veel op het internet over C, daar heb je geen boek voor nodig. Je hebt alleen een heel klein opstapje nodig om te beginnen, de basis. Daarvoor kan ik je http://nl.wikibooks.org/wiki/Programmeren_in_C aanraden. In het begin heb je bv pointers nog niet nodig, of structs. Als je een beetje op weg bent probeer je die dingen eens uit, en zo groeit je kennis. Het is net lopen.