[C] C leren icm met MS Visual Studio

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
Ik heb een technische opleiding afgerond (TU) en ik wil mijn programmeer vaardigheden aanvullen. Nu heb ik mezelf voorgenomen om de basisbeginselen van het programmeren in C te leren, aangezien deze taal best wel eens gebruikt wordt in mijn vakgebied. Het doel waarvoor ik C wil gaan gebruiken is voornamelijk om S-functies in Matlab/Simulink te kunnen gebruiken. Later wil ik misschien de overstap naar C++ maken. Hoe kan ik dit het beste aanpakken?

In de FAQ staat een hele rij met boeken. Helaas zijn deze voornamelijk voor C++. MS Visual studio wordt volgens mij het meeste gebruikt tegenwoordig. Ik zou dus graag een cursus C (online / boek) voor dit programma gebruiken. Welke kunnen jullie aanraden?

Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

Je kan Visual Studio Express gratis downloaden, en daar kan je prima alle code die je in boeken tegenkomt mee draaien.

Ik kan je niet echt een boek aanraden, maar waarschijnlijk ga je op die vraag een beter antwoord krijgen als je vertelt wat je al kan qua programmeren, wat je al weet van C of talen die lijken op C.

Maar hoe dan ook, succes :)

-niks-


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11:02
Het boek voor C is The C programming language van Brian Kernighan and Dennis Ritchie, alhoewel dat geen cursusboek is. De C versie die het behandelt is redelijk achterhaald, maar de C basis komt uit dat boek.

Wikipedia: http://en.wikipedia.org/w...ogramming_Language_(book)

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
MLM schreef op zaterdag 11 april 2009 @ 19:23:
Je kan Visual Studio Express gratis downloaden, en daar kan je prima alle code die je in boeken tegenkomt mee draaien.

Ik kan je niet echt een boek aanraden, maar waarschijnlijk ga je op die vraag een beter antwoord krijgen als je vertelt wat je al kan qua programmeren, wat je al weet van C of talen die lijken op C.

Maar hoe dan ook, succes :)
Mijn programmeer vaardigheden zijn niet erg groot. Ik heb een cursus python gehad 3 jaar geleden, daarna er nooit iets mee gedaan. Verder ben ik gewend om Matlab m-files te maken. Dus ben ruim bekend met de if / else(if) statements en for loops en programmeer logica. Ook ben ik bekend met een aantal type variabelen (int, uint, boolean, etc). Dus het probleem ligt m niet zozeer in de logica die nodig is, maar de schil erom heen die nodig is voor C.

[ Voor 8% gewijzigd door zandpaddo op 11-04-2009 20:52 ]


Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 14-09 21:59

BCC

Je kan Matlab tegenwoordig toch ook gewoon naar C compilen?

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14-09 17:58

Matis

Rubber Rocket

BCC schreef op zaterdag 11 april 2009 @ 20:55:
Je kan Matlab tegenwoordig toch ook gewoon naar C compilen?
Yes dat kan zeker. Werkt niet echt super, maar het kan. Op het werk gebruiken we zelf het boek C 99, maar dat is niet echt een boek om te leren; Meer als syntaxen enzo...

Verder raad ik je aan om eens op codeproject te kijken en daar wat projectjes te proberen...

Ik zal in dat geval beginnen met Console applicaties en daarna pas GUI's gaan bouwen ;)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Heb je voor dergelijke technische dingen C nodig? Waarom kan zoiets niet in een hogere programmeertaal zoals C#? Berekeningen zijn toch taal onafhankelijk?

Gewoon nieuwschierigheidje, ik zeg verder niet dat je C# moet gaan leren ;)

[ Voor 10% gewijzigd door Verwijderd op 11-04-2009 23:13 ]


Acties:
  • 0 Henk 'm!

  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
BCC schreef op zaterdag 11 april 2009 @ 20:55:
Je kan Matlab tegenwoordig toch ook gewoon naar C compilen?
Ja dat kan zeker, maar dat wil ik niet. Ik gebruik nu al regelmatig die functie, maar het blijft zeer omslachtig soms. Programmeren in C is dan veel efficienter (als je het beheerst ;))
toaomatis schreef op zaterdag 11 april 2009 @ 22:25:
[...]


Yes dat kan zeker. Werkt niet echt super, maar het kan. Op het werk gebruiken we zelf het boek C 99, maar dat is niet echt een boek om te leren; Meer als syntaxen enzo...

Verder raad ik je aan om eens op codeproject te kijken en daar wat projectjes te proberen...

