Değişken Tanımlamaları Hakkında

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Makronun başında Dim olarak değişken tanımlamamızın ,

Ve
En sondaki

Set S1 = Nothing
Set S2 = Nothing

satırlarının bize avantajı nedir?
 
Son düzenleme:
S

Skorpiyon

Misafir
Sayın AS3434,

Bildiğim kadarı ile (yanlış biliyor olabilirim),

Dim ile değişken tanımlamak, belleğin şişmesini, işlemlerin biraz daha hızlanmasını ve değişkene atanacak veri tipinin hataya neden olmasını engellemek içindir.

Set S1 = Nothing gibi ifadeler ise,
S1 değişkeni için atanan değerin, programın başka bir alanında S1 ifadesi geçtiğinde, programın tekrar ilk atadığımız değeri almaması için boşaltma işlemidir. Her kod bloğu için bu işlemin yapılması, temel olarak, hatanın önüne geçmek amaçlı yapılır. Siz bu ifadeyi kullanmadığınız takdirde, programınızın başka bir kod bloğu içinde S1 'e yeni bir veri atarsanız, hataya neden olabilir gibi.

Saygılarımla...
 
Son düzenleme:

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Sayın Sertkaya

Açıklamanız için teşekkür ederim. Aslında, konu gözümden kaçmış.

Sayın V.Basic For Applications aşağıdaki linkte güzelce açıklamış.

http://www.excel.web.tr/showthread.php?t=38176

Bu da Sayın Danersin'in açıklaması

http://www.excel.web.tr/showthread.php?t=4299

Set S1 = Nothing konusunda yaptığınız açıklamaya da teşekkür ederim.

Sevgi ile kalın.
 
Son düzenleme:
S

Skorpiyon

Misafir
Sayın AS3434,

Yardımcı olabildiysem ne mutlu. Eğer yarım saat vaktiniz var ise, değişken tipleri hakkında sizin için bir bilgi de (elimdeki bir kaynaktan) ben gireceğim.

Saygılarımla...
 
S

Skorpiyon

Misafir
Değişken Tanımlamaları Hakkında; (ALINTIDIR)

Hatası az bir programlama yapabilmek için kullanılan veri tiplerini ve veri yapılarını iyi bilmeliyiz. Burada önemli olan nerede hangi veri tipini kullanacak oluşumuzdur. Şunu unutmamalıyız ki, her değişkenini bir adı ve veri tipi vardır. Değişkenin adından kastımız, değişkenin yazdığımız kod içinde ulaşacağımız ismidir. Bu ad ne kadar kısa ve anlaşılır olursa programın kontrolü o kadar basit olur. Değişkenini Veri Tipinden kastımız ise, değişkende saklanan veri tipinin türüdür.

Örnekler isek,
Dim say as integer
say burada değişkenin ismi, integer ise veri tipinin türüdür.


Aşağıda verilen kurallar doğrultusunda değişkenler tanımlayabilmemiz mümkün olmaktadır.

* Tanımlanacak değişkenlerin ilk karakteri mutlaka bir harf ile başlamalıdır. Geri kalan karakterler; harflerden, rakamlardan, alt çizgi karakterinden oluşabilir.
* Değişken isimlerinde noktalama işaretlerini, matematiksel, mantıksal ve karşılaştırma operatörleri kullanamayız.
* Değişken isimleri 255 karaktere kadar uzunlukta olabilir.

Değişken tanımlarken Visual Basic'te Dim bildiri deyimini kullanabiliriz. Değişkenin tanımlanması hafızada ayırılacak hafıza miktarının belirli olmasını sağlar. Eğer değişkenlerin tipini belirtmeden bir kullanım yaparsak bu değişkenlerin Variant tipinde olduğu kabul edilir. Bu da hafızada gereksiz yer kaybına sebep olur.

Veri Tipleri ve Açıklamalar :

INTEGER (Tamsayılar) = Visual Basic'te tam sayı değişkenleri tanımlamak için kullanılır. Hafızada 2 byte yer kaplarlar. Alabileceği değer aralığı -32768 ile +32767 arasındadır. Defint bildiri deyimi ile tanımlanabilirler. Ayrıca bir değişkenin sonunda % karakteri bulunuyorsa bu değişken integer tipindedir.

BOOLEAN = Mantıksal veri tipleri için kullanılırlar. İki seçenekten birisini alabilirler. Bunlar True veya False değerleridir. Bellekte 2 byte yer kaplarlar. Boolean tipindeki bir değişkeni tanımlamak için DefBool sözcüğü kullanılır.

LONG (Uzun Tamsayı) = Daha büyük bir aralıkta integer yani tamsayı tanımlamak için kullanılabileceğimiz bir veri tipidir. Hafızada 4 byte yer kaplarlar. Kullanılabilecek uç değerler +2.147.483.647 ile -2.147.483.648 arasındadır. Long tipinde bir değişken tanımlamak için DefLng bildirimini veya değişken sonunda & karakterini kullanabiliriz.

SINGLE (Tek - Duyarlı Sayı) = Tam sayı olmayan küsuratlı sayılar için kullanabileceğimiz bir veri tipidir. Kayan - noktalı sayı olarak isimlendirilir. Single tipindeki veriler bellekte 4 byte yer kaplarlar. Negatif sayılar için alabileceği aralık -3,402823E38 ile -1.401298E-45, pozitif sayılar için alabileceği aralık 1.401298E-45 ile 3.402823E38 arasındadır. Single tipinde veri tanımlamak için DefSgn bildirimi veya değişken sonunda ! karakteri konulur. 7 haneye kadar hassastır. Daha sonrası yavurlatılır.

