functions c with types examples
C ++ 'da Kullanım Alanları İle Birlikte Fonksiyon Türleri.
Şimdiye kadarki önceki eğitimlerimizde, C ++ gibi değişkenler, depolama sınıfları, operatörler, diziler, dizeler vb. Gibi çeşitli kavramları gördük.
Bu eğitimde ilerleyip işlevler kavramını tartışacağız. İşlevlere ayrıca yöntemler, alt yordamlar veya prosedürler denir.
=> Kapsamlı C ++ Eğitim Eğitim Serisini Buradan Okuyun.
Ne öğreneceksin:
- Bir Fonksiyonu Nasıl Tanımlarız?
- C ++ 'da Fonksiyon Türleri
- İşlev Beyanı
- İşlev Tanımı
- Bir Fonksiyonu Çağırma
- Biçimsel ve Gerçek Parametreler
- Dönen Değerler
- Void İşlevleri
- Parametreleri İşlevlere Aktarma
- Varsayılan Parametreler
- Const Parametreleri
- Satır İçi İşlevler
- Fonksiyonlarda Yapıları Kullanma
- Sonuç
- Önerilen Kaynaklar
Bir Fonksiyonu Nasıl Tanımlarız?
Bir işlev, belirli bir görevi gerçekleştirmek için bir araya getirilen bir dizi ifadedir. Tekrarlanan bazı görevleri yerine getiren ifadeler veya yazdırma vb. Gibi bazı özel görevleri yerine getiren ifadeler olabilir.
İşlevlere sahip olmanın bir kullanımı, kodu işlevler adı verilen daha küçük birimlere bölerek basitleştirmektir. Fonksiyonları kullanmanın arkasındaki bir başka fikir de, bizi aynı kodu tekrar tekrar yazmaktan kurtarmasıdır. Sadece bir fonksiyon yazmalıyız ve ardından aynı ifadeleri tekrar tekrar yazmak zorunda kalmadan onu gerektiği gibi ve gerektiğinde çağırmalıyız.
C ++ 'da Fonksiyon Türleri
C ++ 'da, aşağıda gösterildiği gibi iki tür işleve sahibiz.
Yerleşik İşlevler
Yerleşik işlevlere kitaplık işlevleri de denir. Bunlar C ++ tarafından sağlanan işlevlerdir ve bunları kendimiz yazmamıza gerek yoktur. Bu fonksiyonları doğrudan kodumuzda kullanabiliriz.
Bu işlevler C ++ başlık dosyalarına yerleştirilir. Örneğin ,, sırasıyla yerleşik matematik işlevlerine ve dize işlevlerine sahip üstbilgilerdir.
Bir programda yerleşik işlevlerin kullanımına bir Örnek görelim.
#include #include using namespace std; int main() { string name; cout << 'Enter the input string:'; getline (std::cin, name); cout << 'String entered: ' << name << '!
'; int size = name.size(); cout<<'Size of string : '< Çıktı:
Giriş dizesini girin: Software Testing Help
Dize girildi: Yazılım Testi Yardımı!
Dize boyutu: 21
Burada başlıkları kullanıyoruz ve. Veri türleri ve diğer giriş / çıkış işlevleri kitaplıkta tanımlanmıştır. Getline, boyut gibi kullanılan dizge işlevleri başlığın bir parçasıdır.
Kullanıcı Tanımlı İşlevler
C ++ ayrıca kullanıcılarının kendi işlevlerini tanımlamalarına izin verir. Bunlar, kullanıcı tanımlı işlevlerdir. Programın herhangi bir yerinde işlevleri tanımlayabilir ve ardından bu işlevleri kodun herhangi bir bölümünden çağırabiliriz. Değişkenler gibi, kullanılmadan önce bildirilmesi gerekir, işlevlerin de çağrılmadan önce bildirilmesi gerekir.
Kullanıcı tanımlı işlevleri ayrıntılı olarak tartışalım.
Kullanıcı tanımlı işlevler (veya basitçe işlevler) için genel sözdizimi aşağıda verilmiştir:
return_type functionName(param1,param2,….param3) { Function body; }
Yukarıda gösterildiği gibi, her işlevde şunlar bulunur:
- Dönüş türü: Belirli bir görevi gerçekleştirdikten sonra işlevlerin çağıran işleve geri dönme değeridir.
- fonksiyon adı : Bir işlevi adlandırmak için kullanılan tanımlayıcı.
- Parametre Listesi: Yukarıdaki sözdiziminde param1, param2,… paramn ile gösterilir. Bunlar, bir işlev çağrısı yapıldığında işleve iletilen argümanlardır. Parametre listesi isteğe bağlıdır, yani parametresi olmayan fonksiyonlara sahip olabiliriz.
- İşlev gövdesi: Belirli bir görevi yerine getiren bir grup ifade.
Daha önce de belirtildiği gibi, kullanmadan önce bir işlevi 'beyan etmemiz' gerekir.
İşlev Beyanı
Bir işlev bildirimi, derleyiciye işlevin dönüş türü, işlev tarafından kullanılan parametrelerin sayısı ve veri türleri hakkında bilgi verir. İşlevdeki parametrelerin adları da dahil olmak üzere bildirim isteğe bağlıdır. İşlev bildirimi, işlev prototipi olarak da adlandırılır.
Referansınız için aşağıda fonksiyon bildiriminin bazı örneklerini verdik.
int sum(int, int);
Yukarıdaki bildirim, parametre olarak iki tamsayı alan ve bir tamsayı değeri döndüren bir 'toplam' işlevidir.
void swap(int, int);
Bu, takas işlevinin int türünde iki parametre aldığı ve herhangi bir değer döndürmediği ve dolayısıyla dönüş türünün geçersiz olduğu anlamına gelir.
void display();
İşlev ekranı herhangi bir parametre almaz ve ayrıca herhangi bir tür döndürmez.
İşlev Tanımı
Bir işlev tanımı, bir işlev bildiriminin içerdiği her şeyi içerir ve ayrıca ayraçlar ({}) içine alınmış işlevin gövdesini de içerir.
Ayrıca adlandırılmış parametrelere sahip olmalıdır. Fonksiyon çağrıldığında, programın kontrolü, fonksiyon kodunun yürütülebilmesi için fonksiyon tanımına geçer. İşlevin yürütülmesi bittiğinde kontrol, işlevin çağrıldığı noktaya geri döner.
Yukarıdaki takas işlevi beyanı için tanım aşağıda verildiği gibidir:
void swap(int a, int b){ b = a + b; a = b - a; b = b - a; }
Bir işlevin bildirimi ve tanımının birlikte gidebileceğini unutmayın. Bir fonksiyonu referans vermeden önce tanımlarsak, ayrı bir bildirime gerek kalmaz.
Bir fonksiyonu göstermek için eksiksiz bir programlama Örneği alalım.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping: '; cout<<'a = '< Bir Fonksiyonu Çağırma Programımızda bir fonksiyonumuz olduğunda, gereksinime bağlı olarak bu fonksiyonu çağırmalı veya çağırmalıyız. Yalnızca işlev çağrıldığında veya çağrıldığında, işlev istenen sonuçları sağlamak için kendi deyim kümesini çalıştırır.
Fonksiyon, programın herhangi bir yerinden çağrılabilir. Program birden fazla işlev kullanıyorsa, ana işlevden veya başka herhangi bir işlevden çağrılabilir. Başka bir işlevi çağıran işleve 'Çağrı işlevi' denir.
Yukarıdaki sayıların değiş tokuşu örneğinde, takas işlevi ana işlevde çağrılır. Dolayısıyla ana işlev çağıran işlev haline gelir.
Biçimsel ve Gerçek Parametreler
Fonksiyonlar için parametrelere sahip olabileceğimizi zaten görmüştük. İşlev parametreleri, işlev tanımında işlev adını izleyen bir parametre listesi olarak sağlanır. İşlev çağrıldığında, bu gerçek değerleri kullanarak işlevin görevini yerine getirebilmesi için bu parametrelerin gerçek değerlerini iletmemiz gerekir.
Fonksiyon tanımında tanımlanan parametrelere denir Biçimsel Parametreler . İşlev çağrısındaki gerçek değerler olan parametreler çağrılır Gerçek Parametreler.
Yukarıdaki takas numarası örneğinde, resmi ve gerçek parametreler için yorumları yazdık. Çağıran işlevde, yani main, iki tamsayının değeri okunur ve takas işlevine aktarılır. Bunlar gerçek parametrelerdir.
Bu parametrelerin tanımlarını fonksiyon tanımının ilk satırında görebiliriz. Bunlar biçimsel parametrelerdir.
Biçimsel ve gerçek argüman türlerinin eşleşmesi gerektiğini unutmayın. Biçimsel ve gerçek parametrelerin sırası da aynı olmalıdır.
Dönen Değerler
İşlev amaçlanan görevi yerine getirdiğinde, sonucu çağıran işleve döndürmelidir. Bunun için fonksiyonun dönüş tipine ihtiyacımız var. İşlev, çağıran işleve tek bir değer döndürebilir. İşlevin dönüş türü, işlev prototipiyle birlikte bildirilir.
Dönüş türlerini göstermek için iki sayı eklemeye bir Örnek alalım.
#include using namespace std; int sum(int a, int b){ return (a+b); } int main() { int a, b, result; cout<>a>>b; result = sum(a,b); cout<<'
Sum of the two numbers : '< Çıktı:
Eklenecek iki sayıyı girin: 11 11
İki sayının toplamı: 22
Yukarıdaki örnekte, iki tamsayı parametresi alan ve bir tamsayı türü döndüren bir fonksiyon toplamımız var. Ana işlevde, konsol girişinden iki tamsayı okur ve bunu toplam işlevine geçiririz. Dönüş türü bir tamsayı olduğu için, LHS'de bir sonuç değişkenimiz var ve RHS bir işlev çağrısıdır.
Bir fonksiyon çalıştırıldığında, fonksiyon toplamı tarafından döndürülen (a + b) ifadesi sonuç değişkenine atanır. Bu, fonksiyonun dönüş değerinin nasıl kullanıldığını gösterir.
Void İşlevleri
İşlevin genel sözdiziminin tanımlanacak bir dönüş türü gerektirdiğini gördük. Ama eğer böyle bir fonksiyona değer vermeyen bir fonksiyonumuz varsa, bu durumda dönüş tipi olarak ne belirtiyoruz? Cevap, fonksiyonun bir değer döndürmediğini belirtmek için değersiz “void” türü kullanmamızdır.
Böyle bir durumda işlev 'void işlevi' olarak adlandırılır ve prototipi şöyle olacaktır
void functionName (param1, param2,… .param 3);
Not : Bir 'dönüş' ifadesi eklemek iyi bir uygulama olarak kabul edilir; açıklık için boşluk işlevinin sonunda.
Parametreleri İşlevlere Aktarma
Gerçek ve biçimsel parametreler kavramını zaten gördük. Ayrıca, gerçek parametrelerin, biçim parametreleri tarafından alınan bir işleve değer ilettiğini de biliyoruz. Buna parametrelerin aktarılması denir.
C ++ 'da, aşağıda tartışıldığı gibi parametreleri geçirmek için belirli yollarımız vardır.
Değere Göre Geçiş
Daha önce tartıştığımız iki tamsayıyı takas etme programında, esas olarak 'a' ve 'b' tam sayılarını okuduğumuzu ve bunları takas işlevine aktardığımızı gördük. Bu, değere göre geçiş tekniğidir.
Parametre geçişinin değer geçişi tekniğinde, gerçek parametrelerin değerlerinin kopyaları resmi parametrelere aktarılır. Bu nedenle, gerçek ve biçimsel parametreler farklı bellek konumlarında saklanır. Bu nedenle, işlevin içindeki biçimsel parametrelerde yapılan değişiklikler işlevin dışına yansımaz.
Bunu iki sayının değiş tokuşunu bir kez daha ziyaret ederek daha iyi anlayabiliriz.
#include using namespace std; void swap(int a, int b) { //here a and b are formal parameters b = a + b; a = b - a; b = b - a; cout<<'
After swapping inside Swap:
'; cout<<'a = '< Değere göre geçirme tekniği en temel ve en yaygın kullanılan yöntem olsa da, yukarıdaki sınırlamadan dolayı, onu yalnızca işlevi çağırırken işlevin değerleri değiştirmesini gerektirmediğimiz durumlarda kullanabiliriz.
Referansla Geç
Başvuruya göre geçirme, parametreleri işlevlere geçirmek için C ++ tarafından kullanılan başka bir tekniktir. Bu teknikte, gerçek parametrelerin kopyalarını geçirmek yerine, gerçek parametrelere referanslar iletiriz.
Not: Referanslar, değişkenlerin takma adlarından başka bir şey değildir veya basit kelimelerle, bir değişkene verilen başka bir addır. Dolayısıyla bir değişken ve referansı aynı hafıza konumunu paylaşır. Sonraki eğitimimizde referansları ayrıntılı olarak öğreneceğiz.
Referans yoluyla geçiş tekniğinde, gerçek parametrelerin bu referanslarını kullanırız ve sonuç olarak, işlevdeki biçimsel parametrelerde yapılan değişiklikler çağıran işleve geri yansıtılır.
Takas işlevimizi okuyucularımızın konsepti daha iyi anlaması için değiştiriyoruz.
#include #include using namespace std; void swap(int &a, int &b){ int temp = a; a = b; b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Dolayısıyla, takas işlevindeki biçimsel parametrelerde yapılan değişiklikler ana işleve yansıtılır ve takas edilen değerleri alırız.
İşaretçiden Geç
C ++ 'da, işaretçi değişkenlerini kullanarak parametreleri de işleve geçirebiliriz. İşaretçi ile geçiş tekniği, referansla geçiş ile aynı sonuçları üretir. Bu, hem resmi hem de gerçek parametrelerin aynı bellek konumlarını paylaştığı ve işlevde yapılan değişikliklerin çağıran işlevde yansıtıldığı anlamına gelir.
Referans ile geçişte parametrelerin referansları veya takma adlarıyla ilgilenmemizin tek farkı, işaretçi ile geçiş tekniğinde parametreleri geçirmek için işaretçi değişkenlerini kullanmamızdır.
İşaretçi değişkenleri, işaretçi değişkenlerinin belirli bir değişkene işaret ettiği referanslarla farklılık gösterir ve referansların aksine, işaret ettiği değişkeni değiştirebiliriz. İşaretçinin ayrıntılarını sonraki eğitimlerimizde keşfedeceğiz.
İşaretçi Geçme tekniğini göstermek için tekrar iki tamsayının değiştirilmesini sunuyoruz.
#include #include using namespace std; void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int a,b; cout<>a>>b; cout<<'a = '< Varsayılan Parametreler C ++ 'da, fonksiyon parametreleri için varsayılan değerler sağlayabiliriz. Bu durumda, işlevi çağırdığımızda, parametreleri belirtmeyiz. Bunun yerine işlev, prototipte sağlanan varsayılan parametreleri alır.
Aşağıdaki Örnek, Varsayılan Parametrelerin kullanımını göstermektedir.
#include #include using namespace std; int mathoperation(int a, int b = 3, int c = 2){ return ((a*b)/c); } int main() { int a,b,c; cout<>a>>b>>c; cout< Çıktı:
A, b ve c için değerleri girin: 10 4 6
1 arg: 15 ile matematik işlem çağrısı
2 arg: 20 ile mathoperation çağrısı
3 arg: 6 ile matematik işlem çağrısı
Kod örneğinde gösterildiği gibi, iki parametre için varsayılan değerler sağladığımız üç parametreyi alan bir 'matematik işlem' fonksiyonumuz var. Daha sonra ana işlevde, bu işlevi farklı bir argüman listesi ile üç kez çağırıyoruz.
İlk çağrı sadece bir argüman ile yapılır. Bu durumda, diğer iki bağımsız değişken varsayılan değerlere sahip olacaktır. Bir sonraki çağrı iki argüman ile yapılır. Bu durumda, üçüncü bağımsız değişkenin varsayılan bir değeri olacaktır. Üçüncü çağrı, üç argüman içerir. Bu durumda, üç argümanı da sağladığımız için, varsayılan değerler göz ardı edilecektir.
Varsayılan parametreleri sağlarken, her zaman en sağdaki parametreden başladığımızı unutmayın. Ayrıca, aradaki bir parametreyi atlayıp sonraki parametre için varsayılan bir değer sağlayamayız.
Şimdi, bir programcının bakış açısından önemli olan işlevle ilgili birkaç özel kavrama geçelim.
Const Parametreleri
Sabit parametreleri de 'const' anahtar sözcüğünü kullanarak işlevlere aktarabiliriz. Bir parametre veya referans sabit olduğunda, işlev içinde değiştirilemez.
Const olmayan bir biçimsel parametreye bir const parametresi geçiremeyeceğimizi unutmayın. Ancak const ve const olmayan parametreleri bir const biçimsel parametreye geçirebiliriz.
Benzer şekilde, const dönüş türüne de sahip olabiliriz. Bu durumda da dönüş türü değiştirilemez.
Const referansları kullanan bir kod Örneği görelim.
#include #include using namespace std; int addition(const int &a, const int &b){ return (a+b); } int main() { int a,b; cout<>a>>b; cout<<'a = '< Çıktı:
Değiştirilecek iki sayıyı girin: 22 33
a = 2 b = 33
Ekleme sonucu: 55
c ++ için tutulma nasıl kurulur
Yukarıdaki programda, const biçimsel parametrelerimiz var. Gerçek parametrelerin, başarıyla geçirdiğimiz sıradan sabit olmayan değişkenler olduğuna dikkat edin. Biçimsel parametreler sabit olduğundan, bunları işlev içinde değiştiremeyiz. Bu yüzden sadece toplama işlemini yapıyoruz ve değeri döndürüyoruz.
Fonksiyonun içindeki a veya b değerlerini değiştirmeye çalışırsak, derleyici bir hata verecektir.
Satır İçi İşlevler
Bir işlev çağrısı yapmak için, dahili olarak, denetimi işleve geçirmeden önce programın durumunu bir yığın üzerinde depolayan bir derleyiciyi içerdiğini biliyoruz.
İşlev geri döndüğünde, derleyicinin program durumunu geri alması ve kaldığı yerden devam etmesi gerekir. Bu bir ek yük oluşturuyor. Bu nedenle, C ++ 'da birkaç ifadeden oluşan bir işleve sahip olduğumuzda, satır içi olarak genişlemesine izin veren bir tesis vardır. Bu, bir işlevi satır içi yaparak yapılır.
Dolayısıyla, satır içi işlevler, çalışma zamanında genişleyen işlevlerdir ve işlevi çağırma ve yığın değişikliklerini yapma çabalarını azaltır. Ancak bir işlevi satır içi olarak yapsak bile, derleyici çalışma zamanında genişletileceğini garanti etmez. Diğer bir deyişle, fonksiyonun satır içi olup olmaması tamamen derleyiciye bağlıdır.
Bazı derleyiciler daha küçük işlevleri algılar ve satır içi olarak bildirilmemiş olsalar bile bunları satır içi olarak genişletir.
Aşağıda bir Satır İçi İşlev Örneği verilmiştir.
inline int addition(const int &a,const int &b){ return (a+b); }
Yukarıda gösterildiği gibi, bir işlevi satır içi yapmak için işlev tanımından önce 'satır içi' anahtar kelimesini kullanıyoruz.
Fonksiyonlarda Yapıları Kullanma
Sıradan değişkenleri parametre olarak ilettiğimiz benzer bir şekilde işlev görmeleri için yapı değişkenlerini parametre olarak geçirebiliriz.
Bu, aşağıdaki Örnekte gösterilmektedir.
#include #include using namespace std; struct PersonInfo { int age; char name(50); double salary; }; void printStructInfo(PersonInfo p) { cout<<'PersonInfo Structure:'; cout<<'
Age:'< p.age; cout <> p.salary; printStructInfo(p); }
Çıktı:
İsim girin: Vedang
Yaş girin: 22
Maaş girin: 45000.00
PersonInfo Yapısı:
Yaş: 22
İsim: Vedang
Maaş: 45000
Yukarıdaki programda gösterildiği gibi, bir yapıyı diğer değişkenlerle benzer şekilde işlev görmesi için geçiriyoruz. Yapı üyeleri için değerleri standart girdiden okuruz ve daha sonra yapıyı gösteren bir işleve bir yapı geçiririz.
Sonuç
Bu tamamen C ++ 'daki fonksiyonların temelleriyle ilgiliydi.
Gelecek eğitimlerimizde C ++ 'daki statik fonksiyonlar hakkında daha fazla şey keşfedeceğiz.
=> Tam C ++ ÜCRETSİZ Eğitim Serisini Buradan Kontrol Edin.
Önerilen Kaynaklar
- Python İşlevleri
- Örneklerle C ++ 'da Tarih ve Saat İşlevleri
- Parametreli ve Dönüşlü Unix Shell Komut Dosyası İşlevleri
- Örneklerle Python DateTime Eğitimi
- VuGen Komut Dosyalarında Örneklerle Kullanılan Önemli LoadRunner İşlevleri
- Python Dizesi İşlevleri
- Uygulamalı Örneklerle Python Ana İşlev Eğitimi
- C ++ 'da Arkadaş İşlevleri