iPhone kullanıcıları, PC World Türkiye iPhone uygulaması yayında... Detaylar için tıklayın.
Üye Olun / Giriş Yapın:  Kullanıcı:   Parola:   Beni hatırla:   
bul.pcworld.com.tr/
POPÜLER FORUMLAR
İNCELEMELER
Ürün inceleme kategorileri:
Ücretsiz Haber Postası
Haftalık ve aylık bültenlerimize üye olun, bilişim dünyasındaki tüm yenilikleri ilk siz öğrenin.
PCW FORUM GÜNDEMİ
PC World Türkiye
11 Nisan 2009 / 02:45
En Büyük Kim? Kim kimden Büyük?
(PcWorld Dergisi, Aralık 2006)

Geçen sayımızı konu ile alakasız bir soru ile bitirmiş, okuyucuların hayretli bakışlarını görür gibi olmuştuk. Soruyla ilgili olarak gelen milyonlarca mektuba nihayet açıklık getiriyoruz. Peki ne demiştik?

Milyonların Sesi: “Sence en büyük kim ve kim kimden büyük?” diye sormuştunuz.
Milyonların Sesine İlk Cevaplar: Doğru. Kimi zaman yaptığımız programlarda verilen girdilerin veya program esnasında sonuçlanan işlemlerin sonuçlanmasından sonra açığa çıkan çıktıların içinden hangisinin “en büyük” değeri veya “büyüklüklerine göre sıralaması” önem kazanabilir. Mesela, hepimizin malumu, ÖSS’de bir üniversitenin bir bölümüne o bölümü tercih eden en yüksek puanı alan kontenjan sayısı kadar öğrenci yerleştirilir. Bu yerleştirme işlemi yapılmadan önce öğrenciler puanları yüksekten puanlıdan düşük puanlıya kadar sıralanır ve en baştan itibaren tercihlere yerleştirme işlemi yapılır.

Acayip Garip ve Bir O Kadar da Alakasız Bir Soru: Hmm.. Hocam sen bir ara ÖSYM’de bu yerleştirme işini kodlayan programcılardan birisi miydin?
Alakasız Soruya Mecburi Cevap: Yoo, o da nereden çıktı?
O Garip Sorunun Açıklaması: Yani ne bileyim, ÖSS’deki yerleştirmeyi filan biliyorsun da…
Alakasız Soruya 2. Mecburi Açıklama: Çalışmadım ama her halde buna benzer bir şey olmalı! Hem boşver sen. Konuya girdik ya, ona bak!
Farkına Varma ve Girişe Meyil Verme: Cidden çok doğru.. Kaş ile göz arasında konuya girmişiniz. Eee… Nasıl sıralayacağız?
Gerekli Soru: Neyi?
Cevap: Neyi olacak yahu, tabi ki puanları… Nasıl sıralama yapacağız?
Cevaba Esaslı Bir Soru İçeren Bir Cevap: E doğal olarak sayıları öğrenerek! Varsayalım 3 sayı olsun ve biz bu 3 sayıyı sıralamaya çalışalım. Ne dersin, nasıl başlarız?
Cevap İçindeki Gizli Soruya Cevap: Sayıları öğrenerek başlarız dediniz. 3 sayı varsa algoritmada da bu 3 sayının tutulduğu 3 tane değişken olmalı. Sayı1, Sayı2 veSayı3. Değil mi?
Cevaba Karışmama Duygusu: Sen devam et. Mesela büyükten küçüğe sırala.
Özgürlük Hissi İçinde Başlanan ama Hüsranla Sonlanan Bir Algoritma Denemesi: Peki.
Adım 1: Sayı1, Sayı2 ve Sayı3’ü öğren.
Adım 2: Eğer Sayı1 < Sayı2 ise….
Allah Allah… Ne dicem ben şimdi?

