• Sonuç bulunamadı

İsimler ve Kapsam •

N/A
N/A
Protected

Academic year: 2021

Share "İsimler ve Kapsam •"

Copied!
7
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

25.11.2015

1

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.

(2)

25.11.2015

2

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

(3)

25.11.2015

3

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.

(4)

25.11.2015

4

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

(5)

25.11.2015

5

Statik Kapsam Örneği

• Varsayalım D, B’nin içindeki veriye ulaşmalı.

Statik Kapsam Örneği

• 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

(6)

25.11.2015

6

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.

(7)

25.11.2015

7

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.

Referanslar

Benzer Belgeler

Kayıt : Musculus flexor digitorum superficialis’ten antebrahium’un ortası düzeyinde konsantrik iğne elektrotla.. Parametre : Motor sinir aksiyon potansiyelinin

Daha sonra her iki tohum denemesi öncesinde, tohum örneklerinden tesadüfi olarak çimlendirme testinde kullanılacak tohumlar alınmıştır.. Araştırma

Sigorta ettirenin ve/veya sigortalının beyanı gerçeğe aykırı, yanlış veya eksik ise, sigortacının sözleşmeyi yapmamasını veya daha ağır şartlarla yapmasını

Tekrar Üretilebilirlik Kesinliği : Analizi yapan farklı kişi, farklı cihaz, farklı Laboratuar ve farklı günlerde elde edilen sonuçların standart sapması olarak hesaplanır.

isKontTarihi ĠĢbaĢı / kontrol tarihi String 10 Evet dd.mm.yyyy formatında zorunlu alan... Integer N/A Doğum Öncesi Analık Raporu

No: 26927 Atık Yönetimi Genel Esaslarına İlişkin Yönetmelik EK-IIIB kapsamında (Testing Methods of Annex V to Dir.. ÇEVRE VE

No: 26413 Denizlerde Balık Çiftliklerinin Kurulamayacağı Hassas Alan Niteliğindeki Kapalı Koy ve Körfez Alanlarının Belirlenmesine İlişkin Tebliği Kapsamında.. 7 13.06.2009

Metot çalışmaları sırasında günlük akış içerisinde değişiklikler oluşabilmektedir. Yeni personelin çalışmalara katılması, ekipman değişikliği, alan değişiklik