PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : C/C++ erlernen



MiniMax
27.07.2007, 16:53
Hallo Zusammen,
hat jemand eine Idee wo ich Grundlagen der programiersprache C/C++ finde.
Lernprogramme gehen auch!

MiniMax :-s

HannoHupmann
27.07.2007, 17:16
In jeder gut sortierten Universitätsbibliothek oder FH-Bibliothek mit einem Technischen Studiengang. Dort gibt es genug Bücher.

Ansonsten gibt es unmengen Tutorials im I-Net man muss nur suchen.

Die Nadel
27.07.2007, 17:28
Hi MiniMax,
ich kann
"Programmieren in C" von Brian W. Kernigham&Dennis M.Ritchie
empfehlen, ist nicht unbedingt leicht verständlich, jedoch ausführlich.
Das Buch erklärt nicht das Programmieren an sich, sonder nur die Sprache C.
MFG Wilko

p_mork
27.07.2007, 18:08
Hallo MiniMax,

ich hab's so gelernt:
http://www.volkard.de/vcppkold/inhalt.html
http://www.cpp-tutor.de/cpp/intro/toc.htm

Als IDE kann man Dev-C++ nutzen ( http://bloodshed.net/devcpp.html )

MfG Mark

malthy
27.07.2007, 18:54
Hallo!

Ich finde die Bücher von Helmut Erlenkötter ganz ordentlich. Er hat eines über C und eines über C++ geschrieben. der Preis ist auch fair, ersteres kostet 9,90 und das zweite 10,90 €.

Gruß,
Malte

palermo
27.07.2007, 20:45
Hallo

ich kann das Buch C++ easy von Dirk Louis sehr empfehlen. Es ist super verständlich aber die Bücher von Herrn Erlenkötter sind auch ganz gut.

mfg palermo

malthy
27.07.2007, 21:49
nur der Vollständigkeit halber:

C Programmieren von Anfang an. rororo sachbuch - computer, Band 60074, ISBN-10: 3-499-60074-9

C++. Objektorientiertes Programmieren von Anfang an. rororo sachbuch - computer, Band 60077, 3-499-60077-3

MiniMax
28.07.2007, 10:27
Hallo MiniMax,

ich hab's so gelernt:
http://www.volkard.de/vcppkold/inhalt.html
http://www.cpp-tutor.de/cpp/intro/toc.htm

Als IDE kann man Dev-C++ nutzen ( http://bloodshed.net/devcpp.html )

MfG Mark

Hallo Zusammen,
eure Vorschläge sind gut!
Es gibt auch zwei Vaworiten von mir:

2 - Marks beitrag ( s. oben )
1 - HannoHupmann ( s. unten )

Auch die anderen beiträge sind gut.
D A N K E

MiniMax

-------------


In jeder gut sortierten Universitätsbibliothek oder FH-Bibliothek mit einem Technischen Studiengang. Dort gibt es genug Bücher.

MiniMax
28.07.2007, 10:28
Nochmal Hallo,
welch sprache soll ich denn jetzt Lernen? ( C , C++ , Dev-C++ )

MiniMax

ehenkes
28.07.2007, 11:11
Dev-C++ ist keine Programmiersprache, sondern eine "Integrierte Entwicklungsumgebung" (engl. IDE).

Folgende Reihenfolge empfehle ich Dir:

1) Assembler

Tools: AVR Studio und Atmel STK500 Starter Kit (ca. 65-75 Euro via z.B. ebay), geht auch ohne STK500 durch Simulation mit dem Debugger des AVR Studio (siehe Link).

Link:
http://www.henkessoft.de/Roboter/stk500.htm

2) C

Tools:
a) Dev-C++ (für den Einstieg am PC)
b) WinAVR in Verbindung mit AVR Studio für µC

Link:
http://www.pronix.de/pronix-607.html (C-Tutorial)
http://www.bloodshed.net/devcpp.html (Dev-C++)
http://www.kreatives-chaos.com/artikel/winavr-tutorial
http://www.mikrocontroller.net/articles/WinAVR

