PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmieren in C : Ein Kurs für Anfänger gedacht



Frank Erlich
10.09.2014, 13:35
Ich arbeite gerade an einem Kurs für Programmieranfänger, die sich für die Programmiersprache C interessieren.
Jedoch habe ich so meine Schwierigkeiten ohne Rückmeldungen meine Arbeit zu vollenden, denn ich habe bemerkt, dass viele Tutorials einfach so einsteigen und vieles zunächst ungeklärt bleibt und akzeptiert werden muss. Dem stimme ich auch persönlich zu, jedoch setze ich einfach auf mehr Entgegenkommen und Genauigkeit der Lehrer, vor allem wenn es um Studierende geht, die noch nie etwas vom Programmieren gehört haben.

Daher habe ich einmal die ersten 3 Lektionen veröffentlicht und erhoffe mir hier (muss nicht auf youtube selbst sein) um eine Rückmeldung von Anfängern oder auch Nicht-Anfängern, ob es doch noch verständlich ist was ich hier zeige oder ob es bereits zu kompliziert ist.

Das Problem was ich damals hatte ist, dass ich nie jemanden hatte der mir das persönlich erklärt hat und somit begab ich mich in die Welt der Lehrbücher und bis heute noch. Ich möchte dies aber für die jenigen die nicht gewillt sind ein Programmierbuch zu lesen, auch den alternativweg anbieten. Jedoch geht das nicht indem ich den Kurs fix und fertig nach meinen Vorstellungen mache, sondern eher mehr nach denen die Lernen wollen und mir auch sagen was eventuell einfacher erklärt werden muss.

Ich danke daher schonmal jedem der sich die Mühe macht diese Lektionen anzusehen und eventuelle Missverständlichkeiten öffentlich macht. Ich werde mich natürlich demnächst darum kümmern und hoffentlich auch bald wieder weitermachen.

Die ersten 3 Lektionen sind hier zu finden:

(Grundlagen: Was brauche ich um zu Programmieren?)

http://youtu.be/_r--6uiNUQg

http://youtu.be/AXwvB1xDiKE (Installieren der Entwicklungsumgebung)
http://youtu.be/v23-3i0MJDE (Aufbau des Programms)

Lg

Frank Erlich
11.09.2014, 15:53
So, hab mich jetzt doch dazu angemeldet. Ich weiß leider nicht was das Präfix "Erledigt" bedeutet. Ich werde diesen Kurs im Laufe des kommenden Jahres weiterbetreiben. Dies geht jedoch nur in Mitarbeit mit den Lernenden. Ich habe mir das in etwa so vorgestellt: Ich schalte jedes neue Video hier rauf und hoffe einfach einmal, dass gewisse Leute die C lernen hier ihre Fragen reinstellen und ich aufgrund dieser Fragen die Kurse verbessere. Ich werde mir damit auch ganz bestimmt nichts verdienen, von Werbung halte ich nichts und das Ziel ist es einzig und allein diesen Kurs für lernwillige Studenten bereitzustellen, da ich noch ganz genau weiß, wie es mir ergangen ist damals.

Es kann aber natürlich sein, dass dieses Vorgehen auch 100% gegen die Nutzungsbedinungen spricht, was ich nicht hoffe.
Ich garantiere aber: Das Ziel ist es nicht irgendwie durch Youtube an Geld zu kommen oder ähnliches. Ich würde NIEMALS mein Einkommen von dort durch Werbung erzielen wollen. Nein, vielmehr ist es ein Angebot an alle. Ihr könnt euch auch gerne diese Videos runterladen und weitergeben.. Ich habe nichts dagegen. Im Gegenteil! Ich will das sogar. Aber jetzt ist noch die Produzierphase und ich wäre jedem Anfänger Dankbar, der mir sagt wo es eventuell noch Schwierigkeiten gibt.

Ich mache dies freiwillig und Ihr könnt dies auch freiwillig machen..
Es ist so eine Art Entgegenkommen und ich bin froh wenn dieses Angebot nicht falsch ankommt.

Liebe Grüße
Erlich

Peter(TOO)
12.09.2014, 11:03
Hallo Frank,

http://youtu.be/v23-3i0MJDE (Aufbau des Programms)

00:56 Leider werden in C keine praktischen ......

Ich würde das "Leider" weglassen.

Gerade im µC-Bereich ist es eine der Stärken von C, dass ich Bibliotheksfunktionen selber schreiben kann.
Also z.B. ein printf() welches mir die Daten auf eine beliebige Schnittstelle ausgibt...

