[Playlisten] [Impressum und Datenschutzerklärung]

04C.3 Quersumme in beliebigem Zahlensystem; eigene C-Datei mit Header


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

heuteSonne besonders über Hintergrundwissenund die fein und so weiterVerletzerwoche gab's diese Funktion hier in die Quersummeentsetztso definiertandie legen Sie mal in der eigene C Dateidass man dienacheinander Programm einbetten könnte als ob sie Bibliothek wäre Doppelsieg super wichtige Funktion wäre die man anderswogebrauchen könntediese Funktion hier mal eine eigene Zieldatei verlegenunddanndie auch mal erweitern das ist die Quersumme in Zehnersystemschrammte meine Funktion mittig die Quersumme in einem beliebigenganz beliebigen aber in befremdlichen Rahmsystem schreiben kann ein Quersumme im Zweiersystemdreißigstem vier Systemzehn Tausendersystemdas heißt ich möchte dieser Funktion nicht damit gebenwelche Zahl der gerade angesagt ist von welcher Zahl ich die Quersumme haben will soll auch in welchem Systemzweier Dreiervierersonst wie Systemnochdas zusätzlich angebenaber erst mal diese Fusion eine eigene Datei auslagerneignet sie Datei Auslagen nach allen Regeln der Kunst mit dem Blut und dem Verein sogarsicherheitshalbermit natürliches neues Projekt anlegen und schreiben da diese Funktion Quersumme rein steht die Funktion der Summe in einer eigenen Datei so meinst es jetzt nicht ?? ich meinteich habe typischerweiseseinen Dateimenschin der in Anführungszeichen das Programm drin stehtder Kern des Programms die Hauptfunktiondie Mailfunktiondrin stehtwie hier sind keine alsodie vierte Mainfunktionund danebenhätte ich gerne weitere Dateien jetzt eine einzige weitere Dateiin denen diein den der Kleinkram passiert und Dateien die vielleicht dann später auch in anderen Projekten verwenden kann?? Bibliothek ?? Funktion aufbauenneue Datei anlegen als ich habe das Projektso Vista ist und ich leg jetzt obendreineine neue Datei andas wir das simpelste hieramund schmeiße die Funktion darein das wird aber so noch nicht funktionieren?? Kätzchen nehmenund in die neue Datei reinschmeißenaber das ist noch lange nicht fertigstehendeDefinition einer Funktiondas ganze zumindest speichernCSS?? sinnvollerweisedann Quersumme Zementlateinbei Kansas da wo auch die Maine Datei steht sie in der bestimmen Datei auf dem Desktop gelegt das überhaupt ?? Idee Punktegal ?? speichert es in das Verzeichnis wo die Maildatei stehtsonst wird esetwas konfusich mach das jetzt als Quersumme zehnwas ich jetzt habe ich eine weitere Dateiaber?? SystemEntwicklungsumgebungweiß eigentlich noch nichts von der weiteren Details ist weitere Datei aufgemacht schönaber diese weitere Datei sei nicht Bestandteil des Projekts diese Datei muss noch Bestandteil des Projekts besagen des endgültigen Programms werdensie machen ihr Mausklick rechtsundsagen atQuersumme zehnausgeprägteter sammelt siedamit Weise das Projekt davonetwas der Compiler A ich muss Maine Ziel kompilieren und Quersumme C kompilierenden Blinker weiß ich muss beides dann was rausgekommen aus dem Compiler zusammenzum Programmbeide werden jetzt Bestandteil des Programms solange sie das nicht hier hinzugefügt haben ist das einfach irgendeine Dateidies gerade offen schön oder stört ansonsten kann diesen Bestandteil des Programmsdiese Geschichten hier werden dann in allen möglichen Excel Dateien gespeichertwieder neben dem entziehen versuchen Sie sich wundern wozu diese ganzen Excel Dateien da sindversteht das dann zum Beispiel was ist da das Projektso ist das aber noch nicht fertigist zufällig schon fertigBeistrich Quersummedeklariertes?? könne das ehrlich sagen Project Macganzab Version zweiter ?? noch vorzwei ?? ich eben gelöschtsind Version zweiunterstellt der Linker festhalloich hab keine Funktion weist keine Funktionder Summe zwei was die gehtdas ?? noch Überrest von letzter Wocheso Quersummesollte hierkennen weil sie vorher deklariert istProject schmecktso ist das Ringer wirklich glücklich Compiler und Linker sind glücklichin der Hauptfunktionverwende ich Quersummedem Compiler habe ich vorgesagtsei zufriedensowie die Funktion Quersummegegenüber schon zustandekriegenin der Tat für die Fonds um Quersumme gibt's per Definitionin einer anderen Dateider Compiler übersetzt beide Dateien eine nach der anderenund der Linkersieht dann zu wir das ganze zusammen geflochten kriecht für die Männer Teil suchte sich dann irgendwo die Funktion Quersumme herund findest findet er hier demwas aus der Datei Quersumme C kompiliert worden istPunkt dann sind alle glücklich das ist jetzt aber noch nicht so wie man es üblicherweise machen würdetypischerweisemit HeaderdateienarbeitenPunkt versuchen Sie das mal professionell zu lösen eine Header-Dateimit der Deklarationund dann den üblichen Kram mit dem Verein und so weiterimmer das machen würde das Header-Datei nicht zweimal ein??zum erzeugen von neuen Dateien sicher Komma sagenalso eine Möglichkeit hier einfach das leere Blatt oder ihr unter Fileionund dass sie erst mal so aus als aber dann nicht erkenntindes nichts eingefärbterst wenn das Ding unter dem Namen bla Punkt C abgespeichertwirdweiß Entwicklungsumgebungauf das Zillertal nichts anderes und dann fährt sie in das ein ?? nicht wundern dass es jetzt eingefärbt ist das erst wenn sie sagen seestCSSunter sowieso Punkt zehndann das Ding eingefärbtnichtalso man hat einmal PC Dateien mit der Funktion die man auslagern willPunkt typischerweisebaut man dann noch eine Header-Dateiweildas total nervig ist wenn ich für jede Funktion die von außen sozusagen holen wenn in dieser Maildatei möchte die Funktion Quersumme von außen undist total nervig wenn ich dann jedes Mal für jede Funktiondann noch Deklarationenschreiben muss ohne diese Deklarationgibt's ja Ärger mit dem Compilerbei der Compiler sagtProtect Macbei der Compilersagt sind wir hierdenn die Fusion wird nicht der Compiler geht durch jede Zähler dadurchjetzt ich mein C und Person C Komma die sich IDC Datei durchund erzeugt was man Objektcodenennt dass es fast schon Maschinenspracheaber noch nicht ganz Maschinensprachedie Querverweisesind insbesondere noch nicht eingetragenund hier weiß der Compilernicht mal wir das kompilieren kann erkennt nichts über eine Funktion Quersumme muss wissenwas diese Quersumme nimmt und was sie liefertist der oben Entquersummeentsteht und die Deklaration kann der C-Compiler das nicht essen bisschen dummund Deklaration gibt es hier dieWarnungen und diese Warnungen sind wirklich ernsthaft ist das typischerweiseman hat wirklich Unsinn veranstaltetich brauche diese Deklarationsonst meckert der Compiler und baut Unsinndiese Deklaration ist aber nervig immer dazu zu schreiben für jede einzelne Funktion die man von außen Reinhold deshalb baut man Header-DateiPunkt meine Header-Datei dazuschnell malsinnvollerweiseQuersumme Punkt Ha CSSPunkt HaKommada schmeiß ich dieDeklarationreinsound hier sage ichhohle dieseQuersumme Punkt Haderthiraiin CloudinkludierendieCPunkt Hund jetzt müssen alle wieder glücklich sein Compilerfeelinggar sodas ist fürchterlichviel Mechanik und dass es in den modernen Sprachen nicht so schlimmin C und C plus plusist es leideretwas komplizierteralso der Compilermuss wissen bevor seine Funktion einsetzen kann muss der Compiler wissen wie diese Funktion von außen aussieht was nimmt sie was gibt siewas ist der Compiler aufgeschmissenund damit der Compiler glücklich ist muss ich immer so vor Verwendung dieser Funktion sagenwie denn die Quersumme von außen aussiehtwas mache ich in der Header-DateitypischerweiseDeklarationder Stunde typischerweisenicht eine einzige Fusion den achtundzwanzigHunderte von Funktionensei zwar das sie das auch wirklich lohntich ignoriere diese eine Header-Dateiund damit geht der Compilerzwanzighundert ?? Funktiondie ich dann danach verwenden kann so sehr das typischerweise aus Institut heißt nichts anderes in C und C plus plusdas wirklich diese Datei gelesen wirdund darum eingefügt wirdder Compiler sieht tatsächlichalles hier hintereinanderdie den Inhalt von Quersumme Haarund danach in Maine und so weiter als ob dieDatei Quersumme ?? oben rein kopiert wäredas es was der Compiler siehtziemlich einfachin alten Videos kam schon der Begriff Präprozessordas ist eine Anweisung eine Präprozessorwie Vorfahr Arbeiterbevor du irgendwas tust bevor der Compiler irgendwas anfängtnehme bittediese Datei und kopiere sie quasi ihr vorne reindass das geht ?? CompilerDoppelkreuzsagen immer das der Anweisung an denPräprozessorden Vorfall arbeitenwollenso würde das bisher funktionierensie nannten wirklich ihrder Compiler ist durchgelaufen der Linker ist durchgelaufenwir haben ein Programmso könnte man das weitermachenwenn sie mehr Funktionen habenwürden sie hierversucht sie noch mehr Funktion dazuschreibenals Definitionwie sie von innen aussehendie Deklaration?? die Header-Datei dazuschreibendann können sie dir verwenden weilihr wenn die Deklaration automatisch reingeholtjetzt gibt's eineziemlicheklige Geschichte in C und C plus pluswieman an dieser Stelle noch nicht merkt die andern aber später weistes kann vorkommen das Header-Datei mehrfach inkludiert werden ??stellt sich vor in dieser QuersummeDatei?? sich vorher durch eine Funktion bla?? diese Funktion blawäreinirgend einemDing namensbesser nicht Leertaste ?? wieder weg bla Punkt H deklariertfür die in dieser Datei Quersumme zehneine Funktion bla verwendendie Entlarvung tat deklariertesBlatt Punkt Haar könnte aber lustigerweiseauch für die Quersumme verwenden hätte ich darin wieder die Quersumme Hinkludiertaus ganzem Schluss vorkommen dass ich eine Datei mehrfachstudiert habe und hoffentlich hinausetwas um dieselbe Situation gibt das Ärgerdeshalbvermeidet man das per se man sorgt dafür dass diese Deklarationnur einmal beim Compiler ein Punkt das sieht haarsträubendaus man das zum ersten Mal sieht ich gestehe das aber das ist OC Folklore und C++ Folkloredie moderne Compiler kann es auch anders man kann sagenin einer Zeit moderner Compilerdieses nur einmal inkludieren aberdas war nicht ganz offizielldie offizielle Lösung sieht sieht so auswie flott die Feindeine Anweisung an den Präprozessorwenndas Symbol was ich danach eben noch nicht definiert ist nämlich ?? Quersumme Hartmannsklar was ich meine und es gibt auch nicht zweimalin dieses Symbol noch nicht definiert ist definieredas SymbolQuersummedeklariertedie Funktiondannbrauchte der Prozess ?? Wochenende für dieses ??wenn Quersumme Haar nicht definiert ist das der erste Durchlauf des diese Datei wenn der Sommerhaar nicht definiert ist definiere Quersumme Hdas Symbol ist definiertsie den in einer Tabelle deklariereman FunktionEnde der GeschichtePunkt alle diese Dateien nochmals sieist Quersumme H definiertgeht nicht in das ihr freisofort downloadenund sich deshalb die Deklarationdas istdie übliche Art das zu tunMacsoist der Compiler es auch glücklichdasist das was man typischerweise schreiben würde ?? ihr bei dieser Deklaration einer Funktion wäre das noch kein Drama wenn der Compiler dieses Ding mehrfach sehen würdeaber mehrfach dahinterdann würde noch nicht nutzen das ?? noch als Kollagennull Fehler null Corningmit Datenstrukturenkommendann wird es ekligerdann gibt das Ärger Komma denkt an dieser Stelle schon an der permanente Funktionen hatunendliche Datenstrukturen selbst dann wenn man schon an das hier solche Include Guardseinzubettensicher sicheren Klammer zu ?? nicht vergessen?? diese Headerdateien stehen immerkomplett in solchen Include Guardsman gewöhnt sich dann irgendwannan diese komische Konstruktionin den modernen Sprachen wie gesagt ist sie nicht mehr nötigdie kommen sowieso ohne Headerdateien aus diesen Unterlagen sich das alles selbst zusammenzusuchendiese Infosder C-Compiler unddie sind dann noch etwaszu Fuß unterwegsdas gleiches von überall so zum Laufen tatsächlicheine Sache noch sehen was kompiliert wird es werden die Zieldateienkompiliert es wird nicht die Header-Datei kompiliert es werden die Zieldateien kompiliert ?? NancyQuersumme C dass die Dateien die kompiliert werdendie Header-Datei wird nichter nicht direkt kombiniert dass es die Anweisung an den Compilerdie Datei an meinen Sie die Datei an Quersumme zehn?? dem Compiler nicht direkter mögedie Header-Datei anguckenwarum muss ich das nichtweil sie hier inkludiert istwenn der Compilerdie DateimaineC kompiliertliest er Quersumme H einals Teil der Maine C Dateidie wiederum quasi rein kopiertund damit wird sie dann auch kompiliertdas heißt sie nehmen nicht diese Headerdateienin die Liste der Dateien auf die kompiliert werden das passiert automatischdass die Header Dateien kompiliert werdenBeistrich nämlich installiert habenwas kombiniert wird sind die Zieldateider Compiler geht jede ZieldateidurchbautObjekt groß daraus inzwischen FormanSpracheund dann geht der Linker noch mal durchund was sind die ganzen Querverweise zu Link verlinkt dasInternet die Linksverbindet die ganzen Querverweisemiteinander und baut tatsächlich dann ein Programm drauserfindet??erfindet diesen Querverweise zum Beispiel dann auf Quersummeder Teile aus Nancy entstanden istund von ?? bindet denmit dieser Funktion dass das auch wirklichdiese Funktionsaufrufdas ist der Job des Linkerfür diese drei Dateien mal wirklich so zum Laufendass sie tatsächlich mal einmal ein Problemchen haben eine korrekte Hauptfunktionmit einer integriertenHeader-Dateieine Zieldatei in der eine Funktiondefiniert wirdundeine Header-Dateidazu mit demes wirklich hier übergeben in welchem Zahlensystemwerden die Quersumme gebildet werden sollzum Beispiel im Zehnersystemoderim Zweiersystemdas noch gespannte Frage was Quersumme ZweiersystemglänzendenZahlen Zweiersystemhabenzwar manches als Zweiersystemwas passiert wenn sie davon die Quersumme bilden was heißt das eigentlichdie Zahl der Einsen jajetzt Person den Einfluss Ottos Einfluss als besonders anderes als die Quersumme zweier Systems die Zahl der Einsenim Zweiersystemim Vierersystemhaben wir das System aber die Ziffern null bis dreidreizweinulleins oder sowas im Vierersystemoder wird richtig ekligZweiersystemist es relativ gleich zählen die gesetzten Bits das ist die Quersumme Zweiersystemzumindest das Wüsten war relativ einfach nachvollziehen können?? irgendwasRechnung reinzwei Systemenähmzum Beispielzehndie Quersummeder Zahl zehn Zweiersystemzehn ist in zwei System eins null eins nullzwei rauskommen??ich das mache mit derda elf und zwei System Einzel eins eins B hexadezimalder müsste drei rauskommen Punkt natürlichhabe sodas hätte ich gerne das Monster Quersumme funktioniert auch mitgeben kann in welchem Systemdenn die Quersumme ausgerichtet werden sollund sie nehmen jetzt die nötigen Änderungen vor ?? an den Dateien was muss ich ändern damit das gehtalso diese Funktion soll eine weitereZahl kriegensind ja bei dem Aufrufwieder sein Aussehen soll eine Zahl und noch mit Zahlenzwei Zahlen soll die kriegendas schreibt man danndie Art wie zwangsläufigirgendwie wohl sein musssie sich noch eine Zahl ich sage mal in die B für Basisdas dann aus sie müssen ihn sagenweil sonst der Compiler nicht weißwas sie meint es könnte auch Doppel sein oder oder später irgendwas Schlimmeres irgend ein Datensatzes ist auch eine ganze Zahldie Funktion der Summe soll jetzteine ganze Zahlvorne nehmen sozusagen eine ganze Zeit entnehmen zwei Sachen soll sie nehmen zweitem Rationzwei Stück dasagen soll sie nehmenund eine ganze Zeit andas muss natürlich dann in derDeklarationauch angepasst werden wenn sie hier weiterhin sagen sie nimmt nur eineswird es Ärger geben soll Komma wovon ich mich erinnere was das Ärger gibt ?? aber naheliegenderweisemüsste sie auch anpassen dass die Funktion Quersumme jetztzwei ganze Zahlen habenso die ?? sich diese Basis auch noch verwendenbisher war die Basis sehenund sie könne wirklich so naiv wirklich Erzieher durch die Datei gehen und sich angucken okay zehn soll's nicht mehr seine soll B sein ?? ob sich da ein Designund da kommt ein wäre einwenn ich im sechzehn er System binzum Beispielwenn ich im sechzehn er System wenn er dich umdie letzte Stelle loszuwerdendurch sechzehnterBeistrich sechzehnterMünchen Zweiersystemwerden die letzten Busse werden ganzjährig durch zwei teilensich zwei Teil rutscht immer diedas letzte Bitüber die Kante übers Komma verwahrtalso hierdurch gleich die Basismich interessiertwas hinten auf der allerletzten Stelle stehtin jedem System was ist Modul und die Basisin jedem Systemdas wir zu durchlaufenalso muss es sich ausdrücklich in anderen Systemen rechnen dass es weit verwirrter muss es sich ausdrücklich in anderen Systemen rechnen um diese Quersumme zu bestimmenden Systemenich rechne ?? auch nicht in Dezimalsystemintern in derich mache nur die richtigen Rechenoperationendas auszufüllenunseres Musterschreiben Stoffenals Übersetzung ausgerichtetnachdemmehrsobeispielsweiseratesweisend?? sechs plus vier selbst sehen das aber nicht kaputt gemachtdie Quersumme aus zehn binäreins null eins nullzwei Bits gesetztdie Quersumme aus elf binäreins null eins eins drei Bits gesetztsoweit sie das erst mal plausibel aus das natürlich jetzt keinensehr tiefschürfendeTest aber sieht das plausibel ausso könnte man das machendamit haben sie es sein Fonds und in zwei Variablennimmtzwei Argumentezwei Parameter nimmt ich für das Motto was passiert wenn ich hierin der Header-Dateigesagt hättediese Fonds und Quersumme würde weiterhin nur ein Parameter nehmen wie vorher?? was dann passiertProject MacMac heißt das Programm zu bauen aber es nicht sofort auszuführenmich interessiert das Poppersprogramm bauen kannund sie sich um das geplante drei Fehlerdu meine Argumente falschen Kommaalle drei Zahlen sind falschich gebe zu viele Argumenteich gebe zweiArgumentehabe aber nur ein Parameter in dieser FunktionBeistrich der Compiler dann mitihr siehtin Quersumme aber sicher um ein Vanity Fair Summer H sieht erdass ich behauptediese Funktion will nur eine Zahl habenundfällten hier auf die Nasehier plötzlich zwei Zahlensowas wenn sie schonmitich?? Komma weg damit die ganzen Flächen sind