Pages

C’DEN JAVA’YA GEÇEN GENETİK ÖZELLİKLER



Merhaba arkadaşlar bugün ki dersimizde C’den Java’ya geçen genetik bir özelliğe değineceğim.
Bilindiği üzere Java programlama dilinde kullanıcıdan alınan her değer String’dir bu yüzden dolayı, sayılarla ilgili bir işlem yapmak istiyorsak o sayıyı String’den Double ya da Integer’a çevirmemiz gerekiyor. Bu işlem için Java da çeşitli classlar ve metotlar kullanılmaktadır, bunlardan en bilineni “Integer.parseInt(); “ metodudur. Bir örnekle anlatacak olursak bu metodu Integer.parseInt(urunFiyatField.getText())); kullanımı bu şekilde. Gördüğünüz gibi  urunFiyatField adında bir textField’mız var buradan ürün fiyatı üzerinde işlem yapılması gerekiyor bu yüzden Integer.parseInt metodunu kullanıyoruz, urunFiyatField’dan aldığımız değer üzerinde ancak bu şekilde işlem yapabiliyoruz.
PEKİ, JAVA BU ÖZELLİĞİ NEREDEN ALDI?
                Bilindiği üzere Java, C++  programlama dili ile yazılmış bir programlama dilidir. Birçok özellikte C++’ın var olan yapıları ile oluşturulan kısa fonksiyonlar aracılığı ile kullanıcılara sunuluyor.  parseInt metodunun içerisinde barındırdığı çeşitli alt fonksiyonlar ile kullanıcıdan alınan sayıları String’den Integer’a dönüştürüyor, bu metot’un bulunduğu class’ın adı Integer classıdır.
                Şimdi Java’nın String’leri Integer’a dönüştürdüğü C’nin ise char [] dizilerini Integer’a ayrıştırdığı fonksiyonu yaptığım basit bir örnekle açıklayarak, bu sistemin nasıl çalıştığına dair ipucularını yakalamaya çalışalım.

Resim:1

/*Char [] dizisiden alınan değeri Integer’a çevirmek*/
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>//strdot'u kullanmak için gerekli kütüphane.

int main(int argc, char *argv[]){
int ayrisanDeger;//Tam Sayı değişken.
    char cumle[50];//karakter dizisi
    char cumle2[50];//karakter dizisi
    char *kuyrukPtr;//Pointer(gösterici) değişkeni
    char *kuyrukPtr2;//Pointer(gösterici) değişkeni
    int esc;
  
    while(esc!=27){//tus ESC'ye basılmadığı sürece aşağı daki işlemleri yap.
       printf("Integer bir deger ile baslayan cumle giriniz : ");
       gets(cumle);//gets scanf fonksiyonu gibi kullanıcıdan sayı ya da karakter almasını sağlar diziler aynı zamanda göstericidir o yüzden gets ile &(adres operatörü) kullanmadan kullanılabilir.
       printf("Integer bir deger ile baslayan ikinci bir cumle giriniz : ");
       gets(cumle2);
       ayrisanDeger =strtod(cumle,&kuyrukPtr);/*cumle dizisinin adresi kuyrukPtr'ye kopyalanıyor.
      Sonra strtod ile kuyrukPtr değişkenin içinde ki double sayısı ayrıştırıluyor */
      ayrisanDeger =strtod(cumle2,&kuyrukPtr2);/*cumle2 dizisinin adresi *kuyrukPtr2'ye kopyalanıyor.
      Sonra strtod ile kuyrukPtr değişkenin içinde ki double sayısı ayrıştırılıyor */
      ayrisanDeger=strtod(cumle,&kuyrukPtr)+strtod(cumle2,&kuyrukPtr2);
      //Integer sayıları tespit edilmiş ve ayrıştırılmış gösterici değişkenler toplanıyor.
      printf("Toplam TL %d\n", ayrisanDeger);//Ardından Ayrışan Değerin toplanan ekrana basılıyor.
      printf("1. kuyruk = %s\n",kuyrukPtr);//1.Ayrıştırılmış karakterler ekrana basılıyor
      printf("2. kuyruk = %s\n",kuyrukPtr2); //2.Ayrıştırılmış karakterler ekrana basılıyor
      printf("Cikis icin ESC'ye basiniz .\n");
     esc=getch();//27'nin tuş olduğunu algılatma
   }
system("PAUSE");//yapılan işlemin kullanıcı tarafından görünmesini sağladığı komut.   
return 0;
}           Gördüğünüz üzere arkadaşlar C de String sayıları Integer’a dönüştürme buna benzer bir şekilde gerçekleiyor, yazdığımız her parseInt metotdu. Buna benzer bir uygulama ile gerçekleşiyor. Bugün ki dersimiz bu kadar arkadaşlar ileri ki derslerimizde daha verimli konulara değineceğim bizi takip etmeye devam edin.


