Basit

resim
Geri dön
Değişkenler, Dizilimler, İşaretler


Yazılım geliştirmenin temelini bilgi oluşturur. Bilgisayardaki herşey bilgidir. Bilgiler okunur, değerlendirilir ve yazılır. Tüm mesele bundan ibarettir. Bilgilere göre uygulama belli bir yol izler ve bilgiler doğrultusunda sonuçlar verir.

Evet, tüm işimiz bilgilerimizi yönetmektir. Şimdi aklınıza gelecek ilk soruyu tahmin ediyorum, mutlaka soracaksınızdır "hangi bilgiler? ne bilgisi?"

Bu çok güzel bir soru ve bu soruyu yanıtlamak oldukça güç. Bu yüzden bir bilgisayar programının nasıl çalıştığını anlamanız gerekiyor.

Bir Bilgisayar programı nedir?

Bunu bir örnekle anlatmaya çalışacağım. Evden çıkıcaksınız ve eşiniz elinize bir kağıt parçası sıkıştırır ve bunda dönüşte alışverişte almanız gereken şeyler yazılıdır.

Fakat siz kapıdan çıkarken henüz işin yolunu tutuyorsunuz. Evet, bu yolda ilk adımınızı attınız ve üzerinizi giyinip, ayakkabılarınızı da giyerek, kapıdan dışarı çıktınız.

Sonra merdivenlerden basamak basamak dış kapıya indiniz ve kapıya yönelerek açtınız ve binadan çıktınız.

Bitmedi! Arabanıza doğru yol aldınız ve birkaç adım sonra arabaya vardınız. Anahtarınızı cepten çıkararak arabanın kapısını açıp, direksiyon tarafına geçtiniz. Sonra arabayı çalıştırıp yola çıktınız.

İşe varana kadar birkaç ampülde durmak zorunda kaldınız, bazı ara sokaklardan geçmek durumunda oldunuz ve bunun için en kısa yol hangisi ise onu kararlaştırıp o yoldan gittiniz.

İşinize vardınız, işinizi yine titizlikle adım adım, tane tane yaptınız. Sonra işten çıktınız ve yine arabanıza yöneldiniz. Sonra yakındaki marketi tespit edip o tarafa doğru yola çıktınız.

Markete varınca eşinizin size vermiş olduğu kağıdı çıkarıp sırayla Limon, Yumurta, Tomates, Fasulye, Şekertozu, Biberon, Çöp Poşeti gibi gerekenler nelerse aldınız ve sonra eve geçtiniz.

Farkındaysanız, sizi bıktırmamak için daha çok ayrıntıya girmek istemedim. Ama burada anlattığım hikaye örneğin sizin bugünlük programınızdı.

Bilgisayar programlarıda aslında böyle adımlardan oluşuyor. Mesela fareyi ekranda gezdiriyorsunuz, sizin gözünüzde ekranda bulunan küçük bir işaret ekran üzerinde hareket ediyor. Bir pencereden bir başka pencereye varıyor, bir menüye tıklıyor, açılan menü içinde bir öğeye iniyor ve ona tıklıyor.

Bu çok sırdan gibi gözüken olayın ardında onu gerçekleştirmek için bir çok işlem yapılması gerekiyor. Mesela fare simgesinin eski pozisyondan silinip yeni pozisyona çizilmesi gibi. Ondan önce farenin yeni pozisyonunun tespiti gibi. Hangi fare tuşuna basıldığını tespit etmek gibi.

Bir program kısacası bir çok işlemin ardı ardına gerçekleşmesi sonucunda ortaya çıkan çözümdür. İşlemlerden söz ediyoruz ya, bu işlemlerin gerçekleşebilmesi için bilgiye ihtiyaç var.


Bilgi nedir?

Bilgisayar adına layık aslında sadece sayısal işlemler yapmaktadır. Yani söz ettiğimiz bilgi tamamen rakamlardan oluşur. Fakat sizin karşınıza bu rakamlar zaman zaman bir mektup, bir makale, bir video, bir müzik, bir resim, bir tablo, bir uçak bileti rezervasyonu, bir bankacılık işlemi gibi farklı şekillerde çıkıyor.

Kod geliştirmek ise işte bu tür sonuçları gerçekleştirmenin sanatıdır. Bunun için bilgileri değerlendiririz. Mesela "Merhaba" sizce bilgisayar dilinde nedir? Hiç düşündünüz mü?

Bilgisayara göre "Merhaba" aslında bir dizi rakamdır:

M e r h a b a
77   101   114   104   97   98   97  


