Professional Documents
Culture Documents
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.
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.
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.
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.
kinci Programmz
Artk ilk programmz anladnza gre, buna baz renkler ekleyerek daha ssl hale getirelim. TextWindow.ForegroundColor = "Yellow" TextWindow.WriteLine("Merhaba Dnya")
Yukardaki program altrdnzda, TextWindow ayn Merhaba Dnya szck grubunu yazdn greceksiniz, ancak bu kez daha nceki gibi gri yazmak yerine, sar renkte yazar.
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:
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:
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)
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:
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:
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:
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:
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
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
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:
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
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
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
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.
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.
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)
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
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)
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)
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
Bu programn ilgin blm; dng her altnda PenWidthin artmas ve sonra eskisinin altna yeni bir izgi izmesidir.
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)
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
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.
Kurbaa zerinde ilemler kullanrken, Show() komutunu kullanmaya gerek yoktur. Ne zaman bir Kurbaa ilemi gerekletirilirse, Kurbaa otomatik olarak grnr hale gelecektir.
Bu program altrdnzda, Kurbaann her defada bir izgi olmak zere bir kare izdiini ve sonucun aadaki ekildeki gibi olacan grebilirsiniz.
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
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.
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.
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.
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()
SubroutineName() ararak, bir altyordam uygularsnz. Her zaman olduu gibi, bilgisayara bir altyordam uygulamak istediinizi sylemek iin, () noktalama iaretleri gereklidir.
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.
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
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.
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:
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.
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.
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("")
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"])
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
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.
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.
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
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.
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.
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
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
GraphicsWindow.BackgroundColor = "Black" GraphicsWindow.MouseDown = OnMouseDown Sub OnMouseDown pic = Flickr.GetRandomPicture("mountains, river") GraphicsWindow.DrawResizedImage(pic, 0, 0, 640, 480) EndSub
Raket Oyunu
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
#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
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