Bücher benötigst Du keines.

p_mork
28.07.2007, 11:14
Hallo MiniMax,

ob Du C oder C++ lernernen willst musst Du selbst entscheiden. Dev-C++ ist keine Programmiersprache sondern eine IDE (Integrated Development Environment - Integrierte Entwicklungsumgebung), ein Programm, das man zum Erstellen von Anwendungen braucht.

MfG Mark

ehenkes
28.07.2007, 11:17
Wenn Du nichts mit Microcontroller am Hut hast, was ich nicht annehme, wenn Du hier landest, und Objekt-Orientierte Programmierung (OOP) lernen willst, empfehle ich C++ und Java. Das richtige Forum mit allen Tipps findest Du hier: www.c-plusplus.de
Gute C++-Tutorials: siehe http://www.henkessoft.de/C++/Links/links.htm

MiniMax
28.07.2007, 12:42
Hallo zusammen,
ich möchte mal alles klarstellen:

- 13 Jahre alt
- Bremen
- Roboter, PC, Modellbau,

Ich suche einfach nur Hilfe über Roboter in diesem Forum!
Ich habe auch schon bemerkt dass alle hier sehr hilfsbereit sind.
Dafür sage ich Schonmahl D A N K E =P~

Und nun zum Eigentlichen Thema:

Ich baue mit meinem Freund, der gar keine Ahnung hat im Gegensatz zu mir hat, einen Roboter ohne irgendeinen Bausatz! Die Schaltungen Löte ich mir, anhand Bauanleitungen die im Roboter Netz sind, zusammen!
Wenn jemand Tipps, Vorschläge, Warnungen oder sogar Schaltpläne hat wäre ich sehr dankbar wenn sie mir per E-Mail geschickt oder ins Forum geschrieben werden.

MiniMax
-----------------------------------------------------------------------------

E-Mail: h.m.p.flyer@hotmail.de

ehenkes
28.07.2007, 13:05
Danke für die Info und vor allem viel Erfolg bei eurem Vorhaben. Nehmt euch nicht zu viel auf einmal vor, besser immer kleine Schritte, die ihr auch prüfen könnt.

Welchen Microcontroller wollt ihr einsetzen?
Wie wird der Roboter angetrieben und geregelt?

Schaut euch andere Vorbilder genau an:
z.B. ASURO, Nibo, c't-Bot, RP6, RN-Platinen.

MiniMax
28.07.2007, 13:27
Hallo ehenkes,
Welchen Mikrocontroller wir nehmen wollte ich euch mal Fragen!
Wie er angetrieben wird ist noch unklar, wir schwanken zwischen Kette und Rädern! Was ist besser?
Einmal die Feststehenden sachen im Überblick:

- Kamera schwenkbar
- RN-Speak
- Alle möglichen Sensoren

Welche Steuerplatine sollen wir nehmen?

MiniMax :-)

-----------------------------------------------------
E-Mail: h.m.p.flyer@hotmail.de

ehenkes
28.07.2007, 13:38
OK, also das übliche Vorhaben, ein Roboter, der "sieht, spricht und fühlt".
Setzt euch vorsichtshalber klare, technisch und finanziell erreichbare Zwischenziele. Diese beiden Boards könnten für euch das Richtige sein:
https://www.roboternetz.de/wissen/index.php/RN-Control
https://www.roboternetz.de/wissen/index.php/RNBFRA-Board
Wenn ihr einen Kettenantrieb bevorzugt, würde ich einen fertigen RP6 empfehlen, den könnt ihr dann mit Sensorik zu pflastern. Vor allem habt ihr dann schon eine funktionierende C-Bibliothek.
Prozessorempfehlung: ATmega32 oder höher.

MiniMax
28.07.2007, 13:55
Danke ehnekes!
Weitere Ideen sind auch noch gut also ich schaue morgen wiedr ins forum!

Bis bald

MiniMax

ehenkes
30.07.2007, 19:16
Wie gefällt euch der Nibo?

