[Playlisten] [Impressum und Datenschutzerklärung]

S10B Datumsberechnungen selbstprogrammiert


CC-BY-NC-SA 3.0

Tempo:

Anklickbares Transkript:

dieDatumsberechnungsich das ?? gucken was die Betriebssystemeeingebaut habenund auch Dieter Berger Windowsprogrammeeingebaut haben die kölnischen direkte Daten rechnenwenn ich auf ihren ganz einfachen System binhabe ich hoffentlichimmer noch ?? Bibliothek die mit Daten rechnen kann aberschöneÜbungwas Algorithmen angeht und sich selbst was überlegen wie das geht und zwar möchte ich Ihnen heute folgendes Schreiben eine Funktion?? nimmt das DatumalsoTag Monat JahrTag MonatJahrBeistrich erstmals einzelne Zahlen noch nicht in der Form Sohn zuwider Punkt Sohn zuwider Punkt soundsoviel soll bei dreiZahlen die rein gebenund als Ausgabe hätte ich gerne denWochentagausgabeMontagbisSonntagum?? und die wesentliche Information die man haben muss habe ich erst auch auf Wikipedia nachgeschlagenwie das mit den Schaltjahren und wirklich gehtes geht so mit den Schaltjahrenes gibtalle vier Jahre ein Schaltjahraber nicht immeres ist die Kunst Schaltjahreanalle vier Jahreeigentlich erst malaber nichtalle hundert Jahreich habe das jetzt aber nicht alle hundert Jahrealtes Januar sechsundneunzigwar ein Schaltjahrund dann scheint nach dieser Regelung das Jahr zwei tausendkeines gewesen zu sein aber es gibt noch eine Regelung alle vier hundert Jahreist es dann doch wieder ein Schaltjahraber doch alle vier hundertJahre nach ?? schon zusammengeschmiertso das sind laut Wikipediadie Regeln für Schaltjahrealle vier Jahre ist eines im Prinzip es sei denn die Jahreszahl ist durch hundert teilbarKomma wenn die Jahreszahl dann obendrein durch vier hundert teilbar istdas dann doch wiederein SchaltjahrSchalter heißt daneben drei hundert sechsundsechzigTage der Februar ist länger und das muss ich dann berücksichtigenwenn ich hierum Rechnervom Datumauf den Wochentagdiekönnte man im Prinzip rangehenmirgeht es nicht darum gesondertes Format auseinanderzunehmender soundsoviel DoppelpunktLeerzeichenSohn zur Hütte Punkt Leerzeichen so zu viel oder sogernangenommen ich habe diese drei Zahlender wievielte Tag des wievielten Monats des wievielten Jahreskönne als drei Zahlen ist in der Funktion ankommende Kasachen etwas nettes überlegenangenommen ich habe diese drei Zahlenkann ich im Prinzip angehendas in Wochentag umzurechnenund die Wochentage können natürlich erst mal als zum Beispiel Zahlen von null bis sechs einfach auskommenmüssen und nicht weniger Zeichenketten rauskomme geht erst mal nurum das Prinzip dahinter und hübsch machen Komma sind immer nochsoalso eigentlich bräuchte ich vorab erst meine Funktion die Tage zählen kann zum Beispiel Tage seit dem ersten ersten neunzehn hundertdann nämlich einfach Modul siebenalso eigentlich so essbar so eine Funktionkann so zu schmieren hierEingabedie ich den Tag als Zahldickichtim Monat als Zahlund richtiges Jahr als Zahlund Ausgabesoll dann seindie Zahl der Tageseit dem ersten ersten neunzehn hundert zum Beispiel oder ersten ersten neunzehn siebzig oderirgend ein fester Tag eben im SS neunzehn hundert ?? versuchenalle Tageseit dem ersten ersten neunzehn hundert das heißt der zweite erste neunzehn hundert bei dem sollte eins rauskommendas heißtwenn ich eingebenzweite erste neunzehn hundert?? dann soll das Ergebnis bitteeins sein und wenn ich drei dritte erste neunzehn hundert ein gebesoll das Ergebniszwei sein und so weiterdann ist der Gedankeich gucke mir das Modul sieben andann weiß ich ?? Wochentage ich vom ersten ersten neunzehn entfernt binmuss man sich noch überlegen was der Wochentag vom ersten ersten neunzehn hundert ist das ein relativ einfach und so weiter?? beschreiben so eine Funktionzählt die Tage seit dem ersten ersten neunzehn hundertalso mein Gedanke wäre folgender ich gehe vom ersten ersten neunzehn hundert ?? ausbis zum?? natürlich jetzt sogar einfach zehnten ersten?? Monatzwei tausenddreizehndas ich dann erst mal kucken was ich an ganzen Jahren habeich die bis zum ersten erstenzwei tausend dreizehnwie viel Tage sind dasimmer die kompletten Jahre und da kommen die Schaltjahre eben ins Spiel ?? zum sechzig ?? fünfzig tausend ?? sich alle sechs sechzig und so weiter wie viel Schaltjahre sind dabeisehr eigentlich einfach kinderleicht ausrichten für Jahre sindaus Sinne leider nicht die Anzahl der Jahre mal drei hundert fünfundsechzigsondernich hab diese unsäglichen Schalterhalle der Zwischenlösung sieht ein bisschen vorsichtig sein ?? kann ich zumindest irgendwas mit ganzen Jahren veranstaltenhabeaber Vorsicht mit Schaltjahrenundhier innerhalb eines Jahresist es ja noch etwas überschaubarerdie Anzahl der Monatedie Anzahl der Wochentageund die geht'sja Gesangs ist scheinbar überschaubarerweil jetzt die verschiedenen Monatslängenzuschlagendreißig einundneunziginnerhalb des ein Jahres jetzt ein bisschenfieser zu rechnen das wäre meine Idee so dran zu gehenich würd sagen das Problem zwar direktin die Entwicklungsumgebungsieht das auswenn Sie die Funktionenwie fangen sie an die zu schreibeneine Funktion die Tag Monat Jahr nimmtzwei einzelne Werteund an gibt?? Tage das seit dem ersten ersten neunzehn hundert sindan die müsse die Fusion von außen aussehen und wie kann man vorsichtig anfange zu schreibenalso eine Funktion die ein Kind zurück liefertein scharfe deutlich reichen ?? ein an sein Schar aber gerade ein Kinddannkonnte es habe ich eben gesehen das vielmehr als Namen Account Daysanwir brauchen dieTag im Monat der Sohn zu fehltedie jetzt für Dayin ähmder soundsoviel zum Monatsind Y das unzufriedene Jahrund ich würd jetzt tatsächlichTopdorn auch schondiese großen Schritte hinschreibenalso der erste Schritt wäreJahre zählenund der zweite Schritt wäreim letzten oder im aktuellenbeim aktuellen ?? des Gutes übten muss ?? zwei tausend dreizehn seiner im letzten Jahrdie Tage zählenda wird man sicherlich die Monat durchgehen müssenPunkt eine Formel von Gaußder City schaffte das alles zusammenzu schütten und nett zu machen aber man steht und ob ?? wahrscheinlich passiertsicherer ist dann wirklich einige Monate durchzugehen sonst Whitaker der Januar so Tage hat der Februar und so weiter und so weiterim letzten Jahr die Tage zählenandie Jahre zählen der muss jetzt irgendwie sowas vorkommenwiedas ja was du übergeben worden ist minus neunzehn hundertsollte auch mal festschreibenwas nach ?? zurückkommenundElenddesgleich null und hier unten wir dann schon sowas stehen müssen wie ReturnDaysanerster hierbei den Jahrenda will ich wirklich ganz dreist sagen wir können ja diese Differenzennehmen aber die Differenz ist ja nicht wirklich richtig dass ich sageand Days ist gleichdie Differenzan Jahrenmaldrei hundert fünfundsechzighundert fünfundsechzig das ist ja nicht richtig schön wär's so leicht ist es ja leider nichtin der Schaltjahres ist ja leider nicht so richtiggenau das will ich nämlich sagenjetzt überlegen sich man das denn korrigieren kann wie Fischer Jahre habe ich drinwie kann ich denn das richtig machensodie geradlinige Lösung wäre jetzt einer Schleife durchzugehenund für jedes Jahr zu gucken ob sein Schaltjahr war oder nichtdas ist nicht gerade effizienterdarüber noch besser aberdannist es gut das man das als Lösung unterstehen hat von der man sich sicher sein kann dass sie funktioniertKomma nicht vergleichenmit effizienteren Lösungzum Schluss Klammer zu verglichen hat schmeißt manerstmals wenn ich mich weiter die Lösung mit derSchleife nicht weg die sichere Lösung sondern kommentiert sie aus dem Zimmer Komma gutBeistrich sagen was was perfektes was sicheres zum Vergleich zu habenKomma das was garantiert funktioniert und dann versuchen es besser zu machen??Form in die ich dir jetzt die Jahre tue ichdannnämlich von neunzehn hundert?? und gerade das aktuelle Jahr des Y was du oben übergeben wird ja gerade nicht da möchte ich aber mal getrennt sein mit den Monaten ??I klein Adas übergebeneJahr C plus plusund jetzt guck ich mir für jedes Jahr an war es ein Schaltjahr oder nichtjaimmer die Bedingung Henderson schon Punktbisherdrei Bedingungen berücksichtigen ist es durch vier teilbar ist es durch hundert teilweisesdurch vier hundert teilbarwarendie mal das malteilbarteilbar durch vierteilbar durch hundertteilbar durch vier hundertdas kann jetzt ja allesjeweilswahr oder falsch ein nichtunabhängig voneinanderkomplett unabhängig voneinanderaberes gibt zumindest diverse Konstellationenteilbar durch vierkann falschsein und eines automatischnicht teilbar durch hundertdas es auch durch vier teilbarund automatisch nicht halber durch vier hundert ?? es ja auch durch vier teilbarwenn es teilbar ist durch vierdannkann passieren das ist nicht teilbar durch hundert istsechzehn ist nicht dabei durch hundert nicht halber durch vier hundert das wäre Möglichkeitwenn es teilbar durch ist durch vier kann es durch hundert teilbar sein fünf hundert ist durch vier und ich hundert teilbaraber nicht durch vier hundertund es kann seindas alles drei war Fiatacht hundert ist durch vier hundert durch hundert und durch vier teilbares gibt vier Fällefür jedes Jahr habe ich vier Fälleund die Frage was ist ein Schaltjahran habe ich drei hundert sechsundsechzigTagewenn alle vier falsch sind ist es kein Schaltjahrwenn es durch vier teilbar ist aber nicht durch hundertdann ist es ein Schaltjahrwenn es durch vier teilbar ist und durch hundert aber nicht durch vier hundertdann ist es kein Schaltjahrwenn es sich vier und durch hundert und obendrein eben auch durch vier hundert teilbar istdann ist es wieder ein Schaltjahralso muss ich das herausfindenwann ich hier bin in der Zeiledann gebe ich einen Tag mehr und in dieser Zeile dann gebe ich einen Tag mehrdasGefühlbin ich in einer der rotenZahlendas in Angriff reinund in dem Fall addiere ich einen Tag draufalsoman kann drei Hilfs hintereinander schreiben sie könntenein erstes Eve haben ist es teilbar durch vierdann addieren wir einen Tag draufist es teilbar durch hundert zweites elf dann ziehen wir wieder ein Tagist es teilbar durch vier hundert agierender wieder ein Tag draufam?? könnte man so machen drei sind einandernie würde wirklich vorschieben diese beiden Bedingungenraus zu pickennämlich die Bedingung wäre es istteilbar durch vier sind das muss in jedem Fall gewährleistetsein es ist teilbar durchihraber nichtdurch hundertoder es ist teilbar durch vier hundertdas wären meine Bedingungendie ich hinschreiben würde teilbar durch vier aber nicht durch hundertoderteilweise durch vier hundertsind aber durch vier hunderten habe ich gewonnenteilweise durch vier aber nicht durch hundert habe ich auch gewonnen nicht der Fall das wäreetwas kürzerwie gesagt sie können auch drei ?? sind ?? anders schreiben wenn es dabei ist durch vier addiert sie als DrauffensterBeistrich hundert sind ein ZappfensterBeistrichaddieren sich wieder als Draufgänger ??was mich jetzt gesagt ich wollte sagenTeil weil ich hier aber nicht durch hundertO derTreiber durch vier hundert?? sollte meine Bedingung seinzu istteilbar durch vierI Modulovier gleich neulich hat es also ganz eng Platz zu sparenteilbar durch vieraber nicht durch hundertaber nicht durch ?? Shops verdienen Komma mal ausdiskutierenoder teilbardurch vier hundertwas müsste daher stehenjetzt in C übersetzen nochwasheißt in C aber nicht durch hundert teilbardieses aber nicht durch hundert teilbarund nicht genau also eine Möglichkeit wäre und nichtsund dann dahinter schreiben was verneint werden soll aber das nicht?? ist gleich null kann Ersterem ungleich schreiben also einfach I Modul O hundert?? ungleichnull statt dasnichtder vorzuschreibenSchraube seiner Teilzeitfälligkeitetwas hübscheralso teilbar durch vierundnicht teilbar durch hundertaber nicht heißt eigentlich und nicht mathematischer Leidoderoderteilbar durch vier hundertdieModulovier hundertGleichzeichennullund die Präzedenz Regel machen es es auch noch genau richtigich muss sie nicht Klammern setzen nicht das erste ist ein Blog für sich mit dem doppelten Kaufmannsundder Wert zuerst ausgerechnetund dann guckt der Rechner noch auf das hinten Geldist es durch vier teilbar und nicht durch hundert Teil warerster Schrittoder ist es durch vier hundert teilbarin jedem Fall habe ich ein Schaltjahrund deshalb einen Tag mehrBlickauf die Uhr ?? ichich würde das ja gern effizienter machen wollenBeistrich zumal anderntagsdie Jahre durchzugehenein Jahr nach dem anderendas ist nicht gerade effizient ich würde lieber mit Teilen arbeitensoundsoviel Jahre durch viergibt mir im Prinzip die Devise Schaltjahre das sindabziehendurch hundertanKomma dass es im bisschenraffinierthinzukriegen das meine ich plus minus eins daneben ?? ich würd sagen lassen das tatsächlich als Person gucken wir weiterkommen das ist ja erst mal soweit okay ist es nicht effizientteilen wäre schöner als Module hier keine for-Schleifeund stattdessen teilen wir schöner aberdas ist es also so funktioniert ?? und gucken uns lieber jetzt anwies dann hier weitergehtim ersten Teilhabe ich jetzt also bestimmt wie viel Tage sind bis zum ersten ersten?? desJahres fast übergeben worden istundjetzt ist die Fragewas in dem Jahr was da übergeben worden ist Tag Monat Jahr noch dazu kommen soundsoviel Tage soundsoviel Monatemuss jetzt die Monatslängen berücksichtigendie Jahre habe ich hierab gefrühstücktnicht effizientaberirgendwie erledigtE-Commerce also die Tage und die Monate nochim laufenden Jahr zusammensodie Anzahl der Tage diedie kann ich direkt verwenden aber nichtdirekt drauf addierenin der erste erst übergeben wirdsolch eine Differenz von null seineinen weniger drauf addieren damit hat man die Tagees bleiben die Monate ähmscheint es plausibel folgendes zu tun dass man ein Ray angelegtdannmit den jeweiligenTurmes in die was auch nicht Manns Days oder was auch immer mit den jeweiligenTagen des Monatsund dann auf summierteinunddreißigfür denJanuarerst mal pauschalachtundzwanzigfür den Februar des gleichenkorrigierenim Zweifelsfalleinunddreißigfür den März dreißig für den April einunddreißigMaidreißig für den Juni jetzt kommen die KaiserJulius und AugustusSeptemberOktoberNovemberDezember Rufso das er die Tage pro Monat außerin einem Schaltjahrinder sicherlichbesser als Funktion schreiben soll nicht ist das aktuelle Jahr oder das übergebene Jahr ein Schaltjahrdass sie gleich zweimal verwenden können Komma sie zu FußBeistrich ist nicht I sondern Yist das übergebene Jahr ein Schaltjahrwenn es ein Schalter istdannhier bitte nicht achtundzwanzigsondern neunundzwanzigvon eins ist dann gleich neunundzwanzigerschienen als es wirklich die Tage der Monate des Jahres Y drinund jetzt zu diskutieren ist das so sinnvolldiese sind ja praktisch alle konstant bis auf den einen hieran auf der kleinen Maschine möchte man sicherlich dannin einen Speicherbereichablegen in den Konstante Zahlen stehen dann wär's blöd wenn man diese eine Zahl ändern würdegeht es erst ?? Algorithmusdas alles nicht so fürchterlich effizientrhythmisch ist das sinnvolle Geschichte erstmalshabe ich die Liste derZahlender Tage der Monatedes Jahres Yund jetztsollten Siedas auf addieren könnenso das aufzunehmender Tageeinefor-Schleifeoffensichtlichdann mit der Bedingung ?? bisschen vorsichtig sein?? ähm der Monatin der eins ankommt ist es der Januarwenn eins ankommt möchte ich aber nicht die einunddreißigdrauf addierenhabe ich ja so zu für die Januarteppichesowie Tage drauf addieren aber nicht schon die einunddreißigfür den Januarwenn ähm gleich zwei istFebruar dann möchte ich die ein dreißig Tage vom Januar per se drauf addieren kommenden Sozitageim Februar dazuwo sich sein wenn ähm gleich zweiTests möchte ich hier nulldas Element Nummer null drauf addiert habenaber nur das und sonst nichts also muss es so aussehenähm gleich zwei ist addiere ich so lange wie I kleiner ist alseinsnur das Element Nummer nullso stimmt es dann?? das haarsträubende bei solchen Rechnungen hat man nicht ein zu viel oder einzugebenone OffErrorund die Richter was in diesem Rädchen steht auf die Zahl der Tage Dichter habe addiere ich was stehtim?? diedas sollte jetzt rein theoretisch funktionierenunglaublichamjetzt immer noch nicht die Wochentage ich wollte eigentlich auf Wochentageauf ?? Komma will ich maldiese Funktionfunktioniertkonnte es also würde ich jetzt hier mal sowas veranstaltenwieinA ist gleichK und Daysund heute haben wir den zehnten erstendem zehntenerstenzwei tausend dreizehnbereits drei Zahlen ineinander übergeben?? nicht irgendwie hübsch formatiertwas sacht die Maschine ?? ich sollte nochdie Optimierung ausschaltenich ganz überraschend wird hiersosagtederVideolocalOverflowhundert Jahre mal drei hundert noch was ist zu viel für unsere in der das Obstnicht auf dieser Maschinealso Klammer zu müssen vorsichtig sein nicht immer ?? Punkt rausundhier sollte dann ?? Punkt raus machenbeide gucken ob Stan weiterhin Hautsehen das hier ist auch schwierig Y kommt alsin deutscher Zahlpassieren wird alles als in der ?? ausgerechnetwie kann ich das am einfachsten hierbiegen dass er das als lang ausgerechnetnoch eine Möglichkeit wer das Y Klammer zu Carsten Jan Punkt vorzuschreibenähmich bin ein fauler Mensch ich würde einfach hier neunzehn hundert elf schreibenneunzehn hundert als Langzeit sodann rechnet er das hier als Langzahlüber dieses I neunzehn hundert ist die Jahre durch das geht auch im Windbereichdie Tage Hoeneß auch kein Problemund wie diese lang variableElhöhenbis automatischumgerechnet wieder auf ?? Punkt das sollte jetztvom Bereiche funktionierenVersuch??O Punkt da steht immer noch ein Tagsind sie ist einfach eine zu großzügige Sprache in anderen Sprachennamentlich Java und sie schafften es an der Stelle was auf die Finger K und Sliefert einen lang zurück und ich weise das ein Kind zu ?? ist natürlich gefährlichder große Datentyp kommt darausund ich weiß das dem kleinen Datentyp zu das wäre in anderen Sprachenein Problem für den Compiler ist sie offensichtlich nicht so ?? soll so funktioniereneinundvierzigtausend zwei hundert zwei nach zig Tage sagt er dannnur vorsichtig hier mal mitOpenOffice gucken was passieren wirdeine Datumsangabeerste ersteneunzehn hundert versteht ?? das Datum sofort??null null ist natürlich sehr schönund das heutige Datum der zehnte erstezwei tausend dreizehnich formatiere mal um auf ein etwas ausführlicheresFormat hier Freitag der Sohn zusoso eine Funktion zumTages zählenDatum und Zeitjetzt Kalenderwochedas hier die Tagesdifferenzzweier Daten dieser Zeile zutage Klammer auf Klammer zuist gleichTagevon demund dem ?? Beistrich genau falsch rum befürchtet Komma mal sehen??okayoffensichtlich ?? als andersrum angeben ?? A vierA drei so rumeinte sie tausend zwei hundertzweiundachtzigso weit ist es ja es war nicht unplausibelprobier mir noch mal an Land das hier war ja?? einfache Geschichte zehnte erste wir nehmen mal denzehntenzwölften??Tops auch Rippendatenim Dezember funktioniertnur dann wird ja chinesisch häufiger ausgeführtedetaillierte Schild sage ich im Monat habe?? zehnte zwölfte zwei tausend dreizehn Kommaund er meinte einundvierzigtausend sechs hundert und sechzehnPunkt OpenOfficeMainzsechshundert sechzehnso weil'snicht unplausibel??Blick auf die Uhr ja das was ich eigentlich wollte haut es leider nicht hin zeitlich aber ich glaube das ist klar was sie jetzt tun müsstenich wollte eigentlichzu dem Datumden Wochentag haben was für dich jetzt doch machen wenn ich doppelt bin und Zeit hätte was wir jetzt der allerletzte SchrittModulo sieben lustigerweisesie nehmen das was sie rauskommt Modulo sieben denn wie wir lernen erste Januar neunzehn hundert ?? ist ein Montag sollte also bei uns dann die Nummer null habenich guck einfach was als Rest bleibtund dann müsste man das noch ?? formatierenklappt jetzt nicht aber das war die schwierige Funktionund was man natürlich einer machen sollteKomma sowas denn wirklichselbst implementierenwirddiese Schleife hier loswerdenund stattdessen mit Divisionsarbeitenteilenanund hier das könnte natürlich auch raffinierter machenes gibt offizielle Formel dafür wenn man wirklich paar Tage drüber nachdenkt kann man es deutlich einfacher machen Komma hatte noch nicht verstanden Gutes wo das herkommt Sonde Klammer zuzu Fuß gesehen wie man das wirklich machen könnte wenn man es machen wollen würde