You are on page 1of 71

Microsoft Small Basic

Programlamaya Giri

Blm 1

Giri
Small Basic ve Programlama
Bilgisayar Programlamas, programlama dilleri kullanlarak, bilgisayar yazlmlarnn oluturulmas sreci olarak tanmlanr. Tpk bizim ngilizceyi, spanyolcay veya Franszcay konuup anlamamz gibi, bilgisayarlar da belirli dillerde yazlm programlar anlayabilirler. Bunlar programlama dilleri olarak adlandrlr. Balangta, yalnzca birka tane programlama dili vard ve bunlarn renilmesi ve kavranmas olduka kolayd. Ancak, bilgisayarlar ve yazlmlar giderek sofistike hale geldike, programlama dilleri de hzla geliti ve daha karmak kavramlar ierir hale geldi. Bunun sonucu olarak, u anda ou programlama dilinin ve kavramlarnn kavranmas yeni balayan birisi iin olduka zorlayc durumdadr. Bu da, insanlarn bilgisayar programlamasn renme veya gerekletirmeye ynelik giriimlerinde cesaretlerini krmaya balad. Small Basic, programlamay yeni balayanlar iin son derece kolay, anlalr ve elenceli hale getirmek zere tasarlanm olan bir programlama dilidir. Small Basicin amac, engeli aaya ekmek ve artc bilgisayar programlamas dnyasna bir atlama ta olarak grev yapmaktr.

Small Basic Ortam


Small Basic Ortamn ksaca tantmakla ie balayalm. SmallBasici ilk altrdnzda, aadaki ekle benzeyen bir pencere greceksiniz.

ekil 1 Small Basic Ortam

Bu, Small Basic programlarmz yazp, altracamz Small Basic Ortamdr. Bu ortamn, saylarla tanmlanm eitli belirgin eleri vardr. *1+ ile tanmlanm olan Dzenleyici, Small Basic programlarn yazacamz yerdir. rnek bir program ya da daha nce kaydedilmi olan bir program atnzda, ekranda bu dzenleyici grntlenecektir. Bu durumda, o program deitirebilir ve daha sonra kullanmak zere kaydedebilirsiniz. Ayrca, bir kerede birden fazla program aabilir ve zerinde alabilirsiniz. zerinde altnz her bir program, ayr bir dzenleyicide grntlenecektir. O anda zerinde altnz program ieren dzenleyici, aktif dzenleyici olarak adlandrlr. *2+ ile tanmlanm olan Ara ubuu, aktif dzenleyiciye veya ortama komut vermek iin kullanlr. lerledike, ara ubuundaki eitli komutlar reneceiz. *3+ ile tanmlanm olan Yzey, tm dzenleyici pencerelerinin gittii yerdir.

lk Programmz
Artk Small Basic Ortam ile tantnza gre, onu kullanarak programlama yapmaya balayacaz. Yukarda sz ettiimiz gibi, dzenleyici programlarmz yazdmz yerdir. Bunu yapmak iin, nce aadaki satr dzenleyiciye yazn. TextWindow.WriteLine("Merhaba Dnya") Bu bizim ilk Small Basic programmz. Ve eer bunu doru yazdysanz, aadaki ekle benzer bir ey gryor olmalsnz.

ekil 2 lk Program

Yeni programmz yazdmza gre, imdi onu altralm ve neler olduunu grelim. Programmz ara ubuu zerindeki Run (altr) dmesine basarak veya klavyenin zerindeki F5 ksayol tuunu kullanarak altrabiliriz. Her ey yolunda giderse, programmzn aadaki sonucu verecek ekilde almas beklenir.

ekil 3 lk Program kts

Tebrikler! lk Small Basic programnz yazdnz ve altrdnz. Bu olduka kk ve basit bir program, ancak yine de gerek bir bilgisayar programcs olma yolunda byk bir adm! imdi, daha byk programlar oluturma konusuna gemeden nce, sz etmemiz gereken bir detay daha var. Az nce neler olduunu anlamamz gerekiyor bilgisayara tam olarak ne dedik ve ne yapacan nasl bildi? Bir sonraki blmde, bunu anlayabilmek iin, yazdmz program analiz edeceiz.

lk programnz yazarken, iinde bir eler listesi bulunan bir alr pencerenin (ekil 4) ktn fark etmi olabilirsiniz. Bu, akll alglama olarak adlandrlr ve programnz daha hzl yazmanza yardmc olur. Yukar/Aa ok tularna basarak listenin bir ucundan dierine gidebilirsiniz ve istediiniz eyi bulduunuzda, setiiniz eyi programnza eklemek iin Enter tuuna basabilirsiniz.

ekil 4 Akll Alglama

Programmz kaydetmek
Small Basici kapatmak ve yazdnz program zerinde daha sonra tekrar almak istiyorsanz, program kaydedebilirsiniz. Aslnda bu, kazara kapanma veya g kesintisi durumunda bilgilerinizi kaybetmemeniz iin, programlar zaman zaman kaydetmek asndan iyi bir pratiktir. zerinde altnz program, ara ubuu zerindeki save (kaydet) ikonuna basarak veya Ctrl+S (Ctrl tuuna basl tutarken, S tuuna basn) ksayol tuunu kullanarak kaydedebiliriz.

Blm 2

lk Programmz Anlamak
Bir bilgisayar program aslnda nedir?
Bir program, bilgisayar iin bir talimatlar dizisidir. Bu talimatlar bilgisayara tam olarak ne yapacan syler ve bilgisayar da daima bu talimatlar izler. Tpk insanlar gibi, bilgisayarlar da talimatlar ancak anlayabilecekleri bir dilde verilirse izleyebilirler. Bunlar programlama dilleri olarak adlandrlr. Bilgisayarn anlayabilecei pek ok dil vardr ve Small Basic de bunlardan birisidir. Sizinle arkadanz arasnda bir konuma getiini hayal edin. Siz ve arkadalarnz, bilgileri birbirinize iletmek iin, cmleler eklinde organize olmu kelimeler kullanrsnz. Benzer ekilde, programlama dilleri de bilgileri bilgisayara ileten cmleler eklinde organize edilebilen kelime topluluklar ierirler. Ve, programlar temel olarak toplu halde programcya ve bilgisayara bir anlam ifade eden cmleler topluluudur (bunlar bazen yalnzca birka tane, Bilgisayarn anlayabilecei pek ok dil vardr. bazen de binlerce olabilir). Java, C++, Python, VB, vs. dillerinin tm, basitten karmak yazlm programlarna Small Basic Programlar kadar eitli programlar gelitirmek iin kullanlabilecek, gl modern bilgisayar Tipik bir Small Basic program, bir dizi ifadeden oluur. Programn her bir satr bir ifadeyi dilleridir. temsil eder ve her bir ifade de bilgisayar iin bir talimattr. Bilgisayardan bir Small Basic programn uygulamasn istediimizde, bilgisayar program alr ve ilk ifadeyi okur. Sylemeye altmz eyi anlar ve sonra da talimatmz uygular. lk ifademizi uygulamay tamamladnda, programa geri dnp ikinci satr okur ve uygular. Programn sonuna ulancaya kadar da bunu yapmaya devam eder. te bu noktada, programmz biter.

lk Programmza Geri Dnelim


te yazdmz ilk program: TextWindow.WriteLine("Merhaba Dnya") Bu, tek bir ifadeden oluan olduka basit bir program. Bu ifade, bilgisayara Merhaba Dnya metnini Metin Penceresine yazmasn sylyor. Bu, gerek anlamda bilgisayarn zihninde yle evriliyor: Write Merhaba Dnya Cmlelerin kelimelere blnebilmesi gibi, ifadelerin de daha kk blmlere ayrlabileceini fark etmi olabilirsiniz. lk ifadede, 3 ayr blm bulunuyor: a) TextWindow b) WriteLine c) Merhaba Dnya Nokta, parantezler ve trnak iaretlerinin tm, bilgisayarn niyetimizi anlamas iin, ifadede doru yerlere yerletirilmesi gereken noktalama iaretleri. lk programmz altrdmzda kan siyah pencereyi hatrlayacaksnz. Siyah pencere, TextWindow veya bazen Konsol olarak adlandrlr. Bu, bu programn sonucunun gidecei yerdir. Bizim programmzda TextWindow, bir nesne olarak adlandrlr. Programlarmzda kullanlmak zere, bu tip eitli nesneler mevcuttur. Bu nesneler zerinde eitli farkl ilemler gerekletirebiliriz. Halihazrda programmzda WriteLine ilemini kullandk. Ayrca, WriteLine ilemini, trnak iareti ierisinde Merhaba Dnya metninin takip ettiini de fark etmisinizdir. Bu metin, WriteLine ilemine bir girdi olarak geilmitir, bu Trnak iaretleri, boluklar ve parantezler da daha sonra kullanc iin yazdrlr. Bu, ilemle gibi noktalama iaretleri, bir bilgisayar ilgili bir girdiolarak adlandrlr. Baz ilemler bir programnda son derece nemlidirler. ya da daha fazla girdi alrken, bazlar hi almaz. Yerlerine ve adetlerine bal olarak, ifade edilen anlam deitirebilirler.

kinci Programmz
Artk ilk programmz anladnza gre, buna baz renkler ekleyerek daha ssl hale getirelim. TextWindow.ForegroundColor = "Yellow" TextWindow.WriteLine("Merhaba Dnya")

ekil 5 Renkler Eklemek

Yukardaki program altrdnzda, TextWindow ayn Merhaba Dnya szck grubunu yazdn greceksiniz, ancak bu kez daha nceki gibi gri yazmak yerine, sar renkte yazar.

ekil 6 Sar Renkte Merhaba Dnya