Hüsranla Sonlanan Algoritma Denemesi Neticesinde Sorulan Soruya Cevap: Devam etseydin ya… Ne düşündün mesela da “Eğer Sayı1<Sayı2” ise dedin? Öyle idiyse ne yapacaktın, öyle değil idiyse ne yapacaktın?
Hüsranla …vs. Cevap: Yani aklımdan, eğer öyle ise yani Sayı1<Sayı2 ise o zaman sıralamayı büyükten küçüğe yapacağımdan “Sayı2’yi Sayı1’den önce yaz” diyecektim. Ama bu sonra bu önceliği neye göre belirleyeceğimi bilemedim.
Cevaba Yol Gösteren Cevap: Acaba bu sayıların isimlerini, sonradan alacakları sıra numarası ile ilişkilendirsek nasıl olur?
Yok Gösterme Cevabını Netleştirecek Bir Soru:  Nasıl yani?
Netleştirme Girişimleri: Yani mesela işlemler sonucunda (Büyükten küçüğe sıralama yaptığımızı tekrar hatırlatırım) “Sayı1” yazan değişkenin değeri en büyük sayıyı (Yani 1. büyük sayıyı) sonra “Sayı2” sonraki büyük sayıyı (yani 2. büyük sayıyı) ve “Sayı3” son sayıyı barındırsın.
Henüz Netleşmemiş Bazı Noktalar Açıklık Getirme: Peki öyle olsun ama… Neticede belki “Sayı1” değişkeninin ilk değeri en büyük sayı değil ise ve mesela “Sayı2”’nin değeri “Sayı1”den  büyükse, “Sayı2”nin değişkenini “Sayı1” değişkenine aktarmayacak mıyız?
Ani Cevap:  Evet.

İnsanı Meraklandıran ve Karanlıkta Kalan Hususu Sorma: E o zaman Sayı1’in değerini kaybetmez miyim? Elimde iki tane “Sayı2” değeri olmaz mı?
Ani Cevap 2: E önlem almaz isen olur tabi.
Karanlıkta Çığlık: Aaaaa! Dalga mı geçiyorsun be? Ne olur o zaman “Sayı1” değişkeninin yeri? Anlamadım yani.
Pasparlak Yapan Cevap: Tabi ki başka bir değişken kullanarak bu probleme son verebiliriz. Mesela algoritmada GEÇİCİSAYI diye bir şey tanımlasak ve ilk önce gitsek “Sayı1”in değerini buna atasak?
Anlama Belirtisi ve İşleme Koymak: Anladım. Sayı2 değeri daha büyük ise ve onu artık Sayı1 yapacaksak (Çünkü büyük olanın değeri değişkenlerin sonlarındaki rakamlara göre değer alacaktı), o zaman Sayı1’in ilk değeri kaybolmasın diye bunu GEÇİCİSAYI değişkenine aktaracağız. Sonra “Sayı2”nin değişkenini “Sayı1”e  aktaracağız. En son olarak da Sayı2 değişkenine GEÇİCİSAYI değişkeninin değerini atayacağız.
Adım 1: Sayı1, Sayı2 ve Sayı3’ü öğren.
Adım 2: Sayı1<Sayı2 ise o zaman :
 GeçiciSayı=Sayı1
 Sayı1 =Sayı2
 Sayı1=GeçiciSayı
Adım 3: …
Ee… Şimdi ne yapacağım?

Anlaşılan Gelişme ve Başka Mevzuya Geçiş: Anlaşıldı. İlk önce biz sayıların arasından en büyüğünü anlayalım. Ama bu vesile ile de DEĞİŞKEN YERİ DEĞİŞTİRME işlemini öğrenmiş olduk. Neyse. Mesela biz burada en büyüğü nasıl bulacağız? Ne yaparsın en büyüğü bulurken?
Üzüntü ve Diğer Soruya Cevap: Ya korkuyorum ya… Acaba ben bu işi beceremeyecek miyim? En büyük için… İlk önce sayıları öğrenmek mi isteyeceğiz?
Moral Verme ve Tebrik: Evet evet… Bravo. Sayıları öğreneceğiz. Yaz bakalım algoritmasını!
Adım 1: Sayı1, Sayı2 ve Sayı3’ü öğren.
Adım 2: Eğer  Sayı1<Sayı2 ise EnBüyükSayı=Sayı2 Değilse EnBüyükSayı=Sayı1
Adım 3: Eğer EnBüyükSayı<Sayı3 ise EnBüyükSayı=Sayı3
Bitti….

