Android Programlama

Bu konuyu okuyanlar

kmurat

Dekan
Katılım
8 Şubat 2014
Mesajlar
8,488
Çözümler
3
Reaksiyon puanı
3,711
Puanları
113
Android Programlama

Bu konuda nasıl Android için program geliştirilebileceğini değil, Android cihazınızda (Telefon'da veya Tablet'te) nasıl kendi programlarınızı geliştirebileceğinizi anlatacağım.

Artık ben de Dünya'daki gelişmelere uydum, ve cep telefonumu değiştirdim. Denediğim ilk iş olarak ta, Android'in ne derecede programlanabilir oluğunu sınamak.

Bunu yapabilmek için iki şeye ihtiyacımız var. Birincisi, Basic programlama bilgisi. İkincisi ise, bu bilginin Android'e nasıl uyarlanabileceğini bilmek.

İlk olarak Google play'den Mobile Basic for Android (kısaltılmış olarak "Mobile Basic") uygulamasını indirmek.
Mobile BASIC - Google Play'de Android Uygulamaları

Mobile Basic'i uygulamalar arasından bulup çalıştıralım ve ilk denemelerimizi yapalım. İlk olarak üstte gördüğümüz panel'den, "Memory card" seçerek kişisel verilerimizin bulunduğu disk alanına girelim ve paneli sola kaydırarak "Create folder" seçeneğini bulalım ve seçelim. Bizden bir isim girmemiz istenecek. İsim olarak "Mobile Basic" yazalım ve kayıt edelim. Şimdi "Mobile Basic" isimli ve kişisel çalımalarımızı saklayabileceğimiz bir klasörümüz var.

"Mobile Basic" isimli klasörümüzü açalım ve panelden "Create file" seçelim. Ve yine bir isim girelim. isim olarak "denem1" yazabilirir. Şimd "Mobile Basic" isimli yeni klasörümüzün içinde "deneme1" adında bir yeni dosyamız oldu.

"deneme1" dosyasını açalım ve ilk kodlarımızı yazalım. Mobile Basic kodları, Masaüstünden bildiğimiz Basic kodlarından farklı olarak, kalıplar şeklinde yazılırlar ve satır numaraları kullanılmaz.


SUB MAIN
PRINT "Merhaba SDNForum"
END SUB


Yukarıda gördüğümüz bir Basic programının kodları. Biz kodlarımızı yazarken, eş zamanlı olarak kodlarımız kayıt olur ve ayrıyetten bizim kayıt için başka bir şey yapmamız gerekmez. Çalıştırmak için Editör'ün panelindeki "Mavi Ok" işaretine basalım.
Tekrar editöre geri dönmek için Android'in geri dönüş tuşuna basıyoruz. Her yaptığımız düzeltme anında kayıt oluyor. Editörden çıkmak için, yine geri dönüş tuşuna, veya paneldeki "Mobil Basic"in simgsine basıyoruz. "deneme1" olarak kayıt ettiğimiz dosyamıza, Mobile Basic, kodlarımızı yazdıktan sonra, "bas" uzantısını eklemiş ve dosyamızın adı "deneme1.bas" olarak değişmiş olacak.

Yazdığımız kalıbı inceleyelim.
ilk satırda yazdığımız "SUB MAIN" kalıbın başlangıcını temsil eder. "MAIN" kalıbın ismi olur, ancak "MAIN" özel bir statüye sahip bir isim. Bir pogram içinde bir den fazla kalıp kullandığımızda, "MAIN" isimli kalıp, Ana kalıp olur ve diğer kalıpları çalıştırır. "MAIN" kalıbı programımızdaki ilk kalıp olmak zorunda. Tek kalıptan oluşan bir programda, kalıbın adı "MAIN" olmak zorunda.

Kalıbımızın son satırı, "END SUB" kalıbın sonunu işaretler. Başlangıç satırı ve son satır arasındaki bölüm, programımızın gövdesi ve çok sayıda satırdan oluşabilir veya çok sayıda işlemi içerebilir.

