MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

100
T.C. SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE PROGRAMLAMA DİLİ GELİŞTİRMESİ İbrahim KURU Danışman Doç. Dr. Okan BİNGÖL YÜKSEK LİSANS TEZİ ELEKTRONİK - BİLGİSAYAR EĞİTİMİ ANABİLİM DALI ISPARTA - 2016

Transcript of MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Page 1: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

T.C.

SÜLEYMAN DEMİREL ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ

MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE PROGRAMLAMA DİLİ GELİŞTİRMESİ

İbrahim KURU

Danışman Doç. Dr. Okan BİNGÖL

YÜKSEK LİSANS TEZİ ELEKTRONİK - BİLGİSAYAR EĞİTİMİ ANABİLİM DALI

ISPARTA - 2016

Page 2: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

©2016 [İbrahim KURU]

Page 3: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …
Page 4: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …
Page 5: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

i

İÇİNDEKİLER

Sayfa

İÇİNDEKİLER ..................................................................................................................................... i

ÖZET ................................................................................................................................................... iv

ABSTRACT ......................................................................................................................................... v

TEŞEKKÜR ........................................................................................................................................ vi

ŞEKİLLER DİZİNİ .......................................................................................................................... vii

ÇİZELGELER DİZİNİ ...................................................................................................................... ix

SİMGELER VE KISALTMALAR DİZİNİ ..................................................................................... x

1. GİRİŞ .............................................................................................................................................. 1

2. KAYNAK ÖZETLERİ .................................................................................................................. 4

3. MATERYAL VE YÖNTEM ......................................................................................................... 8

3.1. Programlama Dilleri ......................................................................................................... 8

3.2. Platform ................................................................................................................................. 8

3.2.1. PhoneGap ...................................................................................................................... 9

3.2.2. Rhodes ............................................................................................................................ 9

3.2.3. MoSync ........................................................................................................................ 10

3.2.4. Marmalade ................................................................................................................. 10

3.2.5. JQuery Mobile ........................................................................................................... 10

3.2.6. XMLVM ........................................................................................................................ 10

3.2.7. Xamarin ....................................................................................................................... 11

3.2.8. Sencha Touch ............................................................................................................ 11

4. UYGULAMA VE ARAŞTIRMA BULGULARI................................................................. 12

4.1. Bukalemun Programlama Dili ............................................................................... 12

4.1.1. Bukalemun dili dosya uzantıları ....................................................................... 12

4.2. Bukalemun Kodlarının Derlenmesi ......................................................................... 13

4.2.1. Bukalemun derleyici komut satırı parametreleri ....................................... 14

4.3. Bukalemun Kodlama Ortamı ...................................................................................... 14

4.3.1. Bukalemun framework editör ........................................................................... 14

4.3.2. BFE ile kaynak kod derleme ............................................................................... 15

4.4. Bukalemun Kodlarının Hayat Döngüsü .................................................................. 17

4.5. Bukalemun Dili Anahtar Kelimeleri ......................................................................... 19

Page 6: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

ii

4.6. Derleyici .............................................................................................................................. 19

4.7. Kelime Analizi .............................................................................................................. 20

4.8. Söz Dizimsel Analiz .................................................................................................... 22

4.8.1. Değişken tanımlamanın söz dizimsel analizi ............................................... 22

4.9. Shunting Yard Algoritması Analizi ....................................................................... 24

4.10. Yorumlayıcı ..................................................................................................................... 26

4.10.1. Yorumlanan dillerin özellikleri ....................................................................... 27

4.10.2. Bukalemun dili yorumlayıcıları ...................................................................... 27

4.11. Bukalemun Dili Kodlaması ....................................................................................... 27

4.12. Değişkenler ................................................................................................................. 27

4.12.1. Değişken türleri .................................................................................................... 28

4.12.2. Değişkenlerin Geçerlilik Alanları ................................................................... 28

4.12.3. Değişkenlere değer atama ................................................................................ 29

4.12.4. Değişkenlere klavyeden değer atama........................................................... 30

4.12.5. Değişkenlere değer atarken oluşabilecek hatalar ................................... 31

4.12.6. Değişkenlerin değerlerini ekrana yazdırma .............................................. 32

4.12.7. Önceden tanımlı değişkenler ........................................................................... 33

4.12.7.1. platform değişkeni ............................................................................................ 33

4.12.7.2. uygulamadosyası değişkeni ........................................................................... 35

4.13. Açıklama Satırları ..................................................................................................... 35

4.14. Operatörler ................................................................................................................. 36

4.15. Kontrol İfadeleri ....................................................................................................... 38

4.15.1. eğer ............................................................................................................................ 38

4.15.2. değilse ....................................................................................................................... 39

4.15.3. eğer - değilse eğer ................................................................................................ 39

4.15.4. İç içe eğer ................................................................................................................. 40

4.16. Döngü deyimleri ....................................................................................................... 41

4.16.1. say döngüsü ............................................................................................................ 41

4.16.2. İç içe say döngüsü................................................................................................. 42

4.16.3. tekrarla Döngüsü .................................................................................................. 42

4.16.4. bitir, devam anahtar kelimeleri ...................................................................... 43

4.17. Fonksiyonlar .............................................................................................................. 43

4.17.1. Geriye değer döndüren fonksiyonlar............................................................ 44

Page 7: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

iii

4.17.2. Dahili fonksiyonlar............................................................................................... 44

4.17.3. Tür dönüştürme fonksiyonları ........................................................................ 45

4.17.4. Form uygulamalarına özel fonksiyonlar ..................................................... 46

4.18. Form Uygulamaları .................................................................................................. 46

4.18.1. oluştur Fonksiyonu .............................................................................................. 46

4.18.2. değiştir Fonksiyonu ............................................................................................. 47

4.18.3. özellik Fonksiyonu ............................................................................................... 48

5. ARAŞTIRMA BULGULARI ..................................................................................................... 49

5.1. Cümle Analizi .................................................................................................................... 49

5.2. İstenilen Aralıkta Rastgele Sayı Üreten Program ............................................... 51

5.3. Girilen Sayıyı Üçerli Ayırarak Yazan Program ..................................................... 53

5.4. Sayı Tahmin Oyunu ........................................................................................................ 55

5.5. Sayısal Loto Programı ................................................................................................... 57

5.6. XOX Oyunu ......................................................................................................................... 59

5.7. Hesap Makinesi ................................................................................................................ 61

6. SONUÇ VE ÖNERİLER ............................................................................................................ 63

KAYNAKLAR .................................................................................................................................. 64

ÖZGEÇMİŞ ....................................................................................................................................... 67

EK 1 - Cümle Analizi Programı Kodları ............................................................................... 68

EK 2 - Rastgele Sayı Üreten Program Kodları ................................................................... 70

EK 3 - Girilen Parayı 3'er Ayırarak Yazan Program Kodları ....................................... 72

EK 4 - Sayı Tahmin Oyunu Kodları ........................................................................................ 74

EK 5 - Sayısal Loto Kodları ....................................................................................................... 76

EK 6 - XOX Oyunu Kodları ........................................................................................................ 78

EK 7 - Bukalemun Hesap Makinesi Programı Kodları ................................................... 83

Page 8: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

iv

ÖZET

Yüksek Lisans Tezi

MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE PROGRAMLAMA

DİLİ GELİŞTİRMESİ

İbrahim KURU

Süleyman Demirel Üniversitesi Fen Bilimleri Enstitüsü

Elektronik - Bilgisayar Eğitimi Anabilim Dalı

Danışman: Doç. Dr. Okan BİNGÖL

Teknolojinin hızlı gelişimine paralel olarak, bilgisayarlar ve bilgisayar üzerinde çalışan uygulamalar hayatımızın her alanına girmiş durumdadır. Bu durum, yazılım eğitiminin önemini de artırmıştır. Gençlere erken yaşlarda verilecek yazılım eğitimi ile, hem yazılıma olan ilgi artırılmış olacak hem de ileride bu alanda yetişmiş insan gücünün oluşmasına katkı sağlanacaktır. Günümüzde uygulama geliştirmek amacı ile birçok programlama dili mevcuttur. Bu kadar çok programlama dili olmasına rağmen, yazılım eğitiminin ilk aşamalarında türkçe kodlanabilen bir programlama dilinin kullanılması öğrencilerin öğrenmesine büyük katkı sağlayacaktır. Kullanılacak programlama dilinin seçiminde, geliştirilen uygulamanın her platformda herhangi bir değişikliğe gerek kalmadan çalıştırılabilecek olması da önemli bir etkendir. Bu tez çalışmasında, platformdan bağımsız olarak çalışan uygulama geliştirebilmek için; yüksek seviyeli, Türkçe kodlanabilen Bukalemun adında yeni bir programlama dili geliştirilmiştir. Yazılan kodların ortak bir dile çevrilmesi için kodlaması Delphi ile yapılan bir derleyici yazılmıştır. Kodların yorumlanması için ise, Windowsta konsol ve form uygulamaları için Delphi dili ile 2 farklı yorumlayıcı, Android uygulamaları için JAVA ile android yorumlayıcı, IOS uygulamaları için Objective – C ile IOS yorumlayıcı yazılmıştır. Anahtar Kelimeler:Platform Bağımsız Uygulama, Mobil Cihaz Uygulamaları, Windows Uygulamaları, Türkçe Programlama Dili. 2016, 86 sayfa

Page 9: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

v

ABSTRACT

M. Sc. Thesis

TURKISH PROGRAMMING LANGUAGE DEVELOPMENT FOR MOBILE

DEVICES THAT COMPATIBLE FOR ALL PLATFORMS

İbrahim KURU

Süleyman Demirel University Graduate School of Applied and Natural Sciences

Department of Electronic Computer Education

Supervisor: Assoc. Prof. Dr. Okan BİNGÖL Parallel to rapid development of technology, computers and applications running on the computer has already entered into every area of our lives. In this case, what has increased the importance of software training. Young people will be given at an early age with software training, both will be increased interest in both software in the future will contribute to the formation of trained manpower in this field. Today, with the aim of developing the application it is available in several programming languages. Although there are so many programming languages, in the initial stages of software training to use a programming language that can be encoded Turkish will contribute greatly to the students' learning. The selection of the programming language to be used, have developed applications that can run on any platform without any modification is also an important factor. In this thesis, to develop a cross platform application, a new high level programming language coded Turkish keywords and named Bukalemun is developed. To compile the written codes into a common language, a new compiler was written in Delphi. To interpret the codes, for console and form applications of windows, two interpreters were written in Delphi and for Android applications Android Interpreter was written in Java, for IOS applications an IOS Interpreter was written in Objective-C. Keywords: Cross Platform Application, Mobile Application, Windows Application, Turkish Programming Language. 2016, 86 pages

Page 10: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

vi

TEŞEKKÜR

Bu araştırma için beni yönlendiren, karşılaştığım zorlukları bilgi ve tecrübesi ile aşmamda yardımcı olan değerli Danışman Hocam Doç. Dr. Okan BİNGÖL’e teşekkürlerimi sunarım. Çalışmam süresince bilgi ve tecrübesiyle yardımlarını esirgemeyen değerli hocam Doç. Dr. Ecir Uğur KÜÇÜKSİLLE'ye teşekkür ederim. Tezimin araştırma aşamasında yazdığı uygulama ve notlar ile beni yönlendiren Talha Zekeriya DURMUŞ'a teşekkür ederim. Tezimin her aşamasında beni yalnız bırakmayan aileme, eşime sonsuz sevgi ve saygılarımı sunarım.

İbrahim KURU

ISPARTA, 2016

Page 11: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

vii

ŞEKİLLER DİZİNİ

Sayfa

Şekil 3.1. Uygulama - Platform arası ilişki ............................................................................. 9

Şekil 3.2. XMLVM Mimarisi ...................................................................................................... 11

Şekil 4.1. Bukalemun ile ilk örnek ......................................................................................... 12

Şekil 4.2. Bukalemun ile ilk örneğin ekran görüntüsü .................................................. 12

Şekil 4.3. Bukalemun Framework Editör ........................................................................... 15

Şekil 4.4. BFE ile kod derleme ................................................................................................. 16

Şekil 4.5. Derlenen kodların ortak dil karşılığı (Okunabilir) ...................................... 16

Şekil 4.6. Derlenen kodların hex karşılığı ........................................................................... 17

Şekil 4.7. Bukalemun kodlarının derlenme - yorumlanma adımları ....................... 18

Şekil 4.8. Örnek bir program satırı ....................................................................................... 20

Şekil 4.9. Assembly dili kod karşılığı .................................................................................... 20

Şekil 4.10. Toplama işlemi örnek kod satırı ...................................................................... 21

Şekil 4.11. Hatalı değişken tanımlaması yapılan örnek ................................................ 23

Şekil 4.12. Hatalı değişken tanımlaması örneği için derleyici ekran görüntüsü . 24

Şekil 4.13. Infix ifadesi ............................................................................................................... 25

Şekil 4.14. Postfix ifadesi .......................................................................................................... 25

Şekil 4.15. Söz dizimsel analiz sonucu oluşan postfix ifadesi ..................................... 26

Şekil 4.16. Değişken tanımlama ............................................................................................. 28

Şekil 4.17. Değişkenlerin geçerlilik alanlarını gösteren örnek .................................. 29

Şekil 4.18. Değişkenlere değer atama .................................................................................. 30

Şekil 4.19. Metin türündeki değişkene klavyeden değer atama ................................ 30

Şekil 4.20. Metin türünden sayı türüne dönüşüm yaparak atama............................ 31

Şekil 4.21. Hatalı tür dönüşüm örneği ................................................................................. 31

Şekil 4.22. Hatalı tür dönüşümde karşılaşılan hata mesajı.......................................... 32

Şekil 4.23. Değişken değerini konsol ekranına yazdırma ............................................ 32

Şekil 4.24. Değişken değerini ekrana yazdırma örneği ekran görüntüsü .............. 33

Şekil 4.25. Uygulamanın çalıştığı platform bilgisini gösteren program ................. 34

Şekil 4.26. Konsol uygulamalarında platform değişkeni .............................................. 34

Şekil 4.27. Windows Form uygulamalarında platform değişkeni ............................. 34

Şekil 4.28. Android ve IOS platformları için platform değişkeni ............................... 35

Şekil 4.29. Aritmetiksel operatörlerin tamamının kullanıldığı bir uygulama ...... 37

Şekil 4.30. Aritmetik operatörler örneği ekran görüntüsü.......................................... 38

Şekil 4.31. Eğer ifadesi kullanımı ........................................................................................... 38

Şekil 4.32. eğer - değilse ifadesi kullanımı ......................................................................... 39

Şekil 4.33. eğer - değilse - eğer ifadesi kullanımı ............................................................ 40

Şekil 4.34. İç içe eğer ifadesi kullanımı................................................................................ 40

Şekil 4.35. say döngüsü kullanımı ......................................................................................... 41

Şekil 4.36. İç içe say döngüsü kullanımı .............................................................................. 42

Şekil 4.37. Tekrarla döngüsü kullanımı - 1 ........................................................................ 42

Şekil 4.38. Tekrarla döngüsü kullanımı - 2 ........................................................................ 43

Page 12: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

viii

Şekil 4.39. Fonksiyon tanımlama ........................................................................................... 43

Şekil 4.40. Geriye değer döndüren fonksiyon örneği .................................................... 44

Şekil 4.41. Otomatik olarak yapılan tür dönüşüm işlemi ............................................. 45

Şekil 4.42. Tür dönüşümü ......................................................................................................... 45

Şekil 4.43. Değiştir fonksiyonu kullanımı........................................................................... 47

Şekil 4.44. Özellik fonksiyonu kullanımı ............................................................................. 48

Şekil 5.1. Cümle analizi örneği için windows form ekran görüntüsü ...................... 49

Şekil 5.2. Cümle analizi örneğinin Android ve IOS için ekran görüntüsü .............. 50

Şekil 5.3. Rastgele sayı üreten programın windows ekran görüntüsü ................... 51

Şekil 5.4. Rastgele sayı üreten programın Android ve IOS ortamlarındaki ekran

görüntüleri.................................................................................................................. 52

Şekil 5.5. Sayıyı üçerli ayırarak yazan program windows ekran görüntüsü ........ 53

Şekil 5.6. Girilen sayıyı para birimine çevirerek 3'erli ayıran program için

Android ve IOS ekran görüntüleri ..................................................................... 54

Şekil 5.7. Sayı tahmin oyunu windows ekran görüntüsü ............................................. 55

Şekil 5.8. Sayı tahmin oyunu Android ve IOS ekran görüntüsü ................................. 56

