Merhaba, hoş geldiniz.
Haftalık ücretin hesaplanmasına ilişkin
sorunumuza bir çözüm sunmak istiyorum.
Bu yüzden burada güzel bir gösteri sunacağım. Kod bloklarını getirin
ve şu anda açık olan projemizi kapatalım
ve bu uygulama için yeni bir proje açıp oluşturalım.
Bu yüzden bir konsol uygulaması oluşturacağım, bu yüzden c'de olacağım.
Buna da haftalık ücret hesaplama adını vereceğim.
Ben de ana bilgisayarımı alacağım. c dosyası bana güzel
bir başlangıç noktası sağlayacak.
Ancak bu çözümde yapacağım birkaç şey biraz farklı olabilir.
Ama sizi birkaç kavramla tanıştıracak.
Bunlar hakkında konuşacağız, ancak bu programda, özellikle maaş oranımız
ve vergi oranlarımız için çok sayıda sabit kullanacağız.
Bu yüzden henüz görmediğimiz ve tanımlama adı verilen bir şey kullanacağım.
Sabitleri oluşturmak için bir önişlemci yönergesidir.
Bunun ön işlemci yönergesi olduğunu anlamamızın yolu pound sembolüne sahip olmamızdır.
Bu yüzden sadece "pound define" diyeceğim. Bu, sabitler oluşturmanın bir yoludur.
Bu programdaki tüm verilerimiz için 5 sabit oluşturacağım.
Maaş oranımız 12'dir. 00.
Tanımlamanın çalışma şekli, tanımlanan anahtar kelimeyi
kullanmak ve ardından pound'u takip etmektir ve ardından genellikle bir ad verirsiniz,
genellikle büyük harflerle yazılır. Bu standart bir kuraldır ve ardından bir boşluk ve ardından değer gelir.
Burada eşit görev yok. Bu da esasen sabit bir değişken yaratmaktır.
Bu yüzden maaş oranı için bir tane, 300 için vergi oranı oluşturacağız.
Aslında 150 veya 300 ve altı için vergi oranı diyeceğiz ve bu
0 vergi oranı olacak. 15.
Atadığınız verilerin kayan noktalı tam sayılar olabileceğini, hatta dizeler
bile atayabileceğinizi fark edeceksiniz. Burada verinin türü önemli değildir.
150 için vergi oranı
0 olabilir. 20. ve genellikle tanımlamaları dosyanın üst kısmındaki ana bölümün dışında yapıyorum.
Ayrıca yorumlarınızı kaynak kodun en üstüne ve tamamına eklemeyi unutmayın.
Ve sonra geri kalanı için 0 olan son bir vergi oranı oluşturacağım.
25.
Yapmak istediğim son şey, fazla mesai için bir sabit oluşturacağım, sadece
fazla mesai diyeceğim ve 40 diyeceğim. Bu sadece 40'tan büyük olup olmadığını
kontrol etmek istediğimizi gösterir.
Değişkenlerin içinde sihirli sayılar bulundurmak asla iyi bir fikir
değildir çünkü artık herhangi bir şey değişirse,
örneğin fazla mesai 45 olarak değişirse, bunu yalnızca tek bir noktada değiştirmem gerekir.
ve benim programım da aynı şekilde çalışacak.
Bu sabit olmasaydı ve karşılaştırmalarımda veya
değişkenlerimde sihirli bir sayı kullansaydım, 40'ı kullandığım
her yerde bunu değiştirmem gerekirdi.
Bu nedenle, sabitleri kullanma alışkanlığı edinin ve sihirli sayılar denen şeyi kullanmayın.
Ayrıca değişkenlerimi ana sayfanın hemen başında bildirmeyi seviyorum.
Bunlar ana fonksiyonumuzun yerel değişkenleridir.
Bu yüzden değişkenleri bildiren bir yorum koymak istiyorum.
Yerel olarak ihtiyacım olan değişkenler Saatler için bir tamsayı oluşturacağım
ve bunu 0 olarak başlatacağım.
Saatler kullanıcı tarafından girilecek ve daha
sonra çıktı olarak görüntülenecek bazı çiftler oluşturacağım, özellikle
de 0 olarak başlatacağım brüt ödeme. 0 çünkü bu bir çift.
Ve sonra vergiler, 0'ı da başlatacağım. 0 noktalı virgülle biter, noktalı
virgülleri ve ardından net ödemeyi unutmayın.
Çünkü bunlar benim istediğim 3 çıktı.
Bu yüzden giriş saatlerimle birlikte en üstte 3 çıkışımı oluşturacağım.
Yapmak istediğim ilk şey, girdimi almak istiyorum, bu yüzden kullanıcıya
bir şey girmesini söyleyeceğim. Lütfen bu hafta çalışılan
saat sayısını girin diyeceğim, iki nokta
üst üste, küçük bir boşluk ve noktalı
virgül koyacağım.
Sonra girdiyi almak için scanf işlevimi kullanacağım.
Ben sadece Scanf diyeceğim. Bir tamsayı okumak istiyorum. Bu yüzden yüzde d diyeceğim.
Bir virgül koyacağım ve saat yapacağım ve sonra bir dize
veya karakter olmadığı için önüne
ve işareti koymam ve noktalı virgülle bitirmem gerekiyor.
Bu okunacak. Bu noktada yapmam gereken
şey test etmek, küçük parçalar halinde çalışmak ve sürekli test etmek.
Kod yazmaya devam edersem derlemeye çalışın, her yerde sorun yaşayabilirim,
küçük alanlarda çalışın.
Ama bunun işe yaradığını biliyorum. Bu yüzden bunun nasıl yapılacağını göstermeye devam edeceğim.
Dediğim gibi, yapacağım ilk şey brüt ücreti hesaplamak olacak.
Buradaki mantıkta, bir if deyimine ihtiyacımız olacak.
Temel olarak, saat 40'tan fazlaysa, bir fazla mesai oranına
sahip olmak istiyoruz.
Yapacağım şey, saatlerin 40'tan az veya 40'a eşit olduğunu söylemek olacak,
o zaman tek yapmam gereken hesaplamamı
çok kolay bir şekilde oluşturmak çünkü bu sadece
ücret çarpı saat oranı.
Yani 24. satırda if anahtar kelimemiz
ve saatlerimiz var.
Karşılaştırma yapıyoruz. İlişkisel bir operatör kullanıyoruz, less than equals. Eğer bizimki 4'ten küçük veya eşitse, parantez
kullanmayacağız çünkü tek bir ifade kullanmamız gerekecek.
Sadece brüt ücret diyeceğiz. Bir değişken belirleyeceğiz,
bu değişken saat çarpı sabit ücret oranımıza eşit olacak ve hepsi bu kadar.
Şimdi 40'tan büyük veya eşitse, başka bir
şey yapmak istiyoruz. Dolayısıyla, bu koşul false olarak değerlendirilirse,
bir else olmasını isteriz ve else'yi kullandığımız yer burasıdır. else'in bloğunda birden fazla satır
olacak, bu yüzden bir ayraç kullanacağım, başlangıç ayraç
29 ile bitiş ile 27. satırda başlayacak.
Parantezlerinizin yanlış eşleştirilmesi veya parantezlerin olmaması, derleyicinizin bulabileceği yaygın bir hatadır.
Bu yüzden parantezleri eşleştirdiğinizden emin olun. IDE çok yardımcı oluyor çünkü onları öne çıkarıyor.
Birden fazla paranteziniz varsa, her zaman başka bir paranteze geçebilirsiniz.
Alt brakete giderseniz, başlangıç braketinin nerede olduğunu size söyleyecektir.
Yani bu kasette, eğer 40'tan fazlaysa, ilk olarak
brüt ücretimi ücret oranının 40 katına eşitlemek istiyorum
çünkü bu ilk 40 saatin saati 12 dolar olacak.
Ve ondan sonraki her şey daha fazla olacak.
Bu yüzden fazla mesai ücreti adında bir yerel
değişken oluşturacağım ve bunu saat eksi 40'a eşit
olarak ayarlayacağım. Yani 40 yazsaydım burada 5 olacaktı.
ve sonra bu saatleri elde ettikten sonra bunu saatte 12 dolar olan ücret
oranıyla çarpmak istiyorum,
ancak 1 eklemek istiyorum. Bunun 5'i, yani saati 18 dolar,
sonra noktalı virgülle
bitiriyorum.
bu noktada fazla mesai ücretim 5 kere 18, kullanıcı
olarak 45 yazdıysam 90 dolar olacak.
ve ilk 40 saat sadece 40 çarpı
12 olacak ki
biz 570 diyoruz. 40 kere 12 yaparsak 480
eder.
Şimdi yapmamız gereken son şey, brüt ödemeyi fazla mesai ücretine eklememiz gerekiyor.
Muhtemelen brüt ücretten daha iyi bir isim kullanabilirdim çünkü henüz ek ödememiz yok.
ancak fazla mesai ödememizi yapacak olan
güzel bir küçük operatör, atama operatörümüz
artı eşittir kullanacağım.
Bunun anlamı, brüt ücretin brüt ücret artı fazla mesai ücretine eşit olduğudur.
ama biz bunu steno gösterimle yapıyoruz.
Şimdi brüt ödememiz var ve brüt ödeme için işimiz bitti.
Bu yüzden devam edip bunu test edebilir, brüt ödemeyi yazdırabilir ve doğru olduğundan emin olabiliriz.
Ama bunun işe yaradığını bildiğim için bir sonraki adıma geçeceğim.
Bir sonraki adım vergileri hesaplamaktır.
Vergileri hesaplamak için, ne kadar para kazandığınıza bağlı olarak bazı şeyler
yapmamız gerektiğini unutmayın. Bu yüzden brüt ücrete bakmamız gerekecek.
Brüt ücret 300'den az ya da 300'e eşitse bir şeyler yapacağız.
eğer brüt maaş 300 ve 450 olursa, bir
şeyler yapacağız. ve 450'den büyükse, başka bir şey yapacağız.
burada biraz yinelenmiş kodumuz olacak.
Şimdilik sorun yok çünkü sadece if ifadelerini gösteriyoruz.
bunu biraz daha temiz yazabilirsin.
ancak yapacağım şey, ilk olarak brüt ücretin 300'den az veya 300'e eşit olduğu ilk
koşulu kontrol etmek olacaktır. ve bu durumda vergileri
hesaplamak çok kolaydır.
vergiler sadece brüt ücret çarpı 300 için
vergi oranı olacak.
300 için vergi oranını
hatırlayın, 300'den sonraki her şey %15'ti sanırım.
Yani 300'den az veya 300'e eşit para kazandıysanız yapmamız gereken
tek şey bu.
Burada dikkat etmeniz gereken bir diğer husus da girintilerdir.
Ne zaman kod bloklarınız olsa ve sadece tek bir deyimim olsa bile, oraya
bir ayraç koyacağım.
ve sonra bloklarımı belirtiyorum, okumayı çok daha kolay hale getiriyor, yeni satırlarda
girintilemeyi unutmayın.
ve genellikle burada sekmeler yerine boşluk olmasını istersiniz, ancak bu başka bir tartışma konusudur.
şimdi başka bir şey de olabilir.
34. satırda, brüt ücret 300'den az veya
300'e eşitse 36. satırda bir şey yapın sorusunu sorduk.
if anahtar sözcüğünü kullandığımızda, koşul Boolean ifadesini parantez içine alırız.
Ama ya 300 ya da daha az değilse, o zaman başka bir şey
yapmak isteriz. Özellikle, brüt ücret
300'den fazlaysa ve burada
mantıksal bir operatör olan ampersand ampersand kullanıyorum
ve esasen 2 soru soruyorum. brüt ücret 300'den büyükse
ve brüt ücret 450'ye eşitten küçükse, o zaman başka bir şey
yapmak istiyorum.
Yani brüt maaşım 300 ila 450 arasında bir yerdeyse bu ne demek oluyor?
Şimdi eğer 300 ile 450 arasındaysa, daha
önce yaptığım gibi önce vergilerimi
hesaplamak istiyorum.
İlk 300 için, 300'ün vergi oranıyla çarpmak istiyorum.
Çünkü ilk 300 kişi bu oranda vergilendirilir.
Diğer tutar için vergi oranını
%20 olan 150'den yapmak istiyorum.
Öncelikle 300'den ne kadar
kazandığımızı bulmam gerekiyor ama bunu aslında tek satırda
yapabilirim. Vergiler artı eşittir
yapacağım, yani bu vergiler eşittir vergiler
diyor, zaten vergi oranının 300 katı 300, vergiler
artı bir şey. ve 40. satırda hesaplanan
ilk vergilere eklemek istediğim şey, ek tutarı eklemek
istiyorum ve bu brüt
ücret eksi 300 olacak ve zaten 450'nin üzerinde olmadığımı
belirledim.
Yani brüt maaş eksi 300 çarpı 150'lik
vergi oranı.
Ne yaptığımı gördün mü?
satır 38'de 300 ile 450 arasında herhangi bir miktarda para kazandıysam,
ilk 300 için vergileri almak istiyorum, bu da 300 çarpı 300 vergi oranıdır ve bunu brüt maaşımın
300 çarpı 150 vergi oranı üzerinden ne kadar veya ne kadar olduğuna eklemek
istiyorum.
Şimdi 2 koşulu karşıladık, kontrol etmek istediğimiz son koşul 450'den fazla kazanıp kazanmadığımız.
Yani temel olarak, brüt ücret 450'den fazlaysa sadece bir else veya gerçekten
sadece bir else olabilir.
ancak açıklık getirmek için buraya else if ifadesini koyacağım
ve else brüt ücretinin 450'den fazla olduğunu söyleyeceğim.
Bunu yapmama gerçekten gerek yok çünkü if olmadan da else yapabilirim, ancak
else if'i göstermek istiyorum.
Bu durumda, ilk 300 için vergileri hesaplamak istiyorum, bu yüzden kodu buraya
kopyalayabilirim.
Ayrıca 150'nin vergilerini de hesaplamak istiyorum,
bu yüzden sonraki 150 için bir artı eşit yapacağım,
yani 300'den 450'ye. Yani bu 150 çarpı
150 vergi oranı olacaktır.
Yapmak istediğim son şey ise geri kalanı belirli bir oranda vergilendirmek.
Burada vergiler artı eşittir diyeceğim, yine artı eşittir vergiler vergiler artıdır.
ve burada brüt maaş eksi 450 diyeceğim
çünkü vergileri tüm maaşa uygulamak
istemiyorum, sadece 450'nin üzerindekilere.
ve bunu vergi oranı ile çarpmak istiyorum, bu da yukarıda tanımladığımız sabit
değişkenimiz olan dinlenmeye eşittir.
İşte bu kadar. Vergileri hesaplamayı bitirdim.
ve yine, her adımdan sonra bunu test eder ve doğru derleyip test ettiğinizden
emin olursunuz.
ama girintiyi fark edeceksiniz. Bunu okumak çok kolay. Yorum yapıyorum, bunların hepsini yapıyorum.
Yapmak istediğim son şey net ödemeyi hesaplamak.
Bu basit olacak çünkü net ücret brüt ücretten vergilerin
çıkarılmasına eşit olacak, çok
basit.
ve sonra çıktımı görüntülemek istiyorum.
ve gerekliliklerin brüt maaş, vergiler
ve net maaşın gösterilmesi olduğunu
hatırlayın.
Yani burada printf kullanabiliriz.
Çok fazla zaman almamak için bunu kopyalayıp yapıştıracağım.
Bazen öğrenciler kopyalayıp yapıştırdığımda kızıyorlar ve programlamada
kopyalayıp yapıştırmamanız gerektiğini söylüyorlar. Bu bir dereceye kadar doğru.
Bir şeyi kopyalayıp yapıştırırsanız ve o kodu tam olarak anlarsanız, daha verimli olur.
kopyalama ve yapiştirma i̇le i̇lgi̇li̇ sorun, bi̇rçok geli̇şti̇ri̇ci̇ni̇n kopyalayip yapiştirmasi,
kodun nasil çaliştiği hakkinda hi̇çbi̇r bi̇lgi̇si̇ni̇n olmamasi ve sadece çalişmasini ummasidir.
ancak bu durumda, çıktı deyimlerinin nasıl çalıştığını biliyorum ve size burada neler olduğunu göstermek istiyorum.
Böylece klavyede yazarak zaman kaybetmek zorunda kalmıyorum.
54. satırda brüt ödemeyi göstereceğiz.
Bu bir şamandıra. değişkenlerin değerlerini nasıl görüntüleyeceğimizi biliyoruz.
ve bunda tuhaf olan tek şey çıktıyı 2 ondalık noktaya göre biçimlendirmem, bu yüzden
%'yi fark etmelisiniz. 2f ve ardından ters eğik
çizgi n, bir kaçış dizisi için satır beslemesidir.
Bu yüzden her şeyi 2 ondalık noktaya göre biçimlendiriyorum çünkü parayı
gösterdiğimizde sentler var ve sentlerin yüzdesi yok.
ve sonra aynı formatta vergileri ve net ödemeyi gösterdim.
Orası çok güzel.
ve yine, bu programda dikkat etmeniz gereken şey girintidir.
Okuması çok kolay. En üstte sabit değişkenler kullanıyorum.
Değişkenlerimi başlatıyorum. Neden onları ilan ediyorum?
Her şey güzel ve düzenli. Yorum yapıyorum. Bir sürü if
else ifadesi yazıyorum.
Umarım her şey anlaşılmıştır. Mantığı takip etmek çok zor değil, ancak kaynak
kodu yanınızda olduğunda indirebilirsiniz, böylece bunu daha
fazla analiz edebilirsiniz. ancak derlediğimizde ne olacağını görelim ve yanlış
bir şey olmadığından emin olalım.
İnşa ettiğimde kullanılmayan bir uyarım olduğunu söylüyor.
Buraya benziyor.
Anlamlı olmayan bir parantezden önce noktalı virgül beklenen bir şey eksik.
anlamsız bir parantezden önce noktalı
virgül beklenen bir şey eksik. Sanırım burada eksik olan şey, başka
bir şeyim olamayacağı. başka bir şey olmalı, mantıklı
değil, eğer'i unuttum. Eğer öyleyse.
orada ne olduğuna bakın, bir else vardı ve sonra onun altında bir else if vardı.
Bu hiç mantıklı değil. bir else ve ardından bir else if'e sahip olamazsınız.
Şimdi burada ne olacağını görelim.
şimdi 0 hata ve 0 uyarı alıyorum.
Bunu ve virüs tarayıcımı
çalıştıralım.
Bunu çalıştırdığımda, yapacağı ilk şey lütfen bu hafta kaç saat çalışacağınızı girin demek olacak.
Fazla mesaiyi göstermesi için 45'ten daha yüksek bir değer koyacağım.
45 ya da 40'ın 4 üstü diyeceğim. 45 ve 570 dolar kazandığımı söylüyor,
ki bu doğru çünkü. 40 dolara kadar olan her şeyin
saati 12 dolardır ki biz bunu 400 ve 80 olarak hesapladık.
5 saatin saati de 18 dolar, yani 90 artı 480 570 eder.
Bu hafta vergiler 105 dolardı ve net ödeme 465 dolardı.
güzel eşit sayılar. doğru olduklarından emin olmak için bu hesaplamaların üzerinden geçebilirsiniz.
bunu birçok kez çalıştırmayı deneyebilir ve farklı veri çıktıları görebilirsiniz.
40'tan az bir şeyle çalıştıralım.
Bu
hafta 30 saat diyelim, fazla mesai ücreti almayacağım. sadece düz 30 çarpı 12 olacak
ki bu da 360 eder.
İlk 300 için %15 oranında vergilendirileceğim.
ve bu 45 dolar olacak ve sonra 60 dolar için
%20 oranında vergilendirileceğim ve bu da
12 dolar olacak. Yani 45 artı 12, 57 doğru görünüyor.
ve bu haftaki net ödeme 303, 360 eksi 57.
Yani oldukça iyi çalışıyor gibi görünüyor.
Bunu 450'den fazla kazançla daha fazla test etmek isteyeceksiniz.
Test yaparken önemli olan bir diğer şey de tüm sınırları test etmek istemenizdir.
sadece bir test sağlamak istemezsiniz. her şey çalışıyor.
iyi ve kötü vakalar sunmak istiyorsunuz.
Yani bu durumda, bu örnekte, bu program için birçok farklı durumumuz
var, 40 saatten fazla çalıştığınız bir durum var.
Yani fazla mesai ücretiniz var. Kazancınızın 300 veya daha az olduğu
bir durum, kazancınızın 300 ila 450 olduğu bir durum ve kazancınızın 450'den
fazla olduğu bir durum var.
Dolayısıyla, bu program için en az 4 test senaryosu
veya muhtemelen 5 test senaryosu çalıştırmalısınız, bu duruma göre değişir
çünkü gerçekten fazla mesaiyi de hesaplamak istiyorsunuz.
Muhtemelen 4 vaka ile kurtulabilirsiniz çünkü
muhtemelen 300 dolardan az kazanıyorsunuz, fazla mesai ücretinden daha az.
Ancak asıl test etmek istediğiniz şey fazla mesai ve ardından 3 vergi oranıdır.
Umarım bu yardımcı olmuştur. Umarım gösterdiğim şeyi tam olarak anlamışsınızdır.
Umarım if deyimleriyle ilgili her şeyi ve kodumu nasıl okunabilir hale getirdiğimi ve anlamlı
isimler kullandığımı anlamışsınızdır. Teşekkür ederim.