Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

VERİ YAPİLARİ VE PROGRAMLAMA

GİRİŞ
Programlamada veri yapıları en önemli unsurlardan birisidir. Program kodlarını yazarken kullanılacak veri
yapısının en ideal şekilde belirlenmesi, belleğin ve çalışma biçiminin daha etkin kullanılmasını sağlar.
Program içerisinde işlenecek veriler diziler ile tanımlanmış bir veri bloğu içerisinden seçilebileceği gibi,
işaretçiler kullanılarak daha etkin şekilde hafızada saklanabilir. Veri yapıları, dizi ve işaretçiler ile
yapılmasının yanında, nesneler ile de gerçekleştirilebilir.

Veri, bilgisayar ortamında sayısal, alfasayısal veya mantıksal biçimlerde ifade edilebilen her turlu değer
(örneğin; 10, -2, 0 tamsayıları, 27.5, 0.0256, -65.253 gercel sayıları, 'A', 'B' karakterleri,
"Yağmur" ve, "Merhaba" stringleri, 0,1 mantıksal değerleri, ses ve resim sinyalleri vb.) tanımıyla ifade

edilebilir.

Bilgi ise, verinin işlenmiş ve bir anlam ifade eden halidir. Örneğin; 10 kg, -2 derece, 0 noktası
anlamlarındaki tamsayılar, 27.5 cm, 0.0256 gr, -65.253 volt anlamlarındaki gerçek sayılar, 'A'
bina adı, 'B' sınıfın şubesi anlamlarındaki karakterler, "Yağmur" öğrencinin ismi, "Merhaba"
selamlama kelimesi stringleri, boş anlamında 0, dolu anlamında 1 mantıksal değerleri, anlamı bilinen ses
ve resim sinyalleri verilerin bilgi haline dönüşmüş halleridir. Veriler büyüklüklerine göre bilgisayar
belleğinde farklı boyutlarda yer kaplarlar. Büyüklüklerine, kapladıkları alan boyutlarına ve tanım
aralıklarına göre veriler Veri Tip’leri ile sınıflandırılmışlardır.
Her programlama dilinin kendine ait kabul edilmiş veri tipi tanımlamaları vardır. Programcı, programını
yazacağı problemi incelerken, program algoritmasını oluştururken, programda kullanacağı değişken ve
sabitlerin veri tiplerini bu tanımlamaları dikkate alarak belirler. Çünkü veriler bellekte veri tiplerinden
kendisine uygun olanlarının özelliklerinde saklanır.
Program, belleğe saklama/yazma ve okuma işlemlerini, işlemci aracılığı ile işletim sistemine yaptırtır. Yani
programın çalışması süresince program, işlemci ve işletim sistemi ile birlikte iletişim halinde, belleği
kullanarak işi ortaya koyarlar. Veri için seçilen tip bilgisayarın birçok kısmını etkiler, ilgilendirir. Bundan
dolayı uygun veri tipi seçimi programlamanın önemli bir aşamasıdır. Programcının doğru karar
verebilmesi, veri tiplerinin yapılarını tanımasına bağlıdır.
Veri Yapısı
Verileri tanımlayan veri tiplerinin, birbirleriyle ve hafızayla ilgili tüm teknik ve algoritmik özellikleridir.
Belleğin Yapısı ve Veri Yapıları
Yapısal olarak bellek, büyüklüğüne bağlı olarak binlerce, milyonlarca 1’er Byte (8 Bit)’lik veriler
saklayabilecek biçimde tasarlanmış bir elektronik devredir. Bellek, Şekil ’deki gibi her byte’ı bir hücre ile
gösterilebilecek büyükçe bir tablo olarak çizilebilir.

