Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

İsimler ve Bağlanma Names and Bindings

Benzer bir sunumlar


... konulu sunumlar: "İsimler ve Bağlanma Names and Bindings"— Sunum transkripti:

1 İsimler ve Bağlanma Names and Bindings

2 Giriş Emirsel (imperative) programlama dilleri altta yatan Von Neumann bilgisayar mimarisinin soyutlamalarıdır. Bellek (Memory): Hem komutları hem de verileri tutar. İşlemci (Processor): Belleğin içeriğini değiştirmek için gereken işlemleri gerçekleştirir.

3 Soyutlama (Abstraction)
Bellek için soyutlamalar değişkenlerdir. Bazen soyutlamalar hücrelerin karakteristiğine çok yakındır. Örn: Tamsayı – Direkt olarak 1 ya da daha fazla byte bellek şeklinde temsil edilirler. Diğer durumlarda, soyutlamalar belleğin organizasyonundan oldukça uzaktır. Örn: 3 boyutlu dizi – Soyutlamayı desteklemek için yazılımsal eşleme (mapping) fonksiyonuna ihtiyaç duyar.

4 İsimler (Names) Değişkenler, altprogramlar, etiketler, kullanıcı tanımlı tipler hepsi birer isme sahiptirler. Tasarım Sorunları İsmin maksimum uzunluğu Büyük-küçük harf duyarlılığı var mı yok mu Özel kelimeler (reserved words, keywords)

5 İsimler İsim formları:
İsim, karakterlerden oluşan bir stringdir. İsim için, her bir dil farklı string uzunluğu kullanır. İlk diller: tek karakter Fortran 77: 6 karaktere kadar Fortran 95: 31 karaktere kadar Java, C#, Ada, C++: limit yok

6 İsim Yapıları (Name Forms)
Birçok PL de isimler aynı yapıdadır: Bir harf ve bunu takip eden harf, rakam ve alt çizgi karakterlerinden oluşan bir string. Bazılarında ise, değişken isminden önce özel karakterler kullanılır. (Perl deki % gibi) Günümüzde, deve notasyonu C-tabanlı dillerde (C, C++, Objective C, Java ve C#) çok popülerdir. (Örn: enKucukEleman) Fortran’ın ilk versiyonlarında boşluklar göz ardı ediliyordu. Aşağıdaki 2 değişken eşitti: En Kucuk Eleman EnKucukEleman

7 İsim Yapıları (Name Forms)
PHP dilinde bütün değişken adları $ ile başlar. Perl de değişkenin başındaki özel karakter %) onun tipini belirtir. Ruby dilinde, en baştaki özel karakter or değişkenin sınıf değişkeni mi yoksa nesne değişkeni mi olduğunu belirtir. In Perl any name that begins with $ is a scalar, which can store either a string or a numeric value. If a name begins it is an array; if it begins with a %, it is a hash structure.

8 Büyük-Küçük Harf Duyarlılığı (Case Sensitivity)
Birçok dilde (Örn: C-tabanlı diller), isimlerde büyük-küçük harf ayrımı vardır. Örneğin, aşağıdakilerin her biri farklıdır: Örn: elma, ELMA, Elma Bu durum okunabilirlik için bir problemdir. Benzer görünen isimler aslında farklı farklı varlıkları anlatırlar. Bu durum yazılabilirlik için de bir problemdir. Programcı doğru şekli hatırlamak zorundadır. Örn. Java parseInt metodu string i tam sayıya çevirir (ParseInt veya parseint değil)

9 Özel Kelimeler (Special Words)
Anahtar Kelimeler (Keywords) Rezerve Edilmiş Kelimeler (Reserved Words) Ön Tanımlı İsimler (Predefined Names)

10 Özel Kelimeler (Special Words)
Anahtar Kelimeler (Keywords): Belli bağlamlarda özeldirler. FORTRAN dilinde REAL bir beyanın başında yer alıyor ve bunu bir isim takip ediyorsa, deklarasyon için anahtar kelime olarak düşünülür. Örnekler REAL ELMA (deklarasyon) REAL = 8.7 (atama) veya INTEGER REAL REAL INTEGER Bu durum kabul edilir ama okunabilirlik açısından kötüdür.

