13 Ağustos 2013 Salı

Java'da If Kullanımı -8

Java'da karşılaştırma için kullanılan If operatörünün farklı kullanımını içeren bir örnek aşağıda verilmiştir.

import java.util.Scanner;
public class If8
{
public static void main(String args[])
{
Scanner bucky = new  Scanner(System.in);

int gecmenotu= 50;
int alinannot =45;

// if ( a==b ) if ( a =! b) if(a >= b) if(a <= b) şekillerinde kullanılabilir.
if(gecmenotu < alinannot )
{
System.out.println("Geçti");
}
else
{
System.out.println("Kaldı");
}

}

}

Ek Çalışma: Bu örneği kullanıcıdan alınan not bilgisi ile yeniden uyarlayın.

Java'da Arttırım Operatörleri -7

Java'da daha pek çok yazılım dilinde olduğu gibi, arttırımsal operatörler vardır.
Aşağıda hazırlamış olduğum örnekte birer birer yada çarpımsal olarak arttırımsal operatörlerin kullanımı görülmektedir.

import java.util.Scanner;
public class ArttrimOperator7
{
public static void main(String args[])
{
Scanner bucky = new  Scanner(System.in);

int elma= 5;
int armut = 3;
// Değişkenlere oluşturulması sırasındada değer atana bilir
elma++;
System.out.println(elma);
// Aynı işlem Print içerisindede yapılabilir
System.out.println(++elma);
armut*= 8;
System.out.println(armut);

}
}

Java'da Matematiksel Operatörler -6

Java'da temel 4 işlem için +,-,* ve / operatörleri kullanılabilir.

import java.util.Scanner;
public class MatematikOperator6
{
public static void main(String args[])
{
Scanner bucky = new  Scanner(System.in);

int kizlar,erkekler,insanlar;
//Double yerine int kullanılabilir ama sayılar uygun olmalı yoksa program sayıları yanlış bulacaktır.
kizlar = 6;
erkekler = 4;
insanlar = kizlar / erkekler;  // - + * /
System.out.println(insanlar);
}
}

Javada Basit Bir Hesap Makinesi - 5

Basit bir hesap makinesi yapmak için 3 farklı değişken kullandığımız bu örnekte.
Kullanıcıdan alınan double sayılar toplanarak sonuç konsolda gösterilmektedir.


import java.util.Scanner;

class HesapMakinesi5
 {
public static void main(String args[])
{
Scanner bucky = new  Scanner(System.in);
double num1, num2,sonuc;  //Çoklu değişken kullanımı
System.out.println("İlk Sayıyı Giriniz.");
num1 = bucky.nextDouble();
System.out.println("İkinci Sayıyı Giriniz.");
num2 = bucky.nextDouble();
sonuc = num1 + num2;
System.out.println(sonuc);
}
}

Java'da Kullanıcı Girişleri - 4

Java'da kullanıcının klavyeden girdiği bilgilerin alınmasını ve kullanıcıya tekrardan gösterilmesini sağlayan bir kod. Bu kod sayesinde UserInput ve import kısımları hakkında bilgi sahibi olabilirsiniz.

Programı çalıştırdıktan sonra aşağıda görülen konsola yazdığınız yazılar kullanıcı girişi olarak program tarafından alınarak Print özelliği kullanılarak tekrardan konsola yazılacaktır.

Java'da Değişkenler - 3

Javada Classın nasıl ekleneceğini 2.kayıtta görmüştük.
Buradada Java'da değişkenlerin nasıl kullanıldığı ile ilgili temel bir kod verilmiştir. Yeni bir class eklenip aşağıdaki kodu kullanabiliriz.





public class Degisken {
public static void main(String args[]) {
double kedi;
kedi = 5.23;
System.out.println("String Yazı Yazılabilir!");  // Println Alt Satıra Geçme.
System.out.print(kedi);

}
}

Java Eclips Satır Sayısını Gösterme -2


Satır sayılarını görmek için Eclipste
Window->Preferances->General->Editors->Text Editor  (Sol taraftaki) Show Line Numbers Menüleri kullanılır.

12 Ağustos 2013 Pazartesi

En Önemli Yazılım Hataları

Mariner 1 22 Haziran 1962

Fortran dilinde DO I = 1.10 yerine I=1,10 yazılması.

