1 / 20

TEMEL BİLGİSAYAR Programlama Yrd. Doç. Dr. Emin BORANDAĞ emin.borandag @cbu.tr

TEMEL BİLGİSAYAR Programlama Yrd. Doç. Dr. Emin BORANDAĞ emin.borandag @cbu.edu.tr. Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi. BIL 1306. Genel Bakış…. Giriş Esnek Argümanlı Fonksiyonlar main() Fonksiyonuna Parametre Aktarımı. 9 . BÖLÜM.

Download Presentation

TEMEL BİLGİSAYAR Programlama Yrd. Doç. Dr. Emin BORANDAĞ emin.borandag @cbu.tr

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. TEMEL BİLGİSAYAR ProgramlamaYrd. Doç. Dr. Emin BORANDAĞemin.borandag@cbu.edu.tr Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi BIL 1306

  2. Genel Bakış… • Giriş • Esnek Argümanlı Fonksiyonlar • main() Fonksiyonuna Parametre Aktarımı

  3. 9. BÖLÜM Esnek Argümanlı Fonksiyonlar ve main() Fonksiyonuna Parametre Aktarımı

  4. Giriş • Aşağıdaki gibi üçüncü dereceden bir polinomu ele alalım: P(x) = a+ bx + cx2 + dx3 • a, b, c, d katsayıları gerçel sayı sabitleridir. • x ise gerçel sayı türündeki bir değişkendir. Bu polinomu temsil eden basit bir fonksiyonu nasıl tanımlarız?

  5. Esnek Argümanlı Fonksiyonlar P(x) = a + bx + cx2 + dx3 floatp(floatx, floata, floatb, floatc, floatd) { floatp = a + b*x + c*x*x + d*x*x*x; returnp; }

  6. Esnek Argümanlı Fonksiyonlar(devam….) • Buna göre, x = 1.7'de, P(x) = 1 - 2x değerini hesaplamak için bu fonksiyon aşağıdaki gibi çağırılmalıdır: sonuc= p(1.7, 1.0, -2.0, 0.0, 0.0); • Burada, kullanılmayan katsayılar için 0.0 değeri mutlaka fonksiyona geçirilmelidir.

  7. Esnek Argümanlı Fonksiyonlar(devam….) • Kullanılmayan argümanlar geçirilmeden de fonksiyonu çağırmak mümkündür. • C Programlama dili, kullanıcılarına argümanları esnek olarak geçirme imkanı verir. • Bunun anlamı, belli kurallar sağlandığında, p() fonksiyonunun aşağıdaki gibi çağrılabilmesidir: /* xab */ sonuc= p(1.7, 1.0, -2.0);

  8. Esnek Argümanlı Fonksiyonlar(devam….) • Esnek argümanlar için 2 temel kural vardır: • Esnek argüman kullanımı isteğe bağlıdır. • Esnek argümanları oluşturan küme ardışık olarak listeye eklenmelidir. • Bu türden argümanlar, aşağıdaki gibi, fonksiyonun parametre listesi kısmında ...(3 nokta) ile belirtilir. doublep(double x, intn, ...) { }

  9. Esnek Argümanlı Fonksiyonlar(devam….) • Esnek argümanlı fonksiyon tanımlaması yapabilmek için stdarg.h kütüphanesinde üç tane makro fonksiyon tanımlanmıştır.

  10. Örnek-1: n Tane Sayının Toplamı • Öyle bir fonksiyon yazalım ki istediğimiz kadar sayıyı fonksiyona girdi (argüman) olarak verebilelim ve sonucunda bu sayıları toplasın. • Kaç sayı olacak? – 3 sayı? – 5 sayı ? • Normalde bu bilgi önemli mi? • Cevap: Evet • Ancak Esnek argümanlı fonksiyon ile argüman sayısı önemsiz hale gelecek.

  11. Örnek-1: n Tane Sayının Toplamı (devam…)

  12. Örnek-2: n Tane Sayının En Küçüğünü Bulan Fonksiyon • Öyle bir fonksiyon yazalım ki istediğimiz kadar sayıyı fonksiyona girdi (argüman) olarak verebilelim ve geriye değer olarak bu sayılardan en küçüğünü dönsün.

  13. Örnek-2: n Tane Sayının En Küçüğünü Bulan Fonksiyon (devam…)

  14. main() Fonksiyonuna Parametre Aktarımı • Ana programa yani main() fonksiyonuna parametre aktarımı, derlenmiş (çalıştırılabilir) bir program komut satırından (işletim sistemi ortamından) çalıştırılacağı zaman yapılır. • Parametre aktarımı, programın adı yazılıp bir boşluk bırakıldıktan hemen sonra yapılır. • Parametreler, komut satırından sayısal olarak girilse bile program içinde karakter topluluğu (string) olarak gelir. • Bu durumda, bu ifadeleri sayısal değerlere çeviren (atoi(), atol(), atof() gibi) fonksiyonlar kullanılır.

  15. main() Fonksiyonuna Parametre Aktarımı (devam…) intmain(arguman_sayısı, arguman_vektörü) intarguman_sayısı; char*arguman_vektörü[]; { ….. if(arguman_sayısı < ...){ printf("Eksik parametre !\n"); exit(1); } if(arguman_sayısı > ...){ printf("Cok fazla parametre !\n"); exit(1); } . ... arguman_vektörü[0] ... /* 1. eleman program adı */ ... arguman_vektörü[1] ... /* 2. eleman 1. parametre */ }

  16. Örnek-1: Komut Satırından Girilen 2 Sayının Toplamı Run veya Ctrl+F10

  17. Örnek-1: Komut Satırından Girilen 2 Sayının Toplamı (devam…)

  18. Örnek-1: Komut Satırından Girilen 2 Sayının Toplamı (devam…) Run veya Ctrl+F10

  19. Örnek-1: Komut Satırından Girilen 2 Sayının Toplamı(devam…) • Ya da Windows işletim sistemi için DOS komutu satırına geçilir ve ilgili exe uygulaması bulunarak aşağıdaki gibi program çalıştırılabilir:

  20. KAYNAKLAR • N. Ercil Çağıltay ve ark., C DERSİ PROGRAMLAMAYA GİRİŞ, Ada Matbaacılık, ANKARA; 2009. • Milli Eğitim Bakanlığı "ProgramlamayaGiriş ve AlgoritmalarDersNotları", 2007 • http://tr.wikipedia.org/wiki/Code::Blocks • http://www.codeblocks.org • http://www.AlgoritmaveProgramlama.com • http://www1.gantep.edu.tr/~bingul/c

More Related