For ve Şartlı İşleç




Klavyeden Veri Alma ve Ekrana Veri Yazdırma

C#’ta ekrana yazma Console.Write( ) ve Console.WriteLine( ) komutları ile olmaktadır.

Console.WriteLine( ) komutu ile ekrana yazdırılmak istenen değişkenler parantez içine yazılır. Örneğin double tipinden "sayi" değişkeni ekrana yazdırılmak istenirse: Console.WriteLine(sayi); şeklinde yazılır. Eğer birden fazla değişken tek komutla ekrana yazdırılmak istenirse, değişkenler + işareti ile bir birine bağlanır. Örneğin:

//…

int a = 123;

String cumle = " Ekrana yazdırma ";

Console.WriteLine(a + cumle + "C# yazdırma");

//…

Çıktı:

123 Ekrana yazdırma C# yazdırma

Değişkenleri + işareti ile bağlarken dikkat edilmesi gereken nokta: Bağlanan yazı sayısal bir ifade ise C# bunu matematiksel bir ifade olarak tanır ve ifadeleri toplayıp ekrana yazar bunu engellemek için iki sayısal ifadeyi bağlarken araya +""+ ile ifadeler birbirinden ayrılmalıdır. Örneğin:

Console.WriteLine(3 + 8); ifadesi ekrana 38 değil de 3+8 işleminin toplamı olan 11 yazar. Console.WriteLine(3 + "" + 8); ifedesinde ise 3 ve 8’i yanyana yazar. Yani 38 ifadesini ekrana yazar.

Formatlama İşlemi:

WriteLine ile çıktı alırken String içine {degisken_no , genislik : format}

Örnek:

int yil = 2011;

Console.WriteLine(“Bu sayfa {0,5} yılında oluşturuldu.”, yil );

Bu komutta virgülden sonraki 0. değişken olan yili 5 karakterlik bir alana yazar.




Girilen İki Tarih Arasındaki Gün Sayısı




Matris Uygulaması

5X5 boyutunda rastgele bir matris tanımlayınız. Oluşturulan bu matrisin en büyük elemanın kaç olduğunu ve bu elemanın yerini matris[i][j] şeklinde veren program:




Algoritma Nedir?

Algoritma nedir sorusuna yine bir soruyla algoritmanın gücünü göstererek başlayalım. Sorumuz şu:

Basamakları tekrar etmeyen 10 basamaklı abcdefghkl sayısı aşağıdaki şartları sağlamak zorundadır;

1 – a tek basamaklı sayısı 1’e,

2 – ab iki basamaklı sayısı 2’ye,

3 – abc üç basamaklı sayısı 3’e,

4 – abcd dört basamaklı sayısı 4’e,

.

.

9 – abcdefghk dokuz basamaklı sayısı 9’a,

10 – abcdefghkl on basamaklı sayısı 10’a tam bölünür. Bu şartlar doğrultusunda sayımız kaçtır?

Eğer bir plan olmadan sayıları teker teker deneyecek olursanız denemeniz gereken 8.999.999.999 sayı vardır ki bu sayıları denemeye ömrünüz yetmez. Ama uygun işlemlerle bu deneme sayısı ellinin altına düşürülebilir.

Algoritmanın ne olduğuna gelecek olursak; bilgisayar yapısı gereği kendi kendine çözüm üretemez ancak kendisine bildirilen net komutlar yardımıyla işlemlere çözüm üretebilir. Bilgisayara bildirilen bu net komutların yol haritasına da algoritma denir. Örnek verecek olacak verirsek Ankara’dan İstanbul’a gitmeye karar veren bir kişi öncelikle doğru bir yol haritası edinmek zorundadır aksi takdirde yerinde dönüp dolaşacaktır ve varmak istediği yere varamayacaktır.

Konumuza bir üçgenin alanını bulacak bir yol haritası / algoritma ile devam edelim:

  1. BAŞLA
  2. Kullanıcıdan üçgenin kenar uzunluklarını belirten üç adet reel sayı al, ( a – b – c )
  3. Verilen kenar uzunlukları ile üçgen oluşturulabiliyor mu? Oluşturuluyor ise devam et, oluşturulamıyor ise 2. adıma dön
  4. u = (a+b+c)/2 formülüne uygun olarak u reel sayısını hesapla
  5. alan = sqrt(u . (u-a) . (u-b) . (u-c)) formülüne uygun olarak alan değerini hesapla NOT: sqrt(x) işlemi x sayısının karekökünü hesaplar
  6. alan değerini ekrana yaz
  7. DUR

Algoritmada komutların net olduğundan söz ettik. Örneğin algoritmada şöyle bir komut olamaz: “Bir süre işlemleri beklet,” çünkü bu sürenin ne kadar olacağı belli değil ve her ayrıntının yoruma kapalı olacak şekilde algoritmada yer alması gerekmektedir. Bunun doğrusu şöyle olabilir: “İşlemleri 5 saniye beklet,”. Bunun yanında her algorimanın mutlaka bir BAŞLAMA ve DURMA noktasının olma zorunluluğu vardır aksi takdirde bilgisayar ne zaman duracağına karar veremez ve işlemler sonsuza dek devam eder.

Girişte sorduğumuz sorunun cevabını merak etti iseniz cevabı: 3816547290 sayısıdır. Deneme sayısını düşürmek içinde sadece sayıların bölünebilme kurallarından faydalanmak yeterlidir.

  • abcdefghkl sayısı 10’a tam bölünecağinden sayımız: abcdefghk0
  • abcde sayısı 5’e tam bölüneceğinden sayımız: abcd5fghk0
  • abc sayısı 3’e tam bölüneceğinden abcd5f sayısıda 6’ya dolayısıyla 3’e de tam bölünmek zorundadır. Burdan da iki durum oluyor: abc456 veya abc654

İşlemler bu şekilde devam ettirilir…




Alıştırma: Resimdeki Çıktıyı Veren Program




Yazı mı Tura mı

 




Sayılarda Taban Çevirme




Dörtlü Arama Algoritması

Dörtlü arama ikili arama mantığı ile çalışmaktadır. Aralık dört parçaya ayrılarak aranan sayı dizi içerisinde aranmaktadır. Dörtlü aramının recursive olarak kodlaması aşağıdadır.

NOT: Kodlama C dilinde yapılmıştır.




Labirent Çözme

Soru:

İki Boyutlu (30×30) Bir Matris kullanarak bir Labirent tanımlayınız (Labirent önceden tanımlı olabilir veya programın
çalışması esnasında (yolun olması garantili) üretilebilir.).
Kapalı nokta için 0, açık nokta için 1 kullanabilirsiniz.
Bu labirenti ekrana yazdırınız.
Labirentte çıkışı bulduran algoritmayı tasarlayınız ve kodlayınız.
Çıkış bulununca çıkışı veren yolun noktalarını (satır, sutun) şeklinde yazdırınız.