Yazılımındaki bir hata fırlatma sırasında roketin istenen yörüngeden ayrılmasına yol açtı. Kontrol yönetimi tarafından roket Atlantik Okyanusu’nda yok edildi.
Kazayla ilgili inceleme yapıldığında, bir kâğıda kurşun kalemle yazılmış bir formülün bilgisayara yanlış geçirilmiş olduğu ortaya çıktı. Böylece bilgisayar roketin yörüngesini yanlış hesaplamıştır.



1982 — Sovyet Gaz Hattı

CIA’e bağlı çalışan operatörler Sibirya gaz hattını kontrol etmek üzere satın alınan Kanada bilgisayar sistemine bir böcek yerleştirdiler. Bu böcek Sovyet incelemesinden geçecek, ama sonunda işletme anında başarısız kalacak bir ekipmanı araç olarak kullandı. Yerleştirilen böceğin hatalı çalışması sonucu gezegenin tarihinde en büyük nükleeer olmayan patlama meydana geldi.

1985-1987 — Therac-25 Tıp Kazası

Bir radyasyon terapi cihazı hatalı çalıştı ve çeşitli tıbbi tesislerde ölümcül düzeyde radyasyon verdi.
Daha önceki bir tasarım geliştirilerek yaratılmuş bulunan Therac-25 iki farklı tür radyasyon verilen “ileri” bir terapi sistemi idi. Ya düşük güçlü elektron ışını (beta parçacıklar) veya X-ışınları veriyordu.
Therac-25′in X-ışınları yüksek güçlü elektronların elektron silahı ile hasta arasına yerleştirilmiş bir metal hedefe çarptırılmaları ile yaratılıyordu. İkinci bir “ilerleme” de eski Therac-20 nin elektromekanik güvenlik bağlantılarının yazılım kontrolüyle yapılmasıydı.
Bu karara yazılımın daha güvenli olduğu düşüncesiyle varılmıştı. Mühendislerin bilmediği şey hem 20 hem 25′in hiçbir resmi eğitimi olmayan bir programcı tarafından yazılmış olduklarıydı. Bir görünmez hata nedeniyle, hızlı yazan bir klavye kullanıcısı kaza yaparak Therac-25′in elektron ışınını yüksek enerjili modda, fakat metal hedef yerinde olmadan, hastaya gönderecek şekilde çalışmasına yol açabilirdi. Böyle oldu ve en az 5 hasta öldü başkaları ciddi şekilde yaralandı.

1988 — Berkeley Unix Sisteminde Tampon Bellek Taşması:

Adına Morris Worm denen ilk İnternet solucanı bir tampon bellek yetersizliği sorunundan yararlanıp, bir günden az bir zaman içinde, 2000-6000 arası bilgisayara bulaştı. Bu konuyla ilgili kod gets() olarak ifade edilen bir standart girdi-çıktı kütüphanesi fonksiyonuydu. Bu fonksiyon ağ üzerinde bir metin satırı okur. Maalesef gets() fonksiyonunun girdiyi sınırlamayla ilgili bir kontrolü yoktur ve çok büyük bir girdi solucanın bağlanabildiği makinayı kontrolüne almasını sağlayabilir.

1988-1996 — Kerberos Rasgele Sayı Üreticisi Kazası:

Kerberos güvenlik sisteminin yazarları, programın rasgele sayı üreticisini uygun bir parametreyle beslemeyi ihmal edince, yetkilendirme için Kerberos’a dayanan bir bilgisayara izinsiz giriş yapmak mümkün hale geldi.

15 ocak 1990 — AT&T Bilgisayar Ağı Kazası

AT&T’nin #4ESS uzun mesafe şalterlerini kontrol eden yazılımının yeni sürümündeki bir görülmeyen bir hata, bu dev bilgisayarların komşu makinaların birinden belirli bir mesaj almaları durumunda çökmelerine neden oldu. Kısa süre sonra, her 6 saniyede 114 şalter çöküp yeniden çalışmaya başlar hale geldi. Böylece 9 saat boyunca 60 bin kadar kişi uzun mesafeli servis kullanamaz hale geldi. Sonuçta mühendisler yazılımın eski sürümünü yüklediler.

1993 - Intel Pentium İşlemcide Sorun

Bir silikon hatası Intel Pentium bilgisayar yongasının belli bir büyüklük aralığındaki ondalıklı sayıları bölerken hata yapmasına yol açıyordu. Örneğin 4195835.0 / 3145727.0 sonucu 1.33382 yerine 1.33374 olyordu. Bu yüzde 0.006 lık bir hataydı. Bu görünmez hata az sayıda kullanıcıyı etkiledi, ama halkla ilişkiler kâbusu yarattı. Piyasaya sürülmüş 3- 5 milyon arası yonga vardı. Başlangıçta Intel daha hassas hesaplamalara ihtiyacı olduğunu kanıtlayanlar için yonga değişişkliği yapmayı önerdi; ama sonunda teslim oldu, şikâyet eden herkesin yongasını değiştirmeyi kabul etti. Sonunda bu görünmez hata Intel’e 475 milyon dolara maloldu.