z.B. gibt es in einigen meiner Projekte auf dem µC ein Dateisystem welches nur eine einzige Datei kennt, bearbeitet wird diese Datei mit den normalen C-Dateibefehlen, aber aus meinen Bibliothek. Der Vorteil liegt darin, dass ich die entsprechenden Programmteile auch auf dem PC verwenden kann und nicht alles doppelt schreiben muss. Macht auch die Pflege wesentlich einfacher. :-)

MfG Peter(TOO)

Manf
12.09.2014, 13:34
... Ich weiß leider nicht was das Präfix "Erledigt" bedeutet. ...

Es kann aber natürlich sein, dass dieses Vorgehen auch 100% gegen die Nutzungsbedinungen spricht, was ich nicht hoffe. ...

Mir gefällt es wenn jemand etwas einbringt, die Stelle ist sicher richtig. Verschieben kann man es aber immer noch, vielleicht später dann nach RN Wissen.
Das "erledigt" ist nur eine kleine Hilfe zur Übersicht im Forum und kann wohl jederzeit gesetzt und zurückgenommen werden.

Manfred

Frank Erlich
12.09.2014, 17:35
Hallo Frank,

00:56 Leider werden in C keine praktischen ......

Ich würde das "Leider" weglassen.


Danke für den Hinweis. Ich bin da auch deiner Meinung. Habe es soeben umgeändert und den Link aktualisiert:

Aufbau des C Programms


http://youtu.be/FbgY1rOQpe8



Das "erledigt" ist nur eine kleine Hilfe zur Übersicht im Forum und kann wohl jederzeit gesetzt und zurückgenommen werden.


Ok, danke für den Tipp.

Grüße

Frank Erlich
21.09.2014, 10:17
Ich habe gestern etwas Zeit gefunden die 4. Lektion aufzunehmen. Sie scheint mir aber irgendwie zu viel zu sein für den Anfänger. Was haltet ihr davon?

Das erste C Programm


http://youtu.be/Np9QmyRr6o8


Mich interessieren vor allem: Bewertung von Sprache und Verständlichkeit. Könnte es ein Anfänger jemals (der vorher noch nie programmiert hat) es bis zur 4. Lektion schaffen und noch motiviert sein?
Ich habe mir überlegt das nächste Video als Übungsvideo zu gestalten. Dort soll dann der Übende eine Aufgabe lösen. ALso ein bestimmtes Muster am Bildschirm ausgeben.

Ich freu mich schon auf Feedback!

RoboHolIC
21.09.2014, 17:56
Hallo Frank.

Ich habe mir das vierte Video als erstes deiner Reihe angesehen. Die Sprache ist einwandfrei verständlich - und bewundernswert flüssig vorgetragen parallel zur Computerbedienung!
Die Inhalte werden sehr ausführlich dargestellt. Ich fühle mich dabei an die Tutorials von Borland Turbo Pascal erinnert; die Leute haben den Stoff damals auch super verständlich und nachvollziehbar aufbereitet.
Jetzt habe ich zwar nur rudimentäre C-Kenntnisse, ansonsten aber reichlich Programmiererfahrung. Da fällt es schwer, sich in einen absoluten Anfänger hineinzudenken. Ich glaube aber doch, dass die Ausführlichkeit so gut ist, dass man von Null beginnend gut folgen kann.

Übungen sind immer gut, weil sie den Unterrichtstrott unterbrechen und eine Lernkontrolle ermöglichen. Ob Muster am Bildschirm aber wirklich zielführend sind, bezweifle ich.
Vielleicht fällt dir ja noch ein kleines Projekt ein, das in absehbarer Zeit umsetzbar ist. Spontan fällt mir eine Art Rechenprogramm ein, das formatierte Eingaben einfordert und Rechenergebnisse formatiert ausgibt. Wählbare Rechenoperatoren als Erweiterung, Datenablage in einer Datei etc.; damit kann man die zentralen Teile der stdio.h unter die Füße kriegen.
Just my two cents.

Mach weiter so! Hoffentlich erinnere ich mich an deine Videos, wenn ich zukünftig mal von Assembler auf C umsteige.

Gruß
RoboHolIC

Frank Erlich
22.09.2014, 09:22
Ob Muster am Bildschirm aber wirklich zielführend sind, bezweifle ich.

Ich natürlich auch. Ich habe aber damals in meiner Universität erlebt, dass manche nicht einmal das schaffen. Ich dachte mit Mustern für die allererste Aufgabe ist deshalb so sinnvoll, damit auch die Lernenden draufkommen wie man so mit Abständen im printf() umgeht und etwas ein Gefühl dafür entwickeln. Du musst beachten, dass einige Programmieren lernen die wirklich überhaupt keine Ahnung haben. Natürlich werde ich auch das Aufgabenlevel mit den kommenden Tutorials steigern (Einfacher Taschenrechner, erweiterte stdio funktionen, Datenspeicherung usw...). Ich will aber nicht den Fehler machen zu Beginn schon schwierige Aufgaben zu stellen. Ich hatte mir das eigentlich so vorgestellt:

