Forum: Diğer Konular RSS
Programcılık Üzerine Makaleler
English Programming
Avatar
Salih Dinçer #1
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Konu adı: Programcılık Üzerine Makaleler
Merhaba,

Kendimce faydalı bir şey yapabilmek için küçük bir girişimim olacak. İçeriğinde İngilizce kelimelerin yorumlandığı, örneklendiği ama temeli programlama olan bir makale dizisi yazmak istiyorum. FB'de bir grup açtım ve ilk yazım hayata dairdi. Beğeneceğinizi umuyorum...

İlk yazımız döngü (loop) üzerine...

Çünkü hayat bir döngü demek ama biraz açıklamak gerek ve de örneklemek...:)

Yaşadıkça nefes alıp veririz, öyle değil mi? <--(bunu hep yaparız)... Doğarız, ölürüz; acıkırız, doyarız ve hatta üzülürüz, arkasından seviniriz. İşte bu satırları okurken (gözlerin sağa sola hareket etmesi) bile hep aynı döngü, devingen (dynamic) titreşim içerisindeyiz.

Titreşimi (frekans) de açıklamalıyız...

Herkesin yaşamıyla daha doğrusu alıştığı şeylerle orantılı bir frekansı var. Belki zaman zaman bu frekansın genliğinde değişiklikler olsa da yine devam eden bir döngü içerisinde hapsolmuştur. Tıpkı bir radyonun içindeki kristalin (veya devrenin) sınırıladığı alan gibi.

[Resim: http://www.dahiweb.com/wp-content/uploads/2009/05/repeat-business.jpg]

Biraz da bilgisayara/programlamaya girelimi döngü dedik ya!

Motorlu sabit disklerimizin dönen diski, bellekteki veri ve ekrandaki görüntü hep döner/tazelenir. Ekrandaki görüntüyü sabit zannetseniz bile sürekli yenilenme süreçi (cycle time) içinde yaşamını tekrar eder. Programlama yaparken de mutlaka döngüleri kullanırız. Herhalde uzun kodlu hiç bir yazılım yoktur ki döngü kullanılmasın. Programlama diline göre değişmekle birlikte şu döngü komutları vardır:

  • while
  • repeat
  • loop
  • for
  • do while

Sanırım en basiti de şudur: while(true) writeln("Nefes al/ver");

Peki biraz daha nitelikli hale getirelim ve içine güzel bir şart koyalım. Hani Türkçe'de "eğer şöyleyse böyle yapabilir miyim?" diye sorarız ya. İşte İngilizce tam karşılığı olan if : eğer demektir. İşte bu ikinci komut ile daha güzel bir şey yapabiliriz:
bool tersle; // tersle yerine İngilizce toggle da anlamı olabilirdi...
 
while(true) {
  tersle = tersle ? false : true;
  if(tersle) writeln("Nefes alıyorum...");
  else writeln("Nefes veriyorum...");
}
Elbette programlama bilmeyenler için yukarıda çok yabancı şeyler var. Onlar için de biraz açıklarsak:

  • true/false, doğru ve yanlış demektir. Boolean yani mantık değişkenleri olarak kullanmaktayız. Elektronikteki 1 ve 0 gibidir ve bunları true/false yerine de kullanabilirdik. Bu arada 2 Kasım 1815 tarihli doğumuyla George Boole'u saygıyla anıyorum...

  • if() ile soru işareti (?) aynı şeylerdir: eğerdir, şarttır, koşuldur. Değişkenlerde pratik bir şekilde veriyi bir mantık çerçevesinde eşitlemek istersek soru işaretini kullanırız. Böylece örneğimizdeki tersle ifadesi İngilizce ve elektronikteki toggle terimine eşdeğer olur. Yani her biri işlev gördüğünde (o satıra geldiğinde) aç/kapa vazifesi görür ki evimizde kullandığımız bir elektronik alette mekanik olmayan toggle button (aç/kapa düğmesi) gibidir.

  • if()'deki else ise tıpkı toggle button'daki gibi bir anlama sahip. Yani öyle değilse şöyle yap demek. Çünkü bir plazma televizyonun açma/kapama düğmesi de böyle çalışır. İlk bastığınızda televizyon kapalı olduğu için bu koşula bakar. Sanki düğme basarken ona Ali Baba'nın mağarasının kapısını açtığı gibi şöyle seslenirsiniz:

"Eğer kapalıysa açıl, açıksa kapan!", öyle değil mi...:)

  • İlk tanıma bakarsak while() içindeki true da bir koşul ifadesidir. Eğer true(1) ise döngüye devam et demek. Böylece sonsuz bir döngü içinde programımızı çalıştırmış oluyoruz.

