[Playlisten] [Impressum und Datenschutzerklärung]

04A.2 static-Variablen in Funktionen


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

alsodas hier war das Problemchendas Temperaturenmisst undentweder die rote oder die grüne Leuchtdiode einschaltet je nachdem ob die aktuelle Temperaturgrößer oder kleiner ist als die Temperatur dies zu Anfang hat er die noch was eingebauteswo zu Beginn die Temperatur viermalwürde dann den MittelwertKomma Lachnummerim einzelnendiskutieren was da passiertwas jetzt mal erzählen wollte was tätigdazu geh ich meinTempel charCe Heinstätigkeitdieseunsäglichenzwei Bedeutungenursprünglich war das mal sinnvoll aber heute sieht das irgendwie komisch aus das der Deckel zwei Bedeutungen hat nämlich einmal konsistent ??außerhalb von Funktionen haben in zehnzeitig in der Azweiundvierzigin der Form dann heißt das es gibt eine Variabledie zu Beginn angelegtesNamens A die zu Beginn angelegt wird und auf zweiundvierzig gesetzt wird und sie istin dieser Dateisichtbar in dieser Zederteil sonst nicht sichtbardas ist der Tag hat seine weitere Bedeutungwas die Sichtbarkeitangeht war ja bis die nur statisch in dem Sinne dass siezu Beginn angelegt wird stehen bleibt ?? statisch istund obendrein ist diese Variable verborgen in dieser Datei siehst für andere Dateiennicht sichtbar?? Gegenstück Werk wäre externdarin der vorschreibenund zu sagen sie soll sichtbar seindanndarum geht's mir jetzt heute nicht diese Verwendung von static dass es spannend wenn sie mit dem Fortgeschrittene sind eigeneBibliotheken bauen das sind die man Beispielen fürdas Praktikumdie Sache nicht fertig vorgeführt packt Komma konnten wir auch seitig vordamit man nicht vollständigin dieser etwas anderen Bedeutung habenim Sinn einer Funktion drinnenkönnen Sie Variablen habendie sie als static deklarierenin dieser Formdas heißt diese Variable Awird zu Beginn angelegteinmal angelegt und jedes Mal wenn die Funktionwieder aufgerufen wird hatte Variable A den alten Wertanders als VariablenKomma anderewie schon andere dieses LED ?? zum Beispiel die Gates jedes Mal neuoder wenn sich Ästhetik nicht der vorschreibendann wird es war ja jedes Malneu gebaut undabermalsmit diesem Wert zweiundvierziggefühltbei jedem Aufrufjedes Mal neu mit der Tag wird es nur ein einziges Mal gemachtdas sieht so verwendete Schreibweise etwas komisch ausdas sie wird nicht bei jedem Aufruf gemachtsondern ganz zu Beginn vollautomatischgemacht und das war's dannnicht aber jedem Aufruf auf ein Fertiggesetzauf wenn das so aussiehtin den modernen Sprachenwarmeine?? aber sichergeht das gar nicht mehr decken sie nicht innerhalb einer Funktioneine statische Variable habeninnerhalb einer Klasse dann etwas anders aus ?? in C das üblichsowas zu machen um Variablen zu versteckendieses A ist für die Leute außennicht sichtbar die Funktion kann sich selbst etwas merken für sichalleine kann sich die Funktionsdatenmerkendannmal zum Nachdenken die können Sie mit so einer variablenfolgendes erreichendas Initialeismehrfach aufgerufenwerden kanndass ich sowas haben kannin meiner Hauptfunktionwird initialisiertund dann ruft die Hauptfunktionennoch irgendwelche anderen Funktionen auf diese vielleicht nichtvoll unter Kontrolle haben und die einer Funktion rufen auch irgendwo Initialeisaufdas könnte passieren im Endeffektnicht das jemand einmal Initialeis miteinander schreibtbesonders es eine Funktion gibt die nicht als Aufruf einer Funktion im ?? aufruft und so weiterdass sie nicht das mehrfach ineinander aufgerufen wird zwar nicht so direkt ineinander geschrieben aber an verschiedenen Stellen mehrfach aufgerufen wird ?? verschiedeneBibliotheken wollenPunkt erist ?? für das Literatursensorfunktioniertdas wären bisschenungeschickt das dreimal tatsächlich auszuführendas man den dann auch zu irgendwelchenkomischen Effekten führen ?? ist drei miteinander ausführen zu ?? Student bei dem Display was wir imPraktikum habendas kriegen sie nicht einmal miteinander initialisiertdas Punkt singen so nichtdeshalb nun die Frage wie kann ich hier in initial als etwas bauenso das das hierein einziges Mal ausgeführtwirdauch wenn initial Eis mehrmals aufgerufenwird soll dieserschwarze Teil jede markierte Teil nur ein einziges Mal ausgeführt werdenwie kriegen Sie das mit der dick hinich merke ?? einer statischenVariablenmerke ich mir obdie Funktion aufgerufen worden ist das Reich muss gar nicht wissen ob sie fünfmal sechsmal aufgerufen worden ?? musste wissen ob sie aufgerufen ?? nicht ein einziges Malan ob wissen ob heißt ja oder nein deshalbeine große Variableund denen ich dann sinnvollerweise??es pink Court oder sowasundin den Gewicht einen Wert auf den Wertwird es zu Programmanfanggesetztalso nicht jedes Mal wenn initial als aufgerufenwird jeder Wert reingesetzt??Musikanwärterinsondern ganz zu Beginn des Programmswird dieser Wertin diese Variable geschrieben welcher Wert sollte das seinganzer Programmstart ist natürlich noch nicht aufgerufenworden deshalb fortfallsist nichts anderes als nulldas größere nachgucken was dann der PoolhaarBeistrich was ist sie nachgucken folgt ist nichts anderes als null es sieht nur schicker aus wenn sie voll schreiben dann wissen alle Leutewas gemeint istder null Schreiben warf man sich jetzt doch Adam zählen plötzlichganzzu Programmbeginn steht die Erfolgskurvemuss das jetzt weitergehenwie gesagtich möchte das beim ersten Aufrufder markierte Teil ausgeführtwirdund zweinicht mehr beim dritten Aufruf auch nicht mehr wie kriegen Sie das hingerade damit dass sie beim ersten Mal ausgeführt wirdals Wincor das geht natürlich jetzt etwaswas ?? vorschlagen folgendeseher das was sie vorschlagen das Thema gleich nochetwaskürzer hindas wäre der erste Teilwenn ich dasdannso könnte man das schreibenist es aufgerufen wordenNeinist der Wärter drinfalschwasin den Schweifklammer stehtdas es sich kürzer schreibenich brauche die Negation das Gegenteil von diesem Ding dasselbekriegt man etwasklarer soklar als relativnachdem ein Semester wenn das auch als klarer empfindenelf nordwestlichenCord dieses Ausrufezeichendie Negation kann man ganz dreist einfach als nichtlesenF Nordtest bin Komma wenn es noch nichtaufgerufen worden ist bewirkt dasselbe als wenn sie schreibenes den Coaches nicht anderes alsFordsFordsdas hierdasist derselbe wennes den Colt falsch ist ist nicht SB fort warund er geht in das F rein das wäre die übliche Art das zu schreibenbeim erstenDurchlauf steht die Variable auf FreudsWhisky rein und so weiteres ändert sich nie was das ist natürlich ungeschickt?? sacheinfach ?? wir fertig sindund kündigen die Schweifklammer rein nehmen oder ganz ans Ende nehmen?? und überlegenwas mir gerade geschickt ?? kommtja als geschickter Schweifklammer einzunehmen ja bisschen mit Reinwitznur beim allerersten Mal tatsächlich dann auftu gesetzt so sehr das dann aus?? ganz zu Beginn steht es sofortbeim ersten Aufrufvon diesem Initialeisfrug ich nach aberes ist vorNordalmwir das ?? wird ausgeführtgegenüber rein es wird auf Vorgesetztenbeim nächsten Durchgang noch mal aufgerufen wirdmachte hier Nordschuhdavon tust aber falsch und geht nicht mehrdas gucken uns mal anders ist janicht ganz sonahe liegend das man in Einzelschrittensogesehen dieses Entwicklungssystemhat einmal die local alsdie lokalen Variablenwarenhier einerTee zum Beispielwenn ich dann irgendwo leichter hin komme währende lokale Variablegelebt lokal in dieser Funktionwird auch wieder abgeräumt das Einknicken automatisch Variable aber egal das ist ein im Lokaldieses es würde danach ?? erscheinenKommadas wär's auchdie Variable die jetzt brauche ist eine statische ?? steht hier in diesem Entwicklungssystemund das der Text also nicht in der local sondern dass der Textsie sehen aha da steht ja sogar tatsächlich was drin und ist auf nullstatische Variablenin C und C plus plussindin den Funktionen verborgenaußerhalb dieser Funktionkann keiner fest in Call zugreifenaber sie sind die Lebensdauer dieser Variablen ist länger sie leben nicht nur solange wie die Funktion ausgeführt wird nicht nur innerhalb der Schweif Klammer zu sondern sie leben länger jetzt gibt's schon diese Variableund gewährt es auf nullinsofern ist diese Schreibweise hierdiese Schreibweise hier ist sehr irritierendder die Kohäsionsantwortsieht so aus als ob das ausgeführt wird wenn in die Funktion ?? eingesprungen wirdist aber nicht so des wird einmal zu Beginn ausgeführtnebenbei muss sie auch dann immer was konstantes stehen die ganzen Werte nicht ausrechnenals ganz zu Beginn ausgeführt wirdlebt noch nichts anderes was man hier verwenden könnte das rasanteseinso immer weiter janunich hatte drei Aufruf miteinander jetzt kommt der erste Aufrufden Aufruf eingehensind diese Zeile hier Beistrich weithin gesprungen diese Zahl ist für ihn nicht existente Seite einmal zu Beginn gemachtdie sie dann nicht mehrverspannt ?? Gotteswillen Court Testing Colt istFreudsGegner wolltest du sollte das Schiff reingehenokaydanndas fusioniert soweit jetzt deswegen Colt leicht Ruhe setzen die aufeinswarjetzt zurückin das nächste initial als reinich bin Gold ist jetzt auf einsdas Gegenteil davon ist null freut er sollte nicht mehr in das F reingehenokayist über das elf römisch Punkt so muss das seindas wäre so übliche Anwendung für statische Variablendie Funktionmerkt sichirgendwelche Werte die sonst keinen interessierenwenn diese Werte noch andere Leute interessieren ?? müssen Sie die rausnehmen aus der Funktionist es ganz hilfreich wenn dieser Wert nur für diese eine Funktion interessant ist in originalen Konsum zu behaltenkann kein anderer damit und fummelt der ?? Blödsinn machendas aber nächsten Semester bei der Regierung dir noch ein bisschen deutlicherdas Essen grundlegendes PrinzipVerkapselungdass man alle Informationenso weit wie es geht verstecktdas deiner mit seinen legalen Fingern daUnsinn machtjedes Herz den Colt auch nicht außerhalbbesser verständlich das in der Funktionnochetwas von der Sorte ständigum?? Variablenauf Dauer zu behaltenaber innerhalb von Funktionen zu versteckennämlich hierfür der Tempel Schamwie kriegen Sie das hier in der Kette zur Funktion hindass die Funktionirgend eine Warnung ausgibtwenn der Wert überraschendstark verschieden ist von dem Wert der zuvorMitarbeiter wirdständig aufgerufenalle Nase langund ich könnte mir vorstellen das es nett ist wenn diese Funktion von selbst Bescheid sagt wenn die Temperaturumsoundsoviel Gradmehr als erwartet seit dem letztenAufruf sich geändert hatwas müsste ich tunals ich heute wirklich denvorherigen Werten im egal ob der vorherige Wert einen Tag alt ist oder nur eine Millisekunde alt ist ähmandersrumund so weiter was schon wir bräuchten irgend einen??wenn der neue Wertzu stark abweichtdannsoll eine Warnung ausgegeben werden standesgemäß wieder heile Level machenich habe sie einfach nurworan reindie Funktion müssen auch buchstabiert werden Komma diese mal wieder ausihrem jetzigen Warning undFunktion aussieht ob wir sie wieder einschaltet oder nicht einschaltet oder E-Mail versendenbis man auszustatten aber auf jeden Fall bräuchte man dieses hierwenn denn der neue Wert zu stark vom alten abweichtmöchte icheine Warnung habenes ?? aber die Zutaten hier bei dem ich sie sehendas Wetter sich der giftige Teil was kommt denn jetzt eigentlich in die runden Klammern vom Eve reinvielleicht Klammer zu Differenzanden sich vor sie haben Temperaturmessungenauf dem Zahlenstrahlmöchte wissen ob die vorherigeMessung und dieaktuelle Messunghier vorherund jetztob die weit auseinander liegen oder nichtKomma das hatten wir eigentlich im Seminar so ähnlich bei der bei dem Newtonverfahrendannich möchte wissen wie weit die auseinanderliegenist es mir egal ob der eine Link ?? an der rechts oder umgekehrt wie ich möchte nurdiesen Abstand wissenund das wäre dann der Betrag von vorherminus jetztdas wüste Vorkommen ist der Betrag von vor minus jetzt der Betrag der Differenzzu großdannaber die Sirene ander größere Ärger istwie kriege ich diese Werte vorher und jetztumden neuen Wertsind sie wurde Herr kommt es gibt ein Registereine lockte diese zur ConverterzehnVersionsnummerMemoryEdi sieht wenn man das heißt das an ein ?? buchstabiertNC ist man immer so ganz fürchterlich abgekürztentlockte die Life Converterwollen aber denMemorydann da steht vor der neuwertigin dieser Speicherstellesieht hübscher aus wenn ich mir das merkeinsmüssen Valueneue Wertund angeblicheunten den neuen Wert auswas mir jetzt aber fehltnachjetzt aber fehlt ist der alte fährtdie König den alten Wertalso traurig statisch soll sein ich möchte ganze Zahlen speichern inBallwassers auf meinemAnalog Digitalkonverterja auch rauskommtin ?? istwenn ich den verweile sinnvollerweiseunter welcher das neuen ?? sinnvollerweise nur Tempel Schamundder Anfangswertvor als wäre er dasselbe Null aber sieht komisch aus wenn ich eine Zahl auf falsch jetzt eine Zahl soll ich auf eine Zahl setzenja ganz anders einfällt zweiundvierzigwas ja nur Stellesinnvoller finde Leerzeichen ?? minus einsder Analog Digitalwandlergibt niemals negative Zahlsinnbildlichliefert Zahlen von null bis tausend dreiundzwanzigdas heißtdas heißt diese minus eins könnte niemals aus der Messung rausgekommen sein die Messung sind immer Zahlen von null bis tausend dreiundzwanzigmit dir kann ich erkennen das ist keine Messung wie der minus eins das Wasser sicher selbst erfunden habebei Bedarfkönnte ja schon mit der minus ein Vergleich irgendwo ist hier die minus einsund der Vergleich dann die neu gemessenen Temperatur mit der minus ein tausend schon vorsichtig sein das heißt wenn das minus eins ist sie dafür sorgen dass er den Vergleich nicht machtdageht's jetztnämlich weitersehen dies einiges zu gucken ich muss erst mal gucken ob die Temperatur minus eins istPunkt wenn die nämlich minus eins istsolchen Vergleich gar nicht machenund dann guck ich erst nach der Differenzjetzt wird'skompliziertan also ich gucke erst mal ob die Temperatur ungleich minus Arzt ist die alte Temperatur die ich da habe ist die ungleich minus eins und dann mach ich nur weiter mit Manga zu Vergleichs kannwenn die alte Reparaturgleich minus eins istmuss ich nicht vergleichen das wäre sogar schädlich weil ich dann diesen Unsinn in der Natur wird minus eins mit anderen vergleichenich hab die zweite Bedingunggeschrei bis jetzt ?? ganz falsche mit der zweiten Bedingungsmaßnahmenehmeähm ich möchte das die Differenzzwischen derneuen und der alten Temperaturwie gesagt so ist das noch nicht richtigaber ich hatte zwar ?? du mit ihr zu kriegenwas da passieren sollwenn die diese diese Differenzim Betrag größer ist alsich weiß auch nicht dreizehn das ganze Grad Celsius sondern irgendwelche ganz krummennichtlinearen Geschichtenwenn diese Differenzim Betrag größer ist als dreizehndann soll die Warnung hier ausgeführt werdenhabe ich zweiPaarlogische Ausdrücke einmal den hinten der wird wahr oder falsch und einmal den ?? vorne der wird wahr oder falschsie können nicht zweigetrennte Ausdrücke in den ?? in den elf muss ein einziges wahr oder falsch stehen was machen Sie mit diesen beiden Ausdrückendie sollen beide erfüllt sein also ein Und-Zeichenso sähe das dann ausund dieses unddas schon gesehen haben das es und technischer Punkt an der Stelle dieses und ist sogar noch raffinierter als mathematische undes gucktob der erste erfüllt istmeine erste nicht erfüllt es guckte sich den zweiten gar nicht anderes short CircuitKurzschlussdas ist sogar noch besser an dieser Stelle ?? guckt ob die alte Debatte ungleich minus eins istnur wenn das der Fall ist oder sie auch den zweiten an den ?? das erste schon nicht der Fall istweiß es kommt falsch insgesamt draußen davon schon Fall steht Musters und und insgesamt falsch werdenwo das zu dem unter ?? soll die Unverknüpfungvon beiden sein habe ich nicht die aller erste Messungsich da vorn und hinten möchte ich dass der Abstand auch groß genug ist dann sollte Warnung ausgegeben werdenes habe ja noch dierichtigewas werde stattdessen schreiben müssenalsoder Betrag strichden gibt es ein Wolfram Alphaaber nicht den üblichen Seesprachender muss Apps stehen absolutwie normaler FunktionsaufrufWassers wie einer das ist ein ganz normaler Funktionsaufrufdie Funktion namens App Appsabsolut Betrag angewendet auf das was der in runden Klammern steht so sieht dann ausund damit der die Funktion selbst erkenntauch nochStandard lebt hier oben in CloudinBluetoothStandardLibrary SDDPunkt HPunktKombi dir das mal dass er mir das hier malbesser anzeigtDepot ist allerdings so Komma aber keine nachfolgestandardlebich suche darin nachClubsbeimStartelfPubsgesehen der stets im Cups ins das ist die Deklarationfür dieAbsolutbetragFusion mit allen möglichen anderen Krempel der ?? drin stehen mag aber deshalb hole ich mir diese Header-Dateisojetzt kann der Compiler damit umgehen damit keine umgeheneine Sache fehlt nochunter Reserve niemals gesetzt dass es ihr das Problemeinmal zu Beginn des Gesetzes heute sagen wir einmal zu Beginn gesetzt aber dann nie wieder das heißt ich muss mich nochich muss jedoch dafür sorgen dass nachdem ich denn die alte Tastatur benutzt habe das die den neuen Wert kriechtin der Formnehmen den Wert der neuen Temperatur schreibe das in den Wert fürsvorige Malbeim nächsten Aufruf dem Wert fürs vorige maldasKomma sicherheitshalber glaube ich malin Einzelschrittenandie Umwelt wieder aufräumengucken hier sookayDenkich gehe mal direktzu diesem Dreck Punktich bräuchtesogesehen ja meine zweite statische Variable bekommenund ?? schon besteht auf minus eins ab Beginnjetzt hole ich die neue Temperaturauf den ich bei den Stetexaufsehernsinnvollerweise bei den localInderin ist lustigerweiseunter local zwei so kahl sichtbar ist auch authentischer zu sehenwarenPunktnächster Schritter hat die neue Temperatur geholt ?? das in ?? sieben hundertneun zwanzig Grad ?? siebenundneunzigKelvin dass es einfach ?? zehn Bit werdende Zahl von null bis zehn rein zwanzigdann die irgendwie für die Temperatur stehtmit einereher kompliziertenund nicht allzu genauen Umrechnungje nach Typ verschiedenhat sich die neue der Natur geholt in dieses ?? habe nur den Betrag reingeschrieben?? es kommt hier der Vergleich ?? guckt nachob und Tempel ungleich minus eins ist das schlecht schon viel ist gleich minus eins das heißt ?? darf hier nicht reinundnun merkt er sich die neuegemessene Temperaturals die des letzten Durchlaufsin der Formund gibtdie siebenundzwanzigals neuen Wert zurückausjetzt kümmert sie nächsten Durchlauf an den nächsten Durchlaufoder sich die Nässetemperatursieben hundert zweiunddreißigund jetzt ist die alte Debatte eben nicht mehr ein zwotes Ding nimmt seinen Lauf so sähe das dann aus Knochen anderes Beispiel ebenwie man statische Variableninnerhalb von Funktionen verwenden kannoben sich zwischen den AufrufenWerte zu merkenund zwar so das kein anderer was davon mitkriegtmit saubererdie bessere gibt je mehr sie das Verbergen des zu sauberer wird das Programmkann sich überlegen dass siedas sie ganz anders lösen ohne dass jemand anders davon erfahren musstendie Anwender dieser Bibliothek sehendie Funktion der Tempel für die ganze Fonds in den wie sie immer fusioniert hat und sie überlegen sich dass sie das komplett anders macheneher eine Sache solche noch dazu sagen das mit der Warnungdas ist eigentlichnicht so superschönwenn die Funktion heißt jetzt Tempel charin die Funktion der Tempel je heißtdann erwartet man dass diese Funktion die Temperatur holt und nichts anderes machtkeine Warnungen aus gibt's keine E-Mails verschicktirgendwelche Datenbankendurch das wären unerwartete SeiteneffekteNebeneffektesei defektwar eine gestreckte Zeile wächstinsofern müsste man die Funktion anders nennen wir Temperaturentworfen oder sowas?? mandas in dieser Form macht