Hallo en welkom.
Graag geef ik je een oplossing voor
onze uitdaging bij het berekenen van het weekloon.
Dus ik ga hier een mooie demonstratie geven. Breng codeblokken naar voren en
laten we ons project dat we momenteel hebben openen
en openen en een nieuw project voor deze
toepassing maken.
Dus ik ga een console-applicatie maken, dus ik kom in c.
En ik noem dit berekende weekloon.
Dus ik ga mijn belangrijkste hebben. c-bestand dat
me een mooi startpunt zal geven.
Maar er zijn een paar dingen die ik in deze oplossing ga doen die misschien een beetje anders zijn.
Maar het gaat je kennis laten maken met een paar concepten.
We zullen erover praten, maar we gaan veel constanten gebruiken in
dit programma, voornamelijk voor ons loontarief en onze belastingtarieven.
Dus ik ga iets gebruiken dat we nog niet hebben gezien en dat de definitie wordt genoemd.
Het is een preprocessor-richtlijn om constanten te creëren.
Dus de manier waarop we weten dat het pre-processor-richtlijn is, is dat we het hekje hebben.
Dus ik ga gewoon zeggen pond definiëren. Dit is een manier om constanten te creëren.
Ik ga 5 constanten maken voor al onze gegevens in
dit programma. We hebben een tarief van 12. 00.
Dus de manier waarop de definitie werkt, is door
het gedefinieerde trefwoord te gebruiken dat na het pond wordt gevolgd en dan geef je meestal
een naam op, meestal zijn het allemaal hoofdletters. Dat is de standaardconventie en dan een spatie en dan de waarde.
Geen is gelijk aan opdracht hier. En dit creëert in wezen een constante variabele.
Dus we gaan er een maken voor loontarief, belastingtarief voor 300.
Eigenlijk zeggen we belastingtarief voor 150 of voor 300 en minder en dat wordt
een belastingtarief van 0. 15.
U zult merken dat de gegevens die u toewijst, gehele getallen met drijvende komma
kunnen zijn, u kunt zelfs tekenreeksen toewijzen. Het maakt hier niet uit om welk type gegevens het gaat.
Belastingtarief voor 150 kan
0 zijn. 20. en ik doe meestal de definities buiten de main bovenaan het bestand.
En vergeet ook niet om uw opmerkingen bovenaan en in de broncode toe te voegen.
En dan ga ik een laatste belastingtarief maken voor de rest,
dat is 0. 25.
Het laatste wat ik wil doen, is dat ik een constante ga creëren voor mijn
overuren, gewoon overuren bellen en zeggen 40. Dit geeft alleen aan
wanneer we willen controleren op meer dan 40.
Het is nooit een goed idee om magische getallen in variabelen
te hebben, want als er nu
iets verandert, bijvoorbeeld de overuren veranderen in 45, hoef ik het maar op één plek te veranderen.
helemaal bovenaan en mijn programma gaat precies hetzelfde werken.
als ik deze constante niet had en ik een
magisch getal zou gebruiken in mijn vergelijkingen of mijn variabelen, zou
ik het overal moeten veranderen waar ik 40 gebruik.
Maak er dus een gewoonte van om constanten te gebruiken en geen magische getallen te gebruiken.
Ik vind het ook leuk om mijn variabelen bovenaan de main te declareren.
Dit zijn lokale variabelen voor onze hoofdfunctie.
Dus ik wil een opmerking plaatsen die variabelen declareert.
De variabelen die ik nodig heb en die lokaal zijn, ik ga urenlang een geheel getal
maken, ik ga dat initialiseren naar 0.
De uren worden door de gebruiker ingevoerd en
dan ga ik een aantal dubbels maken die als output zullen worden weergegeven,
voornamelijk het brutoloon dat ik op 0 zal initialiseren. 0 omdat het een dubbel is.
En dan belastingen, ik ga ook de 0 initialiseren. 0 eindigend met een
puntkomma, vergeet de puntkomma's en dan het nettoloon niet.
Omdat dit mijn 3 uitgangen zijn die ik wil.
Dus ik ga mijn 3 uitgangen bovenaan maken, samen met mijn invoeruren.
Het eerste wat ik wil doen, is dat ik mijn invoer wil krijgen, dus ik
ga de gebruiker vertellen iets in te voeren. Ik ga zeggen
voer in, voer het aantal gewerkte uren
deze week in, zet een dubbele
punt, een kleine spatie en een puntkomma.
Dan ga ik mijn scanf-functie gebruiken om de invoer te krijgen.
Ik ga gewoon scanf zeggen. Ik wil een geheel getal lezen. Dus ik ga zeggen procent d.
Ik ga een komma plaatsen, en ik ga uren doen en
dan, omdat het geen tekenreeks of
tekens is, moet ik de ampersand ervoor zetten en eindigen met een puntkomma.
Dat gaat inlezen. En wat ik op
dit punt zou moeten doen, is testen, kleine stukjes bewerken en constant testen.
als ik code blijf schrijven die probeert te compileren, kan ik overal een probleem
hebben, in kleine gebieden werken.
Maar ik weet dat dit werkt. Dus ik ga verder om te demonstreren hoe dit te doen.
Zoals ik al zei, het eerste wat ik ga doen, is het brutoloon berekenen.
In de logica hier hebben we een if-statement nodig.
Kortom, als het aantal uren groter is dan 40,
willen we een overwerktarief hebben.
Dus wat ik ga doen, is dat ik ga zeggen dat als de uren kleiner
zijn dan of gelijk zijn
aan 40, ik alleen maar mijn berekening heel gemakkelijk
hoef te maken, want het is gewoon het uurtarief.
Dus we hebben ons if-sleutelwoord op regel
24, en we hebben onze uren.
We zijn aan het vergelijken. We gebruiken een relationele operator, kleiner dan gelijk aan. Als de onze kleiner is dan of
gelijk is aan 4, gebruiken we geen haakje omdat we een enkele instructie moeten gebruiken.
We zeggen gewoon brutoloon. We gaan een
variabele instellen die gelijk is aan uren maal onze constante, loontarief en dat
is alles.
Als het nu groter is dan of gelijk is aan 40,
willen we iets anders doen. Dus als die voorwaarde onwaar is,
willen we een else hebben, en hier gebruiken we de else. De else zal meerdere regels in
zijn blok hebben, dus ik ga een haakje gebruiken, het begint
op regel 27 met het beginhaakje 29 met het einde.
Het niet overeenkomen van uw haakjes of het niet hebben van haakjes is een veelvoorkomende fout die uw compiler kan vinden.
Zorg er dus voor dat je bij die haakjes past. De IDE is erg handig omdat het ze benadrukt.
Als je meerdere haakjes hebt, kun je altijd naar een andere gaan.
Als je naar de trapas gaat, wordt aangegeven waar de startbeugel was.
Dus op deze band, als het groter is dan
40, wil ik eerst mijn brutoloon gelijk stellen aan 40 keer het loon,
want die eerste 40 uur worden 12 dollar per uur.
En daarna wordt alles meer.
Dus ik ga een lokale variabele maken
genaamd overuren, en ik ga dat gelijk stellen aan
de uren min 40. Dus als ik 40 typte, zou het hier 5 zijn.
en als ik die uren heb, wil ik dat vermenigvuldigen met het loon van
12 dollar per uur, maar
ik wil er 1 bij optellen. 5 daarvan, wat 18 dollar per uur
zou zijn, dan sluit
ik het af met een puntkomma.
op dit moment wordt mijn overwerkloon 5 keer 18, 90
dollar als ik 45 als gebruiker typte.
en dan worden de eerste 40 uur gewoon
40 keer
12, wat we zeggen 570. als we het 40 keer zouden doen, zou 12
480 zijn.
Het laatste wat we nu moeten doen is het brutoloon optellen bij het overwerkloon.
Dus ik had waarschijnlijk een betere naam kunnen gebruiken dan brutoloon, omdat we onze uitbetaling nog niet hebben.
maar ik ga een leuke kleine
operator gebruiken, onze opdrachtoperator plus gelijken, die
ons overwerk gaat betalen.
wat dit zegt is dat het brutoloon gelijk is aan het brutoloon plus het overwerkloon.
maar we doen het in steno-notatie.
Dus nu hebben we ons brutoloon en zijn we klaar voor het brutoloon.
Dus we zouden dit gaan testen, het brutoloon uitprinten en controleren of het klopt.
maar aangezien ik weet dat dit werkt, ga ik verder met de volgende stap.
de volgende stap is het berekenen van de belastingen.
Dus om de belastingen te berekenen, onthoud dat we bepaalde dingen moeten doen,
afhankelijk van hoeveel geld je verdient. We moeten dus kijken naar het brutoloon.
Dus als het brutoloon kleiner of gelijk is aan 300, gaan we iets doen.
als het brutoloon bruto 300 en 450 is,
gaan we iets doen. en als het groter is dan 450, gaan we iets anders doen.
we zullen hier een beetje gedupliceerde code hebben.
het is oké voor nu, want we demonstreren alleen if-statements.
je zou dit misschien wat schoner kunnen schrijven.
maar wat ik ga doen, is dat ik ga zeggen dat eerst de eerste voorwaarde moet worden gecontroleerd als het
brutoloon minder dan of gelijk is aan 300. en in dat geval is het
heel eenvoudig om de belastingen te berekenen.
de belastingen zijn gewoon brutoloon maal het
belastingtarief van 300.
het belastingtarief voor 300 onthoud dat
alles van 300 een ander wordt belast tegen wat ik denk dat het 15% was.
Dus dat is alles wat we hoeven te doen als je minder dan of gelijk
aan 300 hebt gemaakt.
Nogmaals, het andere dat u hier moet opmerken, is de inspringing.
wanneer je codeblokken hebt, en hoewel ik maar één enkele verklaring heb, ga ik
daar een haakje plaatsen.
en dan geef ik mijn blokken aan, maakt het veel gemakkelijker om te lezen, vergeet
de inspringing in nieuwe regels niet.
en meestal wil je hier ruimte hebben in plaats van tabbladen, maar dat is een andere discussie.
nu kan het ook iets anders zijn.
Dus op regel 34 stelden we de vraag
of het brutoloon minder dan of gelijk is aan 300, doe iets op regel 36.
we gebruiken het if-sleutelwoord, we plaatsen de Booleaanse uitdrukking voor de voorwaarde tussen haakjes.
maar wat als het geen 300 of minder is, dan willen
we iets anders doen. In het bijzonder,
als het brutoloon hoger is
dan 300 en dus hier gebruik ik een logische operator ampersand ampersand waarbij
ik in wezen 2 vragen stel. als het brutoloon hoger is dan
300 en het brutoloon lager is dan gelijk aan 450, dan wil ik
iets anders doen.
Dus wat dit zegt is als mijn brutoloon ergens tussen de 300 en 450 ligt.
nu als het tussen de 300 en 450
is, wil ik eerst mijn belastingen
berekenen zoals ik eerder deed.
voor de eerste 300 wil ik het vermenigvuldigen met het belastingtarief voor 300.
omdat de eerste 300 tegen dat tarief worden belast.
voor het andere bedrag wil
ik het belastingtarief doen op 150, dat is 20%.
Dus eerst moet ik uitzoeken hoeveel
we meer dan 300 hebben verdiend, maar ik kan dit eigenlijk
in één regel doen. Ik ga de
belastingen plus is gelijk aan, dus dit is zeggen belastingen
gelijk aan belastingen, die al 300 keer het belastingtarief
300 zijn, belastingen plus iets. en wat ik wil toevoegen
aan die eerste belasting op regel 40 die werd berekend, ik wil het
extra bedrag toevoegen en
het zou het brutoloon minus 300 zijn en ik heb al
vastgesteld dat ik niet boven de 450 zit.
Dus brutoloon minus 300 keer het belastingtarief
voor 150.
Dus kijk wat ik daar deed.
als ik ergens tussen de 300 en 450 geld heb verdiend op regel
38, dan wil ik de belastingen krijgen voor de eerste 300, dat is 300 keer het belastingtarief 300
en ik wil dat optellen bij hoeveel of hoeveel mijn brutoloon meer dan was 300
keer dat belastingtarief voor 150.
dus nu hebben we aan 2 voorwaarden voldaan, de laatste voorwaarde die we willen controleren is of we er meer dan 450 hebben gemaakt.
Dus eigenlijk kunnen we gewoon een ander hebben als het brutoloon hoger is dan 450
of eigenlijk gewoon een ander.
maar voor de duidelijkheid ga ik de else if daar
plaatsen, en ik ga zeggen dat anders het brutoloon hoger is dan 450.
Ik hoef dit niet echt te doen omdat ik gewoon een else kan hebben zonder een
if, maar ik wil de else if demonstreren.
in dit geval wil ik de belastingen voor de eerste 300 berekenen, dus ik
kan de code hier kopiëren.
Ik wil ook de belastingen voor de 150 berekenen,
dus ik ga een plus doen voor de
volgende 150, dus 300 tot 450. Dit wordt
dus 150 keer belastingtarief 150.
En dan wil ik als laatste de rest tegen een bepaald tarief belasten.
Dus hier ga ik zeggen belastingen plus gelijk, nogmaals plus is gelijk aan belastingen plus.
en hier ga ik zeggen brutoloon
minus 450 omdat ik de belastingen niet
op het hele loon wil toepassen,
alleen wat boven de 450 is.
en ik wil dat vermenigvuldigen met het belastingtarief dat gelijk is aan rust, wat onze
constante variabele is die we hierboven hebben gedefinieerd.
en dat is het. Ik ben klaar met het berekenen van de belastingen.
en nogmaals, je zou dit na elke stap testen en ervoor zorgen dat het correct compileren
en testen is.
maar je zult de inkeping opmerken. dit is makkelijk te lezen. Ik doe opmerkingen, dat allemaal.
Het laatste wat ik wil doen is het nettoloon berekenen.
dit wordt eenvoudig omdat het nettoloon gelijk zal zijn aan
het brutoloon minus de belastingen, heel
eenvoudig.
en dan wil ik mijn output weergeven.
en onthoud dat de vereisten waren om het
brutoloon, de belastingen en het nettoloon weer
te geven.
Dus we kunnen hier printf gebruiken.
en ik ga dit gewoon kopiëren en plakken omwille van de efficiëntie, zodat we niet te veel tijd in beslag nemen.
Soms worden studenten boos als ik kopieer en plak, en ze zeggen dat het
niet de bedoeling is dat je tijdens het programmeren kopieert en plakt. Nou, dat is tot op zekere hoogte waar.
als je iets kopieert en plakt en je begrijpt die code volledig, dan is het efficiënter.
het probleem met kopiëren en plakken is dat veel ontwikkelaars kopiëren en plakken, ze
hebben geen idee hoe die code werkt, en dan hopen ze alleen maar dat het werkt.
maar in dit geval weet ik hoe de afgedrukte verklaringen werken en ik wil je gewoon laten zien wat hier gebeurt.
Ik hoef dus niet te wachten met typen op het toetsenbord.
Dus op regel 54 gaan we het brutoloon weergeven.
het is een vlotter. we weten hoe we de waarde van variabelen moeten weergeven.
en het enige eigenaardige daarin is dat ik de uitvoer formatteer tot 2 decimalen, dus je
zou het% moeten opmerken. 2f en dan
is de backslash n een regelinvoer voor een escape-reeks.
Dus ik formatteer alles op 2 decimalen, want als we geld weergeven,
hebben we centen en hebben we geen percentage centen.
en dan heb ik de belastingen hetzelfde formaat en het nettoloon weergegeven.
Zo mooi daar.
en nogmaals, wat je zou moeten opvallen in dit programma is de inspringing.
het is heel gemakkelijk te lezen. Ik gebruik constante variabelen bovenaan.
Ik initialiseer mijn variabelen. waarom verklaar ik ze?
alles is mooi en netjes. Ik geef commentaar. Ik
schrijf een heleboel if else-verklaringen.
Hopelijk was dit allemaal duidelijk. de logica is niet al te moeilijk om te
volgen, maar als je de broncode bij je hebt, omdat je deze kunt
downloaden, zodat je dit meer kunt analyseren. maar laten we eens kijken wat er gebeurt als we bouwen en compileren zoals
laten we ervoor zorgen dat er niets aan de hand is.
Als ik het bouw, staat er dat ik een waarschuwing heb die niet is gebruikt.
Het lijkt hier op.
Ik heb iets gemist dat een puntkomma voor een haakje had verwacht dat niet klopt.
iets missen verwacht een puntkomma voor een
haakje dat niet klopt. Dus ik denk dat wat ik hier mis is,
nou, ik kan niet anders hebben. het moet anders zijn als, het
slaat nergens op, ik ben de als vergeten. Dus anders als.
kijk wat er gebeurt, ik had een else en daaronder had ik een else if.
dat heeft geen zin. je kunt niet een else hebben en dan een else if.
Dus laten we nu kijken wat hier gebeurt.
nu krijg ik 0 fouten en 0 waarschuwingen.
laten we
dit en mijn virusscanner uitvoeren.
als ik dit uitvoer, zal het eerste wat het gaat doen, zijn om het aantal uren werk deze week in te voeren.
Ik ga iets hoger dan 45 plaatsen, dus het toont overuren aan.
Ik zeg 45 of 4 hoger dan 40. 45 en er staat dat ik 570
dollar heb verdiend, wat terecht is. alles voor maximaal 40 dollar
is 12 dollar per uur, wat we hebben berekend op 400 en 80.
en dan zijn de 5 uur 18 dollar per uur, dat is 90 plus 480 is 570.
de belastingen deze week waren 105 dollar en het nettoloon was 465.
mooie even getallen. u kunt die berekeningen doorlopen om er zeker van te zijn dat ze correct zijn.
u kunt proberen dit vele, vele malen uit te voeren en verschillende gegevensuitvoer te zien.
laten we het doen met iets minder
dan 40. laten we zeggen 30
uur deze week, ik krijg geen overwerkvergoeding. het wordt gewoon een straight 30
keer 12 wat 360 is.
Voor de eerste 300 word ik belast tegen een tarief van 15%.
en dat wordt 45 dollar en voor de 60 dollar
word ik belast tegen een tarief van 20% en
dat wordt 12 dollar. Dus 45 plus 12, 57 dat ziet er goed uit.
en het nettoloon deze week is 303, 360 min 57.
Het lijkt dus best goed te werken.
u wilt dit meer testen met inkomsten van meer dan 450.
het andere belangrijke bij testen is dat je alle grenzen wilt testen.
u wilt niet slechts één test geven. alles werkt.
u wilt goede gevallen en slechte gevallen bieden.
Dus in dit geval, dit voorbeeld, hebben we veel verschillende gevallen voor dit programma,
we hebben een geval waarin je meer dan 40 uur maakt.
Je hebt dus overwerktoeslag. we hebben een geval waarin uw
inkomsten 300 of minder zijn, een geval waarin uw inkomsten 300 tot 450 zijn en een
geval waarin uw inkomsten hoger zijn dan 450.
Dus voor dit programma moet je op
zijn minst 4 testcases draaien of 5 testcases waarschijnlijk, het hangt ervan
af omdat je ook echt de overuren wilt berekenen.
Je zou waarschijnlijk wegkomen met 4
gevallen omdat je waarschijnlijk minder dan 300 dollar verdient, minder dan overuren.
Maar wat je echt wilt testen is overwerk en dan de 3 belastingtarieven.
Ik hoop dat dit nuttig was. Ik hoop dat je volledig begrijpt wat ik heb laten zien.
Ik hoop dat je alle dingen met de if-statements begrijpt en hoe ik mijn
code leesbaar maak en zinvolle namen gebruik. Dank u.