Her bir hücreyi birbirinden ayırmak için hücreler numaralarla adreslenir. Program, işlemci ve işletim
sistemi bu adresleri kullanarak verilere erişir (yazar/okur). Büyük olan bu adres numaraları 0’dan
başlayarak bellek boyutu kadar sürer ve 16’lık (Hexadecimal) biçimde ifade edilir. İşletim sistemleri
belleğin bazı bölümlerini kendi dosya ve programlarını çalıştırmak için, bazı bölümlerini de donanımsal
gereksinimler için ayırır ve kullandırır. Ancak belleğin büyük bölümü uygulama programlarının
kullanımına ayrılmıştır.
Temel/İlkel (Primitive) veri yapılarından birisinin tipi ile tanımlanan bir değişken, tanımlanan tipin
özelliklerine göre bellekte yerleştirilir. Örneğin;
char blok = 'A';
int agirlik = 10;
float uzunluk = 27.5;
değişken tanımlamaları sonunda bellekte Şekil 1.3 a)’daki gibi bir yerleşim gercekleşir. İşletim sistemi
değişkenleri bellekteki boş alanlara veri tiplerinin özelliklerine uygun alanlarda yerleştirir.
Basit (Simple) veri yapıları temel veri yapıları ile oluşturulur.
Örneğin;
int agirlik [6];
tanımlamasındaki ağırlık dizisi 6 adet int (tamsayı) veri içeren bir veri yapısıdır. Bellekte Şekil b’deki gibi
bir yerleşim gerçekleşir. İşletim sistemi dizinin her verisini (elemanını) ardı ardına, bellekteki boş alanlara
veri tipinin özelliklerine uygun alanlarda yerleştirir.
Örneğin;
char selam [] = "Merhaba";
veya
char selam [] = {'M','e','r','h','a','b','a','\0'};
Tanımlamasındaki selam dizisi 8 adet char (karakter) tipinde veri içeren bir string veri yapısıdır. Bellekte
Şekil c’deki gibi bir yerleşim gerçekleşir. İşletim sistemi string in her verisini (elemanını) ardı ardına,
bellekteki boş alanlara veri tipinin özelliklerine uygun alanlarda yerleştirir.
DEĞİŞKENLER
Temel programlama işlevlerini gerçekleştirebilmek için “değişkenler” kullanılmaktadır. Bir değişken küçük
bir depo alanıdır. İçinde sayılar, kelimeler, harfler saklanabilir. Değişkenler program içerisinde defalarca
kullanılsa da, içinde aynı anda sadece bir bilgi tutar. Değişkenler geçici olarak kullanıldıkları için, program
veya bilgisayar kapanınca silinir.
Dim isim As String, sayici As Integer

Yukarıdaki kod Visual Basic.net’te çalışmayacaktır. Çünkü VB.net tek bir satırda sadece aynı veri tipine ait
değişkenlerin tanımlanmasına izin vermektedir.
Dim adSoyad, bolum As String
Dim numara, sayici As Integer

Değişkenlere tanımlama sırasında ilk değerleri verilebilir.


Dim yas As Integer = 23
Dim AdSoyad As String = "Süleyman YARIKKAYA"
Dim numara As Integer = numara + 1

A.“Dim”, “Private, Public ve Static” Tanımlamalar


Bir değişkenin kullanılmadan önce tanımlanması gerekir. Bu tanımlama genellikle Dim deyimi ile
yordamın başında yapılır. Dim sözcüğü geçici Yerel değişken oluşturmak için kullanılır. Bir programda
geçici olarak verilerin temsili ve değerlerin saklanması için değişkenler kullanılır. Değişkenlerin değerleri,
program akışı içerisinde sürekli olarak değişebilir.
Dim yas As Integer
Dim AdSoyad As String
Dim numara As Integer

Değişken tanımlanmaz veya tanımlanırken tip belirtilmezse, Visual Basic.NET o değişkeni “Object” veri
tipinde algılar.

 Private Sözcüğü
Yerel değişkenler tanımlamak için kullanılır. Bu deyim aynı zamanda yerel prosedürlerin ve Class
Modüllerin tanımında da kullanılır.
Kullanımı: Private değişken_adi [[indis]] [As tipi]

Private Sayici1 As Integer


Private Sub DenemeGiris()
Sayici1 = 100
Sayici1 = Sayici1 + 1
Console.WriteLine(Sayici1)
End Sub
 Public Sözcüğü
Modül bazında Public ya da global değişken tanımlamak için kullanılır. Bir Public değişken hem proje
bazında kullanılabilir hem de projenin tüm modüllerindeki prosedürler tarafından kullanılabilir. Eğer
Public değişken Class modülde kullanılırsa proje dışında da değişkene erişebilir. Ayrıca Public olarak
prosedürler ve Class modüller de tanımlanabilir.
Kullanımı: Public değişken_adi [[indis]] [As [New] tipi]

Public Sayici1 As Integer

 Static Sözcüğü
Lokal değişkenleri, prosedürün her çağırılışında, bir önceki çağırılış sonunda hesaplanmış olan değerlerini
saklar hale getirmek için, Static sözcüğü ile tanımlanmaları gereklidir.
Kullanımı : Static değişken_adi [As tipi]

Private Sub DenemeGiris()