Tüm kodlarımızı büyük harfler ile yazmak zorundayız. QBasic'te olduğu gibi, bir otomatik düzeltme, Mobile Basic'te yok.

Aynı programı QBasicte şu şekilde yazabilirdik


10 PRINT "Merhaba SDNForum"


Şimdi yeni bir dosya daha açalım ve adınıda "deneme2" koyalım. Ve aşağıdaki kodlarımızı yazalım.


SUB MAIN
CALL ANNEM
CALL BABAM
END SUB

SUB ANNEM
PRINT "Nesime Kara"
END SUB

SUB BABAM
PRINT "Huseyin Kara"
END SUB


Bir den fazla kalıptan oluşan bir programın örneğini görüyoruz. Ana kalıbımız ve ilk kalıbımız olan "SUB MAIN" içinden diğer kalıpları ve içerdikleri işlemleri "CALL" komutu ile çağırıyoruz. Mobile Basic Türkçe karakterleri, program çalıştırıldığında düzgün göstermiyor. Bu nedenle "Ü İ ı ğ Ğ ş Ş ç Ç" gibi karakterler kullanmamaya özen göstermemiz gerekiyor.

Uzun programlarımızda, kalıplarımızın ne tür işlem yaptıklarını zaman içinde karıştırmamak için, kodlarımızın arasına açıklamalar ekleyebiliriz. Mesela "SUB ANNEM" kalıbının içine, aşağıdaki gibi bir açıklama ekleyebiliriz.


SUB ANNEM
// Annemin adını ve soy adını bildiren işlem
PRINT "Nesime Kara"
END SUB


"//" Bu işaretleme ile başlayan satır, programımız çalışırken yok sayılacak. Programımız görmeyecek. Ama sonradan bir düzeltme yapmak istediğimizde, bize aradığımız kalıbı bulmakta ve içeriği hakkında bilgi verecek.

/* Bu şekilde ise çok
satırlı açıklamalar eklemek
mümkün olacak*/

QBasic'te ve diğer Masaüstü sürümlerinde, açıklamalar ekleyebilmek için "REM" kullanılır.

Bir başka örnek deneyelim.


SUB MAIN
GRAPHICS
SETCOLOR 255, 0, 0
CLS
SETCOLOR 0, 0, 127
SETFONT "MONOSPACE", 50
DRAWSTRING "Merhaba SDNForum", 10, SCREENHEIGHT () / 10
SLEEP 5000
END SUB

Kodlarımızı inceleyelim.
"GRAPHICS" kodu programımıza çalışma modunun grafiksel moda geçeceğini bildirir.
"SETCOLOR" ile varsayılan renk seçilir. Rakamlar renk ton'larını belirler ve renkler "Kırmızı, Yaşil ve Mavi" tonlardan bir karışımdan oluşur.
"CLS" ekranı temizler. Varsayılan olarak beyaz olan ekran temizlenir ve seçili renk ekranı kaplar.
İkinci "SETCOLOR" ile bir sonraki olayın rengi belirlenir.
"SETFONT" ile kullanılmaz istenen font seçilir.
"DRAWSTRING" grafik ortamına yazı karakterleri ekler. bu yazı karakterleri, seçili font biçiminde ve son seçili renk ton'unda. İlave olarak karakterlerin başlayacağı nokta belirlenir. "10" rakamı, on piksel sol kenardan içeride bir başlangıç noktası belirler. "SCREENHEIGHT ()" ise başlangıç noktasının derinliğini belirler. Android cihazların ekranlarının boyutları farklı ve de dönebilir olması nedeniyle, burada piksel boyutu yerine, ekran ölçeğine göre oran kullanılıyor. Mobile Basic taşınabilir cihazlar için tasarlanmış olduğundan, yeni ve farklı komutlar ve olanaklar destekler.
"SLEEP" komutu ekranın bekletilmesini sağlar. Grafik ortam sürekli kendini yenilediğinden ötürü, ekran bekletilmediği taktirde, görüntü algılanamadan silinir.

Yeni bir örnek daha