Orijinal programmza eklediimiz yeni ifadeye dikkat edin. Bu ifadede Yellow (Sar) deerine eitlediimiz yeni bir kelime (ForegroundColor) kullanlyor. Bu, ForegroundColora Yellowu atadmz anlamna geliyor. imdi, ForegroundColor ile WriteLine ilemi arasndaki fark, ForegroundColorn herhangi bir girdi almam veya herhangi bir paranteze ihtiya duymam olmasdr. Onun yerine, bunu bir eittir sembol ve bir kelime takip ediyordu. ForegroundColor, TextWindown bir zellii olarak tanmlyoruz. te, ForegroundColor zellii iin geerli olan deerlerin bir listesi. Yellowu bunlardan birisiyle deitirmeyi deneyin ve sonular grn trnak iaretlerini unutmayn, bunlar gerekli noktalama iaretleridir. Black Blue Cyan Gray Green Magenta Red White Yellow DarkBlue DarkCyan DarkGray DarkGreen DarkMagenta DarkRed DarkYellow

Blm 3

Deikenlerin Eklenmesi
Programmzda Deikenlerin kullanlmas
Programmz genel Merhaba Dnya? yerine kullancnn ismiyle birlikte Merhaba deseydi, daha ho olmaz myd? Bunu yapmak iin, nce kullancya ismini sormamz ve sonra da bunu bir yerde saklayarak, kullancnn ismiyle birlikte Merhaba metnini yazdrmamz gerekir. Bunu nasl yapabileceimizi grelim: TextWindow.Write("sminizi Girin: ") name = TextWindow.Read() TextWindow.WriteLine("Merhaba " + name) Bu program yazp altrdnzda, aadaki kty greceksiniz:

ekil 7 Kullancnn ismini sorun

Ve, isminizi girip ENTER tuuna bastnzda, aadaki kty greceksiniz:

ekil 8 Scak Bir Merhaba

imdi, program tekrar altrrsanz, size ayn soru tekrar sorulacaktr. Farkl bir isim girebilirsiniz ve bilgisayar size o isimle Merhaba diyecektir.

Programn analizi
Biraz nce altrdnz programda, dikkatinizi ekmi olabilecek satr udur: name = TextWindow.Read() Read() tpk WriteLine() gibi grnr, ancak iinde herhangi bir girdi yoktur. Bu bir ilemdir ve temel olarak bilgisayara kullancnn bir metin girmesini ve ENTER tuuna basmasn beklemesini syler. Kullanc ENTER tuuna bastnda, kullancnn girdii metni alr ve programa geri dner. lgin olan nokta udur ki; kullancnn girdii metin imdi isimli bir deikende saklanr. Bir deiken, deerleri geici olarak saklayabildiiniz ve sonra kullanabildiiniz bir yer olarak tanmlanr. Yukardaki satrda, kullancnn ismini saklamak iin, name kullanlmtr. Bir sonraki satr da ilgintir: TextWindow.WriteLine("Merhaba " + name) Bu, name (isim) deikenimizde sakladmz deeri kullandmz yerdir. name blmnde yazan deeri alyoruz, bunu Merhabaya ekliyoruz ve TextWindowa yazyoruz. Bir deiken girildiinde, bunu istediiniz zaman tekrar kullanabilirsiniz. rnein; unlar yapabilirsiniz:

Tpk WriteLine gibi, Write da ConsoleWindowda (Konsol Penceresi) bir dier ilemdir. Write, ConsoleWindowa bir ey yazmanza izin verir, ancak bundan sonra gelen metnin mevcut metinle ayn satrda olmasn salar.

TextWindow.Write("sminizi Girin: ") name = TextWindow.Read() TextWindow.Write("Merhaba " + name + ". ") TextWindow.WriteLine("Naslsn " + name + "?")

Ve u kty greceksiniz:

ekil 9 Bir Deikenin Tekrar Kullanlmas

Deikenlerin isimlendirilmesi ile ilgili kurallar


Deikenlerin onlarla balantl isimleri vardr ve onlar bu ekilde tanrsnz. Bu deikenlerin isimlendirilmeleriyle ilgili belirli basit kurallar ve gerekten iyi klavuz bilgiler vardr. Bunlar: 1. sim bir harfle balamal ve if, for, then, vs. gibi kelimelerle akmamaldr. 2. Bir isim, harflerin, saylarn ve altizgilerin herhangi bir kombinasyonundan oluabilir. 3. Deikenleri anlaml bir ekilde isimlendirmek faydaldr deikenler istendii kadar uzun olabilecei iin, amalarn aklayan deiken isimleri kullann.

Saylarla Oynamak
Biraz nce kullancnn ismini saklamak iin deikenleri nasl kullanabileceinizi grdk. Bundan sonraki birka programda, deikenlerde saylar nasl saklayabileceimizi ve ileyebileceimizi greceiz. Gerekten basit bir programla balayalm: number1 = 10 number2 = 20 number3 = number1 + number2 TextWindow.WriteLine(number3)

Bu program altrdnzda, aadaki kty greceksiniz:

ekil 10 ki Saynn Toplanmas

Programn birinci satrnda, number1 deikenine 10 saysn atyorsunuz. Ve ikinci satrda, number2 deikenine 20 saysn atyorsunuz. nc satrda, number1 ve number2yi topluyor ve sonra kan sonucu number3e atyorsunuz. Bylece bu rnekte, number3n deeri 30 olacaktr. Ve TextWindowda grntlediimiz deer de budur. imdi, program biraz deitirelim ve sonular grelim: number1 = 10 number2 = 20 number3 = number1 * number2 TextWindow.WriteLine(number3)

Saylarn banda ve sonunda trnak iareti olmadna dikkat edin. Saylar iin, trnak iaretine gerek yoktur. Trnak iaretlerine yalnzca metin kullanrken ihtiyacnz vardr.

Yukardaki program, number1 ile number2yi arpacak ve kan sonucu number3te saklayacaktr. Ve bu programn sonucunda unu grebilirsiniz:

ekil 11 ki Saynn arplmas

Benzer ekilde, saylar karabilir ya da blebilirsiniz. te bir karma ilemi: number3 = number1 - number2 Ve blme sembol /. Program u ekilde grnecektir: number3 = number1 / number2 Ve bu blmenin sonucu u olacaktr:

ekil 12 ki Saynn Blnmesi

Basit Bir Scaklk Dntrcs


Bir sonraki programda, Fahrenhayt cinsinden scaklklar Santigrada evirmek iin, formln kullanacaz. lk olarak, kullancdan scakl Fahrenhayt cinsinden alacak ve bunu bir deikende saklayacaz. Kullancdan gelen saylar okumamz salayan zel bir ilem vardr ve bu da; TextWindow.ReadNumber. TextWindow.Write("Scakl Fahrenhayt cinsinden girin: ") fahr = TextWindow.ReadNumber() Fahrenhayt cinsinden scakl bir deikende sakladktan sonra, bunu u ekilde Santigrada evirebiliriz: celsius = 5 * (fahr - 32) / 9 Parantezler bilgisayara ilk nce fahr 32 deerini hesaplamasn ve sonra kalan ilemlere devam etmesini syler. imdi, tm yapmamz gereken, sonucu kullancya gstermektir. Bunlarn hepsini bir araya getirdiimizde, u program elde ederiz: TextWindow.Write("Scakl Fahrenhayt cinsinden girin: ") fahr = TextWindow.ReadNumber() celsius = 5 * (fahr - 32) / 9 TextWindow.WriteLine("Santigrat cinsinden scaklk " + celsius) Ve bu programn sonucu u olacaktr:

ekil 13 Scaklk Dnm

Blm 4

Koullar ve Dallanma
lk programmza geri dnecek olursak, genel bir Merhaba Dnya sz yerine, gnn saatine bal olarak, Gnaydn Dnya ya da yi Akamlar Dnya desek daha ho olmaz myd? Bir sonraki programmz iin, bilgisayara saat len 12:00den nceyse Gnaydn Dnya ve 12:00den sonraysa yi Akamlar Dnya dedirteceiz. If (Clock.Hour < 12) Then TextWindow.WriteLine("Gnaydn Dnya") EndIf If (Clock.Hour >= 12) Then TextWindow.WriteLine("yi Akamlar Dnya") EndIf Program ne zaman altrdnza bal olarak, aadaki ktlardan birisini greceksiniz:

ekil 14 Gnaydn Dnya

ekil 15 yi Akamlar Dnya

Programn ilk satrn analiz edelim. Anlamsnzdr ki; Clock.Hour deerinin 12den az olmas durumunda, Gnaydn Dnya yazs yazdrlacaktr. If, Then ve EndIf kelimeleri, program alrken bilgisayar tarafndan anlalan zel kelimelerdir. If kelimesinin ardndan daima bir koul gelir, bu Small Basicde, o andaki tarihe ve saate durumda bu koul (Clock.Hour < 12)dir. erimek iin, Saat nesnesini kullanabilirsiniz. Unutmayn ki; parantezler bilgisayarn sizin Bu ayrca size, o andaki Gn, Ay, Yl, niyetlerinizi anlamas iin gereklidir. Koulu then Dakikay, Saniyeyi ayr ayr alabilmenizi ve yrtlecek gerek ilem izler. Ve ilemden salayan bir grup zellik salar. sonra, EndIf gelir. Bu, bilgisayara koulun uygulanmasnn bittiini syler. then ile EndIf arasnda, birden fazla ilem olabilir ve koulun geerli olmas durumunda bilgisayar bunlarn tmn uygulayacaktr. rnein; syle bir ey yazabilirdiniz: If (Clock.Hour < 12) Then TextWindow.Write("Gnaydn. ") TextWindow.WriteLine("Kahvalt nasld?") EndIf