Lektion1
Lektion2
Lektion3
Lektion4
Aufgabe1
Lösung1
Lektion5
Lektion6
Aufgabe2
Lösung2
.
.
.

Ich denke mit dieser Methode erreiche ich immer noch die Meisten Beginner. Werde aber auch zu jeder Aufgabe dazusagen dass jene für totale Anfänger sind und ev. übersprungen werden können.

Ich danke dir aber für dein motivierendes Feedback! Ich werde eventuell nach der 10. Lektion einige Personen aus meienem Kreis auswählen, die noch nie programmiert haben und keine Idee davon haben und ihnen diesen Kurs vorlegen und einfach eine Art Statistik führen.

Im Endeffekt werde ich aber doch hoffen müssen, dass ich den größeren Kreis damit erreiche.
Mal sehn wie das wird..

Danke nochmal!

Lg

Peter(TOO)
22.09.2014, 12:21
Hallo Frank,
Also ich mal wieder!

3:18 Daten an den Bildschirm senden und von der Bildschirm Tastatur einlesen.

5:20 Hier sollt man darauf hinweisen, dass in C der erste Fehler wichtig ist und der Rest meist Folgefehler sind!

Ich habe es oft erlebt, dass Anfänger versuchten den Fehler zu entfernen, welchen sie verstanden haben, also oft einen Folgefehler, was nicht zum Ziel führt und nur Frust erzeugt.

MfG Peter(TOO)

Frank Erlich
22.09.2014, 15:44
3:18 Daten an den Bildschirm senden und von der Bildschirm Tastatur einlesen.
Ja ja!! Sehr gut. Danke.


5:20 Hier sollt man darauf hinweisen, dass in C der erste Fehler wichtig ist und der Rest meist Folgefehler sind!
Das Video würde für diese Details zu lang werden. Ich habe mir aber überlegt in der nächsten Lektion einen Folgefehler einzubauen (wenn möglich) und bei diesem speziellen Fall dann zu zeigen, wie man so etwas angeht. Ich denke nämlich bei einer printf Anweisung wird man da nicht so schnell etwas falsch machen.

Danke aber für den wertvollen Hinweis!!

Lg

Peter(TOO)
22.09.2014, 16:07
Hallo Frank,

Das Video würde für diese Details zu lang werden. Ich habe mir aber überlegt in der nächsten Lektion einen Folgefehler einzubauen (wenn möglich) und bei diesem speziellen Fall dann zu zeigen, wie man so etwas angeht. Ich denke nämlich bei einer printf Anweisung wird man da nicht so schnell etwas falsch machen.
Eigentlich dachte ich nur, dass du das mal kurz erwähnst.
Dein Beispiel erzeugt schon einen Error und eine Warning.
Und zwar den eigentlichen Fehler in Zeile 5 und die Warning in Zeile 6 ist schon ein Folgeproblem.

Grundsätzlich sollte man bei modernen Compilern Warnings wie Fehler behandeln.
Zudem schalte ich bei Compilern immer die höchste Empfindlichkeit ein.
Ich hatte schon viele Projekte übernommen, welche nicht richtig funktioniert hatten, oft waren diese mit "Warnigs = off" übersetzt worden.
Wenn sich dann alles ohne Warnings übersetzen lies, waren meist auch die meisten dubiosen Fehler verschwunden ;-)

MfG Peter(TOO)

Frank Erlich
22.09.2014, 20:30
Hier die erweiterte Version:

Das erste C Programm


http://youtu.be/B3ixoDgGzE0

Aufgabe 1


http://youtu.be/660xM-DzzoA

witkatz
24.09.2014, 13:35
Jetzt habe ich zwar nur rudimentäre C-Kenntnisse, ansonsten aber reichlich Programmiererfahrung. Da fällt es schwer, sich in einen absoluten Anfänger hineinzudenken. [...] wenn ich zukünftig mal von Assembler auf C umsteige. Von mir jetzt an der Stelle ein Einwurf für RoboHolIC und andere PIC-begeisterte. Die hier vorgestellte IDE (CodeBlocks) unterstützt einige Compiler, u.a. den SDCC mit dem man PIC16 und PIC18 in C programmieren kann. Ob du als Assembler Programmierer-Profi im Sinne von Frank Anfänger bist, kann ich nicht beurteilen. Mir fehlt ein bisschen die Definition von "Anfänger" bzw. der Zielgruppe und der Vorkenntnisse. Der Begriff Anfänger ist außerdem etwas negativ besetzt, aber das ist Geschmackssache.

