Hi,
ich suche Nachhilfe in der Programmiersprache C.
Ich mache meinen Staatlich geprüften Elektrotechniker.
Wir Programmieren aktuell arduinos, mithilfe von dem Datenblatt der CPU Timer.
Mir fehlen einfach die Basics und das Verständnis.
Ich muss viele Fragen stellen um C zu verstehen.
Wir verwenden das Programm Microchip Studio.
Nachhilfe kann vor Ort oder über Teams o.ä erfolgen.
Natürlich gegen Bezahlung, wir einigen uns am besten per PN.
Wir Programmieren aktuell arduinos, mithilfe von dem Datenblatt der CPU
Timer.
Die Betonung liegt auf "Wir".
Mir fehlen einfach die Basics und das Verständnis.
Ich muss viele Fragen stellen um C zu verstehen.
Wir verwenden das Programm Microchip Studio.
Installiere Dir irgendeine Entwicklungsumgebung, mit der Du "Kommandozeilen"-Programme machen kannst. Also wo ein Program "Hallo Welt" auf der Konsole (Früher "Dos-Fenster") ausgibt.
Dort übe die Konstrukte, die Du nicht verstehst. Notfalls tut es auch ein Online-C-Compiler.
Nachhilfe kann vor Ort oder über Teams o.ä erfolgen.
Die meisten Motivation haben Deine Kollegen. Weniger Motivation aber gute Kenntnisse haben Deine Vorgänger.
Das klingt vielleicht blöd, aber mit GPT kann man recht gut Programmiersprachen lernen und sich die Konzepte erklären lassen und auch nachfragen wenn man was nicht verstanden hat. Es funktioniert recht zuverlässig. Testen kann man die Konstrukte wunderbar mit online-C Compilern. Da musst du nichtmal was installieren.
Wir Programmieren aktuell arduinos, mithilfe von dem Datenblatt der CPU
Timer.
...
Wir verwenden das Programm Microchip Studio.
D.h. ihr verwendet die Arduino Hardware aber nicht die Arduino Programmierumgebung.
Welchen Mikrocontroller genau? Wenn es ein ATmega ist, könntet ihr das gcc Tutorial https://www.mikrocontroller.net/articles/AVR-GCC-Tutorial durchgehen.
Aus rein freiwilligen Lernen ohne Druck und nur für das Hobby habe ich (für mich, aber ungewöhnlich scheint die Erfahrungen nicht zu sein) folgende Erfahrungen gesammelt:
Die einzelnen Befehle, selbst Konzepte wie verschiedene Schleifen, Abfragen usw. sind kein großes Problem und recht schnell für sich erlernt und viel wichtiger auch verstanden.
Das ganze aber zu einem Programm zusammenzuführen, überhaupt einen Plan haben, wie ich ein Projekt (z.B. bei Timern eine Serveransteuerung ohne fertige Bibliotheken und natürlich ohne "abgucken" von fertigen Lösungen im Netz) in Software und der Sprache C realisiere ist die sehr große Hürde.
Dafür (ganz allgemein) und dabei hätte ich gerne jemanden an der Hand gehabt, der mich anleitet, und genau für mich passend meine Nachfragen mit Geduld (!) beantwortet.
Ob da Nachhilfe im klassischen Sinn funktioniert (selbst gute Nachhilfe, nicht einfach nur Aufgaben geben und Grundlagen die man überall selbst erlesen kann wiederholen) wage ich zu bezweifeln.
Ich hätte gerne einen guten "Programmierer" aus der Praxis neben mir sitzen gehabt, mit den man zusammen etwas entwickelt und der zumindest die ersten Male (fast) alles vormacht, das aber genau erklärt bzw. verlangt, dass man als "Schüler" gezielt, nachfragt oder den Lehrer erklärt" was er denn da nun gemacht hat.
Lerngruppen dürften nur bedingt hilfreich sein, da wenn man Glück hat ein talentierter Einäugiger unter der Gruppe von Blinden ist....
Wenn es ohne Druck wäre, dann geht man halt den Weg, welche die meisten (ohne Vorbildung - die erste Programmiersprache ist meist die schwerste - Kinderkram mit Bildchen im wörtlichen Sinne mal ausgenommen) gehen:
Abgucken, verändern, versuchen nachzuvollziehen - auf die Augenblicke warten, wo es "Klick" macht und zumindest eine Idee aus der Praxis wirklich verstanden wurde.
Und das immer wieder und wieder.
Das war und ist immer noch mein (harter) Weg - ist aber auch Hobby und mehr ein Selbstzweck (wie jedes Hobby)...
Für den Beruf und Prüfungen mag das anders aua sehen bzw. nicht genug sein...(?)
Irgendwie ähnlich wie Mathematik (in der Schule und für Prüfungen) - zumindest bei denen welche normal bis eher wenig talentiert sind (also der Großteil).
Ich hätte gerne einen guten "Programmierer" aus der Praxis neben mir
sitzen gehabt, mit den man zusammen etwas entwickelt und der zumindest
die ersten Male (fast) alles vormacht, das aber genau erklärt bzw.
verlangt, dass man als "Schüler" gezielt, nachfragt oder den Lehrer
erklärt" was er denn da nun gemacht hat.
Geht wohl jedem so. Welche Strategie gut ist, hängt teilweise vom konkreten Projekt ab. Deswegen lernt man das am Besten auf der Arbeit im Team, indem die Kollegen gegenseitig ihre Sourcen kontrollieren und Anregungen geben. Wenigsten einer pro Team sollte Senior Erfahrung haben. Besser zwei, damit er nicht in Versuchung gerät, seine Meinung als die einzig wahre zu propagieren.
Nachhilfe kann vor Ort oder über Teams o.ä erfolgen.
Wirst du hier nicht finden.
Dafür findest du hier jede Menge Leute, die in der Lage sind, dir bei Problemen auf die Sprünge zu helfen, vorausgesetzt, du zeigst ausreichend Eigeninitiative. Denen bezahlst du auch nichts dafür, außer natürlich deiner Zeit, die du schon selbst in deine Projekte investieren musst (und darin, die enthaltenen Fehler auf den Punkt zu bringen).
Ein paar herum meckernde Typen wirst du auch finden können, wenn du ein Projekt hier zeigst, die kannst du auch einfach ignorieren.
Das klingt vielleicht blöd, aber mit GPT kann man recht gut
Programmiersprachen lernen und sich die Konzepte erklären lassen und
auch nachfragen wenn man was nicht verstanden hat. Es funktioniert recht
zuverlässig.
Wirklich? Hast du das schon mal erfolgreich so gemacht oder gibt es belastbare Beispiele dafür?
Einfache Hello-World-Programme schafft CrapGPT, das muss man dem Kram leider lassen. Aber komplexere Probleme, das wird noch mindestens 20 Jahre dauern. So ähnlich wie bei der Sprachsynthese. Das konnte man mit der Soundblaster 16 bereits mehr schlecht als recht, heute ist die Sprache sehr gut verständlich - aber man kriegt immer noch sehr schnell mit, ob da ein echter Mensch spricht oder ein Computer.
Ich bin auf jeden Fall gespannt was passiert, wenn man einem ausreichend intelligenten Programm erlaubt, sich selbst zu modifizieren und weiterzuentwickeln. Ein paar Sekunden nach dem Start so eines Programms bekommen die Programmierer wieder richtig Arbeit, denn Computer können definitiv Probleme erschaffen, die der Mensch nicht lösen kann.
Einfache Hello-World-Programme schafft CrapGPT, das muss man dem Kram
leider lassen. Aber komplexere Probleme, das wird noch mindestens 20
Jahre dauern
Nö, der schafft schon heute weit mehr. Probiers einfach mal aus und sei erstaunt.
Gerade für Anfänger ideal:
Schreibe ein Programm für Arduino, das an einem Pin die anliegende Spannung einliest, und abhängig davon die Blinkfreqzenz einer LED an einem anderen Pin einstellt
Hier ist ein einfaches Arduino-Programm, das die anliegende Spannung an einem Pin misst und die Blinkfrequenz einer LED entsprechend dieser Spannung anpasst:
1
constintanalogPin=A0;// Pin zum Einlesen der Spannung
2
constintledPin=9;// Pin, an dem die LED angeschlossen ist
3
intsensorValue=0;// Variable zum Speichern des gemessenen Werts
4
intblinkDelay=0;// Variable zum Berechnen des Delay-Werts
5
6
voidsetup(){
7
pinMode(ledPin,OUTPUT);// LED-Pin als Ausgang festlegen
8
}
9
10
voidloop(){
11
// Spannung am analogPin einlesen (Wert zwischen 0 und 1023)
12
sensorValue=analogRead(analogPin);
13
14
// Den Wert in eine Verzögerungszeit umrechnen (z.B. 0-1000 ms)
15
// Je höher die Spannung, desto schneller blinkt die LED
16
blinkDelay=map(sensorValue,0,1023,1000,100);// 1000ms bis 100ms
17
18
// LED einschalten
19
digitalWrite(ledPin,HIGH);
20
delay(blinkDelay);// Warten entsprechend des berechneten Delays
21
22
// LED ausschalten
23
digitalWrite(ledPin,LOW);
24
delay(blinkDelay);// Warten entsprechend des berechneten Delays
25
}
Erläuterung:
Spannungseinlesung: Der Wert der an analogPin (hier A0) anliegenden Spannung wird mithilfe von analogRead() eingelesen. Dieser Wert liegt zwischen 0 und 1023 und repräsentiert die Spannung zwischen 0V und 5V.
Blinkfrequenz einstellen: Der eingelesene Wert wird in eine Verzögerungszeit (blinkDelay) umgerechnet. Hierbei wird der Wert von 0-1023 auf eine Verzögerungszeit von 1000ms (1 Sekunde) bis 100ms gemappt. Dies bedeutet, dass bei hoher Spannung die LED schneller blinkt.
LED steuern: Die LED wird ein- und ausgeschaltet, wobei zwischen den Zustandswechseln die berechnete Verzögerungszeit abgewartet wird.
Dieses Programm passt die Blinkfrequenz der LED in Abhängigkeit von der am Eingang anliegenden Spannung an. Du kannst den Bereich des map()-Befehls anpassen, um die Blinkfrequenz nach deinen Wünschen zu ändern.
Nö, der schafft schon heute weit mehr. Probiers einfach mal aus und sei
erstaunt.
Mit dem Lerneffekt, dass man jemand anders fragen kann?
Irgendwan ist die KI dann soweit, dass sie auch die hier typischen Fragen versteht, bei denen menschliche Forenteilnehmer (m/w/d) massive Verständnisprobleme haben - den Fragestellern ist damit aber nicht geholfen.
C ist ein Sprache. Sprachen bestehen aus einer Grammatik und (vielen) Vokabeln. Das kann man alles lernen. Am einfachsten per Aufgabe.
Im Gegensatz zu gesprochenene Sprachen spielen Mimik und Betonung keine Rolle.
C ist ein Sprache. Sprachen bestehen aus einer Grammatik und (vielen)
Vokabelen. Das kann man alles lernen. Am einfachsten per Aufgabe
naja, als erstes fällt mir ein: Grammatik kann bei einem "Satz" zwar richtig sein, ergibt dennoch was anderes als gedacht:
Komm wir essen, Opa!
Komm, wir essen Opa!
Daraus folgt: tieferes Nachdenken über das was man möchte, ist extrem wichtig. Also "algorithmisches Denken"
Eine "einfache" Bit-Fummel-Aufgabe wie oben aufgeführt ist (Blinkende LED in Abhängigkeit von Eingangsspannung) ist algorithmisch schnell beschrieben und erklärt. Selbst die Umsetzung in eine konkrete Programmiersprache ist eher unkompliziert.
Ein wenig komplexere Themen bitteschön? [Bedienungskonzept eines Fahrrad-Tachometers. Ampelsteuerung einer großen Strassenkreuzung. Beliebige Such&Sortieralgorithmen]
"Hochkomplexe" Themen: Denk dir selber was aus
Da ist erst mal der Algorithmus gefragt, weniger die konkrete Umsetzung in einer existierenden Programmiersprache mit all ihren Beschränkungen und Besonderheiten.
Im Gegensatz zu gesprochenene Sprachen spielen Mimik und Betonung keine
Rolle.
Gestik, Mimik und Betonung sind übrigens auch Syntax-Elemente in der gesprochenen Sprache. Auch wenn nicht jeder deutsch oder englisch sprechende Mensch diese Elemente vollständig beherrscht. Und je nach Sprachstamm ist es halt noch mal besonders wichtig, z.B. soll wohl die chinesische Sprache davon besonders viel und gerne nutzen (speziell Betonung)
Durch das Fehlen dieser Spachelemente müssen bei Computersprachen exakte Vorgaben eingehalten, d.h. präzise(r) formuliert werden.
Daraus folgt: tieferes Nachdenken über das was man möchte, ist extrem
wichtig. Also "algorithmisches Denken"
Ist hier doch gar nicht gefragt.
Algorithmen sind völlig unabhängig von der Programmiersprache (notfals mobymäßig in Assembler - und selbst da gibt es Unterschiede je nach Prozessor).
Mir fehlen einfach die Basics und das Verständnis.
Ich muss viele Fragen stellen um C zu verstehen.
Wie sehen diese Fragen aus?
Dass man sowas hier im Forum klären kann, wurde ja schon geschrieben.
Dazu muss man die Fragen aber stellen. Wenn sie dann auch möglichst präzise gestellt werden, und man den Eindruck hat, dass es hilft, bringt es auch Spaß zu helfen. Wenn es nur darum geht, dass die Hausaufgaben (von jemand anders irgendwie) erledigt werden, gibt es entsprechende Kommentare.
Mir fehlen einfach die Basics und das Verständnis.
Besorge dir 3 Bücher:
C, die Programmiersprache von Kernighan und Ritchie (wenn es geht, mit Lösungen dazu)
C Programmieren von Anfang an von Helmut Erlenkötter
Algorithmen in C von Robert Sedgewick
Erste Schwierigkeit: eine Entwicklungsumgebung einrichten. Da kann man sich zur Not helfen lassen, den Rest am besten selber üben, oder (wegen der Motivation) an einem C-Lernkurs (gibt es auch Online) teilnehmen.
Vorschlag: C in Linux üben, oder mit dem Watcom Compiler (32 Bit, Protected Mode) in aktuellen Windowsversionen.
vorausgesetzt, du zeigst
ausreichend Eigeninitiative.
Yep. Da kommen beim Üben so einige Probleme auf einen zu, die muss man selber überwinden, ist nicht so schlimm, dauert aber, und bis man auf einem grünen Zweig ist, braucht man einiges an Übung und Zeit. Ist auch nicht schlimm, nur man muss es halt auch machen.
C, die Programmiersprache von Kernighan und Ritchie (wenn es geht, mit
Lösungen dazu)
Wichtig: Da es das Buch auch antiquarisch gibt (da es seit über 30 Jahren nicht mehr überarbeitet wurde, ist das nicht weiter verwunderlich), auf keinen Fall die erste Ausgabe davon.
Genauer Titel: "Kernighan/Ritchie, Programmieren in C, mit dem C-Reference Manual in deutscher Sprache", Hanser Verlag.
Erste Ausgabe ISBN 3-446-13878-1
Zweite Ausgabe ISBN 3-446-15497-3
Die erste Ausgabe beschreibt das veraltete "K&R-C" ohne Funktionsprototypen, die zweite hingegen C89 ("ANSI-C").
Zudem ist die erste Ausgabe sehr schlecht übersetzt (sie wirkt wie eine Machinen Übersetzung und ist gespickt mit Deppen Leer Zeichen), und Codebeispiele sind idiotischerweise in einer Proportionalschrift gesetzt.
C89 ist zwar gegenüber neueren Versionen des Standards auch "veraltet", aber nach wie vor eine valide Art, C-Code zu schreiben; nichts, was man mit C89 lernt, ist aus heutiger Sicht falsch oder auch nur schlechter Stil.
Man sollte sich allerdings angewöhnen, die via stdint.h definierten Datentypen zu verwenden - /das/ ist ein großer Fortschritt neuerer C-Standards. Das aber widerspricht nicht dem, was C89 definiert.
Bei Uebersetzer und Binder (Compiler, Linker) und Vektoren (Arrays) hab'
ich schon schoen gestutzt...
Naja, das ist halt etwas akademisch. Wirklich bizarr ist nur der "Vektor".
Den muss man halt ausblenden oder innerlich mit "Array" (oder, wenn man beim schwerfälligen Informatik-Deutsch bleiben will: "Feld") übersetzen.
Die alte Ausgabe aber schreibt "Vektor Namen" statt "Vektornamen", und ist konsequent mit entsprechenden Deppen Leer Zeichen durchseucht.
Menschen mit Sprachgefühl geht so etwas gegen den Strich.
(Ich hab' hier beide Ausgaben im Regal stehen ...)
Schön wäre es, wenn es eine qualitativ gleichwertige Ausgabe gäbe, die sich mit C17 oder gleich C23 beschäftigt.
Es mag auch andere brauchbare Bücher über C geben, komplett abzuraten aber ist von den Machwerken eines gewissen Herrn Schellong.
Wer hingegen im Software-Antiquariat stöbert, und dort die deutschsprachige(!) Dokumentation von Borland Turbo C2.0 findet (das erschien etwa 1987, vertrieben von der Firma Heimsoeth), der hat auch zwei gute Bücher in der Hand.
Vor acht Jahren hat das hier im Forum mal jemand verkauft:
Das ist zwar älter als der C89-Standard, ist aber anhand einer Vorabversion des Standards entwickelt worden. Die deutschsprachige Ausgabe wurde nicht einfach übersetzt, sondern von jemandem namens Arne Schäpers mehr oder weniger komplett neugeschrieben.
Das ist einer der sehr seltenen Fälle, wo ein deutschsprachiges Handbuch besser ist als das englische Original.
Die alte Ausgabe aber schreibt "Vektor Namen" statt "Vektornamen", und
ist konsequent mit entsprechenden Deppen Leer Zeichen durchseucht.
Der deutsche Ausgabe des alten K&R ist für die Leute von heute
geschrieben, denn das Deppenleerzeichen ist mittlerweile schon fast zum
Standard geworden ;-)
Man trifft es nicht nur in Internetforen (wie bspw. diesem hier) an,
sondern auch sehr oft in der Werbung, wo man eigentlich davon ausgehen
können sollte, dass Texte vor ihrer Veröffentlichung von einer der
deutschen Sprache mächtigen Person korrekturgelesen werden.
Schon im Titel der Webseite steht "Premium Herren Hemden" statt
"Premiumherrenhemden".
So kann man es den Jugendlichen kaum verübeln, wenn sie zusammengesetzte
Wörter konsequent falsch schreiben. Wahrscheinlich wird die falsche
Schreibweise (zusammen mit dem Standart und dem Wiederstand) irgendwann
Einzug in den Duden halten, dann stimmt ja wieder alles :)
Ansonsten fand ich den K&R sehr gut, um in kürzester Zeit C zu lernen,
da er in sehr kompakter Form alles beschreibt, was man wissen muss. Ich
hatte noch die deutsche Ausgabe der 1. Auflage, die – wie einige hier
schon richtig angemerkt haben – heute überholt ist. Mit der 2. Auflage
kommt man aber schon sehr weit. Den Rest kann man sich auch noch über
einschlägige Webseiten oder (für Härtergesottene) durch Lektüre des
ISO-Standards aneignen. Das geht in Summe immer noch schneller als sich
bspw. "C Programming: A Modern Approach" von K. N. King mit seinen 832
Seiten zu Gemüte zu führen.
Wozu bitte? Meinst Du, die Leute würden dann plötzlich weniger falsch schreiben? So gesehen könnte man z.B. 50% der Orthografieregeln abschaffen. Dann würden die Leute noch weniger Fehler machen. Aber um welchen Preis?!
Wozu bitte? Meinst Du, die Leute würden dann plötzlich weniger falsch
schreiben?
Nein, natürlich nicht. Da man sich aber der normativen Kraft des faktischen kaum widersetzen kann, kann man dank der zunehmenden Verblödung die allgemeine Akzeptanz von Fehlschreibung durch die Duden-Redaktion erwarten.
Denn so funktioniert der Duden: Er beobachtet, was verbreitet ist, und nimmt das nach einiger Bedenkzeit als "richtig" auf.
Ich habe die verbreitete Unsitte der Pluralbildung mit Apostroph-, Hochkomma- oder auch Akzent-S nur etwas weitergedacht.
Glaub' bloß nicht, daß ich das gutheißen würde.
Der komplette Gegensatz zum Duden ist übrigens die Académie Française, die normativ festlegt, was korrekt geschriebenes Französisch ist und was nicht.
Ja, und das Apostroph-S am Wortende wird zur neuen Ligatur. Weil ja
sowieso jedes S am Wortende mit Apostroph- oder Akzent- geschrieben
wird:
Video´s, Errata's, Mausi`s Kneipe, Elko’s etc.
ja es wird leider zuviel von den Amis übernommen, Coca Cola und Burger bin war ich ja noch konform, aber bei Schöpfungsgeschichte, Apostroph minimal steigern gruselt es mir.
Google lügt auch
Welche Adjektive kann man nicht steigern Duden?
Solche Adjektive sind etwa: tot, lebendig, dreieckig, kinderlos, schriftlich, lauwarm, fertig, optimal, absolut, gleich, leer, vollkommen und – eben auch – einzig.
Nein das trifft nur die, die auschließlich eine optimalste Grammatik und Rechtschreibung gutheißen und lieber toter als tot sein würden, als so einen einigstartigen Mist lesen zu müssen.
So säuft man sich Verblödung schön. Irgendwann hat man das Babelsyndrom - jeder schreibt, wie er meint, daß es irgendwie richtig sein könnte, und dann ist ein --schönes Wort-- Kippunkt (oder blöddeutsch Kipppunkt) erreicht, ab dem die universelle Verständlichkeit von Schriftsprache nicht mehr gegeben ist, weil die Fehlerkorrektur beim Lesen nicht mehr funktioniert.
Drastisch beschleunigt wird das ganze übrigens durch "Emoji"-Gebrauch.
Diese "Alle anderen" verstehen auch nicht, dass der C-Compiler (um den geht es ja hier) die offensichtlichen Fehler nicht gleich korrigiert: Semikolon vergessen? Ja dann mach es doch hin!
Gerade Leute hier sollten wissen, dass Redundanzen in (gesprochener und geschriebener) Sprache immer dazu dienen, den Sinn wiederherzustellen, wenn Teile verloren gehen: Tippfehler, Tonstörungen, Lesefehler, ... . Je mehr wir unbedarft aufgeben, umso öfter sind Aussagen entstellt oder in Ihr Gegenteil verkehrt.
Hi,
ich suche Nachhilfe in der Programmiersprache C.
Ich mache meinen Staatlich geprüften Elektrotechniker.
Wir Programmieren aktuell arduinos, mithilfe von dem Datenblatt der CPU
Timer.
Mir fehlen einfach die Basics und das Verständnis.
Ich muss viele Fragen stellen um C zu verstehen.
Basics von C lernt man besser auf einem OS mit Speicherschutz.
33 reservierte Schlüsselwörter würde ich nicht als viele Vokabeln
bezeichnen:
Meine Aussage bezieht sich auf Sprachen allgemein - nicht nur auf C oder Programmiersprachen.
Dazu kommen dann noch die Operatoren, die man auch als Sprachelemente ansehen kann.
In anderen Programmiersprachen werden "&&", "||" und "~" ausgeschrieben, und sind somit auch reservierte Wörter.
Dann sollte man in C noch die Doppelbedeutung bspw. von "&" und "*" kennen.
[OT]
Die gibt es tatsächlich, schwierig hier zu beschreiben. Recht bekannt ist allerdings: "the most pessimum"
(https://www.pbm.com/~lindahl/mel.html)
[/OT]