FONKSİYONLAR
Çabuk Gözden Geçirme Fonksiyon nedir? Örnekler: Belli bir işi gerçekleştiren bir kod modülüdür. Örnekler: İki sayıdan büyüğünü belirleyen fonksiyon Bir isim listesini sıralayan fonksiyon 05.04.2019
Yönetim Benzerliği Boss Function Max Function Sort Function Bir fonksiyon, belli görevler için kesin işleri temsil edebilir Boss Function Yönetim fonksiyonu Max Function Sort Function Sıralama fonksiyonu En büyük fonksiyonu 05.04.2019
Önemli Genel Kavram #1 Bölmek ve Almak: büyük programları daha küçük fonksiyon serileri halinde bölün Karmaşıklığı yönetmeye yardım eder Büyük programlar oluşturmayı daha kolay hale getirir Program hatalarını ayıklamaya yardım eder 05.04.2019
Önemli Genel Kavram #2 Soyutlama: çoğu zaman, bir fonksiyonun ne yaptığını bilmeye ihtiyaç duyarsınız, fakat gerçekten nasıl yaptığını değil. Yine karmaşıklığı yönetmeye yardım eder Nasıl çalıştığını anlamadan da başka insanların kodlarını kullanabilirsiniz, 05.04.2019
Önceden-paketlenmiş Fonksiyonları Kullanmak Standart C pek çok önceden-paketlenmiş kütüphane içerir: ctype.h: karakter işleme math.h: matematiksel fonksiyonlar stdio.h: standart giriş/çıkış stdlib.h: rastgele sayılar, hafıza işleme string.h: metin işleme time.h: tarih/saat fonksiyonları Tüm bunlar Kitapta detaylı olarak vardır. 05.04.2019
Fonksiyon Tanımlaması Fonksiyon Çağrımı Fonksiyon Kavramları Fonksiyon Prototipi Fonksiyon Tanımlaması Fonksiyon Çağrımı 05.04.2019
Fonksiyon Prototipi Size fonksiyonun ne tür bir veri beklediğini ve ne tür bir veri geri döndüreceğini söyler, İki fonksiyonun “konuşmasına” imkan tanıyan bir iletişim protokolünü temsil eder. Daha önce oluşturulmuş bir fonksiyonu kullanmak isterseniz prototipleri okumasını öğrenmeye ihtiyaç duyarsınız. 05.04.2019
sqrt Fonksiyonu Return data type Function argument data type double sqrt (double); Bu fonksiyon bu yüzden bir double değeri kabul eder ve bir double değeri geri döndürür. Return data type Function argument data type Geri dönen veri tipi Fonksiyon bağımsız değikeni veri tipi 05.04.2019
#include <stdio.h> #include <math.h> main () { sqrt() kullanımı #include <stdio.h> #include <math.h> main () { double value; value = sqrt(9.0);/*function call*/ /* fonksiyon çağrımı */ printf ("%f", value); } 05.04.2019
KENDİ FONKSİYONLARINIZI OLUŞTURMAK
Kendi Fonksiyonlarınızı Oluşturmak #include <stdio.h> int square(int); main () { printf("%d ", square(5)); } int square(int y) return y * y; Function Prototype: must be declared at top of program. Fonksiyon Prototipi: programın en başında bildirilmeli Fonksiyon çağrımı: fonksiyonu ele alır Function Call: invokes the function Function Definition: contains the actual function code. Fonksiyon tanımlaması: gerçek fonksiyon kodlarını içerir Returns a value back up to main. Main’e bir değer geri döndürür. 05.04.2019
Programı Anlamak Main Function Square function Main (Ana) Fonksiyonu “Take this Integer!” Bu tamsayıyı al “Here’s the answer. It’s an integer!” Cevap burada. O bir tamsayı! Square function Kare fonksiyonu 05.04.2019
Fonksiyon Kalıbı Programınıza fonksiyonlar eklerken bu kalıbı kullanın. geri dönecek-değer-tipi fonksiyon-adı (parametre-listesi); { değişken tanımlamaları çalışma deyimleri; geri döndürme deyimi (seçmeli bu dersin dışında); } Function Prototype: must be declared at top of program. Fonksiyon prototipi: programın en başında bildirilmelidir. Function Definition: contains the actual function code. Fonksiyon Tanımları: gerçek fonksiyon kodlarını içerir. 05.04.2019
Fonksiyonlar Gözden Geçirme
Hızlı Gözden Geçirme Fonksiyon nedir? Belli bir işi gerçekleştiren bir kod modülüdür. 05.04.2019
Fonksiyonların Faydaları Deneyimler göstermektedir ki büyük programlar geliştirmek ve bakımını sağlamak için en iyi yol onu daha küçük bileşenler veya modüllerden inşaa etmektir. C’de bu tür modüller fonksiyonlar olarak bilinir Her modül, genel olarak programın bütününden daha basit ve daha yönetilebilirdir. Bu kavram Böl ve Al olarak aynı zamanda bileşimde gizleme olarak bilinir 05.04.2019
Böl ve Al Böl ve Al: büyük programları daha küçük fonksiyon serileri halinde bölün Karmaşıklığı yönetmeye yardım eder Büyük programlar oluşturmayı daha kolay hale getirir Program hatalarını ayıklamaya yardım eder 05.04.2019
Gizlemek Soyutlama: çoğu zaman, bir fonksiyonun ne yaptığını bilmeye ihtiyaç duyarsınız, fakat gerçekten nasıl yaptığını değil. Yine karmaşıklığı yönetmeye yardım eder Nasıl çalıştığını anlamadan da başka insanların kodlarını kullanabilirsiniz, 05.04.2019
Gizlemek Bir kereden daha fazla kullanılabilecek kodlarınız varsa, onu bir fonksiyon içine koyabilir ve fonksiyonu birçok kere çağırabilirsiniz. Kod uzunluğunu ve karmaşıklığını azaltır Kod içindeki hata olasılığını azaltır 05.04.2019
Fonksiyon Kavramları (yeniden gözden geçirme) Fonksiyon Prototipi Fonksiyon Tanımlaması Fonksiyon Çağrımı 05.04.2019
PROTOTİPLEME KURALLARI
Tanımlamaya karşı Fonksiyon Prototipleme Fonksiyon prototipi ve fonksiyon tanımı aynı veri tiplerini içermelidir. Bununla birlikte, Prototip: parametrelerin isimlerini dahil etmeye ihtiyaç duymazsınız, fakat parametre veri tiplerini dahil etmelisiniz. e.g. int square (int); Tanım: Tüm parametrelerin isimlerini veri tiplerini dahil etmelisiniz. e.g. int square (int y) 05.04.2019
Fonksiyonlarınızı isimlendirmek Değişkenlerde olduğu gibi fonksiyonların isimlendirilmesi önemlidir Fonksiyonunuza, fonksiyonun ne yaptığını açıkça anlatan bir isim vermelisiniz hata ayıklamaya yardım eder başkalarının kodunuzu okumasına yardım eder İlk harfi ve ek kelimelerin başlangıcını büyütün E.g. float CalculateTax( int iIncome ) ; 05.04.2019
Fonksiyonlarla iyi programlama Bir fonksiyon bir ve yalnızca bir yararlı işi gerçekleştirmeldir Fonksiyonunuz için birden fazla işi belirten isimler görürseniz onu birbirinden ayrı fonksiyonlara ayırma zamanıdır, örneğin; CalculateTaxAndPrintReturnAndSaveFile(); - ugh VergiyiHesaplaVeYazGeriDöndürVeDosyayıKaydet(); -offf Bir programda birşeyleri bir kereden fazla yapıyorsanız, o iş için fonksiyon yazmalısınız 05.04.2019
Daha İyi Programlama Bir projede birşeyler yapması için bir fonksiyon yazdıysanız ve aynı işin bir başka projede de yapılmasını istiyorsanız, fonksiyonu yeniden kullanmalısınız. Fonksiyonda, program veya projenin başka bir kısmında bulunan veriye bağlı olarak iç çalışma yapmayın (fonksiyon veriyi yalnızca parametreleri yoluyla almalıdır) 05.04.2019
Geri Döndürülen Değer Tipleri Bir fonksiyondan yalnızca bir değer geri döndürebilirsiniz (bunun bizim üzerinde durmayacağımız bazı yolları vardır) Eğer bir geri döndürme tipi dahil etmediyseniz varsayılan değer tamsayıdır. Örnek: max (int, int); Benzerdir: int max (int, int); Genellikle net olması en iyisidir. Ben burada ikincisini öneririm. 05.04.2019
void: hiçbir şey demektir Boşluk geri döndürmek void: hiçbir şey demektir Bu nedenle boşluk geri döndüren fonksiyon hiçbir şey geri döndürmez. Bu yüzden, burada bir geri döndürme deyimine ihtiyaç yoktur. Örnek: void PrintIntro (int); 05.04.2019
Parametre Veri Tipleri Geri dönüş değerlerinden farklı olarak, istediğiniz kadar parametre verebilirsiniz. Parametre listesinde bir veri tipi bulundurmuyorsanız varsayılan değer tamsayıdır. Örneğin; negate (); Benzeri: int negate (int); Yine, ben daha açık olan ikincisini öneriyorum. 05.04.2019
Uyarı Değişkenleri bildirmekten farklı olarak, tamsayılardan farklı olan çoklu değişkenler için açıkça tip belirtilmelidir. For example TakeInTwoFloats( float x, y ) ; x için bir gerçel sayı ve y için tamsayı (varsayılan) bekleyecektir! Bu veri kaybıyla sonuçlabacaktır (gerçelden tamsayıya) Bunun yerine şöyle yazmalısınız: TakeInTwoFloats(float x, float y); 05.04.2019
Void’leri geçmek Example: Parametre listesinde void’i kullanırsanız, fonksiyon hiç parametre almaz. Example: void printIntro (void); 05.04.2019
Bir Başka Örnek #include <stdio.h> int maximum(int, int, int); main() { printf("Maximum is: %d\n", maximum(5, 7, 3)); } int maximum(int x, int y, int z) int max = x; if (y > max) max = y; if (z > max) max = z; return max; Fonksiyon prototipi: bu fonksiyon üç tamsayıyı alır ve bir tamsayı geri döndürür. Function Prototype: this function takes three ints, and returns one int. Fonksiyon tanımlaması Function Definition Geri dönüş deyimi Return statement 05.04.2019
BAĞIMSIZ DEĞİŞKEN ZORLAMASI
Bağımsız Değişken Zorlaması Veri otomatik olarak prototipte tarif edilen veri tipine uymaya zorlanır. Bu veri kaybına neden olabilir. (Yukarıdaki , TakeInTwoFloats örneğine bakın) Bir çeşit kalıba dökme gibi çalışır. Bu genellikle iyi bir şey değildir, bu nedenle prototipe bağlılık! Fonksiyonun beklediği veri tipine geç! 05.04.2019
Örnek: Bağımsız Değişken Zorlaması Aşağıdaki fonksiyon prototipi verilmiştir: int square(int); Ve, biz fonksiyonu bir gerçel değerle çağırıyoruz: printf("%d ", square(5.7)); Bağımsız değişken zorlaması olduğu için, 5.7 değeri 5 olarak kesilmiştir. Bu yüzden bir veri kaybına sahip oluyoruz. 05.04.2019
FAALİYET ALANINI ANLAMAK
Bir programda değişkene nerede başvurulabileceğini belirler. Faaliyet Alanı Bir programda değişkene nerede başvurulabileceğini belirler. Faaliyet alanını anlayarak programlarınızı: daha modüler hataları daha kolay tespit edilebilen bir hale getirebilirsiniz. Genellikle globallere karşı local değişkenler tartışmalarında ortaya çıkarlar. 05.04.2019
Globallere karşı Lokal Değişkenler Herhangi bir fonksiyonun dışında bildirilmiş bir değişkendir. Program içinde herhangi bir fonksiyon tarafından başvurulabilir Local: Bir fonkiyonun içinde bildirilmiş bir değişkendir. Yalnızca o fonksiyon tarafından başvurulabilirler. Bir fonksiyon içinde bir lokal değişkeniniz ve aynı isimde bir global değişkeniniz varsa, lokal olan kullanılır. 05.04.2019
Örnek Aynı isimde bir lokal değişkeniniz ve bir global değişkeniniz varsa lokal olan kullanılır. If you have a local variable and a global variable with the same name, the local one is used. /* This program demonstrates global variables and scope */ /* Bu program global değişkenleri ve kullanım alnlarını göstermektedir */ #include <stdio.h> void a (void); void b (void); int x = 1; /* Global Variable */ /* Global Değişken */ main () { printf ("In main, x equals: %d\n", x); a(); b(); return 0; } void a (void) { int x = 100; printf ("In function (a), x equals: %d\n", x); void b (void) { printf ("In function (b), x equals: %d\n", x++); In main, x equals: 1 In function (a), x equals: 100 In function (b), x equals: 1 In main, x equals: 2 main’de, x eşittir: 1 fonksiyon (a)’da, x eşittir: 100 fonksiyon (b)’de, x eşittir: 1 main’de, x eşittir: 2 05.04.2019
Global Değişkenlerden Sakının! Şimdi global değişkenleri biliyorsunuz, onları asla kullanmayın! Neden? Bir global değişken kullanırsanız, herhangi bir fonksiyon onu değiştirebilir Bu problemleri izleyerek bulmayı son derece zorlaştırır. Programınızın modülaritesini yıkar. 05.04.2019
değer geçişi C’de bir parametre bir fonksiyona geçtiğinde ve değişken bu fonksiyon tarafından değiştirildiğinde, fonksiyonun çağrıldığı yere geri dönüldüğünde değer değişmez (bununla ilgili geçiş dizileri ve geçiş işaretçi tipleri ile ilgili istisnalar vardır) Bu bütün programlama dillerinde geçerli değildir. 05.04.2019
Fonksiyonlarınızı Belgeleyin (gerekli!) Kabul edilebilir bir yol tanımlamaların aşağıdaki gibi önceden verilmesi: /**************************************** * Name: CalculateTax (İsim: CalculateTax (vergi hesaplama)) * Params: floats for Income, Tax Rate(Parametreler:Income(gelir), Tax Rate(vergi oranı) için gerçel sayılar * Action: calculates tax based on given income and tax rate(İş: verilen gelir ve vergi oranına bağlı olarak vergi hesaplar) * Returns: float for the tax due (Geri dönenler: gerekli vergi için gerçel) ***********************************************/ float CalculateTax( float fIncome, float fTaxRate ) { … code…. } /* end function CalculateTax */ /* CalculateTax fonksiyonu sonu */ 05.04.2019
İyi Programlama Alışkanlıkları Fonksiyonun ne yaptığını ve döndürdüğünü güçlü, tam anlamıyla ve anlaşılır olarak tarif eden fonksiyon isimleri seçin. Ör: fiil-artı-nesne veya geri döndürülen değerin tanımı Aktif parametrelerinizin (fonksiyona geçirdiğiniz aktif veri gibi) fonksiyonun beklediği veri tipleri ile denk olduğundan emin olun Fonksiyonunuzdaki bütün parametreleri kullanıp kullanmadığınızdan emin olun, kullanmadıklarınızı kaybedersiniz. Parametrelerinizle ilgili tüm durumları belgeleyin. 05.04.2019
Daha Fazla İyi Programlama Alışkanlığı Bir fonksiyonun parametrelerini yaklaşık olarak yedi ile sınırlayın. Araştırmalar insanların yedi parçadan daha fazla bilgiyi bir kerede takip edemediğini göstermiştir. (ör: bu nedenle telefon numaraları 7 haneli) 05.04.2019
Daha Fazla İyi Programlama Alışkanlığı Giriş parametrelerini değişkenlerle çalışır gibi kullanmayın onları direk olarak değiştirmeyin - bunun yerine fonksiyonda bir başka değişken tanımlayın, bunu giriş değişkenine eşitleyin ve bunun yerine yeni değişkeni kullanın Eğer fonksiyon bir değer geri döndürecekse, birşeyleri olası tüm koşullar altında döndürdüğünden emin olun. 05.04.2019