C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.

Slides:



Advertisements
Benzer bir sunumlar
Makine Müh. & Jeoloji Müh.
Advertisements

Bilgisayar Programlama Güz 2011
EKRAN ÇIKTISI.
Göstericiler (Pointers)
Değişken Bildirimleri
Elektrik-Elektronik Mühendisliği Bölümü DİZİLER C Programlama Dili Yaz Stajı Cengiz TEPE SAMSUN 2007.
Soru1: kuvvet(taban,us) Şeklinde bir yinelenen fonksiyon yazın
String Kütüphanesindeki Arama Fonksiyonları
MATLAB’ de Programlama
Bölüm 10 Yapılar ve Birleşimler
Özyinelemeli(Recursive) Algoritma Tasarımı
Recursion (Özyineleme)
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
NESNEYE YÖNELİK PROGRAMLAMA
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Erişim Denetimi, Fonksiyon
Fonksiyonlar.
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 9. Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1,
NESNE TABANLI PROGRAMLAMA -METOTLAR-
Görsel C# ile Windows Programlama
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
FONKSİYONLAR.
Özyineleme(Recursion)
Recursion (Özyineleme)
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
BM-103 Programlamaya Giriş Güz 2014 (8. Sunu)
Bilgisayar Programlama
JAVA’DA DÖNGÜLER.
Kalıtım , Sınıf Asli Ergün.
MATLAB’te Döngüler.
C PROGRAMLAMA DİZİLER (ARRAYS).
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Algoritmalar ve Programlama I Ders 2: Akış Diyagramları
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz
Algoritmalar ve Programlama I Ders 10: ALTPROGRAM KAVRAMI ve FONKSİYON
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
4. Hafta1 4. HAFTA. 4. Hafta2 Fonksiyonlar  Büyük problemler, küçük parçalara bölünerek kolay çözülür  Yazılımlar benzer modüller içerirler  Hata ayıklama.
Döngü Komutları. for deyimi bir alt limitten, bir üst limite kadar programın belirli bir parçasını tekrar eder. for deyiminde sayaç artış oranı da verilmelidir.
Fonksiyonlar.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Hafta2 Rekürsif Algoritmalar
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
BÖLÜM 3 AKIŞ DİYAGRAMI.
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
Programlamaya Giriş-I Bölüm-1. Algoritma Algoritma günlük yaşamımızda yaptığımız işler sırasında sıklıkla kullandığımız bir yöntemdir. Algoritma, bir.
Bilgisayar Programlama BIL 107
Fonksiyonlar ve Diziler
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
BİLGİSAYAR PROGRAMLAMA Ders 8: Fonksiyonlar
DİZİLER Bellekte sıralı bir şekilde bulunan ve aynı türden bilgilerin saklandığı veri yapısına dizi (array) denir. Örneğin kullanıcıdan 7 kişinin not ortalamasını.
BİLGİSAYAR PROGRAMLAMA Ders 5: Döngüler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 5: Fonksiyonlar
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
C Programlama Yrd.Doç.Dr. Ziynet PAMUK BMM211-H11
Bölüm 8 Diziler Dizi Tanımı Dizi Elemanlarına Değer Atama
Algoritma Nedir? Algoritmayı, herhangi bir problemin çözümü için izlenecek yolun adımlar halinde yazılması olarak tanımlayabiliriz. Algoritma, bir problemin.
Bilgisayar Bilimi Problem Çözme Süreci-2.
Bölüm 6: Kullanıcı Tanımlı Fonksiyonlar I
YAPISAL PROGRAMLAMA Hafta-8
Akis diyagramı Örnekleri
NİŞANTAŞI ÜNİVERSİTESİ
Bilgisayar Bilimi Fonksiyonlar-2.
MTM216 GÖRSEL PROGRAMLAMA
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar

Adres (referans) ile fonksiyon çağırma Bu çağırmada gönderilecek olan verilerin değerleri değil, değerlerin bulunduğu bellek gözünün adresi gönderilir. Bu şekilde kullanımda, fonksiyon kendisine gelen gerçek değeri alıp kullanır ve istenirse sonucu doğrudan o adrese yazabilir.