Peki yine konuyu yaşama bağlarsak ve yukarıdaki örneği yaşamımıza uygularsak nasıl bir sonuç elde ederiz? Acı ama gerçek, biz nefes aldığımız müddetçe yaşarız, döngümüzü devam ettirebiliriz!
import std.stdio;
 
int main(string[] HAYATIM) {
  bool toggle = true;
  char life = 236; // ∞ (sonsuzluk simgesi!)
 
  while(HAYATIM.length > 1) {
    if(toggle) writeln("Nefes alıyorum...");
    else writeln("Nefes veriyorum...");
 
    toggle = toggle ? false : true;
 
    if(!life) return 1; // öldüm
    life++;
  }
  return 0; // hiç yaşamadım bile!
}

Dip Not: Yukarıdaki kodu denemek için www.dlang.org adresinin ana sayfasındaki kutuya yapıştırın ve çalıştırmayı deneyin, çalışmayacaktır! Çünkü Args düğmesine tıklayıp yaşamanızı sağlayacak nitelikleri parametre olarak vermelisiniz. Bu arada yeni bir İngilizce kelime/komut öğrenelim Arguments : "Bağımsız Değişkenler"


Sevgiler, saygılar...
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj Salih Dinçer tarafından değiştirildi; zaman: 2012-09-02, 04:41.
acehreli (Moderatör) #2
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Paylaştığın için teşekkürler. İçimizde Facebook'ta olmayanlar var ;)

Konunun D tarafıyla ilgili notlar: :)

  • toggle'ın değişimi için şunun kullanıldığına da rastlamıştım:

    toggle = !toggle;

  • Sonsuzluk simgesinin kodu sanırım "IBM extended ASCII" tablosunda 236'ymış.

Sen yazdırmak amacıyla kullanmıyorsun ama UTF-8 kod birimine 236 gibi garip ;) bir UTF kodu atamak sorunlu olabilir (bazen "invalid UTF encoding" gibi bir hata görülebiliyor). Ama bu durumda benim ortamımda zararsızca 236'yı karakter hazır değeri '\354' olarak yazdırıyor:

    writeln(life);    // \354 yazdırır 

Şöyle yöntemler de var:

    enum s0 = '∞';
    enum s1 = '\u221e';
    enum s2 = '\&infin;';

Ali
Avatar
Salih Dinçer #3
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Eklemeler için teşekkürler hocam, özellikle toggle=!toggle'ın kullanımı bilmiyordum. Biraz düşününce gayet mantıklı ve daha kolay görünüyor. Acaba assembly kodunda bir farklılık var mı; merak ettim doğrusu...

ASCII ve UTF farkı konusunda haklısın. Bahsettiğin kullanımlar biliyorum ama çoğu zaman elimin altında bulundurduğum 0_ASCII_Chart.svg dosyası bana daha pratik geliyor. Aslında herhangi bir sayı (örneğin 255 - ortalamaYaş ~ 190) olabilirdi ama uluslararası bir anlam katayım istedim...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Avatar
Salih Dinçer #4
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Henüz bir giriş ve tartışma sorusunu barındırıyor ama gelen yorumlara göre geliştirmeyi düşünüyorum...

Bu haftaki konumuz farklar (differences).

Biz insanlar, kararsız kalanları (!) saymazsak iki cinsiyetiz: Kadın ve Erkek

Aramızda elbette bir takım biyolojik farklılıklar var. Ama sonuçta toplumda eşit haklara sahip olmamız gerekiyor. Öyle ya, hangimiz dünyaya gelirken cinsiyetimizi seçebiliyoruz...:)

Yine de kadın ve erkek arasında biyolojik farklılıklar dışında farklar da olmuyor değil. Sanırım bayanlar daha hassas, erkekler ise soğuk kanlı. Bu sadece tek bir örnek ve istisnaları olabilir. Peki istisnası olmayan bir şey var mı? Var:

Kadın ve Erkek birbirine muhtaç ve adeta onlar birbirinin tamamlayıcısı. İşte ben buna ikilik düzen (duality) diyorum. Eğer yanılmıyorsam bu evrenin her yerinde ve her şeyde mevcut...

