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

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

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

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

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

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

Bölüm 10. Altprogramları Uygulamak

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

Bölüm 9. Altprogramlar ISBN

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

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

NESNEYE YÖNELİK PROGRAMLAMA

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

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Sunum İçeriği. Programlamaya Giriş

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

Bölüm 9. Altprogramlar ISBN

BİL-141 Bilgisayar Programlama I (Java)

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

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

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

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

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

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

C++ Dersi: Nesne Tabanlı Programlama

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

Erişim konusunda iki taraf vardır:

Bağlama (Binding) Kavramı

HSancak Nesne Tabanlı Programlama I Ders Notları

1) Programlama dillerinin temel kavramlarını öğrenir. 1,2,4 1

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

Pointer Kavramı. Veri Yapıları

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

Göstericiler (Pointers)

Nesne Yönelimli Programlama

11- FONKSİYONLAR (FUNCTIONS)

Görsel Programlama-I (Visual Programming) 2.Hafta

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

7. HAFTA. Erişim Belirleyiciler

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

C++ Dersi: Nesne Tabanlı Programlama

Yrd. Doç. Dr. Caner ÖZCAN

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

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

ELN1001 BİLGİSAYAR PROGRAMLAMA I

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

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

Yrd. Doç. Dr. Caner ÖZCAN

Yrd. Doç. Dr. Caner ÖZCAN

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

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

BMH-303 Nesneye Yönelik Programlama

Programlama Dillerinde Kullanılan Veri Tipleri

1 PROGRAMLAMAYA GİRİŞ

Hafta 13 Fonksiyonlar

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

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++ Dersi: Nesne Tabanlı Programlama

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

Java Dersi. Altuğ Bilgin Altıntaş

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

Nesne Yönelimli Programlama

NESNE TABANLI PROGRAMLAMA Final Sınavı Cevapları

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

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

YZM 2105 Nesneye Yönelik Programlama

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

public static int Toplam int x, int y

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Üst Düzey Programlama

C++ Dersi: Nesne Tabanlı Programlama

VERİ YAPILARI LİSTELER. Yrd. Doç. Dr. Murat GÖK Bilgisayar Mühendisliği Bölümü YALOVA ÜNİVERSİTESİ

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.

BİL-142 Bilgisayar Programlama II

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:

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-1 Kapsama Kuralları & Rasgele Sayı Üretimi & Rekürsif (Özyinelemeli) Fonksiyonlar

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ü

C# Metotlar ve Metot Tanımlama

BİLG Dr. Mustafa T. Babagil 1

BMT 101 Algoritma ve Programlama I 11. Hafta. Yük. Müh. Köksal Gündoğdu 1

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

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

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

C++ Dersi: Nesne Tabanlı Programlama

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

HSancak Nesne Tabanlı Programlama I Ders Notları

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

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

YZM 2105 Nesneye Yönelik Programlama

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

10/17/2007 Nesneye Yonelik Programlama 3.1

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

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

İçerik. Kapsülleme ( Encapsulation ) Java da Kalıtım: Örnek 2.1. Kalıtım ( Inheritance ) Tekrar Ziyaret. Java da Kalıtım: Örnek 2.2.

Nesne Yönelimli Programlama

ALGORİTMA VE PROGRAMLAMA II

Dizi ( Array ) ve Dizgi ( String )

ALGORİTMA VE PROGRAMLAMA II

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

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

Transkript:

BLG339 PROGRAMLAMA DİLLERİ KAVRAMI Hafta 4 Ders 2 Yrd. Doç. Dr. Melike Şah Direkoğlu Alındığı kaynak: Addison-Wesley s Programming Language Concepts slaytları ve Prof. Dr. Tuğrul Yılmaz ın ders notlarından faydalanarak hazırlanmıştır. İ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. 1

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 iç içe alt programları desteklemez (C tabanlı diller gibi). İç içe alt programları desteklemeyen dillerde bile blok içleri ayrı kapsama alanlarıdır. Blok Kavramı 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 2

Kapsam Lokalde tanımlanmış aynı isimli değişken, dışarda tanımlanmış 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. Ada: unit.name C++: class_name::name 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. 3

Kapsam Statik Kapsam Örneği 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 4

Statik Kapsam Örneği 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. 5

Dinamik Kapsam (Dynamic Scope) 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. Dinamik Kapsama Örnek Sub2() deki x in kapsamı dinamiktir. Anlamı: x in değeri derleme sırasında belirlenemez. Program birimlerinin çağrılış sırasına göre x in değeri de değişecektir. Dinamik kapsamanın değerlendirmesi: avantaj: kolaylık; dezavantaj: zor okunabilirlik. 6

Dinamik Kapsam Değerlendirmesi Bir altprogram içerisinde tanımlanmamış değişken, programın sürecine 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. 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. 7