11 Özel Kelimeler (Special Words)
Rezerve Edilmiş Kelimeler (Reserved Words) İsim olarak kullanılamayan özel kelimelerdir. for veya while kelimeleri fonksiyon ya da değişken ismi olarak kullanılamaz. COBOL 300 adet rezerve edilmiş kelime içerir (Büyük problem!)

12 Özel Kelimeler (Special Words)
Ön Tanımlı İsimler (Predefined Names) Ön tanımlı anlamları vardır. Ama kullanıcı tarafından tekrar tanımlanabilirler. Ada dilinde, Integer ve Float ön tanımlıdır ama herhangi bir Ada programı bunları tekrar tanımlayabilir.

13 Değişkenler (Variables)
Bir bilgisayar bellek hücresinin (ya da hücrelerin koleksiyonunun) soyutlamasıdır. Değişken, bir bellek lokasyonu için bir isim değildir sadece! Bir değişken aşağıdaki özelliklerin koleksiyonuyla karakterize edilir: İsim Adres Değer Tip Ömür Etkinlik Alanı

14 Değişken Özellikleri 1. İsim Birçok değişkenin ismi vardır.
Ama isimsiz değişkenler de vardır. (Örn: gösterilen değişkenler (pointed variables))

15 Değişken Özellikleri 2. Adres İlişkili bellek lokasyonudur.
Aynı isim farklı lokasyonlara atıfta bulunabilir. (refer) Programın farklı bölümlerinde: Bir program 2 alt programa sahip olsun (altprog1, altprog2). Her birinde aynı ismi kullanan bir lokal değişken tanımlanmış olabilir. Farklı zamanlarda: Rekürsif bir prosedür içinde tanımlanan bir değişken, rekürsif çağırmaların her birinde farklı bir bellek lokasyonuna atıfta bulunur. Bir değişkenin adresine bazen değişkenin l-value su da denir. Çünkü bir atama işleminin sol tarafında bir değişken varsa, o değişkenin adresine ihtiyaç duyarız.

16 Değişken Özellikleri Armalar/Takma Adlar (Aliases)
Aynı bellek lokasyonunu kullanmak için birden fazla değişken kullanılabilir. (Çoklu değişkenler aynı adresi refere edebilirler.) Bu tür değişken isimlerine arma (alias) denir. Arma kullanımı okunabilirliği kötü etkiler. Örneğin aynı bellek lokasyonunu kullanan 2 değişken x, y olsun. y = 10 dediğimiz anda, farkında olmadan x in değerini de değiştirmiş oluruz. Doğrudan yaratılırlar. C ve C++ da union tipi ile Pointer değişkenleriyle (gösteren değişkenleriyle)

17 Değişken Özellikleri 3. Tip Şunları belirler:
Değişkenin alabileceği değerlerin menzilini (kapasitesini) Bu tipteki değerler için tanımlanan operatörleri Örneğin, JAVA da int tipinin menzili: den e kadardır

18 Değişken Özellikleri 4. Değer
Bellek hücresinin, ya da değişkenle ilintili bellek hücrelerinin içeriğidir. Byte büyüklüğündeki bellek hücreleri yerine soyut bellek hücreleri kullanılır. Fiziksel hücreler 8 bit Bu, birçok program değişkeni için çok küçüktür.

19 Değişken Özellikleri 4. Değer
Bazen değişkenin r-value su da denir. Çünkü değişkenimiz atama işleminin sağında ise, onun içeriğine ihtiyaç duyarız. l_value ← r_value (atama işlemi) değişkenin l_value su: değişkenin adresi değişkenin r_value su: değişkenin değeri

20 Bağlanma Zamanları (Binding Times)
Dil Tasarım Zamanı *, çarpma işlemine bağlanır. pi= değerine bağlanır. Dil Implementasyon Zamanı Bir veri tipi (C dilindeki int gibi), olası değerler menziline bağlanır. Derleme Zamanı Bir java değişkeni tipine bağlanır.