Ekranda gördüğünüz göz kamaştırıcı renkler ekran işlemcisi tarafından ekrana yansıtılan ışık kırma dereceleridir. Bu dereceleri tarif eden rakam ise kırmızı, yeşil ve maviyi temsil edip her biri için 0 ile 255 arasında bir değer içeren RGB-modelinde bir rakamdır. Mesela siyahın karşılığı 0 iken beyazın sayısal değeri ise 16777215.

Örnek:

RGB 0 0 0   ->   0   ->   Siyah
RGB 255 255 255   ->   16777215   ->   Beyaz



Gelelim asıl meseleye

Peki değişken, dizilim ve işaret nedir? Bunların her birini tek tek tanıyacağız. İlk olarak hepsinin temelini oluşturan Veri konseptini öğrenelim.


Veri konsepti nedir?

İnsanoğlu makinadan daha akıllı olsada, sadece rakamlarla resim çizip, beste yapamaz. İnsana daha somut ve işini kolaylaştırıcı olanaklar gerek.

Bunun için 50inci yıllardan bu yana yazılım dilleri geliştirilirken birçok yöntem denenmiş ve belli bir veri konsepti netleşmiş ve benimsenmiştir.

Makina ile insan arasında tercümanlık yapan yazılım dilleri insanın anlayabileceği, fakat bilgisayarın dilinede mümkün oldukça yakın bir yapıya sahip bu konsepti otomatik olarak gerçekleştirmektedir ve böylece yazılımcı asıl rakamsal değerlerle uğraşmak zorunda kalmamaktadır.


Bilgisayarın anladığı en ufak bilgi "Elektrik akımı var (1)" veya "Elektrik akımı yok (0)" bilgisidir. Bu en ufak bilginin adı Bit (Binary Information Target), Türkçe karşılığı ile "İkili Bilgi Hedefi" veya Adresi. Aslında basit bir şalterdir.

Bu yetersiz olduğu için Bilgisayar işlemcileri Bitlerle tek tek değil, Bitlerden oluşan akım zincirleriyle çalışırlar. Bilgisayarın en az bilgi olarak kabul ettiği Bit zincirinin adı Bayttır. Bir Bayt 8 adet Bitten oluşur. Bit zincirleri sağdan sola doğru ikili sistemin üzerinden hesaplanır.

Örnek:

Bit  4   Bit  3   Bit  2   Bit  1  
Model:   8 4 2 1
0 0 0 1 =   1
0 0 1 0 =   2
0 1 0 0 =   4
1 0 0 0 =   8
0 0 1 1 =   2 + 1 = 3
0 1 1 0 =   4 + 2 = 6
1 1 0 0 =   8 + 4 = 12


Görüldüğü gibi bir Bit zinciri sayesinde farklı değerlere ulaşılabiliniyor. Modern İşlemcilerin tanıdığı zincirler şöyledir:

Bayt (Byte)   8 Bitten oluşur
ÇiftBayt (Word)   16 Bitten oluşur
DörtBayt (DWord)   32 Bitten oluşur
SekizBayt (QWord)   64 Bitten oluşur


Bir program geliştirirken her amaçladığın bir bilgi için belli bir hafıza kapasitesine ihtiyacın olacaktır. Bilgisayarın hafızası insan hafızası gibi sınırsız değildir. Bu yüzden kullanmak istediğin kapasiteyi çok iyi hesaplaman gerekmektedir.

Bu işi kolaylaştırmak için yazılım dilleri Bit zinclerine ve Bit zinclerinden oluşan dizilimlere isimler vermiştir. Bu isimler aynı zamanda Veri türleridir.


Basitin Veri Türleri

Basit profesyonel bir yazılım dili olarak bazı temel veri türlerini sunar ve bunun dışında yeni veri türleri oluşturabilir. Bu bölümde temel veri türlerini tanıyacağız:

