Merhaba, tekrar hoş geldiniz.
Bu konuşmada, şu konulardan bahsetmek istiyorum C'de fonksiyon tanımlama hakkında.
Bir fonksiyonun tanımlanması.
İşlevlerin önemini biliyoruz.
Avantajların farkındayız.
Kullanmak isteyeceğimiz programlarımızdaki işlevler.
Yani bir profesyonel fonksiyon oluşturduğunuzda c'de, işlev başlığını ilk satır
olarak belirtmeniz gerekir fonksiyon tanımının bir parçasıdır.
Tanımlama hakkında konuşacağız ve ayrıca bir fonksiyonun
uygulanması hakkında konuşacağız.
Bir fonksiyonun uygulanması sadece problem
çözme, sadece normal c kodu.
Bir fonksiyon tanımlamak şöyle demektir fonksiyonun var olduğunu gösterir.
Yani bir fonksiyon tanımladığınızda Yapacağınız ilk şey,
bu işlev başlığına sahip olmak ve ardından fonksiyon için blok kodunu başlatan bir
küme parantezi ile.
Yani bu tıpkı bir if deyiminde küme parantezi, tıpkı
küme parantezi kullandığınızda olduğu gibi fonksiyonlar için küme parantezinin gerekli olması
dışında, bir for döngüsü içinde.
Bunu ortadan kaldırmak mümkün değil.
Ve bu her zaman bir başlangıç anlamına gelir. o işlev için kodun.
Başlangıç ile bitiş arasındaki her şey ve sondaki küme parantezi fonksiyonun
kodudur.
Gittiğin yer görevi uygulamak için.
Yani parantezlerin arasında fonksiyon gövdesi olarak adlandırılır ve fonksiyonun ilk
satırı fonksiyon başlığı olarak adlandırılır.
İşlev başlığı şunları tanımlar fonksiyonun adı, fonksiyonun
parametreleri.
Konuşacağımız konu parametrelerini ve argümanlarını ayrıntılı olarak açıklar.
Ama şu anda, sen sadece parametreler diye bir şey olduğunu
bilmeniz gerekir.
Ve parametre şunları belirtecek değerlerin sayısı ve türleri verileri,
parametreleri nasıl aktarabileceğiniz veri aktarımı ile ilgilidir.
Değer için tür fonksiyonun döndürdüğü.
Fonksiyonlardan bahsetmiştik veri döndürebiliriz.
Yani bu fonksiyon başlığında, fonksiyonun adını,
fonksiyonun kullanacağı veriyi alabileceğiniz veriler fonksiyon tarafından kabul edilebilir
ve fonksiyon tarafından döndürülür.
Şu anda odaklanmayacağız. aktarılabilecek veriler veya döndürülen veriler üzerinde,
biz sadece basit bir fonksiyon oluşturma hakkında konuşun.
Fonksiyon gövdesi şunları içerir sadece normal kod, ve bu
kod siz işlevi çağırın veya çağırın.
Ve fonksiyon gövdesinin kendisi argüman olarak aktarılan tüm değerlere
erişebilecektir.
Yani şu adrese aktardığınız veriler kullanıyorsanız, bu verileri işlevin
gövdesi içinde kullanabilirsiniz.
Neye benziyor bu, işlev başlığı.
Fonksiyon başlığı ilk kelimeye sahiptir.
Ve fonksiyon başlığı bir olacak veri türünü temsil eden anahtar
sözcük fonksiyondan döndürülür.
Oradaki bir sonraki anahtar kelime fonksiyonun adı.
Ve sonra bir sol paranteziniz var ve sonra virgüllerle ayrılmış parametreleriniz
var, bunlar veri olacak fonksiyona aktarılır.
Ve sonra o var fonksiyon başlığını sonlandırmak
için sağ parantezler.
Sonra küme parantezi var fonksiyon uygulamasının başlangıcını
belirtir.
Ve sende herhangi bir sayıda bir görevi yapmak için ifadeler.
Dediğim gibi, istiyorsun işlevleriniz küçük olsun.
Uyumlu olmak istiyorlar.
Onlar olmak istemiyorlar her yerde.
Onlar tek bir odaklanın, belirli bir şey yapın.
Dediğim gibi, eğer bir fonksiyonunuz varsa girdi alır, girdiyi okur.
Çıktı vermiyor.
Herhangi bir sıralama yapmıyor ya da başka bir şey yapmaz.
Adında bir fonksiyonunuz varsa sort, verileri sıralar.
Girdi almıyor.
İşlevlerin olması gerekir uyumlu ve küçük.
Bunları ayıklamak çok daha kolay işlevleri, bu yüzden onları uyumlu hale getirin.
Ve sonra bu hakka sahipsin küme parantezi, fonksiyon
uygulamasını sonlandırır.
Bu bir işlevdir C'deki gibi görünüyor.
Şimdi fonksiyona odaklanalım adları, parametreler ve dönüş türleri
hakkında daha sonra konuşacağız.
Fonksiyonun ilk satırı yine tanımı derleyiciye soldan sağa
doğru üç şey söyler bahsettiğim gibi, işlev hakkında.
Dönen değerin türü, işlevin adı ve ardından
aldığı veriler.
Bu sadece özetlemek için, Bu önemli.
İşlev adlarına gelince, şunları istersiniz anlamlı fonksiyon isimleri seçmek için.
Bu en az seçim yapmak kadar önemlidir. anlamlı değişken isimleri.
Büyük ölçüde etkiler Programın okunabilirliğini artırmak
için fonksiyonlara x veya y gibi isimler vermeyin.
Fonksiyonu temel alarak adlandırın Ne yapacağına dair.
Eğer iki tane ekliyorsa sayılar, isim ekle.
Eğer iki çıkarıyorsa sayılar, adını çıkarma koyun.
Bu örnekte, işte basit işlevimiz.
Boşluk için endişelenme, sadece isim konusunda endişelen.
Bir fonksiyonumuz var adlı yazdırma mesajı.
Ve sonra şu kıvrımlı parantezi görüyoruz fonksiyonun
başlangıcını ifade eder ve ardından bazı uygulamalarımız var.
Ve bu uygulama bir dize, bir metin görüntülemekten
başka bir şey yapmıyor.
Ve sonra o var sağ kıvrımlı ayraç.
Yani bu çok basit bir işlevdir fazla bir şey yapmaz, çıktıyı görüntüler.
Bu örnekte yazdırma için mesajında, yazdırma mesajının ilk satırı
derleyiciye şunları söyler fonksiyonun hiçbir değer döndürmediğini gösterir.
Bu anahtar kelime boşluğu.
Yine, odaklanmanıza gerek yok ama yaptığı şey bu.
Sırada isim var.
Ve sonra isimden sonra argümanlara parametre adı verilir.
Ve yine void anahtar kelimesini kullanıyoruz eğer herhangi bir veri iletmiyorsak.
İşlevdeki ifade gövde olmayabilir, ancak parantezler her
zaman mevcut olmalıdır.
Yani aslında hiçbir şeye sahip olmanıza gerek yok. uygulamasıdır, ancak bir fonksiyonun orada olması
için parantezlere sahip olmanız gerekir.
İçinde herhangi bir ifade yoksa bir fonksiyonun gövdesinde,
dönüş tipi void olmalıdır.
Ve yine, buna daha sonra odaklanacağız ve fonksiyon hiçbir şey yapmayacaktır
çünkü uygulamanız yoktur.
ile bir fonksiyon tanımlarsanız boş bir gövde olsa bile yine de yararlı
olabilir. hiçbir şey başaramıyoruz.
Bunu genellikle Çok büyük bir programın test aşaması.
Ve bu size ne yapmanızı sağlar programı yalnızca belirli işlevlerle çalıştırabilmenizdir.
bir şeyler yapmak, daha iyi test etmenize yardımcı olur, hataları izole
etmenize yardımcı olur.
Uygulama bile yaptırabilirsiniz fonksiyon gövdesindeki
testte ancak sadece yorumlayın.
Ve sonra şunu yapabilirsiniz böl ve fethet yaklaşımı.
Daha fazla test ettikçe ve Daha sonra fonksiyon gövdelerine uygulama koymaya
başlayabilirsiniz.
Bu bir adım adım çalışma süreci.
Sürekli küçük gruplar halinde çalışıyorsunuz. parçalara ayırmak, kod eklemek, bu kodu test etmek ve sonra
bir sonrakine geçmek adımı ve sonunda tüm uygulama tamamlanacak
ve tüm fonksiyonlar uygulanacaktır.
Bu nedenle, aşağıdakiler için bir kullanım durumu vardır kodu olmayan veya
yorumlanmamış bir işlev gövdesine sahip olmak.
İsimlendirme fonksiyonları.
Bir fonksiyonun adı herhangi bir yasal isim olabilir.
Tıpkı senin gibi Bir değişkeni adlandırırken ayrılmış
sözcükler kullanamazsınız.
Yani bunlar anahtar kelimeler veri türlerini temsil ettikleri
için enter doubles gibi diller.
Sizeof bir operatördür.
Yapabilmek istiyorsun ya da kullanıp kullanmayacağımı.
Ayrıca iki tane aynı ada sahip işlevler.
Ve bu aynı zamanda fonksiyon aşırı yüklemesi gibi bir şey.
Ama iki fonksiyona sahip olamazsınız aynı isimde, aşırı yükleme c'de
desteklenmez.
Son olarak, aynı standart kütüphane işlevinde bulunan bir işlev
olarak adlandırın.
Teknik olarak, eğer dahil etmezseniz o kütüphane başlık dosyasını dahil ederseniz, bunu
elde edebilirsiniz.
Ama eğer gerçekten kullanmak isterseniz bu kütüphane işlevi,
derleyici şikayet edecek ve aynı ada sahip iki işlev.
Bu yüzden fonksiyonlarınıza standart kütüphane fonksiyonları ile aynıdır.
Yasal bir isim aşağıdakilerle aynıdır bir değişken, başlamak
için bir dizi harf ve rakam.
İlk karakter bir harf olmalıdır ve harf bir alt çizgi olabilir.
Fonksiyonlara başlayamazsın sayılarla veya herhangi bir garip
karakterle.
Seçeceğiniz isim şu şekilde olmalıdır anlamlı ve işlevin ne yaptığıyla
ilgili olmalıdır.
Bunu zaten söyledim, tekrar ediyorum vurgulamak için söylüyorum, anlamlı
isimler çok önemlidir.
Sık sık fonksiyon tanımlayacaksınız adları ve değişken adları da
birden fazla sözcükten oluşur.
Şimdi biraz konuşmak istiyorum. sadece kodlama stili hakkında biraz.
Muhtemelen fark etmişsinizdir. camel case kullandığım kodumu yazdım.
Üç farklı yol vardır değişkenlerinizin ve fonksiyonlarınızın isimlerini
yazabilirsiniz.
Kelimelerin her birini ayırabilirsiniz bir işlev adında altı çizili
bir karakter varsa, bu bir yaklaşımdır.
İlk harfi büyük yazabilirsiniz veya ilk kelimeden sonra kelimeleri
büyük harfle yazabilirsiniz ve Hala birlikte tıngırdatıyorsun.
Unutmayın, yapamazsınız aralarında boşluklar var.
Bu sadece aşağıdakiler için bir yaklaşımdır isimlendirme
çünkü bazı kurallara uymanız önemlidir Böylece okunması daha kolay olur.
Sadece uzun bir konuşma beş farklı kelime ile.
Yani eğer şöyle bir fonksiyonunuz varsa geçerli girdi olup olmadığını kontrol etmek için, bunların tümünün
küçük harf olmasını istemezsiniz.
Okumak gerçekten zor olurdu ve kelimelerin nerede olduğunu tespit etmek.
Yani deve kılıfı birçok kelimede kelimelerin nerede olduğunu belirlemek
ve görmek kolaydır o fonksiyonun ne yaptığını.
Alt çizgi başka bir kelimeleri ayırmanın bir yolu.
Ve ilk harfini büyük yazarak her kelime ayırmanın başka bir yoludur.
Şunları yapabilmek önemlidir daha okunabilir hale getirmek için bir işlevdeki
kelimeleri ayırın.
Genelde deve kılıfı kullanırım.
Ve bunlardan birini kullandığınızda konvansiyonlar, her şey için kullanmak istiyorsunuz,
her şey için kullanmak istiyorsunuz değişkenleri adlandırmak için kullanıyorsanız, işlev
adlarınız için de kullanmak istersiniz.
Genellikle şunu takip edersiniz ortak kodlama kuralı, işleri daha okunabilir
hale getirir.
Fonksiyon prototipleri.
Bir fonksiyon tanımlamaktan bahsetmiştik.
Bir fonksiyon bildirmeye ne dersiniz?
Niye böyle bir şeye ihtiyaç duyuyorsun diyebilirsiniz. bir fonksiyonu tanımladığınızda,
onu tanımlamış olmuyor musunuz?
Ama aynı zamanda bir kavram var bir işlev bildirme.
Ve eğer istiyorsanız bu gerekli işlevi uygulanmadan, tanımlanmadan
önce kullanmak için.
Yani bir fonksiyon prototipi bir işlevi tanımlayan deyim.
Derleyiciye esasen şunları söyler fonksiyonun tüm detayları.
Adını, dönüş türünü ve parametrelerinin her birinin türünü belirtir.
Yani bir fonksiyon başlığına benziyor.
Tüm harici kontrolleri sağlar. fonksiyonun özellikleri,
esas olarak muhtemelen duymuşsunuzdur imza terimi, fonksiyon
imzası budur.
Döndürülen verileri belirtiyor, aldığı veriler
ve fonksiyonun kendisi hakkında her şey.
Bir fonksiyon prototipi yazmak istiyorsunuz fonksiyon başlığını
yazdığınız gibi, tek fark sonuna noktalı virgül koyarsın.
Ve bu sadece fonksiyonu bildirmek.
Bu, işlevin var olduğunu söylemektir.
Bir işlev prototipi şunları sağlar derleyicinin her seferinde uygun
talimatları oluşturması için fonksiyonu çağırdığınız nokta.
Ayrıca, şu aygıtı kullandığınızı da kontrol eder her çağrıda doğru şekilde işlev görür.
İşlev sağlamanızın nedeni başlıkları, işlevi bir uyarı veya işlev
bildirimi uygulanmadan, bu yüzden gerçekten sadece Kodunuzun sırası
ve birazdan size bunun bir örneğini vereceğim.
Standart bir başlık eklediğinizde dosyasında, başlık
dosyası işlev prototipini ekler.
Fonksiyon prototipleri genellikle başlık dosyalarını birçok farklı kaynak dosyada yeniden
kullanmak istiyorsanız.
Eğer bunları sadece tek bir kaynak dosyasında
en üste koyabilirsiniz.
Ama printf kullandığımız için fonksiyonu birçok farklı kaynak
dosyada kullanılabilir, bu başlık işlevi başlıkta veya bu işlev bildiriminde
tanımlanacaktır başlıkta tanımlanacaktır.
Ve bu durumda, stdio. h.
Bu yüzden genellikle yalnızca o kaynak dosya o işlevi kullanıyorsa
kaynak dosyalar.
Aksi takdirde, onları bir birçok kaynak dosya tarafından
yeniden kullanılıyorsa başlık dosyası.
içindeki işlevlerden herhangi birine izin verir. nerede olduğuna bakılmaksızın tanımlanan
bu işlevlerden herhangi birini çağırmak için uygulamayı yerleştirdiniz.
Eğer uygulamayı yerleştirirseniz bir fonksiyonu çağırdıktan sonra, c şikayet
edecek ve şöyle diyecektir bunu bilmediğini.
Çünkü derlediğinizde, satır satır derliyorsunuz.
Beyanı şu adrese yerleştirirseniz en üstte, o zaman işlevi tanımlanmadan
önce çağırabilirsiniz, uygulanmadan önce.
Parametre adları aşağıdaki gibi olmak zorunda değildir fonksiyon tanımında kullanılanla aynıdır.
Farklı isimleriniz olabilir.
İsim dediğim zaman, bunlar verilerin tanımlayıcıları.
Adını değiştirebilirsiniz fonksiyon prototipindeki parametreler.
Hala aynı verilere sahip olmanız gerekiyor türleridir, ancak adlarını değiştirebilirsiniz.
Her zaman için iyi bir uygulamadır 'nizdeki tüm işlevler için işlev
bildirimlerini içerir. programını dosyanın en üstüne yerleştirin.
Programınızın daha tutarlı olmasını sağlar ve herhangi bir aşamada
oluşabilecek hataları önler. Eğer bu fonksiyonu uygulamadan önce
çağırmak isterseniz.
İşte bir örnek bazı fonksiyon prototipleri.
En üstte dosyamız var.
Ve sonra bazılarımız var beyan ettiğimiz fonksiyonlar,
ortalama, toplama ve veri alma.
Fark ettiniz mi? bir fonksiyon başlığı gibi.
Dönüş türüne sahiptir, fonksiyonda tanımlanan parametrelere
sahiptir, ancak sonunda noktalı virgül var.
Uygulama yok bu işlevler için.
Sadece derleyiciye söylüyorsun bu fonksiyon var ve bu
şekilde tanımlanıyor.
Bu sayede artık şunları yapabilirsiniz ana fonksiyonunuzda, ortalamayı
çağırabilir veya toplamı, veri almak için çağırabilirsiniz.
Ve gerçek uygulamalar onları aradığınız yerin altında olmalı.
Eğer fonksiyona sahip değilseniz Buradaki başlıklar,
onları ana sistemde çağırmaya çalıştığınızda, eğer ana rutinin altında tanımlanırsa, hatalar
veya uyarılar alırsınız.
Öyleyse bir göz atalım kod bloklarında.
Burada her zamanki ana rutinimiz var.
Şimdi diyelim ki bir fonksiyon oluşturmak veya bir fonksiyonu çağırmak istiyoruz.
Biz bir çağıracağız fonksiyonunun adı add olacak ve herhangi bir
parametre almayacak.
Bunu bizim satır 7'deki ana işlev.
Gidiyoruz. bunu 10. satırda uygulayın.
Void add diyeceğiz ve hiçbir şey yapmayacağız.
Boş tutacağız.
Bunu derlemeye gittiğimizde, ne Bu derleyicinin sadece bir uyarı verdiğini
fark edeceksiniz.
Add'in bir örtük beyan.
Bu uyarıdan kurtulabilirsiniz bir işlev bildirimi kullanarak.
Fonksiyonu bildirebilirsiniz Üstte temel olarak derleyiciye şunları yapacağınızı söylüyorsunuz
bir yerde kullanın, ancak uygulamanın nerede
olduğunu bilmiyorsunuz.
Yani yapabileceğiniz şey Buraya boş ekle diyelim ve noktalı
virgülü ekleyelim.
Şimdi bundan kurtulacak uyarı verir ve bazı derlemeler gerçekten
hata verir.
Şimdi derlediğimde uyarı ve hata yok.
Yani bir fonksiyon Bildirge öyle diyor.
Koymanıza izin verir fonksiyonu herhangi bir yerde.
Şimdi eğer fonksiyonunuz olmasaydı bildirimini en üstte tuttunuz ve yukarıdaki
uygulamayı çağırıyorsanız, o zaman da hatayı görmezsiniz çünkü derleyici işlevi
gerçekten çağırmaya çalışmadan önce işlev hakkında bilgi sahibi
olacaktır.
Eğer bunu inşa edersek, sen de hata olmadığını göreceğiz.
Şimdi, senin genellikle sadece iyi bir pratik olması için tüm işlevlerinizi
en üstte bildirmek isteyebilirsiniz ve bence bunu yapmanız gerekiyor.
Bunu yapmaya devam edin.
Ama eğer bundan kurtulursan alışkanlığınız varsa, işlevlerinizi
çağırmadan önce bildirmeniz gerekir veya işlev prototipleri
sağlamanız gerekir çünkü Programınızdaki uyarılar veya hatalar.
Bu şekilde bir işlevini ve işlev prototiplerini bu şekilde
kullanabilirsiniz.
Bir sonraki derste parametreler
hakkında konuşacağız.
Bir fonksiyona nasıl veri aktarabilirsiniz.
Teşekkür ederim.