C Programmierung Übungen

Gast #4759176
Lesenswert?

Hey Leute,

ich suche nach einer oder mehreren Seiten wo man gute Übungen zur C 
Programmierung findet (kein Embeded C für Mikrocontroller).
Gerne auch Mathematisch/Numerisch angehaucht!

Falls jemand eine Buchempfehlung hat, würde ich mich auch freuen.

Tutorials usw habe ich bereits durch, suche explizit 
Übungsaufgaben/Projekte um mein Wissen anzuwenden und zu vertiefen :)

Wie habt ihr euer können gesteigert?

(Kleine Info : Ich bin Studentin 20, im 1. Semester Elektrotechnik)

Ich danke euch schonmal für eure Tipps!
Gast #4759187
Lesenswert?

Anwendungen bei denen ich viel gelernt habe war die Aufbereitung von 
Messdaten.

Entweder per Pipe oder Datei in das Programm. Ergebnisse wieder in Datei 
oder Pipe.

Sortieren, filtern, min, max , median u.s.w.

Daten in Klassen sortieren. Statistik.
Gast #4759299
Lesenswert?

Nina schrieb:
> Wie habt ihr euer können gesteigert?

Ich habe mir zum Anfang ein Übungsprojekt ausgedacht, ein C-Buch gekauft 
und losgelegt. Ich konnte damals aber schon Pascal, und meine 
Hauptfragestellung war "wie sage ich das jetzt in C".

Du könntest ja für den Anfang ein Damespiel schreiben, mit 
Computergegner. Das Spiel an sich ist zwar quasi gelöst, jedenfalls in 
der amerikanischen Variante, aber zu Übungszwecken wäre es ein nettes 
Projekt.

Das Buch war "Programmiersprache C". Von wem, weiß ich nicht mehr. 
Besonders gut war es nicht, hat aber seinen Zweck erfüllt.
Gast #4759413
Lesenswert?

Also mit C würde ich nicht unbedingt anfangen. Was mir Anfangs oft 
passiert ist, waren Fehler bzgl. Arraygrenzenüberschreitung. In vielen 
Programmiersprachen (Rust, Java, Go, Python, C#, etc.) bekommst du hier 
eine Fehlermeldung wenn so etwas passiert, in der auch drinsteht, in 
welcher Programmzeile das ganze passiert ist. In C/C++ stürzt entweder 
das Programm ab oder du bekommst keine Fehlermeldung und einfach ein 
falsches Ergebnis. Auch das mit der dynamischen Speicherverwaltung 
(Memory Leaks) ist ein Problem.

In meinen Augen ist C nicht mehr wirklich zukunftsfähig. Es gibt bereits 
Alternativen wie z.B. Rust. Rust kommt ohne Garbage Collection und 
Laufzeitumgebung aus, bietet aber trotzdem Schutz vor Memory Leaks, 
Overflows, Dangling Pointer, etc. (ist also sicher). Man könnte damit 
theoretisch also auch Mikrocontroller programmieren (Rust hat ein LLVM 
Backend). Rust wäre also auch zum Einstieg empfehlenswert. Hier gibts 
halt auch schon ein in die Sprache integriertes Framework zur 
Dokumentation, Testen, Benchmarks, Modularität, etc.

Also wenn es wirklich nur ums prinzipelle programmieren lernen und 
Algorithmen geht, dann würde ich eine andere Sprache als C empfehlen!
#4759581
Lesenswert?

Nina schrieb:
> kein Embeded C für Mikrocontroller

Schade, denn gerade Ablaufsteuerungen sind sehr interessant und schulen 
einen, die vielen parallelen Aufgaben sinnvoll in einzelne Tasks zu 
unterteilen.
Außerdem schulen sie, fehlertolerant und sorgfältig zu programmieren. 
Bei ner Steuerung gibt es keinen, der Strg^C drücken kann und neu 
startet. Die muß von selber aus jedem Fehlerzustand rausfinden.

PC-Programme sind dagegen nur langweilig: Eingeben - Verarbeiten - 
Ausgeben - Fertig. Da lernt man nicht viel, alles nur der Reihe nach 
hintereinander klatschen. Echtzeitanforderungen, nie gehört.
Gast #4759726
Lesenswert?

@ Peter: Bevor man sich mit Steuerungen und Echtzeit herumschlägt, 
sollte man schon überhaupt erstmal C an sich lernen, als Handwerkzeug. 
Zumal man auf dem PC weitaus besser debuggen kann. Das ergibt schon Sinn 
so, wie der OP das vorhat.
#4760407
Lesenswert?

Tasg schrieb:
> Also mit C würde ich nicht unbedingt anfangen. Was mir Anfangs oft
> passiert ist, waren Fehler bzgl. Arraygrenzenüberschreitung. In vielen
> Programmiersprachen (Rust, Java, Go, Python, C#, etc.) bekommst du hier
> eine Fehlermeldung wenn so etwas passiert, in der auch drinsteht, in
> welcher Programmzeile das ganze passiert ist. In C/C++ stürzt entweder
> das Programm ab oder du bekommst keine Fehlermeldung und einfach ein
> falsches Ergebnis.

Dafür gibt es tools, die doch einigermassen brauchbar sind. Ich finde, 
wenn man ein paar Stunden Geisterfehler zurückverfolgen muss, 
hinterlässt das einen viel grösseren Eindruck als wenn man gleich die 
Fehlermeldung bekommt. Dann hat man nachher nicht einfach nebenbei ein 
Array um eins vergrössert und vergisst das wieder, sondern weiss ganz 
genau was passiert ist. Und dann werden diese Fehler schnell selten.

> Auch das mit der dynamischen Speicherverwaltung (Memory Leaks) ist ein Problem.

Das Problem haben auch sprachen mit garbage collection. Bei denen muss 
jede referenz unzugreifbar/gelöscht sein, je nach komplexität des gc. 
Wenn man nur eine Referenz vergisst auf null zu setzen (kann auch 
implizit sein), bläht sich das Ding auf. Und dann muss der gc bei vielen 
neuen und verworfenen Objekten auchnoch mithalten können. Und dann diese 
Unterbrücke und Performanceverschwendung durch den gc... Bei C und C++ 
ist das doch viel besser: man kann den speicher so verwalten, wie es 
sinvoll ist, ohne nichtdeterministische Speicherfreigaben, zufällige 
unterbrüche, und unnütze heapverschwendung.
Gast #4760717
Lesenswert?

Hallo, ich bin sehr offt Unterwegs, und wollte Programmieren lernen, da 
die Zeit offt fehlte musste sich was ändern mag jetzt wie Werbung 
klingen aber ich habe mir Sololearn angeschaut ist zwar in Englisch aber 
du kannst am Smartphone lernen wo du bist mann kann sogar das Ganze 
Paket für Offline lernen runterladen, wenn du mal keine 
Internetverbindung hast. Habe dadurch c# und c++ sattelfest gelernt, 
weil es wirklich die Basics Idotensicher erklärt und nicht wie die 
ganzen anderen Tutorials penetrant mit Fachsprache umsichwerfen.

Wichtig:
-Definiere dein Ziel
-Was benötigst du um dein Ziel zu erreichen, dass kannst du von 
Fachkundigen beantworten lassen, formuliere aber die Frage so dass das 
Ziel nicht die Antwort ist, weil du weist ja schon dein Ziel.
- Lass dich nicht vom Weg abringen, es gibt viele Besserwisser da 
draußen.
Du wirst automatisch in deiner Materie besser wenn du dich damit 
ausführlich befasst und am Ende bist du darin ein Spezialist und dass 
ist gefragt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren