İsimler ve Bağlanma Names and Bindings

Slides:



Advertisements
Benzer bir sunumlar
Bölüm 12 ÜST DÜZEY KONULAR Dinamik Bellek Ayırma Önişlemci
Advertisements

PHP ile Lab Örnekleri Lab Çalışması.
Değişken , Veri Türleri ve Operatörler
Değişkenler ve bellek Değişkenler
JavaScript Birinci Hafta.
MIT563 Yapay Zeka ve Makine Öğrenmesi
Göstericiler (Pointers)
Nesneye Yönelik Programlama
C Programlama Diline Giriş
Bölüm 5 Adlar(Names), İlişkilendirmeler(Bindings), Tip Kontrolü(Type Checking), ve Kapsamlar(Scopes)
İfadeler ve Atama İfadeleri
Atama ve Girdi/Çıktı Komutları
4 Kontrol Yapıları: 1.Bölüm.
VERİ TİPLERİ VE DEĞİŞKENLER
Dizi (array) değişkenleri
OOP4 LAB.
String Kütüphanesindeki Arama Fonksiyonları
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Nesneye Yönelik Programlama
Diziler.
Nesneye Dayalı Programlama
NESNEYE YÖNELİK PROGRAMLAMANIN TEMEL İLKELERİ GENEL BİR BAKIŞ
Değişkenler veri tipleri operatörler
While Döngüsü Tekrarlama deyimidir. Bir küme ya da deyim while kullanılarak bir çok kez yinelenebilir. Yinelenmesi için koşul sınaması döngüye girilmeden.
Nesneye Yönelik Programlama
Bilgisayar Programlama
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C ile Programlamaya Giriş
DEĞİŞKENLER, VERİ TÜRLERİ VE OPERATÖRLER
Temel Veri Türleri ve Operatörler
DEĞİŞKENLER VE VERİ TİPLERİ
DEĞİŞKENLER.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
NESNEYE-YÖNELİK PROGRAMLAMA
JAVA’DA DÖNGÜLER.
Kalıtım , Sınıf Asli Ergün.
C PROGRAMLAMA DİZİLER (ARRAYS).
C# Veri Tipleri ve Değişkenler
C PROGRAMLAMA FONKSİYONLAR Adres ile Fonksiyon Çağırma Pointer (İşaretçiler) ile Fonksiyon Çağırma Rekürsif Fonksiyonlar.
VERİ TİPLERİ VE DEĞİŞKENLER
İNTERNET PROGRAMCILIĞI I BTP 207 Ders 8.  Tamsayı Değerler (Integer) Tamsayılar, 10 tabanlı (decimal), 8 tabanlı (octal) veya 16 tabanlı (hexadecimal)
DİZİLER Arrays.
Değerler ve Değişkenler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Bölüm 3 Atama ve Girdi/Çıktı Komutları Bölüm 3 Atama ve Girdi/Çıktı Komutları Atama Komutu Operatörler İsim Sabitleri Veri Tipi Dönüşümü Çıktı Fonksiyonu.
Değişkenler Programda Değişken Tanımlama. Değişken nedir? (Variables) Program içinde kullanılan veri(data)nin tutulduğu alanın adıdır. Her veri bir tür.
Bölüm 5: Adlar, Bağlama, Tip Kontrolü ve Kapsamlar
Adım Adım Algoritma.
SAYISAL ANALİZ Doç.Dr. Cüneyt BAYILMIŞ.
Programlama Dillerinin Prensipleri
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
Bölüm 2 C Dilinin Temelleri Genel Kavramlar Yazım ve Noktalama Kuralları C Kütüphaneleri C Dilindeki Sözcükler Değer Sabitleri Veri Tipleri Değişkenler.
Değişkenler Sabitler İşlemciler İfadeler Deyimler 1 Programlama Dillerinin Temel Elemanları (Hafta5) BSM208 PROGRAMLAMA DİLLERİNİN PRENSİPLERİ.
BİLGİSAYAR PROGRAMLAMA Ders 11: İşaretçi (Pointer) Kullanımı Yrd. Doç. Dr. Altan MESUT Trakya Üniversitesi Bilgisayar Mühendisliği.
Bağlama ve Kapsam Kavramları
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Fonksiyonlar ve Diziler
BİLGİSAYAR PROGRAMLAMA Ders 6: Diziler
C Programlama Dili Bilgisayar Mühendisliği.
Programlama Dillerinin Temel Elemanları
METHODLAR VE KOŞULLAR.
Excel’de VBA Programlama (Visual Basic Application)
Bölüm 9 Altprogramlar.
İsimler, Bağlamalar, Tip Kontrolü, Etki Alanları
YAPISAL PROGRAMLAMA Hafta-6
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
BLM-111 PROGRAMLAMA DİLLERİ I Ders-2 Değişken Kavramı ve Temel Operatörler Yrd. Doç. Dr. Ümit ATİLA
Bilgisayar Bilimi Problem Çözme Süreci-2.
Altprogramların gerçeklenmesi
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
Sunum transkripti:

İsimler ve Bağlanma Names and Bindings

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.

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.

İ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)

İ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

İ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

İ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 with @, it is an array; if it begins with a %, it is a hash structure.

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)

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

Ö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.

Ö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!)

Ö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.

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ı

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))

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.

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)

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: -2147483648 den 2147483647 e kadardır

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.

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

Bağlanma Zamanları (Binding Times) Dil Tasarım Zamanı *, çarpma işlemine bağlanır. pi=3.14159 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.

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.

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.

Ö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.

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?

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.

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.

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 = [10.2 5.1 0.0] list 3 elemanlı tek boyutlu bir dizi list = 73 list bir tamsayı

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.

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