Girişten Bilgi Almak
Girilen bilginin daha sonradan kullanılabilmesi için bir değişkende saklanması gerekir. Örneğin okulda kaç tane öğrenci bulunduğu bilgisini alan bir program, bu bilgiyi int türünde bir değişkende tutabilir.
Yazdırma işlemi sırasında dout kullanmak, bilginin nereye gideceğini açıklamaya yetiyordu; çünkü dout standart çıkış demektir. Çıkışa ne yazdırılacağını da parametre olarak veriyorduk. Örneğin dout.writef(öğrenci_sayısı); yazmak, çıkışa öğrenci_sayısı değişkeninin değerinin yazdırılacağını söylemeye yetiyordu. Özetlersek:
akım: dout işlem: writef yazdırılan: öğrenci_sayısı değişkeninin değeri hedef: normalde ekran
writef'in karşılığı readf'tir; standart girişin de din olduğunu görmüştük; bu kadarı kolay... Ama okuma durumunda bundan başkaca önemli bir ayrıntı vardır: okunan bilginin nerede depolanacağının da belirtilmesi gerekir. Okuma işlemini de özetlersek:
akım: din işlem: readf okunan: bir bilgi hedef: ?
Okunan bilgi 100 gibi bir değer olsun... Bu değeri öğrenci_sayısı değişkenine okumak için yazma durumundaki kullanıma benzeterek din.readf(öğrenci_sayısı) yazmayı düşünebilirsiniz, ama maalesef bu çalışmaz... Çünkü hatırlarsanız, değişkenlerin isimleri değerleri olarak kullanılırlardı. öğrenci_sayısı'nın değerinin 0 olduğunu varsayarsak, o kullanım din.readf(0)'ın eşdeğeri olur ve girişten gelen değerin 0'a atanacağı anlamını doğurur. 0 gibi bir değer her zaman için 0 olmak zorunda olduğu için de burada başka bir ifade şekli gerekir: bilginin okunacağı yeri söylerken değişkenin ismini değil, adresini kullanmak...
D'de isimlerden önce kullanılan & karakteri, o isimle belirtilen şeyin adresi anlamına gelir. İşte readf'e okuduğu bilgiyi yerleştireceği yer de bu şekilde bildirilir: din.readf(&öğrenci_sayısı). Burada &öğrenci_sayısı, "öğrenci_sayısı değişkenine" diye okunabilir. Bu kullanım, yukarıdaki soru işaretini ortadan kaldırır:
akım: din işlem: readf okunan: bir bilgi hedef: öğrenci_sayısı değişkeni
İsimlerin başına & karakteri koymak o ismin belirttiği şeyin gösterilmesi anlamına gelir. Bu gösterme kavramı da sonraki derslerde karşılaşacağımız göstergelerin özünü oluşturur.
Bu anlatılanları gösteren programda önce sizden öğrenci sayısını bildirmeniz isteniyor, istediğiniz değeri yazdıktan sonra Enter'a basmanız gerekir.
Not: Eğer geliştirme ortamı olarak SciTE kullanıyorsanız, programı komut satırından başlatmanızı öneririm. SciTE'ın çıkış penceresi bilgi girmeye izin vermez.
import std.cstream; void main() { dout.writef("Okulda kaç öğrenci var? "); // Öğrenci sayısının tutulacağı değişkenin tanımlanması int öğrenci_sayısı; /* Girişten gelen bilginin öğrenci_sayısı değişkenine atanması */ din.readf(&öğrenci_sayısı); dout.writefln( "Anladım: okulda ", öğrenci_sayısı, " öğrenci varmış."); }
Ek bilgiler
- Daha önce gördüğümüz // karakterleri tek bir satır açıklama yazmaya elverişlidir. Birden fazla satırda blok halinde açıklama yazmak için açıklamayı /* ve */ belirteçleri arasına alabilirsiniz.
- Kaynak kodlardaki boşluk karakterlerinin çoğu önemsizdir. O yüzden fazla uzayan satırları bölebiliriz veya daha anlaşılır olacağını düşündüğümüz boşluklar ekleyebiliriz. Hatta yazım hatasına yol açmadığı sürece hiç boşluk kullanmayabiliriz bile, ama fazla sıkışık kodu okumak güç olur:
import std.cstream;void main(){dout.writefln("Okuması zor!");}
Problemler
- Döviz kurunu ve avro adedini kullanıcıdan bilgi olarak alın ve bu bilgiyi çıkışa yazdırın.
- Aynı programda girişten sayı beklenen durumda harfler girin ve programın yanlış çalıştığını gözlemleyin.
D.ershane
Forum
Wiki
Projeler
Tanıtım
İletişim
Hakları