Static x As Double
x = x + 10
Console.WriteLine(x)
End Sub
Formlar söz konusu olduğunda değişkenler yordamların içinde ya da Forma ait (declaration)
penceresinde tanımlanır. Yordam dahilinde tanımlanan değişkenler ancak tanımlandığı yordam içinde
kullanılabilir. Söz konusu formun (declaration) penceresinde tanımlanan değişkenler Forma ait bütün
yordamlarda kullanılabilir.

VB projelerine form dosyaları ve Module dosyaları eklenebiliyor. Değişkenler, formlarda yada modüllerde
de tanımlanabilir. Projeye modül eklemek için Project – Add Module menüsünden faydalanılır.

 Değişken İsimlendirme

- Değişken ismi bir harf ile başlamalıdır. Bir rakam veya özel işaretle başlayamaz.
- Değişken isminde boşluk bulunmaz. Bunun yerine alt çizgi karakteri ( _ ) kullanılabilir.
- Değişken isminde sadece harfler, rakamlar ve alt çizgi karakteri bulunabilir.
- Değişkene verilecek isim Visual Basic komutlarından oluşmamalıdır.
B.SAYISAL OLMAYAN DEĞİŞKEN TÜRLERİ

I. String
Karakter sınırı verilmezse 2 milyar(231) karaktere kadar atama yapılabilen sayısal olmayan veri tipidir. Her
karakter hafızada 16-bit (2-byte) yer kaplar. Karakterlerden oluşan veriler String olarak tanımlanır. Bir
isim String olarak tanımlanmalıdır.
- String veriler sayıları içerebilir ancak sayısal işlemegiremez. String değişkenlere değer atamak için çift
tırnak ( “ ” )karakteri kullanılır.
- Veri tipini temsilen “ $ ” karakteri de kullanılabilir.
Dim AdSoyad As String
Dim Soyad As String = "CAN"
Dim isim$ = "Ayşe"
AdSoyad = "Ali Can"

Dim a, b, c As String
a = 168
b = 122
c = a + b
Console.WriteLine(c)
d = isim + Soyad
Console.WriteLine(d)
II. Char
Hafızada 16-bit (2-byte) yer kaplar. İçinde sadece 1 karakter barındırabilir. Bu tipten değişkenlere atama
yaparken sadece bir karakter ataması yapılabilir. Birden fazla atandığında sadece ilk karakter dikkate
alınacaktır.
Dim C1, C2, C3 As Char
C1 = "A"
C2 = "ABC"
C3 = Chr(65)
Console.WriteLine(C1) 'Sonuç=A
Console.WriteLine(C2) 'Sonuç=A
Console.WriteLine(C3) 'Sonuç=A

III. Boolean
Sadece True veya False değerleri tutabilir. Sadece iki durum değeri hafızada saklamak için kullanılır
(true/false, yes/no, or on/off). Bu tür değişkenlere atama yapılırken true, false değerleri atanabileceği gibi
sayısal değer de atanabilir.

- Değişkene sayısal 0 atanması durumunda değişken değeri False olur. Diğer tüm sayılarda True olur.
- Değişken değeri nümeriğe çevirildiğinde False değeri 0 olurken, True değeri de -1 olur.
Dim sayi As Boolean

sayi = True
Console.WriteLine(sayi)

sayi = 1
Console.WriteLine(sayi)

sayi = -1999
Console.WriteLine(sayi)

Dim sayisal As Integer

sayi = 6
Console.WriteLine(sayi)

sayisal = sayi
Console.WriteLine(sayisal)

IV. Date
Hafızada kaplar 64-bit (8-byte) yer kaplayan bu değişkene 1/1/100 ile 31/12/9999 arasındaki tarih ve
0:00:00 ile 23:59:59 arasındaki saat atamaları yapılabilir.
mm/dd/yyyy #5/31/1993#.

Dim tarih As Date


tarih = "17/11/2006"
Console.WriteLine(tarih)
Dim tarih As Date
tarih = #11/17/2006#
Console.WriteLine(tarih)
C. TAM SAYI DEĞİŞKEN TÜRLERİ

I. İnteger (%)
Tam sayı İşaretli (signed) değişkenleri tanımlamak için kullanılır. Hafızada 32-bit (4-byte) yer kaplar.
Değer aralığı -2,147,483,648 ile 2,147,483,647. “%” sembolü ile İnteger tipinde değişkenler
tanımlanabilir.

Dim Yas As Integer


Dim Sayici% = 10

Not: Bazı sistemlerde 16 bit (2-byte)’dır.

