BM101 BİLGİSAYAR PROGRAMLAMA I UYGULAMA ÖRNEKLERİ Fonksiyonlar 1. Aşağıda kaynak kodu bulunan hesap makinesi örneğinde çeşitli türlerde (Bkz. Çizelge 1) fonksiyonlar kullanılmıştır. Çözümü inceleyip uygulamayı kendi bilgisayarınızda kodlayınız. Çizelge 1. Hesap Makinesi Örneği Fonksiyonlarının Türlerine Göre Gruplandırılması Değer döndüren Değer Döndürmeyen Parametreli Parametresiz KlavyedenOku() Bolme(float, float) Carpma(float, float) Toplama(float, float) Cikarma(float, float) Mod(float, float) main() Yaz_Float(char [], float) Yaz_Int(char [], int) Yaz_Float(char [], float) Yaz_Int(char [], int) Bolme(float, float) Carpma(float, float) Toplama(float, float) Cikarma(float, float) Mod(float, float) KlavyedenOku() main() #include <stdio.h> #include <stdlib.h> #include <math.h> float KlavyedenOku(); void Yaz_Float(char aciklama [], float deger); void Yaz_Int(char aciklama [], int deger); float Bolme(float bolunen, float bolen); float Carpma(float carpan1, float carpan2); float Toplama(float toplanan1, float toplanan2); float Cikarma(float eksilen, float cikan); int Mod(float bolunen, float bolen); int main() { float param1 = KlavyedenOku(); float param2 = KlavyedenOku(); Yaz_Float("Toplama: ", Toplama(param1,param2)); Yaz_Float("Cikarma: ", Cikarma(param1,param2)); Yaz_Float("Carpma: ", Carpma(param1,param2)); Yaz_Float("Bolme: ", Bolme(param1,param2)); Yaz_Int("Mod: ", Mod(param1,param2)); system("pause"); return 0; } float KlavyedenOku() { float deger = 0; printf("Float tipinde bir deger giriniz: "); scanf("%f", °er); printf("\n"); return deger; } void Yaz_Float(char aciklama [], float deger) { printf("%s %f\n", aciklama, deger); } void Yaz_Int(char aciklama [], int deger) { printf("%s %d\n", aciklama, deger); } float Bolme(float bolunen, float bolen) { float bolum = bolunen/bolen; return bolum; } float Carpma(float carpan1, float carpan2) { float carpim = carpan1 * carpan2; return carpim; } float Toplama(float toplanan1, float toplanan2) { float sonuc = toplanan1 + toplanan2; return sonuc; } float Cikarma(float eksilen, float cikan) { float fark = eksilen - cikan; return fark; } int Mod(float bolunen, float bolen) { //mod’ un int’ lar arasında yapılmasını istiyoruz. //Bu yüzden float → int dönüşümü yapıyoruz. int ibolunen = (int)bolunen; int ibolen = (int)bolen; int mod = ibolunen - (ibolen * (ibolunen / ibolen)); return mod; } BM101 BİLGİSAYAR PROGRAMLAMA I UYGULAMA ÖRNEKLERİ Fonksiyonlar 2. Aşağıda kaynak kodu yer alan ve iki değer arasında rastgele sayı üreten programı inceleyiniz. #include <stdio.h> #include <stdlib.h> #include <time.h> //time() fonksiyonunu içeren kütüphane //Kullanılacak fonksiyonların tanımlayıcıları int RastgeleSayi(int altSinir, int ustSinir); void Yaz_Int(char aciklama [], int deger); int main() { //RastgeleSayi() fonksiyonundan dönen değer //rastgeleSayi isimli değişkene atanır int rastgeleSayi = RastgeleSayi(10, 15); //rastgele sayı değişkeninin değeri //Yaz_Int fonksiyonuna girdi parametresi olarak atanır. Yaz_Int("Rastgele Sayi: ", rastgeleSayi); system("pause"); return 0; } //İki değer arasında rastgele sayı üreten fonksiyon //İki adet int tipinde parametre alır, Int tipinde bir değer döndürür int RastgeleSayi(int altSinir, int ustSinir) { //(altSinir,ustSinir] aralığında sayı üretir srand(time(NULL)); return (rand() % (ustSinir - altSinir)) + altSinir + 1; } void Yaz_Int(char aciklama [], int deger) { printf("%s %d\n", aciklama, deger); } 3. İki adet float sayıyı karşılaştıran program kodunu fonksiyon yardımı ile yazınız. Kullanılan fonksiyon iki adet float parametre alacaktır. Integer tipinde bir değer döndürecektir. Problemin çözümü için tanımlamanız beklenen fonksiyonlar ve beklenen ekran çıktısı aşağıda sunulmuştur. int Karsilastir(float val1, float val2) float KlavyedenFloatOku() int main () BM101 BİLGİSAYAR PROGRAMLAMA I UYGULAMA ÖRNEKLERİ Fonksiyonlar 4. Klavyeden girilen bir tamsayının faktöriyelini alan program kodunu yazınız. Problemin çözümü için tanımlamanız beklenen fonksiyonlar aşağıda listelenmiştir. int Faktoriyel(int value) int KlavyedenIntOku() void Yaz_Int(char aciklama [], int deger) int main() 5. Klavyeden iki sayı okuyan, bunları sırasıyla m ve n değişkenlerine atan ardından bu değişkenlerin değerlerini değiş tokuş eden program kodunu aşağıdaki ekran çıktısına benzer çıktı üretecek şekilde yazınız. Değiş tokuş işlemi için iki parametre alan swap isimli fonksiyonu tanımlayınız. 6. Kullanıcıdan alınan x ve y parametreleri ile işleminin sonucunu hesaplayan program kodunu yazınız. Ardından bu işlemi math kütüphanesinde yer alan pow() fonksiyonu ile de çözüp hesaplamanızın doğruluğunu test ediniz. Problemin çözümü için tanımlamanız beklenen fonksiyonlar aşağıdadır. int main() { //Fonksiyonlar buradan çağrılacak system("pause"); return 0; } int PowManual(int x, int y) { //Döngüler ile x üzeri y hesabı } int PowFromMathLibrary(int x, int y) { //math.h kütüphanesindeki pow fonksiyonu kullanımı } int KlavyedenIntOku() { //integer tipinde bir x ve y klavyeden girilecek } void Yaz_Int(char aciklama [], int deger) { //Sonuç ekrana yazdırılacak } BM101 BİLGİSAYAR PROGRAMLAMA I UYGULAMA ÖRNEKLERİ Fonksiyonlar 7. Aşağıdaki ekran çıktısında görüldüğü gibi kullanıcıdan tamsayı tipinde bir değer girmesini isteyen ve belirli kurallara göre bu değeri 1’ e yaklaştırmaya çalışan program kodunu yazınız. Kural 1. Değer çift ise ikiye böl. Kural 2. Değer tek ise 3 ile çarp ve 1 ekle. Kural 3. Değerin her değişimini ekrana yazdır. Kural 4. Değer 1 ise kaç iterasyonda 1’e ulaştığını ekrana yazdır. Kural 5. Değer 1’den küçük olduğunda işlemi sonlandır. Programda yazılması beklenen fonksiyonlar aşağıda listelenmiştir: int Operate(int number); //değerin tek çift kontrolünü yapar ve uygun kurala göre değeri değiştirip ekrana yeni değeri yazar int KlavyedenIntOku(); void Yaz_Int(char aciklama [], int deger); //ekrana int yazar BM101 BİLGİSAYAR PROGRAMLAMA I UYGULAMA ÖRNEKLERİ Fonksiyonlar 8. Kullanıcıdan n ve m sayılarını isteyerek permütasyon ve kombinasyon hesabı yapan program kodunu yazınız. Faktöriyel hesabını fonksiyon yardımı ile yapınız. Bu fonksiyon tamsayı tipinde bir parametre almalı ve yine tamsayı tipinde bir değer döndürmelidir. Permütasyon ve kombinasyon için de ayrı fonksiyonlar kullanınız. n ve m değerleri -1 oluncaya dek program hesaplama yapmaya olanak vermelidir. n m P n, m n m C n, m 9. n n! m ! n! m! n m ! Kullanıcının seçimine göre bir x açısının Sinüs ve Kosinüs değerini hesaplayan program kodunu yazınız. Öncelikle programda iterasyon sayısı (n), açı değeri (x) ve yapılmak istenen işlem seçilmelidir. (Cos: C veya c; Sin: S veya s; Çıkış: Q veya q). Hesaplamalar kullanıcı uygulamadan çıkmak isteyinceye kadar sürdürülmelidir. Sinüs, kosinüs ve faktöriyel hesapları için ayrı fonksiyonlar kullanınız. Hesaplama yapabilmeniz için aşağıdaki serilerin kullanılması gerekmektedir. 1 2 1 ! 3! 5! 7! 1 2 İ ! 2! 4! 6! … … : Kullanıcıdan istenen açı değeri dereceden radyana çevrilmelidir. Aşağıdaki kodu kullanabilirsiniz. x İ x ∗ 3.142/180.0 ;/∗ Derecedenradyanadönüşüm ∗/ :x işlemini kodlamada pow x, y şeklinde ifade ederiz. Bunun için math kütüphanesini #include . şeklinde eklemeniz gerekecektir. Hazır kütüphane kullanmak istemezseniz bu işlemi de döngülerle çözebilirsiniz. İ : Serilerdeki +, - geçişlerini uygulayabilmek için bir değişken (int lag 1) tanımlayıp onu döngünün içerisinde -1 ile çarpabilirsiniz ( lag ∗ 1). Bu sayede döngünün her işletilmesinde işaret değiştirilmiş olacaktır. İ : Faktöriyel hesapları için daha önce kullandığınız faktöriyel fonksiyonundan yararlanınız. ı : Uygulamanızın doğru hesaplama yapıp yapmadığını otomatik olarak test etmek için bulduğunuz sonuçları hazır kütüphane kullanarak değerlendiriniz. Bunun için math kütüphanesine ait kosinüs ve sinüs fonksiyonlarını kullanabilirsiniz. Bu fonksiyonların radyan cinsinden parametre aldığına dikkat ediniz. BM101 BİLGİSAYAR PROGRAMLAMA I UYGULAMA ÖRNEKLERİ Fonksiyonlar Beklenen Ekran Çıktısı:
© Copyright 2024 Paperzz