Else
Bu blmn bandaki programda, ikinci koulun biraz gereksiz olduunu fark etmi olabilirsiniz. Clock.Hour deeri, 12den az olabilir ya da olmayabilirdi. Gerekten ikinci bir kontrol yapmamz gerekmedi. Bu gibi zamanlarda, iki if..then..endif ifadesini, yeni bir kelime olan elsei kullanarak, tek bir kelimeye ksaltabiliriz. Eer bu program elsei kullanarak yeniden yazsaydk, yle grnecekti: If (Clock.Hour < 12) Then TextWindow.WriteLine("Gnaydn Dnya") Else TextWindow.WriteLine("yi Akamlar Dnya") EndIf

Ve bu program dieriyle ayn ii yapacaktr, bu da bizi bilgisayar programlamasnda ok nemli bir derse getirir:

Programlamada, genellikle ayn eyi yapmann pek ok yolu vardr. Bazen bir yntem dierinden daha anlaml gelir. Seim, programcya braklmtr. Daha ok program yazdka ve daha deneyimli hale geldike, bu farkl teknikleri ve avantajlar ile dezavantajlarn fark etmeye balayacaksnz.

Girintili Yazmak
Tm rneklerde, If, Else ve EndIf arasndaki ifadelerin girintili yazldn grebilirsiniz. Bu girintili yazma ilemi gerekli deildir. Bilgisayar programlar bunlar olmadan da gayet iyi anlayacaktr. Ancak, bunlar programn yapsn daha kolay anlamamz salarlar. Bu yzden, bu tip bloklar arasndaki ifadeleri girintili yazmak genellikle iyi bir uygulama olarak deerlendirilir.

ift ya da Tek
imdi artk elimizde If..Then..Else..EndIf ifadesi olduuna gre, verilen bir saynn tek mi, ift mi olduunu syleyecek bir program yazalm. TextWindow.Write("Bir say girin: ") num = TextWindow.ReadNumber() remainder = Math.Remainder(num, 2) If (remainder = 0) Then TextWindow.WriteLine("Say ift Say") Else TextWindow.WriteLine("Say Tek Say") EndIf Ve bu program altrdnzda, yle bir kt greceksiniz:

ekil 16 ift ya da Tek

Bu programda, yeni bir faydal ilem olan Math.Remainder ilemini tanttk. Ve evet, belki de anlam olduunuz gibi, Math.Remainder ilk sayy ikinci sayya blecek ve sonra kalann verecektir.

Dallanma
Hatrlarsanz, ikinci blmde, bilgisayarn bir program yukardan aaya doru her defasnda bir ifadeyi ilemden geirecek ekilde altrdn renmitiniz. Bununla birlikte, bilgisayarn srann dna karak bir baka ifadeye atlamasn salayan zel bir ifade vardr. Bir sonraki programa bir gz atalm. i = 1 start: TextWindow.WriteLine(i) i = i + 1 If (i < 25) Then Goto start EndIf

ekil 17 Goto Komutunun Kullanlmas

Yukardaki programda, i deikenine 1 deerini atadk. Ve sonra, iki nokta st ste (:) ile biten yeni bir ifade ekledik. start: Bu, bir etiket olarak adlandrlr. Etiketler, bilgisayarn anlayabildii yer imleri gibidir. Yer imini istediiniz gibi adlandrabilirsiniz ve her biri farkl adlandrlm olmas kouluyla, programnza istediiniz kadar etiket ekleyebilirsiniz. Buradaki bir dier ilgin ifade de udur: i = i + 1

Bu yalnzca bilgisayara i deikenine 1 eklemesini ve onu tekrar i deikenine atamasn syler. Yani, inin deeri bu ifadeden nce 1 ise, ifade altrldktan sonra 2 olacaktr. Ve son olarak da, If (i < 25) Then Goto start EndIf Bu, bilgisayara inin deeri 25den kkse, ifadeleri start yer iminden balayarak uygulamasn syleyen blmdr.

Sonsuz uygulama
Goto ifadesini kullanarak, bilgisayarn bir eyi istediiniz defa tekrarlamasn salayabilirsiniz. rnein; ift ya da Tek programn alp, aadaki gibi deitirdiinizde, program sonsuza kadar alacaktr. Pencerenin st sa kesindeki Kapatma (X) dmesine basarak program durdurabilirsiniz. begin: TextWindow.Write("Bir say girin: ") num = TextWindow.ReadNumber() remainder = Math.Remainder(num, 2) If (remainder = 0) Then TextWindow.WriteLine("Say ift Say") Else TextWindow.WriteLine("Say Tek Say") EndIf Goto begin

ekil 18 ift ya da Tek sonsuza kadar alan

Blm 5

Dngler
Dng in
Daha nceki blmde yazdmz bir program ele alalm. i = 1 start: TextWindow.WriteLine(i) i = i + 1 If (i < 25) Then Goto start EndIf Bu program, 1den 24e kadar saylar srayla yazdryor. Bu bir deikeni artrma sreci programlamada olduka yaygn olduundan, programlama dilleri genellikle bunu yapmak iin daha kolay bir yntem sunarlar. Yukardaki program, aadaki programa edeerdir: For i = 1 To 24 TextWindow.WriteLine(i) EndFor

Ve kts da udur:

ekil 19 For Dngsnn Kullanlmas

Grdnz gibi, 8 satrlk bir program 4 satrlk bir programa drdk ve yine de 8 satrlk programla ayn ii yapyor! Daha nce, genellikle ayn eyi yapmann eitli yollar olduunu sylediimizi hatrlayn. te bu, harika bir rnek. For..EndFor, programlama dilinde bir dng olarak adlandrlr. Bu size, bir deikeni alp, ona bir balang ve biti noktas vermenizi ve bilgisayarn deikeni sizin iin artrmasn salar. Bilgisayar deikenin deerini her artrdnda, For ve EndFor arasndaki ifadeleri altrr. Ancak, eer deikenin birer birer yerine diyelim ki ikier ikier artmasn isteseydiniz, 1 ile 24 arasndaki tm tek saylar yazdrmak isteyecektiniz, dngy bunu yapmak iin de kullanabilirsiniz. For i = 1 To 24 Step 2 TextWindow.WriteLine(i) EndFor

ekil 20 Yalnzca Tek Saylar

fadenin Step 2 blm, For bilgisayara inin deerini 1 yerine 2 artrmasn syler. Step kullanarak, istediiniz aralklarla artrma yapabilirsiniz. Step iin negatif bir deer bile belirleyebilirsiniz ve bu durumda bilgisayar, aadaki rnekte olduu gibi geriye doru sayar: For i = 10 To 1 Step -1 TextWindow.WriteLine(i) EndFor

ekil 21 Geriye Doru Saymak

While Dngs
While dngs, bir dier dng yntemidir; bu yntem, zellikle dng says nceden bilinmedii zaman faydaldr. Bir For dngs nceden tanmland kadar alrken, While dngs verilen bir koul doru hale gelinceye kadar alr. Aadaki rnekte, sonu 1den byk olduu srece bir sayy ikiye blyoruz. number = 100 While (number > 1) TextWindow.WriteLine(number) number = number / 2 EndWhile

ekil 22 kiye Blme Dngs

Yukardaki programda, numbera 100 deerini atyoruz ve say 1den byk olduu srece While dngsn altryoruz. Dngnn iinde, sayy yazdryoruz ve sonra da ikiye blp, yarsn buluyoruz. Ve beklendii ekilde, programn kts birbiri ardna yarya inen saylar oluyor. Bu program For dngsn kullanarak yazmak gerekten zor olurdu, nk dngnn ka kez almas gerektiini bilemezdik. Bir While dngs ile, bir koulu kontrol etmek ve bilgisayara dngy srdrmesini ya da brakmasn sylemek kolaydr. Tm While dnglerinin bir If..Then ifadesine dntrlebileceini bilmek ilgintir. rnein; yukardaki program, sonucu etkilemeden aadaki ekilde de yazlabilir. number = 100 startLabel: TextWindow.WriteLine(number) number = number / 2 If (number > 1) Then Goto startLabel EndIf

Aslnda, bilgisayar dahili olarak, her bir While dngsn bir ya da daha fazla Goto ifadesi ile birlikte If..Then kullanan ifadeler eklinde yeniden yazar.

Blm 6

Grafiklere Giri
imdiye kadar verdiimiz tm rneklerimizde, Small Basic dilinin temellerini aklamak iin, TextWindowu kullandk. Bununla birlikte, Small Basicde bu blmde aratrmaya balayacamz gl bir Grafik zellii seti de bulunur.

GraphicsWindowa Giri
Tpk, Metinlerle ve Saylarla almamza izin veren TextWindow gibi, Small Basic ayn zamanda bir eyler izmemizi salayan bir GraphicsWindow da sunar. GraphicsWindowu grntleyerek balayalm. GraphicsWindow.Show()

Bu program altrdnzda, bildiimiz siyah metin penceresi yerine, aadaki gibi beyaz bir pencerenin aldn greceksiniz. Henz bu pencerede yapacak fazla bir ey yoktur. Ancak, bu blmde zerinde alacamz zemin pencere bu olacak. Pencerenin st sa kesindeki X dmesine basarak bu pencereyi kapatabilirsiniz.

ekil 23 Bo Bir Grafik Penceresi

Grafik Penceresinin Kurulumu


Grafik penceresi, grnn isteiniz gibi ayarlamanza izin verir. Bu pencerenin baln, arka plann ve boyutunu deitirebilirsiniz. imdi devam edelim ve pencereyi daha iyi tanmak iin, onu birazck deitirelim. GraphicsWindow.BackgroundColor = "SteelBlue" GraphicsWindow.Title = "Grafik Pencerem" GraphicsWindow.Width = 320 GraphicsWindow.Height = 200 GraphicsWindow.Show()

