KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
|
|
- Nesrin Yasin
- 8 yıl önce
- İzleme sayısı:
Transkript
1 KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÖKTÜRKÇE YAZI ÇEVİRİCİ TASARIM PROJESİ Muhammed Mehdi USLU Salih TOPÇU GÜZ DÖNEMİ
2 KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÖKTÜRKÇE YAZI ÇEVİRİCİ TASARIM PROJESİ Muhammed Mehdi USLU Salih TOPÇU Bu projenin teslim edilmesi ve sunulması tarafımca uygundur. Danışman : Yrd. Doç. Tuğrul ÇAVDAR GÜZ DÖNEMİ
3 IEEE Etik Kuralları IEEE Code of Ethics Mesleğime karşı şahsi sorumluluğumu kabul ederek, hizmet ettiğim toplumlara ve üyelerine en yüksek etik ve mesleki davranışta bulunmaya söz verdiğimi ve aşağıdaki etik kurallarını kabul ettiğimi ifade ederim: 1. Kamu güvenliği, sağlığı ve refahı ile uyumlu kararlar vermenin sorumluluğunu kabul etmek ve kamu veya çevreyi tehdit edebilecek faktörleri derhal açıklamak; 2. Mümkün olabilecek çıkar çatışması, ister gerçekten var olması isterse sadece algı olması, durumlarından kaçınmak. Çıkar çatışması olması durumunda, etkilenen taraflara durumu bildirmek; 3. Mevcut verilere dayalı tahminlerde ve fikir beyan etmelerde gerçekçi ve dürüst olmak; 4. Her türlü rüşveti reddetmek; 5. Mütenasip uygulamalarını ve muhtemel sonuçlarını gözeterek teknoloji anlayışını geliştirmek; 6. Teknik yeterliliklerimizi sürdürmek ve geliştirmek, yeterli eğitim veya tecrübe olması veya işin zorluk sınırları ifade edilmesi durumunda ancak başkaları için teknolojik sorumlulukları üstlenmek; 7. Teknik bir çalışma hakkında yansız bir eleştiri için uğraşmak, eleştiriyi kabul etmek ve eleştiriyi yapmak; hatları kabul etmek ve düzeltmek; diğer katkı sunanların emeklerini ifade etmek; 8. Bütün kişilere adilane davranmak; ırk, din, cinsiyet, yaş, milliyet, cinsi tercih, cinsiyet kimliği, veya cinsiyet ifadesi üzerinden ayırımcılık yapma durumuna girişmemek; 9. Yanlış veya kötü amaçlı eylemler sonucu kimsenin yaralanması, mülklerinin zarar görmesi, itibarlarının veya istihdamlarının zedelenmesi durumlarının oluşmasından kaçınmak; 10. Meslektaşlara ve yardımcı personele mesleki gelişimlerinde yardımcı olmak ve onları desteklemek. IEEE Yönetim Kurulu tarafından Ağustos 1990 da onaylanmıştır. II
4 ÖNSÖZ Bu projedeki amacımız eski Türkçemizi yaşatan, seven, ilgi duyan kişilerin böyle bir uygulamaya duydukları ihtiyacı gidermekti. İlk sürümü çıkardığımızda da gerçekten böyle olduğunu gördük ve onlardan aldığımız geri dönüş ile birlikte uygulamamıza yeni özellik ekleyerek ikinci sürümünü yaparak eski Türkçe metinlerini paylaşabilmelerini sağladık. Böyle bir projede yer almamızı, binlerce insana ulaşmamızı ve eski Türkçemizi yaşatabilme imkanı veren Tuğrul ÇAVDAR hocamıza teşekkürlerimiz sunuyoruz. III Muhammed Mehdi USLU Salih TOPÇU Trabzon 2015
5 İÇİNDEKİLER Sayfa No IEEE ETİK KURALLARI II ÖNSÖZ III İÇİNDEKİLER IV ÖZET V 1. GENEL BİLGİLER Giriş Göktürkçe Harflerin Latin Karşılıkları Latin Kelimelerin Göktürkçeye Çevrilirken Kullanılan Kurallar 2 2. YAPILAN ÇALIŞMALAR Kullanılan Materyaller Font Seçimi Android te Unicode Karakterlerin Yazımı Java Kodları Intro Sınıfı About Sınıfı MainActivity Sınıfı Preprocess Sınıfı Rules Sınıfı DBHelper Sınıfı Save Sınıfı Tasarım Intro Ekranının Tasarımı Hakkında Ekranının Tasarımı Ana Ekran Tasarımı Kaydetme ve Paylaş Ekranının Tasarımı SONUÇLAR ÖNERİLER KAYNAKLAR 53 STANDARTLAR ve KISITLAR FORMU 54 IV
6 ÖZET Projenin amacı günümüz Latin harflerini kullanarak yazdığımız metinleri eski Türkçemiz olan Göktürkçe metine çevrilip istenildiğinde görüntü dosyası olarak kaydetmek veya herhangi bir yerde paylaşılabilmesi sağlamaktır. Uygulama istenilen düzeye getirildi ve binlerce kullanıcıya ulaştı. V
7 1 1. GENEL BİLGİLER 1.1. Giriş Uygulamada kullanıcıdan alınan Latin harflerle yazılmış Türkçe metin Göktürkçeye dönüştürülerek tekrar kullanıcıya sunulmaktadır. Bu çeviri işlem Göktürkçe kuralları uygulanarak yapılmaktadır. Çeviride kullanılan kurallar kok-turk.blogspot.com [2] sitesinden alınmıştır. Android işletim sistemli cihazlarda Göktürkçe karakter içiren bir font olmadığı için uygulama içine bir font gömüldü. Böylece uygulama içinde Göktürkçe karakterlerin sorunsuz bir şekilde gösterilmesi sağlandı. Göktürkçede bazı kelimeler özel bir yazıma sahip olmaktadır. Dolayısıyla diğer kelimelerin çevirisinde kullanılan kurallar bu kelimeleri doğru bir biçimde çevirememektedir. Bu yüzden program ilk çalıştırıldığında bu özel kelimeler cihazın veri tabanına kaydedilir. Kullanıcı bu kelimeleri girdiği zaman kelimenin mevcudiyeti veri tabanında kontrol edilir. Eğer kelime mevcut ise gerekli değişiklikler yapılarak çevirme işlemi başlatılır. Bu farklılık genellikle dilimizde eskiden var olup günümüz alfabesinde kullanılmayan Nazal n ve Kapalı e harflerin eksikliğinden kaynaklanmaktadır. Bu harflerin kullanıldığı kelimeleri veri tabanına ekleyerek bu eksikliği ortadan kaldırmaya çalışılmıştır. Ayrıca yine bazı kelimeler Göktürkçede günümüz Türkçesinde yazıldığı gibi yazılmaz. Örneğin komşu kelimesi Göktürkçede konşu olarak yazılmaktadır. Aynı şekilde omurga kelimesi de onurga olarak yazılmaktadır. Yine bu gibi kelimeler çevrilmeden önce bir ön işleme tabi tutulması gerekmektedir. Çeviri işlemi yapılmadan önce bu kelimeler tespit edilir ve gerekli değişiklikler yapılarak çeviri işlemi yapılmaktadır. Son olarak Göktürkçede bazı iki sesli harfler bulunmaktadır. Örneğin ng, nc, nt gibi. Çeviri işlemi yapılmadan önce kelimede bu harfler aranır ve Türkçede bulunmayan X, x, W, w gibi harflere dönüştürülür. Daha sonra çeviri işlemi sırasında bu harflere karşılık düşen gibi
8 2 harflere dönüştürülür. Çeviri işlemi sırasında bu harflere karşılık düşen Göktürkçe karakterler yazılır Göktürkçe Harflerin Latin Karşılıkları Göktürkçede harfler kalın ve ince olarak ayrılmaktadır. Harflerin kalın veya ince olduğu sessiz harfin yanındaki sesli harfe bakılarak anlaşılmaktadır Latin Kelimelerin Göktürkçeye Çevrilirken Kullanılan Kurallar 1. Yazı sağdan sola yazılır ve kelimeler : ile ayrılır. 2. Kalın harflerden önce a, ince harflerden önce e yazılmaz. 3. Kelime başında ve ortasında a/e yazılmaz ama sonunda yazılır. 4. Kelime başında ı/i/o/ö/u/ü her zaman yazılır. Sadece ık =, ok/uk =, ök/ük =, iç = ile bitiyorsa istisna olarak bu özel harfler kullanılmıştır. 5. İlk hecedeki sesliye bağlı olarak sonraki hecelerde genellikle küçük ünlü uyumuna
9 3 uyan sesliler (a/e/ı/i a/e/ı/i, o/ö/u/ü a/e/u/ü) yazılmaz. Yani: İlk hecede a/e varsa sonraki hecelerde ı/i yazılmaz; ama yuvarlak sesli yazılır. İlk hecede olan seslinin aynısı sonraki hecelerde varsa yazılmaz. Yani: İlk hecede ı/i varsa sonraki hecelerde ı/i yazılmaz. İlk hecede o/u varsa sonraki hecelerde o/u yazılmaz. İlk hecede ö/ü varsa sonraki hecelerde ö/ü yazılmaz. İlk hecede yuvarlak sesli varsa sonraki hecelerde ı/i yazılır. İlk hecede düz sesli varsa sonraki hecelerde yuvarlak sesli yazılır. 6. Kelime sonunda tüm sesliler yazılır. 7. Günümüz Türkçesinde F, C/J, H, V yerine sırasıyla P, Ç, K, B kullanılabilir. 8. k harfinin özel hallerinden sonra gelen bazı sesliler için aşağıdaki kullanımlar mevcuttur. : ok/uk iken, : ko/ku (sıklıkla) : ök/ük iken, : kö/kü (nadiren) : ık iken, : kı (sıklıkla)
10 4 2. YAPILAN ÇALIŞMALAR 2.1. Kullanılan Materyaller Projede IDE olarak Android Studio, emülatör olarak Genymotion, test yapılan mobil cihazlar olarak Sony Xperia Z3 Compact, Samsung Galaxy Note 2, General Mobile Discovery 2, Asus Transformer Pad kullanıldı Font Seçimi Göktürkçe harfleri mobil cihaz ekranında görebilmek için Göktürkçe Unicode aralığını destekleyen bir font kullanıldı. Font olarak Windows 10 ile birlikte gelen Segoe UI Historic tercih edildi. Çoğu sistem fontu Göktürkçe Unicode aralığını desteklemediği ve sistem fontunu mobil cihazlarda değiştirmek zor ve tehlikeli olduğundan dolayı seçilen font uygulamaya gömülmüştür. Bu işlem için assets klasörünün içine fonts adında bir klasör oluşturulup istenilen font bu klasörün içine koyulur. Tablo 2.1 de fontun TextView e uygulanmasını gösteren kod parçası verilmiştir. Tablo 2.1. Fontun TextView e uygulanmasını gösteren kod parçası. Typeface font = Typeface.createFromAsset(getAssets(),"fonts/seguihis.ttf"); Latin_Turk_TextView.setTypeface(font, Typeface.BOLD); Typeface setlemesi bu fontun kullanılacağı her araçta yapılmalıdır Android te Unicode Karakterlerin Yazımı Göktürkçe harfler için ayrılan Unicode aralığı beş karakterden oluşmaktadır. Ancak Android te beş karakterli Unicode karakter desteklenmemektedir. Beş karakterli Unicode karakterler için bir ayırma işlemi yapılmaktadır. Örneğin 10C00 için D803 ve DC00 olmaktadır. Bu ayırma işlemi bir internet sitesi yardımı ile yapılabilmektedir [1]. Bir
11 5 TextView de bu işlemin nasıl gerçekleştirildiği Tablo 2.2. de gösterilmiştir. Tablo 2.2. Beş karakterli Unicode karakterin TextView e aktarılması. GokTurk_Text = "\ud803\udc00"; 2.4. Java Kodları Yapılan uygulamada hem kodun açık ve anlaşılır olması hem de modüler olmasını sağlayabilmek için Java sınıflarına (Class) ayrılmıştır. Her bir sınıf genellikle bir görevi yerine getirmesi için kullanılmıştır Intro Sınıfı Bu sınıf uygulama başlatıldığında yapılacak ilk işlemleri içerir ve giriş ekranın java sınıfıdır. Bu sınıf bir ekrana karşılık düştüğünden dolayı Activity sınıfından miras alır. Giriş ekranında önemli bir bilgi verildiği için kullanıcının okumayı bitirdikten sonra bu ekranı geçmesi için bir buton tanımlanmıştır. Bu butonda Geç yazısının yanında Göktürkçe Geç kelimesinin karşılığı yazıldığından font setlemesi yapılmıştır. Tablo 2.3. Buton tanımlanması, font setlemesi ve buton yazısının yerleştirilmesi. final Button Skip_Button = (Button) findviewbyid(r.id.skip_button); final Typeface font = Typeface.createFromAsset(getAssets(), "fonts/seguihis.ttf"); Skip_Button.setTypeface(font); Skip_Button.setText("Geç / \ud803\udc0f\ud803\udc32"); Intro sınıfında bir veri tabanı oluşturulması ve veri tabanına verilerin girilmesi işlemi yapıldığı için bu işlemin bitmeden geç butonuna basılmasını engellemek için bu işlemler önce butonu pasif yapacak bir işlem gerçekleştirilmiştir.
12 6 Skip_Button.setClickable(false); Tablo 2.4. Butonu pasif hale geçirme. Her uygulama başlatıldığında tekrardan veri tabanını oluşturup verileri tekrar girmeyi engellemek için uygulama eğer önceden başlatılmış ise bunu algılayıp bu kısmı atlayacak kod parçası eklenmiştir. Tablo 2.5. Uygulamanın daha önce başlatıldığını algılayan kod parçası. SharedPreferences settings = getsharedpreferences("sql", 0); boolean firsttime = settings.getboolean("firsttime", true); Veri tabanı oluşturmak için DBHelper sınıfından yararlanılmıştır DBHelper başlığında veri tabanı oluşturma işleminden bahsedilmiştir. dbhelper değişkeni DBHelper sınıfından oluşturulmuş global nesnedir. dbhelper = new DBHelper(this); Tablo 2.6. Veri tabanının oluşturulması. Eğer uygulama önceden başlatılmış ise verileri tekrar girmesini engellemek için if koşulu kullanılmıştır. Göktürkçede kapalı n ve kapalı e kullanılması gereken bazı kelimler olduğu için bu kelimler iki ayrı diziye atanmıştır ve iki for döngüsüyle veri tabanına eklenmesi sağlanmıştır. Tablo 2.7. Kelimelerin diziye atanması ve veri tabanına eklenmesi.
13 7 if (firsttime) String[] Nazal_N_Word = new String[] "anla", "and",.. "yön", "yün"; String [] Kapali_E_Word = new String[] "beş", "beşik",.. "yegirmi", "yenlik"; for (int i=0 ; i < Nazal_N_Word.length ;i++) dbhelper.insert_nazal_n_word(nazal_n_word[i]); for (int i=0 ; i < Kapali_E_Word.length ;i++) dbhelper.insert_kapali_e_word(kapali_e_word[i]); SharedPreferences.Editor editor = settings.edit(); editor.putboolean("firsttime", false); editor.commit(); Veri tabanı işlemleri bu aşamada bittiği için Geç butonu aktif hale getirilir.
14 8 Skip_Button.setClickable(true); Tablo 2.8. Geç butonunun aktif hale getirilmesi. Son olarak Geç butonun a basıldığında ana ekrana geçilmesinin sağlayacak fonksiyon tanımlanmıştır. Bu fonksiyon bir buton fonksiyonu olduğu için View tipinde bir argüman almak zorundadır. Tablo 2.9. Geç Butonu fonksiyonu. public void Skip_Button_Fonk(View v) Intent main_intent=new Intent(getApplicationContext(),MainActivity.class); startactivity(main_intent); this.finish(); About Sınıfı About sınıfı Intro sınıfının görüntü olarak aynısıdır. Herhangi bir veri tabanı işlemi yapılmamıştır. Ana ekran ve kaydetme ekranlarında Hakkında sekmesine basıldığında yönlendirilen ekrandır. Sadece bir buton bulunduğu için font setlemesi ve text setlemesi yapılmıştır. Tablo Font setlemesi ve text setlemesi. skip_button = (Button) findviewbyid(r.id.about_skip_button); final Typeface font = Typeface.createFromAsset(getAssets(),"fonts/seguihis.ttf"); skip_button.settypeface(font); skip_button.settext("geç / \ud803\udc0f\ud803\udc32");
15 9 Butona basıldığında yapılacak işlemleri Skip_Button_Fonk yapmaktadır. Bu fonksiyonun içinde mobil cihazlardaki geri tuşunun yaptığı görevi yapan fonksiyon bulunmaktadır. Bunu yapılması amaç ise bir önceki sayfaya dönüldüğünde ordaki bilgilerin kaybedilmemesidir. Tablo Skip_Button_Fonk fonksiyonu. public void Skip_Button_Fonk(View v) onbackpressed(); MainActivity Sınıfı Intro sayfasındaki işlemler bittikten sonra uygulamada MainActivity sınıfı çalışmaya başlamaktadır. Bu bölümde öncelikle Intro ara yüzünden sonra gelen ara yüzdeki görsel nesneler tanımlanmıştır. Latin metnini yazıldığı ve karşılığında Göktürkçe metnini gösterildiği birer adet EditText eklenmiştir. Çevirme ve Paylaşma işlemleri için birer buton eklenmiştir.. Ve son olarak EditText lerin içerikleri hakkında bilgi bulunduran ikisi Türkçe ikisi Göktürkçe olmak üzere 4 adet Label eklenmiştir.. Bu nesnelerin ekran düzenleri Tasarım başlığı altında detaylı olarak anlatılmıştır. Ardından bu nesnelerin fontları yine dinamik olarak bu bölümde setlenmiştir. Bu nesnelere ait kodlar Tablo gösterilmiştir. Tablo Global değişkenlerin tanımlanması. EditText Latin_Text; EditText Gokturk_Text; TextView Latin_Turk_TextView;
16 10 TextView Turk_Turk_TextView; Button Translate_Button; Button Save_Button; LinearLayout mainlayout; public Typeface font; Tablo Nesnelerin id lerle ilişkilendirilmesi ve Temel özelliklerin belirlenmesi. mainlayout = (LinearLayout) findviewbyid(r.id.mylayout); font = Typeface.createFromAsset(getAssets(),"fonts/seguihis.ttf"); Latin_Turk_TextView = (TextView) findviewbyid(r.id.latin_turk_textview); Latin_Turk_TextView.setTypeface(font, Typeface.BOLD); Latin_Turk_TextView.setText("\uD803\uDC1E\uD803\uDC43\uD803\uDC24:"); Latin_Turk_TextView.setGravity(Gravity.BOTTOM Gravity.RIGHT); Turk_Turk_TextView = (TextView) findviewbyid(r.id.turk_turk_textview); Turk_Turk_TextView.setTypeface(font); Turk_Turk_TextView.setTypeface(font, Typeface.BOLD); Turk_Turk_TextView.setText("\uD803\uDC45\uD803\uDC35\uD803\uDC3C\uD803\uDC1C: "); Turk_Turk_TextView.setGravity(Gravity.BOTTOM Gravity.RIGHT); Latin_Text = (EditText) findviewbyid(r.id.latin_text); Latin_Text.setTypeface(font); Latin_Text.setHint("Latin Metin"); Gokturk_Text = (EditText) findviewbyid(r.id.gokturk_text); Gokturk_Text.setTypeface(font); Gokturk_Text.setHint("Göktürk Metin"); Gokturk_Text.setTextIsSelectable(true); Translate_Button = (Button) findviewbyid(r.id.translate_button); Translate_Button.setTypeface(font);
17 11 Translate_Button.setText("Ã evir / \ud803\udc32\ud803\udc0b\ud803\udc3c"); Save_Button = (Button) findviewbyid(r.id.save_button); Save_Button.setTypeface(font); Save_Button.setText(" Kaydét / Paylaş"+"\n\uD803\uDC2F\uD803\uDC16\uD803\uDC1E\uD803\uDC41 / \ud803\udc34\ud803\udc16\ud803\udc11:\ud803\udc03\ud803\udc45"); Save_Button.setEnabled(false); Save_Button.setClickable(false); Uygulamada Gokturk_Text içinde herhangi bir metin olmadan Kaydet/Paylaş ara yüzüne geçişi engellemek için Gokturk_Text boş olduğu durumda Kaydet/Paylaş butonu deaktif yapılmaktadır. Bu işlem tablodaki son iki satırla yapılmaktadır. Çevir ve Kaydet/Paylaş butonları için birer adet fonksiyon tanımlanmıştır. Çevir için tanımlanan Translate fonksiyonu Latin metni Göktürkçe metne dönüştüren asıl fonksiyondur. Buton nesnesi için kullanıldığı için bir adet View parametresi almıştır. Bu fonksiyonda öncelikle Göktürkçenin kurallarını içeren Rules sınıfından bir nesne türetilir. Sonra kullanıcının girmiş olduğu Latin metni bir değişkene aktarır. Buradan itibaren çeviri işlemi bu değişken referans alınarak yapılmaktadır. Göktürkçede büyük küçük harf olmadığı için değişken içindeki tüm harfler küçük yapılır. Ardından kelimelerin kökünü bulup veri tabanında sorgulatmak için DB_control adında geçici olarak kelimenin kökünü tutan bir string değişkeni tanımlandı. Bu değişken veri tabanında aranır. Eğer aranan kelime Kapalı e tablosunda mevcut ise flag_kapalı_e adındaki boolean tipindeki değişkeni TRUE yapar. Nazal_n tablosunda mevcut ise bu kez flag_nazlan_n adındaki boolean değişkeni TRUE yapılmaktadır. Bu değişkenler referans alınarak kelimedeki e veya n, nazal n veya kapalı e olarak değiştirilir. Tablo Çeviri öncesi gerekli değişkenlerin setlenmesi.
18 12 Rules rules = new Rules(); String GokTurk_Text = ""; String Get_Latin_Text = Latin_Text.getText().toString(); Get_Latin_Text = Get_Latin_Text.toLowerCase(); String DB_control = null; Boolean flag_nazal_n = false; Boolean flag_kapali_e = false; Translate fonksiyonu öncelikle Latin metni Preprocess sınıfına aktararak buradan kelimelere parçalanmış bir string dizisi elde etmektir. Tablo Metnin kelimelere parçalana işlemi. Preprocess preprocess = new Preprocess(); String[] word = preprocess.preprocess(get_latin_text); Bu işlemden sonra her kelime için çevirme işlemi yapılacağı için bir for döngüsü oluşturulmuştur. Bu döngünün döngü sayısı word.lengt yani metin içindeki kelime sayısı olarak belirlendi. Döngüde ilk olarak girilen kelimenin veri tabanında mevcut olup olmadığı kontrol edilir. Veri tabanındaki en kısa kelime 2 harfli olduğundan öncelikle kelimenin ilk iki harfi veri tabanında sorgulanır. Mevcut değilse bir harf daha eklenir ve tekrar aranır. Bu işlem kelime veri tabanında bulunana kadar veya eğer veri tabanında yoksa kelimenin tamamı deneninceye kadar devam edilir. Bu işlem hem Nazal n hem de Kapalı e için ayrı ayrı döngüler içinde yapılmaktadır. Eğer kelime veri tabanında mevcut ise ilgili bayrak setlenir ve ilerleyen adımlarda Rules sınıfına gönderilerek kelime çevirisi yapılırken değerlendirilir. if (word[i].length() >= 2) Tablo Nazal n / Kapalı e kontrolü. for (int j = 2; j <= word[i].length(); j++)
19 13 if (word[i].length() >= j) DB_control = word[i].substring(0, j); flag_nazal_n = DB_Search_Nazal_n(DB_control); if (flag_nazal_n) break; for (int j = 3; j <= word[i].length(); j++) if (word[i].length() >= j) DB_control = word[i].substring(0, j); flag_kapali_e = DB_Search_Kapali_e(DB_control); if (flag_kapali_e) break; Sonraki adımda kelimeler Rules sınıfına gönderilerek çevirme işlemi yapılır. Rulse sınıfında iki adet fonksiyon bulunmaktadır. Bu fonksiyonlardan biri sadece 1 harf uzunluğundaki kelimelerin çevirisini yaparken kullanılmaktadır (Keyboard_Alphabet). Bu fonksiyon kullanıcılara harflerin karşılıklarını öğrenme imkanı sunmak için yazılmıştır. Diğer fonksiyon ise birden çok harf bulunduran kelimelerin çevirisi için kullanılmaktadır (Text_Size_Length_Bigger_One). Bu fonksiyonların içeriği Rules başlığı altında detaylı olarak anlatılacaktır. Bu adımda hangi fonksiyonun çağrılacağını belirlemek için bir switch kullanıldı. Bu switch kelimenin uzunluğuna göre seçim yapacak şekilde programlandı. Eğer kelime tek harfli ise Keyboard_Alphabet fonksiyonu çağrılarak geri dönen değer Gokturk_Text değişkenine eklenir. Kelime uzunluğu 1 den daha büyük ise Text_Size_Length_Bigger_One fonksiyonu çağrılır ve geri dönen değer GokTurk_Text değişkenine eklenir.
20 14 Tablo Kelimelerin Rules sınıfına gönderilmesi. switch (word[i].length()) case 0: Toast.makeText(getApplicationContext(), "Metin Giriniz!...", Toast.LENGTH_LONG).show(); break; case 1: if (isnumeric(word[i])) GokTurk_Text += word[i]; else GokTurk_Text += rules.keyboard_alphabet(word[i]); Gokturk_Text.setText(GokTurk_Text); break; default: if (isnumeric(word[i])) GokTurk_Text += word[i]; else GokTurk_Text += rules.text_size_length_bigger_one(word[i], flag_nazal_n, flag_kapali_e); Gokturk_Text.setText(GokTurk_Text); break; Bu adımdan sonra tüm kelimeler Göktürkçeye çevrilerek GokTurk_Text değişkeni içine yazılır. Son olarak Çevrilen metin EditText e yazılır ve çeviri tamamlanmış olur. Artık Göktürkçe metin kısmı boş olmadığına göre Kaydet/Paylaş butonunun da aktifleşmesi gerekir. Bunu için Translate fonksiyonunun sonuna Kaydet/Paylaş butonunu aktifleştiren
21 15 aşağıdaki kodlar eklendi. Save_Button.setEnabled(true); Tablo Kaydet/Paylaş butonunun aktifleştirilmesi. Save_Button.setClickable(true); Kaydet/Paylaş butonuna basıldığında uygulama başka bir ara yüze geçmektedir. Bu ara yüzde Göktürkçe metin bir resim dosyasına dönüştürülür ve isteğe göre kaydedilir ya da paylaşılır. Bu işlemin yapılabilmesi için bazı bilgilerin bu ara yüze aktarılması gerekmektedir. Bilgilerin aktarılması işlemini Kaydet/Paylaş butonuna basılmasıyla çalışan ConvertToBitmap fonksiyonu sağlamaktadır. Öncelikle uygulamalar arsında veri aktarmamızı sağlayan bir Bundle nesnesi oluşturuldu ve bu nesneye Göktürkçe metin, Göktürk EditText inin genişliği ve yazının boyut bilgileri kaydedildi. Sonra Bundle nesnesi bir sonraki ara yüz ile ilişkilendirildi ve startactivitiy ile yeni ara yüze geçildi. Tablo Kaydet/Paylaş butonunun işlevi. public void ConvertToBitmap(View v) Bundle bundle = new Bundle(); bundle.putstring("gokturk_text", Gokturk_Text.getText().toString()); bundle.putint("gokturk_text_width", Gokturk_Text.getWidth()); bundle.putint("gokturk_text_size",(int)gokturk_text.gettextsize()); Intent save_activity = new Intent(getApplicationContext(),Save.class); save_activity.putextras(bundle); startactivity(save_activity); Preprocess Sınıfı
22 16 Bu sınıfta Göktürkçe çeviri yapılmadan önce Latin metin üzerinde bir takım ön işlemler yapılmaktadır. İlk işlem Göktürkçede olmayan ancak Latin harf olan harflerin değiştirilmesidir. h, j, f, v harfleri sırasıyla k, c, p, b harfleriyle yer değiştirilir. é harfinin karşılığı olarak i harfi kullanılmıştır. â, î, û harflerinin yerine şapkasız olan harflerle, a, ı, u, değiştirilmiştir. Yeni satıra geçiş yapıldığını anlayabilmek içinde \n yerine başında ve sonunda boşluk olacak şekilde değiştirilmiştir. Böylece metini parçalarken yeni satır karakterini de ayrılmış olacaktır. Tablo Metindeki harflerin değiştirilmesi. word = word.replace("h","k"); word = word.replace("j","c"); word = word.replace("f","p"); word = word.replace("v","b"); word = word.replace("é","i"); word = word.replace("â","a"); word = word.replace("î","i"); word = word.replace("û","u"); word = word.replace("\n"," \n "); Klavyedeki harfler dışında kalan tüm karakterlerde metini kelimelere ayırırken ayrılması için başında ve sonunda boşluklar olacak şekilde yer değiştirilmesi yapılmıştır. Tablo Metindeki karakterlerin değiştirilmesi. word = word.replace("!","! "); word = word.replace("'"," ' "); word = word.replace(" "," ");...
23 17... word = word.replace(" "," "); Aynı replace fonksiyonu kullanılarak Latin Türkçesindeki bazı kelimelerin eski Türkçe halleri ile değiştirilmiştir. Bu işlemlerden sonra metin split fonksiyonuna verilerek boşluklara göre ayırarak yani metni kelimelerine ayırarak bir diziye kaydeder. word_first = word.split(" "); Tablo Metinin kelimelere ayrılması. Kelimelere ayırdıktan sonra dot_parse isimli fonksiyona gönderilerek tırnak işareti kelimeye birleşikse bunu ayırma işlemi yapılır. Tablo Metinin kelimelere ayrılması. public String[] dot_parse(string [] first_word) ArrayList<String> word = new ArrayList<String>() ; for(int i = 0 ; i < first_word.length ; i++) if (!first_word[i].equals("'")) word.add(first_word[i]); else word.set(i-1,first_word[i - 1] + first_word[i + 1] ); i++; for (int i = 0 ; i < word.size() ; i++) if (word.get(i).equals("")) word.remove(i); first_word = new String [word.size()]; word.toarray(first_word);
24 18 size = word.size(); return first_word; Tırnak işaretinde olduğu gibi sayılarda kelimelere ya da harflere bitişik bir şekilde olabilir bunun içinde bir takım işlemler yapılmaktadır. Sayılar kelimlerin ya da harflerin başında, sonunda olabilir. Bunun için indexof fonksiyonu ile her kelimeye bakılarak sayının ayrıma işlemi yapılır ve kelime ya da harf Göktürkçeye çevrilir. Çevirme işleminde böyle bir kelime denk geldiğinde çevirme işlemi yapılmayıp direk yazılır. Tablo Sayıların kelimeden ayrılması. for (int i = 0; i < word2.length; i++) if (!isnumeric(word2[i])) if ((word2[i].indexof("0")!= -1 word2[i].indexof("7")!= -1 word2[i].indexof("2")!= -1 word2[i].indexof("8")!= -1 word2[i].indexof("6")!= -1 word2[i].indexof("3")!= -1 word2[i].indexof("9")!= -1 word2[i].indexof("5")!= -1 word2[i].indexof("4")!= -1 word2[i].indexof("1")!= -1)) word2[i] = word2[i].replace("0"," 0 "); word2[i] = word2[i].replace("1"," 1 "); word2[i] = word2[i].replace("2"," 2 "); word2[i] = word2[i].replace("3"," 3 "); word2[i] = word2[i].replace("4"," 4 "); word2[i] = word2[i].replace("5"," 5 "); word2[i] = word2[i].replace("6"," 6 ");
25 19 word2[i] = word2[i].replace("7"," 7 "); word2[i] = word2[i].replace("8"," 8 "); word2[i] = word2[i].replace("9"," 9 "); temp_word = word2[i].split(" "); ArrayList<String> word_list = new ArrayList<String>() ; for (int m = 0 ; m < temp_word.length ; m++) word_list.add(temp_word[m]); for (int n = 0 ; n < word_list.size() ; n++) if (word_list.get(n).equals("")) word_list.remove(n); temp_word = new String[word_list.size()]; word_list.toarray(temp_word); if (!isnumeric(temp_word[0])) temp_word2 = ""; if (temp_word[0].length() > 1) temp_word2 += rules.text_size_length_bigger_one(temp_word[0], false, false); for (int p = 1; p < temp_word.length; p++) temp_word2 += temp_word[p]; word2[i] = temp_word2; break;
26 20 else temp_word2 += rules.keyboard_alphabet(temp_word[0]); for (int p = 1; p < temp_word.length; p++) temp_word2 += temp_word[p]; word2[i] = temp_word2; break; else temp_word2 = ""; temp_word2 += temp_word[0]; for (int k = 1; k < temp_word.length; k++) if (isnumeric(temp_word[k])) temp_word2 += temp_word[k]; else if (temp_word[k].length() > 1) temp_word2 += rules.text_size_length_bigger_one(temp_word[k], false, false); word2[i] = temp_word2; break;
27 21 else temp_word2 += rules.keyboard_alphabet(temp_word[k]); word2[i] = temp_word2; break; for (int i = 0; i < word2.length; i++) int count = 0; int temp_index = i; if (isnumeric(word2[temp_index])) while (temp_index+1 < word2.length && isnumeric(word2[temp_index+1])) count++; temp_index++; if (count!= 0) int last_index = i + count; int temp_last_index = last_index; int uzunluk = (last_index - i ) + 1; String temp; if (uzunluk % 2!= 0) int ort = (last_index + i) / 2; while (last_index!= ort)
28 22 temp = word2[i]; word2[i] = word2[last_index]; word2[last_index] = temp; last_index += -1; i += 1; i = temp_last_index + 1; else while (i < last_index) temp = word2[i]; word2[i] = word2[last_index]; word2[last_index] = temp; last_index += -1; i += 1; i = temp_last_index + 1; isnumeric fonksiyonu ise kelimenin sayılardan oluşup oluşmadığının kontrol eder. Tablo isnumeric Fonksiyonu. public static boolean isnumeric(string word) try double d = Double.parseDouble(word); catch(numberformatexception nfe)
29 23 return false; return true; Rules Sınıfı Bu sınıf Göktürkçe harflerin karşılıklarının bulunduğu ve dil kurallarının uygulandığı kısımdır. Bu sınıfa sürekli olarak MainActivity sınıfından kelime gönderilir. Gelen kelime burada dönüştürülür ve tekrar MainActivity sınıfına gönderilir. Rules sınıfında kelime çevirisi yapan üç fonksiyon bulunmaktadır. Bunlardan ilki kelime tek harfli olduğu durumlarda çalışan Keyboard_Alphabet fonksiyonudur. Bu fonksiyonda Latin harflere karşılık gelen harfler bir switch içinde listelenmiştir. Gelen her harf için Göktürkçe karşılığı bulunur ve bu Göktürkçe karakter geriye döndürülür. Tablo Keyboard_Alphabet fonksiyonu. public String Keyboard_Alphabet(String Latin_Text) String GokTurk_Text = null; switch (Latin_Text) case "a": GokTurk_Text = "\ud803\udc00"; break; case "A": GokTurk_Text = "\ud803\udc00"; break; case "b": GokTurk_Text = "\ud803\udc0b"; break; case "B": GokTurk_Text = "\ud803\udc09"; break;
30 24... case "\"": GokTurk_Text = "\""; break; case "\n": GokTurk_Text = "\n"; break; default: GokTurk_Text = " "; break; return GokTurk_Text; Rules sınıfındaki bir diğer fonksiyon ise Original_Alphabet fonksiyonudur. Bu fonksiyonun genel yapısı Keyboard_Alphabet fonksiyonun yapısına benzerdir. Farklı olarak switchteki caseler içinde 1 karakterin yanı sıra 2 karakter de bulunabilmektedir. Bunun sebebi yazılacak olan harfin duruma göre kalın mı yoksa incemi olacağını anlayabilmektir. Örnek olarak Tez kelimesini ele alacak olursak; ilk harf T dir. Ancak Göktürkçede biri kalın diğeri ince olmak üzere iki adet T bulunmaktadır. Bunu anlamak için T harfinin yanındaki diğer karaktere yani e ye bakılarak yazılacak olan T nin ince olacağına karar verilir ve bu iki harf et olarak Original_Alphabet fonksiyonuna gönderilir. te yerine et gönderilmektedir çünkü Göktürkçe karakterler okunurken sesli harf önce söylenmektedir. Yani Türkçede örneğin K harfini Ke olarak okumaktayız. Göktürkçede ise bu durumun tersi söz konusu olmaktadır. Tablo Original_Alphabet fonksiyonu.
31 25 public String Original_Alphabet(String Latin_Text) String GokTurk_Text = null; switch (Latin_Text) case "a": GokTurk_Text = "\ud803\udc00"; break; case "A": GokTurk_Text = "\ud803\udc00"; break; case "eb": //b GokTurk_Text = "\ud803\udc0b"; break; case "ab": //B GokTurk_Text = "\ud803\udc09"; break;.... case "eŋ": GokTurk_Text = "\ud803\udc2d"; break; case "añ": GokTurk_Text = "\ud803\udc2d"; break; case "eñ": GokTurk_Text = "\ud803\udc2d"; break; case "é": GokTurk_Text = "\ud803\udc03"; break; default: GokTurk_Text = " "; break; return GokTurk_Text; Original_Alphabet fonksiyonu sadece Rules sınıfındaki üçüncü fonksiyon olan Text_Size_Length_Bigger_One fonksiyonu tarafından çağrılmaktadır. Bu fonksiyon Asıl çeviri işlemini yapan kodları içermektedir. Çeviri yapılırken metindeki kelimeler sırayla bu fonksiyona verilir. Her kelime için bu fonksiyon içindeki dil kuralları uygulanır. Öncelikle kelimenin ilk iki harfi kontrol edilir. Eğer ilk iki harf sessiz harf ise
32 26 Head_Of_Word fonksiyonu çağrılır. Bu fonksiyon kelimenin üçüncü harfine bakarak ilk iki harfin kalın mı yoksa incemi olacağına karar verir, harfleri çevirir ve kelimeyi tekrar Text_Size_Length_Bigger_One fonksiyonuna gönderir. Ardından sıradaki karakter kontrol edilir. Göktürkçede a ve e harfleri kelime içinde yazılmaz. Diğer sesli harfler ise kelime içinde bir kez yazıldıktan sonra aynı harf kelimenin devamında yazılmaz. Bu kuralları uygulamak için her sesli harf için birer if koşulu tanımlandı. Ayrıca (a,e), (ı,i), (o,u) ve (ö,ü) harf grupları için birer tane boolean değişkeni setlendi. Bu değişkenler bayrak olarak kullanıldı. Yani bu harflerden biri yazıldığı takdirde kelimenin devamında bu tekrar yazmayı engellemek için bu bayraklar setlenir. Bu bayrakların setlenme işlemi her sesli harf için tanımlanan if koşulları içerisinde yapılmaktadır. Sessiz harf geldiğinde ise bir sonraki harf kontrol edilerek ona göre ince veya kalın olacağına karar verilir. Son olarak kelimenin sonuna gelindiğinde, eğer kelimenin sonunda sesli harf varsa bu harf ne olursa olsun yazılması gerekmektedir. Bu işlem de Text_Size_Length_Bigger_One fonksiyonunun son kısmında yapılmaktadır DBHelper Sınıfı Bu sınıf SQLite sorgularının yapıldığı fonksiyonları ve veri tabanın oluşturulması için kullanıldı. Veri tabanı işlemleri yapabilmek için SQLiteOpenHelper ı miras alır. Veri tabanı versiyonu, tablo isimleri bir değişkene atanmıştır ve bir fonksiyon yardımıyla veri tabanının oluşturulması sağlanmıştır. Tablo Veri Tabanı oluşturma. private static final int DATABASE_VERSION = 1; private static final String DATABASE_NAME = "kokturukdb"; private static final String TABLE_N = "Nazaln";
33 27 private static final String TABLE_E = "Kapalie"; public DBHelper(Context context) super(context, DATABASE_NAME, null, DATABASE_VERSION); Bu işlemden sonra tabloların oluşturulması sağlanmıştır. Tablo Tabloların oluşturulması. public void oncreate(sqlitedatabase db) String create_table_nazaln = "CREATE TABLE IF NOT EXISTS " + TABLE_N + "(Latin_Word TEXT" + ")"; String create_table_kapalie = "CREATE TABLE IF NOT EXISTS " + TABLE_E + "(Latin_Word TEXT" + ")"; db.execsql(create_table_nazaln); db.execsql(create_table_kapalie); Veri tabanının güncellenmesi halinde tabloları silecek fonksiyon tanımlanmıştır. Tablo Veri tabanının public void onupgrade(sqlitedatabase db, int oldversion, int newversion) db.execsql("drop TABLE IF EXISTS " + TABLE_N); db.execsql("drop TABLE IF EXISTS " + TABLE_E); oncreate(db); Tablolara verilerin girilmesini sağlayan fonksiyonlar tanımlandı.
34 28 Tablo Veri girişlerini gerçekleştiren fonksiyonlar. public void insert_nazal_n_word(string Latin_Word) SQLiteDatabase db = this.getwritabledatabase(); ContentValues values = new ContentValues(); values.put("latin_word", Latin_Word); db.insert(table_n, null, values); db.close(); public void insert_kapali_e_word(string Latin_Word) SQLiteDatabase db = this.getwritabledatabase(); ContentValues values = new ContentValues(); values.put("latin_word", Latin_Word); db.insert(table_e, null, values); db.close(); Veri tabanında sorgu yapılacak fonksiyonlar tanımlanmıştır. Bu fonksiyonlar sadece değerin olup olmadığını kontrol ettikleri true ya da false olarak geri dönüş yapmaktadırlar. Tablo Veri tabanı sorgusu yapan fonksiyonlar. public boolean DB_Search_Nazal_n(String Latin_Word) int count = -1; SQLiteDatabase db = this.getreadabledatabase(); String query = "SELECT COUNT(*) FROM " + TABLE_N + " WHERE Latin_Word = '"
35 29 + Latin_Word + "'" ; Cursor cursor = db.rawquery(query, null); cursor.movetonext(); count = cursor.getint(0); db.close(); return count > 0; public boolean DB_Search_Kapali_e(String Latin_Word) int count = -1; SQLiteDatabase db = this.getreadabledatabase(); String query = "SELECT COUNT(*) FROM " + TABLE_E + " WHERE Latin_Word = '" + Latin_Word + "'" ; count = cursor.getint(0); db.close(); return count > 0; Save Sınıfı Save sınıfı, çevirisi yapılan metnin Göktürkçe karşılığını bir resim dosyasına dönüştürerek kaydetme veya paylaşma imkanı vermektedir. Bu işlemin yapılabilmesi için MainActivity sınıfında çevirisi yapılan metnin ve metinle ilgili bazı bilgilerin Save sınıfına aktarılması gerekmektedir. Bu işlem MainActivity sınıfında ConvertToBitmap fonksiyonunu ile yapılır. Veriler bu fonksiyon tarafından Save sınıfına aktarılır. Save sınıfın da Tablo 2.33 deki kodlar ile bu verileri almaktadır. Tablo Metin ile ilgili verilerin Save sınıfına aktarılması. Bundle data = getintent().getextras(); Gokturk_Text = data.getstring("gokturk_text"); Gokturk_Text_Width = data.getint("gokturk_text_width");
36 30 Gokturk_Text_Size = data.getint("gokturk_text_size"); Resim oluşturulurken kullanıcıya font rengi seçimi imkanı da sunulmaktadır. 6 adet font rengi kullandığımız için 6 adet ImageButton tanımlandı. Her butonun tıklandığında çalıştıracağı fonksiyonu clickimagebuttons fonksiyonu olarak belirlendi. Bu fonksiyon butonların tıklanması olayında çağrıldığı için bir adet View parametresi geçirildi. Ayrıca font rengini tutan bir adet Color değişkeni tanımlandı. Bu değişken kullanıcı hiçbir seçim yapmadığı için font renginin siyah olmasının sağlanması için siyah değeri verildi. Yani kullanıcı font rengi seçimi yapmadıysa default olarak font rengi siyah yapılacaktır. clickimagebuttons fonksiyonunda öncelikle fonksiyonun hangi buton tarafından çağrıldığı kontrol edilir. Hangi buton tarafından çağrıldıysa color değişkeni ilgili butonun rengine dönüştürülür. Daha sonra drawtext fonksiyonu çağrılarak resim oluşturulur ve ImageView e aktarılır. Tablo clickimagebuttons fonksiyonu. public void clickimagebuttons(view v) if(v == red) color = Color.RED; else if(v == green) color = Color.argb(255,0,156,0);//0x009c00; else if(v == blue) color = Color.argb(255,0,0,156);//0x00009c; else if(v == white) color = Color.WHITE; else if(v == kahve) color = Color.argb(255,148,74,0);//0x944a00; else if(v == black)
37 31 color = Color.BLACK; img = drawtext(gokturk_text,2*gokturk_text_width, 2*Gokturk_Text_Size, font, color); GokturkImg.setImageBitmap(img); Save sınıfında resmi kaydetme veya paylaşma olmak üzere iki seçenek vardır. Kaydetme için kullanıcıya arka plan rengini beyaz veya şeffaf yapma seçimi sunulur. Beyaz seçilirse resim JPEG formatında kaydedilir. Transparan seçilirse PNG formatında kaydedilir. Paylaşma seçeneğinde ise resim JPEG formatında oluşturulur ve arka plan beyaz yapılır. Çizim işlemini drawtext fonksiyonu yapmaktadır. Bu fonksiyon çizilecek metni, metin kutusunun genişlik değerini, metnin boyutunu, font tipini ve renk değerini parametre olarak alır. Öncelikle bir TextPaint nesnesi oluşturulur ve metin bu nesneye çizilir. Ardından genişlik ve yükseklik değerleri uygun olacak şekilde ayarlanmış bir Bitmap nesnesi oluşturulur. Ardından bir Canvas nesnesi oluşturulur ve bu nesne bitmap üzerine yerleştirilir. Değişiklikler artık Canvas nesnesi üzerinde yapılır. Canvas üzerine TextPaint nesnesi ile oluşturulan metin çizimi yerleştirilir ve işlem tamamlanmış olur. Bu fonksiyon geriye Bitmap nesnesini döndürür. Tablo drawtext fonksiyonu. public static Bitmap drawtext(string text, int textwidth, int textsize, Typeface font, int textcolor) TextPaint textpaint; textpaint = new TextPaint(Paint.ANTI_ALIAS_FLAG Paint.LINEAR_TEXT_FLAG); textpaint.settypeface(font); textpaint.setstyle(paint.style.fill);
38 32 textpaint.setcolor(textcolor); textpaint.settextsize(textsize); StaticLayout mtextlayout = new StaticLayout(text, textpaint, textwidth, Layout.Alignment.ALIGN_NORMAL, 1.0f, 0.0f, false); // Create bitmap and canvas to draw to Bitmap b = Bitmap.createBitmap(textWidth, mtextlayout.getheight(), Bitmap.Config.RGB_565); Canvas c = new Canvas(b); // Draw background Paint paint = new Paint(); paint.setstyle(paint.style.fill); paint.setcolor(color.white); c.drawpaint(paint); // Draw text c.save(); c.translate(0, 0); mtextlayout.draw(c); c.restore(); return b; Kaydet butonuna basıldığında Image_Save fonksiyonu çağrılır. Bu fonksiyon ekranda bir AlertBox penceresi oluşturur ve kullanıcıya arkaplan seçimini sunar. Eğer Transparan seçilirse Create_Image fonksiyonu çağrılır. Beyaz seçildiğinde ise Create_Image_Jpeg fonksiyonu çağrılır. Create_Image fonksiyonu öncelikle resmi drawtext fonksiyonu ile arka plan şeffaf olacak şekilde çizdirir. Ardından string tipinde resmin adını alacak bir değişken oluşturulur ve DataFormat sınıfı ile o anki tarih bu değişkenin içine yazılır. Bu tarih oluşturulan dosyanın
39 33 ismi olacaktır. Böylece hiçbir zaman bu isim tekrarlanmayacak dolayısıyla aynı isimde birden çok resim olma durumu ortadan kaldırılacaktır. Ardından cihazın ana dizinini alan bir değişken tanımlanır. Böylece ana dizinden başlayarak resim dosyasını nereye kaydedeceğimizi belirleyebilecektik. Daha sonra bir File nesnesi oluşturulup dosyanın tam yolu verilerek bu nesne çıkışa gönderilir. Sonraki adımda resim PNG formatına dönüştürülerek %85 oranında sıkıştırılır ve çıkışa gönderilir. Son olarak medya içeriği yenilenir ve kaydetme işlemi tamamlanmış olur. public void Create_Image(Bitmap img) Tablo Create_Image fonksiyonu. img = drawtexttransparan(gokturk_text,2*gokturk_text_width, 2*Gokturk_Text_Size, font, color); String filename; filename = DateFormat.getDateTimeInstance().format(new Date()); try String path = Environment.getExternalStorageDirectory().toString(); OutputStream fout = null; file = new File(path, "/Download/"+filename+".png"); fout = new FileOutputStream(file); img.compress(bitmap.compressformat.png, 85, fout); fout.flush(); fout.close(); MediaStore.Images.Media.insertImage(getContentResolver(), file.getabsolutepath(), file.getname(), file.getname()); Toast.makeText(getApplicationContext(), "Metin arkaplanı saydam olacak şekilde Download dizinine kaydedilmiştir.", Toast.LENGTH_LONG).show(); return; catch (Exception e) e.printstacktrace();
40 34 Eğer arkaplan beyaz seçilirse bu kez Create_Image_Jpeg fonksiyonu çağrılır. Bu fonksiyon Create_Image fonksiyonu ile tek farkı resmi PNG formatında kaydetmek yerine JPEG formatında kaydetmesidir. Son olarak Paylaş butonuna basıldığında sharefunction fonksiyonu çağrılmaktadır. Bu fonksiyon önce Create_Image_Jpeg fonksiyonunu çağırarak resim dosyasını oluşturur. Daha sonra resmin kaydedildiği dizini bir değişkene kaydeder ve bu değişken ile dosyayı bulup paylaşıma açar. public void sharefunction(view v) Tablo sharefunction fonksiyonu Create_Image_Jpeg(img); String agendafilename = file.getabsolutepath(); ContentValues values = new ContentValues(2); values.put(mediastore.images.media.mime_type, "image/jpeg"); values.put(mediastore.images.media.data, agendafilename); Uri uri = getcontentresolver().insert(mediastore.images.media.external_content_uri,valu es); Intent shareintent = new Intent(Intent.ACTION_SEND); shareintent.settype("image/jpeg"); shareintent.putextra(intent.extra_stream, uri); startactivity(intent.createchooser(shareintent, "Paylaş")); 2.5. Tasarım
41 35 Uygulamada ekran tasarımlarının adaptif olmasına özen gösterilmiştir. Her ne kadar adaptif olarak tasarlansa da metnin uzunluğundan ya da size boyutundan kaynaklanan kaymalar oluşmaktadır. Bunun için yatay, dikeyde ve tablet ekranları olarak üç kısma ayırılarak tasarım yapılmıştır. Uygulama kodlanmaya başladığında sadece ana ekran için kabaca bir tasarım yapılmıştır. Bu kaba tasarım bir buton ve 2 tane edittext ten oluşmaktadır. Bir edittext ten Latin metin girdisi alınmakta ve diğer edittext e Göktürkçe karşılığı yazdırılmaktaydı. Kodlama bittikten sonra asıl tasarıma geçilmiştir Intro Ekranının Tasarımı Intro ekranı kullanıcı uygulamayı ilk açtığında çıkan ekrandır. Bir Activityt oluşturulduğunda otomatik olarak activity_activityname.xml bir layout yani ekran tasarımı için xml dosyası oluşturulur. Tasarımda LinearLayout(vertical) tasarımın iskeletini oluşturmaktadır. Bu layouta ne araç eklenirse eklensin alt alta yerleştirmektedir. LinerLayout un içine üç tane FrameLayout yerleştirilmiştir. FrameLayout ise içine yerleştirilen araçları ortaya, sağa, sola yaslama gibi işlemleri yapmamızı sağlamıştır. Bu üç FrameLayot un içerikleri aşağıdaki gibidir: 1. FrameLayot: KTU nun logosunu içeren bir ımageview içerir. Bu logo drawable klasörünün içinden alınmaktadır. FrameLayoutun genişliği mobil cihazın genişliği kadar seçilmiştir. Bu da match_parent a karşılık gelmektedir. Yüksekliği layotun içindeki aracın içeriği kadar ayarlanması sağlanmıştır. Bu ise wrap_content e denk gelmektedir. <FrameLayout Tablo FrameLayot xml kodları.
42 36 android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.009"> <ImageView android:layout_width="107dp" android:layout_height="107dp" android:layout_gravity="center" /> </FrameLayout> 2. FrameLayout: Bu layout bu projeyle ilgilenenlerin adlarının ve önemli bir notun yer aldığı layouttur. Bu yazılar alt alta olduğu için bu layoutun içine vertical LinearLayout yerleştirilmiştir ve LinearLayout un içine ise üç tane textview yerleştirilmiştir. Tablo FrameLayot xml kodları. <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1"> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content"
43 37 android:textappearance="?android:attr/textappearancelarge" android:layout_weight="0.53" android:gravity="center" android:autotext="false" android:textsize="15dp" android:textstyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancemedium" android:textsize="15dp" android:gravity="center" android:textstyle="bold" android:layout_gravity="center_horizontal" /> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancelarge" android:layout_weight="0.53" android:gravity="center" android:autotext="false" android:textsize="14dp" />
44 38 <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancelarge" android:layout_weight="0.53" android:gravity="center" android:autotext="false" android:textsize="15dp" android:textstyle="bold" /> </LinearLayout> </FrameLayout> 3. FrameLayout: Bu layoutta ise buton vardır. Tablo FrameLayot xml kodları. <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_weight="0.009"> <Button android:layout_width="match_parent" android:layout_height="wrap_content"
45 39 android:layout_gravity="center" android:onclick="skip_button_fonk" android:visibility="visible" /> </FrameLayout> Yukarıda yapılan işlemlerin hepsi dikey ekran görüntüsü içindir. Şekil 2.1. Intro ekranının dikey görüntüsü. Yatay ekran görüntüsü için ise layout klasörünün altına layout-land adında bir klasör oluşturulur ve layout klasörünün içindeki tüm xml dosyaları aynen bunun içerisine kopyalanır. Tasarımdaki bozulmaların önüne geçmek için logonun boyu ve metnin büyüklüğü değiştirilmiştir.
46 40 Şekil 2.2. Intro ekranının yatay görüntüsü. Tablet ekranlar için ise layout-large klasörü oluşturulur. Daha geniş bir ekran olduğu için layout_weight değerleri değeri artılarak daha geniş alanlara yayılması sağlanmıştır. Yatay ekranda yapıldığı gibi metnin büyüklüğü ve logonun büyüklüğü ayarlanmıştır Hakkında Ekranının Tasarımı Hakkında ekranı About ekranının tamamen aynısıdır Ana Ekran Tasarımı Ana ekran tasarımında yatay ve tablet ekranları için ayrı bir değer değiştirme yapılmamıştır çünkü herhangi bir boyut ve metin boyutu sorunu olmadığı ve dikeyde adaptif olarak tasarlandığı için mobil cihazlar kendileri ayarlayabilmektedirler. Bu tasarımda da en dışta bir Vertical LinearLayout kullanılmıştır. Böylece araçların alt alta sıralanması sağlanmıştır. LinearLayout a dört tane FrameLayout yerleştirlmiştir. Birinci FrameLayout ta iki tane buton vardır ve butonlar biri sola diğer sağa dayalı olarak yerleştirlmiştir.
47 41 Tablo Birinci FrameLayout xml kodları. <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <GridLayout android:layout_width="match_parent" android:layout_height="59dp"> <Button android:layout_width="160dp" android:layout_height="match_parent" android:onclick="translate" android:gravity="center" android:layout_gravity="top center_vertical" android:width="173dp" /> <Button android:layout_width="160dp" android:layout_height="match_parent" android:layout_gravity="center_vertical right" android:onclick="converttobitmap" android:enabled="false" android:textsize="15dp" android:gravity="center top" android:paddingtop="3dp" />
48 42 </GridLayout> </FrameLayout> İkinci layoutta ise Latin edittext in etiketi olan iki tane textview yer almaktadır. Sola dayalı olarak Latin sağa dayalı olarak Latin in karşılığı olan Göktürkçe kelime yazmaktadır. Tablo Birinci FrameLayout xml kodları. <FrameLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.001" android:layout_gravity="bottom" android:foregroundgravity="bottom"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancemedium" android:text="latin:" android:layout_gravity="left center_vertical" android:textstyle="bold" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textappearance="?android:attr/textappearancemedium"
49 43 android:gravity="bottom right" android:layout_gravity="right center_vertical" android:textstyle="bold" /> </FrameLayout> Üçüncü layoutta Latin metinin girildiği edittext bulunmaktadır. Tablo Birinci FrameLayout xml kodları. <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="0.48"> <EditText android:layout_width="fill_parent" android:layout_height="fill_parent" android:inputtype="textmultiline" android:ems="10" android:clickable="false" android:background="#ffffff" android:gravity="top" /> </FrameLayout> edittext in içeriği ile boyutu değiştirdiği için bu değişikliğin olmaması için layout_height 0(sıfır) olarak setlenmiştir. Dördüncü ve beşinci layoutlar üçüncü ve ikinci olarak aynıdır. Üçüncü layoutta Türk
50 44 kelimesi ve Göktürkçe karşılığı vardır. Şekil 2.2. Ana ekranının görüntüsü Kaydetme ve Paylaş Ekranının Tasarımı Bu ekranda Intro ekranına oldukça benzemektedir. Yine bir Vertical LinearLayout kullanılmıştır. Bu layoutun içerisinde de 3 tane FrameLayout bulunmaktadır. Birinci FrameLayout ta iki tane buton bulunmaktadır ve bunlardan biri sola diğeri ise sağa dayalı olarak konumlandırılmıştır.
51 45 Tablo Birinci FrameLayout xml kodları. <GridLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <Button android:layout_width="160dp" android:layout_height="wrap_content" android:onclick="image_save" android:gravity="center" android:layout_gravity="top center_vertical" android:width="173dp" /> <Button android:layout_width="160dp" android:layout_height="wrap_content" android:gravity="center" android:layout_gravity="right center_vertical" android:onclick="sharefunction" /> </GridLayout> İkinci FrameLayout ta imageview konumlandırılmıştır. Bu imageview yüksekliği içeriği ile aynı olması istendiği için layout_height="wrap_content" olacak şekilde seçilmiştir. <FrameLayout Tablo İkinci FrameLayout xml kodları. android:layout_width="match_parent"
MOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME Hedefler Bu üniteyi çalıştıktan sonra; Layout çeşitlerinin ve aralarındaki farkları açıklayabilir, Android projesinde farklı Laoyut kullanabilir, Android projesinde TextView,
DetaylıAndroid Ders Notları
Android Ders Notları 1. Yeni Bir Proje Başlatma Android Studio programında yeni bir proje başlatıyoruz. İlk olarak karşımıza resim 1 deki gibi bir pencere gelecek. Burada Application name kısmına proje
DetaylıAndroid Studio TextView ve EditText Öğr.Gör. Utku SOBUTAY
Android Studio TextView ve EditText Öğr.Gör. Utku SOBUTAY TextView 2 TextView, yazıları, sonuçları kullanıcıya göstermek için kullanılır. TextView sadece yazıları gösterir, yazılarda herhangi bir değişiklik
DetaylıKARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÖKTÜRKÇE SANAL KLAVYE TASARIM PROJESİ İklim Rabia ÖĞDÜM 2015-2016 GÜZ DÖNEMİ KARADENİZ TEKNİK ÜNİVERSİTESİ MÜHENDİSLİK
DetaylıProje 1. Arayüz Tasarımı
Proje 1. Arayüz Tasarımı 1. Yeni bir android projesi oluşturalım. Proje ismi: ArayuzTasarimi ve aktivity adı: ArayuzTasarimi olarak yazalım. 2. Projejiyi oluşturduktan sonra bize hazır olarak gelen dosyalar:
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Fonksiyon Tanımlamak Java da Döngüler Java da Şart İfadeleri Uygulamalar Java da Fonksiyon Tanımlamak JAVA DA FONKSİYON TANIMLAMAK 4 Fonksiyonlar;
DetaylıAndroid ile SQLLite Veri Tabanı
Android ile SQLLite Veri Tabanı Android de verileri SQLLite veritabanında tutmak için: Adım-1) File-New Project buradan projeye bir isim verelim ( örneğin: AndroidSQLite), Next ile bir sonraki adımda API
DetaylıINPUTBOX KULLANIMI. Komut Düğmesine uygulanan algoritma örneği
INPUTBOX KULLANIMI InputBox komutu, Basic programlama dilinde program algoritması içinde ekran aracışığı ile bir sorgu yönlendirerek, kullanıcının bilgi girmesini sağlamak amacıyla kullanılır. Bu komutun
Detaylı1 - Button Kontrolu Nasıl Yapılır?
1 - Button Kontrolu Nasıl Yapılır? Graphical Layout Activity_main.xml
DetaylıActivity Context.startActivity Activity, AndroidManifest
Activity sınıfı tarafından oluşturulan nesneler uygulama içinde kullanılan ekranları temsil ederler. Kullanıcı yeni bir ekrana geçtiğinde Context.startActivity metoduyla bu ekran başlatılır. Eğer yeni
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kapsülleme (Erişim Denetleyiciler) Java da Sınıf Oluşturmak Java da Nesne Oluşturmak Java da Constructor Kavramı Java da This Kavramı Java da Constructor
DetaylıUZAKTAN EĞİTİM MERKEZİ
ÜNİTE 2 VERİ TABANI İÇİNDEKİLER Veri Tabanı Veri Tabanı İle İlgili Temel Kavramlar Tablo Alan Sorgu Veri Tabanı Yapısı BAYBURT ÜNİVERSİTESİ UZAKTAN EĞİTİM MERKEZİ BİLGİSAYAR II HEDEFLER Veri tabanı kavramını
DetaylıYazılım Kodlama ve İ simlendirme Standartları v1.0
Yazılım Kodlama ve İ simlendirme Standartları v1.0 İçerik Yazılım Kodlama ve İsimlendirme Standartları... 2 1. Amaç... Hata! Yer işareti tanımlanmamış. 2. Kapsam... Hata! Yer işareti tanımlanmamış. 3.
DetaylıKarabük Üniversitesi, Mühendislik Fakültesi...www.ibrahimcayiroglu.com WEB TEKNOLOJİLERİ
WEB TEKNOLOJİLERİ VISUAL STUDIO DA YENİ BİR PROJE OLUŞTURMA Visual Studio (VS) programını çalıştırdığımızda karşımıza boş bir ekran gelir. Yeni bir proje oluştururken File>New>Project yolu kullanılarak
Detaylı13 Aralık 2007. Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Raporlar. Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz
13 Aralık 2007 Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL Đlgili Modül/ler : Raporlar KULLANICI TANIMLI RAPORLAR Kullanıcı Tanımlı Raporlar Bölümünden Yapabildiklerimiz Kendi isteklerinize özel rapor tasarımları
DetaylıDinamik Kodlama. [X] Fusion@6. [X] Yeni Fonksiyon
Dinamik Kodlama Ürün Grubu Kategori Versiyon Önkoşulu [X] Fusion@6 [X] Yeni Fonksiyon @6 Uygulama @6 Serisi ürünlerde, kullanıcı arabirimlerinin her yerine eklenen dinamik kodlama özelliği ile, programın
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Veri Tipleri ve Özelilkleri Değişken Tanımlama Kuralları Değişken Veri Tipi Değiştirme (Type Casting) Örnek Kodlar Java Veri Tipleri ve Özelilkleri
DetaylıANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java da Kalıtım Kavramı Java da Çok Biçimlilik Kavramı Fonksiyonların Çok Biçimliliği Yapıcı Fonksiyonun Çok Biçimliliği Java da Kalıtım Kavramı 4 Kalıtım;
DetaylıBTP 207 İNTERNET PROGRAMCILIĞI I. Ders 9
BTP 207 İNTERNET PROGRAMCILIĞI I Ders 9 Dizi Değişkenler (Array) 2 Tek değişkende birden fazla bilgi tutulmak istendiğinde kullanılır. Kullanım şekli: var dizi_adı= new Array(eleman1, eleman2,, elemann)
DetaylıBLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ. BLM401 Dr.Refik SAMET
BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi KULLANICI ARAYÜZ BİLEŞENLERİ 1 GİRİŞ (1/6) Arayüz bileşenleri kullanıcı ile uygulama arasındaki etkileşimleri gerçekleştirmektedir. Arayüz bileşenleri
DetaylıApp İnventor-Pide Sipariş Uygulaması
EĞİTİMDE BİLGİSAYAR PROGRAMLAMA FİNAL SINAVI App İnventor-Pide Sipariş Uygulaması 1)Ekran Tasarımı, ekranda kullanılan elementler ve özellikleri Bütün işlemler tek bir ekrandan yapılmaktadır. Arka plan
DetaylıAndroid Kaynakları (Resources)
Android Kaynakları (Resources) Android Resources (Kaynakları) res/drawable : çizim (resim) dosyalarının bulundu kaynak res/layout : layout (tasarım) dosyaları tanımlıdır res/menu : menu dosyalarını barındırır
DetaylıAndroid Database SQLLite
Android Database SQLLite Android Mimarisi Android İşletim sistemi, adres defteri, telefon arama, notification, 2D/3D grafik, Database, security/encryption, camera, ses, input/output, web.. gibi kütüphaneler
DetaylıOrkestra Ürünler. Ana Sayfa / Orkestra Ürünler
DILLER YARDIM SISTEME GIRIŞ Orkestra Ürünler Ana Sayfa / Orkestra Ürünler 1- Satış Faturalarının İHRACAT Faturası olarak Gönderilebilmesi İhraç kayıtlı e-faturaların Logo'da "İhracat" modülünde oluşturulması
DetaylıWebInstaller. 1. Kurulum Đçin Gereksinimler
WebInstaller Ürün Grubu [X] Fusion@6 [X] Fusion@6 Standard Kategori [X] Yeni Fonksiyon Versiyon Önkoşulu @6 Uygulama E-Netsis.Net uygulamasının kurulumu Netsis\ENetsis.Net\Kurulum dizininde bulunan NetsisWebInstall.exe
DetaylıBLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi UYGULAMA KAYNAKLARI. BLM401 Dr.Refik SAMET
BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi UYGULAMA KAYNAKLARI BLM401 Dr.Refik SAMET 1 GİRİŞ (1/2) Uygulamalarda kullanılan kaynaklara örnekler: ekran yerleşimi; karakter dizileri; resim dosyaları;
DetaylıFatura Dinamik Kodlama İyileştirmeleri
Fatura Dinamik Kodlama İyileştirmeleri Ürün Grubu Kategori Versiyon Önkoşulu [X] Redcode Enterprise [ ] Redcode Standart [ ] Entegre.NET [X] Yeni Fonksiyon 5.0 Uygulama Netsis paketlerinin tüm modüllerinin
DetaylıJava da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )
Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism ) BBS-515 Nesneye Yönelik Programlama Ders #9 (16 Aralık 2009) Geçen ders: Java Applet lerde bileşen yerleştirme türleri ( applet layouts
DetaylıAndroid Cep Telefonu Programlama
Number: (5-2015) SCIENCE AND TECHNOLOGY INFORMATION SHARING Article Web Page: www.ibrahimcayiroglu.com Android Cep Telefonu Programlama (Android Mobile Phone Programming) Kaan KARAPINAR *, İbrahim ÇAYIROĞLU
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
Konsol Uygulaması Oluşturma Konsol uygulaması oluşturmak için program açıldıktan sonra Create: Project ya da New Project seçeneği tıklanabilir. New Project penceresini açmak için farklı yollar da vardır.
DetaylıGörsel Programlama DERS 03. Görsel Programlama - Ders03/ 1
Görsel Programlama DERS 03 Görsel Programlama - Ders03/ 1 Java Dili, Veri Tipleri ve Operatörleri İlkel(primitive) Veri Tipleri İLKEL TİP boolean byte short int long float double char void BOYUTU 1 bit
DetaylıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME Hedefler Bu üniteyi çalıştıktan sonra; Android projesi oluşturabilir, Android projesini çalıştırabilir, Android projesi genel yapısını açıklayabilir, Activity kavramını açıklayabilir,
DetaylıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME Hedefler Bu üniteyi çalıştıktan sonra; BaseAdapter yapısından miras alabilir, ListView bileşenine özel layout ve adapter oluşturabilir, WebView bileşenini kullanarak web sayfalarını
DetaylıListview Kullanımı. Aşağıdaki örnekte bir ListView'ı birkaç ülke ismiyle dolduracağız.
Listview Kullanımı Mobil cihazlarda kullanıcılara birbiriyle ilişkili verileri listeyle vermek çok tercih edilen bir yöntemdir. Kullanıcı listedeki veriler içinde tek parmağıyla yukarı-aşağı sürükleme
Detaylı4 Front Page Sayfası Özellikleri
4 Front Page Sayfası Özellikleri İsterseniz Frontpage penceresinin sağ tarafından, isterseniz araç çubuklarından faydalanarak yeni bir sayfa açın. Frontpage te çeşitli sayfa şablonları bulunmaktadır. Ancak
DetaylıBil101 Bilgisayar Yazılımı I. M. Erdem ÇORAPÇIOĞLU Bilgisayar Yüksek Mühendisi
Bil101 Bilgisayar Yazılımı I Bilgisayar Yüksek Mühendisi Editör Disk 1)Kaynak kodlar editör aracılığı ile oluşturulur. (.c) Kaynak dosya Önişleyici Disk 2)Önişleyici kodlar içerisindeki ilk işleme işini
DetaylıJavascript. 1) Notepad++ aşağıdaki kodları yazıp deneme.html olarak kaydedelim. 2) Biraz önceki sayfa sadece html kodların içeriyordu.
Javascript Html sayfalarının içine yazılarak, sayfayı daha etkileşimli hale getirir. click olayları, uyarı mesajları gibi hareketlerle sayfayı daha dinamik hale getirir. Javascript olmadan yazılan html
Detaylıwww.elektrikogretmenleri.com
FIREWORKS (MENU OLUŞ TURMA) 1 Önce Başlat menüsü Programlar Adobe Web Premium CS3 Adobe Fireworks CS3 kısayol simgesi ile Fireworks programı açılır. 2 Fireworks programı açıldığında Karşımıza gelen Yeni
DetaylıBilgisayar Grafiğine Giriş Ders Notları
Bilgisayar Grafiğine Giriş Ders Notları picturebox1.imagelocation = @"C:\dosyakonum\resimdosyasi.png"; Image img = Image.FromFile(@"C:\dosyakonum\resimdosyasi.png "); picturebox1.image = img; Image img
DetaylıProgramın Adı: Eğitim ve Öğretim Yöntemleri Proje/Alan Çalışması. Diğer Toplam Kredi AKTS Kredisi
Dersin Adı-Kodu: Bilgisayar II Yarıyıl Teori Uyg. Lab. Programın Adı: Eğitim ve Öğretim Yöntemleri Proje/Alan Çalışması Krediler Diğer Toplam Kredi AKTS Kredisi I (Güz) 28 28 - - - 56 3 6 Ders Dili Türkçe
DetaylıDiziler İndisli Değişkenler
Diziler İndisli Değişkenler Aynı tür bilgileri (öğrenci isimleri, şehir isimleri, kapı numaraları, fakülteler vbg.) bellekte tutmak için kullanabileceğimiz listelere dizi adı verilir. Dizi kullanmanın
DetaylıNESNEYE YÖNELİK PROGRAMLAMA
NESNEYE YÖNELİK PROGRAMLAMA Rastgele sayı üretme C#'ta program yazarken (özellikle oyun programlarında) rastgele değerlere ihtiyaç duyabiliriz. Rastgele sayı üretebilmemiz için öncelikle Random sınıfı
DetaylıExcel Nedir? Microsoft Excell. Excel de Çalışma sayfası-tablo
Microsoft Excell Excel Nedir? Excel programı; veriler üzerinde hesap yapabilme, verileri tabloya dönüştürebilme, verileri karşılaştırıp sonuç üretebilme, grafik oluşturma, veri yönetimi yapabilir. http://mf.dpu.edu.tr/~eyup
Detaylı12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 )
12 TBT / WEB TASARIM ve PROGRAMLAMA ( Not 3 ) 25.09.2017 METİN VE GÖRÜNÜM DÜZENLEME ETİKETLERİ : etiketleri dökümana başlık eklemek için kullanılır. etiketinde ki x ifadesi 1 den 6 ya kadar
DetaylıHer Select Case bloğu, mutlaka End Select ile bitmek zorundadır.
Select Case Komutu: VB de karar sürecinde kullanılan komutlardandır. Bu yapı ile sadece bir değişkenin durum kontrolü yapılır. Kontrolü yapılacak değişkenin genel olarak alabileceği değerler belirli ise
DetaylıSunum İçeriği. Programlamaya Giriş 22.03.2011
Programlamaya Giriş Nesne Tabanlı Programlamaya Giriş ve FONKSİYONLAR Sunum İçeriği Nesne Tabanlı Programlama Kavramı Fonksiyon tanımlama ve kullanma Formal Parametre nedir? Gerçel Parametre nedir? Fonksiyon
DetaylıVERİ TABANI YÖNETİM SİSTEMLERİ I
BÖLÜM 11 11. SQL de JOIN (BİRLEŞTİRME) İŞLEMİ 11.1. JOIN (Birleştirme) İşlemi Veri tabanı kayıtları oluşturulurken bütün bilgiler bir tabloda değil de, birkaç tablo üzerinde tutulur. Bu dataların daha
DetaylıBMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN
BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN TEMEL AMAÇLAR Bir dairenin yarıçapını kullanıcıdan alarak dairenin alanını hesaplamak istediğimizi düşünelim. Eğer girilen değer
DetaylıAdım Adım SPSS. 1- Data Girişi ve Düzenlemesi 2- Hızlı Menü. Y. Doç. Dr. İbrahim Turan Nisan 2011
Adım Adım SPSS 1- Data Girişi ve Düzenlemesi 2- Hızlı Menü Y. Doç. Dr. İbrahim Turan Nisan 2011 File (Dosya) Menüsü Excel dosyalarını SPSS e aktarma Variable View (Değişken Görünümü 1- Name (İsim - Kod)
DetaylıHAL KAYIT SİSTEMİ HAL HAKEM HEYETİ İŞLEMLERİ KULLANICI KILAVUZU
HAL KAYIT SİSTEMİ HAL HAKEM HEYETİ İŞLEMLERİ KULLANICI KILAVUZU Ekim 2015 İçindekiler 1. HAL KAYIT SİSTEMİ NE GİRİŞ... 2 2. HAL HAKEM HEYETİ BAŞVURU OLUŞTURMA SÜRECİ... 2 2.1. BAŞVURU İÇİN GEREKLİ BİLGİLERİN
DetaylıGörsel Programlama DERS 02. Görsel Programlama - Ders02/ 1
Görsel Programlama DERS 02 Görsel Programlama - Ders02/ 1 Kodun Tekrar Kullanımı ve Kalıtım(Inheritance) Nesneye yönelik programlamanın diğer programlama paradigmalarına karşı bir avantajı kodun yeniden
DetaylıC Programlama Dilininin Basit Yapıları
Bölüm 2 C Programlama Dilininin Basit Yapıları İçindekiler 2.1 Sabitler ve Değişkenler......................... 13 2.2 Açıklamalar (Expresions)........................ 14 2.3 İfadeler (Statements) ve İfade
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
DİZİLER Bellekte ard arda yer alan aynı türden nesneler kümesine dizi (array) denilir. Bir dizi içerisindeki bütün elemanlara aynı isimle ulaşılır. Yani dizideki bütün elemanların isimleri ortaktır. Elemanlar
DetaylıTemel Bilgisayar Programlama Final Sınavı Çalışma Notları
Diziler Temel Bilgisayar Programlama Final Sınavı Çalışma Notları (Dr. Övünç ÖZTÜRK, Dr. Tahir Emre KALAYCI) (İnşaat Mühendisliği ve Gıda Mühendisliği Grupları İçin) Diziler aynı türden bilgileri saklamak
DetaylıArahWeave Dobby Hızlı Başlangıç
ArahWeave Dobby Hızlı Başlangıç I ÇI N D EKI LER NASIL YAPILACAĞINI ÖĞRENECEKSİNİZ: ARAH WEAVE' D E KU M AŞ G Ö RÜ N Ü M Ü BİR ÖRGÜ ÇİZİN Çİ FT KATLI B İ R Ö RG Ü O LU ŞTU RU N İ PLİ KLERİ N REN G İ N
DetaylıProgramlama Dili Prensipleri. Lab Notları 4
Programlama Dili Prensipleri Lab Notları 4 1. Karar Yapıları IF Yapıları Karar yapıları olarak C/C++ ile Java programlama dilleri birbirine yakın ifadeler içerir. Bir programın akışı yukarıdan aşağı doğru
DetaylıBilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı. Öğr. Gör. Cansu AYVAZ GÜVEN
Bilgisayar Teknolojileri Bölümü Bilgisayar Programcılığı Programı Öğr. Gör. Cansu AYVAZ GÜVEN NESNE TABANLI PROGRAMLAMA Java Değişkenler ve Veri Tipleri Operatörler JAVA Java Java SUN bilgisayar şirketince
DetaylıİNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ
İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ AD SOYAD: TESLİM TARİHİ: OKUL NO: TESLİM SÜRESİ: 2 hafta ÖDEV NO: 5 1- BANKA
DetaylıJava Programlamaya Giriş
Java Programlamaya Giriş Amaçlar: 1. Java kurulumu (Netbeans ve JDK) 2. Java Netbeans Kullanımı 3. Program yazma Java Kurulumu Java dili ile programlama yapabilmek için java jdk ve java kodlama yapılabilecek
DetaylıBOOTLOADER MANUAL DOCUMENT
BOOTLOADER MANUAL DOCUMENT 1 İçindekiler Tablosu 1- Ön Bilgilendirme... 3 2- Genel Dosya Yapısı... 3 3- Kullanılan Yazılım Dili... 4 4- Programı Özelleştirmek... 4 4.1- Windows için... 4 4.2- Linux için...
DetaylıCss Stillerinin Nesneyi Etkileme Yolları Ve Sırası, Diez, Nokta, Yıldız, Class Css De Neyi İfade Eder.
Ve Sırası, Diez, Nokta, Yıldız, Class Css Css stillerinin nesneyi etkileme yolları ve sıraları: (#), (.), (*), (class) CSS de nasıl kullanılır bu başlık altında bulabilirsiniz. Css Nedir? HTML bize metin
DetaylıTemel Bilgisayar Programlama
BÖLÜM 11: : Birçok programda, bazı verilerin disk üzerinde saklanmasına gerek duyulur. Bütün programlama dillerinde, sabit disk sürücüsü (Hard Disk Drive, HDD) üzerindeki verileri okumak veya diske veri
Detaylı1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.
1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız. [10 puan] int param = 30; int result = 300; if (param > 45) result
DetaylıDers 8: Metotlar. barisgokce.com
Ders 8: Metotlar Hazırlayan : Öğr. Grv.. Barış GÖKÇE Đletişim im : www.barisgokce barisgokce.com Metotlar C# içerisinde bir veya birden fazla kod bulunduran kod bloklarıdır. Bir nesnenin veya sınıfın programı
DetaylıData Structures Lab 1 2012-Güz
Data Structures Lab 1 2012-Güz C# Ortamı Tanıtımı ve Uygulama Geliştirilmesi Visual Studio 2010 Ortamının Temini -NYG'ndan MSDN üyeliği için başvuru dilekçesi alınıp doldurulmalı ve yine NYG'ye teslim
DetaylıMODÜL BİLGİ SAYFASI KODU :
MODÜL BİLGİ SAYFASI KODU : ALAN : ORTAK MODÜL : DOKÜMAN HAZIRLAMA SÜRE : 40 /32 ÖN KOŞUL : Ön koşulu yoktur. AÇIKLAMA : Bu modül bilgisayar ve donanımlarının sağlandığı ortamda uygulamalı olarak işlenmelidir.
DetaylıGiriş. TÜRKİYE ESNAF VE SANATKARLARI KONFEDERASYONU Online İşlemler (Dolaşım Belge İşlemleri A.TR) Kullanma Kılavuzu
Giriş Bu kılavuz; Türkiye Esnaf ve Sanatkarları Konfederasyonu (TESK) Online İşlemleri arasında yer alan A.TR Dolaşım Belgesi ve Menşe İspat belgelerinin elektronik ortamda düzenlenmesi, onaylanması ve
DetaylıDIV KAVRAMI <style> position: absolute
DIV KAVRAMI Div tag i katman oluşturmak için kullanılır. Div ler sayfanın komple bir satırını kaplarlar, bu yüzden tag i içerisinde şekillendirilip, boyutlandırılmaları gerekir. Aşağıdaki şekilde
DetaylıBİLİŞİM TEKNOLOJİLERİ DERSİ WORD 2007 SORULARI
1-) Word nedir? Hesap Programıdır Tablo - Grafik Programıdır Kelime İşlem Programıdır İşletim Sistemidir BİLİŞİM TEKNOLOJİLERİ DERSİ WORD 2007 SORULARI 9-) Yandaki butonun görevi nedir? Kes Kopyala Yapıştır
DetaylıBM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta
Ön bilgi: Özyineli fonksiyon tanımlanabilmeli. Dizilerin fonksiyon parametresi veya geri dönüş değeri olarak kullanımı bilinmeli. 1. Klavyeden girilen sayı n olmak üzere [1..n] aralığındaki sayıların toplamı
DetaylıATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ 2013-2014 BAHAR DÖNEMİ ÖDEV-3
ATATÜRK ÜNİVERSİTESİ BİLGISAYAR MÜHENDİSLİĞİ BÖLÜMÜ BM 104- NESNEYE YÖNELİK PROGRAMLAMA DERSİ 2013-2014 BAHAR DÖNEMİ ÖDEV-3 (Son Teslim Tarihi: 06.06.2014 17:30 a kadar ) Teslim: Arş. Gör. Ferhat Bozkurt
DetaylıKodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.
GİRİŞ Algoritması tasarlanmış (metin olarak yazılmış, sözde kodlarla kodlanmış veya akış diyagramı çizilmiş) bir problemi/işlemi, bilgisayar programlama dillerinden birisiyle kodlamak son derece kolaydır.
DetaylıBMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler
BMÜ-111 Algoritma ve Programlama Bölüm 5 Tek Boyutlu Diziler Yrd. Doç. Dr. İlhan AYDIN 1 Problem 100 adet sayı okumak istediğimizi düşünelim. Bu sayıların ortalaması hesaplanacak ve sayıların kaç tanesinin
Detaylı4.1. Grafik Sihirbazını kullanarak grafik oluşturma
BÖLÜM14 4. EXCEL DE GRAFİK Excel programının en üstün özelliklerinden bir diğeri de grafik çizim özelliğinin mükemmel olmasıdır. Excel grafik işlemleri için kullanıcıya çok geniş seçenekler sunar. Excel
DetaylıYeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.
ASP.NET DERS 1 Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik. Gelen ekranda Visual C# seçildikten
DetaylıJava String İşlemleri
Java String İşlemleri Karakterler (Characters) "char" kelimesi bir karakter tanımlamak için kullanılır. Karakter tek tırnak içine alınmalıdır. Bir char'ın aralığı 0 ile 65536 arasındadır. Char türü işaretsiz
DetaylıİLAÇ RUHSAT e-başvuru FORMU KULLANICI KILAVUZU. Doküman: EUP Revizyon No: R-06 Tarih: 26.05.2014
Sayfa: 0/15 İLAÇ RUHSAT e-başvuru FORMU KULLANICI Revizyon Tarihi Açıklama Revizyon No 10.05.2010 İlaç ruhsat e-başvuru formu kullanıcı kılavuzunun ilk yayınlanma tarihi 10.06.2010 e-başvuru formundan
DetaylıJAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ
JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ Java programlama dili, Java SUN bilgisayar şirketi tarafından 1991 yılında geliştiril Program bloklar halinde yazılır ve bloklar { } ile oluşturulur. Komutlar aynı satıra
DetaylıUzaktan Eğitim Uygulama ve Araştırma Merkezi
JAVA PROGRAMLAMA Öğr. Gör. Utku SOBUTAY İÇERİK 2 Java Kodlarına Yorum Satırı Eklemek Java Paket Kavramı Java Kütüphane Kavramı Konsoldan Veri Çıkışı ve JOPtionPane Kütüphanesi JOptionPane Kütüphanesi Kullanarak
DetaylıC Dersleri Bölüm 3 : Program akışı
İzmir Ekonomi Üniversitesi Bilgisayar Topluluğu www.ieubt.org C Dersleri Bölüm 3 : Program akışı Sorularınız için : programlama@ieubt.org Hazırlayan : Görkem PAÇACI (gorkem.pacaci@std.ieu.edu.tr) C Program
DetaylıGörsel Programlama (Visual Programming) 2.Hafta
Görsel Programlama (Visual Programming) 2.Hafta 2016-2017 Bahar Dönemi Class Yapısı ve Form 1Muhammer İLKUÇAR, MAKÜ-2015 BURDUR Class - Obje Nesne (Nesne tabanlı programlama) İnsan ırkının ortak özelliklerini
Detaylı3. Metin ve Görünüm Etiketleri
3. Metin ve Görünüm Etiketleri Bu bölümü bitirdiğinizde, Metin biçimlendirme etiketlerinin neler olduğunu ve nasıl kullanıldığını, Yatay çizginin nasıl çizildiğini ve özelliklerinin neler olduğunu, Satır
Detaylı15xx versiyonu / 05.05.2016 Tarihli Arşivin İçeriği
15xx versiyonu / 05.05.2016 Tarihli Arşivin İçeriği 1-Mikro Yazılım olarak, e-fatura Özel Entegratörlük yönteminde, Veriban Firması ile Ocak 2016 itibariyle sözleşmemiz sona ermiş olmasına rağmen, devam
DetaylıGiriş. TÜRKİYE ESNAF VE SANATKARLARI KONFEDERASYONU Online İşlemler (Dolaşım Belge İşlemleri Menşe İspat D-8) Kullanma Kılavuzu v4
Giriş Bu kılavuz; Türkiye Esnaf ve Sanatkarları Konfederasyonu (TESK) Online İşlemleri arasında yer alan MENŞE İSPAT D-8 Dolaşım Belgesi ve Menşe İspat belgelerinin elektronik ortamda düzenlenmesi, onaylanması
DetaylıELN1001 BİLGİSAYAR PROGRAMLAMA I
ELN1001 BİLGİSAYAR PROGRAMLAMA I DEPOLAMA SINIFLARI DEĞİŞKEN MENZİLLERİ YİNELEMELİ FONKSİYONLAR Depolama Sınıfları Tanıtıcılar için şu ana kadar görülmüş olan özellikler: Ad Tip Boyut Değer Bunlara ilave
DetaylıE-fatura Yenilikler. E-fatura uygulaması ile ilgili çeşitli yenilikler 8.0.4 seti ile birlikte yayınlandı:
E-fatura Yenilikler Amaç ve Fayda E-fatura uygulaması ile ilgili çeşitli yenilikler 8.0.4 seti ile birlikte yayınlandı: Gelen e-faturaların alış faturasının yanı sıra genel dekont olarak da kaydedilmesi
DetaylıKod Listeleri Genel Yapısı
Cari hesap, Stok, Hizmet, Kasa, Banka, Vergi, Döviz, Çek&Senet vb. master tanımlarda yeni kayıt girişi, değişiklik, izleme, silme ve kopya oluşturma ekranları kod tanım ekranı olarak adlandırılır. Kod
DetaylıHSancak Nesne Tabanlı Programlama I Ders Notları
ComboBox Bir Windows açılan kutu sunu temsil eder. ComboBox kontrolü, kullanıcıların bazı değerleri açılan bir listeden seçmesini sağlar. Listeye tasarım anında veya çalışma anında öğe eklenebilir. Listeye
DetaylıBu sisteme uygun veri girişi ve veri entegrasyonu İşletme Defter modülünden yapılabilmektedir.
26 Mart 2017 İlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL İlgili Modül/ler : İşletme Defteri DEFTER-BEYAN SİSTEMİ ENTEGRASYONU Defter-Beyan Sistemi, serbest meslek erbabı, işletme hesabı esasına göre defter
Detaylı1-) Word 2007 nedir? A-) Hesap Programıdır B-) Tablo - Grafik Programıdır C-) Kelime İşlem Programıdır D-) İşletim Sistemidir
1-) Word 2007 nedir? A-) Hesap Programıdır B-) Tablo - Grafik Programıdır C-) Kelime İşlem Programıdır D-) İşletim Sistemidir 2-) Microsoft Word 2007 programında kağıt boyutu, kenar boşlukları ile ilgili
DetaylıMOBİL UYGULAMA GELİŞTİRME
MOBİL UYGULAMA GELİŞTİRME PELİN YILDIRIM FATMA BOZYİĞİT YZM 3214 Celal Bayar Üniversitesi Hasan Ferdi Turgutlu Teknoloji Fakültesi Bu Derste Veri Saklama 2 Veri Saklama Veri Saklama her appnin ihtiyaci
DetaylıELEKTRONİK TABLOLAMA Aritmetiksel işlemler ve mantısal karşılaştırmaların yapıldığı programlar elektronik tablolama programlarıdır.
ELEKTRONİK TABLOLAMA Aritmetiksel işlemler ve mantısal karşılaştırmaların yapıldığı programlar elektronik tablolama programlarıdır. Günümüzde yaygın olarak kullanılan elektronik tablolama programlarından
Detaylı7. BELGEYE RESİM EKLEME, YAZIM ve ÇİZİM ÖZELLİKLERİ
BÖLÜM 7 7. BELGEYE RESİM EKLEME, YAZIM ve ÇİZİM ÖZELLİKLERİ 7.1. Belgeye Resim Eklemek Word programı; belgelere kendi içindeki resim galerisinde bulunan resimleri veya başka programlarda düzenlenmiş resimleri
DetaylıGiriş. TÜRKİYE ESNAF VE SANATKARLARI KONFEDERASYONU Online İşlemler (Dolaşım Belge İşlemleri Menşe Şahadetnamesi) Kullanma Kılavuzu v5
Giriş Bu kılavuz; Türkiye Esnaf ve Sanatkarları Konfederasyonu (TESK) Online İşlemleri arasında yer alan MENŞE ŞAHADETNAMESİ Dolaşım Belgesi ve Menşe İspat belgelerinin elektronik ortamda düzenlenmesi,
DetaylıTÜRKİYE ESNAF VE SANATKARLARI KONFEDERASYONU Online İşlemler (Dolaşım Belge İşlemleri EURO-MED) Kullanma Kılavuzu v6
Giriş Bu kılavuz; Türkiye Esnaf ve Sanatkarları Konfederasyonu (TESK) Online İşlemleri arasında yer alan EUROMED Dolaşım Belgesi ve Menşe İspat belgelerinin elektronik ortamda düzenlenmesi, onaylanması
DetaylıNESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2
NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 2 JAVA DA PROGRAM DENETİMİ VE OPERATÖRLER Java programlama dilinde temel tipleri ve nesneleri yönlendirmek ve değiştirmek için operatörler kullanılır. Atamalar sağ taraftaki
Detaylı// hataları işaret eden referans
System sınıfı java.lang.object java.lang.system public final class System extends Object System sınıfı, java.lang paketi içindedir. Platformdan bağımsız olarak sistem düzeyindeki eylemleri belirleyen dingin
DetaylıDeğişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while
Değişkenler Değişkenler bir bilginin bellekteki konumunu temsil eden sembolik isimlerdir. Bilgisayarda hemen hemen tüm işlemler bellekte yapılır. Program çalıştırıldığında değişken ve bu değişkenin türüne
DetaylıEnlil programını açtığımızda karşımıza gelen ilk ekrandır.bu ekranda özel tanımlanmış kullanıcı kodu ve parola ile programa giriş sağlanmaktadır.
Enlil programını açtığımızda karşımıza gelen ilk ekrandır.bu ekranda özel tanımlanmış kullanıcı kodu ve parola ile programa giriş sağlanmaktadır. Özel tanımlanmış kullanıcı kodu ve parola girildikten sonra
DetaylıVISUAL BASIC DE İŞLETİM SİSTEMİ DENETİM KOMUTLARI VE FONKSİYONLARI
VISUAL BASIC DE İŞLETİM SİSTEMİ DENETİM KOMUTLARI VE FONKSİYONLARI Visual basic kodları yazılırken, yapılması istenen işlerin yanı sıra sistem ile ilgili bazı işlerin yapılması da (klasör oluşturma silme,
Detaylı