Hallo en welkom. In deze demonstratie wil ik een oplossing bieden
voor onze laatste uitdaging. Dus ik wil
een oplossing bieden voor ons c-programma dat een aantal minuten
kost en het omzet in wat die representatie is in dagen en
hoeveel jaar dat is.
Niet per se een praktisch
programma, maar het zal een paar sleutelconcepten
demonstreren die jullie voornamelijk kunnen leren met behulp van rekenkundige
operatoren, input krijgend van het toetsenbord.
En je moet hiervoor ook de cast-operator gebruiken, wat ik misschien niet in de
uitdaging heb genoemd, maar hopelijk hebben jullie dit
ontdekt, want als je de -- niet nodig hebt om de cast-operator te
gebruiken die je niet nodig hebt in eerste
instantie dacht ik dat een oplossing een modulus-operator nodig had. Maar als je een modulus
doet, duurt het maar 2 ints
denk ik.
Dus laten we in ieder geval beginnen. Laten we koude blokken opstarten en
een project maken, de basisdingen doornemen waar we op dit moment redelijk goed in zijn.
Dus ik ga er niet in detail op in, je kunt gewoon kijken.
Maar ik ga een nieuw project maken en het wordt een consoleproject
en zeker c en wat ik deze
ga noemen, is dat je altijd goede, betekenisvolle namen wilt hebben.
Ik ga zeggen minuten conversie.
Het is dus een app voor minutenconversie.
En nu ga ik gewoon onze main aanpassen. c bestand.
Laten we er dus vanaf komen. En we gaan de include-statements behouden.
En zoals altijd wil je opmerkingen toevoegen, zorg ervoor dat je de opmerkingen toevoegt, alleen omdat
ik het niet doe, wil nog niet zeggen dat je het niet zou moeten doen.
Het is een standaardpraktijk. Het is alleen voor efficiëntie en tijdsdoeleinden, ik laat het weg.
Wat ik graag helemaal bovenaan het programma
doe, is mijn variabelen die ik moet gebruiken wissen en ze vervolgens initialiseren.
Dus laten we op die manier beginnen. Ik ga een integer-variabele maken voor de minuten
die de gebruiker gaat invoeren. En ik ga gewoon bellen dat de minuten zijn ingevoerd. Ik zal het op 0 initialiseren.
Ik ga een dubbel maken voor jaren. Dit kan ook lang
zijn, afhankelijk van hoeveel berekening je wilt doen, omdat je in feite
een behoorlijk groot decimaalgetal kunt krijgen.
Zo lang is misschien zelfs een betere optie. Maar ik ga nu
gewoon een dubbele gebruiken, initialiseer die 0. 0 en dagen gelijk aan
die 0. 0.
En nu wil ik input van de gebruiker krijgen.
Om invoer van de gebruiker te krijgen, moet u eerst de gebruiker vertellen om de invoer in te voeren.
Dus ik ga wat uitvoer weergeven met de mededeling
dat u het aantal minuten moet invoeren.
En er komt een dubbele punt en een spatie en
het eindigt met een puntkomma.
Het volgende is dat ik de invoer daadwerkelijk ga krijgen.
Hier zou je waarschijnlijk zeggen dat je input van de gebruiker krijgt als een opmerking.
Hoe krijgen we input van de gebruiker? We gebruiken de scanf-functie.
Dus onthoud dit van een tijdje terug, zeg gewoon scanf, vergelijkbaar met de printf.
En het eerste parameterargument is het type
gegevens dat u wilt inlezen om te converteren.
Onthoud dat alles wordt ingelezen als een string of tekst.
Je moet het dus omzetten naar hoe je het gaat opslaan.
Dus je zet het tussen dubbele aanhalingstekens, net als de printf. U gebruikt een formaatspecificatie.
Hier. Ik ga gewoon zeggen dat ik het als een decimaal wil opslaan.
Dus ik ga zeggen d een geheel
getal, geen decimaal geheel getal, sorry.
En dan is het volgende argument welke variabele je gaat opslaan.
In Ik ga het opslaan in minuten ingevoerd.
Onthoud nu die scan f en ik
heb daar eigenlijk gewoon scan, scanf voor elk
afzonderlijk gegevenstype behalve een string, je moet
het ampersand opgeven. De adres sub-operator.
Daar moeten we dus voor zorgen. We lezen een getal in, dus we moeten het ampersand doen.
Onthoud dat uit de lezing. Dan wil ik dit met een puntkomma toevoegen.
En op dit punt zou je waarschijnlijk moeten testen.
Zorg ervoor dat u input van de gebruiker kunt krijgen. En je hebt waarschijnlijk gewoon een printf om weer te geven wat je hebt ingevoerd.
Maar aangezien ik weet dat dit correct is, ga ik verder.
Ik moet een berekening maken op regel 15.
Ik wil vooral de minuten in jaren opslaan.
Dus wat ik ga doen, is een andere variabele maken die ik ben
vergeten en die de minuten in het jaar zal opslaan.
Want dit gaat het makkelijker maken. Dus hier ga ik gewoon minuten en jaar zeggen.
U zult merken dat de conventie die ik hier gebruik voor het benoemen van variabelen camelCase is.
Het is waar je kleine letters hebt
voor de eerste afdeling en dan elk woord daarna het eerste teken in hoofdletters.
Ik heb dat niet eerder uitgelegd, dus ik dacht ik vermeld het even.
Dus de eerste berekening Ik wil mijn minuten en jaar instellen,
want dit is hoe
ik mijn jaren ga berekenen. Dus minuten en jaren zijn gelijk aan --
en ik gebruik graag haakjes om te ordenen, zodat alles duidelijk is. Het maakt het leesbaarder.
Het wordt 60, want 60 is het
aantal minuten in een uur. En ik ga dat vermenigvuldigen met het aantal uren in een dag, dat is 24.
Ik ga dat vermenigvuldigen met het aantal dagen in een
jaar, dat is 365.
En deze berekening geeft me dus hoeveel minuten er in een enkel jaar zitten.
En ik kan dit nu gebruiken om mijn jaren te berekenen.
Dus hier op de volgende regel kan ik zeggen jaren gelijk -- dus we
gebruiken hier toewijzingsoperatoren, de gelijken.
En wat we tussen die haakjes op regel 16 doen, is dat we
de asterisk gebruiken, wat een vermenigvuldiging is. Lekker netjes dus.
Jaren worden gewoon gelijk aan -- en nogmaals, ik wil haakjes gebruiken.
De notulen die zijn ingevuld door de gebruiker gedeeld door
de minuten in het jaar.
Dus als je 5000 minuten hebt ingevoerd en er zijn 20000 minuten in een jaar, dan
geeft 5000 gedeeld door 20000 je hoeveel jaren er zijn,
wat 0 punt iets zou zijn.
Om de
dagen te berekenen, zeg
ik hier de ingevoerde minuten
gedeeld door 60 en 60. 0 omdat
er 60 minuten in
een uur zijn.
En als ik dan de uren heb, kan ik dat delen door het aantal
dagen, dat is 24. 0.
En ik had dit in een andere berekening kunnen zetten als ik dat had gewild.
Maar nogmaals, ik wil er zeker van zijn dat we dit in de juiste volgorde doen.
Dus eerst ga ik de minuten delen door 60 delen.
Je hoeft je hier eigenlijk geen zorgen over
te maken, want we doen hier deling, dus de associatie zal van links naar rechts
zijn en ik zou deze haakjes eigenlijk niet nodig hebben. Maar ik vind het altijd leuk om haakjes toe te voegen omdat het dingen leesbaarder maakt.
Dus laten we dat laatste toevoegen.
Dat is nogal overbodig. Ik heb er hier niet eens een nodig. Dus laten we
het gewoon weglaten, alleen de eerste. En dit zou onze dagen moeten weergeven.
Nu ik mijn berekeningen heb gedaan en enkele operatoren heb gebruikt.
Ik wil een printf doen om gewoon mijn gegevens uit te printen.
Hier ga ik zeggen, print eerst de minuten
uit, procent
d minuten is ongeveer procent f jaar en procent f dagen.
En dan ga ik een line feed toevoegen.
Dus wat dit doet, is dat we printf gebruiken om de uitvoer van
variabelen weer te geven en de procentsymbolen onthouden onze opmaakspecificaties.
Het eerste dat ik wil afdrukken zijn minuten, dus ik moet minuten na mijn eerste komma plaatsen wanneer deze is ingevoerd.
De tweede is het jaar, dus ik wil zeggen jaren, want dat is procent f jaar.
En de derde is dagen
zoiets.
Ik zou nu moeten compileren en uitvoeren, en zij zouden mijn conversie voor mij moeten doen.
Dus laten we doorgaan en bouwen. Ik heb geen ochtenden, geen fouten.
Laten we rennen en ik weet niet eens zeker hoeveel minuten er
in een jaar zitten. Dus ik weet niet zeker hoe
ik dit moet testen, maar laten we beginnen met 5000 minuten.
Wanneer ik het programma start, vraagt het me om het aantal minuten in te voeren, ik ga 5000 invoeren.
En als je geen getal hebt ingevoerd, kun je een crash
krijgen omdat je het omzet naar een getal in je scanf-functie.
Ik druk op Return, dit zegt dat 5000 minuten ongeveer
0 is. 009513
jaar en 3. 47222 dagen,
wat logisch lijkt, want wat 60 minuten in een uur
keer 24, dat wordt ongeveer 2400 of zo
voor één dag, dus 2400
en 2400, nee 60 keer. Het spijt me
dat 60 keer 24 ongeveer 1200 wordt.
Dus 1200 gaat in 5000 hoe, vaak voor elke dag
waarschijnlijk ongeveer 3. 4 daar in de buurt.
Dit lijkt dus ongeveer te kloppen.
Je kunt dit dus meerdere keren uitvoeren, maar vul een paar grote getallen in wat je gaat opvallen.
We slaan hier alleen dubbele op. Dus als je het uitvoert en je probeert een te
groot getal in te voeren, bijvoorbeeld 600 miljard of zo, dan kan het
zijn dat je fout zit --
dus het kan zijn dat je hier onjuistheden hebt. Dit toont u dus de problemen met gegevenstypen.
Dus ik sla op in een int. Int is slechts 8 bytes. Ik heb dit enorme aantal ingevoerd.
Dat kan er niet in opgeslagen worden. Dus als ik het
ga uitprinten, staat het op een heel ander nummer, 184298154.
Dat komt omdat wat ik invoer groter is dan een int.
Dus je kunt overwegen of je dit programma nog
nauwkeuriger wilt hebben en grotere getallen wilt invoeren om sommige gegevenstypen te wijzigen, de
ints te veranderen in doubles of zelfs de doubles in longs.
Dus dit zegt 350 jaar en 127000 dagen of zo.
Dus een leuke kleine conversie-app die, nogmaals, probeert je
enig begrip te geven
van zowel gegevenstypen als operators.
We kunnen veel verschillende conversie-apps hebben. Een andere leuke app
die je wilt schrijven om meer te oefenen, is de Fahrenheit
to Celsius-app.
Schrijf een app waarmee de gebruiker Fahrenheit kan invoeren en dat vervolgens naar Celsius kan converteren.
Ik bedoel, er zijn veel, veel verschillende scenario's die je bedenkt. Maar dit zal je dwingen om de operators te gebruiken.
En we zouden hier zelfs een casting kunnen
doen als we dat zouden willen. Als we dat niet leuk vonden, waren
de dagen te precies en misschien willen we de double veranderen in een int.
En we willen het iets minder precies maken. We zouden eigenlijk kunnen zeggen: cast dit
naar een it door alleen de haakjes op te geven en
dan int te doen.
En dit zou dat aantal dagen kosten.
En als het decimaal 3 is. 549 of zoiets, het zou het omzetten in 3.
Misschien is dat beter voor de gebruiker, dat is aan jou.
Maar laten we het voorlopig op een dubbel houden.
Maar daar leer je van. Je speelt met het programma, probeert verschillende
scenario's, probeert verschillende invoer, zorgt ervoor dat alles klopt. Dank u.