Asurokiller
05.08.2007, 12:39
Ein Asuro roboterbausatz ist gut geeignet um die C++ Grundlagen zu lernen.

ehenkes
05.08.2007, 13:32
Ein Asuro roboterbausatz ist gut geeignet um die C++ Grundlagen zu lernen.Das interessiert mich jetzt doch! Warum findet man keine Beschreibungen über die Art der Durchführung und Beispielprogramme in C++ für den ASURO? Auf dem ATmega128 des Nibo ist C++ überhaupt kein Problem. Allerdings muss man AVR Studio/WinAVR noch ziemlich herum heben, damit diese ansonsten komfortable Kombi überhaupt bereit ist, C++ zu übersetzen. Hier ein Beispiel-Programm für den Nibo:


#include <avr/interrupt.h>
#include "nibocc/niboconfig.hpp"

#include "nibocc/i2cmaster.hpp"
#include "nibocc/adc.hpp"
#include "nibocc/bot.hpp"
#include "nibocc/delay.hpp"
#include "nibocc/display.hpp"
#include "nibocc/floor.hpp"
#include "nibocc/graphicdisplay.hpp"
#include "nibocc/irco.hpp"
#include "nibocc/leds.hpp"
#include "nibocc/motco.hpp"
#include "nibocc/pwm.hpp"
#include "nibocc/textdisplay.hpp"

#include <stdlib.h> // RAND_MAX 32767
#include <stdint.h>
#include <string.h> // MyString

using namespace nibocc;

// Hilfsfunktionen
float SupplyVoltage(void);


// Hilfsklassen

/*****************
* Stringklasse *
******************/

/*
// nur notwenig für WinAVR bis Mai 2007 bzw. bis GCC 4.1.2
//
// Ersatz für new, new[], delete und delete[] der fehlenden C++-Standard-Bibliothek
void* operator new (size_t size) { return malloc(size); }
void* operator new[] (size_t size) { return malloc(size); }
void operator delete (void* ptr) { free(ptr); }
void operator delete[] (void* ptr) { free(ptr); }
*/

class MyString
{
private:
char * pData_;

public:
friend MyString operator+( const MyString &, const MyString & );
MyString() : pData_( NULL ) {} // inline ctor
MyString( const char * pText );
MyString( const MyString & text ); // Copy-Konstruktor
~MyString(); // dtor
const MyString & operator=( const MyString & text );

bool operator==( const MyString & text ) const;
char operator[]( int index ) const;
operator const char * () const; // cast zum C-String
operator char * () const; // cast zum C-String
int getLaenge() const;
void ausgeben() const;
};

MyString operator+( const MyString & leftstring, const MyString & rightstring );

/************************************************** ****************/

// ctor mit C-String als Argument
MyString::MyString( const char * pText ) : pData_( NULL )
{
if( pText )
{
pData_ = new char[ strlen( pText ) + 1 ];
strcpy( pData_, pText );
}
}

// copy-ctor
MyString::MyString( const MyString & text ) : pData_( NULL )
{
if( text.pData_ )
{
pData_ = new char[ strlen( text.pData_ ) + 1 ];
strcpy( pData_, text.pData_ );
}
}

// dtor
MyString::~MyString()
{
delete[] pData_;
}

// ==
bool MyString::operator==( const MyString & text ) const
{
if( pData_ == NULL || text.pData_ == NULL )
{
return ( pData_ == NULL && text.pData_ == NULL );
}
return ( strcmp( pData_, text.pData_ ) == 0 );
}

// []
char MyString::operator[]( int i ) const
{
if( i >= 0 && i < getLaenge() )
{
return pData_[i];
}
else
{
return '\0';
}
}

// Länge des Textes ermitteln
int MyString::getLaenge() const
{
if( pData_ == NULL )
{
return 0;
}
else
{
return strlen( pData_ );
}
}

// cast zu C-String
MyString::operator const char * () const
{
return pData_;
}

MyString::operator char * () const
{
return pData_;
}