zelletirilmi bir pencere ite byle grnr. Arka plan rengini Ek Bde listelenen pek ok renkten birisine deitirebilirsiniz. Pencerenin grnm nasl deitirebileceinizi grmek iin, bu zelliklerle oynayn.

ekil 24 zelletirilmi Bir Grafik Penceresi

izgiler izmek
GraphicsWindowni atktan sonra, zerine ekil, metin ve hatta resim izebiliriz. Baz basit ekiller izmekle balayalm. te, Grafik Penceresine bir ift izgi izen bir program. GraphicsWindow.Width = 200 GraphicsWindow.Height = 200 GraphicsWindow.DrawLine(10, 10, 100, 100) GraphicsWindow.DrawLine(10, 100, 100, 10)

ekil 25 apraz areti

Programn ilk iki satr, pencereyi ayarlar ve ondan sonraki iki satr da apraz iaretinin izgilerini izer. DrawLinedan sonra gelen ilk iki say, balang x ve y koordinatlarn ve dier ikisi de, biti x ve y koordinatlarn belirtir. Bilgisayar grafikleri ile ilgili ilgin olan ey, koordinatlarn (0, 0) pencerenin st sol kesinden balamasdr. Gerekte, koordinat uzaynda, pencere 2. drdnde gibi kabul edilir.

