Forum: PC-Programmierung C Programmierung Übungen


von Nina (Gast)


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!

von karadur (Gast)


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.

von Dennis S. (eltio)


Lesenswert?

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

von Nop (Gast)


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.

von Dirk B. (dirkb2)


Lesenswert?

Nicht speziell C, aber Mathematisch/Numerisch angehaucht: Project Euler
https://projecteuler.net

von Der Andere (Gast)


Lesenswert?

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

von Klaus (Gast)


Lesenswert?

Ich kann die Webseite codingame.com empfehlen. Die Rätsel sind ganz 
interessant gemacht.

von Tasg (Gast)


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!

von Peter I. (Gast)


Lesenswert?

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.

von Nina (Gast)


Lesenswert?

Danke an alle für ihre hilfreichen Antworten!
Das  wird mir bestimmt weiterhelfen :)

von Peter D. (peda)


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.

von Nop (Gast)


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.

von Daniel A. (daniel-a)


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.

von Paul H. (powl)


Lesenswert?

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.

von Kaj (Gast)


Lesenswert?

Das Buch "Moderne Betriebssysteme" enthält sehr viele Aufgaben.
Und man beschäftigt sich nebenbei noch mit Betriebssystemen . :)

von Leander (Gast)


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.

von uC (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.