Programlamaya İlk Adım

296181

Hectopat
Katılım
7 Ocak 2020
Mesajlar
4.275
Çözümler
8
Programlamaya her sefer sıfırdan başlamak isteyenler için biraz alıştırma yapalım. Daha önce yarı yıl tatilinde veya Yaz tatilinde çalışmaya başlamış ama her şeyi unuttuğunuzu düşünüyorsanız ve yeniden başlamayı düşünüyorsanız, biraz beyin jimnastiği yapalım. Aşağıya eklediğim kodların ne anlam taşıdıklarını tamamen mantık yürüterek çözmeye çalışın.

Kod:
' Yazar    : Permatik
' Sürüm  : 1.0
' Lisans  : Freeware
' Bilgi     :  Bir olay açıklar

isim = "Ali"
sayı = 15
olay = "yaşında"
TextWindow.WriteLine(isim + " " + sayı + " " + olay)

Buradan nasıl bir sonuç çıktığını çözebildiyseniz, biraz daha zor bir örneği yine mantık kurarak çözmeyi deneyebilirsiniz. Daha önce hiç bir şey görmemiş olsanız dahi, bu örneği çözebilmiş olmanız gerekir.

Bir sonraki örneğimiz:

Kod:
' Yazar    : Permatik
' Sürüm  : 1.0
' Lisans   : Freeware
' Bilgi      : Ekrana kare çizdirme

TextWindow.Write("  ")
TextWindow.Write("____________________")

TextWindow.WriteLine(" ")
For indir = 1 To 10
  TextWindow.WriteLine("  |                   |")
EndFor

TextWindow.Write("  ")
TextWindow.Write("____________________")
TextWindow.PauseWithoutMessage()
Program.End()

Bu örnek muhtemelen sizi biraz daha zorlayacaktır. Ama bir önceki örmek ile kıyaslayarak, yine aklınızda çıkacak sonucu canlandırabiliyor olmanız gerekiyor. Zihninizin açık olması yeterli.

Bir sonraki örnek, ilk kez programlamaya ilgi duyanlar için zorlayıcı olabilir. Çünkü böyle bir dizi işlem için mantıklı bir kullanım alanı düşünemeyebilirler.

Kod:
' Yazar    : Permatik
' Sürüm  : 1.0
' Lisans  : Freeware
' Bilgi     : Kelime işleme yöntemleri


isim = "Permatik"
soyad = "Traşbıçağı"
tam_ad = Text.Append(isim, soyad)
TextWindow.WriteLine(tam_ad)

küçült = Text.ConvertToLowerCase(tam_ad)
TextWindow.WriteLine(küçült)

büyüt = Text.ConvertToUpperCase(tam_ad)
TextWindow.WriteLine(büyüt)

sına = Text.EndsWith(küçült, "türk")
TextWindow.WriteLine(sına)

göster = Text.GetCharacter(66)
TextWindow.WriteLine(göster)

unicode = Text.GetCharacterCode("A")
TextWindow.WriteLine(unicode)

konum = Text.GetIndexOf(tam_ad, "mat")
TextWindow.WriteLine(konum)

boy = Text.GetLength(tam_ad)
TextWindow.WriteLine(boy)

türet = Text.GetSubText(tam_ad, 4, 3)
TextWindow.WriteLine(türet)

sonu = Text.GetSubTextToEnd(tam_ad,4)
TextWindow.WriteLine(sonu)

bul = Text.IsSubText(isim, "ma")
TextWindow.WriteLine(bul)

doğrula = Text.StartsWith(tam_ad, "Per")
TextWindow.WriteLine(doğrula)

Kendi kodlarınız için de mümkün oldukça anlamlı tanımlamalar kullanırsanız, bir gün tekrar kullanmak isteyebileceğiniz ve kendi yazdığınız bir örneğiniz olursa, hangi bölümünün ne anlama geldiğini ve size hangi kısmının yaralı olabileceğini çabucak çözebilirsiniz. Ve aynı kodları her ihtiyaç duyduğunuzda tekrar yazmak zorunda kalmazsınız.

Biraz daha vites yükseltelim.

Kod:
' Yazar   : Permatik
' Sürüm  : 1.0
' Lisans  : Frewware
' Bilgi     : Kayıt ekranı

'  Başlık
TextWindow.WriteLine("")
TextWindow.WriteLine("        Kayıt ol programı")
TextWindow.WriteLine("")

' Kayıt işlemi
TextWindow.WriteLine("Merhaba kullanıcı, üye değilsen önce kayıt ol")
TextWindow.WriteLine("")
TextWindow.Write("Ad ve Soyad : ")
isim = TextWindow.Read()