// Zuweisungs-Operator
const MyString & MyString::operator=( const MyString & text )
{
if( this == &text ) // Selbstzuweisung abfangen
{
return *this;
}
delete[] pData_;
if( text.pData_ )
{
pData_ = new char[ strlen( text.pData_ ) + 1 ];
strcpy( pData_, text.pData_ );
}
else
{
pData_ = NULL;
}
return *this;
}

void MyString::ausgeben() const
{
// TODO
}

/************************************************** ****************/

MyString operator+( const MyString & leftstring, const MyString & rightstring )
{
MyString result;
if( leftstring.pData_ != NULL && rightstring.pData_ != NULL )
{
result.pData_ = new char[ strlen( leftstring.pData_ ) +
strlen( rightstring.pData_ ) + 1 ];
strcpy( result.pData_, leftstring.pData_ );
strcat( result.pData_, rightstring.pData_ );
}
else if( rightstring.pData_ != NULL )
{
result = rightstring;
}
else if( leftstring.pData_ != NULL )
{
result = leftstring;
}
return result;
}


class RandomStdlib // verwendet rand() aus <stdlib.h>
{
private:
const uint16_t seed_;
public:
RandomStdlib():seed_(static_cast<uint16_t>(3000*SupplyVoltage())){}

int getNum() const
{
static uint8_t seed_flag=0;
if(!seed_flag)
{
srand(seed_);
seed_flag = 1; // true
}
return rand();
}
};

template<typename T_Generator>
class Wuerfel
{
private:
const uint16_t maxzahl_;
const uint16_t maxrandom_;
T_Generator zahlengenerator_; // Template-Typ

public:
Wuerfel(uint16_t maxzahl):maxzahl_(maxzahl),maxrandom_(RAND_MAX-(RAND_MAX%maxzahl)) {}

uint16_t wuerfelt()
{
uint16_t r;
do{ r = zahlengenerator_.getNum(); }
while ( r >= maxrandom_ );
return ( r % maxzahl_ +1 );
}
};


int main()
{
sei();
Bot::init();
Leds::init();
Pwm::init();
Display::init();
Graficdisplay::init();

Leds::set_displaylight(1000);

Graficdisplay::move(0,10);
Graficdisplay::print_text("Nibo Lichtorgel", 0);
Graficdisplay::move(0,20);
Graficdisplay::print_text("mit Zufallsgenerator", 0);
Graficdisplay::move(0,40);
Graficdisplay::print_text("LED", 0);
Graficdisplay::move(40,40);
Graficdisplay::print_text("Color", 0);

MyString str, str1, str2;
str1 ="AVR-Programm mit";
str2 =" C++!";
str = str1 + str2;

Graficdisplay::move(0,54);
Graficdisplay::print_text( (char *) str, 0);

Wuerfel<RandomStdlib> w(6); // 1 ... 6
Wuerfel<RandomStdlib> c(3); // 1 ... 3

uint8_t wurf, color;
char text[2];

while(1)
{
static uint16_t pause = 1200;
pause -=50;
if(pause<50) pause = 50;

wurf = w.wuerfelt()-1;
color = c.wuerfelt();

itoa(wurf,text,10);
Graficdisplay::move(23,40);
Graficdisplay::print_text(text, 0);

itoa(color,text,10);
Graficdisplay::move(75,40);
Graficdisplay::print_text(text, 0);

Leds::set_status(color,wurf);
Leds::set_headlights(170*(wurf+1)); // 170...1020


Delay::delay(pause);

for(int i=0; i<6; ++i)
Leds::set_status(LEDS_OFF,i);
}

while(1);
return 0;
}

// Hilfsfunktionen

float SupplyVoltage(void)
{
bot_update();
return(0.0166 * bot_supply - 1.19);
}

Zeige bitte mal eines für den ASURO. ;-)

p_mork
05.08.2007, 14:00
Hallo,

ich habe gerade den Code duchgeguckt und verstehe eins nicht: wieso verwendet Ihr normale Methoden zum Ausgeben von Texten auf das LCD, anstatt den Operator << zu überladen um dann soetwas wie Graficdisplay<<"Hallo Welt"<<endl; schreiben zu können?

