Merhaba, hoş geldiniz.
Bu konuşmada, şu konulardan bahsetmek istiyorum fonksiyonlardan veri döndürme hakkında.
Bu noktaya kadar, biz ne biliyoruz Bir fonksiyonun neden yararlı olduğunu biliriz, fonksiyonları
nasıl tanımlayacağımızı biliriz. fonksiyonlara nasıl veri aktarılacağını bilir.
Şimdi de nasıl yapacağımız hakkında konuşmak istiyoruz. fonksiyonlardan veri döndürebilir,
bu da çok kullanışlıdır.
Önceki örneğimizde, ne zaman iki sayıyı çarptığında, bir
çarpma işlevi terminaldeki hesaplama.
Hatırlasana, şu vardı. printf deyimi var.
Ayrıca, bir örneğimiz vardı. daha önce sadece basit bir işlevdi.
Sadece veri çıktısı aldık fonksiyonun içinde.
İyi olmak istedik. çünkü aslında
birden fazla şey yapıyor.
Aslında çıktısını aldı. veri döndürüldü ve
ana işlevde veri yazdırıldı.
Her zaman bir telefona sahip olmak istemeyebilirsiniz. hesaplamalarınızın görüntülendiği sonuçlar.
İşlev daha fazla hale gelir esnek, daha genel ve bu da kullanılmasına
olanak tanır veri döndürebilirseniz daha fazla.
Böylece fonksiyonlar veri döndürebilir c'de özel sözdizimi kullanarak.
Buna aşina olmalıyız birazcık çünkü en baştaki
ana işlevimizi hatırlayın Sonunda birçok örnekte oldukça fazla veri
döndürüyoruz.
Yani buna biraz maruz kaldık.
Biz sadece gerçekten ne anlama geldiğini anladım.
Bir kez daha bakalım bir fonksiyonun genel formu.
Unutmayın, bu fonksiyon başlığı.
Şöyle bir dönüş tipimiz vardı ilk tanımlanan kelime.
Sonra bir isim bulduk ve sonra parametreleri parantez içinde virgüllerle
ayırmıştık.
Biz zaten biliyoruz adı ve parametreler.
Bu ilk şey geri dönüş türüdür.
Dönüş türü şunları belirtir fonksiyon tarafından döndürülen
değerin veri türü.
Fonksiyonlar her türlü veriyi döndürebilir.
Sadece derleyiciye şunu bildirmeniz gerekir ne tür bir veri döndürdüğünüz.
Bir int, bir float, bir double ne olursa olsun, bunu işlev başlığınızda
belirtmeniz gerekir.
Dönüş türü.
Burada gördüğümüz dönüş türü, ve bir işlev tarafından döndürülecek değer
türünü belirtebilirsiniz c'de yasal bir tür olduğu sürece.
Başlıca olanlardan bahsettim, double, float ve benzeri.
Ama aynı zamanda geri dönebilirsiniz numaralandırmalar ve işaretçiler.
İşaretçilerden bahsetmedik ama İşaretçileri geri döndürebildiğinizde
çok ama çok esnek hale gelir.
Dönüş türü şunları yapabilir türünden de kaçınılmalıdır.
Bu anahtar kelimenin geçersiz olduğunu sık sık görürsünüz.
Şimdi bunun ne anlama geldiğini anlıyoruz.
Geçersiz, hiçbir veri olmadığı anlamına gelir iade edilecektir.
Eğer "void "den önce "void" görürseniz fonksiyonun adı, herhangi bir veri
döndürmüyorsunuz.
Parametrelerin içinde void görürseniz listesinde herhangi bir veri iletmiyorsunuz.
Void sadece genel bir anahtar kelimedir. dönüş türleri ve parametreler için void kullanabileceğinizi de fark edersiniz
bir işaretçi olarak da kullanılabilir, ancak bu konuya ileride
değineceğiz.
Ancak boşluk, hiçbir şey söylememenin bir yoludur.
Ve dahil etmenizin nedeni hiçbir şey eklememenin aksine geçersizdir
çünkü programı daha okunabilir hale getirir.
Aslında verileri bir fonksiyonuna sahipseniz ve aktarılan
hiçbir veriniz yoksa sadece boş parantezler olabilir.
Okuması kolay eğer Orada boşluk var.
Geri dönüş türü ile aynıdır, ancak dönüş türünün void olması gerekir.
Sadece boş olmasına izin veremezsin.
Geçersiz, veri olmadığı anlamına gelir iade edilecek.
Dönüş ifadesi.
Nasıl yapabileceğiniz hakkında konuştuk hangi verilerin döndürüleceğini belirler, ancak
nasıl aslında verileri döndürürsünüz.
Fonksiyonun gövdesi içinde ne iade edeceğinizi söyleyebileceğiniz bir beyanınızın
olması gerekir.
Çünkü unutmayın ki fonksiyonu çok fazla veriye sahip olabilir.
Yerel değişkenlere sahip olabilir fonksiyonun belirli bir hesaplama yapıyor olabileceğini
bildiğiniz herhangi bir şey var mı? belki birden fazla hesaplama yapıyorsunuz, ne döndürmek
istiyorsunuz.
Neyse ki şu açıklama var return anahtar sözcüğü ile.
Geri dönüşü sağlarsanız veya ifadeden sonra değişken adı yoksa,
bu sadece fonksiyondan çıkmak.
Bir döngüdeki molaya benzer.
Sadece geri dönüyorsun. fonksiyondan.
Ve bunu şu şekilde sağlayabilirsiniz void olarak tanımlanan işlevler.
Bu, ne zaman fonksiyondan çıkıyorsunuz.
Gerçekten sadece dönüşü fonksiyonun alt kısmında tek
bir noktada toplar.
Buna sonra geleceğiz, ama sen bir fonksiyonun herhangi bir yerinde bulunamaz.
Eğer herhangi bir yerde görürseniz bir fonksiyon, bu fonksiyonun dışına
atladığınız anlamına gelir.
Sahip olmanın iyi olmasının nedeni en altta olması, fonksiyondan ne zaman çıktığınızı
çok açık bir şekilde gösterir.
Birden fazla iadeniz varsa fonksiyonunuz boyunca veri döndürüyor olsanız
bile, bu Geri döndüğünüzde bunu söylemek zor.
Bu yüzden benim yapmaktan hoşlandığım şey işlevleri değişkenler oluşturur ve altta
yalnızca bir kez döner.
Eğer bir şeyi iade etmem gerekirse bir işlevde veya bir işlevdeki belirli bir if deyiminde veya değişkeni
ayarlayacağım ve ardından en altta geri döndüreceğim.
Yani eğer geri dönüşünüz varsa ve sonra hiçbir
şey yoksa, bu sadece işlevinin döndürdüğü veri yoktur.
Bu gerçekten çok fazla kullanılmıyor.
Sadece boşlukta kullanırsın işlevi, bir değer döndürmez.
Daha genel bir form olan return deyimi bir değişkeni
veya ifadeyi döndürür.
X artı y veya x döndürme.
İade beyanının bu formunda işlev başlığında belirtilen dönüş türüyle birlikte
kullanılmalıdır.
Eğer bir int döndürüyorsanız, döndürdüğünüz değişken veya ifade ne
olursa olsun bir int olmalıdır.
Bir int olarak değerlendirilmelidir, eğer bir int döndürüyorsanız.
Şimdi, eğer bir duble çeviriyorsan, değerinin iki katına çıkması gerekir.
Unutmayın, çok sayıda döndürülen farklı veri türleri.
Döndürülen değer 'nin çağıran programa aktarılmasıyla
ortaya çıkan değerdir. ifadesi bu şekilde değerlendirilir.
Eğer x artı y varsa, geri dönüyor bu ifadenin sonucudur ve bu ifade ile aynı türde
olmalıdır. belirttiğim gibi işlev bildirimi.
İfadeleri olan bir fonksiyon fonksiyon gövdesinde
bulunan ancak bir değer döndürmeyen dönüş türünün void olması gerekir.
Buna sahip olmamanız mümkün değil.
Eğer buna sahip değilseniz ve herhangi bir veri döndürmüyorsa,
bir hata mesajı alırsınız.
Programı derlediğinizde ve void dönüş tipine sahip bir fonksiyon
içeriyor. bir değer derleyici hatası döndürür.
Void, geri dönüş verisi olmadığı anlamına gelir, don bir değişken bir ifade döndürür.
Eğer bir fonksiyon void değilse dönüş türüne sahipse
ve geçerli bir dönüş türüne sahipse, bir 'den farklı bir tür döndürmeye
çalışırsa hata mesajı ya da sonrasında hiçbir şey olmadan sadece
geri dönmüşlerse.
Bu yüzden buna dikkat edin.
Bu anahtar kelimeler işlevsel beyan önemlidir.
Uygulamayı doğrudan etkiler ve derlemenin size eğer bir hata yaparsanız ve doğru veriyi döndürmezseniz
veya herhangi bir veri döndürmezseniz
veya veri döndürmemeniz gerekirken veri döndürürseniz.
İfade bir değerle sonuçlanırsa işlevdeki dönüş türünden farklı
bir türde olan başlığı varsa, c bunu dönüştürmeye çalışacaktır.
Derleyici şunları deneyecektir Eğer yapabilirse onu dönüştürmek için.
Örneğin, eğer geri dönüyorsanız bir float ve ifadeniz iki ints ile I artı
x ise, bu sadece bir float'a dönüştürmek için.
Eğer bir int döndürüyorsanız ve float hesaplaması
yapan bir ifadeniz varsa, bu onu bir it'ye dönüştürecektir.
Bu durumda veri kaybedeceksiniz. ama dönüşüm yapacaktır.
Bu her zaman mümkün değildir dönüşüm yapmak için.
Bunun mümkün olmadığı durumlarda, derleyici tarafından üretilen
bir hata alacaksınız.
Eğer bir int döndürmeye çalışıyorsanız bir dize
döndürmeniz gerektiğinde veya Bir enum döndürmeniz
gerektiğinde, onu döndürmek için derleyiciyi şikayet edecek.
Ayrıca birden fazla return deyimi bir fonksiyon, bundan
kısaca bahsetmiştim ve neden yapmak istemediğini.
Ama bunu yapabilirsin.
Birden fazla iadeniz olabilir fonksiyon boyunca.
Sadece kodu daha zor hale getirir takip edin çünkü her
yerde fonksiyondan atlıyorsunuz.
Geri döndüğünüzde ve birden fazla geri dönüş değerine
sahip bir fonksiyonunuz varsa tekrar emin olun bir
şey döndüren, bir ifadeniz veya bir değeriniz var ya da dönüştürülebilir.
Şimdi konuştuk veri aktarma ve veri döndürme, bir fonksiyonun
nasıl çağrılacağını biliyoruz, Ama çağrı hakkında birkaç
şey daha söylemek istiyorum.
Bir fonksiyonu çağırmak için sadece fonksiyon adı ve ardından ilettiğiniz
argümanlar parantezler arasında, bunu biliyoruz, şu ana kadar biliyoruz
ama ben resmi olarak belirtmek isterseniz, bir fonksiyonu bu şekilde çağırabilirsiniz.
Fonksiyonu çağırdığınızda parantezler arasında
belirttiğiniz bağımsız değişkenlerin değerleri fonksiyon içindeki
parametrelere atanacaktır.
Parametreler temsilidir bir veri türüne sahip değişkenler.
Daha sonra bu değişkeni kullanabilirsiniz fonksiyon gövdesindeki herhangi bir taraf.
İşlevden çıkıldığında veya işlev yürütüldüğünde belirli kodlarda, bahsettiğim gibi argüman olarak verilen değerleri
kullanacaktır.
Belirttiğiniz argümanlar bir fonksiyonu çağırdığında tip numarası ve sıra
bakımından aynı olmalıdır. işlev başlığındaki parametreler.
Düzen de önemli. Bunu vurgulayın, ancak int x double y diyorsa,
önce şunu yapmanız gerekir önce int'i sonra double'ı geçirin.
Double ve int içinde geçemezsiniz.
Emir çok ama çok kesin.
Bu yüzden verileri şu şekilde ilettiğinizden emin olun fonksiyonuyla
aynı şekilde çağırdığınızda bir argüman parametre listesindeki fonksiyon başlığında
bildirilir ve Doğru tipler de öyle.
Bir işlevi çağırmak ve döndürülen verilerin atanması.
Eğer bir fonksiyon veri döndürüyorsa işlevi bu verileri yalnızca eşittir
işlecini kullanarak atayabilir ve ya da isterseniz yerel bir değişkende saklayabilirsiniz.
Bir ifade ile de çalışacaktır.
Yani x artı döndür diyebilirsiniz y, return x diyebilirsiniz, return a constant
diyebilirsiniz.
Buradaki örnek sizden sonra döndürülen verileri atamak istediğinizde
çağrıyı çağırın.
Yani int x eşittir benim işlevi çağrıldığında, bu işlevin döndürdüğü
şey x'e atanacaktır.
Ve eğer fonksiyon çağrım x artı y, x artı y'nin sonucu x'e
atanacaktır.
Böylece şu verileri atayabilirsiniz üzerinde bir değişkene
sahip olarak bir işlev çağrısından döndürülen eşittirin sol tarafı
ve fonksiyon çağrısı eşitliklerin sağ tarafı.
Çağıran fonksiyonun çağrılan bir fonksiyondan dönen değeri
tanımak veya işlemek için.
Sahip olmanıza gerek yok Bu görev orada.
Eğer bir fonksiyon veri döndürüyorsa ve Bu verileri önemsemiyorsanız, eşitliklere sahip
olmanıza hiç gerek yoktur, sadece fonksiyonu çağırabilirsiniz.
Bu gerçekten mantıklı olmazdı çünkü Eğer veri döndürüyorsa, bu muhtemelen
şunlara bakmanız gerektiği anlamına gelir ama bunu yapmak zorunda değilsin.
Derleyici şunları yapmayacaktır sadece bir fonksiyon çağırırsanız
ve verileri işlemezseniz şikayet eder.
Nasıl yapacağınız size kalmış. işlev çağrılarından döndürülen verileri
kullanmak isteyebilirsiniz.
İşte bir çağırma örneği bir fonksiyon ve ayrıca bir fonksiyondan
veri döndürme.
Bu örnekte, iki sayıyı çarpın.
Bu tıpkı bizim verdiğimiz örnekteki gibiydi. vardı, ancak önceki örnek
herhangi bir veri döndürmedi.
Önceki örnekte çıktı görüntülenmişti.
Bu örnekte, biz herhangi bir çıktı göstermiyor.
Verileri geri gönderiyoruz ve sonra çıktıyı ana işlevde
görüntülüyoruz.
Burada iki sayıyı çarpıyoruz parametre olarak iki tamsayı alır.
Bu iki tamsayıyı çarpıyoruz.
Ve sonra bunu yazdırmak yerine miktarı veya değeri, return anahtar sözcüğünü kullanıyoruz
ve sonra result adında bir değişken belirtiyor ve ardından noktalı virgülle
sonlandırıyoruz.
Bu dönüş anahtar kelimesini gördüğünüzde fonksiyon gövdesi içinde, bu verileri
döndürüyorsunuz.
Ve unutmayın, şunları yapabilirsiniz birden fazla yerde var.
Ama sadece bir tane iade edebilirsiniz değerini döndürdüğünüzde, birden fazla değer döndüremezsiniz.
Yani eğer return anahtar sözcüğünü birden fazla yerde, bir if deyimi
veya döngü içinde olması gerekir çünkü tam o anda atlıyorsun.
Eğer bir dönüşünüz varsa ve ardından başka bir dönüş yaparsanız,
size bir hata verecektir çünkü her iki durumda da iki getirisi vardır.
Her zaman geri dönüyorsun Sonuçlar, bunu yapamazsınız.
Ancak dönüş anahtar kelimesi önemlidir.
Bir değişken döndürüyorsunuz.
Ve sonra ana sayfada görüyorsunuz fonksiyonunda döndürülen veriler
result adında başka bir yerel değişken.
Kullandığımızı fark edeceksiniz aynı isimler burada.
Bunun işlevle ilgisi var Bir sonraki derste bahsedeceğimiz
kapsam, yerel değişkenlere karşı global değişkenler.
Dikkat etmeniz gereken tek şey Bu derste, bu fonksiyonun
iki sayı veri döndürüyor.
Nasıl iade edersen, öyle iade edersin return anahtar sözcüğünü ve ardından
ifadenin değişkenini kullanarak.
Ayrıca, çarpma işleminin iki sayı, işlev başlığının üst kısmında
dönüş türünü belirtir.
Bir int döndürüyor.
Bu yüzden bir int döndürmeliyiz.
Ayrıca fark etmişsinizdir ki ana fonksiyondaki
veriyi int olarak atıyoruz.
Bunları atamak çok kolay biz sadece eşittir operatörüne sahiptir.
Eğer verileri önemsemiyor olsaydık sadece iki sayıyı çarp diyebilir
ve sonra onunla hiçbir şey yapamaz ama.
Dönen verileri aldıktan sonra fonksiyonundan yazdırırız, daha sonra printf
fonksiyonunu kullanarak yazdırırız.
Bu, işlevi daha fazla veri aldığı için uyumludur.
Aslında görüntülemiyoruz fonksiyonun içindeki sonuçları.
İstemediğimiz zamanlar vardır. sonuçları görüntülemek
için, sadece iki sayıyı çarpmak istiyoruz ve sonra ürünü bölmek isteyebiliriz.
Aktarılan verilerle ilgili esneklik ve verilerin geri gönderilmesi büyük bir olaydır.
Bu basit bir örnek.
Sen maruz kalacaksın Bir sonraki yarışmamızda bu konuya daha fazla değineceğiz.