Adres (referans) ile fonksiyon çağırma Fonksiyon Tanımlama: Referans ile fonksiyon çağrılacağı zaman tanımlanan fonksiyonda fonksiyonun ismi normal fonksiyon ismi tanımlama ile aynı şekilde gerçekleştirilir. Burada farklı olarak fonksiyonun argümanları tanımlanırken değişken isminden önce işaretçi kullanılmasıdır. int *t ifadesinin anlamı adresi “t” olan değişken demektir. void fonksiyon_ismi (int *t) Fonksiyon ismi tanımlama aynıdır Parametre kısmı ise farklı tanımlanır

Adres (referans) ile fonksiyon çağırma Fonksiyon_ismi() fonksiyonundaki argümanlarda int *t tanımlaması kullanılmaktadır. Bu t değişkeninin int tipli bir değişkenin adresini tuttuğunu göstermektedir. Parametrelerin gönderilmesinde ise x’in adresi fonksiyona fonksiyon_ismi(&x ) ifadesi ile gönderilmiştir. &x ifadesi x değişkeninin bellek adresini verir. x = 10 ... x 10 00F3 &x = 00F3 y 23 00F5 ...

Adres (referans) ile fonksiyon çağırma Örnek: Bu örnekte adres ile çağrılan yerdegis() fonksiyonu içerisinde iki ayrı adres alanı a ve b argümanları tarafından tutulmuştur. Bu adreslerde tutulan değerler yeni bir t değişkeni yardımı ile yer değiştirmişlerdir. Fonksiyon adres ile çağrılırken değerlerin kendileri değil, bu değerleri tutan bellek adresleri yerdegis(&x, &y) ifadesi ile gönderilmiştir.

Adres (referans) ile fonksiyon çağırma Örnek: Bu örnekte adres ile çağrılan degerArttir() fonksiyonunun return ifadesi ile bir değer döndürmediğine dikkat ediniz. İşlemler bellek üzerinde gerçekleştirildiğinden değer değişimi tüm programa yansımaktadır.

fonksiyon çağırmada iki yaklaşım birden Örnek: Bu örnekte hesapla() fonksiyonu içerisinde argüman olarak hem değişkenler hem de bellek adresleri tanımlanmıştır.

Fonksiyonların İşaretçiler ile Çağrılması Tanımlanmış bir fonksiyon genellikle adıyla çağrılır. Önceki örneklerde üç sayının ortalamasını alan fonksiyonu “ortalama” ismi ile tanımlanmış ve kullanılırken bu isimle kullanmıştık. k = ortalama(20,10,5); Fonksiyonlarda diğer değişkenler gibi belleğe yüklenirler. Fonksiyonlarında bir başlangıç adresleri vardır ve bu adresin başlangıcı fonksiyonun adı tarafından turulur. Eğer bir fonksiyonun bellekteki başlangıç adresi bir değişkene aktarılırsa, bu değişkeni kullanılarak da bu fonksiyon çağrısı yapılabilir. Fonksiyonu gösterecek olan pointer değişkenin tanımı şu şekilde yapılır ; tip (*degiskenadi)(argumantipleri)

Fonksiyonların İşaretçiler ile Çağrılması Örnek olarak; int topla(int, int) fonksiyonu pointer olarak tanımlanırsa; int (*islem)(int, int) ifadesi ile yazılır. Bu gösterici sadece yukarıdaki şekilde tanımlanan fonksiyonları gösterebilir. Yani, iki adet int tipli parametre alan ve geriye int tipli bir değişken döndüren fonksiyonları gösterebilir.

Fonksiyonların İşaretçiler ile Çağrılması Örnek: Bu örnekte topla() ve carp() adında iki farklı fonksiyon tanımlanmıştır. Ayrıca bu fonksiyon yapısına uygun olan bir pointer main ana fonksiyonunun altında gerçekleştirilmiştir. islem pointer’ı int tipinde iki ayrı integer argüman alabilecek tüm fonksiyonları göstermek için kullanılabilir. islem pointer’ının hangi fonksiyonu göstereceği ya da bir başka değişle hangi fonksiyonun işlevini yerine getireceği işlem’e tanımlı fonksiyonlardan birisinin ismi atanarak değiştirilir.

