19
ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi YZM 1105

ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

  • Upload
    vudan

  • View
    280

  • Download
    13

Embed Size (px)

Citation preview

Page 1: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

ALGORİTMA VE PROGRAMLAMA IDERS NOTU#10

Celal Bayar Üniversitesi Hasan Ferdi Turgutlu

Teknoloji FakültesiYZM 1105

Page 2: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

• Giriş

• Esnek Argümanlı Fonksiyonlar

• main() Fonksiyonuna Parametre Aktarımı

Genel Bakış…2

YZM 1105 – Algoritma ve Programlama I

Page 3: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

9. BÖLÜM

Esnek Argümanlı Fonksiyonlar ve main()

Fonksiyonuna Parametre Aktarımı

3

YZM 1105 – Algoritma ve Programlama I

Page 4: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

4

YZM 1105 – Algoritma ve Programlama I

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?

Page 5: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

5

YZM 1105 – Algoritma ve Programlama I

Esnek Argümanlı Fonksiyonlar

P(x) = a + bx + cx2 + dx3

float p(float x, float a, float b, float c, float d)

{

float p = a + b*x + c*x*x + d*x*x*x;

return p;

}

Page 6: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

6

YZM 1105 – Algoritma ve Programlama I

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.

Page 7: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

7

YZM 1105 – Algoritma ve Programlama I

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:

/* x a b */

sonuc = p(1.7, 1.0, -2.0);

Page 8: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

8

YZM 1105 – Algoritma ve Programlama I

Esnek Argümanlı Fonksiyonlar (devam….)

• Esnek argümanlar için 2 temel kural vardır:

1. Esnek argümanlar kullanımı isteğe bağlıdır.

2. 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.

double p(double x, int n, ...)

{

}

Page 9: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

9

YZM 1105 – Algoritma ve Programlama I

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.

Tip / Fonksiyon Açıklama

va_list ardışık esnek argümalar için tip belirleyici

va_start(ap, n)va_list tipinde bildirilmiş ap göstericisi için

bellekten n elemanlı yer ayırır.

va_arg(ap, tip)Veri tipi tip ile belirlenmiş küme elemanlarına

erişimi sağlar.

va_end(ap)va_list tipinde bildirilmiş ap göstericisi için

bellekten bölgeyi boşaltır.

Page 10: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

10

YZM 1105 – Algoritma ve Programlama I

Örnek1: 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.

Page 11: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

11

YZM 1105 – Algoritma ve Programlama I

Örnek1: n Tane Sayının Toplamı (devam…)

Page 12: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

12

YZM 1105 – Algoritma ve Programlama I

Örnek2: 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.

Page 13: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

13

YZM 1105 – Algoritma ve Programlama I

Örnek2: n Tane Sayının En Küçüğünü Bulan

Fonksiyon (devam…)

Page 14: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

14

YZM 1105 – Algoritma ve Programlama I

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.

Page 15: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

15

YZM 1105 – Algoritma ve Programlama I

main() Fonksiyonuna Parametre Aktarımı (devam…)

int main(arguman_sayısı, arguman_vektörü)

int arguman_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 */

}

Page 16: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

16

YZM 1105 – Algoritma ve Programlama I

Örnek1: Komut Satırından Girilen 2 Sayının

Toplamı

Run veya Ctrl+F10

Page 17: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

17

YZM 1105 – Algoritma ve Programlama I

Örnek1: Komut Satırından Girilen 2 Sayının

Toplamı (devam…)

Page 18: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

18

YZM 1105 – Algoritma ve Programlama I

Örnek1: Komut Satırından Girilen 2 Sayının

Toplamı (devam…)

Run veya Ctrl+F10

Page 19: ALGORİTMA VE PROGRAMLAMA I - aytugonan.cbu.edu.traytugonan.cbu.edu.tr/YZM1106/hafta-13/ders_notu10.pdf · ALGORİTMA VE PROGRAMLAMA I DERS NOTU#10 Celal Bayar Üniversitesi Hasan

19

YZM 1105 – Algoritma ve Programlama I

Örnek1: 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: