[[anasayfa|]] / [[basit_dili_kuralları|]] ====== ProsedürBağı ====== Bir prosedürü çalıştırmak için her zaman prosedürün kendi adını girmek gerekiyor. Fakat bazı durumlarda çalıştırılması öngörülen prosedürler önceden bilinemeyebiliyor, özellikle bu çalıştırılması istenen prosedürler bir Kütüphaneden bağlanacak ise. Bu ve buna benzer durumlarda ProsedürBağı devreye giriyor. ProsedürBağı bir değişken gibidir, ama gerçek bir prosedüre işaret eder. Bir ProsedürBağı'nı kullanmadan önce her zaman geçerli bir işareti olup olmadığını kontrol etmek gerekir. Eğer ProsedürBağı geçersiz bir adrese işaret ediyor veya sıfır değerini veriyor ise, uygulama kendini hata vererek sonlandırır. Örnek: Prosedür birProsedür ( Rakam rak1; rak2 ) Rakamdır Sonuç rak1 + rak2 ProsedürSon Prosedür Başlat () ? Bir ProsedürBağı tanımlanıyor ? ProsedürBağı yapBirşey ( Rakam rak1; rak2 ) Rakamdır ? Gerçek bir prosedüre işaret ediliyor ? yapBirşey = birProsedür ? Bağlantının geçerliliği kontrol ediliyor ? Eğer yapBişey = Evet İse ? Bağlantı varsa, işaret edilen prosedür çalıştırılıyor ? Denetim yapBirşey( 15 ; 8 ) EğerSon ProsedürSon ProsedürBağı iki şekilde belirlenebilir. Birinci model yukardaki örnekte olduğu gibi, işaret edeceği prosedürün parametre ve sonuç verme türüyle aynı olmak zorundadır. Bu yöntem önerilen yöntemdir. Böylece uyumsuz prosedürleri yanlışlıkla bağlayamaz ve çalıştıramazsın ve hata derleme yapılacak esnada otomatik olarak tespit edilir. İkinci modelde ProsedürBağı belli bir parametre ve sonuç verme yapısına sahip değildir. Bu tür ProsedürBağı her türlü prosedüre işaret edebilir. Fakat çalıştırılacak prosedür yinede doğru parametre yapısıyla çalıştırılmalıdır. Aksi taktirde uygulama hata vererek sonlanabilir ve temiz çalışmaz ve beklenmedik sonuçlar doğurabilir. Bu yöntemde bir prosedür örneği şöyle: Prosedür birProsedür ( Rakam rak1; rak2 ) Rakamdır Sonuç rak1 + rak2 ProsedürSon Prosedür başkaProsedür ( Metin mesajMetni ) Metindir Sonuç "Deki: " & mesajMetni ProsedürSon Prosedür Başlat () ? Bir ProsedürBağı tanımlanıyor ? ProsedürBağı yapBirşey ? Gerçek bir prosedüre işaret ediliyor ? yapBirşey = birProsedür ? Bağlantının geçerliliği kontrol ediliyor ? Eğer yapBişey = Evet İse ? Bağlantı varsa, işaret edilen prosedür çalıştırılıyor ? Denetim yapBirşey( 15 ; 8 ) EğerSon ? Gerçek bir prosedüre işaret ediliyor ? yapBirşey = başkaProsedür ? Bağlantının geçerliliği kontrol ediliyor ? Eğer yapBişey = Evet İse ? Bağlantı varsa, işaret edilen prosedür çalıştırılıyor ? Denetim yapBirşey( "Merhaba Dünya" ) EğerSon ProsedürSon Ayrıca birinci modelde belirlenen ProsedürBağı aynı zaman yine tür olarak sunulur. Böylece aynı yapıya sahip başka tanımlamalarda oluşturulabilir: Prosedür Başlat () ? Belirli ProsedürBağı tanımlanıyor ? ProsedürBağı özelBirşey ( Rakam rak1; rak2 ) Rakamdır ? Belirsiz ProsedürBağı tanımlanıyor ? ProsedürBağı belirsizŞey ? ProsedürBağı değişkenleri tanımlama ? Belirle ProsedürBağı a; b; belirsizŞey c; d; özelBirşey e; f ProsedürSon Örnekteki a ve b yine normal belirsiz ProsedürBağıdır. Buna c ve d'de dahildir, çünkü onları temsil eden tür yine belirsiz ProsedürBağıdır. Fakat e ve f belirli ProsedürBağıdır, çünkü bunları temsil eden tür belirli bir yapıya sahiptir.