SUB MAIN
GRAPHICS
SETCOLOR 127, 0, 0
CLS
SETCOLOR 0, 127, 255
FILLCIRCLE SCREENWIDTH () /2, 200, 100
SLEEP 5000
END SUB


Kodları inceleyelim.
"FILLCIRCLE" içi boyalı bir daire (küre) çizer. "CIRCLE" ise içi boş bir daire çizer.
"CIRCLE 100, 100, 50" parametreleri sol'dan sağa piksel boyutunda başlangıç noktası, yukarıdan aşağıya başlangıç noktası ve (50) yarıçapını belirlerler.
"SCREENWIDTH ()" ve ekran ölçekleme ( "/ 2" ) ekrann her konumda, dairemizin doğru yerde bulunmasını sağlar.

Bir başka örnek.


SUB MAIN
DIM X AS INTEGER
GRAPHICS
FOR X = 300 TO 600
SETCOLOR 127, 0, 0
CLS
SETCOLOR 255, 255, 0
FILLCIRCLE SCREENWIDTH () / 2, X, 100
SLEEP 50
REPAINT
END FOR
SLEEP 5000
END SUB


Bu örnekte kullandığımız yeni kodlar, "DIM" bir değer atamak için ve başka bir de diziler atamak için kullanılır.
Mobile Basic'te kullanılacak değerler ve temsil ettikleri veri türü, kullanılamadan önce tanımlanmaları gerekiyor.
"FOR" ve "END FOR" kalıbı bir dayılı dögüyü başlatır.
"REPAINT" tekrarlanan grafik işlemlerde tıkanmaları önler.

Her Mobil Basic'i yeniden başlattığınızda, karşınıza "Examples" adında bir klasör çıkar. Bu klasör örnek dosyalar içeren alt klasörler içerir. Örnekler kısa ve öz ve her alt klasör, belirli bir konu ile ilgili örnekler içeriri.

Üst paneli sola kaydırıp "Help" seçtiğinizde, veya editör açıkken seçenekler sekmesinden "Help" seçtiğinizde, karşınıza çıkan "html" sayfasının en alt kısmından "Mobile Basic Reference" seçtiğinizde, tüm Basic (Mobil sürümü için) kodlarının kategorilere ayrılmış ve kısa anlatımlarına ve birer kısa örneklerine kavuşursunuz.

Hem örneklerden, hem anlatımlardan faydalanarak, kendi programlarınızı yazabilirsiniz.
 

kmurat

Dekan
Katılım
8 Şubat 2014
Mesajlar
8,488
Çözümler
3
Reaksiyon puanı
3,711
Puanları
113
İlk mesajıma bir düzeltme yapayım.
"CIRCLE" olarak belirttiğim komut "DRAWCIRCLE" olacak. (Masaüstü'nde Basic'te "CIRCLE")

Ne kadar çok örnek denersek, o kadar yeni şeyler öğrenebiliriz.

Yeni örneğimiz:



SUB MAIN
GRAPHICS
SETCOLOR 0, 0, 0
CLS
SETCOLOR 255, 127, 0
FILLOVAL 100, 200, 300, 150
SETCOLOR 255, 255, 255
DRAWOVAL 200, 400, 150, 300
SLEEP 5000
END SUB

"FILLOVAL" içi boyalı ve uzatılmış veya yassılaşmış bir daire çizer.
"DRAWOVAL" ise aynı işlemi içi boş olarak çizer.
Birinci ve ikinci parametreler başlama noktasını belirler. Üçüncü parametre yatay (en) uzunluğunu, dördüncü parametre dikey (boy) uzunluğunu belirler.
 

kmurat

Dekan
Katılım
8 Şubat 2014
Mesajlar
8,488
Çözümler
3
Reaksiyon puanı
3,711
Puanları
113
Dikdörtgen ve Kare çizimi