Şekil 5.9. Sayısal loto programı windows ekran görüntüsü ........................................ 57

Şekil 5.10. Sayısal loto programı Android ve IOS ekran görüntüleri ....................... 58

Şekil 5.11. XOX oyunu windows ekran görüntüsü .......................................................... 59

Şekil 5.12. XOX oyunu Android ve IOS ekran görüntüleri............................................ 60

Şekil 5.13. Hesap makinesi programı için windows ekran görüntüsü.................... 61

Şekil 5.14. Hesap makinesi programı için Android ve IOS ekran görüntüsü........ 62

Page 13: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

ix

ÇİZELGELER DİZİNİ

Sayfa

Çizelge 1.1. Native, Hibrid ve Web uygulamalarının özellikleri .................................. 2

Çizelge 1.2. Geliştirme tiplerinin karşılaştırılması ........................................................... 2

Çizelge 4.1. Bukalemun dili dosya uzantıları .................................................................... 13

Çizelge 4.2. Derleyici parametreleri ..................................................................................... 14

Çizelge 4.3. Bukalemun dili anahtar kelimeleri ............................................................... 19

Çizelge 4.4. Toplama işlemi örnek kod satırına göre oluşturulan belirtkeler ...... 22

Çizelge 4.5. Kod satırına karşılık beklenen belirtkeler ................................................. 23

Çizelge 4.6. Değişken tanımlama örnekleri ....................................................................... 28

Çizelge 4.7. Değişkenlerin bellekte kapladığı alan .......................................................... 28

Çizelge 4.8. Platform değişkeninin alabileceği değerler ............................................... 33

Çizelge 4.9. Açıklama satırları ................................................................................................. 36

Çizelge 4.10. Bukalemun dili operatörleri ......................................................................... 36

Çizelge 4.11 Say döngüsü parametreleri ............................................................................ 41

Çizelge 4.12. Bukalemun dahili fonksiyonları .................................................................. 44

Çizelge 4.13. Form uygulamalarına özgü fonksiyonlar ................................................. 46

Çizelge 4.14. Form elemanı oluşturma ................................................................................ 46

Çizelge 4.15. Oluştur fonksiyonu parametreleri .............................................................. 47

Çizelge 4.16. Değiştir fonksiyonu parametreleri ............................................................. 47

Çizelge 4.17. Form kontrollerinde kullanılabilen özellikler ....................................... 47

Page 14: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

x

SİMGELER VE KISALTMALAR DİZİNİ

Kısaltma Açıklaması

BFD Bukalemun Framework Derleyici BFE Bukalemun Framework Editör buk Bukalemun kaynak kod dosyası ale Bukalemun proje dosyası mun Bukalemun konsol uygulaması munf Bukalemun form uygulaması JVM Java Sanal Makinesi (Java Virtual Machine) SDK Yazılım geliştirme kiti (Software Development Kit) HTML Hiper Metin İşaretleme Dili (Hyper Text Markup Language)

Page 15: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

1

1. GİRİŞ

Teknoloji sözcüğünün kökeni eski Yunanca’daki “tekhne” (sanat, zenaat) ve

“logos” (söz, sözcük) terimlerinin bileşiminden oluşmuştur. Bilimin insanın

pratik yaşam gereksinimlerinin karşılanmasına veya çevresini denetleme,

biçimlendirme ve değiştirme çabalarına yönelik uygulamaları anlamına

gelmektedir (Özözer vd., 2010).

Teknoloji, hayatımızın her alanını kapsama alanı içine almıştır. Akıllı

telefonların yaygınlaşmasıyla birlikte sabit telefonların kullanımının azalması,

gezdiğimiz gördüğümüz ortamları fotoğraf karesine almamızla fotoğraf

makinelerinin fazla kullanılmaması, kameranın yalnız işi olanlar tarafından ele

alınması, radyo, tv, internet için dahi akıllı telefonların kullanılması bu

telefonların hayatımızın büyük bir bölümünde yeri olduğunu gösterir (Bilgiler

Sitesi, 2012).

Akıllı telefonlar günlük yaşamın ayrılmaz bir parçasıdır. Zamanla kullanıcılar

daha kısa sürede farklı platformlarda çalışabilen uygulamalar beklemektedirler.

Bu, müşterilerin beklentilerini karşılayacak rekabetçi pazarda yüksek

performanslı mobil uygulamalar geliştirmek için büyük bir sorundur. Kısa

sürede platformdan bağımsız bir şekilde çalışabilen yeni uygulamaların

geliştirilmesi oldukça büyük bir sorun olmasına rağmen, çapraz platform

uygulama geliştirme araçları büyük ölçüde bu sorunu çözmektedir (Palmieri,

2012).

Platform, uygulamaların çalıştırıldığı ortam olarak tanımlanabilir. Bu ortam her

cihaza özgü olduğu için, hazırlanan uygulamaların farklı platformlarda

çalıştırılması normal şartlarda mümkün değildir. Bir uygulamanın her

platformda çalışabilmesi için, uygulamanın yazıldığı dili her platformun bilmesi

gerekir. Her platformun kendi diliyle yazılmış uygulamalarına doğal (native

apps) uygulamalar denir.

Page 16: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

2

Platform bağımlılığı sorununu çözmek için, farklı yöntemlerle geliştirilmiş

araçlar vardır. Bunlardan bazıları web teknolojilerini (html5, javascript…)

kullanarak, bazıları ise C++ gibi bir dil ile geliştirilerek hedef platforma uyumlu

hale getirilmektedir.

Mobil uygulama geliştirmek için üç yol vardır. Bunlar Native Apps, Web Apps ve

Hybrid Apps'tır. Native Apps, platformun doğal dili ile hazırlanan

uygulamalardır. Donanıma ve sistem API'lerine erişim sağlayabilir. Performansı

yüksektir. Ancak, platforma özgü olduğu için farklı platformlarda

çalıştırılamazlar. Web Apps, web teknolojileri kullanılarak oluşturulan

uygulamalardır. Donanımı tamamen kontrol edemez. Hybrid Apps ise, native

uygulamalara web teknolojilerinin gömülmesiyle oluşturulan uygulamalardır.

Bu üç yöntemden hangisinin tercih edilebileceği, hazırlanacak olan uygulamanın

ihtiyaçlarına göre belirlenmelidir (Eğitim Takvimi, 2016).

Native, Web, Hibrid tercihinde Çizelge1.1'deki özellikler ve Çizelge 1.2'deki

karşılaştırmalar göz önüne alınmalıdır.

Çizelge 1.1. Native, Hibrid ve Web uygulamalarının özellikleri (Eğitim Takvimi, 2016)

Özellik Native Hibrid Web

Cihaz Özelliklerine Erişim Tam Kısmi Kısmi Çevrimdışı (offline) Çalışma Var Yok Yok Hız Yüksek Düşük Düşük Güncelleme Zor Kolay Kolay Platformdan Bağımsızlık Yok Var Var Geliştirme Maliyeti Yüksek Düşük Düşük Güçlü Grafiksel İhtiyaçlar Yüksek Düşük Düşük

Çizelge 1.2. Geliştirme tiplerinin karşılaştırılması (Karlı, 2014)

Özellik Native Uygulamalar

Hybrid Uygulamalar

Web Uygulamaları

Geliştirme Dilleri Sadece Native

Native ve web ya da sadece web

Sadece web

Kod taşınabilirliği Yok Yüksek Yüksek Cihaz özelliklerine erişim Yüksek Orta Düşük

Gelişmiş grafikler Yüksek Orta Orta Güncelleştirme esnekliği Düşük Orta Yüksek

Kurulum deneyimi Yüksek Yüksek Orta

Page 17: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

3

Bu çalışmada, Türkçe kodlama yapısı ile platformdan bağımsız olarak

çalışabilen "Bukalemun" adında yeni bir programlama dili oluşturulmuştur.

Oluşturulan dilin derleyicisi Delphi, yorumlayıcılar ise Android için Java, IOS için

Objective-C, Windows için Delphi programlama dilleri ile yazılmıştır. Böylece

derlendikten sonra Windows, IOS ve Android ortamlarında çalışabilen bir

programlama dili geliştirilmiştir.

Page 18: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

4

2. KAYNAK ÖZETLERİ

Küçük (2008) tarafından yapılan çalışmanın temel amacı, farklı programlama

dili geçmişi olan programcıların programlama alışkanlıklarını değiştirmeden

kod üretmeleridir. Bu maksatla yeni bir programlama dili altyapısı olan Cezve

tasarlanmış ve oluşturulmuştur. Cezve, özelleştirilebilir programlama dillerine

ev sahipliği yapmak için tasarlanmıştır. Java Sanal Makinesi (JVM) üzerinde

koşan dil alt yapısı, programcıların istekleri doğrultusunda

özelleştirilebilmektedir. Cezve kullanıcıları, kendi dillerini tasarlayabilir ve

programlama alışkanlıklarını değiştirmeden tasarladıkları dili kullanabilirler.

Cezve, bütünleşik bir ağaç ayrıştırıcı ve birçok yönetici sınıfı içermektedir. Dil

altyapısının desteklediği ağaç yapısı gözetilerek, var olan Programlama Dilleri

özelleştirilebilir veya baştan yeni bir Programlama Dili oluşturulabilir. Çalışma

süresince dil özelleştirme mekanizmasını göstermek için, Javy adında örnek bir

programlama dili oluşturulmuştur. Dil altyapısının çalışma mekanizmasını

göstermek adına, örnek bir Programlama Dili oluşturulmuştur. JavaScript,

Python, Ruby, Perl gibi dillerin bazı güzel özellikleri Javy'ye eklenmiştir.

Ribeiro ve Silva (2012), platform bağımsız uygulama dilleri ile ilgili bir inceleme

yapmışlardır. Günümüzde mobil uygulamalar, insanların akıllı telefonlar, tablet

ya da eşdeğer cihazların kullanımı ile çeşitli görevleri gerçekleştirmek için

hazırlanan uygulamalar, günlük hayatımızda giderek ayrılmaz bir parçası haline

gelmektedir. Farklı mobil işletim sistemlerinin farklı programlama dilleri ve

geliştirme araçlarıyla var olması, birinin bir uygulamayı tüm platformlarda

çalışacak şekilde yayınlamayı istediğinde problem olacaktır. Bu tipik yaklaşımda

her platform için uygulamanın yeniden yazılması büyük bir çaba, bütçe ve

zaman gerektirir. Bu nedenle, uygulamanın genel kalitesinden ödün vermeden

çeşitli platformlarda çalışabilecek bir çözüm uygulaması pazarlama süresini

azaltacak ve muazzam potansiyel kullanıcı sayısını artıracaktır. Son zamanlarda

platform bağımsız uygulama geliştirmeyi kolaylaştıracak frameworklerin ortaya

çıkması bu sorunu çözmek içindir.

Page 19: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

5

Guangtai vd. (2014) çalışmalarında platforma özel uygulama geliştirme dilleri

(Android için Java, IOS için Objective-C) ile platform bağımsız uygulama

geliştirme araçları (JavaScript) karşılaştırmışlardır. Mobil uygulama

geliştiriciler mobil platform çeşitliliğinden dolayı birçok zorluk çekerler (Yeni

platform için kodların yeniden yazılması gerektiği gibi). Platform bağımsız

uygulama geliştirme araçları bir kere yaz farklı platformlarda çalıştır

prensibiyle mobil uygulama geliştirme maliyetini düşürmektedir. Bu platform

bağımsız uygulama geliştirme araçları aygıtın doğal bileşenlerini kullanmak için

genellikle programcıya bir takım API'ler ve çeşitli kütüphaneler sunarlar.

Geliştirici bu API'leri kullanırken bazı zamansal kısıtlamaları takip etmesi

gerekir. Bu tür kısıtlamalar ihlal edilmelimidir (istenmeyen enerji israf

problemleri gibi).

Hermansson vd. (2014) çalışmalarında platform bağımsız uygulamaları

incelemişlerdir. Uygulama pazarı genişledikçe geliştiriciler için yeni zorluklar

ortaya çıkmaktadır. Kullanışlı uygulamalar oluşturmak kapsamlı ve tutarlı

kullanımını sağlamak önemlidir. Çalışmalarında çevre hakkında konum bilgisi

veren "Time Machine" adlı bir mobil uygulama sunmaktadırlar. Uygulama

uzman değerlendirme ekibi ve 15 katılımcılı kullanıcılarla bir alan gözlemi

yapılarak değerlendirilmiştir. Sonuçlar yararlı mobil uygulamalar geliştirmek

için gerekli ilkeleri içermektedir. Geliştiricilerin kullanıcı davranışı, net bir

uygulama amacı, anlaşılabilir bir arayüz ve platform bağımsız özelliği konularını

dikkate almaları gerekmektedir.

Bouras vd. (2014) çalışmalarında web teknolojileri ile mobil uygulama

geliştirme potansiyellerini araştırmışlardır. Son yıllarda akıllı mobil cihazların

kullanımı çeşitli mobil platformlar için uygulama geliştirme genişlemesine yol

açan günlük yaşamın ayrılmaz bir parçası haline gelmiştir. Bu platformların her

biri ayrı yazılım geliştirme süreci gerektirir. Uygulama geliştirme HTML5'in

çıkmasıyla birlikte platform bağımsız uygulama tarzını ortaya çıkardı. Ek bir

önemli faydası, kullanıcıların kurulum için herhangi bir ihtiyaç olmadan hemen

uygulamaya erişebilir olmasıdır.

Page 20: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

6

Nivedha vd. (2014) çalışmalarında Graduate Record Exam (GRE) için platform

bağımsız bir mobil uygulama geliştirmişlerdir. Graduate Record Exam (GRE)

çeşitli enstitüler ve kolejler tarafından kabul edilmiş düzenli bir testtir. GRE

hazırlığı için bazı mobil uygulamalar vardır. Bu uygulama Rho Mobile Suite

kullanılarak oluşturulmuştur ve IOS, Android ve Windows mobil sistemlerinde

çalıştırılabilir. Bu mobil uygulama ile ingilizce bilgi elde etmenin yanı sıra GRE

hazırlanması için öğrencilere yardımcı olur. Aynı zamanda farklı yaş kategorileri

altında çeşitli beyin uyarıcı faaliyetleri ile insan beyninin fonksiyonlarını

tetiklenmesi için yararlıdır. Geliştirilen mobil uygulama farklı kullanıcılar ile test

edilmiştir. G3 (GRE için Kazanç Kavrama) çapraz platformda geliştirilen bir

mobil uygulamadır.

Wahyu ve Suhardi (2014), mobil platformları analiz ederek tartışmışlardır.

Mobil platformda uygulama geliştirme, mobil işletim sisteminin hızla büyümesi

ve mobil bilişim performansının yeteneği bu yöne olan ilgiyi önemli ölçüde

artırmaktadır. Birçok mobil uygulama geliştiricileri günümüzde farklı bir mobil

işletim sistemi ortamında uygulanacak bir proje üzerinde çalışmaktadır.

Platform bağımsız uygulamalar şimdilerde geliştiricilerin mobil platform

kullanıcılarına ürünlerini satmada avantaj sağlamaktadır.

Karlı (2014) çalışmasında Hiper Metim İşretleme Dili (Hyper Text Markup

Language - HTML) ve Javascript kullanarak platform bağımsız mobil framework

geliştirmiştir. Bir uygulama geliştirildiğinde bir kaynak kod ve 2 platforma sahip

olunmaktadır. Kaynak kodda herhangi bir değişiklik yapıldığında, değişiklik

bütün platformlar için geçerli olmaktadır. Bu da geliştirme, test ve maliyeti

azaltmaktadır. HTML sayfaları performans açısından doğal SDK’dan daha iyi

değildir. Platform bağımsız mobil uygulamaların dezavantajlarından biri

performans gecikmeleridir.

Wafaa vd. (2015) çalışmalarında platform bağımsız uygulama yaklaşımlarının

sınıflandırılmasını incelemişlerdir. Geliştiriciler, platform bağımsız mobil

uygulama geliştirme çözümlerini bir defa yazıp her yerde çalıştırmak için

kullanırlar. Bu çapraz platform çözümleri hala araştırılmakta ve

Page 21: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

7

geliştirilmektedir. Ayrıca, bu çözümler farklı yaklaşımlara dayanmaktadır.

Bunlar çapraz derleme yaklaşımı, sanal makine yaklaşımı, web tabanlı

yaklaşımlardır.

Andrade ve Albuquerque (2015) çalışmalarında platform bağımsız