21 Bağlanma Zamanları Link zamanı Yükleme zamanı Çalışma zamanı
Kütüphane altprogramı çağrısı, altprogram koduna bağlanır. Yükleme zamanı Değişken, belirli bir bellek lokasyonuna bağlanır. Çalışma zamanı Bir değişken atama beyanı aracılığıyla bir değere bağlanır.

22 Bağlanma Zamanları Örnek: X in tipi derleme zamanında bağlanır.
X = X + 5 X in tipi derleme zamanında bağlanır. X in olası değerlerinin kümesi dil implementasyon zamanında bağlanır. + operatörünün anlamı derleme zamanında, solunda ve sağındakilerinin tipi belli olduktan sonra bağlanır. X in değeri çalışma zamanında bağlanır.

23 Özelliklerin Değişkenlere Bağlanması
Sabit (Static): Eğer bağlanma çalışma zamanından önce olursa ve programın çalışması süresince değişmiyorsa. Dinamik/Hareketli (Dynamic): Eğer bağlanma çalışma zamanında olursa veya programın çalışması süresince değişebiliyorsa.

24 Tip Bağlanması (Type Bindings)
Bir programda, bir değişkenin refere edilebilmesi için, o değişkenin bir veri tipine önceden bağlanması gerekir. 2 önemli durum Tip nasıl belirlenir? Bağlanma ne zaman olur?

25 Sabit Tip Bağlanması (Static Type Binding)
Değişken Deklarasyonları Doğrudan deklarasyon (atama beyanı ile) Değişken tipi ve değişken adından oluşan atama Örtülü deklarasyon (ilk görünüş ile) Açıklaması bir sonraki slaytta! Her ikisi de tiplere statik bağlanma yaratır.

26 Sabit Tip Bağlanması (Static Type Binding)
Günümüzdeki birçok PL bütün değişkenler için doğrudan deklarasyonu gerekli kılar. İstisnalar: Perl, Javascript İlk diller (Fortran, BASIC) örtülü deklarasyon kullanırlar. Örn: Fortran dilinde, doğrudan belirtmezsek, I,J,K,LM,N ile başlayan değişkenler INTEGER, gerisi REAL kabul edilir. Örtülü deklarasyonlar güvenilirlik ve yazılabilirlik bakımından kötüdür. Yanlış yazılan değişken adları derleyici tarafından yakalanamazlar.

27 Dinamik Tip Bağlanması (Dynamic Type Binding)
Değişkenin tipi ne bir deklarasyon beyanı ile ne de değişken adının yazılış şekli ile belirlenmez. Atama beyanı ile değişkene bir değer verildiği anda tip bağlanır. Avantaj: Programlama esnekliği getirir. Örnek: Javascript and PHP Örn. JavaScript list = [ ] list 3 elemanlı tek boyutlu bir dizi list = 73 list bir tamsayı

28 Dinamik Tip Bağlanması (Dynamic Type Binding)
Dezavantajı: 1. Daha Az Güvenilir: Derleyici, tipleri kontrol edemez ve tip zorunluluğu görevini yerine getiremez. Örn: I ve X tamsayı, Y reel sayı olsun. Yazmak istediğimiz şu olsun: I := X Ama yanlışlıkla şunu yazalım: I := Y Dinamik tip bağlamalı bir dilde, derleyici bu hatayı yakalayamaz ve çalışma esnasında I nın tipi reel olur.

29 Dinamik Tip Bağlanması (Dynamic Type Binding)
Dezavantajı: 2. Maliyet: Tip kontrolü çalışma zamanında yapılmalı. Her değişkenin o anki tipini tutmak için bir yapı kullanılmalı. Bu tipteki diller genelde yorumlayıcı şeklinde implement edilirler. (LISP gibi).


"İsimler ve Bağlanma Names and Bindings" indir ppt

Benzer bir sunumlar


Google Reklamları