Veri Türü Bit Adeti Kapasitesi Amacı
YarıBayt 8 -128 + 127 En düşük sayısal değerleri karşılamak içindir
Bayt 8 0 - 255 En düşük, fakat pozitif olan sayısal değerleri karşılamak içindir
Ascii 8 0 - 255 Ascii Tablosunun karakterlerini desteklemek içindir (Özellikle C fonksiyonlarıyla veri alışverişinde bulunurken gereklidir)
ÇiftBayt 16 0 - 65535 Geniş bir banda sahip olup, sadece pozitif sayısal değerleri karşılamak içindir
SafKüçükRakam 16 0 - 65535 Geniş bir banda sahip olup, sadece pozitif sayısal değerleri karşılamak içindir
KüçükRakam 16 -32768 - +32767 Geniş bir banda sahip olup, hem pozitif, hemde negatif sayısal değerleri karşılamak içindir
Renk 32 -2147483648 +2147483647 KYM (RGB) ve KYMŞ (RGBA) renklerini karşılamak içindir
Saat 32 -2147483648 +2147483647 Saat, Dakika ve Saniyeyi karşılamak içindir
Rakam 32 -2147483648 +2147483647 Standart sayısal değerleri karşılamak içindir
SafRakam 32 0 - 4294967295 Standart geniş bir banda sahip olup, sadece pozitif sayısal değerleri karşılamak içindir
EsnekRakam (32Bit) 32 -2147483648 bis +2147483647 32 Bit derlemede Rakam ile aynıdır
SafEsnekRakam (32Bit) 32 0 - 4294967295 32 Bit derlemede SafRakam ile aynıdır
EsnekRakam (64Bit) 64 -2147483648 bis +2147483647 64 Bit derlemede GenişRakam ile aynıdır
SafEsnekRakam (64Bit) 64 0 - 4294967295 64 Bit derlemede SafGenişRakam ile aynıdır
GenişRakam 64 ?9223372036854775808 - +9223372036854775807 Çok geniş bir banda sahip olup, hem pozitif, hemde negatif sayısal değerleri karşılamak içindir
SafGenişRakam 64 0 - 18446744073709551615 Çok geniş bir banda sahip olup, sadece pozitif sayısal değerleri karşılamak içindir
KüçükVirgül 32 -1175494e-38 - +3402823e+38 Normal boyuttaki virgüllü rakamlar içindir
Virgül 64 -22250738585072013e-308 - +17976931348623157e+308 Büyük virgüllü rakamlar içindir
İz 32 0 - 4294967295 Türü belirsiz, işaretli adresleme içindir
Tarih (32Bit) 32 -2147483648 bis +2147483647 Sadece Tarih bilgisini içermek içindir
Tarih (64Bit) 64 ?9223372036854775808 - +9223372036854775807 Sadece Tarih bilgisini içermek içindir
TarihSaat (32Bit) 32 -2147483648 bis +2147483647 Tarih ve Saat bilgisini içermek içindir
TarihSaat (64Bit) 64 ?9223372036854775808 - +9223372036854775807 Tarih ve Saat bilgisini içermek içindir
AsciiMetni * Karakter başına Bayt Bu tür C kütüphaneleri ile veri alışverişi için özel olarak sunulur. Basit standart olarak Metin türünü kullanır ve tüm karakterleri Unikod modelinde Metin türünde tutar
Metin * Karakter başına ÇiftBayt Basitin sunduğu standart karakter türüdür. Tüm metinsel veriler bu türle tutulur
Esnek (32 Bit) 32 0 - 4294967295 Esnek özel bir türdür. Tüm diğer türleri destekler. Bazen gerekli olduğu için sunulmaktadır. Fakat standart olarak asla kullanılmamalıdır. Sadece gerçekten gerektiği yerde kullanılması doğrudur.
Esnek (64 Bit) 64 0 - 18446744073709551615 Veri Türü "Esnek" özel bir türdür. Bu türün özelliği ise, diğer türlerin hepsinden olabilir. Esnek ihtiyaç durumunda yeniden yapılandırılır. Esnek türünün kullanılmasının gerekli olduğu durumlar mutlaka vardır. Ama önerilen o ki, mümkün oldukça bu türden az kullanılmasıdır. Çünkü "Esnek" normalden çok daha fazla hesaplama ve işlem adımları gerektiriyor. Bu durum programın yavaşlamasına ve ağır çalışmasına sebebiyet verebilir. Tabloya bakıldığında kapasite açısından aynı kapasiteye sahip türler ile karşılaşıyoruz. Kapasiteleri aynı olsa bile kullanım durumlarında farklılıkları ortaya çıkmaktadır.


Değişken nedir?

Bir değişken bir veri türünden oluşan adrestir. Bu adrese Basit sayesinde bir isim veririlir, o isim altında o adrese erişebilir, oradaki veriyi okuyabilir ve değiştirebilirsin.

Bir değişkeni kullanmadan önce onu tanımlamak gerekiyor. Bunu yapmak için Basit iki farklı yöntem sunuyor:

Değişken KüçükRakam YaşımKaç



Veya

Belirle KüçükRakam YaşımKaç



Değişkeni, lokal birimde olması şartıyla tanımlarken ona veri girebilirsin:

Değişken KüçükRakam YaşımKaç = 36



