İsimler ve Kapsam. 24 Şubat 2011. Programlama Dilleri - Pamukkale Üniversitesi 1



Benzer belgeler
İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Bölüm 5. İsimler, Bağlama, Tür Kontrolü ve Kapsam(Etki Alanı) ISBN

Bölüm 10. Altprogramları Uygulamak

Bölüm 5. Adlar(Names), Bağlamalar(Binding s),tip Kontrolleri (Type Checking), ve Etki Alanları ( Scopes) ISBN

Bölüm 10. Altprogramların gerçeklenmesi ISBN

Bölüm 9. Altprogramlar ISBN

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

Sunum İçeriği. Programlamaya Giriş

Bölüm 5. İsimler, Bağlamalar, Tip Kontrolü, Etki Alanları ISBN

Bağlama (Binding) Kavramı

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Bölüm 9. Altprogramlar ISBN

Göstericiler (Pointers)

Bölüm 7. İfadeler ve atamalar ISBN

BİL-141 Bilgisayar Programlama I (Java)

Pointer Kavramı. Veri Yapıları

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Örnek: İki fonksiyondan oluşan bir program. Fonksiyon Tanımı

Bölüm 12. Nesne yönelimli programlama desteği

Ders 6. Bölüm 6: Veri Tipleri (devam)

Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

NESNEYE YÖNELİK PROGRAMLAMA

ELN1001 BİLGİSAYAR PROGRAMLAMA I

Bölüm 6. Veri Türleri ISBN

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

HSancak Nesne Tabanlı Programlama I Ders Notları

Fonksiyonlar. C++ ve NESNEYE DAYALI PROGRAMLAMA 51. /* Fonksiyon: kup Bir tamsayının küpünü hesaplar */ long int kup(int x) {

C++ Dersi: Nesne Tabanlı Programlama

1 PROGRAMLAMAYA GİRİŞ

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

C++ Dersi: Nesne Tabanlı Programlama

7- Turbo Pascal Programlamada Alt Programlar (Procedure)

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Erişim konusunda iki taraf vardır:

Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Nesne Yönelimli Programlama

C++ Dersi: Nesne Tabanlı Programlama

Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

11- FONKSİYONLAR (FUNCTIONS)

Java da, tüm değişkenlerin kullanılmadan önce tanımlanması edilmesi gerekir. Bir değişken tanımlamanın temel gösterimi bu şekildedir:

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

Programın Akışının Denetimi. Bir arada yürütülmesi istenen deyimleri içeren bir yapıdır. Söz dizimi şöyledir:

Bölüm 10 Statik ve Anlık Öğeler

BİLG Dr. Mustafa T. Babagil 1

Bölüm 7. Deyimler ve Atama ifadeleri ISBN

Üst Düzey Programlama

C++ Dersi: Nesne Tabanlı Programlama

BMH-303 Nesneye Yönelik Programlama

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

Sınav tarihi : Süre : 60 dak. a) ABCDE b) BCDE c) ABCD d) kod hatalı e) BCD

BİL-142 Bilgisayar Programlama II

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

TESİ. indeks. söylenebilir?? bir ilişkidir d) Hiçbiri. veya somutlaştırılmış. düzeyidir? sağlayabilir? sına. d) Hepsi. olabilir? c) Verilerin d) Hepsi

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Programlama Dillerinde Kullanılan Veri Tipleri

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

8. İŞARETCİLER (POINTERS)

Programlama Dilleri. C Dili. Programlama Dilleri-ders08/ 1

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

Temel Bilgisayar Bilimleri Ders Notu #4-2. kısım

Yrd. Doç. Dr. Caner ÖZCAN

Bil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi

Yrd. Doç. Dr. Caner ÖZCAN

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

Pointers (İşaretçiler)

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

ALGORİTMA VE PROGRAMLAMA II

7. HAFTA. Erişim Belirleyiciler

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

BİLİNİRLİK ALANI ve ÖMÜR, KONTROL DEYİMLERİ

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

C Programlama Dilininin Basit Yapıları

public static int Toplam int x, int y

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

C# Metotlar ve Metot Tanımlama

Diziler İndisli Değişkenler

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

Nesne Yönelimli Programlama

ENF102 TEMEL BİLGİSAYAR BİLİMLERİ VE C/ C++ PROGRAMLAMA DİLİ. Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

Nesne Yönelimli Programlama

C++ Dersi: Nesne Tabanlı Programlama

Hafta 13 Fonksiyonlar

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

BLM 112- Programlama Dilleri II. Hafta 4 İşaretçiler (Pointers)

Bölüm 6. Veri Tipleri ISBN

C++ Dersi: Nesne Tabanlı Programlama

BTEP243 Ders 3. class Yazım Kuralı:

