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


Alt programlar
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).

Programın farklı yerlerine aynı kodu yazmanız gerekirse, alt yordamları kullanmak, kod tekrarını önlemenizi sağlar. 
Programa içe aktarılan kitaplıklar (örneğin, matematik kitaplığı сmath.h), zaten birisi tarafından 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. 

Alt programlar iki türdendir - prosedürler ve işlevler.

Alt programlar bazı eylemleri gerçekleştirir, örneğin sonucu ekranda belirli bir biçimde görüntüler (basit bir örnek olarak, printf()  operatörü bilgileri ekrana yazdıran standart bir alt programdır)

İş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:
Diyelim ki "Hata" 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. cout 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: #include<iostream> ad alanı std kullanarak; void printError() // prosedür açıklaması { cout 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:   geçersiz printErrorZero() { cout geçersiz printErrorInput() { cout 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. geçersiz printError(dizeler) { cout 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.

Yerel ve genel değişkenler
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ü parantez içindeki bloktur

C++'daki ana program da bir alt programdır, dolayısıyla main() içinde belirtilen 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şkeni 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.

C++'da program başladığında, tüm genel değişkenler otomatik olarak sıfıra ayarlanır (boolean değişkenler false değerini alır).


Üç 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
geçersiz test() {   int ben = 5; cout geçersiz test() {   int ben = 5;   cout #include <iostream> ad alanı std kullanarak; int ben; geçersiz test() {   ben = 2; } ana() { Ölçek(); cout
Görev
İki değişkenin değerlerini değiştiren bir prosedür yazın.

Bu görevin özelliği, çağıran program tarafından bilinmek için prosedürde yapılan değişikliklere ihtiyaç duymamızdır.

Prosedürü şu şekilde yazmaya çalışalım: void Swap ( int a, int b ) // prosedür parametrelerinin böyle bir açıklaması ile, { // argümanların (x ve y) değerleri kopyalanacak, int c; // a ve b değişkenleri, x ve y ile ilgili olmayan bağımsız değişkenlerdir c = bir; bir = b; b=c; } ana() { int x=1, y=2; Değiştir(x, y); // x ve y değişkenlerinin (argümanlar) değerleri a ve b parametrelerine kopyalanır cout Bu programı çalıştırırsanız x ve y değişkenlerinin değerlerinin değişmediğini görebilirsiniz. Parametrelerin bağımsız değişkenlerin değerlerini değiştirmesi için verileri referansa göre iletmeyi kullanmalısınız.Bunu yapmak için veri türünün adından sonra alt programın başlığına & ("ve işareti") işaretini koymalısınız. geçersiz Değiştirme ( int & a, int & b ) // şimdi a ve b değişkenleri bellekteki x ve y değişkenlerinin adreslerini alıyor { int c; c = bir; bir = b; b=c; } Kullanım: Bir bağımsız değişkeni referans olarak iletirseniz, prosedür çağrılırken bu yerde yalnızca değişken adı (bir sayı ve bir aritmetik ifade DEĞİL) bulunabilir!< br />
Şunun gibi bir prosedür ÇAĞRILAMAYIN: Swap(x, 4 ); Swap(5+x, y);