TextWindow.Write("Kullanacı adı belirle : ")
nick = TextWindow.Read()

TextWindow.Write("Şifre belirle (Rakam olarak) : ")
şifre = TextWindow.ReadNumber()

' Kayıt işlem sonuç bildirimi
TextWindow.WriteLine("")
TextWindow.WriteLine("Kayıt işleminiz başarı ile tamamlandı")
TextWindow.Write("Devam etmek için 'ENTER' tuşlayın")
devam = TextWindow.ReadKey()

' Uygulamaya giriş işlemi
TextWindow.Clear()

TextWindow.WriteLine("")
TextWindow.WriteLine("        Kayıt ol programı")
TextWindow.WriteLine("")

TextWindow.Write("Kullanıcı adı : ")
nick_sınama = TextWindow.Read()

TextWindow.Write("Şifre : ")
şifre_sınama = TextWindow.ReadNumber()

' Giriş işlemi sonuç bildirimi
TextWindow.WriteLine("")
if nick_sınama = nick And şifre_sınama = şifre Then
  TextWindow.WriteLine("Sayın " + isim + " başarı ile giriş yaptınız")
Else
  TextWindow.WriteLine("Adınız veya şifreniz hatalı. Daha sonra tekrar deneyin.")
EndIf

' Program sonu
' Bir tuşa basılınca program sonlanır ve kapanır
TextWindow.Read()
Program.End()

Bu program bölümlere ayrılmış. Bu şekilde daha öngörülebilir ve gerektiğinde daha kolay yeniden düzenlenebilir. Gerekli değişiklikler için aranan bölümleri bulmak daha kolay olur.

Programlarınızı yazarken başkalarının da kolay anlayabileceği şekilde yazınız ki, neden öyle yazdığınızı siz kendiniz de daha iyi anlamış olun. Kendi kodunuzu kendiniz açıklayamıyorsanız, o halde ne yazdığınızı ve neden öyle yazdığınızı da aslında kendiniz de iyi anlayamamış olursunuz. Bu da kötü bir durum. Kodlarınızı anlamlı yazmaya çalışırken, veya açıklamaya çalışırken, öğrenmenize de katkıda bulunmuş olursunuz.

Kod:
' Yazar      : Permatik
' Sürüm     : 1.0
' Lisans      : Freeware
' Açıklama : Okunaklı Kod Örneği

' Değişkenler

En = GraphicsWindow.Width
Boy = GraphicsWindow.Height
İsim = "Portakal"
Kırmızı = GraphicsWindow.GetColorFromRGB(255,0,0)
Sarı = GraphicsWindow.GetColorFromRGB(255,255,0)
Siyah = GraphicsWindow.GetColorFromRGB(0,0,0)

' İşlemler

Sub Etiket
  GraphicsWindow.Title = İsim
EndSub

Sub DuvarBoyası
  GraphicsWindow.BackgroundColor = Kırmızı
EndSub

Sub SarıBoya
  GraphicsWindow.BrushColor = Sarı
EndSub

Sub SiyahBoya
  GraphicsWindow.BrushColor = Siyah
EndSub

Sub Kafa
  GraphicsWindow.FillEllipse(150,50,300,300)
EndSub

Sub SolGöz
  GraphicsWindow.FillEllipse(200,150,50,50)
EndSub

Sub SağGöz
  GraphicsWindow.FillEllipse(350,150,50,50)
EndSub

Sub Ağız
  GraphicsWindow.DrawLine(250,300, 350,300)
EndSub

' Program akışı
' Programın nasıl işlediğini bu bölüm belirler.

En = 400
Boy = 400
Etiket()
DuvarBoyası()
SarıBoya()
Kafa()
SiyahBoya()
SolGöz()
SağGöz()
Ağız()

Bu örnekte hangi bölümün ve hangi kalıbın tam olarak ne iş gördüğünü anlamak oldukça kolay. Programlama bilmeseniz dahi.

Her programcının en sevmediği iş, hata ayıklamak olmalı. Üstelik bu hataları yapan kişi de siz oluyorsunuz. Programlamada en çok yapılan şey de tam olarak hata bulup düzeltmek. Programlama neredeyse tamamen bu işlemden ibaret.

Aşağıdaki örnekte 4 adet hatalı bölüm var. Bunları bulmanın iki yolu var. Birincisi zor olanı. Her satırı tek tek inceleyip ve başka benzer ama düzgün çalışan satırlar ile kıyaslayarak ve mantık yürüterek hatayı bulmak. İkici yöntem biraz daha kolay. Hatalı kodlar derlenmez ve bir hata bildirimi ile sonlanır. O hata bildirimlerinde ilk hatanın hangi satırda olduğunu ve hangi sebepten kaynaklandığını açıklayan bir yazı çıkar. Her zaman ilk hata önemli. Hataları tek tek bulup düzeltebilirsiniz.

