1- Giriş:

Bu yazıda D programlama dili ile klavyeden veri alma ve komut satırından parametre alma konularını ele alacağız. Ayrıca if-else ve foreach döngüsünü de örnekleyeceğiz.

Aslında bu konular yeni başlayanlar için ayrı ayrı ve detaylıca incelenmesi gereken konular ama D dilinin diğer dillere olan benzerliği göze alınarak burada çok fazla detaya girmeyeceğiz.

Mesela bir önceki yazıda writef fonksiyonunun içine yazılacak olan yazının ” ” arasına konması gerektiğini söylemedik çünkü bu diğer (C, C++, Java, C#) programlama dillerini kullanmış olanlar için gayet bariz bir detay. Eğer size bunlar anlamsız geliyorsa lütfen C# veya Java gibi bir dil ile programlamaya başlayınız (en azından D programlama üzerine detaylı bir doküman çıkana kadar – evet yazmayı düşünüyorum -).

 

2- Konsoldan parametre alalım

Herhangi bir şey söylemeden önce aşağıdaki kodu kod düzenleyicimize yazalım.

  1. // Kütüphane dosyaları
  2. import std.stdio;
  3. // Ana fonksiyon
  4. void main(char[][] argumanlar)
  5. {
  6. writefln(“Merhaba Dunya!”);
  7. writefln(“Konsolda arguman girilmis mi acaba?”);
  8. if(argumanlar.length != 1)
  9. {
  10. writefln(“Evet! %d tane arguman girilmis.”,argumanlar.length-1);
  11. writefln(“Girilmis olan argumanlar:”);
  12. foreach(arg; argumanlar[1 .. argumanlar.length])
  13. {
  14. writefln(arg);
  15. }
  16. }
  17. else
  18. {
  19. writefln(“Hayir!”);
  20. }
  21. }

Şimdi kodu biraz inceleyelim.

if(argumanlar.length != 1) kodu ile komut satırından girilen argümanların sayısının 1′e eşit olup olmadığını kontrol ediyoruz. Argüman sayısının 1′e esit olması herhangi bir argüman girilmediğini belirtir. Görüldüğü gibi if-else döngüsü diğer dillerde kullanıldığı gibi kullanıldı.

writefln(”Evet! %d tane arguman girilmis.”,argumanlar.length-1); kodunda gördüğümüz %d bir tam sayının yazıya dışarıdan eklenebilmesini sağlamaktadır. Eklenen tam sayı argumanlar.length değerinin 1 eksiğidir.

Biraz aşağıda şu kod ile karşılaşıyoruz:

  1. foreach(arg; argumanlar[1 .. argumanlar.length])
  2. {
  3. writefln(arg);
  4. }

Bu kodda öncelikle bir döngü var. Döngü foreach döngüsü. Javacılara gayet tanıdık gelmekle beraber C ve C++ kullananlar büyük ihtimalle ilk defa karşılaşacaktır. Bu döngünün görevi argumanlar dizisinin her elemanı için bir kez dönmek ve aynı zamanda her dönüşte bu elemanı arg değişkeninde saklamak. Burada foreach döngüsünden başka değişik gelebilecek şu ifade var:

argumanlar[1 .. argumanlar.length]

Bu ifadenin görevi argumanlar dizisinin elemanlarını 1 den başlayıp argumanlar.length değerine kadar tek tek ele alınmasını sağlamaktır.

Kodu derleyelim ve birkaç argüman vererek çalıştıralım. Aşağıdakine benzer bir sonuç elde edeceğiz.

deneme_2_konsol1.JPG

3- Klavye okuma:

Klavyeden veri okumak için aşağıdakine benzer bir kodu kullanabiliriz:

  1. // Kütüphane dosyaları
  2. import std.stdio;            // Basit Girdi-Çıktı
  3. import std.string;            // String işlemleri
  4. // Ana fonksiyon
  5. void main(char[][] argumanlar)
  6. {
  7. char[] adim;
  8. writef(“Merhaba Dunya!”);
  9. writef(“\nAdiniz nedir?”);
  10. adim = chop(readln());
  11. writefln(“Merhaba %s!”,adim);
  12. return 0;
  13. }

Dikkat ederseniz yeni bir kütüphane dosyası eklediğimi göreceksiniz. std.string kütüphanesi yazılar üzerinde işlemler yapabilmemizi sağlar. Aşağıdaki kodu inceleyelim:

adim = chop(readln());

readln() burada klavyeden verilen girdiyi “enter” tuşuna basılana kadar alır. chop() fonksiyonu ise okunan yazının sonundaki yeni satır karakterini siler. Sonuç adım değişkenine kaydedilir.

writefln(”Merhaba %s!”,adim); kodundaki %s ise bir yazının yazıya dışarıdan eklenebilmesini, yani adim değişkeninin değerinin dışarıdan eklenebilmesini sağlamaktadır.

Kodu derleyip çalıştırdığımızda aşağıdakine benzer bir sonuç ile karşılaşıyoruz.

deneme_2_konsol2.JPG

4- Son:

Bu yazıda komut satırından girilen argümanların D dilinde nasıl kullanılabileceğini ve klavyeden nasıl girdi alınabileceğini gördük. Bir sonraki yazıda matematiksel işlemlerin D dilinde nasıl yapıldığını ve for,while gibi döngüleri göreceğiz.

Herkese iyi kodlamalar.