uygulamaların karşılaştırmasını yapmışlardır. Bir platformun yerli dili ile

yazılan uygulamalar iyi bir kullanıcı deneyimi sağlayabilir. Ancak, şirketlerin

yeterli parası veya doğal dil ile uygulama geliştirecek uzmanı olmayabilir.

Hybrid yaklaşım akıllı telefonlar ve tabletler için uygulama geliştirmede basit

bir çözüm sunuyor. Kodu bir kere yazıp farklı işletim sistemlerine dağıtmak,

şirketler için, mobil uygulamalarını hızla başlatmaya ve bakım maliyetlerini

düşürmeye yardımcı olacaktır. Hybrid yapıları iş ve eğitim uygulamalarında

kullanmak faydalı olacaktır.

Page 22: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

8

3. MATERYAL VE YÖNTEM

3.1. Programlama Dilleri

Elektronik cihazların farklı amaçlara hizmet edebilmek için programlanmaları

gerekir. Programlama dili, bu amaç için hazırlanmış özel kelime ve

sembollerden oluşan komutlar bütünüdür. Yazılan komutlar sonucunda

bilgisayarın belli bir iş yapmasını sağlayan programlar, yani yazılımlar ortaya

çıkar. Farklı bilgisayarlar ve teknolojiler için oluşturulmuş neredeyse

sayılamayacak kadar çok programlama dili mevcuttur. Her bir dilin kendine

özgü deyim, komut ve yazım kuralları vardır. Dile özgü komutların yazılması

süreci de kodlama ya da programlama, ortaya çıkan son ürün ise program ya da

uygulama olarak adlandırılır. Ortaya çıkan uygulamanın çalıştırıldığı ortama ise

platform adı verilir (Ersoy vd. 2011).

3.2. Platform

Platform, bir yazılımı çalıştırmak için gerekli olan donanım mimarisi ile bir

yazılım çerçevesi içermektedir. IOS, Android, Linux, Windows, BlackBerry,

Symbian gibi ortamlar, kendi platformlarına özgü uygulamaları

çalıştırmaktadırlar. Platform bağımsız uygulamalar ise bir kere yazıldıktan

sonra her platformda çalışabilen uygulamalardır. Şekil 3.1'de uygulama-

platform arası ilişki görülmektedir.

Page 23: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 3.

Platform bağımlılığı sorununu çözmek için çeşitli teknolojiler ve diller

geliştirilmiştir.

3.2.1. PhoneGap

PhoneGap, web tabanlı mobil uygulamalar

geliştirme çatısıdır (framework). PhoneGap ile uygulama

özgü dili (native language) kullanmadan HTML, CSS ve Javascript gibi web

teknolojileri ile her pla

2014).

3.2.2. Rhodes

Rhodes, açık kaynak çerçeveye dayalı, veri merkezli, platform bağımsız, yerli

mobil tüketici ve kurumsal uygulamaları oluşturmak için

geliştirme araçları kümesidir.

teknolojillerini kullanarak yerli

9

Şekil 3.1. Uygulama - Platform arası ilişki

bağımlılığı sorununu çözmek için çeşitli teknolojiler ve diller

web tabanlı mobil uygulamalar yazmayı sağlayan bir uygulama

geliştirme çatısıdır (framework). PhoneGap ile uygulama yazılacak

özgü dili (native language) kullanmadan HTML, CSS ve Javascript gibi web

teknolojileri ile her platformda çalışan uygulamalar yazılabil

Rhodes, açık kaynak çerçeveye dayalı, veri merkezli, platform bağımsız, yerli

mobil tüketici ve kurumsal uygulamaları oluşturmak için

geliştirme araçları kümesidir. CSS3, HTML5, Javascript ve Ruby gibi web

teknolojillerini kullanarak yerli mobil uygulamalar oluşturulmasına olanak

bağımlılığı sorununu çözmek için çeşitli teknolojiler ve diller

sağlayan bir uygulama

yazılacak platforma

özgü dili (native language) kullanmadan HTML, CSS ve Javascript gibi web