Birçok değişkeni aynı anda tanımlamak işini kolaylaştırır:

Değişken KüçükRakam a; b; c; d; e



Farklı türlerden tanımlamakta mümkün:

Değişken KüçükRakam a; b; c; Virgül d; e; Metin met1; met2



Değişken nasıl okunur ve değişkene nasıl yazılır?

"İşlem Operatörleri" bölümü bu konuda daha kapsamlı bilgi vermektedir. Burada sadece kısa örneklerle yetineceğiz.

Örnek 1:

Değişken Rakam a ? Değişkeni tanımlıyoruz
a = 5 ? Değişkene veri giriyoruz
Denetim a ? Değişkeni okuyoruz



Örnek 2:

Değişken Rakam a; b; c ? Değişkenler tanımlıyoruz
a = 5 ? veri
b = 3? giriyoruz
c = a + b ? yazarken, kaynakları okuyoruz
Denetim c ? Sonucu okuyoruz



Örnek 3:

Değişken Rakam a; b; c ? Değişkenler tanımlıyoruz
a; b; c = 8 ? Tümüne 8 değerini giriyoruz
Denetim a && b && c ? Sonuçları okuyoruz





"Değişken" ve "Belirle" arasındaki fark nedir?

"Değişken" komutunun sunduğu tüm imkanları "Belirle" aynen sunmaktadır. Fakat "Belirle" daha çok imkan sunmaktadır ve bunları yeri geldiğince yavaş yavaş izah edeceğim.



Dizilim nedir?

Bir dizilim temel olarak aslında bir değişkendir. Fakat normal bir değişkenden farklı olarak ya boş olabilir, ya bir veri içerebilir veya birden fazla veri içerebilir. Daha çok bir liste gibidir. Aynı türden farklı değerler içerir. Bir metinde tam manasıyla özel bir dizilim türüdür.

Bir dizilimi kullanmadan önce onu tanımlamak gerekiyor. Basit bunun için iki imkan sunuyor:

Dizilim Metin isimListesi



Veya

Belirle Dizilimsel Metin isimListesi



Birçok dizilimi aynı anda tanımlamak işini kolaylaştırır:

Dizilim Metin a; b; c; d; e



Farklı türlerden tanımlamakta mümkün:

Dizilim KüçükRakam a; b; c; Virgül d; e; Metin met1; met2





Dizilim nasıl okunur, dizilime nasıl yazılır?

"İşlem Operatörleri" bölümü bu konuda daha kapsamlı bilgi vermektedir. Burada sadece kısa örneklerle yetineceğiz.

Örnek 1:

Dizilim Metin isimListesi
isimListesi[] = "Hasan"
isimListesi[] = "Hayrettin"
isimListesi[] = "Hulusi"
DizilimselDenetim isimListesi



Örnek 2:

Dizilim Metin isimListesi
isimListesi[] = "Hasan" ; "Hayrettin" ; "Hulusi"
DizilimselDenetim isimListesi



Örnek 3:

Dizilim Metin isimListesi
isimListesi[] = "Hasan" ; "Hayrettin" ; "Hulusi"
DizilimselDenetim isimListesi
isimListesi[2] = "Hilmi"
isimListesi[1] = "Hakan"
isimListesi[0] = "Halit"
isimListesi[] = "Halil"
isimListesi[] = "Haydar"
isimListesi[10] = "Hüsamettin"
DizilimselDenetim isimListesi





İşaret nedir?

Her verinin normalde kesin bir adresi vardır. Bu durum statiktir. Yani söz konusu verilerin adresleri bellidir, çünkü kodda kesin olarak belirtilmiştir.

Fakat bazen öyle senaryolarla karşı karşıya kalırsın ki, bir tek adres üzerinden farklı adreslere erişmek zorunda olursun. Söz konusu adresler bellidir, ama o an ki kod bölümünde her biriyle tek tek iletişim kurmak optimal değildir.

Bazende başka bir geçerlilik alanında bulunan bir adrese erişim gerekir, mesela yazmak için.
Bundan öte kodda belirlenmemiş program gidişatı esnasında sonradan ihtiyaç duyulduğu için rezerve edilen adres alanları olabilir. Onlara erişimde tabiki gereklidir.

Bu durumların her birinde işaretler yardımcı olur. İşaret adı üstünde bir şeye işaret eder. İşaret ettiği ise bir adrestir. Tüm değişkenler ve dizilimlerde sonuçta adrestir.

Basit işaretleri üç ayrı modelde organize eder:

Model 1: Türe göre işaret