5. Bölüm Alt Sınıflar (Nested Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

C de Detaylı Üs Alma Programı. C# Dilinde Metot Tanımlama ve Yazdırma

Transkript:

İsimler ve Kapsam Tanım: Bir değişkenin kapsamı (scope) değişkenin görülebilir olduğu komutların alanıdır. Görülebilir olduğu alan, bir komut içinde belirlenen değerle kullanılabildiği alandır. Tanım: Lokal değişkenler, bir program biriminde kullanılan ve orada tanımlanmış değişkenlerdir. Tanım: Lokal olmayan değişkenler, bir program biriminde görülebilir olan ancak orada tanımlanmamış değişkenlerdir. Kapsam kuralları, isimlere yapılan referansların değişkenlerle nasıl bağlanacağının kurallarını belirler. Programlama Dilleri - Pamukkale Üniversitesi 1

Program metnine dayanır. Statik Kapsam (static scope) Bir isim referansını değişkene bağlayabilmek için isim tanımlanmış olmalıdır. Arama işlemi: lokalden başlayarak ve her seferinde kapsamı genişleterek, verilen ismin tanımını arama. Bu durumda kapsam en içteki alt programdan onu çevreleyen üst alt programlara doğrudur. Bazı diller iç içe alt programları desteklerken (Ada, JavaScript, PHP), bazı diller desteklemez (C tabanlı diller gibi). İç içe alt programları desteklemeyen dillerde bile blok içleri ayrı kapsama alanlarıdır. Statik kapsamı çevreleyen kapsam onun atasıdır. En yakın ataya, ebeveyn (parent) denir. Programlama Dilleri - Pamukkale Üniversitesi 2

Blok kapsamı Program birimleri içerisinde statik kapsam yaratma yöntemi - ALGOL 60 ile başlar Örnekler: C and C++: for (...) { int index;... } Ada: declare LCL : FLOAT; begin... end Programlama Dilleri - Pamukkale Üniversitesi 3

Kapsam Lokalde tanımlanmış aynı isimli değişken, dışarda ata tarafından tanımlı değişkene erişimi keser: void sub() { int count; while ( ) { int count=1; count ++; } } C++ ve Ada bu tip erişilmez verilere kapsamı belirterek erişim imkanı sağlar. In Ada: unit.name In C++: class_name::name Programlama Dilleri - Pamukkale Üniversitesi 4

Statik kapsam, örnekler C++ değişken tanımlarının fonksiyon içinde herhangi bir yerde yapılmasına izin verir. Fonksiyonun içinde ama bir blok içinde olmayan tanımlar, fonksiyon içinde tanımlandığı noktadan fonksiyonun sonuna kadar tanımlanmış sayılırlar. C de benzer tanımların fonksiyon başında yapılması zorunludur. C++, Java ve C# class ları içinde tanımlanan değişkenler farklılıklar gösterir: Eğer herhangi bir metodun içinde tanımlanmadıysa, bütün class içinde tanımlıdır. public se dışardan da erişilebilir. Bir metot içinde tanımlandıysa, tanımlandığı blokdaki değerini kullanır. C#, C++ tipi göstericileri destekler. Ancak bunlar güvenliği bozduklarından bunları kullanan metot ların unsafe olarak tanımlanması zorunludur. Programlama Dilleri - Pamukkale Üniversitesi 5

1. A,B :ornek; X: Sub1; 2. A,B :ornek; Y: Sub 2; X: Sub3; 3. A,B, :ornek; X,Y: Sub2; 4. A,B, :ornek; procedure ornek is A, B : Integer;... procedure Sub1 is X: Integer; begin -- Sub1... <============ 1 end; procedure Sub2 is X,Y : Integer;... procedure Sub3 is X : Integer; begin - Sub3... <============= 2 end; begin -- Sub2... <============= 3 end; begin -- Example... <============= 4 endl; Programlama Dilleri - Pamukkale Üniversitesi 6

Kapsam Statik kapsamın değerlendirilmesi Örnek: Bütün kapsamlar MAIN program ve alt programlarca belirlenir. MAIN A ve B yi çağırır C ve D yi A çağırır A ve E yi B çağırır Programlama Dilleri - Pamukkale Üniversitesi 7

Statik kapsam örneği Programın yapısı Programın ağaç yapısı MAIN A MAIN C D A B B C D E E Programlama Dilleri - Pamukkale Üniversitesi 8

Statik kapsam örneği Programın istenen altprogram çağırma yapısı Programın potansiyel altprogram çağırma yapısı MAIN MAIN A B A B C D E C D E Programlama Dilleri - Pamukkale Üniversitesi 9

Statik kapsam örneği Varsayalım D, B nin içindeki veriye ulaşmalı. Olası çözümler: D yi B nin altına koy (Fakat artık C, D yi çağıramaz, D, A nın değişkenlerine erişemez). B den D nin gereksinim duyduğu veriyi MAIN e koy (bütün alt programlar erişebilir) Sonuç: statik kapsam global değişkenlere neden olur. MAIN MAIN A B A B C D E C D E Programlama Dilleri - Pamukkale Üniversitesi 10

Dinamik kapsam Program birimlerinin çağırma sırasına dayanır; onların programdaki yerleşme şekillerine değil. Değişkenlere erişim altprogramların herhangi bir andaki çağrı zincirine bağlıdır. APL, SNOBOL4, Perl ve bazı Lisp versiyonları dinamik kapsam kullanır.perl ve Common Lisp her iki kapsamı da kullanabilirler. Programlama Dilleri - Pamukkale Üniversitesi 11

Dinamik kapsam örneği MAIN SUB1 i SUB1 SUB2 yi çağırır. SUB2 x i kullanır. MAIN -tanımlama x SUB1 - tanımlama x -... call SUB2... SUB2... - referans x -...... call SUB1 Statik kapsama MAIN içindeki x e referans Dynamic scoping SUB1 içindeki x e referans Dinamik kapsamanın değerlendirmesi: avantaj: kolaylık; dezavantaj: zor okunabilirlik. Perl ve Common Lisp de dinamik kapsam vardır. Programlama Dilleri - Pamukkale Üniversitesi 12

Dinamik kapsam değerlendirmesi Bir altprogramdaki içeride tanımlanmamış değişken programın sürecine göre farklı altprogramlardaki farklı tanımlara gönderme yapıyor olabilir. Altprogramlardaki değişkenleri başka altprogramların beklenmedik değiştirmelerinden korumak çok zor. Güvenilirlik çok düşüyor. Yerel olmayan değişkenlerin kullanım sırasında tip kontrolünü yapmak zor. Dinamik kapsamlı bir programı okumak pratikte çok zor. Her türlü dinamik kapsam öngörülemez. Yerel olmayan değişkenlere erişim çok fazla zaman aldığından, program yavaşlıyor. Programlama Dilleri - Pamukkale Üniversitesi 13

Kapsam ve yaşam süresi Kapsam ve yaşam süresi bir birleriyle ilgili ancak farklı kavramlardır. Bir Java metodunun içinde tanımlanmış değişken, metot içinde geçerlidir, yaşam süresi de metot çalıştığı sürecedir. C ve C++ da altprogram içinde static değişkenleri düşünün. Kapsamı sadece altprogramdır, fakat ana program çalıştığı sürece korunur; yaşam süresi programın yaşam süresi kadardır. Aşağıdaki örneğe bakarsak, sum değişkeninin kapsamı compute fonksiyonu ile sınırlıysa da, printheader çalışırken de yaşamaya devam eder. Programlama Dilleri - Pamukkale Üniversitesi 14

Referans Çevre Tanım:Bir komutun referans çevresi o komut tarafından erişilebilen bütün isimlerdir. Bir statik kapsamlı dilde bu, bütün lokal değişkenler ile çevreleyen kapsamlardan görünür değişkenlerdir. Bir alt programın yürütülmesi başlamış ve henüz sonuçlanmamışsa, o alt program aktif demektir. Bir dinamik kapsamlı dilde referans çevre,bütün lokal değişkenler ile aktif alt programlardaki bütün görünür değişkenlerdir. Programlama Dilleri - Pamukkale Üniversitesi 15

Referans Çevre örneği (Ada iskelet programı) Statik Örnek Nokta 1 2 3 4 Referans Çevre Sub1(X,Y), Example(A,B) Sub3(X), Example(A,B) Sub2(X), Example(A,B) Example(A,B) Programlama Dilleri - Pamukkale Üniversitesi 16

Referans Çevre örneği (C iskelet programı)dinamik Örnek Nokta 1 2 3 Referans Çevre Sub1(a,b), Sub2(c), main(d) Sub2(b,c), main(d) main(c,d) Programlama Dilleri - Pamukkale Üniversitesi 17

İsimli sabitler Tanım: Bir değişken sadece bir belleğe bağlıyken bir değere de sahipse buna isimli sabit (named constant) denir. Avantajı: okunabilirlik ve değiştirilebilirlik. Programları parametrize etmek için kullanılır. Değerlerin sabitlere bağlanması statik veya dinamik olabilir. Diller: Pascal: sadece kalıp değimler FORTRAN 90: sabit değerli ifadeler Ada, C++, and Java: her türlü ifade. Programlama Dilleri - Pamukkale Üniversitesi 18

Değişkenin başlangıç değeri Tanım: Bir değişkene bellekle bağlanırken verilen değere denir. Başlangıç değeri tanımlanırken verilir: örneğin Java int sum = 0; Programlama Dilleri - Pamukkale Üniversitesi 19