Not: bu makale Emrah DEDEOĞLU tarafından yazılmıştır. Öğretim Grv. Alper KAHRİMAN'nın katkılarıyla.


Share on Google Plus

About eclipseturkiye

This is a short description in the author block about the author. You edit it by entering text in the "Biographical Info" field in the user admin panel.
    Blogger Comment
    Facebook Comment

8 yorum:

  1. Bilgiler için teşekkürler devamını bekliyorum...

    YanıtlaSil
  2. Rica ederim, elbette ki devamı gelecek. yorumunuz için teşekkürler.

    YanıtlaSil
  3. Değerli bilgileriniz için Teşekkürler...

    YanıtlaSil
  4. paylaşım için tesekkürler ama birsey sormak istiyorum c# da kod yazarken sayıları cevirmek için sayi = int.Parse(Console.ReadLine()); kulanıyoruz ama gets(cumle); olayını anlamadım bunla ilgili bi paylaşımınız var mı ya da olacak mı ?

    YanıtlaSil
    Yanıtlar
    1. Merhaba Anna gets ve scanf kullanıcıdan kelime yada sayı almamızı sağlayan bir C fonksyonudur. Aşağıda kullanıldığı gibi.

      char karakterDizisi1[50];
      char karakterDizisi2[50];

      printf("Birinci cümleyi Giriniz:");
      scanf("%s",sayi1); //gets yerine scanf kullanıyoruz.

      printf("Ikinci Cümleyi Giriniz:");
      gets(karakterDizisi2);//scanf yerine gets kullanıyoruz.

      Anlaşıldığı üzere kullanıcıdan birşey aldırmak istediğimizde gets ve scanf ile bu işlemi yaptırabiliyoruz. gets işlemi kullanıcıdan sayı yada karakter aldırmamızı sağlıyor. ama scanf den en büyük farkı şudur sadece dizi değişkenlerine aldırabiliyoruz.

      bunun nedeni ise dizilerin(Array)aynı zaman da gösterici olmasıdır.
      scanf'te değişkenlerin adres yolunu &>>adres operatörüyle belirliyorduk, diziler için adres operatörü kullanmamıza gerek yok. çünkü dizinin zaten kendisi adrestir ve ram'de ki adresi bilinmektedir.

      Sil
    2. ilgilendiğiniz için çok teşekkür ederim paylaşımlarınızın devamını bekliyorum..

      Sil
    3. Rica ederim nedemek. tabiki devamı gelecektir, siz değerli kullanıcılarında katkılarını bekliyoruz, çünkü bilgi paylaştıkça çoğalır. iyi geceler diliyorum.

      Sil
  5. Kolay gelsin.
    Ben on parmak klavye çalışıyorum. İnternetim kısıtlı olduğu için online sitelerde pek fazla yazamıyorum. Bunun yerine kendi bilgisayarımda bir sayfa oluşturup offline olarak çalışmak istiyorum. Ancak bunun için ne yapmam gerektiğini bilmiyorum. Bana offline çalışan bir sayfa şablonu yazar veya editler misiniz?
    Mesela hizliyaz.com, 10fastfingers.com gibi.
    Ben sadece arada metinleri değiştirip çalışabileyim.
    Bazı sayfaları bilgisayarıma çektiğimde çalışıyor ama kodlardan anlamadığım için düzenleme yapamıyorum.
    Mesela hizliyaz.com çok güzel tasarlanmış. Yanlış karakter girildiğinde "input" alanının rengi kırmızı oluyor ve "split" özelliği çalışmıyor. Ta ki siz hatanızı düzeltinceye kadar. Ama 10fastfingers.com'da bu yok. Hatalı yazılan karakter, kelimeyi de hatalı olarak hafızaya alıyor. Üstelik test metnini karıştırıp karıştırıp veriyor kullanıcıya.. Yani rastgele kelimelerle çalışılıyor. Ayrıca noktalama işaretleri de kullanılmıyor. Bu yüzden skorlar bir hayli yüksek gözüküyor. Tabi bu gerçeği yansıtmıyor. Ama hizliyaz.com'da metin üzerinden çalışılıyor. Üstelik "input" alanının eventleri çok güzel. 10fastfingers.com global bir site. Yani dünyanın her yerinden oraya girenler oluyor. Geliştiricisi bu amaçla siteye çok güzel uygulamalar ekledi. Bunun için de çok rağbet görüyor. Üyelik sistemi, profil resmi, skorunuz ve resminizin live paylaşımı, son 50 testinizin grafiksel diyagramı vs gibi birçok güzel özellik eklemiş geliştiricisi. Ama dediğim gibi metin olarak değil de kelime olarak test yapılıyor orda. Bu da daktilografi çalışması imkanını sağlamıyor.
    Bu konuda yardımcı olursanız sevinirim.
    Hayırlı günler.

    YanıtlaSil