DOUBLE (Çift - Duyarlı Sayı) = Visual Basic'te kullanılabilecek en büyük sayısal değerlerin veri tipidir. Hafızada 8 byte yer kaplarlar. 16 haneye kadar hassastırlar. Maksimum alabileceği değerler pozitif sayılar için 4.94065645841247E-324 ile 1.797693134862232E308, negatip sayılar için -1.797693134862232E308 ile -4.94065645841247E-324 arasındadır. DefDbl bildirimi veya # sembolü ile double tipindeki değişkenler tanımlanabilir.

CURRENCY (Para Türündeki Sayı) = Sayısal tipteki veriler için tanımlanmış özel bir veri tipidir. Hafızada 8 byte yer kaplarlar. 4 hane ondalık kısmı olmak üzere toplam 19 haneden oluşur. (nokta hariçtir) Alabileceği maksumum değerler -922.337.203.685.477.5808 ile 922.337.203.685.477.5807 arasındadır. @ sembolü veya DefCur bildirimi ile tanımlanabilirler.

DATE (Tarih Türündeki Sayı) = Tarih türündeki bilgileri kullanmak için oluşturulmuş veri tipleridir. Hafızada 8 byte yer kaplarlar. 1 Ocak ile 31 Aralık 9999 arasındaki tarihleri kullanabilirsiniz. DefDate bildirisi ile tarih türündeki değişkenler tanımlanabilir.

STRING (Dizgi) = Metin türü bilgileri saklamak için kullanılabilecek veri türüdür. 16 bitlik versiyonda 0 ile 65538 arasında. 32 bitlik versiyonda ise 0 ile 2.000.000.000 arasındaki karakter alabilir. String türünde değişken tanımlamak için Defstr veya $ sembolü kullanılır.

OBJECT (Nesne) = Herhangi bir nesne türü olabilir. Hafızada 4 byte yer kaplarlar.

VARIANT (Değişiklik Gösteren) = Bu tipte tanımlanmış bir değişkene herhangi bir tip veri yüklenebilir. Yani ne tür bir veri gireceğimizi bilmediğimimiz değişkenleri Variant tipinde tanımlayabiliriz. Bu tür değişkenler hafızada 16 byte'tan fazla yer kaplarlar. DefVar bildiri sözcüğü ile Variant türünde değişkenler tanımlanabilir.

Unutmayın, eğer programlama yaparken değişken tipini belirtmezseniz, bilgisayar bunu VARIANT tipi olarak kendisi tanımlayacak ve hafıza kısa sürede dolacaktır.

KAÇ TÜRLÜ DEĞİŞKEN VARDIR VE NERELERDE TANIMLANIRLAR ???

2 türlü değişken vardır. Global (Genel) ve Local (Yerel). Değişkenler hazırladığımız program modülünün içinde 2 yerde tanımlanırlar. Bunlar, prosedürün içinde ve dışında.

Genel değişkenler, programın bütün prosedürleri tarafından kullanılabilir. Bunlar prosedürün dışında tanımlanırlar. Tanımlandıkları yere genel olarak "Tanımlama bölümü" denir. Genel değişkenler tanımlanırken PUBLIC anahtar sözcüğü kullanılır.

Yerel değişkenler sadece tanımlandıkları prosedürlerde ve prosedürün içinde kullanılırlar. Dim ve Static anahtar sözcüklerinden herhangi biri ile kullanılırlar. Dim tipi değişkenlerde; Görevleri bitince hafızadan silinirler. Aynı prosedür tekrar çalıştırıldığında yeni bir edğer almaya müsait olarak bekler. Static tipi değişkenlerde durum biraz farklıdır. Prosedür durdurulsa ve tekrar çalıştırılsa da ilk değerini korur ve tekrar çağrıldığında değişken en son değerlerini kullanır.

Kısaca Static için şu denilebilir; Yerel olarak tanımlanan bir değişkenin değerinin tanımlandığı prosedürün çalışması bittikten sonra da, değerinin korunması isteniyorsa Dim yerine Static anahtar kelimesi ile tanımlama yapılır.

Son Olarak;

Hazırlanan programlarda bazen hiç değişmesini istemediğiniz sabit değerler kullanmak isteyebilirsiniz. Bu sabit değerler bazen sayı değerlerine karşılık gelebileceği gibi, bazen de çok uzun metinleri kısaltmak için kullanılabilir. Bu konu hakkında aşağıdaki tanımlama şekli sanırım açıklayıcı olacaktır.

Const pi = 3.14
Const buyuk = "Aramış olduğunuz en büyük değer bulunmuştur" vb.

Saygılarımla...
 
Son düzenleme:

AS3434

Özel Üye
Katılım
13 Ocak 2005
Mesajlar
1,820
Excel Vers. ve Dili
M.Office/Excel 2007 Türkçe
Başka bir linkteki konu dışına taştığı için yukarıdaki mesajlar buraya taşınmıştır.


Sayın Sertkaya

Açıklamalarınız için teşekkür ederim.
 
Son düzenleme:
Üst