Ciao e Benvenuto.
Vorrei fornirti una soluzione alla
nostra sfida sul calcolo della paga settimanale.
Quindi ho intenzione di fornire una bella dimostrazione qui. Visualizza blocchi di codice e
chiudiamo il nostro progetto che attualmente abbiamo aperto
e apriamo e creiamo un nuovo progetto per
questa applicazione.
Quindi creerò un'applicazione console in modo da essere in c.
E lo chiamerò calcolare la paga settimanale.
Quindi avrò il mio principale. c che mi
darà un bel punto di partenza.
Ma ci sono un paio di cose che farò in questa soluzione che potrebbero essere leggermente diverse.
Ma ti introdurrà a un paio di concetti.
Ne parleremo, ma utilizzeremo molte costanti in questo programma, principalmente per la
nostra percentuale di paga e le nostre aliquote fiscali.
Quindi userò qualcosa che non abbiamo ancora visto che si chiama definizione.
È una direttiva del preprocessore per creare costanti.
E quindi il modo in cui sappiamo che è la direttiva del pre-processore è che abbiamo il simbolo della sterlina.
Quindi dirò solo pound define. Questo è un modo per creare costanti.
Creerò 5 costanti per tutti i nostri dati in
questo programma. Abbiamo una percentuale di pagamento che è 12. 00.
Quindi il modo in cui funziona la definizione è
utilizzare la parola chiave definita seguita dopo il cancelletto e quindi di solito fornire
un nome, di solito è tutto maiuscolo. Questa è una convenzione standard e poi uno spazio e poi il valore.
Nessun uguale assegnazione qui. E questo sta creando essenzialmente una variabile costante.
Quindi ne creeremo uno per l'aliquota di pagamento, l'aliquota d'imposta per 300.
In realtà diremo aliquota fiscale per 150 o per 300 e meno e sarà
un'aliquota fiscale di 0. 15.
Noterai che i dati che assegni possono essere numeri interi in
virgola mobile, puoi persino assegnare stringhe. Non importa il tipo di dati qui.
L'aliquota fiscale per 150
può essere 0. 20. e di solito eseguo le definizioni al di fuori del main all'inizio del file.
Inoltre, non dimenticare di aggiungere i tuoi commenti all'inizio e in tutto il codice sorgente.
E poi creerò un'ultima aliquota fiscale per il resto che
è 0. 25.
L'ultima cosa che voglio fare è creare una costante per il mio straordinario,
chiamerò semplicemente gli straordinari e dirò 40. Questo rappresenterà solo
quando vogliamo controllare per maggiore di 40.
Non è mai una buona idea avere numeri magici
all'interno delle variabili perché ora se
cambia qualcosa, dì che gli straordinari cambiano a 45, devo cambiarlo solo in un punto.
proprio in alto e il mio programma funzionerà esattamente allo stesso modo.
se non avessi questa costante e usassi
un numero magico nei miei confronti o nelle mie
variabili, dovrei cambiarlo ovunque sto usando 40.
Quindi prendi l'abitudine di usare costanti e non usare qualcosa chiamato numeri magici.
Mi piace anche dichiarare le mie variabili proprio all'inizio del main.
Queste sono variabili locali per la nostra funzione principale.
Quindi voglio inserire un commento che dichiara le variabili.
Le variabili di cui ho bisogno sono localmente, creerò un numero intero per
ore, lo inizializzerò a 0.
Le ore verranno inserite dall'utente,
quindi creerò alcuni doppi che verranno visualizzati come output, principalmente
la retribuzione lorda che inizierò a 0. 0 perché è un doppio.
E poi le tasse, ho intenzione di inizializzare anche lo 0. 0 che termina con un punto
e virgola, non dimenticare il punto e virgola e poi la paga netta.
Perché queste sono le mie 3 uscite che voglio.
Quindi creerò i miei 3 output in alto insieme alle mie ore di input.
La prima cosa che voglio fare è ricevere il mio input, quindi
dirò all'utente di inserire qualcosa. Dirò "Invio", "Per
favore" inserisci il numero di ore lavorate
questa settimana, metti due punti, uno
spazio piccolo e un punto e virgola.
Quindi userò la mia funzione scanf per ottenere l'input.
Sto solo per dire scanf. Voglio leggere un numero intero. Quindi dirò percento d.
Metterò una virgola e scriverò ore e poi, poiché non è
una stringa o caratteri, devo mettere
la e commerciale davanti ad essa e terminarla con un punto e virgola.
Questo leggerà. E a questo punto
quello che dovrei fare è provare, lavorare in piccoli pezzi e testare costantemente.
se continuo a scrivere codice provo a compilare, potrei avere un problema ovunque,
lavorare in piccole aree.
Ma so che funziona. Quindi passerò a dimostrare come farlo.
Come ho detto, la prima cosa che farò è calcolare la retribuzione lorda.
Nella logica qui, avremo bisogno di un'istruzione if.
Fondamentalmente, se le ore sono maggiori di 40, vogliamo
avere un tasso di straordinario.
Quindi quello che farò è dire se le ore sono inferiori o uguali a 40, quindi
tutto quello che devo fare
è creare il mio calcolo molto facilmente perché è
solo il tasso di paga moltiplicato per le ore.
Quindi abbiamo la nostra parola chiave if sulla
riga 24 e abbiamo le nostre ore.
Stiamo facendo il confronto. Stiamo usando un operatore relazionale, minore di uguale. Se il nostro è minore o
uguale a 4, non useremo una parentesi perché dovremo usare una singola istruzione.
Diremo solo paga lorda. Imposteremo una variabile che
sarà uguale a ore moltiplicate per la nostra costante, tasso di pagamento e il gioco
è fatto.
Ora, se è maggiore o uguale a 40,
vogliamo fare qualcos'altro. Quindi, se quella condizione restituisce false,
vogliamo avere un'altra, ed è qui che usiamo l'altra. L'altro avrà più righe nel
suo blocco, quindi userò una parentesi, inizierà sulla riga 27
con la parentesi iniziale 29 con la fine.
La mancata corrispondenza delle parentesi o l'assenza di parentesi sono un errore comune che il compilatore potrebbe trovare.
Quindi assicurati di abbinare quelle parentesi. L'IDE è molto utile perché li evidenzia.
Se hai più parentesi, puoi sempre passare a un'altra.
Se vai al movimento centrale, evidenzierà dicendoti dove era il movimento di partenza.
Quindi su questo nastro, se è maggiore di 40,
per prima cosa, voglio impostare la mia paga lorda uguale a 40 volte
la paga perché quelle prime 40 ore saranno 12 dollari l'ora.
E poi tutto quello che sarà dopo sarà di più.
Quindi creerò una variabile locale chiamata
retribuzione degli straordinari e la imposterò uguale alle
ore meno 40. Quindi, se ho digitato 40, qui sarebbe 5.
e poi una volta che ho quelle ore voglio moltiplicarlo dalla tariffa di
pagamento che è di 12
dollari l'ora, ma voglio aggiungere 1. 5 di quello, che sarebbero 18 dollari
l'ora, poi lo finisco
con un punto e virgola.
a questo punto la mia paga per gli straordinari sarà 5 volte
18, 90 dollari se ho digitato 45 come utente.
e poi le prime 40 ore saranno solo 40
per 12, che
è quello che diciamo 570. se lo facessimo 40 per 12
sarebbe 480.
L'ultima cosa che dobbiamo fare è aggiungere la retribuzione lorda alla retribuzione degli straordinari.
Quindi probabilmente avrei potuto usare un nome migliore della retribuzione lorda perché non abbiamo ancora la nostra indennità di grazia.
ma userò un piccolo e simpatico operatore, il
nostro operatore di assegnazione più uguale a, che farà
la nostra retribuzione per gli straordinari.
ciò che questo sta dicendo è che la retribuzione lorda è uguale alla retribuzione lorda più la retribuzione dello straordinario.
ma lo stiamo facendo in notazione abbreviata.
Quindi ora abbiamo la nostra retribuzione lorda e abbiamo finito per la retribuzione lorda.
Quindi andremmo avanti e testeremo questo, stamperemo la paga lorda e ci assicureremo che sia corretta.
ma poiché so che funziona, passerò al passaggio successivo.
il passo successivo è calcolare le tasse.
Quindi, per calcolare le tasse, ricorda, dobbiamo fare alcune cose a
seconda di quanti soldi guadagni. Quindi dovremo guardare la retribuzione lorda.
E quindi se la paga lorda è inferiore o uguale a 300, faremo qualcosa.
se la paga lorda è di 300 e
450 lordi, faremo qualcosa. e se è maggiore di 450, faremo qualcos'altro.
avremo un piccolo codice duplicato qui.
per ora va bene perché stiamo solo dimostrando le dichiarazioni if.
potresti essere in grado di scrivere questo un po 'più pulito.
ma quello che ho intenzione di fare è dire prima di controllare la prima condizione in cui se la
retribuzione lorda è inferiore o uguale a 300. e in quel caso
è molto facile calcolare le tasse.
le tasse saranno solo la retribuzione lorda moltiplicata per
l'aliquota fiscale per 300.
l'aliquota fiscale per 300 ricordi
è qualsiasi cosa da 300 un altro è tassato al 15% penso che fosse.
Quindi è tutto ciò che dobbiamo fare se hai guadagnato meno o
uguale a 300.
Ancora una volta, l'altra cosa che dovresti notare qui è il rientro.
ogni volta che hai blocchi di codice, e anche se ho solo una singola istruzione,
metterò una parentesi lì.
e poi indico i miei blocchi, lo rende molto più facile da leggere, non
dimenticare il rientro nelle nuove righe.
e in genere qui si desidera avere spazio anziché schede, ma questa è un'altra discussione.
ora può anche essere qualcos'altro.
Quindi alla riga 34 abbiamo posto la domanda
se la retribuzione lorda è inferiore o uguale a 300, fare qualcosa sulla riga 36.
usiamo la parola chiave if, inseriamo la condizione espressione booleana tra parentesi.
ma se non è 300 o meno, allora
vogliamo fare qualcos'altro. In particolare, se
la retribuzione lorda è maggiore di
300 e quindi qui sto usando un operatore logico e commerciale e commerciale
in cui sto facendo essenzialmente 2 domande. se la retribuzione lorda è
maggiore di 300 e la retribuzione lorda è inferiore a 450, allora
voglio fare qualcos'altro.
Quindi cosa dice questo è se la mia paga lorda è compresa tra 300 e 450.
ora se è tra 300 e 450,
voglio prima calcolare le mie tasse
proprio come facevo prima.
per i primi 300, voglio moltiplicarlo per l'aliquota fiscale per 300.
perché i primi 300 sono tassati a quell'aliquota.
per l'altro importo, voglio fare
l'aliquota fiscale a 150, che è il punto 20%.
Quindi prima devo scoprire quanto
ne abbiamo ricavati più di 300, ma posso effettivamente farlo
in una riga. Farò le tasse più
le tasse, quindi questo significa che le tasse sono le
tasse uguali, che sono 300 volte l'aliquota fiscale già
300, le tasse più qualcosa. e quello che voglio aggiungere
a quella prima tassa sulla riga 40 che è stata calcolata, voglio
aggiungere l'importo aggiuntivo
e sarebbe la paga lorda meno 300 e ho già
stabilito che non sono superiore a 450.
Quindi retribuzione lorda meno 300 volte l'aliquota
fiscale per 150.
Quindi guarda cosa ho fatto lì.
se ho guadagnato ovunque una quantità di denaro tra 300 e 450 sulla
riga 38, allora voglio ottenere le tasse per i primi 300, che è 300 volte l'aliquota fiscale
300 e voglio aggiungerla a quanto o quanto la mia retribuzione lorda era finita 300
volte l'aliquota fiscale per 150.
quindi ora abbiamo soddisfatto 2 condizioni, l'ultima condizione che vogliamo verificare è se ne abbiamo fatte più di 450.
Quindi, fondamentalmente, possiamo avere un altro se la retribuzione lorda è maggiore di
450 o semplicemente un'altra.
ma per motivi di chiarezza metterò il resto se
lì, e dirò che altrimenti la retribuzione lorda è maggiore di 450.
Non ho davvero bisogno di farlo perché posso semplicemente avere un altro senza un
se, ma voglio dimostrare l'altro se.
in questo caso, voglio calcolare le tasse per i primi 300, quindi posso
copiare il codice qui.
Voglio anche calcolare le tasse per il 150, quindi
farò un più uguale per il prossimo 150,
quindi da 300 a 450. Quindi questo sarà
150 volte l'aliquota fiscale 150.
E poi l'ultima cosa che voglio fare è tassare il resto a una certa aliquota.
Quindi qui sto per dire che le tasse più sono uguali, di nuovo più sono uguali sono tasse più tasse.
e qui sto per dire la
retribuzione lorda meno 450 perché non voglio
applicare le tasse all'intera retribuzione, solo
quella che è superiore a 450.
e voglio moltiplicarlo per aliquota fiscale uguale a riposo, che è la
nostra variabile costante che abbiamo definito sopra.
e questo è tutto. Ho finito di calcolare le tasse.
e di nuovo, dovresti testarlo dopo ogni passaggio e assicurarti che sia corretto
compilare e testare.
ma noterai il rientro. questo è facile da leggere. Sto facendo commenti, tutto questo.
L'ultima cosa che voglio fare è calcolare la paga netta.
sarà semplice perché la retribuzione netta sarà uguale alla retribuzione
lorda meno le tasse, molto
semplice.
e poi voglio visualizzare il mio output.
e ricorda che i requisiti dovevano mostrare la
paga lorda, le tasse e la
paga netta.
Quindi possiamo usare printf qui.
e lo copierò e incollerò solo per motivi di efficienza, in modo da non impiegare troppo tempo.
A volte gli studenti si arrabbiano quando copio e incollo e
dicono che non dovresti copiare e incollare durante la programmazione. Bene, questo è vero fino a un certo punto.
se copi e incolli qualcosa e comprendi appieno quel codice, è più efficiente.
il problema con la copia e incolla è che molti sviluppatori copiano e
incollano, non hanno idea di come funzioni quel codice e quindi sperano solo che funzioni.
ma in questo caso, so come funzionano le dichiarazioni stampate e voglio solo mostrarti cosa sta succedendo qui.
Quindi non devo aspettare perdere tempo a digitare sulla tastiera.
Quindi, alla riga 54, mostreremo la retribuzione lorda.
è un galleggiante. sappiamo come visualizzare il valore delle variabili.
e l'unica cosa peculiare è che sto formattando l'output con 2 punti decimali,
quindi dovresti notare%. 2f e quindi la
barra rovesciata n è un avanzamento riga per una sequenza di escape.
Quindi sto formattando tutto con 2 cifre decimali perché quando mostriamo denaro,
abbiamo centesimi e non abbiamo una percentuale di centesimi.
e poi ho visualizzato lo stesso formato delle tasse e la retribuzione netta.
Così carino lì.
e ancora, quello che dovresti notare in questo programma è il rientro.
è molto facile da leggere. Sto usando variabili costanti in alto.
Sto inizializzando le mie variabili. perché li dichiaro?
tutto è carino e ordinato. Sto fornendo commenti. Sto scrivendo
un sacco di dichiarazioni if else.
Si spera che fosse tutto chiaro. la logica non è troppo difficile da seguire,
ma quando hai il codice sorgente con te perché puoi scaricarlo in
modo da poterlo analizzare di più. ma vediamo cosa succede quando costruiamo e compiliamo come assicuriamoci
che non ci sia nulla di sbagliato.
Quando lo compilo dice che ho un avviso inutilizzato.
Sembra qui.
Mi manca qualcosa che mi aspettava un punto e virgola prima di una parentesi che non ha senso.
manca qualcosa aspettato un punto e virgola prima di
una parentesi che non ha senso Quindi penso che quello che mi manca qui è,
beh, non posso avere un altro. deve essere altro se, non
ha senso, ho dimenticato il se. Quindi altrimenti se.
guarda cosa succede lì ho avuto un altro e poi sotto ho avuto un altro se.
non ha senso. non puoi avere un altro e poi un altro se.
Quindi ora vediamo cosa succede qui.
ora ottengo 0 errori e 0 avvisi.
eseguiamo questo
e il mio scanner antivirus.
quando lo eseguo, la prima cosa che farà è dirti per favore inserisci il numero di ore di lavoro questa settimana.
Metterò qualcosa di più alto di 45, quindi dimostra gli straordinari.
Direi 45 o 4 superiore a 40. 45 e dice che ho guadagnato 570
dollari, il che è giusto perché. tutto per un massimo di
40 dollari è di 12 dollari l'ora, che abbiamo calcolato essere 400 e 80.
e poi le 5 ore sono 18 dollari l'ora, che è 90 più 480 è 570.
le tasse questa settimana sono state di 105 dollari e la retribuzione netta di 465.
bei numeri pari. puoi eseguire questi calcoli per assicurarti che siano corretti.
puoi provare a eseguirlo molte, molte volte e vedere diversi output di dati.
eseguiamolo con qualcosa di meno
di 40. diciamo solo 30 ore
questa settimana, non riceverò alcuna retribuzione per gli straordinari. sarà solo una scala 30 per
12 che è 360.
Per i primi 300, sarò tassato con un'aliquota del 15%.
e questo sarà di 45 dollari e poi per i
60 dollari, sarò tassato con un'aliquota del 20% e questo
sarà di 12 dollari. Quindi 45 più 12, 57 sembra corretto.
e la retribuzione netta di questa settimana è 303,360 meno 57.
Quindi sembra funzionare abbastanza bene.
ti consigliamo di testarlo di più con entrate superiori a 450.
l'altra cosa importante nel test è che vuoi testare tutti i confini.
non vuoi solo fornire un test. tutto funziona.
vuoi fornire casi buoni e casi cattivi.
Quindi in questo caso, questo esempio, abbiamo molti casi diversi per questo programma,
abbiamo un caso in cui fai più di 40 ore.
Quindi hai la paga per gli straordinari. abbiamo un caso in cui i tuoi guadagni
sono pari o inferiori a 300, un caso in cui i tuoi guadagni sono compresi tra 300 e 450 e
un caso in cui i tuoi guadagni sono superiori a 450.
Quindi per questo programma dovresti almeno
eseguire 4 casi di test o 5 casi di test probabilmente,
dipende perché vuoi davvero calcolare anche gli straordinari.
Probabilmente potresti farla franca con 4
casi perché probabilmente guadagni meno di 300 dollari, meno dello straordinario.
Ma quello che vuoi veramente testare sono gli straordinari e poi le 3 aliquote fiscali.
Spero che questo sia stato utile. Spero che tu capisca appieno quello che ho dimostrato.
Spero che tu capisca tutte le cose con le istruzioni if e come rendo leggibile
il mio codice e uso nomi significativi. Grazie.