Ik zal in dat geval beginnen met Console applicaties en daarna pas GUI's gaan bouwen ;)
Voorlopig wil het het ook houden bij console-applicaties, dus alleen de code om berekeningen uit te voeren. GUI's zijn niet echt noodzakelijk voor wat ik er mee wil.

Thanks voor alle hulp tot nu toe, de site van codeproject lijkt mij voor gevorderden. Wat ik nu eerst zoek is een cursusboek/website die mij duidelijk de basis van C bijbrengt, met goede voorbeelden. Dus hoe variabelen te declareren, het gebruik van pointers, etc.

Acties:
  • 0 Henk 'm!

  • MLM
  • Registratie: Juli 2004
  • Laatst online: 12-03-2023

MLM

aka Zolo

in MSVC kan je prima console apps bouwen, en je krijgt er een leuke IDE en debugger bij, voor nop :)

in jouw geval zou ik toch eerst een cursusje basis C doorlopen, er is wel een verschil in syntax, en je hebt te maken met ingewikkeldere dingen (pointers en memory management) en dergelijke. als je al bekend met loops en dergelijke vlieg je er zo doorheen waarschijnlijk, dus misschien dat je beter een internet tutorial kan doen :)

verzin een leuke, simpele applicatie die je wilt bouwen, en bouw het :) in mijn ervaring leer je het snelste door te doen, niet door boeken te lezen :) boeken heb je pas nodig als je hebt niet meer begrijpt :P

-niks-


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Let er wel op dat MSVC++ niet volledig C99 compliant is. Het is in feite een C90 compiler die wat C++ features (zoals op willekeure plekken variabelen definieren) en andere extensies ondersteunt

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
MLM schreef op zaterdag 11 april 2009 @ 23:23:
in jouw geval zou ik toch eerst een cursusje basis C doorlopen, er is wel een verschil in syntax, en je hebt te maken met ingewikkeldere dingen (pointers en memory management) en dergelijke. als je al bekend met loops en dergelijke vlieg je er zo doorheen waarschijnlijk, dus misschien dat je beter een internet tutorial kan doen :)
Suggesties voor een goede internet tutorial? Heb er wel een paar gevonden, maar die vond ik nog niet erg duidelijk....

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 14-09 17:58

Matis

Rubber Rocket

http://www.cfanatic.com/f...eae103b082165ebc8ded0&f=9

Gewoon een beetje googlen. Begin maar met Hello World ;)

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11:02
toaomatis schreef op zondag 12 april 2009 @ 16:29:
Gewoon een beetje googlen. Begin maar met Hello World ;)
Wat eigenlijk een (legendarisch?) voorbeeld is uit het boek dat ik noemde :P

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

Verwijderd

farlane schreef op zaterdag 11 april 2009 @ 19:45:
Het boek voor C is The C programming language van Brian Kernighan and Dennis Ritchie, alhoewel dat geen cursusboek is. De C versie die het behandelt is redelijk achterhaald, maar de C basis komt uit dat boek.

Wikipedia: http://en.wikipedia.org/w...ogramming_Language_(book)
Ik heb dat boek als pdf op mijn computer staan.

snip

[ Voor 5% gewijzigd door RobIII op 13-04-2009 18:39 ]


Acties:
  • 0 Henk 'm!

  • zandpaddo
  • Registratie: Maart 2001
  • Laatst online: 27-02 21:46

zandpaddo

Samsung HD's!!!!

Topicstarter
Verwijderd schreef op zondag 12 april 2009 @ 22:37:
[...]

Ik heb dat boek als pdf op mijn computer staan.

snip
snip

[ Voor 31% gewijzigd door RobIII op 13-04-2009 18:39 ]


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op zondag 12 april 2009 @ 22:37:
[...]

Ik heb dat boek als pdf op mijn computer staan.

snip
Lijkt me nou niet de bedoeling en nogal auteursrechtelijk beschermd materiaal :?

[ Voor 8% gewijzigd door RobIII op 13-04-2009 18:39 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

RobIII schreef op maandag 13 april 2009 @ 18:35:
[...]

Lijkt me nou niet de bedoeling en nogal auteursrechtelijk beschermd materiaal :?
Inderdaad, maar het is toch wel handig om dat boek als pdf door te lezen. Of je leent het uit de bieb. Mocht je het echt gaan gebruiken dan koop je een exemplaar toch. ;)

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Verwijderd schreef op maandag 13 april 2009 @ 19:34:
[...]

Inderdaad, maar het is toch wel handig om dat boek als pdf door te lezen. Of je leent het uit de bieb. Mocht je het echt gaan gebruiken dan koop je een exemplaar toch. ;)
En dus is het daarmee goed gepraat dat je zulk materiaal aanbiedt :?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • xtra
  • Registratie: November 2001
  • Laatst online: 28-08 18:14