Fonksiyonların İşaretçiler ile Çağrılması f argümanı olarak int alan ve geriye değer döndürmeyen fonksiyonları gösteren 3 göstericinin dizisidir.

fonksiyonların başka fonksiyonlara parametre olarak gönderilmesi Fonksiyonlar, göstericiler ile temsil edilebildiğinden ve göstericilerde birer değişken olduğundan başka fonksiyonlara parametre olarak gönderilebilirler. Gönderilecek olan fonksiyonda argümanlar fonksiyon işaretçisi şeklinde tanımlanmalıdır.

fonksiyonların başka fonksiyonlara parametre olarak gönderilmesi Örnek: Dizi elemanlarını seçime bağlı olarak artan ya da azalan sıralama yapan program

Özyineleme (Recursion) Bir fonksiyonun kendisini çağırarak çözüme gitmesine özyineleme (recursion), böyle çalışan fonksiyonlara da özyinelemeli (recursive) fonksiyonlar denilir. Özyineleme, iterasyon (döngüler, tekrar) yerine geçebilecek çok güçlü bir programlama tekniğidir. Özyinelemeli algoritmalarda, tekrarlar fonksiyonun kendi kendisini kopyalayarak çağırması ile elde edilir. Bu kopyalar işlerini bitirdikçe kaybolur. Bir problemi özyineleme ile çözmek için problem iki ana parçaya ayrılır. 1 – cevabı kesin olarak bildiğimiz kesin durum (base case) 2 – cevabı bilinmeyen ancak cevabı yine problemin kendisi kullanılarak bulunabilecek durum.

Recursive fonksiyon - Faktöriyel hesabı Bu yönteme en uygun örnek faktöriyel problemidir. Faktöriyelin tanımı şöyle yapılır; sıfır dışındaki herhangi bir doğal sayının faktöriyeli 1 den başlayarak, o sayıya kadarki tüm doğal sayıların çarpımını almak yolu ile elde edilir. 0 sayısının faktöriyeli 1 olarak tanımlanır. Matematiksel gösterimi ise: Çarpım dizisindeki sonuncu terim olan N’i ayırdığınızda diğer sayıların çarpımı (N- 1)! olmaktadır. Yukarıdaki tanım ile son yapılan tanım arasındaki fark, açıklanan problemin tanımında yine problemin kendisinin olmasıdır. Burada cevabı kesin olarak bilinen 0! durumu temel durum olacaktır. Diğer durumlar ise cevabı bilinmeyen ancak problemin kendisi kullanılarak bulunabilecek durumlardır.

Recursive fonksiyon - Faktöriyel hesabı Faktöriyel hesabı özyinelemeli fonksiyon ile aşağıdaki mantıkla çalışır. Bu durumda faktöriyel hesabı yapan fonksiyonu recursive (özyinelemeli) olarak tekrar düşündüğümüzde aşağıdaki gibi olacaktır.

Recursive fonksiyon - Faktöriyel hesabı

Recursive fonksiyon - Fibonacci Serisi Fibonacci serileri yinelemeli olarak aşağıdaki biçimde tanımlanabilir: fibonacci(0)=0 fibonacci(1)=1 fibonacci(n)=fibonacci(n-1)+fibonacci(n-2)

Ödev 1 ile kullanıcı tarafından girilen N arasındaki asal sayıların toplamını hesaplayan fonksiyonu recursive olarak yazınız. mesafe () isminde, girilen iki ayrı noktanın, (x1, y1) ve (x2, y2), arasındaki mesafeyi bulan bir fonksiyon yazınız. Bu fonksiyon referans yoluyla çağrılacaktır. Programda kullanacak bütün sayılar ve fonksiyonun döndüreceği değer float türündedir.