Renkler iin isimler kullanmak yerine, internet renk gsterimini de (#RRGGBB) kullanabilirsiniz. rnein; #FF0000 Krmz renge karlk gelir, #FFFF00 Sar renge, vs. *TODO Renkler blmnde+ renkler hakknda daha fazla bilgi edineceiz

ekil 26 Koordinat haritas

izgi programna geri dnersek, Small Basicin izginin renk ve kalnlk gibi zelliklerini deitirmenize izin vermesi ilgintir. lk nce, aadaki programda gsterildii ekilde, izgilerin rengini deitirelim. GraphicsWindow.Width = 200 GraphicsWindow.Height = 200 GraphicsWindow.PenColor = "Green" GraphicsWindow.DrawLine(10, 10, 100, 100) GraphicsWindow.PenColor = "Gold" GraphicsWindow.DrawLine(10, 100, 100, 10)

ekil 27 izgi Renginin Deitirilmesi

imdi, boyutunu da deitirelim. Aadaki programda, izgi kalnln varsaylan deer olan 1 yerine, 10 olarak deitiriyoruz. GraphicsWindow.Width = 200 GraphicsWindow.Height = 200 GraphicsWindow.PenWidth = 10 GraphicsWindow.PenColor = "Green" GraphicsWindow.DrawLine(10, 10, 100, 100) GraphicsWindow.PenColor = "Gold" GraphicsWindow.DrawLine(10, 100, 100, 10)

ekil 28 Kaln Renkli izgiler

PenWidth ve PenColor, bu izgilerin izildii kalemi deitirir. Bunlar yalnzca izgileri deil, zellikler gncellendikten sonra izilen tm ekilleri etkilerler. Daha nceki blmlerde rendiimiz dng yapan ifadeleri kullanarak, kolayca, kalem kalnl gittike artan birden fazla izgi izebiliriz. GraphicsWindow.BackgroundColor = "Black" GraphicsWindow.Width = 200 GraphicsWindow.Height = 160 GraphicsWindow.PenColor = "Blue" For i = 1 To 10 GraphicsWindow.PenWidth = i GraphicsWindow.DrawLine(20, i * 15, 180, i * 15) endfor

ekil 29 Birden Fazla Kalem Kalnl

Bu programn ilgin blm; dng her altnda PenWidthin artmas ve sonra eskisinin altna yeni bir izgi izmesidir.

ekiller izmek ve lerini Doldurmak


ekiller izmeye geldiinde, her ekil iin genellikle iki tip ilem vardr. Bunlar, izme ve ini Doldurma ilemleridir. izme ilemleri, bir kalem kullanarak eklin d erevesini izer ve ini Doldurma ilemleri de, bir fra kullanarak ekli boyar. rnein; aadaki programda, iki adet dikdrtgen var, bunlardan birisi krmz bir kalem kullanlarak izilmi ve dieri de Yeil Fra kullanlarak ii doldurulmu. GraphicsWindow.Width = 400 GraphicsWindow.Height = 300 GraphicsWindow.PenColor = "Red" GraphicsWindow.DrawRectangle(20, 20, 300, 60) GraphicsWindow.BrushColor = "Green" GraphicsWindow.FillRectangle(60, 100, 300, 60)

ekil 30 izmek ve lerini Doldurmak

Bir dikdrtgen izmek veya iini doldurmak iin, drt sayya ihtiyacnz vardr. lk iki say, dikdrtgenin st sol kesinin X ve Y koordinatlarn temsil eder. nc say, dikdrtgenin geniliini, drdnc ise yksekliini belirtir. Aslnda, ayn ey aadaki programdaki elipslerin izilmesi ve ilerinin doldurulmas iin de geerlidir. GraphicsWindow.Width = 400 GraphicsWindow.Height = 300 GraphicsWindow.PenColor = "Red" GraphicsWindow.DrawEllipse(20, 20, 300, 60) GraphicsWindow.BrushColor = "Green" GraphicsWindow.FillEllipse(60, 100, 300, 60)

ekil 31 Elipsler izmek ve lerini Doldurmak

Elipsler, yalnzca genel bir daire biimidir. Daireler izmek isterseniz, ayn genilii ve ykseklii belirtmeniz gerekir. GraphicsWindow.Width = 400 GraphicsWindow.Height = 300 GraphicsWindow.PenColor = "Red" GraphicsWindow.DrawEllipse(20, 20, 100, 100) GraphicsWindow.BrushColor = "Green" GraphicsWindow.FillEllipse(100, 100, 100, 100)

ekil 32 Daireler

Blm 7

ekillerle Elence
Bu blmde, u ana kadar rendiklerimizle biraz eleneceiz. Bu blm, baz ho grnml programlar yaratmak iin, u anda kadar rendiklerinizi birletirmenin baz ilgin yntemlerini gsteren rnekler ierir.

e Dikdrtgenler
Burada, bir dng ierisinde boyutlar gittike artan dikdrtgenler izeceiz. GraphicsWindow.BackgroundColor = "Black" GraphicsWindow.PenColor = "LightBlue" GraphicsWindow.Width = 200 GraphicsWindow.Height = 200 For i = 1 To 100 Step 5 GraphicsWindow.DrawRectangle(100 - i, 100 - i, i * 2, i * 2) EndFor

ekil 33 e Dikdrtgenler

e Daireler
Bir nceki programn bir varyasyonu olan bu program, kereler yerine daireler izer. GraphicsWindow.BackgroundColor = "Black" GraphicsWindow.PenColor = "LightGreen" GraphicsWindow.Width = 200 GraphicsWindow.Height = 200 For i = 1 To 100 Step 5 GraphicsWindow.DrawEllipse(100 - i, 100 - i, i * 2, i * 2) EndFor

ekil 34 e Daireler

Rasgeleletirmek
Bu program, frann rengini rasgele semek iin GraphicsWindow.GetRandomColor ilemini ve sonra da dairelerin x ve y koordinatlarn semek iin Math.GetRandomNumber ilemini kullanr. Bu iki ilem, altklar her seferde farkl sonular veren ilgin programlar oluturmak iin, ilgin ekillerde birletirilebilirler. GraphicsWindow.BackgroundColor = "Black" For i = 1 To 1000 GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor() x = Math.GetRandomNumber(640) y = Math.GetRandomNumber(480) GraphicsWindow.FillEllipse(x, y, 10, 10) EndFor

ekil 35 Rasgeleletirmek

Benzerlerin Oluturduu ekiller


Aadaki program, rasgele saylar kullanarak, benzer ekillerden oluan basit bir gen izer. Benzerlerin oluturduu ekil, her biri tam olarak ana ekle benzeyen blmlere ayrlabilen geometrik bir ekildir. Bu durumda program, her biri ana gene benzeyen yzlerce gen izer. Ve program birka saniye altktan sonra, genlerin yalnzca noktalardan olutuunu grebilirsiniz. Bunun mantn aklamak zordur ve bunun kefini bir altrma olarak size brakyorum. GraphicsWindow.BackgroundColor = "Black" x = 100 y = 100 For i = 1 To 100000 r = Math.GetRandomNumber(3) ux = 150 uy = 30 If (r = 1) then ux = 30 uy = 1000 EndIf If (r = 2) Then ux = 1000 uy = 1000 EndIf x = (x + ux) / 2 y = (y + uy) / 2 GraphicsWindow.SetPixel(x, y, "LightGreen") EndFor

ekil 36 Benzer ekillerden Oluan gen

Noktalarn bu ekli oluturmasn grmek istiyorsanz, Program.Delay ilemini kullanarak, dngde bir gecikme yaratabilirsiniz. Bu ilem, gecikmeyi milisaniye olarak belirten bir say kullanr. te, programn deitirilmi hali, deitirilen yer koyu renkte gsterilmitir. GraphicsWindow.BackgroundColor = "Black" x = 100 y = 100 For i = 1 To 100000 r = Math.GetRandomNumber(3) ux = 150 uy = 30 If (r = 1) then ux = 30 uy = 1000 EndIf If (r = 2) Then ux = 1000 uy = 1000 EndIf

x = (x + ux) / 2 y = (y + uy) / 2 GraphicsWindow.SetPixel(x, y, "LightGreen") Program.Delay(2) EndFor Gecikmenin artrlmas, program yavalatacaktr. stediinizi bulmak iin saylarla oynayn. Bu program zerinde yapabileceiniz bir baka deiiklik de, GraphicsWindow.SetPixel(x, y, "LightGreen") satrn aadaki satr ile deitirmektir: color = GraphicsWindow.GetRandomColor() GraphicsWindow.SetPixel(x, y, color) Bu deiiklik, programa genin piksellerini rasgele renkler kullanarak izdirecektir.

Blm 8

Turtle Graphics
Logo
1970lerde, az sayda aratrmac tarafndan kullanlan, olduka basit, ancak gl, Logo isimli bir programlama dili vard. Bu, birisi dile Turtle Graphics olarak adlandrlan eyi ekleyinceye ve ekrana Move Forward, Turn Right, Turn Left, (leri Git, Saa Dn, Sola Dn) vs. gibi komutlara yant veren bir Kurbaa (Turtle) yerletirinceye kadar devam etti. Kurbaay kullanarak, insanlar ekranda ilgin ekiller izebiliyorlard. Bu, dili derhal eriilebilir ve tm yatan insanlar asndan ekici hale getirdi ve 1980lerde poplerliinin olduka artmasnn en byk nedeniydi. Small Basicde, programlarn ierisindeki programlardan arlabilen pek ok komuta sahip olan bir Turtle nesnesi bulunur. Bu blmde, Kurbaay ekranda grafikler izmek iin kullanacaz.

Kurbaa
Balang olarak, Kurbaann ekranda grnr hale gelmesini salamamz gerekiyor. Bu tek satrlk basit bir programla yaplabilir. Turtle.Show()

Bu program altrdnzda, merkezinde bir Kurbaa bulunmas dnda, tpk daha nceki blmde grdmz gibi beyaz bir pencerenin aldn greceksiniz. Talimatlarmz izleyecek ve izmesini istediimiz eyi izecek olan Kurbaa budur.

ekil 37 Kurbaa grnr halde

Hareket Ettirmek ve ekiller izmek


Kurbaann anlad talimatlardan birisi Movedur. Bu ilem bir sayy girdi olarak alr. Bu say, Kurbaaya ne kadar uzaa gitmesi gerektiini syler. Diyelim ki; aadaki rnekte Kurbaaya 100 piksel hareket etmesini syleyeceiz. Turtle.Move(100) Bu program altrdnzda, kurbaann yukarya doru yavaa 100 piksel hareket ettiini grebilirsiniz. Hareket ettike, arkasnda bir izgi izdiini de fark edeceksiniz. Kurbaa hareket etmeyi bitirdiinde, sonu aadaki ekildeki gibi olacaktr.

Kurbaa zerinde ilemler kullanrken, Show() komutunu kullanmaya gerek yoktur. Ne zaman bir Kurbaa ilemi gerekletirilirse, Kurbaa otomatik olarak grnr hale gelecektir.

ekil 38 Yz piksel hareket ettirmek

Bir Kare izmek


Karenin iki dikey, iki de yatay drt kenar vardr. Bir kare izmek iin, Kurbaann bir izgi izmesini, saa dnmesini ve bir baka izgi izmesini ve drt kenar da tamamlanncaya kadar bu ileme devam etmesini salamamz gerekir. Eer bunu bir programa evirseydik, yle grnrd. Turtle.Move(100) Turtle.TurnRight() Turtle.Move(100) Turtle.TurnRight() Turtle.Move(100) Turtle.TurnRight() Turtle.Move(100) Turtle.TurnRight()

Bu program altrdnzda, Kurbaann her defada bir izgi olmak zere bir kare izdiini ve sonucun aadaki ekildeki gibi olacan grebilirsiniz.

ekil 39 Bir kare izen Kurbaa

Ayn talimatlar tekrar tekrar yazyor olduumuzu not etmek ilgin olacaktr tam olarak drt defa. Ve bu tip tekrarlanan komutlarn dng kullanlarak uygulanabileceini daha nce renmitik. Yani, yukardaki program alp, For..EndFor dngsn kullanacak ekilde deitirirsek, sonuta ortaya ok daha basit bir program kacaktr. For i = 1 To 4 Turtle.Move(100) Turtle.TurnRight() EndFor

Renkleri Deitirmek
Kurbaa, daha nceki blmde grdmzle ayn GraphicsWindowda izim yapar. Bu da, nceki blmde rendiimiz tm ilemlerin burada da geerli olduu anlamna gelir. rnein; aadaki program, karenin her bir kenarn farkl renkte izecektir. For i = 1 To 4 GraphicsWindow.PenColor = GraphicsWindow.GetRandomColor() Turtle.Move(100) Turtle.TurnRight() EndFor

ekil 40 Renkleri Deitirmek

Daha karmak ekiller izmek


TurnRight ve TurnLeft ilemlerine ek olarak, Kurbaann bir de Turn ilemi vardr. Bu ilem, dnme asn belirten bir girdi alr. Bu ilem kullanlarak, herhangi bir okgeni izmek mmkndr. Aadaki program bir altgen (alt kenarl bir okgen) izer. For i = 1 To 6 Turtle.Move(100) Turtle.Turn(60) EndFor

Gerekten bir altgen izip izmediini grmek iin bu program deneyin. Kenarlar arasndaki a 60 derece olduu iin, Turn(60) komutunu kullandmza dikkat edin. Tm kenarlar eit olan bu tip bir okgen iin, 360 says kenar adedine blnerek, kenarlar arasndaki a kolayca elde edilebilir. Bu bilgiyle kuatldktan sonra ve deikenleri kullanarak, artk herhangi adette kenara sahip bir okgen izmek iin olduka genel bir program yazabiliriz. sides = 12 length = 400 / sides angle = 360 / sides For i = 1 To sides Turtle.Move(length) Turtle.Turn(angle) EndFor Bu program kullanarak, yalnzca sides deikenini deitirerek, herhangi bir okgen izebilirsiniz. Buraya 4 saysn koymak, bize balangta izdiimiz Kareyi verecektir. rnein; 50 gibi yeteri derecede byk bir deer girmek, sonucun bir daireye ok benzemesine neden olacaktr.

ekil 41 12 kenarl bir okgen izmek

Biraz nce rendiimiz teknii kullanarak, ilgin bir sonu elde edecek ekilde Kurbaann her seferinde biraz kayarak birden fazla daire izmesini salayabiliriz. sides = 50 length = 400 / sides angle = 360 / sides Turtle.Speed = 9 For j = 1 To 20 For i = 1 To sides Turtle.Move(length) Turtle.Turn(angle) EndFor Turtle.Turn(18) EndFor Yukardaki programda, birisi dierinin ierisinde iki adet For..EndFor dng vardr. teki dng (i = 1 to sides), okgen programna benzer ve bir daire izmekten sorumludur. Dtaki dng, (j = 1 to 20) izilen her bir daire iin, Kurbaay biraz dndrmekten sorumludur. Bu, Kurbaaya 20 adet daire izmesini syler. Hepsi bir araya getirildiinde, bu program aada gsterildii ekilde ilgin bir motifle sonulanr.

Yukardaki programda, Hz 9 olarak girerek, Kurbaann daha hzl hareket etmesini saladk. Kurbaann istediiniz kadar hzl gitmesi iin, bu deeri 1 ile 10 arasnda herhangi bir say olarak girebilirsiniz.

ekil 42 Daireler halinde hareket etmek

evrede Dolamak
PenUp ilemini ararak, kurbaann izmemesini salayabilirsiniz. Bu, sizin kurbaay izim yapmadan ekranda herhangi bir yere hareket ettirebilmenizi salar. PenDown ileminin arlmas, kurbaann tekrar izmeye balamasn salayacaktr. Bu, noktal izgiler gibi baz ilgin efektler elde etmek iin kullanlabilir. te, bunu noktal izgili bir okgen izmek iin kullanan bir program. sides = 6 length = 400 / sides angle = 360 / sides For i = 1 To sides For j = 1 To 6 Turtle.Move(length / 12) Turtle.PenUp() Turtle.Move(length / 12) Turtle.PenDown() EndFor Turtle.Turn(angle) EndFor

Yine, bu programda da iki dng var. teki dng, tek bir noktal izgi izer, buna karlk dtaki dng ka izgi izileceini belirtir. rneimizde, sides deikeni iin 6 saysn kullandk ve bylece aadaki ekilde, noktal izgili bir altgen elde ettik.

ekil 43 PenUp ve PenDown ilemlerinin kullanlmas

Blm 9

Altyordamlar
Program yazarken, sk sk ayn adm setini defalarca tekrar uygulamamz gerekecek durumlar olacaktr. Bu tip durumlarda, ayn ifadeleri birden fazla kez yazmak muhtemelen ok da anlaml olmayacaktr. te burada Altyordamlar faydal olurlar. Bir altyordam, daha byk bir program ierisindeki kodun genellikle ok zel bir ey yapan ve programdaki herhangi bir yerden arlabilen bir blmdr. Altyordamlar, Sub anahtar kelimesinin ardndan gelen bir isimle tanmlanrlar ve EndSub anahtar kelimesiyle sonlandrlrlar. rnein; aadaki kk para ismi PrintTime olan bir altyordam temsil etmektedir ve bu altyordam, o andaki zaman TextWindowa yazdrma iini yapar. Sub PrintTime TextWindow.WriteLine(Clock.Time) EndSub Aada, altyordam ieren ve onu eitli yerlerden aran bir program yer almaktadr. PrintTime() TextWindow.Write("sminizi girin: ") name = TextWindow.Read() TextWindow.Write(name + ", u anda saat: ") PrintTime()

Sub PrintTime TextWindow.WriteLine(Clock.Time) EndSub

ekil 44 Basit bir Altyordamn arlmas

SubroutineName() ararak, bir altyordam uygularsnz. Her zaman olduu gibi, bilgisayara bir altyordam uygulamak istediinizi sylemek iin, () noktalama iaretleri gereklidir.

Altyordamlar kullanmann avantajlar


Biraz nce yukarda grdmz gibi, altyordamlar yazmanz gereken kod miktarn azaltrlar. PrintTime altyordamn bir kez yazdnzda, onu programnz ierisindeki herhangi bir yerden arabilirsiniz ve ardnzda o andaki zaman yazdracaktr. Unutmayn ki; bir SmallBasic altyordamn Buna ek olarak, altyordamlar karmak yalnzca ayn program ierisinden problemlerin daha basit paralara ayrlmasna arabilirsiniz. Bir altyordam baka bir da yardmc olabilirler. Diyelim ki zmeniz program ierisinden aramazsnz. gereken karmak bir eitlik var, bu karmak eitliin daha kk paralarn zen eitli altyordamlar yazabilirsiniz. Daha sonra, orijinal karmak eitliin zmn elde etmek iin, bunlar bir araya getirebilirsiniz. Ayrca altyordamlar, bir programn okunabilirliinin iyiletirilmesine de yardmc olabilirler. Dier bir deyile, programnzn ortak olarak alan blmleri iin iyi isimlendirilmi altyordamlarnz varsa, programnzn okunmas ve kavranmas daha kolay hale gelir. Bu, bir baka kiinin yazd program anlamak istediinizde veya programnzn bakalar tarafndan anlalmasn istediinizde ok nemlidir. Bazen bu, kendi programnz mesela yazdktan bir hafta sonra okumak istediinizde de faydaldr.

Deikenlerin kullanlmas
Bir programdaki herhangi bir deikene, bir altyordam ierisinden eriebilir ve onu kullanabilirsiniz. Bir rnek olarak, aadaki program iki sayy kabul eder ve ikisinden byk olan yazdrr. max deikeninin altyordamn hem iinde, hem de dnda kullanldna dikkat edin. TextWindow.Write("Birinci sayy girin: ") num1 = TextWindow.ReadNumber() TextWindow.Write("kinci sayy girin: ") num2 = TextWindow.ReadNumber() FindMax() TextWindow.WriteLine("Maksimum say: " + max) Sub FindMax If (num1 > num2) Then max = num1 Else max = num2 EndIf EndSub Ve bu programn kts u olacaktr.

ekil 45 Altyordam kullanlarak iki saynn by

imdi, Altyordamlarn kullanmn gsterecek bir baka rnee bakalm. Bu defa, x ve y deikenlerinde saklayacak eitli noktalar hesaplayan bir grafik program kullanacaz. Program daha sonra, merkez olarak x ve yyi kullanarak bir daire izmekten sorumlu olan DrawCircleUsingCenter isimli bir altyordam kullanacak. GraphicsWindow.BackgroundColor = "Black" GraphicsWindow.PenColor = "LightBlue" GraphicsWindow.Width = 480 For i = 0 To 6.4 Step 0.17 x = Math.Sin(i) * 100 + 200 y = Math.Cos(i) * 100 + 200 DrawCircleUsingCenter() EndFor Sub DrawCircleUsingCenter startX = x - 40 startY = y - 40 GraphicsWindow.DrawEllipse(startX, startY, 120, 120) EndSub

ekil 46 Altyordamlar in Grafik rnekleri

Dngler ierisinde Altyordamlarn arlmas


Bazen, altyordamlar bir dngnn iinden arlrlar, bu srada ayn ifade setini uygularlar, ancak bunu bir ya da daha fazla deikende farkl deerlerle yaparlar. rnein; diyelim ki, PrimeCheck isimli bir altyordamnz var ve bu altyordam, bir saynn asal olup olmadn belirliyor. Kullancya bir deer girmesini syleyen bir program yazabilir ve sonra bu altyordam kullanarak, onun asal olup olmadn syleyebilirsiniz. Aadaki program bunu gstermektedir. TextWindow.Write("Bir say girin: ") i = TextWindow.ReadNumber() isPrime = "True" PrimeCheck() If (isPrime = "True") Then TextWindow.WriteLine(i + " bir asal saydr") Else TextWindow.WriteLine(i + " bir asal say deildir") EndIf Sub PrimeCheck For j = 2 To Math.SquareRoot(i) If (Math.Remainder(i, j) = 0) Then isPrime = "False" Goto EndLoop EndIf Endfor EndLoop: EndSub PrimeCheck altyordam, i deerini alr ve bunu daha kk saylara blmeye alr. Eer bir say iye blnr ve kalan olmazsa, bu durumda i bir asal say deildir. Bu noktada, altyordam isPrimen deerini False olarak belirler ve kar. Say daha kk saylara blnemezse, bu durumda isPrimen deeri True olarak kalr.

ekil 47 Asal Kontrol

Artk bizim iin Asal kontroln yapacak bir altyordamnz olduuna gre, bunu diyelim ki, 100n altndaki tm asal saylar listelemek iin kullanabilirsiniz. Yukardaki program deitirmek ve bir dng

iinden PrimeChecki armasn salamak gerekten kolaydr. Bu, altyordama dng her altnda hesaplamas iin farkl bir deer verir. Aadaki rnekle bunun nasl yapldn grelim. For i = 3 To 100 isPrime = "True" PrimeCheck() If (isPrime = "True") Then TextWindow.WriteLine(i) EndIf EndFor Sub PrimeCheck For j = 2 To Math.SquareRoot(i) If (Math.Remainder(i, j) = 0) Then isPrime = "False" Goto EndLoop EndIf Endfor EndLoop: EndSub Yukardaki programda, i deeri dng her altnda gncellenir. Dngnn iinde, PrimeCheck altyordam iin bir ar yaplr. Daha sonra, PrimeCheck altyordam i deerini alr ve inin bir asal say olup olmadn hesaplar. Sonu, daha sonra altyordamn dndaki dng tarafndan eriilen isPrime deikeninde saklanr. Daha sonra, asal say olduunun anlalmas durumunda, inin deeri yazdrlr. Ve dng 3ten balayp 100e kadar kt iin, 3 ile 100 arasndaki tm asal saylarn bir listesini elde ederiz. Aada programn sonucu yer almaktadr.

ekil 48 Asal Saylar

Blm 10

Diziler
u ana kadar, size deikenlerin kullanm konusunda detayl bilgiler verdik ne de olsa bu noktaya kadar geldiniz ve hala eleniyorsunuz, yle deil mi? Bir an iin, deikenlerle yazdmz ilk programa geri dnelim: TextWindow.Write("sminizi Girin: ") name = TextWindow.Read() TextWindow.WriteLine("Merhaba " + name) Bu programda, kullancnn ismini name isimli bir deikene aldk ve orada sakladk. Daha sonra kullancya Merhaba dedik. imdi, diyelim ki; birden fazla kullanc var mesela 5 kullanc. Hepsinin ismini nasl saklayabiliriz? Bunu yapmann bir yolu udur: TextWindow.Write("Kullanc1, name1 = TextWindow.Read() TextWindow.Write("Kullanc2, name2 = TextWindow.Read() TextWindow.Write("Kullanc3, name3 = TextWindow.Read() TextWindow.Write("Kullanc4, name4 = TextWindow.Read() TextWindow.Write("Kullanc5, name5 = TextWindow.Read() isminizi girin: ") isminizi girin: ") isminizi girin: ") isminizi girin: ") isminizi girin: ")

TextWindow.Write("Merhaba ") TextWindow.Write(name1 + ", ") TextWindow.Write(name2 + ", ") TextWindow.Write(name3 + ", ") TextWindow.Write(name4 + ", ") TextWindow.WriteLine(name5) Bu program altrdnzda, aadaki sonucu greceksiniz:

ekil 49 Diziler kullanlmadan

phesiz, bu kadar basit bir program yazmann daha iyi bir yolu olmal, deil mi? zellikle bilgisayarlar tekrarlanan grevleri yapmakta olduka baarl olduklarndan, her bir yeni kullanc iin ayn kodu neden tekrar tekrar yazmakla uraalm ki? Buradaki hile, ayn deikeni kullanarak, birden fazla kullancnn ismini saklamak ve geri armaktr. Eer bunu yapabilirsek, bu durumda daha nceki blmlerde rendiimiz bir For dngs kullanabiliriz. Burada diziler imdadmza yetiir.

Bir dizi nedir?


Dizi, bir defada birden fazla deeri tutabilen zel bir deikendir. Temel olarak anlam udur; be kullanc adn saklamak iin name1, name2, name3, name4 ve name5 yaratmak yerine, be kullanc isminin tmn saklamas iin namei kullanabiliriz. Birden fazla deeri saklamann yolu, indeks denilen eyi kullanmaktr. rnein; name[1], name[2], name[3], name[4] ve name[5]in her biri bir deer saklayabilir. 1, 2, 3, 4 ve 5 saylar, dizi iin indeks olarak adlandrlr. name[1], name[2], name[3], name[4] ve name[5] farkl deikenler gibi grnse de, gerekte bunlarn hepsi yalnzca tek bir deikendir. Ve bunun avantaj ne diye sorabilirsiniz. Deerleri bir dizide saklamann en iyi yan, bir baka deikeni kullanarak indeksi belirtebilmenizdir bu da, dnglerin ierisindeki dizilere kolayca eriebilmemizi salar. imdi, bir nceki programmz dizilerle yazarak, yeni rendiimiz bilgiyi nasl kullanabileceimize bir bakalm.

For i = 1 To 5 TextWindow.Write("Kullanc" + i + ", isminizi girin: ") name[i] = TextWindow.Read() EndFor TextWindow.Write("Merhaba ") For i = 1 To 5 TextWindow.Write(name[i] + ", ") EndFor TextWindow.WriteLine("") Okumas ok daha kolay, yle deil mi? Koyu renkte yazlm iki satra dikkat edin. Bunlardan birincisi; bir deeri dizide saklar ve ikicisi de onu diziden okur. name[1]de sakladnz deer, name[2]de sakladnzdan etkilenmeyecektir. Dolaysyla, ou ama iin, name[1] ve name[2]ye ayn zdelik ierisindeki iki farkl deiken gibi davranabilirsiniz.

ekil 50 Diziler kullanlarak

Yukardaki program, Mantisin sonundaki virgl haricinde, diziler olmayan program ile neredeyse ayn sonucu verir. Yazdrma dngsn yeniden yazarak bunu dzeltebiliriz: TextWindow.Write("Merhaba ") For i = 1 To 5 TextWindow.Write(name[i]) If i < 5 Then TextWindow.Write(", ") EndIf EndFor TextWindow.WriteLine("")

Bir dizinin indekslenmesi


Bir nceki programmzda, diziye deerleri saklayp, sonra da geri armak iin indeks olarak saylar kullandk. ndeksler yalnzca saylarla snrl deildir ve uygulamada, metinsel indeksler kullanmak da olduka avantajldr. rnein; aadaki programda, bir kullanc hakkndaki eitli bilgi paralarn soruyor ve saklyoruz ve sonra da kullancnn istedii bilgileri yazdryoruz. TextWindow.Write("sminizi girin: ") user["isim"] = TextWindow.Read() TextWindow.Write("Yanz girin: ") user["ya"] = TextWindow.Read() TextWindow.Write("ehrinizi girin: ") user["ehir"] = TextWindow.Read() TextWindow.Write("Posta kodunuzu girin: ") user["posta kodu"] = TextWindow.Read() TextWindow.Write("Hangi bilgiyi istiyorsunuz? ") index = TextWindow.Read() TextWindow.WriteLine(index + " = " + user[index])

ekil 51 Saysal olmayan indekslerin kullanlmas

Birden fazla boyut


Diyelim ki; tm arkadalarnzn isimlerini ve telefon numaralarn saklamak ve daha sonra da ihtiya duyduunuzda telefon numaralarna ulamak istiyorsunuz yani telefon defteri gibi bir ey. Bu tip bir program nasl yazabiliriz? Bu durumda, ilgili iki indeks seti vardr (bunlar dizinin boyutlar olarak da bilinirler). Her bir arkadanz takma ismiyle tanmladmz varsayalm. Bu, bizim dizideki ilk indeksimiz olur. Arkada deikenimizi elde etmek iin ilk indeksi kullandktan sonra, indekslerin ikincisi, isim ve telefon numaras o arkadan gerek ismine ve telefon numarasna ulamamz salayacaktr.

Dizi indeksleri byk/kk harfe duyarl deildir. Tpk normal deikenler gibi, dizi indekslerinin de tam olarak byk/kk harfe uymas gerekmez.

Bu verileri saklama eklimiz yle olacaktr: friends["Rob"]["sim"] = "Robert" friends["Rob"]["Telefon"] = "555-6789" friends["VJ"]["sim"] = "Vijaye" friends["VJ"]["Telefon"] = "555-4567" friends["Ash"]["sim"] = "Ashley" friends["Ash"]["Telefon"] = "555-2345" Ayn friends dizisinde iki indeksimiz olduuna gre, bu dizi iki boyutlu dizi olarak adlandrlr. Bu program bir kez dzenledikten sonra, girdi olarak bir arkadamzn takma ismini alabilir ve sonra o kii hakknda sakladmz bilgileri yazdrabiliriz. te bunu yapan programn tm: friends["Rob"]["sim"] = "Robert" friends["Rob"]["Telefon"] = "555-6789" friends["VJ"]["sim"] = "Vijaye" friends["VJ"]["Telefon"] = "555-4567" friends["Ash"]["sim"] = "Ashley" friends["Ash"]["Telefon"] = "555-2345" TextWindow.Write("Takma ismi girin: ") nickname = TextWindow.Read() TextWindow.WriteLine("sim: " + friends[nickname]["sim"]) TextWindow.WriteLine("Telefon: " + friends[nickname]["Telefon"])

ekil 52 Basit bir telefon defteri

Tablolar temsil etmesi iin Dizileri kullanmak


ok boyutlu dizilerin olduka yaygn bir kullanm, tablolar temsil etmektir. Tablolarn, iki boyutlu bir diziye ok iyi bir ekilde uyan sralar ve kolonlar vardr. Aada, bir tabloya kutular yerletiren bir program verilmitir: rows = 8 columns = 8 size = 40 For r = 1 To rows For c = 1 To columns GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor() boxes[r][c] = Shapes.AddRectangle(size, size) Shapes.Move(boxes[r][c], c * size, r * size) EndFor EndFor Bu program kareler ekler ve onlar 8x8 bir tablo oluturacak ekilde konumlandrr. Bu kutular yerletirmenin yannda, ayrca onlar bir dizi halinde de saklar. Bunu yapmas, kutular izlememizi ve gerektiinde tekrar kullanmamz kolaylatrr.

ekil 53 Kutular bir tabloya yerletirmek

rnein; bir nceki programn sonuna aadaki kodun eklenmesi, bu kutularn sol st keye gitmesine neden olacaktr. For r = 1 To rows For c = 1 To columns Shapes.Animate(boxes[r][c], 0, 0, 1000) Program.Delay(300) EndFor EndFor

ekil 54 Tablodaki kutularn izlenmesi

Blm 11

Olaylar ve Etkileim
lk iki blmde, zellikleri ve lemleri olan nesneleri tanttk. zelliklere ve ilemlere ek olarak, baz nesnelerin Olaylar da vardr. Olaylar, rnein; fareyi hareket ettirmek veya zerine tklamak gibi kullanc eylemlerine kar verilen sinyaller gibidir. Bir anlamda, olaylar ilemlerin zdddr. lemler sz konusu olduunda, bir programc olarak siz bilgisayara bir eyler yaptrrsnz, olaylar sz konusu olduunda ise, bilgisayar ilgin bir ey olduunda size haber verir.

Olaylar nasl faydaldr?


Olaylar, bir programa etkileim katmann merkezidir. Bir kullancnn programnzla etkileime girmesini isterseniz, olaylar kullanrsnz. Diyelim ki; bir Ta oyunu yazyorsunuz. Kullancnn hamlesine karar vermesine izin vermek isteyeceksiniz, deil mi? te burada olaylar iin iine girer olaylar kullanarak programnz ierisinden girdi alrsnz. Bunu kavramas zor gibi grnyorsa, endielenmeyin; olaylarn ne olduunu ve nasl kullanlabildiklerini anlamanza yardmc olacak ok basit bir rnee bir gz atacaz. Aada, yalnzca tek bir ifadeden ve bir altyordamdan oluan olduka basit bir program yer alyor. Altyordam, kullancya bir mesaj kutusu gstermek iin, GraphicsWindow nesnesinde ShowMessage ilemini kullanr. GraphicsWindow.MouseDown = OnMouseDown Sub OnMouseDown GraphicsWindow.ShowMessage("Tkladnz.", "Merhaba") EndSub

Yukardaki programda not edilmesi gereken ilgin blm, GraphicsWindow nesnesinin MouseDown olayna altyordam ismi atadmz satrdr. MouseDown tpk bir zellik gibi grnmektedir yalnzca, bir deer atamak yerine, ona OnMouseDown altyordamn atyoruz. Olaylar hakknda zel olan ey budur olay gerekletiinde, altyordam otomatik olarak arlr. Bu durumda, kullanc fareyi kullanarak her tkladnda, GraphicsWindow zerinde OnMouseDown altyordam arlr. Hadi program altrn ve deneyin. Fareyle GraphicsWindow zerine her tkladnzda, aadaki pencerede gsterilen gibi bir mesaj kutusu greceksiniz.

ekil 55 Bir olaya yant

Olaylarn bu ekilde kullanlmas olduka gldr ve olduka yaratc ve ilgin programlarn yazlabilmesini salar. Bu ekilde yazlm programlar, genellikle olay gdml programlar olarak adlandrlrlar. OnMouseDown altyordamn, bir mesaj kutusu amak yerine baka eyler yapmak zere deitirebilirsiniz. rnein; aadaki programda olduu gibi, kullancnn fareyi tklad yerlere byk mavi noktalar izebilirsiniz. GraphicsWindow.BrushColor = "Blue" GraphicsWindow.MouseDown = OnMouseDown Sub OnMouseDown x = GraphicsWindow.MouseX - 10 y = GraphicsWindow.MouseY - 10 GraphicsWindow.FillEllipse(x, y, 20, 20) EndSub

ekil 56 Fareye Tklama Olaynn Kullanlmas

Yukardaki programda, farenin koordinatlarn elde etmek iin MouseX ve MouseYyi kullandmza dikkat edin. Daha sonra bunlar, farenin koordinatlarn dairenin merkezi olarak alarak, bir daire izmek iin kullanyoruz.

Birden fazla olayn kullanlmas


Ne kadar olay kullanmak istediinizle ilgili gerekte bir snr yoktur. Hatta, birden fazla olay kullanacak bir altyordama bile sahip olabilirsiniz. Ancak, bir olay yalnzca bir kez kullanabilirsiniz. Ayn olaya iki altyordam atamaya alrsanz, ikincisi galip gelir. Bunu gstermek iin, bir nceki rnei alalm ve tulara basmay kullanan bir altyordam ekleyelim. Ayrca, bu yeni altyordama frann rengini deitirtelim, bylece fareye tkladnzda farkl bir renkte nokta elde edin. GraphicsWindow.BrushColor = "Blue" GraphicsWindow.MouseDown = OnMouseDown GraphicsWindow.KeyDown = OnKeyDown Sub OnKeyDown GraphicsWindow.BrushColor = GraphicsWindow.GetRandomColor() EndSub Sub OnMouseDown

x = GraphicsWindow.MouseX - 10 y = GraphicsWindow.MouseY - 10 GraphicsWindow.FillEllipse(x, y, 20, 20) EndSub

ekil 57 Birden fazla olayn kullanlmas

Bu program altrr ve pencereye tklarsanz, mavi bir nokta kacaktr. imdi, herhangi bir tua bir kez basar ve sonra yine tklarsanz, farkl renkte bir nokta kacaktr. Bir tua bastnzda, frann rengini rasgele bir renge deitiren OnKeyDown altyordam uygulanr. Bundan sonra fareye tkladnzda, yeni belirlenen renk kullanlarak bir daire izilir ve bylece ortaya rasgele renkli noktalar kar.

Bir boyama program


Olaylarla ve altyordamlarla kuatldktan sonra, artk kullanclarn pencerede izim yapmasna izin veren bir program yazabiliriz. Bu tip bir program yazmak, program daha kk paralara ayrmamz kouluyla, artc derecede kolaydr. lk adm olarak, kullanclarn fareyi grafik penceresinde herhangi bir yere hareket ettirmesine izin verecek ve fare hareket ettirildiinde bir iz brakacak bir program yazalm. GraphicsWindow.MouseMove = OnMouseMove Sub OnMouseMove x = GraphicsWindow.MouseX y = GraphicsWindow.MouseY

GraphicsWindow.DrawLine(prevX, prevY, x, y) prevX = x prevY = y EndSub Ancak, bu program altrdnzda, ilk satr daima pencerenin sol st kenarndan (0, 0) balar. MouseDown olayn kullanarak ve o olay geldiinde prevX ve prevY deerlerini alarak bu sorunu giderebiliriz. Ayrca, ize yalnzca kullanc fare dmesini basl tuttuunda ihtiyacmz vardr. Dier zamanlarda, izgiyi izmememiz gerekir. Bu davran elde etmek iin, Mouse nesnesinde IsLeftButtonDown zelliini kullanacaz. Bu zellik, Sol dmesine basl tutulup tutulmadn syler. Bu deer doruysa, izgiyi izeriz, deilse izmeyiz. GraphicsWindow.MouseMove = OnMouseMove GraphicsWindow.MouseDown = OnMouseDown Sub OnMouseDown prevX = GraphicsWindow.MouseX prevY = GraphicsWindow.MouseY EndSub Sub OnMouseMove x = GraphicsWindow.MouseX y = GraphicsWindow.MouseY If (Mouse.IsLeftButtonDown) Then GraphicsWindow.DrawLine(prevX, prevY, x, y) EndIf prevX = x prevY = y EndSub

Ek A

Elenceli rnekler
Benzer ekilleri Kullanan Kurbaa

ekil 58 Benzer ekilleri kullanarak bir aa izen kurbaa

angle = 30 delta = 10 distance = 60 Turtle.Speed = 9

GraphicsWindow.BackgroundColor = "Black" GraphicsWindow.PenColor = "LightGreen" DrawTree() Sub DrawTree If (distance > 0) Then Turtle.Move(distance) Turtle.Turn(angle) Stack.PushValue("mesafe", distance) distance = distance - delta DrawTree() Turtle.Turn(-angle * 2) DrawTree() Turtle.Turn(angle) distance = Stack.PopValue("mesafe") Turtle.Move(-distance) EndIf EndSub

Flickrdan Fotoraflar

ekil 59 Flickrdan fotoraflar almak

GraphicsWindow.BackgroundColor = "Black" GraphicsWindow.MouseDown = OnMouseDown Sub OnMouseDown pic = Flickr.GetRandomPicture("mountains, river") GraphicsWindow.DrawResizedImage(pic, 0, 0, 640, 480) EndSub

Dinamik Masast Duvar Kad


For i = 1 To 10 pic = Flickr.GetRandomPicture("mountains") Desktop.SetWallPaper(pic) Program.Delay(10000) EndFor

Raket Oyunu

ekil 60 Raket Oyunu

GraphicsWindow.BackgroundColor = "DarkBlue" paddle = Shapes.AddRectangle(120, 12) ball = Shapes.AddEllipse(16, 16)

GraphicsWindow.MouseMove = OnMouseMove x = 0 y = 0 deltaX = 1 deltaY = 1 RunLoop: x = x + deltaX y = y + deltaY gw = GraphicsWindow.Width gh = GraphicsWindow.Height If (x >= gw - 16 or x <= 0) Then deltaX = -deltaX EndIf If (y <= 0) Then deltaY = -deltaY EndIf padX = Shapes.GetLeft (paddle) If (y = gh - 28 and x >= padX and x <= padX + 120) Then deltaY = -deltaY EndIf Shapes.Move(ball, x, y) Program.Delay(5) If (y < gh) Then Goto RunLoop EndIf GraphicsWindow.ShowMessage("Kaybettiniz", "Raket") Sub OnMouseMove paddleX = GraphicsWindow.MouseX Shapes.Move(paddle, paddleX - 60, GraphicsWindow.Height - 12) EndSub

Ek B

Renkler
Aada Small Basic tarafndan desteklenen isimlendirilmi ve zemin rengine gre gruplandrlm renklerin bir listesini bulacaksnz.

Krmz Renkler
IndianRed LightCoral Salmon DarkSalmon LightSalmon Crimson Red FireBrick DarkRed #CD5C5C #F08080 #FA8072 #E9967A #FFA07A #DC143C #FF0000 #B22222 #8B0000

Turuncu Renkler
LightSalmon Coral Tomato OrangeRed DarkOrange Orange #FFA07A #FF7F50 #FF6347 #FF4500 #FF8C00 #FFA500

Sar Renkler
Gold Yellow #FFD700 #FFFF00 #FFFFE0 #FFFACD

Pembe Renkler
Pink LightPink HotPink DeepPink MediumVioletRed PaleVioletRed #FFC0CB #FFB6C1 #FF69B4 #FF1493 #C71585 #DB7093

LightYellow LemonChiffon

LightGoldenrodYellow #FAFAD2 PapayaWhip Moccasin PeachPuff #FFEFD5 #FFE4B5 #FFDAB9

PaleGoldenrod Khaki DarkKhaki

#EEE8AA #F0E68C #BDB76B

MediumSpringGreen SpringGreen MediumSeaGreen SeaGreen

#00FA9A #00FF7F #3CB371 #2E8B57 #228B22 #008000 #006400 #9ACD32 #6B8E23 #808000 #556B2F #66CDAA #8FBC8F #20B2AA #008B8B #008080

Mor Renkler
Lavender Thistle Plum Violet Orchid Fuchsia Magenta MediumOrchid MediumPurple BlueViolet DarkViolet DarkOrchid DarkMagenta Purple Indigo SlateBlue DarkSlateBlue MediumSlateBlue #E6E6FA #D8BFD8 #DDA0DD #EE82EE #DA70D6 #FF00FF #FF00FF #BA55D3 #9370DB #8A2BE2 #9400D3 #9932CC #8B008B #800080 #4B0082 #6A5ACD #483D8B #7B68EE

ForestGreen Green DarkGreen YellowGreen OliveDrab Olive DarkOliveGreen MediumAquamarine DarkSeaGreen LightSeaGreen DarkCyan Teal

Mavi Renkler
Aqua Cyan LightCyan PaleTurquoise Aquamarine Turquoise #00FFFF #00FFFF #E0FFFF #AFEEEE #7FFFD4 #40E0D0 #48D1CC #00CED1 #5F9EA0 #4682B4 #B0C4DE #B0E0E6 #ADD8E6 #87CEEB

Yeil Renkler
GreenYellow Chartreuse LawnGreen Lime LimeGreen PaleGreen LightGreen #ADFF2F #7FFF00 #7CFC00 #00FF00 #32CD32 #98FB98 #90EE90

MediumTurquoise DarkTurquoise CadetBlue SteelBlue LightSteelBlue PowderBlue LightBlue SkyBlue

LightSkyBlue DeepSkyBlue DodgerBlue CornflowerBlue MediumSlateBlue RoyalBlue Blue MediumBlue DarkBlue Navy MidnightBlue

#87CEFA #00BFFF #1E90FF #6495ED #7B68EE #4169E1 #0000FF #0000CD #00008B #000080 #191970

Beyaz Renkler
White Snow Honeydew MintCream Azure AliceBlue GhostWhite WhiteSmoke Seashell Beige OldLace FloralWhite Ivory AntiqueWhite Linen LavenderBlush MistyRose #FFFFFF #FFFAFA #F0FFF0 #F5FFFA #F0FFFF #F0F8FF #F8F8FF #F5F5F5 #FFF5EE #F5F5DC #FDF5E6 #FFFAF0 #FFFFF0 #FAEBD7 #FAF0E6 #FFF0F5 #FFE4E1

Kahverengi Renkler
Cornsilk BlanchedAlmond Bisque NavajoWhite Wheat BurlyWood Tan RosyBrown SandyBrown Goldenrod DarkGoldenrod Peru Chocolate SaddleBrown Sienna Brown Maroon #FFF8DC #FFEBCD #FFE4C4 #FFDEAD #F5DEB3 #DEB887 #D2B48C #BC8F8F #F4A460 #DAA520 #B8860B #CD853F #D2691E #8B4513 #A0522D #A52A2A #800000

Gri Renkler
Gainsboro LightGray Silver DarkGray Gray DimGray LightSlateGray SlateGray DarkSlateGray Black #DCDCDC #D3D3D3 #C0C0C0 #A9A9A9 #808080 #696969 #778899 #708090 #2F4F4F #000000

You might also like