Tebrik ve Arkası Arkasına Moral: Çok tebrik ederim. Bravo. Helal olsun. Gerçekten çok kısa bir zamanda hallettin meseleyi.Peki açıkla bakalım ne yaptın?
Gaza Gelme ve Açıklama: Evvela sayıları öğrendik. Daha sonra ilk 2 sayıyı karşılaştırdık. Eğer ilk iki sayıdan birisi büyük ise o büyük olan  ENBÜYÜK olarak  değişkene atanır. Bundan sonra da artık bu iki değeri kontrol etmeye gerek yok. Çünkü onların büyük olanı artık EnBüyük değişkeninde. Yani diğer sayı bu sayıdan büyükse EnBüyük değeri alır. Diğer sayı bu sayıdan Küçükse o zaman zaten en büyük sayı ilk iki sayıdan birisi olur.
Dokunaklı Soru: Peki 100 tane sayı öğrenilecekse? Acaba gerçekten tüm sayıları ENBÜYÜK sayıyı seçmek için değişken atamaya gerek var mı?
Dokunaklı Soruya Deneme İsteği: Ya acaba bir denesem mi? Sanki gerek yok gibi.
Denemeye Teşvik: Tabi ki… Sorduğun kabahat!
Teşvikten Destek Alan Bir Deneme:
Adım 1: Sayıyı öğren.
Adım 2: ııı… Alla Alla… Ne diyecem şimdi ben yine takıldım.
Takılma Noktasını Okuyucu Söylemeden Anlama ve Hemen Açıklama: Evet, en büyük kıyasını hangi sayıya göre yapacağını merak ediyorsun! Zira önceki örnekte tüm sayıları önceden öğrenmiştin ve ilk karşılaşmada EnBüyük olarak atayacağın sayı belli idi.
Hak Verme: Aynen öyle. Ama şimdi belli değil.
Takılmayı Giderme: E sen de EnBüyük olarak ilk sayıyı seç… Ve sonraki sayıları ona göre belirle! Tabi ki sayıları saydırmayı da unutma! (Kaç sayıda bitecek, nasıl bileceğiz değil mi?)

Kafaya Dank Etme ve Hemen Denemeye Giriş:
Adım 1: Sayac=1
Adım 2: İlk sayıyı öğren.
Adım 3: EnBüyük=İlkSayı
Adım 4: Sayac=Sayac+1
Adım 5: “Sayac” ıncı sayıyı öğren.
Adım 6: EnBüyük<Sayı ise EnBüyük=Sayı
Adım 7: Eğer Sayac=100 ise dur değilse Adım 4’e git.
Tebrik ve Milyonları Meraklandıracak Sözler: Bravo. İşte böyle… Tabi ki sen bu şekildeki bir algoritma ile girilen sayınının adedinin belli olup olmamasının önemi olmadığının farkındasın değil mi? Ve hatta mesela kaçıncı girdiğin sayının en büyük sayı olduğunu da belirleyebilirsin! Ve sen aslında şu sayıda DİZİ kavramını da kullandığının farkında olmasın.
Aval Aval Bakışla Birlikte Meraklı Soru: Ne diyorsun abi… Hiç bişi anlamadım?
Sadede Gelme: Gelecek sayıda görüşmek üzere.



Yapılan yorumlar: (1)

  PCW Online Ziyaretçisi tarafından 21 Mayıs 2009 tarihinde yazıldı:
çok mantıklı

PCW Online Ziyaretçisi ismiyle bu yazı hakkında benim de söyleyeceklerim var:

Yorumlarınızın kendi isminiz ve resminizle hemen yayınlanmasını istiyorsanız, siteye üye olabilirsiniz.



PC World Galeriden

Bloglar: Haftanın En Çokları