4 Haziran 1996 — Ariane 5 Flight 501

Ariane 4 roketinin çalışma kodu Ariane 5′te yeniden kullanılmıştı. Fakat Ariane 5′in daha hızlı olan motoru, roketin uçuş bilgisayarındaki bir aritmetik işlemde bir hatanın ortaya çıkmasına yol açıyordu. Hata, bilgisayar ifadeleriyle, 64 bitlik ondalıklı sayıyı 16 bitlik işaretli tam sayıya dönüştüren kodda idi. Daha hızlı motor 64 bitlik sayıların Ariane 5′te, Ariane 4 de olduğundan daha büyük olmasına yol açıyor ve böylece sayısal taşma durumu yaratıyor, o da uçuş bilgisayarının çökmesini getiriyordu. Flight 501′in destek bilgisayarı çöktü, 0.05 saniye sonra da ana bilgisayar çöktü. Çöken bilgisayarlar sonucu, roketin ana işlemcisi motorlara aşırı güç yüklenmesine yol açtı ve roket, fırlatıldıktan 40 saniye sonra, parçalandı.

Kasım 2000 — National Cancer Institute, Panama

Bir dizi kaza sonucu bir ABD firması olan Multidata Systems International tarafından yazılmış olan terapi planlama yazılımı, radyasyon terapisine girecek hastaya yollanacak uygun radyasyon dozunu yanlış hesapladı. Multidata’nın yazılımı bir radyasyon terapistinin, “blok” denen, sağlam dokuların radyasyondan korunmasını sağlayan metal kalkanın yerini bilgisayar ekranında belirlemesine olanak veriyordu.

F-18 çarpışması…

F-16 kullanılan similasyon progamındaki paremetrelerin düzgün olarak F-18 similasyonua aktarılmaması.

Yıl belirsizlikleri…

Mary Bandar 1992 yılında '88 doğumlu diğer çocuklarla birlikte, Winona, Minnesota bir anaokulu katılmak üzere davet aldı.
Mary 104 yaşında idi
----zaman.

Tarih,Zaman ve Tamsayılar

 A Washington D.C. Hastane bilgisayar sistemi çöktü 19 eylül, 1989.
tarih 01.01.1900 olarak değişti. 1979 yılında ABD'de, depremlere dayanacak şekilde bir nükleer santral tasarlandı. Ancak kullanılan bir simülasyon programındaki bir program hatası yüzünden reaktör kurulmadı.

Norwegian bank ATM…
10 kat para eksilen bakiye yok…
İngiliz bankası…
Bir yazılım kusuru yarım saat içinde yaptığı tek yönlü para trasferleri nedeni ile 2 milyar İngiliz sterlini kaybetti! Bankayı sonunda fon kurtarıldı.
Merkez bankası kur hesabı…
Avustralyalı bir adam, Sri Lanka Rupisini 104.500 $ değerine satın aldı. Ertesi gün 440.258 $ a bir başka bankaya sattı. İlk bankanın yazılım Rupi pozisyonda yanlış döviz kuru göstermişti. Bankanın açtığı davayı dolandırıcılık olmadığından  ilave olan 335,758 $ saklayabilirsiniz kararı verdi!





Hatalı Yazılımın Sonuçları

İletişim Kaybı.
Müşterinin yazılıma olan ilgisinin kaybı.
2 Taraflı güven kaybı.
Maliyet Artışı.
Zaman Aşımı
İlave hatalar.

Ulaşım: Ölümler, gecikmeler, ani hızlanma, fren yetersizlik.
Güvenlik kritik Uygulamalar: Ölüm, yaralanma.
Elektrik Güç: Ölüm, yaralanma, elektrik kesintileri, uzun vadeli sağlık tehlikeleri (radyasyon).
Para Yönetimi: Sahtekarlık, gizlilik ihlali, borsalar ve bankaların, negatif faiz oranları hesabı.
Yanlış sonuçlar seçimler kontrolü.
Hapishane Kontrolü: Kilitlerin açılması sonucu mahkumlar yanlışlıkla kaçması.
Kolluk: Yanlış tutuklamalar ve hapis cezaları