SUB MAIN
GRAPHICS
SETCOLOR 0, 0, 255
CLS
FILLRECT 50, 50, ( SCREEWIDTH () / 10 ) * 8, ( SCREENHEIGHT / 10 ) * 8
SETCOLOR 255, 255, 0
DRAWRECT 100, 100, 300, 300
DRAWRECT 100, 450, 300, 300
SLEEP 5000
END SUB


"FILLRECT" içi boyalı bir dikdörgen veya kare çizer.
"DRAWRECT" dikdörtgen veya kare çizer.
Parametreler: Birinci parametre sol'dan, sağ'a başlangıç noktasını belirler. İkinci parametre üst'ten aşağı doğru başlangıç noktasını belirler. Üçüncü parametre ise başlangıç noktasından itibaren sol'dan sağ'a doğru mesafeyi belirler. Ve dördüncü parametre de yine başlangıç noktasından başlayarak, yukarıdan aşağıya doğru mesafeyi belirler.
 

kmurat

Dekan
Katılım
8 Şubat 2014
Mesajlar
8,488
Çözümler
3
Reaksiyon puanı
3,711
Puanları
113
Biraz daha detaylı bir örnek deneyelim


SUB MAIN

DIM EN AS INTEGER
DIM BOY AS INTEGER
DIM X AS INTEGER
DIM I AS INTEGER
DIM J AS INTEGER

EN = SCREENWIDTH ()/2
BOY = SCREENHEIGHT ()/2
X = 1

GRAPHICS

WHILE X < 2

FOR I = 300 TO 1 STEP -1
SETCOLOR 255, 255, 255
CLS
SETCOLOR 200, 200, 200
FILLOVAL EN, BOY-(I/8), 300, I/5
SETCOLOR 0, 0, 255-(I/2)
FILLOVAL EN+(I/2 - 150), BOY -300, 300-I, 300
SLEEP 25
CLS
REPAINT
END FOR

FOR J = 1 TO 300
SETCOLOR 255, 255, 255
CLS
SETCOLOR 200, 200, 200
FILLOVAL EN, BOY - (J/8), 300, J/5
SETCOLOR 0, 0, 255-(J/2)
FILLOVAL EN +(J/2 -150), BOY-300, 300-J, 300
SLEEP 25
CLS
REPAINT
END FOR

END WHILE

END SUB


Bu örneğimizde "WHILE" döngüsü içinde iki "FOR" dögüsü kullanıyoruz. "FOR" döngülerinin bitişi "END FOR" ile tanımlanırken, "WHİLE" döngüsünün bitişi "END WHILE" ile tanımlanıyor.

"WHILE" dögüsünün işleyebilmesi için bir Arguma'a ihtiyacı var. Bu Arguman doğru (veya bu örnekte, doğru olmadığı) sürece işler.

X değişkenimize 1 değerini atamıştık. "WHILE" döngümüz ise, X değişkeninin değeri 2 değerinden düşük olduğu sürece işleyecek. Bunu "WHILE" döngüsü argumanında bir mantıksal operatör sayesinde tanımlıyoruz.
Mantıksal Operatörler doğru veya yanlış seçimi yaparlar ve biz de işlemlerimizi çıkan sonuca göre devam ettirebiliriz, veya durdurabiliriz.
 
Son düzenleme:

kmurat

Dekan
Katılım
8 Şubat 2014
Mesajlar
8,488
Çözümler
3
Reaksiyon puanı
3,711
Puanları
113
3 BOYUTLU ÇİZİMLER

**********3Btop.bas*********

DIM X AS INTEGER

SUB MAIN
GRAPHICS
SETCOLOR 215,215,215
CLS
FOR X = 300 TO 0 STEP -1
SETCOLOR 255-(X/3),0,0
FILLCIRCLE SCREENWIDTH ()/2,400,X
END FOR
SLEEP 50000
END SUB



*********3Bküp.bas*********

DIM X AS INTEGER

