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!
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.
Im K&R2 sind sehr viele Übungen. Genauso in dem Buch "C als erste Programmiersprache". Beide solltest du in der Bib finden. Online gibt es jede Menge "Rätselseiten" wie "Train your Programmer" oder "Projekt Euler". Gruß Dennis
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.
Nina schrieb: > Wie habt ihr euer können gesteigert? Fremden Code anschauen und verstehen Fehler in fremdem Code finden Erweiterungen und Verbesserungen in fremdem Code vornehmen Open Source projekte ansehen
Ich kann die Webseite codingame.com empfehlen. Die Rätsel sind ganz interessant gemacht.
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!
Tasg schrieb: > In meinen Augen ist C nicht mehr wirklich zukunftsfähig. Das ist natürlich Blödsinn, da eine Zukunftsfähigkeit doch von sehr viel mehr Faktoren abhängt.
Danke an alle für ihre hilfreichen Antworten! Das wird mir bestimmt weiterhelfen :)
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.
@ 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.
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.
Ich kann noch folgendes Buch empfehlen: https://www.amazon.de/Learn-Hard-Way-Practical-Computational/dp/0321884922/ Gab es bis vor kurzem noch in einer minimalversion online für umme aber das hat mich schon überzeugt.
Das Buch "Moderne Betriebssysteme" enthält sehr viele Aufgaben. Und man beschäftigt sich nebenbei noch mit Betriebssystemen . :)
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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.