Subprograms Flashcards
Subprogramların genel özellikleri nelerdir
1.yalnızca bir girişi olur
2.bitene dek callerı çalışmaz
3.bitince her daim callera dönülür
subprogram call nedir
ana akışta subprogramı çağırmak için kullanılan ifade
power(2,3) ifadesi gibi
subprogram header nedir
public double power(double base, double pow) ifadesi
subprogram definition/body nedir
{} içinde kalan her şey
subprogram parameter profile nedir
subprogramda parametrelerin sayısı ve sırası
subprogram protocol nedir
public double power(double base, double pow) ifadesinde double ile parametrelerin birleşimi.
subprogram decleration nedir
subprogramın önceden
double power(double base, double pow); şeklinde sadece headerı ile tanımlanması
javada interface metotları ile c’de prototypelar örnektir.
Subprogramlar, local değişkenlere nasıl erişir
Parameter-passing ile
Formal değişken nedir
Dışardan değişken almak için oluşturulan dummy değişkenler. double Power(double a, double b) derken a,b değişkenleri yani.
Actual değişken nedir
Dışarıdan gönderilen değişkenler. Power(x,y) derken x ve y gibi yani
Positional parameters nedir
n.actualin n.formale bağlanması
c#da sınırsız parametre nasış atanır
public void fun(param int [] list)
Keyword parameter nedir
parametrelere isim takılması. fun(power = 2, base = 3) gibi
subprogram tipleri nelerdir
procedure (return etmeyen),
function(değer döndüren)
Subprogramların kendi değişkenlerine sahip olması nasıl mümkün olur
1.Static variables -> compiletimeda, recursion yok
2.Stack-dynamic -> subprogram çağırıldığında, recursion var.
parameter passing metotlar nelerdir
pass by value -> parantez içindeki değer kullanılabilir olsun(in)
pass by result -> parantez içindeki değere return ifadesinin karşılığı yazılsın
pass by value-result (copy)-> ikisi birden
pass by referance -> referan gönderilir, işlemlerde kullanılıp değişebilir
pointer swap fonksiyonu nasıl çalışır?
int a = 3, b = 4;
swap(&a, &b);
void swap(int *x, int *y){
int *temp = x;
x = y;
y = temp;
}
Fortran hangi parameter passing
77 öncesi referance, sonra value result
C hangi parameter passing
pass by value ama kullanıcılar pass by referance kullanabiliyor
cjava+ hangi parameter passing
nesneler pass by referance ile, kalanlar pass by value ile
Type checking parameters
Fortran 77, C etmez
Fortran 90, Java, Ada ,Pascal eder
alttaki gibi bir yapı varsayarak environmentleri yorumla
fun3():
….
…
fun2():
fun1(fun3);
….
….
fun1(funx):
shallow binding -> fun1’in environmenti
deep binding -> fun 3’ün environmenti
adhoc binding ->fun 2’nin environmentş
static değişkenli subprogram çağrıldığında caller ne yapar
- execution statusu kaydeder
- parametre ve return adresi paslar
- kontrolü subprograma verir
subprogram çağrıldığında callee ne yapar
- eğer out veya inout bir geçiş varsa değerleri parametrelere kaydeder
- eğer fonksiyonsa, sonucu bir adrese kaydeder
- execution statusu geri yükler
4.kontrolü ana programa verir
activation record nedir
bir subprogram çağırıldığında (static değişkenleri var ise)
[[local variables][parameters][return address]] şeklinde bir stack tutan yapıdır. linker tarafından oluşturulur.
Stack dynamic değişkenler varsa
[[l.variables][parameters][dynamiclink][return address]]
dynamic değişkenli subprogram çağrıldığında caller ne yapar
1.Activision record oluştur
kalanı aynı
Block nedir
c basedlarda {} ile istediğimiz yerde local environment yaratabiliriz. Bunlar bir subprogram gibi işlenebilir veya aktif katmanın activision recorduna eklenebilir.