Algoritmaya Giriş #3 - Değişkenler

 Algoritma kavramıyla tanıştıktan ve algoritmamıza girdi verip ondan çıktı almayı öğrendikten sonra sıra geldi yazılım değirmenini döndüren değişkenlere. Flowgorithm aracılığı ile yazılım dünyasının yapıtaşı olan dört temel değişken türünü bu yazıda anlatıyor olacağım.

Değişken Ne?


Yazılım dünyasında "değişken" denen şey, ortaokulda ve lisede çıkan cebir problemlerindeki "x" ve "y" ile hemen hemen aynı şeydir. Bu elemanlar bir değer tutar ve bu değer, isimlerinden de anlaşılacağı gibi, değişebilir. Önemli bir değere değerin kendisini girmeden ulaşmamızı sağlarlar. Ancak asıl çalışma mantıkları bundan biraz daha karmaşıktır, ki "değişken" denen şey aslında bu değerleri bilgisayarın belleğinde tutmaya yarar. Bu değerler bilgisayardaki "RAM" dediğimiz ve Türkçe açılımı "Rastgele Erişimli Bellek" olan donanım parçasındaki boş bölgelerde tutulur. Bu değerlere ayrılacak alan değişkenin türüne ve eğer bu değişken bir dizi ise dizinin tuttuğu değer sayısına göre bayt cinsinden belirlenir. Bir değişkenin RAM'daki konumuna "referans" denir.

Bir ön bilgi ve kavram aşinalığı olması açısından, değişkenler genel olarak iki türe ayrılır, bunlar "değer tipli" ve "referans tipli" değişkenlerdir. Bu yazıda göreceğiniz değişkenlerin tamamı değer tiplidir, yani sözel/string, integer/tam sayı, real/gerçel sayı ve boolean, bilgisayarlar tamamen bu değişkenlerin değeri üzerinden işlem yapar. Bunlara aynı zamanda "basit değişkenler" de denebilir. "Referans tipli" değişkenler ise genelde tek başlarına birden fazla değer tutarlar, bunlar ise bir sonraki yazıda anlatacağım diziler, dizilerin türevleri olan listeler, setler ve sözlükler ile obje odaklı programlamada karşınıza sıklıkla çıkacak olan sınıflar (class) ve arayüzlerdir (interface). Bu değişkenler aslında değer olarak referanslarını tutar. Bu burada dursun.

Temel Değişken Türleri


Bu yazıda Flowgorithm aracılığıyla dört temel değişken göreceğiz: string, integer, real ve boolean.

String Değişkenler