MfG Mark

ehenkes
05.08.2007, 14:10
Völlig richtig, guter Hinweis! Der Entwickler hat zunächst einfach alle Methoden aus C als statische Funktionen in eine Klasse gepackt. Das ist selbstverständlich nur ein Anfang. Nibo's Bibliothek ist gerade 14 Tage alt.
Mich interessieren mehr die weiter führenden Dinge wie FSM mit state pattern design, NN, GA, Kohonen maps, ...

tubsids
07.08.2007, 09:10
Hallo Zusammen,
hat jemand eine Idee wo ich Grundlagen der programiersprache C/C++ finde.
Lernprogramme gehen auch!

MiniMax :-s

gehe an www.c-programme.de
das ist die Beste für mich Seite, die ich gefunden habe. Gut erklärt und gibt es Beispiele, die alle funktionsfähig sind.

Grüss, tubsids

BeautyofBaud
07.08.2007, 11:20
Naja, müsstest sagen was du jetz genau zu C++ wissen willst.... Das beste standard Werk meiner Meinung nach ist immernoch C++ in 21 Tagen... allerdings SEHR unmfangreich.

Ich hab auch Volkards und paar andere Tutos gelesen (hab lange nix mehr Größeres programmiert kriege das wohl aber relativ schnell auf die Reihe *g*)... Allerdings ist mir aufgefallen, dass einige Sachen im Volkards Tuto nur mit wenigen Compilern klappen... Naja und dann macht mich dieses "Cin" Cout" immer kirre... Bin "printf" und "scanf" gewohnt *g*

C++ in 21 Tagen hab ich mir mal heruntergeladen als es noch als "Online" Version verfügbar war.

Schreib mir ne PM dann schick ichs dir per Mail.

Ansonsten... Beispiele giebs je nach Bereich verschiedene Sachen....
Netzwerktechnick, 3D progging, AVR, C-Controll,Konsolen proggn, Algorithmik-Zeugs, Programmiertechnicken,Exploitz....

Naja... da könnt ich dir auch weiterhelfen musst mir nur genauere Infos senden was du haben möchtest...

greEtz Baud

ehenkes
07.08.2007, 19:02
Das beste standard Werk meiner Meinung nach ist immernoch C++ in 21 TagenGilt in Fachkreisen eher als ungeeignet! Informiere Dich mal bei www.c-plusplus.de

BeautyofBaud
07.08.2007, 19:32
Mhm.. ich hab mit dem nicht viel gearbeitet ich find aber es ist ein sehr guter Einstieg... Nunja ehrlich gesagt befasse ich mich auch 0 mit Buch-Rezissionen.... Was ich interessant finde landet in meinem Regal

Selber C++ Gelernt hab ich mit Volkards, C++ in 21 Tagen (ab uns zu mal reingeguckt aber ich finde gerade die ersten Artikel sehr informativ)und einigen Kumpels...

greEtz Baud

ehenkes
07.08.2007, 20:37
Hier findest Du die m.E. besten deutschen C++-Tutorials:
http://www.cpp-tutor.de/
http://tutorial.schornboeck.net/inhalt.htm
http://de.geocities.com/throni3/
http://www.volkard.de/Cpp/Tutorial/Einleitung/index.html
Danach kommen dann die Bücher der C++-Cracks.

BeautyofBaud
07.08.2007, 20:51
C++ Cracks... das klingt =)...

Ein Tipp es ist vollkommen normal wenn man zwischendurch mal gelangweilt aufgiebt und 2 Tage lang nix von C++ wissen will ;) hehe.... Ich weiß noch das erste mal so n Tutorial durchgelesen hab *g*... Nach 10.000 Anläufen und Stunden langer suche @ Google um den Fehler zu finden hab ich erstmal aufgegeben und gewartet bis das Wochende zu Ende war und ich ein Kumpel fragen konnte.

greEtz Baud