Was die Motivation der "Anfänger" angeht, mir würde an dem Kurs eine ganz kurze Inhaltsangabe oder Zielsetzung des Kurses helfen. Eine Programmiersprache ist für mich ein Werkzeug das ich für die Lösung einer Aufgabe brauche. C ist zwar quasi die Weltsprache der verschiedenen Mikrocontroller-Familien, aber ich würde (im Kurs) nur durchhalten, wenn ich wüsste, dass ich in dem Kurs am Ende das lernen kann, was ich brauche. Als Anwender lerne ich eine neue Programmiersprache mit einer bestimmten Zielvorstellung. Ein Kurs muss zu meiner Aufgabe und Zielsetzung passen und das sollte ich am Anfang des Kurses einschätzen können.
@RoboHolIC: Übrigens für den Umstieg von Assembler auf C mit PIC Mikrocontrollern gibt es mMn gute Tutorials bei gooligum (http://www.gooligum.com.au/tutorials.html) und bei Sprut (http://www.sprut.de/electronic/pic/c/c.html). (Frank sorry für die Querwerbung, aber wir sind hier unter uns oder?)

Frank Erlich
24.09.2014, 15:36
Was die Motivation der "Anfänger" angeht, mir würde an dem Kurs eine ganz kurze Inhaltsangabe oder Zielsetzung des Kurses helfen.
Ich meine den Kurs so (und das werde ich auch wenn er fertig ist für jeden klar stellen und in der Playlist eine passende Beschreibung dazutun): Es soll dem Kursbesucher die Programmiersprache C vollständig beigebracht werden. Dazu zählen nicht nur Grundlegende Sachen wie Ausgaben und Eingaben, oder Variablen, Arrays, Strukturen und dynamische SPeicherverwaltung, sondern es soll ein möglichst breites Spektrum erreicht werden durch Übungen und Projekte, sodass wenn man diesen Kurs hinter sich hat (mit all den Übungen usw...) , man mit gutem Gewissen davon ausgehen kann eine gute Basis von der Programmiersprache C zu haben und es einem nicht sehr schwer fallt auf andere Systeme oder gar OO Sprachen umzusteigen. Dieser Kurs hat also insofern nichts mit Mikrocontrollern und deren Spezialitäten zu tun.

Er wird daher natürlich auch keine speziellen Mikrocontrollerfamilien und deren Einschränkungen beachten. Das wäre ja vollkommen daneben und würde zu 1000 de solcher Videotutorials führen. Weiters ist es auch nicht das Ziel Assembler zu präsentieren. Dafür wäre ein anderer Kurs geeignet.


aber ich würde nur bis zur Lektion 4 eines Programmierkurses durchhalten, wenn ich wüsste, dass ich in dem Kurs am Ende das lernen kann, was ich brauche.
Diesen Satz verstehe ich leider nicht.


Als Anwender lerne ich eine neue Programmiersprache mit einer bestimmten Zielvorstellung. Ein Kurs muss zu meiner Aufgabe und Zielsetzung passen und das sollte ich am Anfang des Kurses einschätzen können.
Da bin ich vollkommen einverstanden. Noch ist der Kurs aber insofern kein vollständiger. Wenn er vollständig wäre, könntest du auch zur 44 Lektion schauen und hineinschnuppern. Ich befürchte aber, dass es länger dauern wird bis ich bei Lektion 44 bin, weil ich möglichst wenige Details auslassen möchte. Ich halte überhaupt nichts davon Programmieren einfach irgendwie beizubringen, sodass es eben funktioniert. Nein. Deshalb mache ich ja den Kurs. Ich will damit den Studenten oder auch andere Gruppen sehr genau und verständlich mit der Programmiersprache C konfrontieren, sodass sie nicht nur glauben zu wissen was Sache ist, sondern definitiv wissen was Sache ist. Jedoch muss man da gerade zu Beginn etwas sanfter vorgehen als bei Lektion 44. Ich hoffe das ist verständlich.


(Frank sorry für die Querwerbung, aber wir sind hier unter uns oder?)
Hehe, du kannst gerne Querwerbung reinbauen :) Kp.

Lg