String değişken denilen değişkenler yazılım dünyasının sözel değer tutan değişkenleridir. String iki adet çift tırnak işareti (") arasındaki bütün harfler ve noktalama işaretlerinden oluşan ifadeyi değer olarak tutar. Sayısal bir ifade çift tırnak içerisinde yazıldığı zaman string olur.

  • "Hello, World!" bir stringtir.
  • "6" bir stringtir. Ancak 6 aslen sayısal bir değerdir ve sadece 6 olarak yazıldığında integer bir değer olur.
  • "4.12" bir stringtir. Ancak 4.12 aslen gerçel sayılı bir değerdir ve sadece 4.12 olarak yazıldığında gerçel sayılı (real) bir değer olur.
  • "true" bir stringtir. Ancak true aslen bir boolean değerdir ve sadece true olarak yazıldığında boolean bir değer olur.
Bir önceki yazımızdaki girdi/çıktı örneğini ele alacak olursak:


Bu programımızda kullanıcının ismini almak için öncelikle "name" isimli bir string değişken tanımlamıştık. Bu program "Input name" bloğuna geldiği zaman kendi adımızı girersek program bunu bir string değer olarak alır. Aynı şekilde 6 ve 4.12 değerlerini girdiğimizde de, değişken bir string olduğundan dolayı Flowgorithm bunu bir string olarak kabul eder. Ancak gerçek programlama dillerinde bazen girdi türünü belirtmeniz, bazen ise atama yapacağınız değişkenin türüne göre çeviri yapmanız gerekir.

  • Örneğin C dilindeki scanf fonksiyonunu scanf("%s",name); şeklinde yazarsanız program bunu bir string değeri olarak alacaktır.
  • C#, Python ve Java gibi dillerdeki girdi fonksiyonları standart olarak string şeklinde bir girdi alır ve sizin o değişken türüne göre o girdi üstünde çeviri yapmanız gerekir.
Girdi olarak alıp name değişkenine atadığımız değer bir string olarak "Hello, " ve "!" sözel ifadeleriyle ampersand (&, Shift+F6) işareti aracılığıyla birleştirilerek ekrana yazdırılır. Ampersand işareti çoğu programlama dilinde mantıksal VE operatörü olarak iş yapar ve iki kez ardı ardına (&&) yazılarak önermeler arasında kullanılabilecek olan VE operatörü oluşturulur.

Flowgorithm'de olmayan ancak yine gerçek programlama dillerinde olan bir diğer şey de stringin devamını aynı string içerisinde yeni satıra yazdırma olayıdır. Bunun için "\n" string kodu kullanılır ve bu bir standarttır. Örneğin adınız "Mehmet" soyadınız "Yılmaz" olsun, bu ikisini alt alta yazdırmak için string değerinizi "Mehmet\nYılmaz" şeklinde yazarsınız.

Yazılım dünyasında genelde önemli bir parametre olarak karşımıza çıkan string uzunluğu, Flowgorithm'de Len(string) fonksiyonu aracılığıyla alınabilir.

Integer ve Real Değişkenler


Programlama dünyasında string değişkenlerden çok daha önce gelen bir değişken türü varsa o da integerdır. Programlama dünyasının temel yapıtaşı diyebileceğimiz integerlar sayısal işlemlerin yapılabileceği iki değişken türünden biridir (diğeri real).

Öncelikle Flowgorithm'de bir Integer değişken tanımlamayı öğrenelim. Bunun için yapmanız gereken şey String name bloğunun altındaki ok tuşuna tıklayıp bir "Declare" bloğu eklemektir. Ekleyeceğiniz bloğun özellikleri şu şekilde olmalıdır.


Burada blok menüsünde "Type:" başlığının altında, değişken oluşturduğumuzda varsayılan olarak seçilen "Integer" seçeneğini seçiyoruz. Bu şekilde değişkenimiz bir tam sayı değeri alacak şekilde ayarlanıyor ve Flowgorithm Input bloğunda bizden bir tam sayı değeri girmemizi istiyor. Bu değişken için de bir Input bloğu ve bu değişkeni yazdıracak bir Output bloğu daha oluşturduktan sonra programımızı çalıştırıyoruz. Programımızın şunun gibi gözükmesi gerekiyor:


Flowgorithm'de Integer değerimizi Stringi yazdırdığımız yöntemle yazıyoruz, ancak bazı programlama dilleri bu tarz değerleri bir string içerisinde yazdırmak için farklı yöntemler sunmakta. Programımız düzgün çalıştığında ve girdilerinizi girip düzgün şekilde çıktılarını aldığınızda şöyle bir ekranla karşılaşacaksınız:


Integer tanımlamayı ve değerini ekrana yazdırmayı öğrendikten sonra sıra geldi aritmetik işlemlere. Programlamada kullanılan temel aritmetik işlemler matematiğin dört temel işlemi olan toplama, çıkarma, çarpma ve bölmedir. Bu işlemler aşağıdaki gibi yapılarak stringe yazdırılır.




Yukarıdaki program örneğinde gördüğünüz gibi toplama işlemi (değer1+değer2), çıkarma işlemi (değer1-değer2), çarpma işlemi (değer1*değer2) ve bölme işlemi (değer1/değer2) şeklinde yapılır. Bu değerleri ekrana yazdırmak için bir değişkene atamanıza gerek yoktur.

Programlama dünyasında sıklıkla karşımıza çıkan bir diğer sayısal işlem grubu da mod alma, üs alma, karekök alma ve logaritmadır. Bu işlemler Flowgorithm'de sırayla (değer1%değer2) (mod alma), (değer1^değer2) (üs alma), Sqrt(değer) (karekök alma) ve Log(değer) (logaritma) fonksiyonlarıyla elde edilirler. Flowgorithm yerleşik olarak doğal logaritma (Log/Ln) ve 10 tabanında (Log10) logaritma fonksiyonlarını barındırır.

Eğer kullanacağımız değerler sadece tam sayı değil ise, küsürat içerebilir ise Integer yerine Real tür değişkenlerden yararlanıyoruz. Bu tür değişkenleri tanımlamak için de Declare bloğunu ekledikten sonra bloğa çift tıklayınca çıkan menüdeki "Type:" sekmesinden "Real" yuvarlağını tikliyoruz.



Real değişkenler üzerinde de Integer değişkenler üzerinde yapabileceğimiz aritmetik işlemleri yapabiliyoruz, bu bakımdan Integer ve Real değişkenler arasında küsürat alabilme ve bellekte tuttukları yer miktarı dışında bir fark yoktur.

Boolean Değişkenler


Bu yazıda bahsedeceğim dördüncü ve son temel değişken türü de tabii ki Booleanlar. Bu tür değişkenler sadece iki tür değer alır: true (doğru) ve false (yanlış). Bu değişkenleri de çok basit bir örnekle anlatıp bu yazıyı noktalayacağım.

Bu aşamada Flowgorithm'deki değer atama bloğu olan Assign'den de bahsediyor olacağım, ki blok ekleme menüsünde "Declare" bloğunun hemen altında bulunmakta. Bu blok değişkeninize kullanıcı girdisi olmadan bir değer atamaya yarar.


Yukarıda hatırlatma amacıyla blok ekleme menüsü ve "Assign" bloğunun nerede olduğunu göstermek için bir fotoğraf koydum. Bu bloğu ekleyip üstüne çift tıkladığımızda karşımıza çıkan menü şöyle bir şey olacak:


Bu menüde soldaki kutucuk atama yapacağımız değişkenin ismini, sağdaki daha büyük olan kutucuk da atayacağımız değeri veya önermeyi yazmaya yarar. String bir değişkene burada sözel değer, Integer bir değişkene tam sayılı bir değer, Real bir değişkene ise gerçel sayılı bir değer atanır. Değişkenimiz Boolean olduğu için biz true veya false döndürecek bir önerme atıyoruz. Direk olarak "true" veya "false" da atayabiliriz duruma göre, ancak ben bu örnek için bir "büyüktür" önermesi (6, 5'ten büyüktür) atadım ve en son bu önermenin değerini Output bloğuyla ekrana yazdırdım.


Önermemiz doğru olduğu için karşımıza çıkan mesaj "true" değerini döndürecektir. Eğer önermeyi 6 < 5 şeklinde değiştirirsek dönen değer false olacaktır.

Flowgorithm aracılığıyla değişkenler ile ilk deneyimlerimiz bu şekildeydi. Bir sonraki yazıda Flowgorithm aracılığıyla dizilerden, ondan sonraki yazıda da koşul bloklarından (if'lerden) bahsediyor olacağım.

Eğer bu seriyi faydalı bulduysan yeni yazılar geldiğinde haberdar olmak için buradan blogumu takibe alabilirsin.

Yorumlar

Bu blogdaki popüler yayınlar

Algoritmaya Giriş #8 - Özyinelemeli Fonksiyonlar

Algoritmaya Giriş #6 - Döngüler

Algoritmaya Giriş #4 - Diziler