Siz birinci ve zor olan yöntemi deneyin.

Kod:
' Yazar           : Permatik
' Sürüm          : 1.0
' Lisans          : Freeware
' Açıklamam : Hata ayıklma için bir örnek :)

' Değişkenler

En = GraphicsWindow.Width
Boy = GraphicsWindow.Height
İsim = "Parmak"
Yeşil = GraphicsWindow.GetColorFromRGB(0,200,0)
Sarı = GraphicsWindow.GetColorFromRGB(255,255,0
KoyuSarı = GraphicsWindow.GetColorFromRGB(240,240,0)
Beyaz = GraphicsWindow.GetColorFromRGB(255,255,255)

' İşlemler

Sub DuvarBoyası
  GraphicsWindow.BackgroundColor = Yeşil
EndSub

Sub El
  GraphicsWindow.FillEllipse(200,200,195,90)
EndSub

Sub ÇilParmak
  GraphicsWindow.FillEllipse(195,165,45,90)
EndSub

Sub YüzükParmağı
  GraphicsWindow.FillEllipse(240,150,50,100)
EndSub

Sub OrtaPamak
  GraphicsWindow.FillEllipse(285,80,55,180)
EndSub

Sub İşaretParmağı
  GraphicsWindow.FillEllipse(335,150,50,100)
EndSub

Sub BaşParmak
  GraphicsWindow.FillEllipse(370,190,45,60)
EndSub

Sub OrtaTırnak
  GraphicsWindow.FillEllipse(295,80,30,50)
EndSub

Sub BaşTırnak
  GraphicsWindow.FillEllipse(390,200,15,45)
EndSub

Sub SarıBoya
  GraphicsWindow.BrushColor = Sarı


Sub KoyuSarıBoya
  GraphicsWindow.BrushColor = KoyuSarı
EndSub

Sub BeyazBoya
  GraphicsWindow.BrushColor  Beyaz
EndSub

' Program akışı

En = 600
Boy = 400
DuvarBoyası()
KoyuSarıBoya()
Ayak()
SarıBoya()
ÇilParmak()
YüzükParmağı()
OrtaPamak()
İşaretParmağı()
BaşParmak()
BeyazBoya()
OrtaTırnak()
BaşTırnak()

En zor bölüm bu olsa gerek. Bu bölümü de çözmeyi başardıysanız, aslında sıfır değilsiniz ve daha önce nerede kaldıysanız, oradan öğrenmeye devam edebilirsiniz. Ara sıra yeniden hatırlatmalar her zaman iyidir tabi.

Programlama kafada tasarlanan bir iş, Ve zihninizin her zaman açık olması gerekir. Ve bazen bir şeyleri yeniden hatırlamak iyi gelir. Yaşayacağınız en zorlu işlemler, aynı zamanda en uzun akılda kalan işlemlerdir. Zorlanmadığınız işlemleri daha kolay unutabilirsiniz.

Programlarınızı her zaman anlaşılabilir yazamayabilirsiniz. Böyle durumlarda açıklamalar eklemek her aman yararlı. Açıklamalar kısa ve öz olmalı. Uzun açıklamaları kendiniz dahi okumak istemeyebilirsiniz. Ve gereksiz açıklamalardan da uzak durulmalı. Anlaşılabilir kodlara açıklama gerekmez genelde.

Açıklamaların düzgün kullanıldığı bir örnek:

Kod:
' Yazar    : Permatik
' Sürüm   : 1.0
' Lisans    : Freeware
' Olay       : Koşullu döngü örneği

TextWindow.Write(" ")                             ' İlk boşluk (Güzelleştirme)

For Yatay = 0 To 900 Step 100                     ' Dış döngü
  For Dikey = 10+Yatay To 100+Yatay Step 10       ' İç döngü
  
    If Dikey < 90 Then                            ' Kaydırma için koşul
      Dikey = Dikey+" "
    EndIf
  
    TextWindow.Write(Dikey + " ")                 ' Çıktı, şekilli
  EndFor                                          ' İç döngü sonu
  TextWindow.WriteLine(" ")                       ' Yeni satıra inmek
EndFor                                            ' Dış döngü sonu

TextWindow.PauseWithoutMessage()                  ' Bekletme noktası
Program.End()


Açıklamaları düzgün hizada ve gözü yormayacak bir sıklıkta yazmak en uygun olanı. Benim örneğimdekiler biraz kaymış olabilirler.

Kolay gelsin.
 
Son düzenleyen: Moderatör:

Technopat Haberler

Yeni konular

Geri
Yukarı