SUB MAIN
GRAPHICS
SETCOLOR 204,204,204
CLS
FOR X = 100 TO 300
SETCOLOR 0,X/2,0
DRAWLINE X,100+X/10,X,500+X/2
END FOR
FOR X = 300 TO 700
SETCOLOR 0,200-X/4,0
DRAWLINE X,150+((X/10)-(X/6)),X,700-X/6
END FOR
FOR X = 100 TO 300
SETCOLOR 0,X/2,0
DRAWLINE X,100+X/10,X+400,75+X/10
END FOR
SLEEP 50000
END SUB



********3Büçgen.bas*********

SUB MAIN
DIM EN AS INTEGER
DIM BOY AS INTEGER
DIM CIZIM AS INTEGER
EN = SCREENWIDTH()/2

IF (SCREENWIDTH() < SCREENHEIGHT () ) THEN
BOY = SCREENHEIGHT()/10
ELSE IF (SCREENWIDTH () > SCREENHEIGHT () ) THEN
BOY = SCREENWIDTH()/10
EN = SCREENHEIGHT()/2
END IF

GRAPHICS
SETCOLOR 200,200,200

FOR CIZIM = EN-100 TO EN+350
SETCOLOR 0,0,200-(CIZIM/6)
DRAWLINE EN,BOY,CIZIM,EN+170+(CIZIM/10)
END FOR

FOR CIZIM = EN-300 TO EN-100
SETCOLOR 0,0,CIZIM/2
DRAWLINE EN,BOY,CIZIM,BOY+490-(CIZIM/4)
DRAWLINE EN-40-(CIZIM), BOY+410+(CIZIM/4), EN+390-(CIZIM), BOY+457+(CIZIM/4)
END FOR

SLEEP 50000
END SUB
 
Son düzenleme:

kmurat

Dekan
Katılım
8 Şubat 2014
Mesajlar
8,488
Çözümler
3
Reaksiyon puanı
3,711
Puanları
113
Son güncelleme ile birlikte gelen yeni özellikler:

Yeni sürümde kurulum esnası da harici bir Mobile Basic klasürü ekleniyor. Varsayılan olarak external storage seçilmesi durumunda, her açılışta, Mobile Basic sdcard taki klasörden açılıyor

Artık bilgilendirme satırlarında REM kullanılabiliyor

Artık SUB MAIN kalıbı programın sonunda da olsa Mobile Basic hata vermiyor.




Aşağıda eklediğim program yeni sürümde çalışabiliyor. Güncellenmemiş daha önceki sürümlerde yeniden düzenlenmesi gerekecek.


REM Sonsuz bir döngü
// gezgin.bas
/* Yeni sürüm
Mobile Basic için yazılmış
*/

DIM GEZGIN AS INTEGER

SUB KAYDIR1
FOR GEZGIN = 150 TO SCREENWIDTH()-150 STEP 4
SETCOLOR 0,176,255
GRAPHICS
CLS
SETCOLOR 255,0,0
FILLCIRCLE GEZGIN,150,50
REPAINT
SLEEP 60
END FOR
END SUB

SUB KAYDIR2
FOR GEZGIN = 150 TO SCREENHEIGHT()-150 STEP 4
SETCOLOR 0,176,255
GRAPHICS
CLS
SETCOLOR 255,0,0
FILLCIRCLE SCREENWIDTH ()-150, GEZGIN,50
REPAINT
SLEEP 60
END FOR
END SUB

SUB KAYDIR3
FOR GEZGIN = SCREENWIDTH()-150 TO 150 STEP -4
SETCOLOR 0,176,255
GRAPHICS
CLS
SETCOLOR 255,0,0
FILLCIRCLE GEZGIN,SCREENHEIGHT ()-150,50
REPAINT
SLEEP 60
END FOR
END SUB

SUB KAYDIR4
FOR GEZGIN = SCREENHEIGHT()-150 TO 150 STEP -4
SETCOLOR 0,176,255
GRAPHICS
CLS
SETCOLOR 255,0,0
FILLCIRCLE 150, GEZGIN,50
REPAINT
SLEEP 60
END FOR
END SUB

SUB MAIN
REPEAT
KAYDIR1
KAYDIR2
KAYDIR3
KAYDIR4
UNTIL GEZGIN = 0
END SUB
 
Üst