witkatz
24.09.2014, 16:38
aber ich würde nur bis zur Lektion 4 eines Programmierkurses durchhalten, wenn ich wüsste, dass ich in dem Kurs am Ende das lernen kann, was ich brauche.Diesen Satz verstehe ich leider nicht. Klare Ausdrucksweise ist nicht meine Stärke, sorry. Es sollte die Antwort sein auf:
Könnte es ein Anfänger jemals (der vorher noch nie programmiert hat) es bis zur 4. Lektion schaffen und noch motiviert sein? Ich wollte damit ausdrücken, dass die Kursinhalte alleine die Motivation sind. Ich verstehe nicht, was du mit "Programmiersprache C vollständig" mit "möglichst wenige Details auslassen" meinst. Ich habe gerade ein C Grundlagen Buch vor mir liegen. 1044 Seiten nur Grundlagen! Dazu kommen dann Verweise auf weitergehende Literatur. Willst du wirklich so ein geballtes Wissen in einem Kurs einem Anfänger, der noch nie programmiert hat aufbrummen?

Frank Erlich
24.09.2014, 16:47
Willst du wirklich so ein geballtes Wissen in einem Kurs einem Anfänger, der noch nie programmiert hat aufbrummen?

In einer Schritt nach Schritt Philosophie ja. Das ist mein Ziel.

TrainMen
27.09.2014, 14:28
In einer Schritt nach Schritt Philosophie ja. Das ist mein Ziel.
Ich hoffe Du bleibst dabei. Mein Enkel und mir gefällt jedenfalls was Du machst und freuen uns auf die nächste Lektion.

Frank Erlich
28.09.2014, 14:20
Ich hoffe Du bleibst dabei. Mein Enkel und mir gefällt jedenfalls was Du machst und freuen uns auf die nächste Lektion.

Da ich unter der Woche generell sehr wenig Zeit habe dafür, sammelt sich die Arbeit auf Samstag Früh. Ich habe mir vorgenommen jeden Samstag eine Lektion bzw Aufgabe oder Lösung aufzunehmen. Meistens werde ich das Video aber Montags raufladen. Freut mich aber, dass es dir und deinem Enkel gefällt :-)

Die Lösung der Aufgabe ist auch schon Online:


http://youtu.be/qpyYNGs7ooo

Frank Erlich
04.10.2014, 11:05
Ich habe mir vorgenommen jeden Samstag eine Lektion bzw Aufgabe oder Lösung aufzunehmen.
Das ist bitte keine Garantie dafür, dass sich auch wirklich ein Zeitfenster für mich ergibt.
Heute ist es leider blöd gekommen.
Also rechnet nicht damit, dass wirklich jeden Samstag etwas neues kommt....
Denn wies zur Zeit aussieht wird es eher schwierig.

@TrainMan: Tut mir wirklich leid für die falschen Hoffnungen! Wenn du aber jetzt schon C lernen willst und nicht ein Buch lesen möchtest dafür empfehle ich dir trotzdem andere Tutorials anzusehen. Ansonsten ist für den Beginn C von A bis Z von Wolf sehr hilfreich!

Grüße

TrainMen
04.10.2014, 14:05
Hi,
Nee ist nicht schlimm, mein Enkel hat das sowieso alles zu lange gedauert. Auch wenn Du alle 3 Tage was gebracht hättest. Im Moment ist er "heiß" aufs Programmieren. Manches kann ich ihm zeigen erklären, manches eben nicht und es gibt ja genug Tutorials im Netz.

Frank Erlich
18.02.2015, 17:31
Jetzt habe ich schon lange nichts mehr gemacht!
Hier die nächste Lektin wo die Escape Sequenzen \n und \t näher unter die Lupe genommen werden:

http://youtu.be/94zD3CMQDYk

Unregistriert
18.02.2015, 22:09
... Hier die nächste Lektin wo die Escape Sequenzen \n und \t näher unter die Lupe genommen werden ...Eigetnlich habe ich nur reingeschaut um zu sehen, wie man in sieben Minuten die zwei (2) Escapesequenzen erklärt.

Vielleicht wäre für den einen oder andern Anfänger auch mal ein Link auf weiterführende Dinge nützlich ? Zum Beispiel eben ALLE möglichen Escapesequenzen, VOR ALLEM der Trick mit dem oktalen ASCII-Code \0ij (ij als beliebige oktale Werte) und dem hexadezimaler ASCII-Code \xhh (hh als Hex).

Frank Erlich
18.02.2015, 23:28
@Unregistriert: Das Video wäre viel zu lang wenn ich alles in einem packen würde. Ich habe es zwar komplett aufgenommen, habe mich aber entschieden es aufzuspalten. Die nächsten Teile mit allen escapesequenzen folgen nach bearbeitung sehr bald.

Lg