[Resim: http://img.gawkerassets.com/img/17msf03oyscsspng/medium.png]

Lütfen bakınız:
http://www.farklar.net/ ve http://en.wikipedia.org/wiki/Duality

Bu kısa girişten sonra haftanı kelimeleri olan (duality ve differences) bizim ana konumuzu oluşturacak. Devam etmeden evvel düşüncelerinizi öğrenmek istiyorum...

Sizce de atomdan insanlara kadar hep bir ikilik düzen yok mu?
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
Bu mesaj Salih Dinçer tarafından değiştirildi; zaman: 2012-09-10, 10:48.
acehreli (Moderatör) #5
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
iki cinsiyetiz: Kadın ve Erkek

Örnek olarak çok hassas bir konu seçmişsin. Daha tartışmasız veya nört bir örnek kullanırsan düşünceleri ana temadan ayırma tehlikesi de azalır. (Üstelik örnek biyolojik olarak da tam doğru da değil: çift cinsiyetli insanlar da var.)

Sizce de atomdan insanlara kadar hep bir ikilik düzen yok mu?

Benim dikkatimden kaçmış olan bir konu; öğrenmek isterim. :)

Ali
Avatar
Salih Dinçer #6
Üye Ock 2012 tarihinden beri · 1912 mesaj · Konum: İstanbul
Grup üyelikleri: Üyeler
Profili göster · Bu konuya bağlantı
Ali hocam sanırım fizyolojik olarak çift cinsiyetlilikten bahsediyor olmalı ki ben biyolojik olarak kastetmiştim; üstelik "kararsız kalanları saymazsak" şeklinde bir ifadem oldu. Sonuçta bir canlı başka bir canlıya ihtiyaç duymadan (eşeysiz üreme) çoğalamıyorsa biyolojik olarak ya erkektir ya da kadın. Ortası olduğunu zannetmiyorum. Ama bilmediğim bir şey olabilir tabi...:)

Bu arada yaklaşık bir saat önce arkadaşların ve kendi yazdıklarımla çelişebilecek şöyle bir yorumum oldu:

Bu haftanın konusuna şöyle bir eleştiri de bulunacağım ve belki bu yüzden kendimle çelişeceğim...:)

Atomdan insana duality demiştik. Gerçekten de atom çekirdeğini proton ve nötrondan oluştuğunu biliyoruz ve ne kadar küçültürsek küçültelim hep bir ikili parçacık ile karşılaşıyoruz. Peki ya elektrona ne demeli, potansiyel fark oluştuğu her yerde akan parçacık. Hatta ekranda bu yazıları görmemizi, internette verilerin akmasını sağlayan parçacık tek değil mi?

Not: Aslında elektronun tıpkı kadın ve erkekte olduğu gibi bir cinsi daha var: Pozitron ama gel gör ki atom içinde değil...:)
Bilgi paylaştıkça bir bakmışız; kar topu olmuş ve çığ gibi üzerimize geliyor...:)
acehreli (Moderatör) #7
Kullanıcı başlığı: Ali Çehreli
Üye Haz 2009 tarihinden beri · 4527 mesaj
Grup üyelikleri: Genel Moderatörler, Üyeler
Profili göster · Bu konuya bağlantı
Salih Dinçer:
Sonuçta bir canlı başka bir canlıya ihtiyaç duymadan (eşeysiz üreme) çoğalamıyorsa biyolojik olarak ya erkektir ya da kadın. Ortası olduğunu zannetmiyorum. Ama bilmediğim bir şey olabilir tabi...:)

Eşeysiz üremeyi zaten sen söylemişsin. Ne erkek ne dişi konusu da canlılar arasında mevcut:

  http://en.wikipedia.org/wiki/Hermaphrodite

Ali
Doğrulama Kodu: VeriCode Lütfen resimde gördüğünüz doğrulama kodunu girin:
İfadeler: :-) ;-) :-D :-p :blush: :cool: :rolleyes: :huh: :-/ <_< :-( :'( :#: :scared: 8-( :nuts: :-O
Özel Karakterler:
Bağlı değilsiniz. · Şifremi unuttum · ÜYELİK
This board is powered by the Unclassified NewsBoard software, 20100516-dev, © 2003-10 by Yves Goergen
Şu an: 2017-11-21, 13:13:39 (UTC -08:00)