(Java) Alt programlar: prosedürler ve işlevler - 1


Bir alt program , programın bir adı olan ve kendi ayrı görevini çözen ayrı bir parçasıdır. Alt program, ana programın başında bulunur ve adı belirtilerek ana programdan başlatılabilir (çağırılabilir)

Alt programların kullanımı, programda aynı kodu farklı yerlere yazmanız gerektiğinde kod tekrarını önlemenizi sağlar. 
Programa içe aktarılan kitaplıklar (örneğin, Math matematik kitaplığı), birileri tarafından zaten derlenmiş olan alt programlardan oluşur. Programcıların hangi algoritmaları uyguladıklarını düşünmelerine gerek yoktur, sadece tam olarak ne yaptıklarını düşünerek onları uygularlar. Bu büyük bir zaman tasarrufu. Daha önce başkası tarafından yazılmış bir algoritma yazmaya gerek yoktur.

Her rutin yalnızca bir görev yapmalıdır,  ya sadece bir şey hesaplayın, ya da bazı verilerin çıktısını alın ya da başka bir şey yapın. 

İki tür alt program vardır - prosedürler ve işlevler

Alt prosedürler bazı eylemleri gerçekleştirir, örneğin, sonucu ekranda belirli bir biçimde görüntüler (basit bir örnek olarak, println()  operatörü, bilgileri yazıcıya yazdıran standart bir alt prosedürdür. ekran)

İşlev alt programları, ana programda kullanabileceğimiz bir sonuç döndürür (sayı, karakter dizisi vb.).

Basit bir prosedür yazmaya çalışalım:
Ekranda "Error" dizesini görüntülememiz gerektiğini varsayalım. kullanıcının hatası nedeniyle kodda bir hata oluşabileceği her defasında (örneğin, yanlış veri girdiğinde)
Bu, ifadeyi yazarak yapılabilir. System.out.println("Hata"); Ve şimdi programda birçok yere böyle bir satırın eklenmesi gerektiğini hayal edin. Tabii ki, her yere yazabilirsiniz. Ancak bu çözümün iki dezavantajı vardır.
1) bu dizi hafızada birçok kez saklanacak
2) Hata durumunda çıktıyı değiştirmek istiyorsak bu satırı program boyunca değiştirmek zorunda kalacağız ki bu oldukça elverişsizdir

Bu gibi durumlarda prosedürlere ihtiyaç vardır.
Prosedürü olan bir program şöyle görünebilir: ... statik geçersiz printError() // prosedür açıklaması { System.out.println("Hata"); // prosedür gövdesi - prosedürün yürüteceği komutlar } genel statik geçersiz main(String[] args) { ... printError() // yürütme prosedürünü başlat. Sadece yürütmek istediğimiz prosedürün adını belirtiyoruz. ... printError() ... } Prosedür, void kelimesiyle başlar. Prosedür adından sonra boş parantezler vardır.
Bir prosedürde yürütülen tüm ifadeler girintilidir. 

Prosedürler main()
ana işlevinden önce yazılır
Bir prosedürü yürütmek için, ana programda onu ismiyle çağırmanız ve parantez yazmayı unutmayın!
Bir programdaki bir prosedürü istediğiniz sayıda çağırabilirsiniz.

Şimdi bir kullanıcının yaptığı hataya karşılık olarak ne tür bir hata yaptığına bağlı olarak farklı mesajlar göstermemiz gerektiğini düşünelim.
Bu durumda, her hata için kendi prosedürünüzü yazabilirsiniz:   statik geçersiz printErrorZero() { System.out.println("Hata. Sıfıra bölme!"); } statik geçersiz printErrorInput() { System.out.println("Girişte Hata!"); } Ya daha birçok olası hata varsa? Bu çözüm bize uymayacak!
Hangi hata mesajını göstereceğini söyleyerek prosedürü nasıl kontrol edeceğimizi öğrenmemiz gerekiyor.
Bunun için prosedür adından sonra parantez içinde yazacağımız parametrelere ihtiyacımız var. statik geçersiz printError(String s) { System.out.println(ler); } Bu prosedürde s, prosedürü kontrol etmenizi sağlayan özel bir değişken olan bir parametredir.
parametresi, alt programın nasıl çalıştığını belirleyen bir değişkendir. Alt program başlığında parametre adları virgüllerle ayrılmış olarak listelenir. Parametre tipi parametreden önce yazılır.

Şimdi prosedürü çağırırken, prosedürümüzdeki parametreye (değişken s) atanacak gerçek değeri parantez içinde belirtmeniz gerekir. printError("Hata! Sıfıra bölme!"); Bu değere argüman denir.
Argüman alt program çağrıldığında ona iletilen parametre değeridir.
Bir bağımsız değişken yalnızca sabit bir değer değil, aynı zamanda bir değişken veya aritmetik bir ifade olabilir.

Yalnızca alt programda kullanılacak olan ek değişkenlerin kullanılması genellikle gereklidir. Bu tür değişkenler yerel (veya yerel) olarak adlandırılır ve yalnızca oluşturuldukları alt program içinde değiştirilebilir.
 
Yerel değişken kapsamı, içinde bildirildiği süslü parantezli bloktur

Java'daki ana program aynı zamanda bir alt programdır, dolayısıyla main() içinde bildirilen tüm değişkenler yerel değişkenlerdir 
Diğer alt programlar, diğer alt programların yerel değişkenleri hakkında hiçbir şey "bilmezler".

Böylece, bir değişkenin kapsamını (kapsamını) yalnızca gerçekten ihtiyaç duyulduğu alt programla sınırlandırmak mümkündür. Programlamada bu tekniğe kapsülleme  - bir değişkenin dışarıdan değiştirilmesini engellemek.

Programın herhangi bir yerinde (herhangi bir alt programda) görülebilecek bir değişken bildirmek gerekirse, bu tür değişkenler tüm alt programların dışında bildirilir (aşağıdaki tablodan program 3'e bakın)
Bu tür değişkenlere global denir.

Java'da, program başladığında, tüm genel değişkenler otomatik olarak sıfıra ayarlanır (boole değişkenleri yanlış olur)


Üç programı analiz edin: değeri görüntülenecektir. değeri görüntülenir.

1) Bu programda i değişkeni yereldir. Yerel bir değişken, bir alt program içinde bildirilir 2) Burada ana programda i değişkeni olsa bile (değeri 7 olan), değeri 5 olan yeni bir i yerel değişkeni oluşturulacaktır. 
Bu programı çalıştırdığınızda ekranda 75
3) Bu programın bir genel değişkeni i vardır. Değeri bir alt program içinde ve ana program içinde değiştirilebilir
Prosedür i global değişkeni ile çalışacak ve ona 2'ye eşit yeni bir değer atanacaktır. Ekranda 2
statik boşluk testi () {   int ben = 5; System.out.println(i); } statik boşluk testi () {   int ben = 5;   System.out.println(i); } genel statik geçersiz main(String[] args) { { int ben = 7;   System.out.println(i);   Ölçek(); } genel sınıf Ana { int ben; statik boşluk testi () {   ben = 2; } genel statik geçersiz main(String[] args) { { Ölçek(); System.out.println(i); }