Bu işaretler gerçekten tanımlanmış olan bir değişken veya dizilim için sunulmaktadır. Türe göre olması sayesinde hata yapma olasılığını ortadan kaldırır.

Mesela Rakam türünden bir değişkene işaret eden bir İşaret tanımı asla KüçükRakam, EsnekRakam, Virgül, Esnek, Metin veya Karakter türünden bir değişkeni kabul etmez.

Böylece kodu yazarken doğru işaretlemek zorunda kalır, hataları hemen tespit edip, düzeltebilirsin.

Bu tür bir işareti oluşturmak çok kolaydır. Normal bir değişken veya dizilim tanımlama modeliyle aynıdır, sadece "İşaretli" anahtar kelimesi önüne gelir.:

Değişken İşaretli Rakam a
Dizilim İşaretli Metin b



Gerçek bir değişken veya dizilim adresini bir işarete vermek
şu biçimde gerçekleşiyor:

Değişken Rakam ben = 5
Değişken İşaretli Rakam sen
sen = ben



İşaret okunurken hep işaret ettiği adresin verisini verir:

Denetim sen ? sonuç olarak 5 verecektir



İşareti yazarken, ancak kendi türünden bir adres, yani değişken veya dizilim kendisine sunulabilir. Bunlar dışında sadece 0 ve Boş komutu kabul edilir. 0 veya Boş, işareti sıfırlar. Yani işaret herhangi bir adrese işaret etmez. 0 kalır. Alternatif yöntem:

Yoket sen



aynı sonucu doğurur.

İşaretin yazım için kabul ettiği tek operatör = operatörüdür. Diğer durumlarda derleyici hata verecektir.


Model 2: Türleri temsilen işaret

Bu işaretler belli bir türe göre değildir. Tüm türlerin adresini kabul eder. Bu ancak adresin matematiksel değerine ulaşmak için bir imkandır. Bundan ziyade elde edilen adres ancak doğru türden bir işarete verilmelidir. Aksi taktirde hata oluşabilir.

Bu modelden işaret "İz" türündendir.

Örnek:

Değişken İz benimİşaretim



Kullanım kuralları Model 1 ile aynıdır.


Model 3: Bellek alanına işaret

Bu işaret "İşaret" komut ile sunulur. "İşaret" kendine has bir kuraldır ve arabellekte gerçekten bir alan rezervasyonu yapar. Değişkenin kendisi bu alanın giriş adresini sunar. "Bellek" modülü ile bu alan içinde her türlü işlem yapılabilir. Tanımı:

İşaret işaretimBenimBoş ? Boş bir işarettir
İşaret işaretimBenimDolu Boyut 100 ? 100 Bayt kapasiteye sahip bir bellek alanına işaret eder



Ayrıntılı bilgi "Bellek Modülü" bölümündedir.




Belirle

"Belirle" komutunun çok fonksiyonu var. Bu bölümde temel fonksiyonunu tanıyacağız. "Belirle", Değişken, Dizilim ve İşaretli komutlarının işini aynen görüyor ve bunları aynı zamanda kombine edebiliyor.

Belirle Rakam a ? Değişken a
Belirle Dizilimsel Rakam a ? Dizilim a
Belirle İşaretli Rakam a ? İşaretli Değişken a
Belirle Dizilimsel İşaretli Rakam a ? İşaretli Dizilim a



Örnek kombinasyon:

Belirle Rakam a; b = 5; Dizilimsel c; DizilimDeğil İşaretli Bayt d; e; Dizilimsel İşaretli Bayt u






Örnek

İnternetten bilgi edinme

Geri dön



Giriş      Kaydol      Bilgi      Gizlilik      Site Haritası



Bu İnternet sitesinde bulunan tüm kod, görsel kaynaklar ve bilgi, özellikle belirtilmemiş ise, 5M-Ware'e aittir ve tüm hakları saklıdır. Bu kaynakların izinsiz kopyalanması, izinsiz başka platformlarda kullanılması yasaktır. Ayrıntılı bilgi için Kullanıcı Sözleşmesini inceleyebilirsin.


5M-Ware Youtube Videoları Blogger Tumblr


Icons erstellt von Freepik from www.flaticon.com


Tüm Telif Hakkı Saklıdır© 2019-2020 5M-Ware
info@basit.web.tr
ok
Bu web sitesi çerezleri saklamaz. İletişim formu aracılığıyla yapılan sorular geçici olarak saklanır ve işlemden sonra silinir. Yazı tipleri Google’dan alınmıştır. Ayrıntılı bilgi için  Gizlilik Politikamızı  inceleyin.