Hier heb ik het nodige gevonden: http://www.cprogramming.com/tutorial.html

Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
.oisyn schreef op zondag 12 april 2009 @ 00:15:
Let er wel op dat MSVC++ niet volledig C99 compliant is. Het is in feite een C90 compiler die wat C++ features (zoals op willekeure plekken variabelen definieren) en andere extensies ondersteunt
C99 Compilers zijn sowieso schaars ondanks dat de standaard toch een aantal handige dingen aan de taal toevoegt. Sterker nog, vziw is de C99 support van GCC ook nog niet helemaal af. Dus om daar nu al een compiler op af te rekenen is een beetje voorbarig :-)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Grappig dat jij vind dat ik een compiler afreken als ik slechts zeg dat je ergens op moet letten. Waar ik het over had is dat als je een boek over C99 koopt terwijl er aangeraden wordt om met VC++ Express te werken dat dan weleens niet alles kon gaan werken. Wat GCC wel en niet doet is compleet irrelevant (en als wat jij zegt waar is is mijn reactie dus ook toepasbaar op GCC)

[ Voor 28% gewijzigd door .oisyn op 13-04-2009 22:57 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • PrisonerOfPain
  • Registratie: Januari 2003
  • Laatst online: 26-05 17:08
.oisyn schreef op maandag 13 april 2009 @ 22:55:

Grappig dat jij vind dat ik een compiler afreken als ik slechts zeg dat je ergens op moet letten.
Mijn punt was dat je C99 nog niet volledig als standaard aan kunt houden omdat er nog (bijna) geen fatsoenlijke implemetaties van zijn en dat daarom dus, vanuit een practisch oogpunt, bijna irrelevant is om welke C compiler dan ook aan de C99 standaard te spiegelen.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Mijn punt was dat je C99 nog niet volledig als standaard aan kunt houden
En mijn punt is dat ik dat niet doe. Of de C boeken dat doen weet ik niet, ik heb geen verstand van C boeken. Ik zei alleen dat je er op moest letten.

Overigens bieden onder andere Comeau en Intel C++ een C99 compliant compiler, en ik gok elke moderne compiler die de EDG front-end gebruikt (waar de eerste twee ook onder vallen overigens)

[ Voor 28% gewijzigd door .oisyn op 14-04-2009 11:44 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 14-09 16:53
PrisonerOfPain schreef op dinsdag 14 april 2009 @ 02:36:
[...]

Mijn punt was dat je C99 nog niet volledig als standaard aan kunt houden omdat er nog (bijna) geen fatsoenlijke implemetaties van zijn en dat daarom dus, vanuit een practisch oogpunt, bijna irrelevant is om welke C compiler dan ook aan de C99 standaard te spiegelen.
Bijna elke recente embedded compiler en verder GCC en inderdaad Intel en Comeau, kortom bijna elke C compiler na ondersteunt C99. Van de compilers die dit niet ondersteunen, wordt alleen die van Microsoft nog heel actief gebruikt.

Microsoft heeft ook te kennen gegeven niet actief C te willen ondersteunen, eigenlijk is de compiler puur gericht op C++, al wordt C(89) natuurlijk wel ondersteunt in de compiler en is deze nog altijd wel C89 compliant, maar dit wordt niet actief onderhouden. Sterker nog, voor een aantal C99 features (zoals Variable Length Arrays) adviseren ze om C++ te gebruiken... :(

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic


Acties:
  • 0 Henk 'm!

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 11:02
Elijan9 schreef op dinsdag 14 april 2009 @ 12:59:
[...]
Microsoft heeft ook te kennen gegeven niet actief C te willen ondersteunen, eigenlijk is de compiler puur gericht op C++, al wordt C(89) natuurlijk wel ondersteunt in de compiler en is deze nog altijd wel C89 compliant, maar dit wordt niet actief onderhouden. Sterker nog, voor een aantal C99 features (zoals Variable Length Arrays) adviseren ze om C++ te gebruiken... :(
Welke constraints heb je dat je specifiek de C compiler wilt gebruiken en niet de C++ versie?

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 14-09 16:53
farlane schreef op dinsdag 14 april 2009 @ 13:27:
Welke constraints heb je dat je specifiek de C compiler wilt gebruiken en niet de C++ versie?
C99 ;) Meer specifiek: Platform-onafhankelijk C programmeren met dankbaar gebruik makende van de C99 features zodat embedded platforms niet hoeven te leiden onder de beperkingen van MSVC? En dan met name de "struct member assignments" en "Variable Length Arrays".

Neem bijvoorbeeld de Ogg encoder, deze wordt niet in C99 geschreven, puur omdat de library dan niet meer te bouwen is met behulp van MSVC. Daardoor kun je geen VLA's op de stack aanmaken en moet je altijd malloc's (op de heap) doen. Alhoewel dit "werkt" komt de volgorde van allocatie en deallocatie niet volledig overeen komt met de programma-flow, hetgeen geheugen-fragmentatie nogal verergerd op embedded targets. Dingen met de lifetime van een functie wil je in verband met geheugenfragmentatie ook alloceren op de stack en niet op de heap. Daar wil je alleen de dingen alloceren die langer dan de functie gealloceerd moeten blijven.

Stel:
functie a heeft een "n" keer 4k nodig (1) voor bewerkingen binnen de functie, en moet daarnaast ook een buffer aanmaken van 16k (2) waarin het resultaat wordt weggeschreven. De functie wordt tot een bepaald niveau recursief aangeroepen:

Wat je wilt is:
=> functie a start
- maak n keer 4k aan op de stack (1)
- maak buffer aan van 16k aan op de heap die bewaard moet blijven buiten de functie (2)
- roep functie a recursief aan
- doe iets en schrijf weg naar buffer (2)
- dealloceer de eerste array (1)
<= return vanaf functie a (geef o.a. buffer (2) terug)

Zonder enige fragmentatie. Stel nu dat alles op de heap wordt gealloceerd en functie a recursief vier keer word aangeroepen, dan is na afloop dit de layout van de heap:

[gat van 2*4k]
[16k buffer functie a niveau 0]
[gat van 2*4k]
[16k buffer functie a niveau 1]
[gat van 2*4k]
[16k buffer functie a niveau 2]
[gat van 2*4k]
[16k buffer functie a niveau 3]

Niet meteen en zeker niet direct met allocaties van deze omvang, maar na verloop van tijd kan geheugen fragmentatie een behoorlijk probleem worden op een redelijk deel van de embedded systemen. Voor deze situatie zijn nu juist de VLA's geïntroduceerd!

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Overigens ondersteunen de meeste compilers wel gewoon alloca() zodat je alsnog je allocatie op de stack kunt doen.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 14-09 16:53
alloca is volgens mij alleen maar een gcc extensie... Het werkt zeker niet onder MSVC en volgens mijn ook niet met de Intel compiler, maar dat ga ik nog even checken. Maar een workaround is een alloca definiëren inderdaad, maar dan moet je ook weer een freea definiëren die verder niet doet, behalve voor nep "alloca" allocaties die stiekem gewoon malloc op de heap uitvoeren. En die moet je dan aanroepen op alle mogelijke return-paden, waardoor je code onoverzichtelijker wordt (door alle aanroepen van deze "freea" dan we de goto's die sommige programmeurs dan opeens nodig vinden).

Maar dan zit je alsnog met C99 features zoals struct assignment en nog een paar kleinere dingen, waar je ook wel omheen kunt, maar het wordt daarmee geen C99.

Het blijft dus vervelend dat je anno 2009 in platform onafhankelijke code nog steeds rekening moet blijven houden met een enorm veelgebruikte C-compiler die nog altijd geen C99 ondersteunt... En dan vind ik dat nog het meest irritant voor Windows Mobile.

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic


Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 01:28

.oisyn

Moderator Devschuur®

Demotivational Speaker

Elijan9 schreef op dinsdag 14 april 2009 @ 17:03:
alloca is volgens mij alleen maar een gcc extensie... Het werkt zeker niet onder MSVC
Zeker wel. Ik pas het regelmatig toe in crossplatform game code (MSVC++ voor win32 en Xbox 360, en GCC voor PS3) :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Elijan9
  • Registratie: Februari 2004
  • Laatst online: 14-09 16:53
.oisyn schreef op dinsdag 14 april 2009 @ 18:24:
[...]

Zeker wel. Ik pas het regelmatig toe in crossplatform game code (MSVC++ voor win32 en Xbox 360, en GCC voor PS3) :)
Weer wat geleerd... :) Maar dan blijven er nog de andere compilers. Dus voor de alloca van MSVC++ hoef je dan ook niet een free* te doen, goed om te weten... (Dan zou het trouwens wel een hele kleine moeite moeten zijn voor Microsoft om VLA's in te bouwen voor C.)

[ Voor 27% gewijzigd door Elijan9 op 15-04-2009 11:45 ]

War is when the young and stupid are tricked by the old and bitter into killing each other. - Niko Bellic

Pagina: 1