II. Short
Tam sayı İşaretli (signed) değişkenleri tanımlamak için kullanılır. Hafızada 16-bit (2-byte) yer kaplar.
Değer aralığı -32,768 ile 32,767. Atama yapılacak değerin sonuna “S” karakteri kullanılarak short değer
ataması yapılabilir.
Dim mesafe As Short = 1200
mesafe = 3276S
III. Long
Tam sayı İşaretli (signed) büyük değişkenleri tanımlamak için kullanılır. Hafızada 64-bit (8-byte) yer
kaplar. Değer aralığı -9,223,372,036,854,775,808 ile 9,223,372,036,854,775,807 (9.2...E+18). Atama
yapılacak değerin sonuna “L” karakteri kullanılarak Long değer ataması yapılabilir. “&” sembolü ile Long
tipinde değişkenler tanımlanabilir.

Dim mesafe As Long = 120000L


Dim Sayici& = 100
Not:Bazı sistemlerde 32 bit (4-byte)’dır.

IV. Byte
Tam sayı işaretsiz (Unsigned) değişkenleri tanımlamak için kullanılır. Hafızada 8-bit (1-byte) yer kaplar.
Değer aralığı 0 ile 255.
Dim BilgNotu As Byte
BilgNotu = 85
V. SByte
Tam sayı işaretli (signed) değişkenleri tanımlamak için kullanılır. Hafızada 8-bit (1-byte) yer kaplar. Değer
aralığı -128 ile 127.
Dim BilgNotu As SByte
BilgNotu = 85

Not: Uinteger,ULong ve Ushort veri türleri işaretsiz (unsign) yani sadece pozitif sayılar için kullanılır. Bu sayede üst sınır
veri türleri u- ile belirtilmeyen veri sınırının iki katıdır.
D. ONDALIKLI SAYI DEĞİŞKEN TÜRLERİ

I. Single
Kayan noktalı sayıdır. Tam sayı olmayan Ondalıklı sayı değişkenleri tanımlamak için kullanılır. Hafızada 32-
bit (4-byte) yer kaplar. Değer aralığı negatif değerler için -3.4028235E+38 ile -1.401298E-45 ve pozitif
değerler için 1.401298E-45 ile 3.4028235E+38 . “!” sembolü ile single tipinde değişkenler tanımlanabilir.

II. Double
Kayan noktalı sayıdır. Tam sayı olmayan Ondalıklı sayı değişkenleri tanımlamak için kullanılır. Hafızada 64-
bit (8-byte) yer kaplar. Değer aralığı negatif değerler için -1.79769313486231570E+308 ile -
4.94065645841246544E-324 ve pozitif değerler için 4.94065645841246544E-324 ile
1.79769313486231570E+308. “#” sembolü ile double tipinde değişkenler tanımlanabilir.

III. Decimal
Kayan noktalı sayıdır. Tam sayı olmayan Ondalıklı sayı değişkenleri tanımlamak için kullanılır. Hafızada
128-bit (16-byte) yer kaplar. +/-0.0000000000000000000000000001 (+/-1E-28) ve 9228 x 10^28. “@”
sembolü ile double tipinde değişkenler tanımlanabilir. Atama yapılacak değerin sonuna “D” karakteri
kullanılarak Long değer ataması yapılabilir.
Not: Bir kayan ondalıklı sayı ile çalışılırken,
- Bu sayıların hafıza tüm olarak tutulmadığı unutulmamalı.
- Bu sayılarda sıfır (0) yok olabilir veya eklenebilir 4.2000 ve 4.2 gibi
- Single 7 anlamlı basamağa, Double 15 anlamlı basamağa, Decimal 29 anlamlı basamağa sahiptir
- Single ve Double türü daha büyük sayılarla işlem yapabilmesine karşın basamak hassasiyetleri Decimal
kadar iyi değildir.

Dim a As Single
Dim b As Double
Dim c As Decimal
a = 1234567890123456789
b = 1234567890123456789
c = 1234567890123456789
console.writeline("Single sayı: " & a)
console.writeline("Double sayı: " & b)
console.writeline("Deciml sayı: " & c)

Not: Kodları çalıştırdıktan sonra atanan değerlere 3 ekleyiniz ve tekrar çalıştırınız ve sonuçları
karşılaştırınız.
Dim d1, d2, d3, d4 As Decimal
d1 = 2.375D
d2 = 1.625D
d3 = d1 + d2
d4 = 4D
Console.WriteLine("d1 = " & CStr(d1) & ", d2 = " & CStr(d2) & ", d3 = " &
CStr(d3) & ", d4 = " & CStr(d4))

IV. OBJECT (VARSAYILAN DEĞİŞKEN)