tformda çalışan uygulamalar yazılabilmektedir. (Varlık

Rhodes, açık kaynak çerçeveye dayalı, veri merkezli, platform bağımsız, yerli

mobil tüketici ve kurumsal uygulamaları oluşturmak için oluşturulmuş bir

SS3, HTML5, Javascript ve Ruby gibi web

mobil uygulamalar oluşturulmasına olanak

Page 24: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

10

verir. Geliştiriciler uygulamayı bir kez yazarak, yaygın olarak kullanılan işletim

sistemlerinde çalıştırabilirler (Rhomobile, 2015).

3.2.3. MoSync

MoSync, ücretsiz ve açık kaynak yazılım geliştirme kitidir. Bu framework ile

C/C++, HTML5 scriptleri ve bunların kombinasyonları kullanılarak çoklu

platformlar için yerel mobil uygulamalar üretilebilir. MoSync için hedef grup,

web geliştiricileri ve C/C++ bilgisi olan masaüstü yazılım geliştiricileridir (Karlı,

2014).

3.2.4. Marmalade

Marmalade, ticari bir platform bağımsız mobil uygulama geliştirme aracıdır.

Oyun programlamada çok büyük bir kullanım alanı vardır. Marmalade C++, Lua,

HTML ve Objective-C dillerini desteklemektedir. Temelde ise, C++ SDK yüksek

bir performans sunar. IOS, android, BlackBerry, Windows Phone

platformlarında çalıştırılabilir (Karlı 2014).

3.2.5. JQuery Mobile

JQuery mobile; web siteleri ve tüm akıllı telefon, tablet ve masaüstü cihazlarda

erişilebilir uygulamalar yapmak için tasarlanmış bir HTML5 tabanlı kullanıcı

arayüzü sistemidir. JQuery ve JQuery UI elementleriyle sayfa geçişleri, dokunma

olayları ve çeşitli özellikler kullanılarak uygulamalar hazırlanabilir (JQuery

Mobile, 2015).

3.2.6. XMLVM

XMLVM bir çapraz derleyici aracıdır. XMLVM .Net, Java ya da Objective-C

dillerine çeviri yaparken java sınıflarına ve .NET çalıştırılabilir dosyalarına

ihtiyaç duyar. Şekil 3.2' de XMLVM mimarisi görülmektedir.

Page 25: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

3.2.7. Xamarin

Xamarin, mono projesi olarak

ortamını kullanarak IOS, Android ve Windows Phone uygulamaları

geliştirebilirler. Xamarin

bilgisayarlarda Visual Studio, MAC bilgisayarlarda ise Xamarin Studio ile

yapılmaktadır (Karlı, 2014)

3.2.8. Sencha Touch

Sencha Touch, HTML5 ile Iphone, Android, BlackBerry ve diğer mobil

platformlar için uygulama

Javascriptin gelişmiş versiyonu olan ExtJS kullanılır. Açık kaynak bir

frameworktür. HTML5 mobil uygulama fra

olanıdır (Karlı, 2014)

11

Şekil 3.2. XMLVM mimarisi

mono projesi olarak bilinmektedir. Xamarin ile geliştiriciler

ortamını kullanarak IOS, Android ve Windows Phone uygulamaları

Xamarin, ticari bir frameworktür. Geliştirme

bilgisayarlarda Visual Studio, MAC bilgisayarlarda ise Xamarin Studio ile

(Karlı, 2014).

Touch

HTML5 ile Iphone, Android, BlackBerry ve diğer mobil

platformlar için uygulama geliştirmeye olanak sağlayan bir frameworktür.

Javascriptin gelişmiş versiyonu olan ExtJS kullanılır. Açık kaynak bir

HTML5 mobil uygulama framewrokleri arasında en performanslı

(Karlı, 2014).

. Xamarin ile geliştiriciler, C# - .NET

ortamını kullanarak IOS, Android ve Windows Phone uygulamaları

ticari bir frameworktür. Geliştirme; Windows

bilgisayarlarda Visual Studio, MAC bilgisayarlarda ise Xamarin Studio ile

HTML5 ile Iphone, Android, BlackBerry ve diğer mobil

bir frameworktür.

Javascriptin gelişmiş versiyonu olan ExtJS kullanılır. Açık kaynak bir

asında en performanslı

Page 26: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

4. UYGULAMA VE ARAŞTIRMA BULGULARI

4.1. Bukalemun Programlama Dili

Bukalemun Windows ve Mobil ortamda Türkçe kodlama yapısı ile uygulama

oluşturmak için geliştirilmiş bir dildir.

kere derlendikten sonra Windows

çalıştırılabilir. Şekil 4.1

örneğin konsol ekran

sınıf Merhaba { fonksiyon başla() { yaz("Bukalemun ile Merhaba Dünya"); } }

Şekil 4.

4.1.1. Bukalemun dili dosya u

Bukalemun dili için kullanılan

gibidir.

12

4. UYGULAMA VE ARAŞTIRMA BULGULARI

Programlama Dili

Bukalemun Windows ve Mobil ortamda Türkçe kodlama yapısı ile uygulama

oluşturmak için geliştirilmiş bir dildir. Bukalemun ile yazılan uygulamalar bir

kere derlendikten sonra Windows (konsol ve form), IOS ve Android üzerinde

Şekil 4.1' de Bukalemun ile yazılmış bir örnek ve

ekranındaki görüntüsü verilmiştir.

başla()

yaz("Bukalemun ile Merhaba Dünya");

Şekil 4.1. Bukalemun ile ilk örnek

Şekil 4.2. Bukalemun ile ilk örneğin ekran görüntüsü

Bukalemun dili dosya uzantıları

Bukalemun dili için kullanılan dosya uzantıları Çizelge 4.1

Bukalemun Windows ve Mobil ortamda Türkçe kodlama yapısı ile uygulama

e yazılan uygulamalar bir

, IOS ve Android üzerinde

ve Şekil 4.2' de bu

Bukalemun ile ilk örneğin ekran görüntüsü

Çizelge 4.1' de gösterildiği

Page 27: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

13

Çizelge 4.1. Bukalemun dili dosya uzantıları

Dosya Türü İşlevi

.buk Bukalemun kaynak kod dosyasıdır. Yazılan kodlar buk dosyası olarak kaydedilerek tekrar üzerinde düzeltmeler yapılabilir.

.ale Derleyiciye birden fazla .buk dosyası gönderilmesi gereken durumlarda, kaynak kod dosyaları .ale dosyası içine satır satır yazılarak gönderilir.

.mun Derlenmiş kod dosyası (Konsol uygulamaları, sadece windows)

.munf Derlenmiş kod dosyası (Form uygulamaları, Windows, IOS ve android)

4.2. Bukalemun Kodlarının Derlenmesi

Yazılan kodların yorumlama aşamasında ayrıştırmaya ihtiyaç duymaması için,

önce derleyiciden geçirilerek ayrıştırılmış düzenli bir komut kümesi

oluşturulması hedeflenmiştir. Bukalemun ile yazılan kodları derlemek için,

Delphi ile bir derleyici programı yazılmıştır. Bu programa gönderilen kaynak

kodlar derlenerek düzenli bir komut kümesi oluşturulmuştur. Komut satırından

“bfd” derleyici programına çalıştırılacak kaynak kod dosyası parametre olarak

gönderilerek kullanılmaktadır.

Hazırlanan uygulama sadece windowsta çalışan konsol uygulaması olarak

derlenecek ise, derleyiciye kaynak kod dosyası gönderilmesi yeterli olmaktadır.

Konsol uygulama dosyasının uzantısı “.mun” olarak derleyici tarafından

atanmaktadır.

Uygulamada form kontrolleri kullanılıyorsa, yani görsel programlama ile

oluşturulan kontroller var ise derleme işlemine “-form” parametresinin de

gönderilmesi gerekmektedir. Böylece derleyici, bu uygulamayı bir form

uygulaması olarak derleyecektir. Form uygulaması dosyasının uzantısı “.munf”

olarak derleyici tarafından atanmaktadır.

Page 28: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

14

4.2.1. Bukalemun derleyici komut satırı parametreleri

Derleyicinin çalışmasına yön vermek için bazı parametreler kullanılır. Bu

parametrelerden istenilenler aralarında boşluk bırakılarak derleyiciye

gönderilir. Hiçbir parametre gönderilmezse varsayılan ayarlarla konsol

uygulaması olarak derleme işlemi yapılır. Derleyiciye gönderilebilecek

parametreler Çizelge 4.2' de gösterilmiştir.

Çizelge 4.2. Derleyici parametreleri

Parametre Anlamı

-form Uygulamanın form kontrolleri içerdiğini gösterir. -beklet Derleme işleminden sonra derleyicinin ekranda kalmasını

sağlar. -hexyok Derleme işleminin sonuçlarını okunur olarak bırakır. -tokengoster Kelime analizi sonucunda oluşturulan tokenleri konsol

ekranında gösterir. -konsolayaz Derleme işlemi sonucunda oluşan kodu konsol ekranında

gösterir.

4.3. Bukalemun Kodlama Ortamı

Bukalemun dili ile kodlama yapmak için, not defteri de dahil olmak üzere

herhangi bir editör kullanılabilir. Dosya kayıt edilirken uzantısı “.buk” olmalıdır

ve “UTF-8” formatında kaydedilmelidir. Bu tez çalışmasında Bukalemun için

özel olarak C# dili ile yazılan Bukalemun Framework Editör (BFE) programı

kullanılacaktır.

4.3.1. Bukalemun framework editör

Bukalemun Framework Editör (BFE) programı, bukalemun kodlarının

yazılması, hata ayıklama, kaynak kodları derleyiciye gönderme, derlenen

uygulamayı çalıştırma ve derleme sonuçlarını izleme gibi görevleri yerine

getirmektedir. BFE programının ekran görüntüsü Şekil 4.3' te görülmektedir.

Page 29: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

15

Şekil 4.3. Bukalemun Framework Editör

4.3.2. BFE ile kaynak kod derleme

Bukalemun kaynak kodları derleme işlemi için Şekil 4.4' te görüldüğü gibi Derle

(Okunabilir), Derle ve Çalıştır, Derle (Hex) olmak üzere 3 seçenek vardır.

Derle (Okunabilir), derleyici, derleme işleminin sonucunda çalıştırılabilir bir

dosya oluşturur. Bu dosya içerisinde kodların 5 karakter uzunluğundaki hex

karşılıkları yer alır. Uygulamanın çalıştırılması, bu hex kodlarının okunması ile

olur. Bazı durumlarda, hex kodlarının yerine hex kodunun asıl karşılığını

koyarak daha okunaklı bir sonuç oluşturmak gerekebilir. Bu durumda

derleyiciye, parametre olarak “-hexyok” gönderilir. Böylece kaynak kodun

derleyiciden sonraki hali Şekil 4.5' te görüldüğü gibi açık bir şekilde

okunabilmektedir.

Derle ve çalıştır, derleme işlemi sonucunda oluşturulan kodların yorumlayıcıya

gönderilerek çalıştırılmasını sağlar.

Page 30: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

16

Derle (Hex), derleme işlemi sonucunda oluşturulan hex kodları Şekil 4.6' daki

gibi kullanıcıya gösterilir.

Şekil 4.4. BFE ile kod derleme

Şekil 4.5. Derlenen kodların ortak dil karşılığı (Okunabilir)

Page 31: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

17

Şekil 4.6. Derlenen kodların hex karşılığı

4.4. Bukalemun Kodlarının Hayat Döngüsü

Bukalemun kodunun yorumlanmaya hazır hale gelmesi için bazı adımlardan

geçmesi gerekmektedir. Programcı kaynak kodu yazar ve derleyiciye gönderir.

Derleyici gelen kaynak kodları alarak kelime analiziyle anlamlı parçalara ayırır.

Bu anlamlı parçalar sözdizimsel analize gönderilir. Bu aşamada arka arkaya

gelmesi gereken anlamlı parçalar kontrol edilerek istenilen satırlar ara kod

üretici ile oluşturulur. Derleyici bu ara kodları bir dosyaya yazar ve işlemini

tamamlar. Oluşturulan dosya yorumlayıcı tarafından açılır ve ilk sınıfın başla

fonksiyonundan yorumlama işlemi başlatılır. Bu adımların şematik gösterimi

Şekil 4.7' de gösterildiği gibidir.

Page 32: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

18

Şekil 4.7. Bukalemun kodlarının derlenme - yorumlanma adımları

Page 33: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

19

4.5. Bukalemun Dili Anahtar Kelimeleri

Bukalemun dilinde değişken tanımlamak, şarta bağlı olarak programa yön

vermek ve döngü işlemleri için kullanılan anahtar kelimeler vardır. Her

programla dilinde olduğu gibi bu anahtar kelimeler programlama dili için özel

anlamlar ifade ettiği için kendi amacı dışında kullanılamazlar. Örneğin “sayı”

kelimesi bukalemun dili için tam sayı türünü temsil ettiği için değişken adı veya

fonksiyon adı olarak kullanılamaz. Çizelge 4.3' te bukalemun dili anahtar

kelimeleri gösterilmiştir.

Çizelge 4.3. Bukalemun dili anahtar kelimeleri

sayı eğer bitir

vsayı ise devam

metin değilse gönder

karakter tekrarla sınıf

doğruyanlış say fonksiyon

4.6. Derleyici

Bir dilde yazılmış olan kodu (kaynak kod yada source code) istenilen başka bir

kod haline dönüştüren programdır. Genelde üretilen bu kod ortama göre

çalıştırılabilir kod (executable code) olarak üretilmektedir. Derleyicinin diğer

bir tanımı ise daha üst seviye bir dilden daha alt seviyeli bir dile tercüme olarak

kabul edilebilir. Buna göre örneğin C dilinden Assembly veya makine dili gibi

daha alt dillere tercüme ile derleyici kavramı daha da sınırlandırılmış olarak

kabul edilebilir. Derleyiciler günümüzde daha çok bir dilde yazılmış koddan,

işletim sistemi ve donanım bağımlı kodların üretilmesinde kullanılmaktadırlar.

Bu üretim sırasında ya doğrudan işletim sisteminin anlayacağı ve çalıştıracağı

kodları üretirler ya da işletim sisteminde bulunan veya yine dil bağımlı olarak

çalışan bağlayıcı (linker) programların anlayacağı ara kodları üretirler (Şeker

2008). Örneğin Şekil 4.8' de bir programın kaynak kodundan bir satır

görülmektedir.

Page 34: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

20

X = 2 + Y

Şekil 4.8. Örnek bir program satırı

Şekil 4.9'da assembly dilinde yazılmış satırlar, Şekil 4.8' daki kodun derlenmiş

halidir.

LOAD A [0] ;; belleğin 0 adresindeki veriyi A siciline yükle

ADD A BX ;; A siciline BX sicilindeki adreste bulunan veriyi ekle

STOR A [100] ;; Sonucu 100 adresine yaz

Şekil 4.9. Assembly dili kod karşılığı

Derleme işlemi adımları; kelime analizi, söz dizimsel analiz ve ara kod üreticidir.

4.7. Kelime Analizi

Program metninin okunduğu ve analiz edildiği ilk kısımdır. Kaynak kod

derleyiciye ilk geldiği zaman, ilk olarak, kaynak kodun harfleri teker teker

işlenir ve tanımlanarak “Belirtke (token)” adlı nesnelere dönüştürülür. Belirtke;

değişken adı, anahtar kelime ya da sayı gibi programlama dilindeki bir sembolü

gösterir. Sözcüksel analizi gerçekleştiren derleyici parçasına “lexer” denir.

Sözcüksel analizin görevi, yazım analizi yapıp sonuç olarak bir belirtke listesi

oluşturmaktır (Zengin 2010).

Bilgisayar bilimlerinde programlama dillerinin tasarımı ve geliştirilmesi

sırasında kullanılan ve dildeki kelimelerin analizini (lexical analysis)

gerçekleştiren kod üretme programıdır. Yani hazırlanmış bir kaynak kod

dosyasını kelime analizi programından geçirdikten sonra ortaya istenilen dilde

bir kod çıkar. Bu kodu derledikten (compile) sonra çalışan bir program ortaya

çıkar (Şeker 2008).

Page 35: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

21

Yüksek seviyeli bir dille yazılan kodun çalıştırılabilmesi için en düşük seviyede

bilgisayarın işleyebileceği komutlar dizisi haline getirilmesi gereklidir. Bu

sebeple kaynak kodu oluşturan karakter katarı anlamlı alt parçalara

ayrıştırılmalıdır. Alt parçalara belirtke, bunları ayrıştırma işlemine de kelime

analizi denir. Kelime analizi işleminin çıktısı olan belirtkeler bir sonraki aşama

olan sözdizimsel analiz bileşenine aktarılır. Belirtkeler sözdizimsel bir kategori

belirtir. Bu kategoriler doğal diller için “isim”, “sıfat”, “fiil” vb. olabilirken,

programlama dilleri için “matematiksel sembol” veya “anahtar kelime” gibi alt

ifadeler olurlar. Belirtke ile gösterilen bir alt karakter katarı parametre olarak

adlandırılır. Programlama dili içinde kullanılması mümkün olan tüm

parametreler tanımlanırken örüntüler (pattern) kullanılır. Örüntüler düzenli

ifadeler (regular expressions) kullanılarak tanımlanır. Bu aşamada düzenli

ifadelerin kullanılmasının sebebi işlenen karakter katarı içinde kabul edilebilir

bir belirtke bulabilmenin bazen geriye dönük arama da gerektirebilmesidir

(Kılıçarslan 2006).

Bir kelime analizi aracı şu 3 şeyi yapabilmelidir:

1. Bütün boşlukları ve açıklamaları temizlemeli,

2. Karakter katarı içindeki tüm belirtkeler (token) bulunmalı,

3. Bulunan belirtkeler için bulunduğu satır numarası gibi özellikler

döndürülmelidir.

Örnek 1: Şekil 4.10'daki kod parçasına göre oluşturulan belirtkeler Çizelge 4.4'

te verilmiştir.

toplam = 5 + 3;

Şekil 4.10. Toplama işlemi örnek kod satırı

Page 36: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

22

Çizelge 4.4. Toplama işlemi örnek kod satırına göre oluşturulan belirtkeler

Parametre Belirtke

toplam Tanımlayıcı

= Atama Operatörü

5 Sayısal Veri

+ Toplama Operatörü

3 Sayısal Veri

; Noktalı Virgül

Kelime analizinden elde edilen belirtkeler söz dizimsel analiz aşamasına

gönderilir.

4.8. Söz Dizimsel Analiz

Kelime analizinden elde edilen belirtke listesinin dilin söz dizimine uygun olup

olmadığını belirler. Eğer söz diziliminde hata olursa kullanıcıya bilgi verilir ve

derleme işlemi iptal edilir.

Söz dizimsel analiz için noktalı virgül sembolünün büyük önemi vardır. Noktalı

virgül bir satırın bittiği anlamına gelir. Derleyici işletilecek olan işlemin

(değişken tanımlama, değer atama, şart, döngü, fonksiyon tanımlama ve

çağırma) ne olduğuna karar verirken, noktalı virgül o anki işlemin bittiğini

anlamına gelir.

4.8.1. Değişken tanımlamanın söz dizimsel analizi

Bukalemun dili için değişken tanımlama 3 şekilde yapılır. Bunlar; değişkenin

türü ve adı yazılarak, değişkenin türü ve adından sonra ilk değer ataması

yapılarak ya da değişkenin türü ve adından sonra matematiksel bir işlemin

sonucunu atayarak yapılır. Çizelge 4.5' te üç çeşit tanımlama için kodlama

örneği ve belirtkeler verilmiştir.

Page 37: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

23

Çizelge 4.5. Kod satırına karşılık beklenen belirtkeler

Kodlama Beklenen Belirtkeler

Değişken_türü değişken_adı;

Örnek: sayı a;

Tanımlayıcı Tanımlayıcı Noktalı Virgül

Değişken_türü değişken_adı = ilk_değer;

Örnek: metin m = “Antalya”;

Tanımlayıcı Tanımlayıcı Atama Operatörü Metinsel Veri Noktalı Virgül

Değişken_türü değişken_adı = matematiksel_işlem;

Örnek: sayı x = 10 + 5 * 3;

Tanımlayıcı Tanımlayıcı Atama Operatörü Sayısal Veri Toplama Operatörü Sayısal Veri Çarpma Operatörü Sayısal Veri Noktalı Virgül

Bukalemun dilinde değişken tanımlamanın doğru olabilmesi için ya 2

tanımlayıcı belirtkesi ve arkasından 1 noktalı virgül belirtkesi gelmelidir ya da

sırasıyla 2 tanımlayıcı belirtkesi, 1 atama operatörü belirtkesi, 1 tanımlayıcı

belirtkesi ve son olarak 1 noktalı virgül belirtkesi gelmelidir. Bu belirtkelerden

eksik veya sırası yanlış olan olursa derleyici hata mesajı göstererek derleme

işlemini durdurur.

Şekil 4.11' de sayı tipinde bir değişken tanımlanırken değişken adından sonra

noktalı virgül gerekirken büyüktür işareti kullanılarak hata yapılmıştır. Bu

hatayı Şekil 4.12' de derleyici programcıya bildirmektedir.

sınıf Değişkenler { fonksiyon başla() { sayı a > ; } }

Şekil 4.11. Hatalı değişken tanımlaması yapılan örnek

Page 38: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 4.12. Hatalı değişken tanımlaması

4.9. Shunting Yard Algoritması Analizi

Bir ifade de farklı önceliklere sahip operatörler yazılma sırasına göre işlenirse

ifade yanlış sonuçlanabilir. Böyle durumlarda işlem öncelikleri göz önüne

alınarak işlem önceliği yüksek olan ifadeden başlamak gerekecektir. Bilgisayar

dilinde işlem önceliğin

tarafından bulunan

Yard Algoritmasına göre matematiksel ifadeler Infix, Prefix ve Postfix olarak 3

şekilde yazılır.

Infix notasyonu, operatörlerin işlenecek operandlar arasına yerleştirildiği

gösterim biçimidir.

gösterimde operatör önceliklerinin değiştirilebilmesi için parantez kullanılması

şarttır. Örneğin infix notasyonundaki '2+4*6' ifadesi 2+24=26 ile sonuçlanır.

Aynı ifadede + operatörüne öncelik verilmesi istenirse parantezler kullanılır;

'(2+4)*6'. Böylece ifade 36 ile sonuçlandırılır. Genelde bilgisayar girdilerinde bu

notasyon kullanılır. Ancak girdiler işlenmeden önce prefix veya postfix

notasyonuna çevrilir

Prefix notasyonunda operatörler, operandlarından önce yazılır. Örneğin inf

notasyonundaki '2+4*6' ifadesi prefix notasyonunda '+ 2 * 4 6' şeklinde

gösterilir. Benzer şekilde '(2+4)*6' ifadesi '* + 2 4 6' şeklinde gösterilir.

notasyonunda işlem önceliklerinin sağlanması için parantezlere ihtiyaç

(Atasoy 2011).

24

Hatalı değişken tanımlaması örneği için derleyici ekran görüntüsü

Shunting Yard Algoritması Analizi

Bir ifade de farklı önceliklere sahip operatörler yazılma sırasına göre işlenirse

ifade yanlış sonuçlanabilir. Böyle durumlarda işlem öncelikleri göz önüne

önceliği yüksek olan ifadeden başlamak gerekecektir. Bilgisayar

dilinde işlem önceliğine göre ayrıştırma yapan algoritma

tarafından bulunan "Shunting Yard" algoritmasıdır (Atasoy 2011)

Yard Algoritmasına göre matematiksel ifadeler Infix, Prefix ve Postfix olarak 3

Infix notasyonu, operatörlerin işlenecek operandlar arasına yerleştirildiği

gösterim biçimidir. "2 + 3 * 5 - 2 + 7" gösterim biçimi infix notasyonud

gösterimde operatör önceliklerinin değiştirilebilmesi için parantez kullanılması

şarttır. Örneğin infix notasyonundaki '2+4*6' ifadesi 2+24=26 ile sonuçlanır.

Aynı ifadede + operatörüne öncelik verilmesi istenirse parantezler kullanılır;

Böylece ifade 36 ile sonuçlandırılır. Genelde bilgisayar girdilerinde bu

notasyon kullanılır. Ancak girdiler işlenmeden önce prefix veya postfix

notasyonuna çevrilir (Atasoy 2011).

Prefix notasyonunda operatörler, operandlarından önce yazılır. Örneğin inf

notasyonundaki '2+4*6' ifadesi prefix notasyonunda '+ 2 * 4 6' şeklinde

gösterilir. Benzer şekilde '(2+4)*6' ifadesi '* + 2 4 6' şeklinde gösterilir.

notasyonunda işlem önceliklerinin sağlanması için parantezlere ihtiyaç

örneği için derleyici ekran görüntüsü

Bir ifade de farklı önceliklere sahip operatörler yazılma sırasına göre işlenirse

ifade yanlış sonuçlanabilir. Böyle durumlarda işlem öncelikleri göz önüne

önceliği yüksek olan ifadeden başlamak gerekecektir. Bilgisayar

ma Edsger Dijkstra

(Atasoy 2011). Shunting

Yard Algoritmasına göre matematiksel ifadeler Infix, Prefix ve Postfix olarak 3

Infix notasyonu, operatörlerin işlenecek operandlar arasına yerleştirildiği

2 + 7" gösterim biçimi infix notasyonudur. Bu

gösterimde operatör önceliklerinin değiştirilebilmesi için parantez kullanılması

şarttır. Örneğin infix notasyonundaki '2+4*6' ifadesi 2+24=26 ile sonuçlanır.

Aynı ifadede + operatörüne öncelik verilmesi istenirse parantezler kullanılır;

Böylece ifade 36 ile sonuçlandırılır. Genelde bilgisayar girdilerinde bu

notasyon kullanılır. Ancak girdiler işlenmeden önce prefix veya postfix

Prefix notasyonunda operatörler, operandlarından önce yazılır. Örneğin infix

notasyonundaki '2+4*6' ifadesi prefix notasyonunda '+ 2 * 4 6' şeklinde

gösterilir. Benzer şekilde '(2+4)*6' ifadesi '* + 2 4 6' şeklinde gösterilir. Prefix

notasyonunda işlem önceliklerinin sağlanması için parantezlere ihtiyaç yoktur

Page 39: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

25

Postfix notasyonunda önce operandlar ve ardından operatör yerleştirilir. Infix

notasyonundaki '2+4*6' ifadesi postfix notasyonunda '2 4 6 * +' şeklinde

gösterilir. Benzer şekilde '(2+4)*6' ifadesi '2 4 + 6 *' şeklinde gösterilir. Yine

prefixte olduğu gibi bu gösterimde de parantezlere itiyaç duyulmaz (Atasoy

2011).

Bukalemun dilinde programcının yazdığı infix notasyonundaki girdiler söz

dizimsel analiz aşamasında postfix notasyonuna çevrilir. Şekil 4.13' deki infix

ifadesinin postfix karşılığı Şekil 4.14' te görülmektedir. Şekil 4.15' te ise aynı

infix ifadesinin söz dizimsel analizi sonucu oluşan kodlar görülmektedir.

20 - 5 * (4 + (6 * 5 - (3 * 1) + 2))

Şekil 4.13. Infix ifadesi

20 5 4 6 5 * 3 1 * - 2 + + * -

Şekil 4.14. Postfix ifadesi

Page 40: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

26

Şekil 4.15. Söz dizimsel analiz sonucu oluşan postfix ifadesi

4.10. Yorumlayıcı

Yorumlanan programlama dilleri bilgisayar programlamada yazılan

programların çalışabilmeleri için kaynak kodlarının bir yorumlayıcı tarafından

yorumlanması gerektiğini ifade etmektedir. "Interpreted programming

language" olarak da geçmektedir. Teorik olarak herhangi bir proglamlama dili

ile yazılan bir program, kendi derleyicisi tarafından makine diline dönüştürülür

ve derlendikleri platform üzerinde C, Ada, Pascal, Delphi, Algol dillerinde olduğu

gibi doğrudan çalıştırılır ya da Python, Ruby, Java, Lisp, BASIC dillerinde olduğu

gibi o dilin yorumlayıcısı tarafından işletilerek çalıştırılır (Wikipedia 2015).

Page 41: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

27

4.10.1. Yorumlanan dillerin özellikleri

Yorumlanan programlama dilleri genellikle şu özelliklere sahiptir:

• Platformdan bağımsızdır

• Hata ayıklama kolaydır

• Program boyutu küçüktür

4.10.2. Bukalemun dili yorumlayıcıları

Bukalemun dili için her platforma özel platformun kendi programlama dili ile

yorumlayıcılar yazılmıştır. Böylece derleyiciden çıkan kod Windows, IOS ve

Android platformlarında sorunsuz bir şekilde yorumlanmaktadır.

4.11. Bukalemun Dili Kodlaması

Her programlama dilinin kendine özgü kodlama yapısı ve anahtar kelimeleri

vardır. Bu anahtar kelimelerin belirli bir düzen ve sıra ile yazılması programı

oluşturur. Bukalemun dilinde de değişken ve fonksiyon tanımlamak, şart ve

döngü deyimleri kullanmak matematiksel işlemler yapmak için çeşitli anahtar

kelimeler vardır.

Programlama dillerinin en temel işlemi değişken tanımlamadır.

4.12. Değişkenler

Herhangi bir verinin RAM'da depolanmasını sağlar. Böylece değişkene verilen

isim ile o veriye istenildiği zaman ulaşılır. Değişkene isim verirken diğer

programlama dillerinde olduğu gibi isimlendirme kurallarına uymak gerekir.

Değişken tanımlaması Şekil 4.16'da gösterildiği gibi yapılır. Değişkende

saklanacak veri türüne göre tanımlama örnekleri Çizelge 4.6' da gösterilmiştir.

Page 42: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

28

değişken_türü değişken_adı;

değişken_türü değişken_adı = değişkenin_ilk_değeri;

Şekil 4.16. Değişken tanımlama

Çizelge 4.6. Değişken tanımlama örnekleri

Veri Türü Tanımlama Örneği

Sayısal sayı a; Ondalıklı Sayı vsayı b; Metinsel metin c; Tek Karakter karakter d; Doğru Yanlış doğruyanlış e;

4.12.1. Değişken türleri

Bir verinin geçici hafızada depolanması gerektiği durumlarda değişken

tanımlaması yapılır. Değişken tanımlaması yapmadan önce verinin türüne karar

vermek gerekmektedir. Bu türler "sayı", "vsayı", "metin", "karakter",

"doğruyanlış" olabilir. Verinin türüne göre hafızada kaplayacağı alan

değişmektedir. Çizelge 4.7' de değişkenlerin bellekte kapladığı alanlar

görülmektedir.

Çizelge 4.7. Değişkenlerin bellekte kapladığı alan

Değişken Türü Bellekte Kapladığı Alan sayı 32 bit vsayı 64 bit metin Karakter Sayısı Kadar (Byte) karakter 1 Byte doğruyanlış 1 Bit

4.12.2. Değişkenlerin Geçerlilik Alanları

Programlama dillerinde değişkenlerin tanımlanmasından sonra geçerli

oldukları bir alan vardır. Bu alan dışından erişilemezler. Değerleri

değiştirilemez.

Page 43: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

29

Bukalemun dilinde değişkenler tanımlandıklar { } (süslü parantezler) içerisinde

geçerlidir. Değişkenler süslü parantez kapandıktan sonra bellekten silinirler.

Şekil 4.17'de verilen kod için, a değişkeni sınıf içerisinde tanımlandığı için her

yerde kullanılabilir. b değişkeni ise başla fonksiyonu içerisinde tanımlandığı için

sadece başla fonksiyonu içerisinde kullanılabilir. c değişkeni eğer ifadesi

içerisinde tanımlandığı için sadece eğer ifadesi içerisinde kullanılabilir. Eğer

ifadesi bittikten sonra c değişkeni silinir.

sınıf Değişkenler { sayı a = 100; // a değişkeni bu noktadan itibaren geçerlidir. fonksiyon başla() { sayı b = 200;// b değişkeni bu noktadan itibaren geçerlidir. eğer a > 50 ise { sayı c = a + b; // c değişkeni bu noktadan itibaren geçerlidir.

} // c değişkeni bu paranteze kadar geçerlidir. } // b değişkeni bu paranteze kadar geçerlidir. }// a değişkeni bu paranteze kadar geçerlidir.

Şekil 4.17. Değişkenlerin geçerlilik alanlarını gösteren örnek

4.12.3. Değişkenlere değer atama

Program içerisinde değişkenlerin değerlerinin ihtiyaca göre değişmesi

gerekebilmektedir. Değişkene değer atama değişkenin tanımlanma anından

itibaren başlar değişkenin geçerli olduğu alan sonuna kadar devam eder. Değer

atama işlemi = (Eşittir) operatörü ile yapılır. Operatörün sağındaki ifadeler

solundaki değişkene atanır. Şekil 4.18' de değişkenlere değer atama örneği

gösterilmektedir.

Page 44: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

30

sınıf Değişkenler { fonksiyon başla() { sayı x = 100; // x değişkeni tanımlandığı anda değeri atanıyor. x = 150; // Program içerisinde x değişkeninin değeri değiştiriliyor. } }

Şekil 4.18. Değişkenlere değer atama

4.12.4. Değişkenlere klavyeden değer atama

Konsol uygulamalarında kullanıcının klavyeden yazdığı veri değişkene

atanabilir. Bu işlem için sadece konsol uygulamalarında kullanılabilen oku()

fonksiyonu kullanılmaktadır.

Şekil 4.19' da metin türünde tanımlanan okunan değişkenine tanımlama anında

klavyeden girilen metin türündeki değer atanmaktadır.

sınıf Değişkenler { fonksiyon başla() { metin okunan = oku(); } }

Şekil 4.19. Metin türündeki değişkene klavyeden değer atama

Page 45: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

31

4.12.5. Değişkenlere değer atarken oluşabilecek hatalar

Bukalemun dilinde değişkene değer ataması yapılırken değişken tipine göre tür

dönüşümünü otomatik olarak yapılır. Ancak değişkene atanacak olan veri

değişkenin türüne uygun olmalıdır. Aksi halde hata oluşacaktır.

Şekil 4.20'de metin tipinde tanımlanan m değişkenine "3" değeri atanıyor. Daha

sonra sayı tipinde tanımlanan s değişkenine, metin tipindeki m değişkenin

değeri sayı tipine dönüştürülerek atama işlemi yapılmaktadır.

metin m = "3";

sayı s = m;

Şekil 4.20. Metin türünden sayı türüne dönüşüm yaparak atama

Şekil 4.21'de verilen örnekte metin tipinde tanımlanan m değişkenine "üç"

değeri atanmaktadır. Daha sonra sayı tipindeki s değişkenine metin tipindeki m

değişkeninin değeri atanmak isteniyor ancak "üç" değeri sayı tipine

dönüştürülemeyeceği için Şekil 4.22'deki hata mesajı alınacaktır.

Metin m = "üç";

sayı s = m;

Şekil 4.21. Hatalı tür dönüşüm örneği

Page 46: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 4.22

4.12.6. Değişkenler

Konsol uygulamalarında bir değişkenin değerini

yazdırmak için yaz

yaz kendine verilen parametreleri ekrana yazar,

parametreleri ekrana yazdıktan sonra imlec

sonra yazılanlar yeni satırdan başlamış

m değişkeninin değeri ekrana yazıl

görüntüsü vardır.

sınıf Yazdır { fonksiyon başla() { metin

yaz(m); } }

Şekil 4.23

32

22. Hatalı tür dönüşümde karşılaşılan hata

Değişkenlerin değerlerini ekrana yazdırma

Konsol uygulamalarında bir değişkenin değerini veya sabit bir ifadeyi ekrana

ve yazA fonksiyonları kullanılmaktadır. Bu fonksiyonlardan

len parametreleri ekrana yazar, yazA fonksiyonu ise gönderilen

parametreleri ekrana yazdıktan sonra imleci alt satıra taşır. Böylece bundan

sonra yazılanlar yeni satırdan başlamış olacaktır. Şekil 4.23'

değişkeninin değeri ekrana yazılmıştır. Şekil 4.24' te ise örneğin ekran

başla()

metin m = "Bukalemun ile Merhaba Dünya"; (m);

23. Değişken değerini konsol ekranına yazdırma

mesajı

veya sabit bir ifadeyi ekrana

. Bu fonksiyonlardan

fonksiyonu ise gönderilen

i alt satıra taşır. Böylece bundan

te verilen örnekte

ise örneğin ekran

Değişken değerini konsol ekranına yazdırma

Page 47: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 4.24. Değişken değerini ekrana yazdırma örneği ekran görüntüsü

4.12.7. Önceden tanımlı

Bukalemun içerisinde

değişkenler vardır. Bu değişkenler uygulama

hakkında bilgi tutarlar.

4.12.7.1. platform değişkeni

Platform metin türünde

platform bilgisini tutar. Bu değişkenin değeri kontrol edilerek uygulamaya yön

verilebilir. Farklı platformlardaki

gösterilmiştir.

Çizelge 4.

Uygulama

Windows Konsol UygulamalarıWindows Form UygulamalarıIPhone uygulamaları Android Uygulamaları

Şekil 4.25' te verilen

uygulaması ise ekrana platform değişkenin değerini

değişkenin değerini mesaj

ekranındaki görüntüsü

4.27' de, android ve IOS ekranındaki görüntüsü ise

33

Değişken değerini ekrana yazdırma örneği ekran görüntüsü

anımlı değişkenler

Bukalemun içerisinde uygulama çalıştırıldığı anda otomatik olarak

değişkenler vardır. Bu değişkenler uygulama ve uygulamanın çalıştığı platform

hakkında bilgi tutarlar.

değişkeni

metin türünde tanımlanmış bir değişkendir. Uygulamanın çalıştırıldığı

platform bilgisini tutar. Bu değişkenin değeri kontrol edilerek uygulamaya yön

Farklı platformlardaki platform değişkeninin değeri

Çizelge 4.8. Platform değişkeninin alabileceği değerler

Değişkenin Değeri

Uygulamaları konsol Uygulamaları win form

ios Android Uygulamaları android

verilen örnekte platform değişkeni kontrol edilerek

uygulaması ise ekrana platform değişkenin değerini yazılır

ini mesaj penceresinde ekranda gösterir. Uygulamanın konsol

ekranındaki görüntüsü Şekil 4.26' da, windows ekranındaki görüntüsü

de, android ve IOS ekranındaki görüntüsü ise Şekil 4.28' de

Değişken değerini ekrana yazdırma örneği ekran görüntüsü

uygulama çalıştırıldığı anda otomatik olarak tanımlanan

nın çalıştığı platform

bir değişkendir. Uygulamanın çalıştırıldığı

platform bilgisini tutar. Bu değişkenin değeri kontrol edilerek uygulamaya yön

değeri Çizelge 4.8' de

Platform değişkeninin alabileceği değerler

örnekte platform değişkeni kontrol edilerek, konsol

yazılır değilse platform

Uygulamanın konsol

, windows ekranındaki görüntüsü Şekil

de görülmektedir.

Page 48: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

sınıf Platform { fonksiyon başla() { eğer platform == "konsol" değilse

} }

Şekil 4.25. Uygulamanın çalıştığı platform bilgisini gösteren program

Şekil 4.

Şekil 4.27. Windows Form uygulamalarında platform değişkeni

34

başla()

platform == "konsol" ise yaz(platform);

değilse mesaj(platform);

Uygulamanın çalıştığı platform bilgisini gösteren program

Şekil 4.26. Konsol uygulamalarında platform değişkeni

Windows Form uygulamalarında platform değişkeni

Uygulamanın çalıştığı platform bilgisini gösteren program

değişkeni

Windows Form uygulamalarında platform değişkeni

Page 49: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 4.28.

4.12.7.2. uygulamadosyası

Metin türünde tanımlanan

dosyasının tam yolunu tutar. Bu değişken kullanılarak çalıştırılan uygulamanın

dosya adı alınabilir.

4.13. Açıklama Satırları

Programlama dillerinde kodlar arasına yazılan

sadece açıklama amacıyla yazılan satırlar bulunur.

değişkenlere, satırlara, fonksiyonlara ve diğer ifadelere daha sonra

okunduğunda o kod ile ilgili bilgi vermektir

35

Android ve IOS platformları için platform değişkeni

uygulamadosyası değişkeni

Metin türünde tanımlanan uygulamadosyası değişkeni çalıştırılan uygulama

dosyasının tam yolunu tutar. Bu değişken kullanılarak çalıştırılan uygulamanın

. Açıklama Satırları

Programlama dillerinde kodlar arasına yazılan, derleyicinin görmezden geldiği

sadece açıklama amacıyla yazılan satırlar bulunur. Açıklamaların amacı

eğişkenlere, satırlara, fonksiyonlara ve diğer ifadelere daha sonra

od ile ilgili bilgi vermektir. Bukalemun dilinde iki türlü

Android ve IOS platformları için platform değişkeni

değişkeni çalıştırılan uygulama

dosyasının tam yolunu tutar. Bu değişken kullanılarak çalıştırılan uygulamanın

derleyicinin görmezden geldiği,

Açıklamaların amacı

eğişkenlere, satırlara, fonksiyonlara ve diğer ifadelere daha sonra

Bukalemun dilinde iki türlü

Page 50: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

36

açıklama satırı eklenir. Çizelge 4.9' da bukalemun dilinde kullanılan açıklama

satırları görülmektedir.

Çizelge 4.9. Açıklama satırları

Açıklama Satırı Sembolü Anlamı

// Tek satırlık açıklama /* */

Çok satırlı açıklama

4.14. Operatörler

Değişkenler ve veriler üzerinde aritmetiksel, mantıksal ve ilişkisel karşılaştırma

işlemi yapılmasını sağlayan simgelerdir. Bukalemun dilindeki operatörler

Çizelge 4.10'da gösterildiği gibidir.

Çizelge 4.10. Bukalemun dili operatörleri

Operatör Açıklama Operatör Açıklama + Toplama += Toplayarak ata - Çıkarma -= Çıkararak ata * Çarpma *= Çarparak ata / Bölme /= Bölerek ata ++ Bir arttır -- Bir azalt = Atama % Mod ** Üssü %= Mod alarak ata == Eşit mi? != Eşit değil mi? < Küçük <= Küçük ve eşit > Büyük >= Büyük ve eşit ve Şartların hepsi

doğru veya Şartların en az 1

tanesi doğru ! Değil

Bukalemun dili operatörlerinin kullanımı diğer programlama dillerinde olduğu

gibidir. Farklı olarak ** (üs) operatörü sayısal veriler üzerinde üs almak için

kullanılır.

Şekil 4.29'da aritmetik operatörler kullanılarak yapılan konsol uygulamasının

ekran görüntüsü Şekil 4.30'da görülmektedir.

Page 51: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

37

sınıf ArtimetikselOperatörler { fonksiyon başla() { sayı a = 50; sayı b = 20; yazA(a, " + ", b, " = ", a+b); yazA(a, " - ", b, " = ", a-b); yazA(a, " * ", b, " = ", a*b); yazA(a, " / ", b, " = ", a/b); yazA(a, " mod ", b, " = ", a%b); yazA(5, " üssü ", 3, " = ", 5**3); sayı c = 5; c++; yazA("c değişkeninin değeri: ", c); c--; yazA("c değişkeninin değeri: ", c); sayı d = 100; d += a; yazA("d değişkeninin değeri: ", d); d -= 130; yazA("d değişkeninin değeri: ", d); d *= 3; yazA("d değişkeninin değeri: ", d); d /= 12; yazA("d değişkeninin değeri: ", d); d %= 2; yazA("d değişkeninin değeri: ", d); } }

Şekil 4.29. Aritmetiksel operatörlerin tamamının kullanıldığı bir uygulama

Page 52: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 4.30

4.15. Kontrol İfadeleri

Programlamada bazı kodların uygun şartlar altında çalışması

istenir. Bu gibi durumlarda kontrol ifadeleri kullanılır.

kendilerine verilen şartların doğruluk durumlarını kontrol ederek gerekli

kodları çalıştırır ya da çalıştırmazlar.

4.15.1. eğer

Eğer kontrol ifadesiyle kodların belirli şartların yerine gelmesiyle çalışma

sağlanır. Şekil 4.31'de

eğer <şart>ise {

//kodlar

}

38

30. Aritmetik operatörler örneği ekran görüntüsü

. Kontrol İfadeleri

Programlamada bazı kodların uygun şartlar altında çalışması

istenir. Bu gibi durumlarda kontrol ifadeleri kullanılır.

kendilerine verilen şartların doğruluk durumlarını kontrol ederek gerekli

kodları çalıştırır ya da çalıştırmazlar.

rol ifadesiyle kodların belirli şartların yerine gelmesiyle çalışma

'de eğer ifadesinin kullanımı görülmektedir.

Şekil 4.31. Eğer ifadesi kullanımı

Aritmetik operatörler örneği ekran görüntüsü

Programlamada bazı kodların uygun şartlar altında çalışması veya çalışmaması

istenir. Bu gibi durumlarda kontrol ifadeleri kullanılır. Kontrol ifadeleri

kendilerine verilen şartların doğruluk durumlarını kontrol ederek gerekli

rol ifadesiyle kodların belirli şartların yerine gelmesiyle çalışması

kullanımı görülmektedir.

Page 53: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

39

4.15.2. değilse

Eğer ifadesiyle beraber kullanılır. Eğer ifadesindeki şartların sağlanmadığı

durumlarda çalıştırılmak istenen kodlar bu blok içerisine yazılır. Şekil 4.32' de

değilse ifadesinin kullanımı görülmektedir.

eğer <şartlar>ise { // şartlar doğru ise kodlar } değilse

{ // şartlar yanlış ise kodlar }

Şekil 4.32. eğer - değilse ifadesi kullanımı

4.15.3. eğer - değilse eğer

Birden fazla eğer ifadesinin şartlarının bir birine bağlı olarak çalışması istendiği

durumlarda kullanılır. İlk eğer ifadesinin şartı sağlanırsa diğerleri kontrol

edilmeden atlanır. Eğer ifadesinin şartı sağlanmazsa sonraki eğer ifadesine

geçilerek kontrol edilir. Şekil 4.33' de eğer - değilse eğer ifadesi kullanımı

görülmektedir.

sınıf eğer_değilse_eğer { fonksiyon başla() { eğer <şart1> ise { // kodlar } değilse eğer <şart2> ise { // kodlar } değilse eğer <şart3> ise { // kodlar

Page 54: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

40

} değilse

{ // kodlar } } }

Şekil 4.33. eğer - değilse - eğer ifadesi kullanımı

4.15.4. İç içe eğer

Eğer ifadelerinden bazıları başka eğer ifadelerine bağlı olduğu durumlarda

kullanılır. İçteki eğer ifadesinin çalışabilmesi için öncelikle dıştaki eğer

ifadesinin çalışması ve şartının sağlanması gerekir. Şekil 4.34' te iç içe eğer

ifadesinin kullanımı görülmektedir.

sınıf iç_içe_eğer { fonksiyon başla() { eğer<şart1>ise { eğer<şart2>ise { // kodlar } Değilse { // kodlar } } değilse { // kodlar } } }

Şekil 4.34. İç içe eğer ifadesi kullanımı

Page 55: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

41

4.16. Döngü deyimleri

Kod veya kod gruplarının birden fazla defa çalıştırılması istenildiği durumlarda

döngüler kullanılır. Döngüler çalışma şekillerine göre başlangıç, bitiş ve artış

değeri sabit olan ve belirli bir şart sağlandığı sürece tekrar eden olmak üzere

ikiye ayrılır.

4.16.1. say döngüsü

Başlangıç, bitiş ve artış değerinin belli olduğu durumlarda say döngüsü

kullanılır. Say döngüsü sadece tamsayılar üzerinde kullanılabilir. Kullanımı Şekil

4.35' te görüldüğü gibidir. Döngü parametreleri ve anlamları Çizelge 4.11'de

gösterilmiştir.

say (sayı değişken_adı : başlangıç .. bitiş , artış)

{

// kodlar

}

Şekil 4.35. say döngüsü kullanımı

Çizelge 4.11. say döngüsü parametreleri

Kod Anlamı

say Döngü deyimi sayı Döngünün sayı türünde sayacağını gösterir değişken_adı Döngü değişkenidir başlangıç Sayma işlemine başlanacak değer

.. (iki nokta yan yana) Sayma işleminde alt sınırın dahil üst sınırın dahil olmadığını gösterir. Hem alt sınırın hem üst sınırın dahil olması isteniyorsa üç nokta yan yana (...) kullanılmalıdır

bitiş Sayma işleminin biteceği tamsayı değerini gösterir , (virgül) Döngünün artış değerini belirlemek için kullanılır

artış Kullanımı zorunlu değildir. Kullanılmazsa artış değeri varsayılan olarak 1 alınır

Page 56: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

42

4.16.2. İç içe say döngüsü

Bir döngünün kaç defa çalışacağı başka bir döngü tarafından kontrol edilmesi

gerekiyorsa iç içe say döngüsü kullanılmalıdır. Dıştaki döngü içteki döngüyü

döngü adedince çalıştırır. Kullanımı Şekil 4.36' da gösterilmiştir.

say (sayı a: başlangıç ... bitiş, artış)

{

say (sayı b: başlangıç ... bitiş, artış)

{

// kodlar

}

}

Şekil 4.36. İç içe say döngüsü kullanımı

4.16.3. tekrarla Döngüsü

Döngünün çalışmasının bir şarta bağlı olduğu durumlarda kullanılır. Şart doğru

olduğu sürece döngü tekrarlanır. İki farklı kullanımı vardır. Şekil 4.37' de

verilen kullanımda önce şart kontrol edilir sonra kodlar çalıştırılır. Şekil 4.38' de

verilen kullanımda ise önce kodlar çalıştırılır sonra şart kontrol edilir.

tekrarla <şart> ise

{

// kodlar

}

Şekil 4.37. Tekrarla döngüsü kullanımı - 1

Page 57: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

43

tekrarla

{

// kodlar

} <şart> ise

Şekil 4.38. Tekrarla döngüsü kullanımı - 2

4.16.4. bitir, devam anahtar kelimeleri

Döngülerle kullanılabilen bitir ve devam anahtar kelimeleri döngünün gidişatını

değiştirmek için kullanılır. devam anahtar kelimesi döngünün bir sonraki adıma

geçmesini sağlarken bitir anahtar kelimesi döngüyü sonlandırır.

4.17. Fonksiyonlar

Fonksiyonlar bukalemun uygulamalarında belirli görevleri yerine getirmek için

yazılan kod bloklarıdır. Fonksiyon kullanmanın amacı, bazı program parçalarına

ana program veya alt programlar içerisinde birden fazla yerde ihtiyaç

duyulabilir. Bu gibi durumda kodu tekrar tekrar yazmaktansa fonksiyon olarak

yazılır ve istenildiği kadar kullanılır. Şekil 4.39' da kullanımı görülmektedir.

fonksiyon <fonksiyon_adı> (değişken_türü değişken_adı...)

{

// kodlar

}

Şekil 4.39. Fonksiyon tanımlama

Page 58: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

44

4.17.1. Geriye değer döndüren fonksiyonlar

Fonksiyonlar yazılış amaçlarına göre yaptığı işlemin sonucunu fonksiyonun

çağrıldığı yere gönderebilir veya fonksiyon içerisinde kendisi ilgili yerlere

bildirebilir (ekrana, dosyaya yazmak veya yazıcıdan çıktı almak gibi). gönder

anahtar kelimesi fonksiyonun sonucunu çağrıldığı yere geri gönderir. Şekil 4.40'

da geriye değer döndüren fonksiyon tanımlaması görülmektedir.

fonksiyon <fonksiyon_adı> (değişken_türü değişken_adı...)

{

// kodlar

gönder sonuç;

}

Şekil 4.40. Geriye değer döndüren fonksiyon örneği

4.17.2. Dahili fonksiyonlar

Bukalemun içerisinde uygulamalara işlevsellik kazandırabilmek için daha

önceden tanımlanmış fonksiyonlar bulunur. Bu fonksiyonlara gerekli

parametreler gönderilerek kullanılırlar. Bukalemun dilindeki dahili

fonksiyonlar Çizelge 4.12' de gösterilmiştir.

Çizelge 4.12. Bukalemun dahili fonksiyonları

Fonksiyon Anlamı

uzunluk Parametre olarak gönderilen metinsel değişken veya verilerin kaç karakterden oluştuğunu geri gönderen fonksiyondur.

rastgele Rastgele sayı üretmek için kullanılan fonksiyondur. 0 (sıfır) ile parametre olarak verilen maksimum değer arasında rastgele sayı üreterek geri gönderir

rastgeleV 0 ile 1 arasında rastgele virgüllü sayı üretmek için kullanılır

ondalık Parametre olarak verilen virgüllü sayının tam kısmını atarak virgüllü kısmını geri gönderir.

yuvarla Virgüllü sayıları yuvarlamak için kullanılır. Buçuk ve üzeri sayılar yukarı, diğer sayılar aşağı yuvarlanır.

tamsayı Virgüllü sayıların tam kısmını almak için kullanılır tarihsaat Sistemin tarih ve saatini geri gönderir

Page 59: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

45

ascii Parametre olarak gönderilen karakterin ascii kodunu geri gönderir

karakter Parametre olarak gönderilen sayının karakter karşılığını geri gönderir

metinböl Metin içerisinden istenen sayıda karakter almak için kullanılır

karekök Parametre olarak verilen sayının karekökünü alarak geri gönderir

karakteral Metin içerisinden 1 karakter almak için kullanılır

4.17.3. Tür dönüştürme fonksiyonları

Bukalemun dilinde kullanılabilen 5 temel tür vardır. Bunlar sayı, vsayı, metin,

karakter, doğruyanlış türleridir. Bu türler arasında dönüşüm atama işlemi

sırasında otomatik olarak yapılır. Ancak karşılaştırma işlemlerinde dönüşüm

işlemi otomatik olarak yapılamaz. Bu durumda tür adı yazılarak dönüştürülmek

istenilen veri parametre olarak gönderilir. Şekil 4.41' de otomatik olarak yapılan

bir tür dönüşümü örneği verilmiştir. Şekil 4.42'de ise fonksiyonla yapılan tür

dönüşüm örneği verilmiştir.

sayı a = "5";

Şekil 4.41. Otomatik olarak yapılan tür dönüşüm işlemi

sınıf fonksiyonlar { fonksiyon başla() { sayı a = 9; eğer a == sayı("9") ise yazA("1. şart doğru"); değilse yazA("1. şart yanlış"); eğer a == "9" ise yazA("2. şart doğru"); değilse yazA("2. şart yanlış"); } }

Şekil 4.42. Tür dönüşümü

Page 60: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

46

4.17.4. Form uygulamalarına özel fonksiyonlar

Bukalemun ile programlanan uygulamalarda sadece form uygulamalarında

kullanılabilen özel fonksiyonlar vardır. Çizelge 4.13'te bu fonksiyonlar

gösterilmektedir.

Çizelge 4.13. Form uygulamalarına özgü fonksiyonlar

Fonksiyon Anlamı

mesaj Parametre olarak gönderilen değişken veya verileri yorumlayıcıya özgü mesaj penceresi ile ekranda gösterir

kapat Uygulamayı sonlandırmak için kullanılan fonksiyondur

4.18. Form Uygulamaları

Bukalemun ile konsol uygulamalarının yanında görsel uygulamalarda

oluşturulabilmektedir. Hazırlanan uygulamanın form uygulaması olduğunu

derleyiciye bildirmek için yapılması gereken BFE kullanılıyorsa form

uygulaması olarak derle seçeneği seçilir, komut satırı kullanılıyorsa "-form"

parametresi göndermek gerekir. Böylece derleyici derlenen dosyanın form

yorumlayıcının tanıdığı dosya uzantısı olan ".munf" uzantısı ile oluşturur.

4.18.1. oluştur Fonksiyonu

Uygulamaya form elemanı eklemek için kullanılan fonksiyon oluştur

fonksiyonudur. Fonksiyon 5 adet parametre alarak bukalemunun tanıdığı 3

form kontrolünü oluşturabilir. Kullanımı Çizelge 4.14' te, parametreleri ise

Çizelge 4.15'te gösterilmiştir.

Çizelge 4.14. Form elemanı oluşturma

oluştur(oluşturulacak_eleman_türü, eleman_adı, x, y, başlık);

Page 61: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

47

Çizelge 4.15. Oluştur fonksiyonu parametreleri

Parametre Anlamı

oluşturulacak_eleman_türü "metinkutusu", "etiket", "düğme" değerlerini alabilen, form elemanının türünü belirleyen parametredir

eleman_adı oluşturulan elemana verilen isimdir. Elemana daha sonra ulaşmak için bu isim kullanılır

x Oluşturulan elemanın x koordinatı y Oluşturulan elemanın y koordinatı başlık Elemanın üzerinde yazan yazı

4.18.2. değiştir Fonksiyonu

Bukalemun uygulamalarında oluşturulan elemanların özelliklerini değiştirmek

için kullanılan fonksiyondur. Değiştir fonksiyonunun kullanımı Şekil 4.43' te,

parametreleri Çizelge 4.16' da, değiştirilebilecek özellikler ise Çizelge 4.17' de

gösterilmiştir.

değiştir(eleman_adı, özellik, yeni_değer);

Şekil 4.43. Değiştir fonksiyonu kullanımı

Çizelge 4.16. Değiştir fonksiyonu parametreleri

Parametre Anlamı

eleman_adı Özelliği değiştirilmek istenen elemanın adı Özellik Değiştirilmek istenen özellik yeni_değer Özelliğe atanacak yeni değer

Çizelge 4.17. Form kontrollerinde kullanılabilen özellikler

Özellik Tip Açıklama

x sayı Elemanın x koordinatını değiştirmek için kullanılır.

y sayı Elemanın y koordinatını değiştirmek için kullanılır.

yazı metin Eleman üzerinde yazan yazıyı değiştirmek için kullanılır.

tıklamaolayı metin Düğmeler için tıklanınca çalışacak olan

fonksiyonu belirlemek için kullanılır. genişlik sayı Elemanın genişliğini değiştirmek için kullanılır.

Page 62: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

48

yükseklik sayı Elemanın yüksekliğini değiştirmek için

kullanılır.

yazıboyutu sayı Elemanın yazı boyutunu değiştirmek için

kullanılır.

4.18.3. özellik Fonksiyonu

Bukalemun uygulamalarında oluşturulan elemanların özelliklerini almak için

kullanılan fonksiyondur. Çizelge 4.17' de gösterilen özellikler için özelliğin

tipinde bir değişken tanımlanarak bu değişkene değerler atanabilir. Kullanımı

Şekil 4.44'te gösterilmiştir.

özellik_tipi değişken_adı = özellik(eleman_adı, özellik_adı);

Şekil 4.44. Özellik fonksiyonu kullanımı

Page 63: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

49

5. ARAŞTIRMA BULGULARI

Bukalemun dili değişkenleri, operatörleri, deyimleri ve fonksiyonlarıyla

uygulama yazmaya hazır bir dildir. C# dili ile yazılan Bukalemun Framework

Editör ile kodlar hazırlanır ve Delphi dili ile yazılan derleyiciye gönderilir.

Derleyici yaptığı analizler sonucunda hata yoksa uzantısı konsol uyguları için

".mun", form uygulamaları için ise ".munf" olan çıktı dosyasını oluşturur.

Oluşturulan dosya istenilen platformlara taşınarak yorumlayıcılar tarafından

yorumlanarak kodların sonuçları ekranda gösterilir. Bukalemun dili kullanılarak

oluşturulan örnek uygulamaların kodları ve ekran görüntülerini bu bölümdedir.

5.1. Cümle Analizi

Bir metin kutusu, iki etiket ve bir düğme ile oluşturulan uygulamada, metin

kutusuna girilen cümledeki kelimeler analiz edilerek küçük harfle başlayan bir

kelime ise ilk harflerini büyük harfe çeviren program. Programın kodları EK - 1

de verilmiştir. Şekil 5.1' de uygulamanın windows ortamındaki ekran

görüntüsü, Şekil 5.2' de ise IOS ve Android ortamlarındaki ekran görüntüleri

verilmiştir.

Şekil 5.1. Cümle analizi örneği için windows form ekran görüntüsü

Page 64: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 5.2. Cümle analizi örneğinin Android ve IOS için ekran görüntüsü

50

Cümle analizi örneğinin Android ve IOS için ekran görüntüsü

Cümle analizi örneğinin Android ve IOS için ekran görüntüsü

Page 65: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

5.2. İstenilen Aralıkta Rastgele Sayı Üreten Program

Bu uygulama ile istenilen aralıkta rastgele sayı üretilir.

alt ve üst sınır değerlerine göre

belirlenir. Programın kodları EK

windows ortamındaki

ortamlarındaki ekran

Şekil 5.3. Rastgele sayı üreten programın windows ekran görüntüsü

51

İstenilen Aralıkta Rastgele Sayı Üreten Program

Bu uygulama ile istenilen aralıkta rastgele sayı üretilir. Metin

alt ve üst sınır değerlerine göre üretilecek sayının hangi aralıkta olacağı

Programın kodları EK - 2 de verilmiştir. Şekil 5.3

windows ortamındaki ekran görüntüsü, Şekil 5.4' te ise

ortamlarındaki ekran görüntüleri verilmiştir.

astgele sayı üreten programın windows ekran görüntüsü

Metin kutularına girilen

üretilecek sayının hangi aralıkta olacağı

Şekil 5.3' te uygulamanın

e ise IOS ve Android

astgele sayı üreten programın windows ekran görüntüsü

Page 66: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 5.4. Rastgele sayı üreten programın Android ve IOS

görüntüleri

52

astgele sayı üreten programın Android ve IOS ortamlarındaki

leri

ortamlarındaki ekran

Page 67: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

5.3. Girilen Sayıyı Üçerli Ayırarak Yazan Program

Metinkutusuna girilen sayıyı 3'erli ayırarak

Programın kodları EK

ortamındaki ekran görüntüsü

ekran görüntüleri verilmiştir

Şekil 5.5. Sayıyı üçerli ayırarak yazan program windows ekran görüntüsü

53

. Girilen Sayıyı Üçerli Ayırarak Yazan Program

Metinkutusuna girilen sayıyı 3'erli ayırarak para birimi şeklinde

Programın kodları EK - 3'te verilmiştir. Şekil 5.5'te uygulamanın windows

ekran görüntüsü, Şekil 5.6'da ise IOS ve Android

verilmiştir.

ayıyı üçerli ayırarak yazan program windows ekran görüntüsü

para birimi şeklinde yazan program.

uygulamanın windows

ise IOS ve Android ortamlarındaki

ayıyı üçerli ayırarak yazan program windows ekran görüntüsü

Page 68: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 5.6. Girilen sayıyı para

Android ve IOS ekran görüntüleri

54

Girilen sayıyı para birimine çevirerek 3'erli ayıran program için

Android ve IOS ekran görüntüleri

birimine çevirerek 3'erli ayıran program için

Page 69: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

55

5.4. Sayı Tahmin Oyunu

Yeni oyuna basıldıktan sonra program 1 ile 100 arasında rastgele bir sayı tutar

ve kullanıcıyı yönlendirerek bu sayıyı bulmasını sağlar. Programın kodları EK -

4'te verilmiştir. Şekil 5.7'de uygulamanın windows ortamındaki ekran

görüntüsü, Şekil 5.8'de ise IOS ve Android ortamlarındaki ekran görüntüleri

verilmiştir.

Şekil 5.7. Sayı tahmin oyunu windows ekran görüntüsü

Page 70: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 5.8. Sayı tahmin oyunu Android ve IOS ekran görüntüsü

56

Sayı tahmin oyunu Android ve IOS ekran görüntüsü

Sayı tahmin oyunu Android ve IOS ekran görüntüsü

Page 71: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

5.5. Sayısal Loto Programı

Her tahmin et düğmesine tıklandığında 6 adet 1 ile 49 arasında rastgele sayıyı

ekrana yazan program.

uygulamanın windows ortamındaki

Android ortamlarındaki ekran görüntüleri

Şekil 5.9.

57

. Sayısal Loto Programı

Her tahmin et düğmesine tıklandığında 6 adet 1 ile 49 arasında rastgele sayıyı

ekrana yazan program. Programın kodları EK - 5'te verilmiştir.

uygulamanın windows ortamındaki ekran görüntüsü, Şekil 5.10

ortamlarındaki ekran görüntüleri verilmiştir.

. Sayısal loto programı windows ekran görüntüsü

Her tahmin et düğmesine tıklandığında 6 adet 1 ile 49 arasında rastgele sayıyı

5'te verilmiştir. Şekil 5.9'da

Şekil 5.10'da ise IOS ve

ekran görüntüsü

Page 72: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 5.10. Sayısal loto programı Android ve IOS ekran görüntüleri

58

Sayısal loto programı Android ve IOS ekran görüntüleri

Sayısal loto programı Android ve IOS ekran görüntüleri

Page 73: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

5.6. XOX Oyunu

2 oyuncu ile oynanan XOX oyununda her oyuncu 9 adet düğmeden birine

tıklayarak yatayda dikeyde veya çaprazda kendine

getirerek oyunu kazanır.

uygulamanın windows ortamındaki

Android ortamlarındaki ekran görüntüleri

Şekil 5.

59

2 oyuncu ile oynanan XOX oyununda her oyuncu 9 adet düğmeden birine

tıklayarak yatayda dikeyde veya çaprazda kendine ait simgeleri yan yana

getirerek oyunu kazanır. Programın kodları EK - 6'da verilmiştir.

uygulamanın windows ortamındaki ekran görüntüsü, Şekil 5.12

d ortamlarındaki ekran görüntüleri verilmiştir.

Şekil 5.11. XOX oyunu windows ekran görüntüsü

2 oyuncu ile oynanan XOX oyununda her oyuncu 9 adet düğmeden birine

ait simgeleri yan yana

6'da verilmiştir. Şekil 5.11'de

Şekil 5.12'de ise IOS ve

XOX oyunu windows ekran görüntüsü

Page 74: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 5.12

60

12. XOX oyunu Android ve IOS ekran görüntüleri

u Android ve IOS ekran görüntüleri

Page 75: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

5.7. Hesap Makinesi

Form uygulaması olarak oluşturulan hesap makinesinde toplama, çıkarma,

çarpma, bölme, mod ve üs alma

7'de verilmiştir. Şekil 5.13

görüntüsü, Şekil 5.14

verilmiştir.

Şekil 5.13. Hesap makinesi programı için windows ekran görüntüsü

61

. Hesap Makinesi

Form uygulaması olarak oluşturulan hesap makinesinde toplama, çıkarma,

çarpma, bölme, mod ve üs alma işlemleri yapılabiliyor. Programın kodları EK

Şekil 5.13'te uygulamanın windows ortamındaki

Şekil 5.14'te ise IOS ve Android ortamlarındaki ekran görüntüleri

Hesap makinesi programı için windows ekran görüntüsü

Form uygulaması olarak oluşturulan hesap makinesinde toplama, çıkarma,

Programın kodları EK -

uygulamanın windows ortamındaki ekran

ortamlarındaki ekran görüntüleri

Hesap makinesi programı için windows ekran görüntüsü

Page 76: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

Şekil 5.14. Hesap makinesi programı için Android ve IOS ekran

62

Hesap makinesi programı için Android ve IOS ekran

Hesap makinesi programı için Android ve IOS ekran görüntüsü

Page 77: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

63

6. SONUÇ VE ÖNERİLER

Programlama öğrenilmesi zorlu bir süreçtir. Bu süreçte öğrenilen dilin anahtar

kelimelerinin anlamlarını ve yazım kurallarını bilmek gerekir. Bu da

programlama mantığının yanında bazı parametrelerinde öğrenilmesini zorunlu

kılar. Bu çalışmada ise oluşturulan dil tamamen Türkçe anahtar kelimelerden

oluşur ve kodlaması Türkçe dilbilgisi yapısına uygundur. Bundan dolayı

programlama mantığını anlamaya çalışanlara başlangıç seviyesinde faydalı

olacaktır. Aynı zamanda herkesin programlama ihtiyacı farklı platformda

olabilir. Bir kişi IOS için kod yazmak isterken bir başkası Android için kod

yazmak isteyebilir. Bu dil herkesin ihtiyacına cevap verebilecek yapıdadır.

Platform bağımsız olması sebebiyle yazılan kodlar IOS, Android ve Windows

platformlarında çalıştırılabilir.

Programcı Bukalemun Editör ile kodlarını yazar. Windows Konsol veya form

uygulaması olarak derleme işlemini yapar. Derleyici kodları analiz eder. Eğer

hata varsa hatanın oluğu satır numarası ve hatanın ne olduğu programcıya

bildirilir ve derleme işlemi durdurulur. Hata yoksa analiz edilen kodlara göre bir

çıktı oluşturulur. Oluşturulan bu dosya Windows, IOS ve Android cihazlarda

yorumlanarak çalıştırılabilir.

İleride yapılacak olan çalışmalarda daha fazla kütüphane ve görsel eleman

oluşturulabilir. Böylece yazılan uygulamalar görsellik olarak daha iyi

seviyelerde olacaktır. Platform bağımsızlığı olarak farklı platformlara da

yorumlayıcılar yazılarak çalıştırılan platform sayısı arttırılabilir.

Sonuç olarak herhangi bir platform için yazılan uygulamaların diğer

platformlarda çalışabilmesi için ekstra zaman ve maliyete gereksinim vardır. Bu

gibi durumlarda platform bağımsız uygulamalar ile hazırlanan yazılımlar bir

defa yazılır ve diğer platformlarda çalıştırılır. Böylece hem zaman hem de

maliyet yönünden yapılacak zarar önlenmiş olur. Bu çalışmanın platform

bağımsız uygulamalara ışık tutması beklenmektedir.

Page 78: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

64

KAYNAKLAR

Andrade, P., R., M., Albuquerque, A., B., 2015. Cross Platform App A Comparative

Study. International Journal of Computer Science & Information Technology, February 2015

Atasoy, H., 2011. Shunting Yard Algoritması. Erişim Tarihi: 12.11.2015 http://www.atasoyweb.net/Shunting-Yard-Algoritmasi Bilgiler Sitesi, 2012. Bilişim Teknolojisi Hangi Alanları Kapsar, Kapsadığı Alanlar

Nelerdir. Erişim Tarihi: 03.01.2016. http://www.bilgilersitesi.com/bilisim-teknolojisi-hangi-alanlari-kapsar-kapsadigi-alanlar-nelerdir-ornekler.html

Bouras, C., Papazois, A., Stasinos, N., 2014. A Framework for Cross-platform

Mobile Web Applications Using HTML5. International Conference on Future Internet of Things and Cloud

Ersoy, H., Madran R. O., Gülbahar Y., 2011. Programlama Dilleri Öğretimine Bir

Model Önerisi: Robot Programlama. Başkent Üniversitesi, Akademik Bilişim Konferansı Bildirileri, 731-736.

Eğitim Takvimi, 2016. Native, Mobil veya Hibrid: Mobil Uygulama Geliştirme

Teknolojisi Seçerken Nelere Dikkat Etmeliyiz? Erişim Tarihi: 03.01.2016. https://www.egitimtakvimi.com/EgitimTakvimi/Makale/12/Native-Mobil-veya-Hibrid-Mobil-Uygulama-Gelistirme-Teknolojisi-Secerken-Nelere-Dikkat-Etmeliyiz

Guangtai, L., Wang, J., Li, S., Chang, R., 2014. A Pattern-Based Bug Detector for

Cross-Platform Mobile Applications. IEEE International Conferenceon Mobile Services.

Hermansson, C., S¨oderstr¨om, M., Johansson, D., 2014. Developing useful mobile

applications in cross media platforms. Eighth International Conference on Innovative Mobile and Internet Services in Ubiquitous Computing.

JQuery Mobile, 2015. JQuery Mobile Hakkında. Erişim Tarihi: 30.12.2015.

https://jquerymobile.com/about/ Karlı, G., 2014. Cross-Platform Mobıle Development. Dokuz Eylül Üniversitesi,

Yüksek Lisans Tezi, 70s, İzmir. Kılıçaslan, Y., 2006a. Lexical Analysis. Erişim Tarihi: 25.10.2015

http://yilmazkilicaslan.trakya.edu.tr/teaching/lexical_analysis.ppt Kılıçaslan, Y., 2006b. Syntax Analysis. Erişim Tarihi: 30.10.2015

http://yilmazkilicaslan.trakya.edu.tr/teaching/syntax_analysis.ppt

Page 79: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

65

Küçük, F., 2008. Özelleştirilebilir İmlaya Sahip Yeni Ve EsnekNesne Tabanlı Bir Programlama Dili Geliştirme. Düzce Üniversitesi, Fen Bilimleri Enstitüsü, Yüksek Lisans Tezi, 179s, Düzce.

Nivedha, R., Dhipikaasri, D., Sunilkumar, C., Vasudevan, S., Karthikeyan, P., 2014.

A Mobile App in Cross Platform: G3 - Gain Grip for GRE. IEEE Sixth International Conference on Technology for Education

Özözer, Ö., Y., Rakıcı, G., A., 2010. Bilim ve Teknoloji. Palmieri, M., 2012, Comparison of cross-platform mobile development tools. Erişim Tarihi: 02.11.2015

http://ieeexplore.ieee.org/xpl/articleDetails.jsp?tp=&arnumber=6376023&url=http%3A%2F%2Fieeexplore.ieee.org%2Fxpls%2Fabs_all.jsp%3Farnumber%3D6376023

Rhomobile, 2015. Rhomobile Hakkında. Erişim Tarihi:30.12.2015.

http://rhomobile.com/ Ribeiro, A., Silva, A., R., 2012. Survey on Cross-Platforms and Languages for

Mobile Apps. Şeker, Ş., E., 2008a. Derleyici (compiler). Erişim Tarihi: 25.10.2015

http://bilgisayarkavramlari.sadievrenseker.com/2008/01/03/derleyici-compiler/

Şeker, Ş., E., 2008b. Lex. Erişim Tarihi: 25.10.2015

http://www.bilgisayarkavramlari.com/2008/12/12/lex/ Wafaa, S., K., Bassem, A., A., Ahmed, H., Y., Ayman, M., W., 2015. Taxonomy of

Cross-Platform Mobile Applications Development Approaches. Ain Shams University, Ain Shams Engineering Journal.

Wahyu, Y., Suhardi, 2014. Detecting Plagiarism in Cross-Platform Mobile

Applications. International Conference on Information Technology Systems and Innovation

Wikipedia, 2014. Derleyici. Erişim Tarihi: 24.10.2015 https://tr.wikipedia.org/wiki/Derleyici Wikipedia, 2015. Programlama Dili. Erişim Tarihi: 24.10.2015.

https://tr.wikipedia.org/wiki/Programlama_dili Wikipedia, 2015. Yorumlanan programlama dili. Erişim Tarihi:

02.11.2015https://tr.wikipedia.org/wiki/Yorumlanan_programlama_dili Wikipedia, 2013. Bilgisayar platformu. Erişim Tarihi: 02.11.2015

https://tr.wikipedia.org/wiki/Bilgisayar_platformu

Page 80: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

66

Wikipedia, 2014. MoSync. Erişim Tarihi: 03.11.2015 https://en.wikipedia.org/wiki/MoSync

Wikipedia, 2015. RhoMobile Suite. Erişim Tarihi: 03.11.2015.

https://en.wikipedia.org/wiki/RhoMobile_Suite Varlık, H., 2014. PhoneGap Nedir, Yenir Mi? Erişim Tarihi: 02.11.2015.

https://gelecegiyazanlar.turkcell.com.tr/blog/phonegap-nedir-yenir-mi Zengin, E., 2010. Derleyicilerin Yapısı. Erişim Tarihi: 25.10.2015.

http://www.bilisimdergi.com/Derleyicilerin-Yapisi-14-9.html

Page 81: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

67

ÖZGEÇMİŞ

Adı Soyadı :İbrahim KURU Doğum Yeri ve Yılı : Antalya, 1984 Medeni Hali : Evli Yabancı Dili : İngilizce E-posta : [email protected] Eğitim Durumu Lise : Antalya Teknik Lisesi, 2003 Lisans : SDÜ, Teknik Eğitim Fakültesi, Bilgisayar Sistemleri

Öğretmenliği Mesleki Deneyim Milli Eğitim Bakanlığı 2011-……. (Halen)

Page 82: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

68

EK 1 - Cümle Analizi Programı Kodları

sınıf cümleanalizi

{

fonksiyon başla()

{

sayı y = 40;

oluştur("etiket", "e1", 10, y, "Bir Metin Giriniz");

y = özellik("e1", "y") + özellik("e1", "yükseklik") + 5;

oluştur("metinkutusu", "m1", 10, y, "");

y = özellik("m1", "y") + özellik("m1", "yükseklik") + 5;

değiştir("m1", "genişlik", 200);

oluştur("düğme", "d1", 10, y, "Analiz");

değiştir("d1","tıklamaolayı", "analiz");

y = özellik("d1", "y") + özellik("d1", "yükseklik") + 5;

oluştur("etiket", "e2", 10, y, "");

y = özellik("e2", "y") + özellik("e2", "yükseklik") + 5;

}

fonksiyon analiz(metin e)

{

metin veri = özellik("m1", "yazı");

metin sonuç = "";

sayı u = uzunluk(veri);

doğruyanlış boşluk = doğru;

say (sayı i:0..u)

{

karakter k = karakteral(veri, i);

sayı a = ascii(k);

Page 83: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

69

eğer a >= 97 ve a <= 122 ve boşluk ise

a -= 32;

sonuç += karakter(a);

eğer a == 32 ise

boşluk = doğru;

değilse boşluk = yanlış;

}

değiştir("e2", "yazı", sonuç);

}

}

Page 84: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

70

EK 2 - Rastgele Sayı Üreten Program Kodları

sınıf rastgeleSayı

{

fonksiyon başla()

{

elemanlarıekle();

}

fonksiyon elemanlarıekle()

{

oluştur("etiket", "e0", 10, 15, "Rastgele Sayı

Programı");

değiştir("e0", "yazıboyutu", 20);

sayı y = 50;

oluştur("etiket", "e1", 10, y, "Alt Sınır");

y = özellik("e1", "y") + özellik("e1", "yükseklik")

+ 5;

oluştur("metinkutusu", "m1", 10, y, "");

y = özellik("m1", "y") + özellik("m1", "yükseklik")

+ 5;

oluştur("etiket", "e2", 10, y, "Üst Sınır");

y = özellik("e2", "y") + özellik("e2", "yükseklik")

+ 5;

oluştur("metinkutusu", "m2", 10, y, "");

y = özellik("m2", "y") + özellik("m2", "yükseklik")

+ 5;

oluştur("düğme", "d1", 10, y, "Rastgele Sayı");

y = özellik("d1", "y") + özellik("d1", "yükseklik")

+ 5;

oluştur("etiket", "e3", 10, y, "--");

y = özellik("e3", "y") + özellik("e3", "yükseklik")

+ 5;

değiştir("d1", "tıklamaolayı", "sayıbul");

değiştir("e3", "yazıboyutu", 25);

}

fonksiyon sayıbul(metin e)

{

Page 85: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

71

eğer özellik("m1", "yazı") == "" veya özellik("m2",

"yazı") == "" ise

mesaj("Alt sınır ve üst sınır değerlerini

giriniz.");

değilse

{

sayı alt = özellik("m1", "yazı");

sayı üst = özellik("m2", "yazı");

üst++;

sayı r = rastgele(üst - alt) + alt;

değiştir("e3", "yazı", metin(r));

}

}

}

Page 86: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

72

EK 3 - Girilen Parayı 3'er Ayırarak Yazan Program Kodları

sınıf paraayır

{

fonksiyon başla()

{

sayı y = 30;

oluştur("etiket", "e1", 10, y, "Para Miktarını

Giriniz");

y = özellik("e1", "y") + özellik("e1", "yükseklik")

+ 30;

oluştur("metinkutusu", "m1", 10, y, "");

y = özellik("m1", "y") + özellik("m1", "yükseklik")

+ 5;

oluştur("düğme", "d1", 10, y, "Çevir");

değiştir("d1","tıklamaolayı", "çevir");

y = özellik("d1", "y") + özellik("d1", "yükseklik")

+ 5;

oluştur("etiket", "e2", 10, y, "---");

y = özellik("e2", "y") + özellik("e2", "yükseklik")

+ 5;

değiştir("e1", "yazıboyutu", 26);

}

fonksiyon çevir(metin e)

{

metin m = özellik("m1", "yazı");

eğer m == "" ise

{

mesaj("Para miktarını giriniz..");

gönder;

}

değilse

{

sayı s = uzunluk(m) - 1;

metin sonuc = "";

sayı kontrol = 0;

say (sayı x: s...0, -1)

{

kontrol++;

eğer kontrol % 3 == 0 ise

Page 87: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

73

sonuc = "." + karakteral(m, x) +

sonuc;

değilse

sonuc = karakteral(m, x) + sonuc;

}

eğer karakteral(sonuc,0) == '.' ise

sonuc = metinböl(sonuc, 1);

değiştir("e2", "yazı", sonuc + " TL");

}

}

}

Page 88: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

74

EK 4 - Sayı Tahmin Oyunu Kodları

sınıf oyun

{

sayı tutulan;

sayı denemesayısı;

doğruyanlış oyunbaşladı;

fonksiyon başla()

{

ilkayarlar();

yenioyun("");

}

fonksiyon ilkayarlar()

{

sayı y = 50;

oluştur("düğme", "d1", 10, y, "Yeni Oyun");

değiştir("d1","tıklamaolayı", "yenioyun");

y = özellik("d1", "y") + özellik("d1", "yükseklik")

+ 5;

oluştur("etiket", "eBilgi", 10, y, "Tahmininizi

giriniz!");

y = özellik("eBilgi", "y") + özellik("eBilgi",

"yükseklik") + 5;

oluştur("metinkutusu", "mTahmin", 10, y, "");

y = özellik("mTahmin", "y") + özellik("mTahmin",

"yükseklik") + 5;

oluştur("düğme", "d2", 10, y, "Tahmin Et");

değiştir("d2","tıklamaolayı", "tahminet");

y = özellik("d2", "y") + özellik("d2", "yükseklik")

+ 5;

oluştur("etiket", "eSonuç", 10, y, "");

y = özellik("eSonuç", "y") + özellik("eSonuç",

"yükseklik") + 5;

}

fonksiyon yenioyun(metin e)

{

değiştir("eSonuç", "yazı", "Yeni oyun başladı.");

tutulan = rastgele(100) + 1;

denemesayısı = 0;

oyunbaşladı = doğru ;

}

Page 89: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

75

fonksiyon tahminet(metin e)

{

eğer !oyunbaşladı ise

{

değiştir("eSonuç", "yazı", "Oynamak için yeni

oyuna basınız.");

gönder ;

}

eğer özellik("mTahmin", "yazı") == "" ise

{

mesaj("Tahminizi giriniz.");

gönder ;

}

sayı yazılan = özellik("mTahmin", "yazı");

denemesayısı++;

eğer tutulan < yazılan ise

{

değiştir("eSonuç", "yazı", "Daha küçük bir

sayı giriniz.");

}

değilse eğer tutulan > yazılan ise

{

değiştir("eSonuç", "yazı", "Daha büyük bir

sayı giriniz.");

}

değilse

{

metin m = "Tebrikler " + denemesayısı + "

denemede buldunuz.";

değiştir("mSonuç", "yazı", m);

mesaj(m);

oyunbaşladı = yanlış ;

}

}

}

Page 90: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

76

EK 5 - Sayısal Loto Kodları

sınıf sayısalloto

{

fonksiyon başla()

{

elemanlarıekle();

}

fonksiyon elemanlarıekle()

{

sayı y = 20;

oluştur("etiket", "e1", 10, y, "Sayısal Loto");

y = özellik("e1", "y") + özellik("e1", "yükseklik")

+ 5;

oluştur("düğme", "d1", 10, y, "Yeni Tahmin");

değiştir("d1","tıklamaolayı", "tahminet");

y = özellik("d1", "y") + özellik("d1", "yükseklik")

+ 5;

ust = y;

}

sayı ust;

sayı adet = 1;

fonksiyon tahminet(metin e)

{

oluştur("etiket", "sonuc" + adet, 10, ust, "---");

ust = özellik("sonuc" + adet, "y") +

özellik("sonuc" + adet, "yükseklik") + 5;

metin m = "";

say (sayı a:1...6)

{

sayı s = rastgele(49) + 1;

m += " " + s;

}

değiştir("sonuc" + adet, "yazı", m);

Page 91: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

77

adet++;

}

}

Page 92: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

78

EK 6 - XOX Oyunu Kodları

sınıf xox

{

doğruyanlış birincioyuncu;

sayı hamle;

doğruyanlış oyunbitti;

metin bos = "_";

fonksiyon başla()

{

değiştir("form", "yazı", "XOX");

elemanolustur();

birincioyuncu = hayır;

hamle = 9;

oyunbitti = yanlış;

}

fonksiyon elemanolustur()

{

sayı x,y;

x = 10;

y = 30;

sayı genişlik, yükseklik, etiketmesafesi, btn_yazı,

btn_yeni_genişlik;

genişlik = özellik("form", "genişlik") - 40;

genişlik = genişlik / 3;

yükseklik = genişlik;

eğer platform == "ios" ise

{

etiketmesafesi = 15;

btn_yazı = 20;

btn_yeni_genişlik = 190;

}

değilseeğer platform == "win form" ise

{

genişlik = 60;

yükseklik = 60;

etiketmesafesi = 20;

btn_yazı = 20;

Page 93: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

79

btn_yeni_genişlik = 190;

}

değilseeğer platform == "android" ise

{

genişlik = 110;

yükseklik = 110;

etiketmesafesi = 30;

btn_yazı = 30;

btn_yeni_genişlik = 350;

}

say (sayı a:1...3)

{

say(sayı b:1...3)

{

metin eleman;

eleman = "d" + a + b;

oluştur("düğme", eleman, x, y, bos);

değiştir(eleman, "genişlik", genişlik);

değiştir(eleman, "yükseklik",

yükseklik);

değiştir(eleman, "yazıboyutu",

btn_yazı);

değiştir(eleman, "tıklamaolayı",

"tıkla");

x += genişlik + 5;

}

y += yükseklik + 5;

x = 10;

}

değiştir("form", "genişlik", 230);

değiştir("form", "yükseklik", 350);

oluştur("etiket", "lblSıra", 20, y, "Sıra: 1.

oyuncuda");

değiştir("lblSıra","yazıboyutu", 14);

y += etiketmesafesi + 10;

oluştur("düğme", "btnYeniOyun", 10, y, "Yeni

Oyun");

Page 94: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

80

değiştir("btnYeniOyun", "genişlik",

btn_yeni_genişlik);

değiştir("btnYeniOyun", "yükseklik", 45);

değiştir("btnYeniOyun", "yazıboyutu", 14);

değiştir("btnYeniOyun", "tıklamaolayı",

"yenioyun");

}

fonksiyon yenioyun(metin elemanadi)

{

değiştir("d11", "yazı", bos);

değiştir("d12", "yazı", bos);

değiştir("d13", "yazı", bos);

değiştir("d21", "yazı", bos);

değiştir("d22", "yazı", bos);

değiştir("d23", "yazı", bos);

değiştir("d31", "yazı", bos);

değiştir("d32", "yazı", bos);

değiştir("d33", "yazı", bos);

değiştir("lblSıra", "yazı", "Sıra: 1. oyuncuda");

birincioyuncu = hayır;

hamle = 9;

oyunbitti = hayır;

}

fonksiyon kontrol()

{

say (sayı satir:1...3)

{

metin okunan1 = "";

metin okunan2 = "";

say (sayı sutun: 1...3)

{

metin e1 = "d" + satir + sutun;

metin e2 = "d" + sutun + satir;

okunan1 += özellik(e1, "yazı");

okunan2 += özellik(e2, "yazı");

}

Page 95: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

81

eğer okunan1 == "OOO" veya okunan1 == "XXX"

ise

{

mesaj(metinböl(okunan1,0,1) , "

kazandı.");

oyunbitti = evet;

}

eğer okunan2 == "OOO" veya okunan2 == "XXX"

ise

{

mesaj(metinböl(okunan2,0,1), "

kazandı.");

oyunbitti = evet;

}

}

metin okunan3 = ""; //çapraz kontrol

okunan3 = özellik("d11", "yazı") + özellik("d22",

"yazı") +

özellik("d33", "yazı");

metin okunan4 = "";

okunan4 = özellik("d13", "yazı") + özellik("d22",

"yazı") +

özellik("d31", "yazı");

eğer okunan3 == "OOO" veya okunan3 == "XXX" ise

{

mesaj(metinböl(okunan3,0,1), " kazandı.");

oyunbitti = evet;

}

eğer okunan4 == "OOO" veya okunan4 == "XXX" ise

{

mesaj(metinböl(okunan4,0,1), " kazandı.");

oyunbitti = evet;

}

eğer oyunbitti== hayır ve hamle==0 ise

{

oyunbitti = evet;

mesaj("kimse kazanamadı.");

}

Page 96: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

82

eğer oyunbitti ise

değiştir("lblSıra", "yazı", "");

}

fonksiyon tıkla(metin elemanadi)

{

eğer oyunbitti == yanlışise

eğer özellik(elemanadi, "yazı") == bos ise

{

metin işaret = "O";

eğer !birincioyuncu ise

{

işaret = "X";

değiştir("lblSıra", "yazı", "Sıra:

2. oyuncuda");

}

değilse

{

değiştir("lblSıra", "yazı", "Sıra:

1. oyuncuda");

}

birincioyuncu = !birincioyuncu;

değiştir(elemanadi, "yazı", işaret);

hamle--;

kontrol();

}

}

}

Page 97: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

83

EK 7 - Bukalemun Hesap Makinesi Programı Kodları

sınıf winform

{

sayı yatay, dikey;

sayı btnGenişlik;

vsayı sayı1, sayı2;

fonksiyon başla()

{

eğer platform == "android" ise

{

yatay = 65;

dikey = 50;

btnGenişlik = 70;

}

değilseeğer platform == "ios" ise

{

yatay = 50;

dikey = 50;

btnGenişlik = 45;

}

değilse

{

yatay = 55;

dikey = 30;

btnGenişlik = 53;

}

ilklemeler();

}

fonksiyon ilklemeler()

{

sayı x = 30, y = 50;

oluştur("etiket", "lbl0", 30, 15, "Bukalemun Hesap

Makinesi");

değiştir("lbl0", "yazıboyutu", 20);

oluştur("etiket", "lbl1", x, y, "1. Sayı");

oluştur("etiket", "lbl2", x, y + dikey, "2. Sayı");

Page 98: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

84

oluştur("etiket", "lbl3", x, y + dikey * 2,

"Sonuç");

oluştur("metinkutusu", "txt1", x + yatay, y, "10");

oluştur("metinkutusu", "txt2", x + yatay, y +

dikey, "3");

oluştur("etiket", "lblSonuç", x + yatay, y + dikey

* 2 - 5, "0");

y += dikey * 3;

oluştur("düğme", "btn1", x + yatay * 0, y,

"Topla");

oluştur("düğme", "btn2", x + yatay * 1, y,

"Çıkar");

oluştur("düğme", "btn3", x + yatay * 2, y, "Çarp");

oluştur("düğme", "btn4", x + yatay * 3, y, "Böl");

oluştur("düğme", "btn5", x + yatay * 4, y, "Mod");

oluştur("düğme", "btn6", x + yatay * 5, y, "Üssü");

y += dikey + 10;

oluştur("etiket", "lblProgramcı", x, y, "İbrahim

KURU");

değiştir("lbl1", "yazıboyutu", 14);

değiştir("lbl2", "yazıboyutu", 14);

değiştir("lbl3", "yazıboyutu", 14);

değiştir("lblSonuç", "yazıboyutu", 18);

değiştir("txt1", "genişlik", 150);

değiştir("txt2", "genişlik", 150);

değiştir("lblSonuç", "genişlik", 350);

değiştir("btn1", "tıklamaolayı", "topla");

değiştir("btn2", "tıklamaolayı", "çıkar");

değiştir("btn3", "tıklamaolayı", "çarp");

değiştir("btn4", "tıklamaolayı", "böl");

değiştir("btn5", "tıklamaolayı", "mod");

değiştir("btn6", "tıklamaolayı", "üssü");

say(sayı i:1...6)

{

Page 99: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

85

metin elemanadı = "btn" + i;

değiştir(elemanadı, "genişlik",

btnGenişlik);

}

değiştir("form", "genişlik", 400);

değiştir("form", "yükseklik", 250);

değiştir("form", "yazı", "Bukalemun Hesap

Makinesi");

}

fonksiyon sayılarıal()

{

sayı1 = özellik("txt1", "yazı");

sayı2 = özellik("txt2", "yazı");

}

fonksiyon topla(metin elemanadi)

{

sayılarıal();

metin c = sayı1 + sayı2;

değiştir("lblSonuç","yazı",c);

}

fonksiyon çıkar(metin elemanadi)

{

sayılarıal();

metin c = sayı1 - sayı2;

değiştir("lblSonuç","yazı",c);

}

fonksiyon çarp(metin elemanadi)

{

sayılarıal();

metin c = sayı1 * sayı2;

değiştir("lblSonuç","yazı",c);

}

fonksiyon böl(metin elemanadi)

{

Page 100: MOBİL CİHAZLAR İÇİN HER ORTAMA UYUMLU TÜRKÇE …

86

sayılarıal();

metin c = sayı1 / sayı2;

değiştir("lblSonuç","yazı",c);

}

fonksiyon mod(metin elemanadi)

{

sayılarıal();

sayı s1 = sayı1;

sayı s2 = sayı2;

metin c = s1 % s2;

değiştir("lblSonuç","yazı",c);

}

fonksiyon üssü(metin elemanadi)

{

sayılarıal();

sayı u;

u=sayı2;

metin c = sayı1 ** u;

değiştir("lblSonuç","yazı",c);

}

}