[Playlisten] [Impressum und Datenschutzerklärung]

P1B Zahlenschloss mit Display und Joystick programmieren


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

ichwollt dieerste PraktikumsaufgabevorführeneinZahlenschlosssollte es werden am Anfang steht es auf zu wie man sehen kannmir solche mit dem joystickersdie Zahl zwei ?? vierzig eingestellt werden und dann die Zahl dreizehn eingestellt werden um das Zahlenschlossaus Komma um das Saalschloss zuöffnen der Gedanke ist des dieden Joystick runterzudrückennach unten das war die y-Achse in einer runterzudrückenzu sein jetzt geht's losin der Formso Komma dass immer fünfzig startetamals eingestellte zahlenden billig nach links drücken oder nach rechts drückenund die Zahl einzustellen also nicht direkt die Koordinate auf die x-Achse stellt die Zahl ein sondern ich drück es nach links und rechts damit die Zahl eingestellt?? Wechselgebiet runter gezähltschnell oder langsamerund nach rechts genauso wenn ich bisschen rechts drücken geht's langsam rauf und weltweitrechtswidrig geht schneller raufso die erste Zahl sollte die zweiundvierziggewesen seinwerdasheute nicht sodann einmal quittierendarf der ja noch nicht sagen die Zahl war richtigaber ich muss das erst einmal quittierenTransfer sehr zu einfacheinmal nach unten drückenzu sagen profitiereneher Nachrichten aufgefallen sein wird nicht dass das Ding jetzt schon Sachzahl eins okay eigentlich müssen beide Zahlen eingeben und erst dannsagt das San Schlossort richtig ist aber ?? sowieso gebaute Sach sofort schon die erste Zahl war okaydrück ich einmal das Ding runterauf der y-Achseum diese Zahl einzustellensollte dreizehn gewesen seinund doch etwas langsamer machen offensichtlichsicheinzigeZweckwarPunkt aber egaleisig so und einmal quittierendann sozusagen aufamwenn ichdeine Sommer drückesonst wieder zu gehenund das ganze Spiel fängt von vorne an diese Falscheingabehabe ?? seit ich möchte es eingeben und ich gebe ziert ein Blitz in ein also sofort wieder zu seindann wenn ich die erste Zahl richtig habe schon wenn ich die erste Zahl richtighabesound dann die zweite Zahl falsch eingebensoll's auch sofort wieder zu sein das ist der Gedanke also solchen Prinzip aussehenam??war hier diedas Problemchen durch ich erzähl mal was ?? als Musterlösungvorgestellt habeund zwarnunrichtigdieHauptfunktionso richtigbillig sein soll ist merklich vorgestellt mit Praktikumanders angefangenhabe ich ihn doch gesagt man sie lieber mit den kleinen Funktionen aneinem Eingriff war mein Gedanke das mit der Hauptfunktion der Mailfunktion anfängtweil die dann so schön billig istam ?? eine Bibliothek bereitgestelltdes Verdienstes bei dreißig C Display Taste Kder Gips dann zum Beispiel Funktion namens Initialleistungenes gibt von Massefunktionetwas wie Init oder initial Eisamum alles mögliche richtig einzustellen irgendwelche Variablen auf richtige Werte zu setzen jetzt bei diesem Teil zum Beispiel einzustellenwas die Ausgabepinsfür das Display sindamwahrscheinlich auch schon etwas aus wenn ich gar nicht mehr vorzubereitenhaben wieder nach ?? von Joystick etwas eingelesen wirdund so weiter so diverse Schalter sozusagenauf dem ?? Controller richtig zu stellenall das erledige ich in initial Eisdann kommt jetzt eben großeEndlosschleifedie damit anfängtdas zu ausgegeben wir das war meine eigene Funktion hier weit Stringgebereine Zeichenkette aufsauf das Displayeskortiertwerden neue Funktiondie hätte man eine Praktikum selber schreiben sollen haben wir praktisch alle selbst geschrieben ich warte bis der Joysticknach unten gedrückt wird das macht diese Funktion die Funktionnimmt nicht an Informationenzu Messdaten technisch nicht Situation und gibt auch nicht zurück sondern sie wartet einfach nurder Controller steht da so lange bis der deutsche Grund gedrückt wird ??zweite Funktion die sie auch praktisch eingeschrieben haben Praktikum inzwischen ist eine Zahl zu holenwar dies einstellen mit links rechts und quittieren und das macht Cat Numberednumberwartet solange Besitzer eingestelltesbis ich dann deutlich nach unten gedrückt habe ?? wieder losgelassen habe?? Ergebnis kommt zurückdass merklich mehr alseinerZahl jetzt jene Variablen Zan?? zwoundvierzig war wenn es nicht zweiundvierzigWahnsinn Sie was wir dann überspringen wenn es nicht zwoundvierzig warich sofort ans Endeund es geht sofort wieder los mit zusich zwang vierzig war zeigt mir das Display sofort zu an wenn es zweiundvierzig war sehe ich Zahl eins okay im Displayunddann wartet der Controller darauf dass wieder einmal quittiert wird der Joystick nach unten gedrückt wirdund wenn das der Fall warkonnte zurück aus dieser Funktion geht in diese zweite Funktion rein wartet auf der Eingabe merkt sich die Eingabespeichere ich mir in einerVariablen?? ich gerade sehe warum ich die gleich zweimal angelegtdannsind dasgibt kein Mekka vom Compiler dieselbe Variable auf verschiedenen Ebenenjedes Inter dich gar nicht dazu schreiben müssen ?? und der hiereine Variable oben bei ?? schon derzweite mit dem selben Namen angelegtsei so ?? ich gucke ob die dreizehn ist wenn ja zeige ich ein aufund warte auf den nächstenauf die nächste Liquidierung sozusagenum wiederdaraus darauszu anzuzeigenansie sind mit diesen beiden Funktionenwarten auf die Segmentierung des nach unten drücken jedoch keinen vernünftigen Namen scheintunter Eingabe einer Zahldie beiden Funktionen haben ist daseigentlicherledigt der Rest ist ziemlich billigahnenund diese beiden Funktionenhatte ich ausgelagertsondern Praktikum noch nicht überallund das hier number genannt aufs kein sehr kreativer Einfall führenNamen aber sei soandie eine Funktion die auf dasunterdrücken und loslassen wartetdie war glaube ich für die meisten im Praktikum eher überraschendzwei leere Waldschleifenallein das kostet Überwindung in ihrer while-Schleife zu schreiben??was macht das für Unsinnin einer Schleife nichts zu tunder Sinn ist zu wartendass es keine fürchterlich effiziente also warten Sie mir nächste Semester auf dieser Maschinevöllig okayPunktich warte so lange bis wieder eine Lok ?? Fonds und ich bereitgestellthabe solange bis die Eingabe von der y-Achsekleiner gleich zwei hundert wirddie Schleife läuft so lange wie die Y Koordinate größer als zwei hundert ?? Simsonkoordinateläuft vontheoretisch nur bis tausend drei zwanzig zehn Bit in der Mitte fünf hundert noch wasich warte so lange wie die Nutzungkoordinateziemlich in der Mitte ist größer als zwei hundert Wahl so lange wie wenn die zum Koordinateunterhalboder gleich zwei hundert ist dann gehe ich aus dieser Wahlschleife raus das heißt diese Waldschleifewird beendet sobald der Joystick unten ist dann komm ich aus dieser while-Schleife raus ich habe gewartetbis der Schoss sich und misst die nächste von Siedler umgekehrtdie wartet so lange wieder tollste Kunden ist selbst die Koordinate unter vier hundert fünf ?? noch was ist die Mitteam sie gesehen fünf hundert zwölf wäre hübscher Mann Komma so fünf hundert achtzigalso solange wie der Joystick deutlich unter der Mitte ist artig in dieser zweiten Beischlaf und mache nichts mit der dreißig wiederauf der Mitte oder sogar höher ist geht aus der zweiten Wahlschlappe rausund damit ist die Funktion dann beendet die Macht als einziges richtigeskein Sinus aus oder keinen größten gemeinsamen Teilersondernist einfach nur zwei Waldschleifenam warten bis irgendwas passiertdie zweite Funktionist nicht großartig andersmandas in dieselben Waldschleifen drinich warte bis derKlassik runtergedrückt wurde?? ich wartebis ?? wieder losgelassen wurde sie sind die zweite Wahlschlappe ist exakt dieselbewurde Erstwahlschleifebasierten bisschen mehrich warte bis der große runtergedrückt wurde und solange wie ich warteguck ich einfach was mit der Exkoordinatepassiertdas ist der Gedankequittieren passierte mit dem Song Koordinate also warte ich auf irgendwas mit Epson Koordinate ich warten bis die Gibsonkoordinatekleiner gleich zwei hundert ist ich warte so langewie die Koordinategrößer ist als zwei hundertsolange wie ich warte hole ich mir die X Koordinatedie meisten jaRäuber knistern die meisten anders gelöst dass es bisschen sehr heftig vielleichtfür den Anfangan ich hole mir die gestern ?? wird aber gucken ist X Gordon hatte links ist die Koordinate rechts wenn sie links ist sich was ab wenn sie rechts ist natürlich was drauf ich wollte das müssen dynamische haben sie ganz links ist deutlich schneller und erzählen sie ganz recht ist heute schneller aufzählen ist deshalb technisch schon bisschen um ich nehme die X Koordinateziehen das ab was so ungefähr die Mitte sein müsste fünf hundert zwölf ist theoretisch die Mittehabe jetzt positive und negative Wertevon minus fünf hundert zwölf bis plus fünf hundert zwölfund jetzt baue ich noch im bisschen hin und herfahrenund das ganzeauf vernünftigen Bereich zu kriegengeht eine Lok geht von null bis tausend drei zwanzig theoretischmit fünf hundert zwölf abziehe habe ich Werte von minus fünf hundert zwölf bisplus fünf hundert und elfIrgendwo ist die Null in der Mitteunddamit fange ich jetzt an zu rechnenich addierehundert draufund teile danach durch zwei hundertund das ganz zahle ich das heißt da bleibt nicht viel über sie durch zwei hundert Teilenhabe ich nicht viel übrig behalten aber gucken was passiert wenn ich jetzt diese hundert drauf addierennächsten Schritt hundert drauf dann gehe ich von minus vier hundert und zwölfhundert in der Mittebisplussechs hundert und elfunddritte Schrittich teile durch zwei hundertund was wird passieren wenn sie hundert durch zwei hundert Teilenjaeben nicht ein halb sondern null ?? wegen der ganzen Zahlenklein Canalsogefährliche vorne hundert rauskriegedurch zwei hundert Hunde durch zwei hundert in ganzen Zahlen will sie ja dann ein Versagen nullweil es Ganzzahl wieder wirdan die muss mindestens zwei hundert stehen damit es eins wird mich zwei hundert durch zwei hundert das würde zum ersten Mal eins werden ?? gucken hundert zweihunderthundert vier hundert fünf ?? nicht ganz gelungenzweihundert vier hundert fünf hundert sechsundvierzigsolche bei zwei hundert Davids zum ersten Mal eins werdenSatzes die ganze Zeit null immer nicht das man jetzt die ganze Zeitnull zwei hundert wird das erste mal einsnunbeiTeile durch zwei hundert ?? beivier hundertdas erste Malzweiwerdenda wir zwei werdenauf malKomma da wir zwei werden ab vier hundertabzwei hundert aufwärts wird jetzt eins werden das es was ich daraus kriege ??wieder zurückguckenauf der negativenSeitewenn ihr zum ersten Mal minuszwei hundert stehtich sehe gerade wo ich erkläre das ist nicht richtig funktioniert aber es ist umso besserKomma gleich noch korrigierenwo kommt zum ersten Malminus eins raus was muss in der runden Klammer stehen damit zum ersten Malminus eins rauskommt hier untenminus zwei hundert und das heißt du bist programmiert habe ist es nämlichnicht symmetrischgucken hundertnullminusein hundertminus zwei hundert minus drei hundert minus zwei hundert minus drei hundert so bei minus zwei hundertda kommt zum ersten Malminus eins raus zu sehen das ist nicht schön weil es nicht symmetrisch istallein noch behebenund hier zwischen?? vonminus ein hundert neunundneunzigPSplusein hundert neunundneunzigda kommt nur rausdas noch nicht hübsch Mama gleich noch richtiganaber vom Prinzip her war der Gedanke folgenderich erzeuge Zahlendie positiv sindkleine positive Zahlenund Zahlen die negativ sinddicht bei nullund die benutz ich jetzt um die Zahl zu ändern ich im Display habe ich addiere diese Zahlenauf das Wasser Display istStaaten von der Koordinateursprünglich mal dieses jagdlichen malen soll Beistrich was man was von den Gipsakkorden hatte rein kommt von null bis tausend dreiundzwanzigStaaten von dageneriere ich Zahlen die ich jetztdrauf addieren kannauf die Zahl nicht gerade der Einstellenan Komma seiner mal an die man asymmetrisch machen kann ob ich jetzt immer wie's weitergehen solldie Zahl ich einstelle habe ich davor der ersten Wahlschleife angelegtdiese erste Wahlschleife wartet ja darauf dass die Taste gedrückt worden ist vor der ersten Wahlschleife lediglich die Zahl an die Variable für die Zahlenwieder eingestellt werden solldann zum Schluss gebe ich diese Zahl genau diese Zahl zurück ?? Returnamgucken was ?? nochals ich Rechner aus und was sie verstellt werden soll Beistrich und bis asymmetrisch war hier verständlichden Sinnvon diesem Begriffdamit habe ich in dem mit dass es bei hundert ?? verstehennicht wenn die Zahlnach dieser Erhöhung über hundert ist ?? sich einfach wieder auf hundert zurückmein Gedanke und den geht es hier weiteram Elswenn siekleiner gleich hundert ist als wenn das Evi oben nicht erfüllt es wenn sie kleiner gleich hundert ist ein Heldin dem Fall guck ich doch mal ob sie negativ geworden istPunkt keine negativen Zahlen habenunddann setz ich sie ebenauf nullwieder zurück wenn sie negativ geworden ist dann das Els könnte man auch weglassenwenn sie größer ist als hundert mache dasssie kleiner ist als Null mache dasfür diese beiden ?? schließen sich aus deshalb wenn ich das schonnetter für alle Leser einschließlichman selbstdazu zu schreibendass sie sich gegenseitig ausschließenwenn der oben Gelstourdas ansonstengucke noch kleiner sind als zulässig an dritten Fall wir liegen zwischennull einschließlich null bis hundert einschließlich das ist der dritte Fall und das wirklich der übliche seinund drei Fälle zu unterscheiden brauche ich zwei Hilfsmit einem kann ich nur zwei Fälle unterscheidenunddie Zahl ?? eingestelltes Gewicht ausdas schon alles Lustigerweisewarendas sind die Extrafunktionenmit denen man das ganz leicht lösen kann dazu gibt's Header-Dateisinnvollerweisenach dem üblichenMuster mit Include Guardswennnumber Unterstrich H noch nicht definiert ist das Symbolnumber Unterstrich H noch nicht definiert istdann definiere ich esmache die DeklarationenEnde und wenn diese Dateien zweites Mal beim selben Compilerlaufeingelesen wirddieses Symbol schon definiert und der springt sofortdasso sieht das aus so ist Komma weniger Komma korrigierenindes habe ich mir als ich die Musterlösung aufgeschrieben habe nichtswirklich überlegt dass er nicht tun sollich habe hier die hundert addiert und sie sehen das wird nicht symmetrischmit der hundert?? hundert addiere was hätte ich addieren sollen statt der hundert?? in der Tat ist es wirklich so blöde ich hätte gar nicht dazu addieren soll ich weiß nicht was mich geritten hatdieser Schritt hier war überflüssigdass sich die hundert dazu gezählt habehätte irgendwelche anderen Funktionen im Hinterkopf mit Flor wahrscheinlich flauen Zielen Spezialfunktionendie Hunderte dich gar nicht dazu addieren müssen Komma dass auch mal an ohne diedazu addiert hundert wie das dann hinkommtzurückin diesesProblemchenalso wenn ich das hier gar nicht dazu addiert hätteeinfach fünf hundert zwölf abziehen und durch zwei hundert Teil??wird zur ?? abgezogen habe ich hier nur der zu minus fünf hundert zwölf tausend und zwanzig zu fünf hundert elfund jetzt durch zwei hundert Teilenan und es wird zum ersten Malminus eins wenn ich hier zwei hundert ?? Nummer zwei hundert Jammers ungefähr zwei hundertda wir zum ersten Mal plus einsist die zwei hundert die zwei hundert durch zwei hundertauf der negativenSeite wird es hier bei minus zwei hundertzum ersten Mal minuseins und darunterist ein minus einszwischen denen hierkommtnull raus in der Mitte habe ich es alsoNiemandslandvon minus hundert neunundneunzigbis plus hundert neunundneunzigund ganz außen?? vier hundert aufwärts kommt zwei raus und beinur nochminus vier hundertabwärtskommtminus zwei Raussaucesymmetrisch viel einfacher als ich das geplant hattedanndas könnte man noch mal angucken ich mach mal folgendesich Bau des Problemchen mal um das es hier nicht die Zahl Z ausgibt sondern dass es hierdas Inkrementausgehtum wie viel will ich denn im nächsten Schritt ändernin der Formhinterder ServerHosodas jetzt mal in AktionZwistsicher bei der Eingabelinks rechts danngenau jetzt sehe ich um wie viel dasWissen aus dem Spiegel rauses sich um wie viel verstellt wird das ist der Wert vom InkrementStückchendurstig so einigen Stücke nach links gehehahaähmdas Display zeigt nuran Zeitin Thatchers an Business also nicht minus eins sondern wir sehen dem entsprechenden vorzeichenlosenWert sehr raffiniert von miram das heißt der minus eins alle Bits gesetztdas ist minus eins jetzt aber als Anzahl eher als Anzeige dargestellt und wenn ich es auch weit darüber geherigider noch einen runter ich auf der letzten Strecke geht ?? noch ein weiter und das ist minus zweies ohne Vorzeichen dargestellt dass es minus eins in der Mitte sind über Nullund nach rechts rüberrechtsrüberda ich die einsundokay so auf den letzten Millimeter hier hinten habe ich diezwei jetzt ist es symmetrisch gesehen dass er sich mal testen müssen zu Hause habe ich gemacht?? amsosieht das also richtig auswasauf viel einfacher ist als was ich ursprünglich hatteeinfach die Mittel das Mittel abziehen und durch große Zahl teilengenau wenn ich hier nicht durch zwei hundert Teile sondern nur durch zwanzig sagen neue Zeiledann liegen die natürlichdiese Bereiche viel enger zusammen und EG zerfiel weiter rauf in den Zahlen ich würde mir addieren können mehr subtrahieren können pro Schrittdas ganze schneller macheneine Sarrazin gar nicht erzählt wie man es auch noch schneller machen kannsind ?? was eingebautaus den Befehl nicht bereitgestellthabe zwanzig Millisekunden wartenwenn sie nicht zwanzig Millisekunden warten sondern nur eine Millisekunde warten wir natürlich auch schnellerbei der dann viel schneller wichtiger sind Zwischenschritteläuft