Tanımlayan değişkenler için kullanılan veri tipidir. VB 2005 ve öncesindeki versiyonlarda Variant olarak
tanımlanan veri tipi Visual Basic.NET’te Object olarak geçer. Bunun sebebi

Dim toplam ,sayi

Program esnasında herhangi bir tanıma gerek kalmadan tip değiştirebilmektedir. Bu avantajına rağmen
Object olarak tanımlanmış tiplerle yapılan işlemler diğer tiplere göre çok daha yavaş çalışır. Çünkü her
işlemde, işleme giren değişkenlerin tipleri kontrol edilmek zorunda kalınacak ve işlemler yavaşlayacaktır.
Not: Değişkenlerin tanımlanmasını mecburi tutmak için Declarations kısmında Option Explicit deyimi yazılmalıdır.
“Casting” Farklı Türlerin Birbirine Dönüştürülmesi
Programlamada zaman zaman bir veri tipinde saklanan değerin, farklı bir veri tipine dönüştürme ihtiyacı
duyarız. Bu işlemi yapan fonksiyonlara tip dönüşüm fonksiyonları adı verilir.

Geri
Fonksiyon Değer Yaptığı İşlem
Dönen
CBool (Değer) Boolean Matematiksel ifadeyi Boolean türüne dönüştürür.

CByte (Değer) Byte Matematiksel ifadeyi Byte türüne dönüştürür.

CCur (Değer) Currency Matematiksel ifadeyi Currency türüne dönüştürür.

CDate (Değer) Date Matematiksel ifadeyi Date türüne dönüştürür.

CDbl (Değer) Double Matematiksel ifadeyi Double türüne dönüştürür.

CDec (Değer) Decimal Matematiksel ifadeyi Decimal sayıya dönüştürür.

Cint (Değer) Integer Matematiksel ifadeyi tam sayıya dönüştürür.

CLng (Değer) Long Matematiksel ifadeyi Long türüne dönüştürür.

CSng (Değer) Single Matematiksel ifadeyi Single türüne dönüştürür.

CStr (Değer) String Matematiksel ifadeyi String türüne dönüştürür.


Örnek 1:
Dim girilen1, girilen2 As String
girilen1 = "6"
girilen2 = "10"
Console.WriteLine(Girilen1 + Girilen2)
Console.WriteLine(CInt(girilen1) + CInt(girilen2))

Örnek 2:
a = 2.4
b = 2.5
c = 2.6
d = 3.5

sonuc = CInt(A) 'Sonuc =2


Console.WriteLine (sonuc)

sonuc = CInt(B) 'Sonuc =?


Console.WriteLine (sonuc)

sonuc = CInt(C) 'Sonuc =3


Console.WriteLine (sonuc)

sonuc = CInt(D) 'Sonuc =4


Console.WriteLine (sonuc)
Örnek 3:

Dim a, b, c, d As Short
a = 10
b = 5
c = 10
d = 0

sonuc = CBool(a < b) 'Sonuc =False


MsgBox(sonuc)

sonuc = CBool(a > b) 'Sonuc =True


MsgBox(sonuc)

sonuc = CBool(a = c) 'Sonuc =True


MsgBox(sonuc)

sonuc = CByte(a < b) 'Sonuc =0


MsgBox(sonuc)

sonuc = CByte(a > b) 'Sonuc =255


MsgBox(sonuc)

sonuc = CByte(a = c) 'Sonuc =255


MsgBox(sonuc)
SABİTLER
Değişkenler program boyunca aynı değeri koruyabildiği gibi, gereksinmelerinize göre değerlerini birkaç
kez değiştirebilirler. Bazı durumlarda değişken değerlerinin program boyunca değiştirilmesi arzu
edilmeyebilir. Bu gibi durumlarda sabit verileri tanımlanır. Sabit verileri tanımlamak için const anahtar
sözcüğü kullanılır.
Uygulamanızda hiçbir değişiklik olmayan bir değer varsa, adlandırılmış bir sabit tanımlayabilir ve bunu bir
sabit değer yerine kullanabilirsiniz. Bir ad, bir değerden daha kolay anımsanacaktır. Sabiti yalnızca bir kez
tanımlayabilir ve kodunuzda birçok yerde kullanabilirsiniz.
Kullanımı:
Const constantlist=Değeri

Örnek:
Const pi = 3.14

Const ders =”Görsel Programlama”


Const Pi As Double=3.14
Const okul As String=”Bilgisayar Programcılığı”
Özetle tanımlanan sabite aktarılan veri sonradan değiştirilmek istendiğinde hata oluşur, sabitler daha
önce de belirtildiği gibi değerlerini program sonuna kadar korurlar.

You might also like