Merhaba ve hoş geldiniz.
Yeni bir bölüm açıyoruz.
Bölümümüz fonksiyonlar üzerine kuruludur.
Bu yüzden biraz konuşacağız ilk olarak fonksiyonların temelleri.
Bir fonksiyon kendi kendine yeten bir Belirli bir görevi yerine
getirmek için tasarlanmış program kodu birimi, Bu üst düzey bir tanım.
İşlev temel olarak kod tekrarını azaltmanıza yardımcı
olan çağırabileceğiniz bir şey.
Ama yaptığı şey kodun kendi içinde
bağımsızdır ve sadece bazı görevleri vardır başaracak.
Sözdizimi kuralları Bir fonksiyonun yapısını ve nasıl
kullanılabileceğini tanımlar.
Yani hangi programlamaya bağlı olarak Kullandığınız dilde fonksiyonlar
farklı tanımlanmış olabilir.
c için, konuşacağız C için özel kurallar hakkında.
Çoğu programlama dili şunları destekler Bu fonksiyon kavramının avantajlarını size
anlatacağım. ve neden desteklendikleri.
c'deki bir fonksiyon Diğer programlama dillerindeki alt programlar
veya prosedürler.
Çoğu zaman şunları duyarsınız altprogramlar ve prosedürler, fonksiyon
ile aynı şeydir.
Kendi kendine çalışan birim çağırabileceğiniz bazı kodlar.
Bazı fonksiyonlar bir eylemin gerçekleşmesi için.
Bu yüzden birkaç tanesine aşinayız. bu noktaya kadar olan işlevler.
printf'i inceledik ekranınıza çıktı görüntüleyen
fonksiyon bir eylem, sizin için bir şey yapar.
Ve sonuç olarak biz de baktık klavyeden girdi alan
scanf işlevinde.
Yine, bir tür başka bir eylem yapar.
Ancak diğer işlevler aslında sadece bir programın kullanması
için bir değer bulabilir.
Örneğin dizeleri incelediğimizde ve karakter dizileri için fonksiyonlara
bakacağız. manipülasyon ve bir şeyleri değiştirme.
Özellikle bir fonksiyon var karıştırma uzunluğu olarak adlandırılır ve bir
programcıya belirli bir dizenin uzunluğudur.
Bir eylem gerçekleştirmez sadece size geri bilgi verir.
Yani fonksiyonlar gerçekleştirecek görevinizde başarmanız gereken göreve
bağlı olarak görevler program, ya bir eyleme
neden olacak ya da bir eylemi değiştirecektir. program değeri veya bir değer döndürür ya da size bazı durum bilgileri
verir.
Fonksiyonların avantajları.
Fonksiyonları kullanacağız çünkü bir sürü avantajı var.
Fonksiyonlar aşağıdakilere izin verir böl ve fethet stratejisi.
Yani eğer bir yere yazıp gidip orta büyüklükte bir program ya da
büyük bir program yazarsanız sürdürmek gerçekten çok zor olabilir.
Test etmek zor olacak, Tek bir büyük fonksiyonunuz varsa hata ayıklama ve hataları
bulup düzeltme.
Yani parçalara ayırmak ve bunu yapmak fethetme stratejisini bölmek
çok daha kolay hale getirecek Kodunuzdaki hataları bulun ve düzeltin.
Ve tek bir C programını hayal edebiliyor musunuz? Elimdeki tek şey ana işlevdi
ve içinde 5000 satır vardı.
Nasıl yapacağımıza dair hiçbir fikrimiz olmazdı. bu soruna saldırmak için.
Bu gerçekten çok kötü bir organizasyon.
Herhangi bir uyumunuz yok ve Bir sorunu çözmek için hemen oraya
dalıyorsunuz.
Bu yüzden fonksiyonları kullanacağız.
Böl ve fethet temelde şu anlama gelir görevlerin birkaç bağımsız alt göreve bölünebileceğini
gösterir.
Genel maliyeti azaltır kodun karmaşıklığı.
Ayrı fonksiyonlar oluşturabilirsiniz her bir alt görev için ve daha sonra bölmek için daha
fazla işlev bile oluşturabilirsiniz alt görevin daha küçük alt görevlere bölünmesi.
Bu ek dosyaları her oluşturduğunuzda işlevleri, karmaşıklığı azaltır.
Hedefiniz şu olmalı Bu fonksiyonları oluşturmak ve
böl ve fethet yöntemini kullanmak stratejisi, işlevlerinizi mümkün
olduğunca uyumlu hale getirmektir.
Bu da şu anlama geliyor. her fonksiyon sadece bir görev yapıyor, bir fonksiyonun 5 görev yapmasına
gerek yok farklı görevler veya 10 farklı görev.
Okuyan bir fonksiyon yazarsanız klavyeden giriş yapın, klavyeden giriş okumasını
sağlayın, klavyeden Bir dizeyi kontrol etmesini veya çıktı görüntülemesini ya da buna benzer
bir şey yapmasını sağlayın.
İşlevlerin küçük olması gerekir ve çok uyumlu olmaları gerekir.
Ama böl ve fethet stratejisi gerçekten güzel çünkü bu
karmaşıklığı azaltıyor.
Bir ana fonksiyona sahip olmak yerine 5000 satırlık bir kod ile çok sayıda fonksiyona
sahip olabilirsiniz. belirli görevleri yapıyorlar ve bunları çok hızlı bir
şekilde tespit edebilirsiniz.
Yani fonksiyonlar kod tekrarını azaltmak.
Ve çoğaltmayı azalttığınızda kod yazarken, test ederken size
zaman kazandıracaktır. ve bu kodda hata ayıklama.
Bu aynı zamanda kaynak kodun boyutu.
Ve neden fonksiyonlar Kodun tekrarlanması çünkü bunu yapmak
yerine bir göreviniz varsa tekrar tekrar görev yapmak ve aynı kodu tekrar
tekrar yazmak ve tekrar tekrar, bu görevi bir fonksiyona kapsüllersiniz
ve sadece fonksiyonu çağırırsınız ve fonksiyon bunu her seferinde sizin için
yapar, siz orada herhangi bir tekrarlama yok.
Belirli bir görevi yapmanız gerekiyorsa bir programda
birkaç kez kullanıldığında, yalnızca uygun bir bir kez işlev görür,
tıpkı bahsettiğim gibi. Gerek yok. Bu kodu birden çok kez yaz.
Böylece bir program gerektiğinde bu işlevi yerine getirir.
Ve ayrıca aynı şeyi kullanabilirsiniz farklı programlarda işlev görür ve
bu da bir kütüphane oluşturur.
Biz de bunu yapıyorduk, printf fonksiyonunu
kullanıyorduk, ki bu fonksiyon standart giriş çıkış kütüphanesi.
Ve bu sadece bir kez yazılır ve onu tekrar tekrar çağırıyoruz.
Eğer bu fonksiyon olmasaydı, biz bu fonksiyonun
uygulamasını almak ve onu bizim ve tekrarlamaya devam et.
Böylece fonksiyonlar çok tasarruf edebilir
ve kaynak kodunuzu azaltabilirler ve siz de tekrar tekrar kullanın.
Yani aynı zamanda bir yazılım yeniden kullanım tekniği.
Ayrıca okunabilirliğe de yardımcı olur.
Programınızı modüle ettiğinizde için bu ayrı fonksiyonları
oluşturduğunuzda yaptığınız şey budur. belirli görevleri yerine getirdiğinde, program
çok daha iyi organize olur.
Bahsettiğim gibi, eğer bir ana rutini, bir ana fonksiyon ve içinde tonlarca
kod varsa, bu takip etmek, 5 fonksiyon çağıran bir ana rutinden çok
daha zor olacaktır. Bu işlevler belirli görevleri yerine getirir.
Böylece program organizasyonuna yardımcı olur.
Programın sürdürülmesine yardımcı olur.
Okuması çok daha kolay ve herhangi bir kaynak kodunu değiştirmek veya düzeltmek için.
Ve unutmayın, bakım aşaması yazılım yaşam döngüsünün en pahalı
aşamasıdır, bu hatalarınızı düzelttiğiniz, programın
yayınlandığı ve yeni özellikler eklediğiniz yer.
Ne kadar iyi organize olursanız programın bakımı
o kadar kolay olacaktır.
Yani bu organizasyon, bu okunabilirlik, içinde neler olup bittiğini
takip edebilmek kaynak kodunuz çok önemli ve işlevler
bir ton yardımcı olur.
Böl ve fethet yaklaşımı ayrıca programın bazı bölümlerinin
geliştirilmesine, test edilmesine ve bağımsız olarak hata ayıklama.
Gerçek dünyaya çıktığınızda ve kod üzerinde çalışmaya
başladığınızda, şunu fark edeceksiniz programlar gerçekten çok büyük.
Ve birçok insan var Bu programlar üzerinde çalışan yüzlerce,
hatta belki binlerce kişi var.
Bütün bu insanlar çalıştığında bir program üzerinde çalışıyorsanız, o program
üzerinde çalışmak çok daha kolaydır. küçük görevleriniz varsa bu böl-yönet
yaklaşımını kullanın. insanlar yapar ve bu bağımsızdır.
Aynı şeye dokunmuyorsun. kaynak kodu ile devam edebilir ve görevleri
çok daha kolay uygulayabilirsiniz.
Ve bunu yaptığınızda ve Bir proje üzerinde birden fazla kişinin çalışması,
genel geliştirme süresini azaltabilir. Bu da yine bakım maliyetlerini düşürür,
geliştirme maliyetlerini azaltır.
İşlevler de yeniden kullanılabilir Bu da yine zamanı azaltacaktır.
Ve yine bunu şu şekilde yapıyoruz printf işlevi, bunu tekrar kullanın.
Ama siz kendi kullanıcınızı yazdığınızda tanımlanmış işlevleri, program içinde tekrar
tekrar kullanabilirsiniz.
Yani yazılımın yeniden kullanımı büyük bir önem taşıyor, fonksiyonların büyük avantajı.
Düşündüğün zaman bu işlevler hakkında.
Tasarımla ilgili diğer güzel şey programınızı bir kara kutu gibi
düşünmek istersiniz.
Bu ne anlama geliyor? Bunu bir kara kutu gibi düşünün, tek
düşündüğünüz giriş fonksiyona ve çıktıya.
Ve sadece çıktıdaki girdi, tasarıma bir bütün olarak bakmanızı
sağlar uygulamaya başlamadan önce.
Ve böylece genel olarak işlevler sizi tasarıma odaklanabileceğiniz
bu tür bir düşünceye sokar.
Tasarımın önemli olduğundan bahsetmiştim.
Tasarım, planlamaya başladığınız zamandır programınızı, nasıl
organize edeceğinizi, nasıl kodu sen yazacaksın.
Ve bu planlamayı yapmak önemlidir uygulamaya, yani kod yazmaya başlamadan
önce.
Ve fonksiyonlar hakkında düşünerek ve sadece girdi ve çıktılar hakkında
düşünmek yerine, nasıl Programın nasıl organize edileceği ve hangi fonksiyonları oluşturmanız
gerektiği.
Bu yüzden endişelenmenize gerek yok sadece detaylarda uygulama.
Ve bu önemli çünkü Kod yazmadan önce yapmak istediğiniz ilk
şey sadece düşünmektir tasarım hakkında düşünürken, uygulama hakkında düşünmeye başlamak
istemezsiniz.
Öğrencilerin pek çok sorunu ilk kez kod yazdıklarında sahip
oldukları sadece uygulamaya başlayın.
Onlar düşünmüyorlar bile sorunu nasıl çözeceklerini
düşünmüyorlar, sadece kod yazmaya başlarlar.
Asla iyi bir yaklaşım değil.
Yazmayı düşündüğünüzde kod ve fonksiyonları, sadece
giriş ve çıkışlar olarak düşünün ve tasarımınızda size yardımcı
olacaktır.
Şimdi bazı örneklere bakalım.
Aşağıdaki gibi yerleşik fonksiyonları kullandık printf ve scanf gibi, bahsettiğim gibi.
Bunlar standartta var c programlama dili tarafından sağlanan
giriş çıkış kütüphanesi.
Bu yüzden ne olduğunu biraz biliyoruz bir işlevi kullanmış olmamızdır, ancak bu işlevi
kullanmadan önce bir fonksiyonu nasıl tanımladığınıza veya gerçekte
nasıl aktardığınıza ilişkin ayrıntılı bir işleve veri gönderir, bunun gibi bir şey değil.
Ama printf fonksiyonu ile, veri aldığını
fark etmiş olmalısınız.
Fonksiyona veri aktarabilirsiniz.
Veriler argümanlardır fonksiyon adını takip eden
parantezler arasında.
Bir bütün olacağız argümanları ve parametreleri
daha fazla açıklamak için başka bir ders.
Ancak yüksek seviyede şunu anlayın bir fonksiyona veri aktarabilirsiniz.
Ve anlayın ki printf fonksiyonunda.
printf'in ilk argümanı fonksiyonuna
aktardığımız veri bir dize idi tüm o karakterler çift
tırnak içindeydi.
Ve sonra da tartışmalarımız oldu. 0 veya çok sayıda değişken argüman olabilirdi,
bunlar değerleri görüntülenecek olan bir dizi değişken
veya ifade.
Unutmayın, eğer bir formatımız olsaydı belirteçlerini ilk argümanda
kullanırsak, değişkenleri bunu sonraki tartışmalarda ele alacağız.
Peki, geçebildin mi? printf işlevine veri gönderir.
Ayrıca, senin nasıl bir fonksiyondan geri bilgi alabilirse,
veriler size geri döndürülebilir.
scanf işlevinde, bir tartışmalardan biri de verileri nasıl depolayacağınızdı.
Ve böylece onu bir değişkeni ve bu değişken ne olursa olsun bir değere
sahip olacaktır kullanıcının klavyede yazdığı.
Yani bu bir çeşit bir işlevde dönüş değeri olarak.
Yani fonksiyonlar çok değerlidir çünkü İçlerine veri alabilirler ve daha sonra onlardan
veri döndürebilirler.
Yani bir fonksiyonun kodlama örneği ve bu sadece çağıracağımız bir fonksiyon
olacaktır, ancak bu ana işlevdir.
Biz aşinayız ana fonksiyonlar, programın
giriş noktası.
Ama şunun ne kadar güzel olduğuna bak.
Fonksiyonları çağırıyoruz liste sıralamasını ve ortalamasını okuyun.
Sadece 3 satır kodumuz var.
Gidip bunları uygulamalıyız. işlevler, ancak programı daha düzenli hale
getirir çünkü hemen bu programın ne yaptığını biliyor.
Bu program şunları okuyacak bir liste, daha sonra bir
listeyi sıralayacak, daha sonra listenin ortalamasını görüntüler
ve liste kayan sayılar içerir.
Bu yüzden çok okunabilir. bakımı çok kolay olacak.
Eğer herhangi bir hatamız varsa programında, bu hatayı nasıl bulacağımızı veya
izole edeceğimizi hemen bileceğiz.
Eğer hata sıralanmıyorsa, biz sıralama işlevine gidebilir.
Eğer hata ortalamada ise, ortalama fonksiyonuna gidebiliriz, hataları
izole etmek çok kolaydır.
Yani bunları uyguladığımızda Bir önceki slaytta fonksiyonları
sadece çağırıyorduk.
Fonksiyonları gerçekten uygulamak için, kodu işlevin gövdesinin
içine yazmanız gerekir.
Aşağıdaki işlevleri kullanabilirsiniz printf gibi c dili tarafından
uygulanır veya kendi kullanıcı tanımlı işlevleriniz.
Uygulamak zorunda değilsiniz printf işlevleri veya kütüphanedeki
işlevlerden herhangi biri sadece kendi işlevlerinizi uygulayın.
Yani bu önceki örnekte okunan liste sıralaması ve ortalama, gitmemiz
gerekecek ve bu işlevi uygulamak zorundadır.
Bir fonksiyon sağlamalıyız başlığının okunmasını gerçekleştiren
bir fonksiyon gövdesi liste, listenin sıralanması
ve listenin ortalamasının alınması.
Sadece tanımlamakla işimiz bitmiyor fonksiyonları varsa, bunları uygulamamız gerekir.
Ve uyguladığınızda işlevlerinde, her zaman açıklayıcı
işlev adları kullanmak istersiniz Programın ne yaptığını ve nasıl organize edildiğini
açıklığa kavuşturmak için.
Önceki örnekte, bir read list adlı işlev, bunun ne yaptığı oldukça
açık, işlev adı sıralama.
Fonksiyona x y veya z adını vermedik.
Bu işlevi tanımladık.
Aynı şey değişkenleri, anlamlı isimleri tanımlıyor
veya oluşturuyorsunuz.
Ve ayrıca bu işlevleri yaparsanız gerçekten bir şeyler yapabilecekleri
kadar genel oldukları ve genel verileri alıyorlarsa, aslında Tıpkı bir kütüphane
işlevi gibi bunları diğer programlarda yeniden kullanabilirsiniz.
Yine, yazılımın yeniden kullanımını destekler.
Yani bu gelecek konferanslarda, bir fonksiyonu nasıl tanımlayabileceğimiz
hakkında konuşacağız. özel sözdizimi, bir fonksiyonu nasıl çağırabileceğimiz
ve nasıl çağırabileceğimiz ve iletir ve onlardan veri döndürür.
Biz de buna odaklanacağız. önümüzdeki derslerde ele alacağız.
Ayrıca şunu da belirtmek isterim ki her yerde tekrar tekrar
gördüğümüz ana rutinimiz c programı, bu bir işlevdir.
Ana fonksiyon özel olarak c sisteminde tanınan isim, nerede
olduğunu gösterir programın yürütülmeye başlamasıdır.
Tüm c programlarının her zaman bir main'i vardır.
Ana işlev şunları alabilir komut satırı argümanlarını
ilettiğinizde veri veya veri almak zorunda değildir.
Ayrıca isteğe bağlı döndürebileceği veriler.
Şunları kullandığımızı fark edeceksiniz 0 döndüren ana işlevler.
Genellikle, şu durumlarda kullanılır hata kodlarını döndürmek istiyorum.
Ancak belirli işlevleri kullandık zaten ve en önemli
işlev ana işlevdir ve yine kodun düzenlenmesine yardımcı olur.
Her zaman nerede olduğunu biliriz. program başlıyor çünkü sadece
ana kaynağı bulmamız gerekiyor.
Bu üst düzey bir açıklamadır fonksiyonların avantajlarının tanımlanması
ve bir fonksiyonun tam olarak ne olduğu.
Şimdi konuşmak istiyoruz. uygulama hakkında.
Teşekkür ederim.