ehenkes
08.08.2007, 20:28
C++ Cracks (enge Auswahl):
Bjarne Stroustrup http://www.research.att.com/~bs/ (Erfinder von C++)
Herb Sutter http://www.gotw.ca/
Scott Meyers http://www.aristeia.com/
Nicolai Josuttis http://www.josuttis.de/

Gutes deutsches Forum:
www.c-plusplus.de

BeautyofBaud
09.08.2007, 10:30
Jetz packt er gleich die Gurus aus ;).... Naja die Links sind natürlich klasse hehe aber ich weiß nicht wieviel er damit anfangen kann...

Ansonsten.... guck dir erstmal 2-3 Tutorials an und dann such dir n kleines Projekt (UND IMMER WENN MÖGLICH PROGRAMMIEREN WÄHREND DU EIN TUTORIAL LIEST!!! GANZ WICHTIG!!!! => vorallem das nachprogrammieren was die da machen... bis du den Kramm im Kopf hast)

Naja... Welcher Bereich interessiert dich denn jetz genau?

greEtz Baud

ehenkes
09.08.2007, 17:00
Jetzt packt er gleich die Gurus aus Zwinkern.... Naja, die Links sind natürlich klasseIch wollte das nicht so luftleer im Raum stehen lassen. C++ liegt mir sehr am Herzen, da es eine hervorragende Sprache ist.

BeautyofBaud
09.08.2007, 21:49
Jojo, Ich finds nur gut =).

Ich höhr immermehr wie man nur von der Zukunft von "C#" redet dabei mag ich C++ / C irgendwie viel mehr ... hat so nen Oldschool-Touch *g*

greEtz Baud

ehenkes
09.08.2007, 22:18
Ich hör immer mehr, wie man nur von der Zukunft von "C#" redetC und C++ sind im µC-Bereich Sprachen wie C# oder Java immer noch überlegen. Gerade C++ kann bei steigenden RAM-Größen an Bedeutung zulegen. Im PC-Bereich würde ich auf das Trio C++/Java/C# setzen. Da kommt es auch sehr auf die benötigte GUI an.

ehenkes
12.08.2007, 10:50
Hier findet sich ein interessantes Interview mit Scott Meyers:
http://www.aristeia.com/Papers/iX%20interview%200906.pdf


iX: Wird der Embedded-Markt der neue Markt für C++ werden?
S. M.: Ich weiß nicht, ob er der Hauptmarkt sein wird, aber er wird ganz sicher eine sehr wichtige Rolle spielen. C++ wird jedoch auch weiterhin sehr stark auf den Gebieten vertreten bleiben, auf denen die Performance maßgeblich ist, beispielsweise Videospiele, Bildverarbeitung, Finanz-Applikationen (etwa die Echtzeitanalyse von Investitionsmärkten)
sowie Simulationen diverser Art. Außerdem wird C++ weiterhin den Markt für Template-Metaprogrammierung (siehe Kasten) beherrschen. Zurzeit ist das ein winziger Markt, und ich glaube auch nicht, dass er jemals groß sein wird, aber meiner Meinung nach wird er sicherlich immer mehr an Bedeutung gewinnen.

Template-Metaprogrammierung: Sie bezeichnet die Technik, mit Hilfe von C++-Templates neuen C++-Programmcode zu generieren. Im Prinzip machen C++-Templates den Compiler zum „freikonfigurierbaren“
C++-Codegenerator. Normalerweise produziert der Compiler nur fest vorgegebene Funktions- oder Klassen-Rümpfe aus den C++-Templates. Die Template-Metaprogramming erweitert diesen Mechanismus extensiv. Dies hat diverse Vorteile: Da die Auswertung von Variablen oder Funktionen während der Kompilierung und nicht zur Laufzeit erfolgt, hat das Programm eine bessere Performance. Durch die Typesicherheit ist es sehr flexibel (die Boost Library verwendet diesen Mechanismus ebenfalls).
Demgegenüber stehen einige Nachteile:
Die Fehlermeldungen des Compilers sind schwer verständlich (nicht genügend Sprachmittel). Das gilt selbst für einfach aussehende Konstrukte, wenn man sie im Detail betrachtet.