Karşılaştırmalar, Döngüler, Diziler, Java Sertifikası

İsimli konu WH 'Programlama' kategorisinde, DonArtuR üyesi tarafından 13 Nisan 2010 tarihinde yazılmıştır. Karşılaştırmalar, Döngüler, Diziler, Java Sertifikası hakkında bilgi ve tartışmalar.

  1. Karşılaştırmalar
    Karşılaştırmalar, genelde bir karşılaştırmanın sonucuna göre belirtilen komut veya komutları çalıştırırlar. Eğer birden fazla komut kullanılacak ise blok içinde olmalıdır. Tek bir komut için buna gerek yoktur. Örneğin; a değişkenin değerinin bir olup olmadığını kontrol ediyoruz. Eğer a=1 ise a=2, değil ise a=1.
    Görüldüğü üzere karşılaştırma, boolean bir değer döndürmelidir. Yani true (doğru) veya false (yanlış) değerini döndürmelidir ki bu değere göre işlenecek komutlar belirlenebilsin. Java'da karşılaştırma yapmak için "if...else..." kullanılır. Formatı şu şekildedir:
    if (karşılaştırma)
    { karşılaştırmanın sonucu
    doğru ise işlencek komutlar
    }
    else
    { karşılaştırmanın sonucu
    yanlış ise işlencek komutlar
    }
    Yukarıdaki örneği java formatında yazarsak :
    if (a==1) // Java'da = operatörü atama için kullanılır.
    // Karşılaştırma için == operatörünü kullanılır.
    a=2;
    else
    a=1; // Tek komut olduğu için blok içine alınmasına gerek
    yoktur.
    Eğer birçok karşılaştırma varsa, iç içe karşılaştırmalar (if ) kullanılabilir. Sonucu nümerik olan karşılaştırmalar için "switch...case..." komutu kullanılır. Bu komut, sadece nümerik değerler için kullanılır. Formatı şu şekildedir:
    switch (değişken)
    {
    case 1: // değişkenin değeri 1 ise
    break;
    case 2:{
    // değişkenin değeri 2 ise
    break;
    }
    default: // yukarıdaki değerler haricindeki değer ise
    break;
    }
    Döngüler
    Java 'da üç tane döngü işlemi vardır. "for" döngüsünün yapısı aşağıdaki şekildedir. for (ilk değer; test; değer artırma/azaltma) Bu yapıda görülen ilk değer ifadesi, değişkeninizin alacağı ilk değerdir. Test ifadesinde ise basit veya kompleks bir karşılaştırma kullanabilrisiniz. Değer arttırma veya azaltma ise değişkeninizin o anki değerini değiştirecek bir ifadedir. "for" döngüsünü örnek kullanımı:
    for (sayac=0;sayac<3;sayac++)
    Bu örnekte, sayaç değişkenine ilk değer olarak sıfır verilmiş ve her döngüde bir arttırılması istenmiş. Döngüden çıkma koşulu ise sayaç değişkeninin 3 ve daha yukarı değerleri olarak belirlenmiş. Bu durumda sayaç değişkeni 0,1,2 değerleri için döngüye girecektir. "for" döngüsünden sonra bir komut veya blok komutları gelebilir. "while" döngüsünün yapısı şu şekildedir: while (test). Test ifadesi "for" döngüsündeki ile eşdeğerdir. Örnek:
    sayac=0;
    while (sayac<3)
    {
    //komutlar
    sayac++;
    }
    "do" döngüsünün yapısı:
    do
    {
    //komutlar
    } while (test);
    "do" döngüsünün "while" döngüsünden farkı en az bir kere döngüye girmesidir.
    Tüm döngülerde "break" komutu döngüden çıkılmasını, "continue" komutu ise bir sonraki değere geçmeyi sağlar.
    Diziler
    Java'da diziler nesnedirler, C'deki gibi hafızada yer kaplayan pointer değillerdir. Java 'da diziler, C 'ye göre daha güvenilirdir. Dizilerin elemanlarına gelişigüzel değerler atayamazsınız. Java, dizi elemanlarını sırasıyla kontrol eder. Dolayısıyla arada değer atanmamış bir elemana rastlanırsa hata oluşur. Bu da C'de çıkan hafıza bozulmalarını önler. Java'da dizi kullanmak için ilk önce dizinin tipi verilir. Tip verilirken dizinin büyüklüğü belirtilmez.
    int numbers[]; // Integer diziler için
    String myStrings[]; // String diziler için
    Diğer metod ise tipin arkasına köşeli parantez koymaktır.
    String[] myStrings; // String diziler için
    İkisi de tanımlamada aynıdır. Her ikisi de kullanılabilir. Size hangisi daha kolay geliyorsa onu kullanın. Java dizileri örneklerden de görüldüğü üzere tüm veri tipleri için kullanılabilir. Sonraki adım ise dizinin "new" operatörü kullanılarak yaratılmasında, bu adımda dizinin büyüklüğü de belirtilir.
    int numbers[] = new int[5]; // 5 büyüklüğünde integer dizi
    String myStrings[] = new String[20]; // 20 büyüklüğünde string dizi.
    Bu adımdan sonra diziler yaratılmış oldu. Dizinin her bir elemanına varsayılan değer atanır. Varsayılan değerler integer veri tipi için "0 (sıfır)", string veri tipi için "null" değeridir. Dizi elemanlarına bu adımdan sonra değer atamak çok kolaydır. C++ 'da olduğu gibi Java 'da da dizilerin elemanları sıfırdan başlayan tamsayı değerleridir. Dizinin ilk elemanına değer atamak için:
    myStrings[0] = "ilk dizim";
    numbers[0] = 10;
    Java'da bir dizinin eleman sayısını (büyüklüğü) bulmak için "length" metodu kullanılır. Bu metodun döndürdüğü değer "int" tipindedir.
    int boyut=numbers.length // boyut=5 olur
    Java'da çok boyutlu diziler yoktur. Fakat bu tür diziler dizi içinde dizi oluşturularak simüle edilebilir.
    int k[][] = new int[5][4]; // 5-4 boyutunda bir dizi
    k[1][3] = 999; // Değer atama
    Bilgi Alma ve Yazdırma
    Ekrandan bilgi almak için BufferReader sınıfını kullanacağız. BufferReader giris=new BufferReader( new InputStreamReader (System.in)); Bu sınıfın readLine() metodunu kullanarak bilgiyi alıyoruz:
    try {
    String girilen=giris.readLine();
    } catch (IOException e ) { System.out.prinln(e);}
    try-catch bloğu olası bir hatayı yakalamak için kullanılıyor. Eğer bir hata oluşursa hatayı ekrana yazacak. Şimdi de girileni yazdıralım. Ekran birşey yazdırmak için System.out sınıfının println metodunu kullanacağız :
    System.out.println ("Girdiğiniz şey : " + girilen );
    println metodu ekrana verilen parametredeki yazıyı yazdıktan sonra imleci bir alt satıra geçirir. Şayet imlecin bir alt satıra geçmesini istemiyorsanız print metodunu kullanın. Ama bu metodu kullandığınızda ekrana bilginin çıkması için akabinde flush metodunuda kullanmalısınız. Şu şekilde :
    System.out.print("Ali ");
    System.out.flush();
    Java Sertifikası
    Java internet ortamına girdiğinde, javayı destekleyen browserlardaki buglar yüzünden çoğu kullanıcı java özelliğini kapatmak durumunda kalmıştı. Günümüzde javanın güvenliği artmış durumda. Bunda browserların buglarının azalmasının rolü olduğu gibi sertifika kavramınında büyük rolü vardır.
    Sertikasız/İşaretsiz Appletler Neler Yapabilir?
    Kullanıcıların bilgisayarında istenmeyen işlemlerin yapılmasını engellemek için, her browserın güvenlik sınırlamaları vardır. Bu güvenlik sınırlamasının türü browsera göre değişir. Günümüzdeki browserların java appletlerin için aşağıdaki güvenlik sınırlamaları vardır:
    - Appletler kullanıcının bilgisayarından veri okumaz ve yazamazlar.
    - Kullanıcının bilgisayarında program çalıştıramazlar.
    - Ağ bağlantısı sadece appletin bulunduğu server ile kurulabilir.
    - Sistem ayarlarını değiştiremezler.
    Bu güvenlik sınırlamalarına bakıldığı zaman normal bir applet sadece grafik veya yazı gösterme, ses ve animasyon işlemlerini yapabilir. Büyük işler için normal appletler uygun değildir ki küçük bir veri girişi dahi olamadan dişe dokunur uygulama yapmak mümkün değildir.
    Sertifikalı ve İşaretli Nedi?
    Appletlerin web sayfalarını daha görsel hale getirmekten başka bir işe yaramadığı çabuk anlaşıldı. Ama daha fazlasını; mesela kulanıcıdan bilgi almak ve yazmak; yapabilmek için güvenlik sınırlamalarını kaldırmak gerekiyordu. Fakat bunun mümkün olduğu güvenli olması için, appletler yeni browserlar için işaretlenebiliyor.
    Bunun için applet geliştiricisinin amacını belirten sertifaya ihtiyacı vardır. Sertifa browser okuyabileceği şekilde açıktır ve geliştiricinin adını ve kontrol kodu içerir. Bu sertifaka ile geliştirici appleti güvenli olarak işaretler. Başka hiç kimse bu sertifikayı kullanarak bir appleti işaretletyemez. Çünkü geliştirici appleti işaretlemek için sertifika ile birlikte verilen özel kodu kullanır.
    Kullanıcı, appleti çalıştırdığında ( applet olan bir web sayfasını çağırdığında ) browser appletin işareti ile sertifikayı karşılaştırır. Böylece appletin işareti sertifaka ile uyumlu ise çalıştırır. Bu şu anlama geliyor: Doğru işaretli bir appletin geliştiricisini kullanıcı applet yüklenirken görür. Ama sadece applet yüklenirken.
    İşaretli Appletler Neler Yapabilir?
    İşaretli bir applet yüklendiğinde kullanıcının karşısına bir pencere gelir. Bu pencerede sertifika hakkında bilgiler vardır ve kullanıcı onayı istenir. Kullanıcı bu bilgiler ışığında appletin çalışmasına izin verir veya vermez. Kullanıcının çalışmasını onaylamış bir applet normal programların yapabildiği her şeyi yapabilir.
    Bu Durumdaki Güvenlik
    Buradaki problem onaylama işleminin ya hep ya hiç mantığında işlemesidir. Bunun anlamı onayladığınız bir appletin gerçek amacının dışındaki verileride okuyabildiği veya istenmeyen bir yere veri yazabildiğidir. Tam anlamıyla erişim haklarının belirlenmesi programcılara ağır geldiği için çoğu programcı tarafından yapılmıyor. Yine de Microsoft ve Netscape'in browserları için erişim haklarının değişik şekilde belirlenmesi karşısında programcılar minimum düzeyde erişim hakkıyle yetiniyorlar.
    İkinci bir problem ise sertifikanın gerçekliğidir. Gerçek sertifikalar, programcı tarafından değil, programcının güvenilirliğine kefil olan şirketler tarafından oluşturulmuş sertifikalardır. Bu şirtketler para karşılığında sertifika oluşturmaktadır. Bir sertifika en az $200 başlayıp sertifikaya göre artmaktadır. Programcı yıllık olarak $100 başlayan fiyatlarıda ödemek zorundadır. Çoğu programcı için bu fiyatlar aşırı pahalı gelmektedir.
    En azından herkes bedava kendi sertifasını oluşturabilir. Fakat böyle bir sertifa, programcının gerçekte kim olduğunu ve amacının doğruluğunu belirtmez. Hatta test sertifikaları diye anılanlar istenen herhangi bir isim ile oluşturulabilir. Her ne kadar insanı korkutsada, bilinmeyen bir shareware programı denemekten daha güvenlidir. Appleti onaylamak veya onaylamamak bizim elimizde değil mi?
    Sertika Şirketleri
    Gerçek sertifakalar sertifa şirketleri ( Certificate Authority kısa CA ) tarafından veriliyor. Bu şirketler programncının yada şirketlerin amacını kontrol ettikten sonra sertifika veriyorlar. En tanınmış sertifika şirketleri VeriSign, Thawte ve BelSign.
    Her CA, vereceği sertifikaları kendi sertifikası altına tanımlar ki daha önceden güvenliğ belirlenmiş kendi sertifikaları gibi işlem grösünler. CA'lar kendilerine ait sertifikaları daha önceden browserlara tanımlanmış ve kurulmuştur. Maalesef bu şirketlerin verdikleri hizmetin bedeli yüksek. Bir defaya mahsus ücret $200 dan başlıyor, yıllık ücretler ise 100$ dan. Şuana kadar işaretli appletlerın yaygınlaşmamasının en büyük nedeni bu olsa gerek


    13 Nisan 2010
    #1
  2. Karşılaştırmalar, Döngüler, Diziler, Java Sertifikası Cevapları

soru sor

Karşılaştırmalar, Döngüler, Diziler, Java Sertifikası

Alakalı Aramalar:

  1. karsilastirma komutları java

    ,
  2. Java applet döngüler