<< index         > bölüm 2                  


  BÖLÜM 1:   JAVAYA GİRİŞ

  
.. 8

1.1 NİÇİN JAVA PROGRAMLAMA DİLİ 8

1.2 JAVA PROGRAMINI YAZMA VE ÇALIŞTIRMA .. 9

1.3 JAVA PROGRAMLAMA DİLİ TEMEL DEĞİŞKEN TÜRLERİ 20

1.3.1 Boolean değişken türü . 20

1.3.2 char (harf) değişken türü . 20

1.3.3 Tam sayı değişken türleri (byte, short,int,long) 21

1.3.4 Gerçek sayı değişken türleri (float, double,long double) 22

1.4 JAVA NESNESİ OLARAK TANIMLANMIŞ TEMEL DEĞİŞKENLER .. 22

1.4.1 String nesne tipi değişkeni 22

1.4.2 Integer nesne tipi değişkeni 23

1.4.3 Double nesne tipi değişkeni 23

1.4.4 diğer nesne temelli değişken türleri 24

1.5 FİNAL TERİMİ VE SABİTLER .. 24

1.6 ARİTMETİK İŞLEMLER .. 24

1.7 JAVADA MANTIKSAL İŞLEMLER

1.8 JAVA DİLİNDEKİ BİT KOMUTLARI VE İŞLEMLERİ

1.9 JAVA DİLİNİN TEMEL KOMUTLARI 29

1.9.1 if - elseif - else mantıksal karşılaştırma yapısı 29

1.9.2 while tekrarlama yapısı 32

1.9.3 for tekrarlama yapısı 33

1.9.4 switch - case yapısı 35

1.10 ARİTMETİK İŞLEMLERDE DEĞİŞKEN TÜRÜ DEĞİŞTİRME (CASTİNG) OPERASYONU .. 39

1.11 SAYI DEĞİL VE SONSUZ SONUÇLARI 39

1.12 ALIŞTIRMALAR



  1.1 NİÇİN JAVA PROGRAMLAMA DİLİ

 

Java Programlama dili şu anda dünyadaki en popüler programlama dillerinden biri haline gelmiştir. Java SUN bilgisayar şirketince orijinal olarak elektrikli ev araçlarının (mikrodalga fırınları, buzdolapları , televizyonlar, uzaktan kumanda cihazları vs.) birbiriyle haberleşmesini sağlamayı amaçlayan bir proje içerisinde 1991 yılında geliştirilmeye başlandı. Orijinal adı bu dilin yaratıcıları James Gosling, Patrick Naughton, Chis Wartdh, Ed Frank ve Mike Sheridan tarafından Oak olarak konulan programlama dili daha sonra bu isimde başka bir programlama dili olduğu keşfedilince o anda bir kahvehanede kahve içen programlama gurubu tarafından kahve markasından esinlenerek Java olarak değiştirildi. Akıllı elektronik ev araçları pazarı SUN gurubunun tahminlerinden çok daha yavaş bir gelişme gösteriyordu. Bu yüzden Java dili projesi ticari bir geliştirme projesi olarak büyük olasılıkla iptal edilecekti. 1993 Yılında "World Wide Web" büyük bir atılım göstererek bütün dünyaya yayılmaya başladı. Javanın Dinamik Web sayfaları hazırlamadaki büyük potansiyelini gören SUN şirketi projeyi bu tarafa yönlendirdi ve bu javaya yeni bir canlılık ve yaşama umudu sağladı.

 

Mayıs 1995 de SUN javayı büyük bir konferansta tanıttı. Program iş dünyası tarafından derhal büyük bir ilgiyle karşılandı. Java Modern bilgisayar dünyasının ses, grafik işlem, haberleşme gibi ihtiyaçlarına cevap verebilen ve Ticari gayeler için hazırlanan bir Program dili olarak daha önceki bilgisayar dillerinin hiç birinin kapsayamadığı özellikleri içermekteydi. Bunun yanı sıra dil komut yapısı olarak C++ diline çok yakın olması da öğrenilmesini kolaylaştırıyordu. SUN Javayı "World Wide Web" de kullanmak isteyen herkese ücretsiz olarak sundu. Java internette yayınlanmasının ardından çok büyük bir patlama yaşadı. 1997 ye gelindiğinde dünyadaki bütün bilgisayar okullarında temel bilgisayar dili olarak gösterilmeye başlandı. Dünyada şu anda hala en çok kullanılan bilgisayar dili olan C++ dilinin yapılan hataları tam olarak denetlememesi programın çalışma hızını arttırma yönünden iyi bir özellik olsa da profesyonel programcılar dışında kullanılmasını sınırlandırıcı bir etki yapıyordu. Java ise bütün hataları bildiren yapısı ve modern bilgisayarın bütün fonksiyonlarına ulaşabilen kütüphaneleriyle programcıların çok daha kolaylıkla öğrenebileceği bir dildir. Burada hemen şunu da belirtelim. C dili hızlı çalışma amacı birinci planda tutularak yaratılmış bir dildir. Javada ise emniyet ilk planda yer almıştır. Hız açısından düşünüldüğünde java C (ve C++) diliyle rekabet edemez. zaten program derleyicisi de C++ dilinde yazılmıştır.

 

Javanın diğer önemli bir temel özelliği Nesne kökenli (object oriented) bir dil olmasıdır. Nesne kökenli diller, nesneleri gerçek dünyadakine daha benzer bir yapıda tanımlayarak anlaşılmalarını kolaylaştırırlar. Nesneleri gerçek dünyadaki gibi masa, sandalye, bilgisayar, gerçek gaz, ısı eşanjörü gibi tanımlayarak programlamak insan beyninin anlaması açısından çok daha kolaydır. Bundan önceki tam nesnel kökenli programlama dillerinden hiçbiri çok yaygınlık kazanmamıştı. Bu tür dillere Smalltalk,u Örnek verebiliriz. C++ nesnel kökenli programlama yapabilen bir dildir. Fakat yapısal (structural) birprogramlama dili olan C dilinin bir uzantısı olarak geliştirildiğinden tam anlamıyla nesnel kökenli bir dil olduğu söylenemez.

 

Java dilini geleceğin dili yapan diğer bir özelliği de çok kullanımlı (multi-tasking) ve paralel kullanımlı(multi-treading) bir dil olmasıdır. Çok kullanımlılık birden fazla işlemin aynı anda yapılabilmesinin tanımıdır. Paralel kullanımlılık ise birden fazla programın aynı anda hafızayı beraber kullanarak kullanılabilmesidir. Örnek olarak World ve Excel programlarının Windows NT ortamında aynı anda kullanılmasıdır. ADA gibi bazı eski Program dillerinde çok kullanımlılık programlanabiliyordu. Paralel kullanım olanaklarını sunan ilk bilgisayar dili ise javadır. Paralel kullanım paralel programlama kavramından ayrıdır ve karıştırılmamalıdır. Paralel programlanmada birden fazla Bilgi işlem Ünitesine (CPU ) ayrı programlar veya bir programın ayrı parçaları gönderilir. Paralel kullanımda ise bir CPU nun kullanım zamanı küçük parçalara ayrılarak değişik Program veya Program parçacıkları bu zaman paketçiklerini paylaşarak kullanırlar.

 

Javayı önemli bir Program dili haline getiren en önemli  özelliği ise kullanılan bilgisayardan bağımsız olmasıdır. Javada yazılan bir Program Unix, Machintosh, Windows 95 veya Windows NT veya herhangi bir 32 bit makinada hiç değiştirilmeden kullanılabilir. Java programlarının grafikleri "Wold Wide Web" sayfalarının programlama dili olan html (hypertext markup language) ile aktarılır. Bu yüzden html ve java programlarını birlikte kullanmak ve java programlarını gerçek zamanda www sayfalarında göstermek mümkündür. Kendi web sayfanızı veya webde yazılmış kitabınızı bütün dünyaya aktarırken yaptığınız analizleri de bu kitabın dinamik bir parçası olarak sunabilirsiniz. Bu Türkiye gibi ülkelerin dünyaya kapılarını daha kolay açmaları açısından oldukça önemli bir özelliktir.

 

Javanın HTML diliyle kullanılabilmesi, bazı kişilerde htmlin bir parçası olduğu gibi bir kavram gelişmesine yol açmiştir. Programlamaya yeni başlayanlar sık sık html ile javayı birbirine karıştırırlar. veya javanın HTML'nin bir uzantısı olduğunu düşünürler. Bu temelde oldukça yanlış bir varsayımdır. HTML  internet belgelerini birbirine bağlamak amacıyla geliştirilmiş bir belge işlem sistemidir ve bir programlama dili değildir. HTML ile javanın tek gerçek ilgisi HTML deki applet komutudur. bu komut yardımıyla java dilinde yazılmış programların sonuçları HTML ortamına dinamik olarak aktarılabilir.

 

  1.2 JAVA PROGRAMINI YAZMA VE ÇALIŞTIRMA

 

Her programda olduğu gibi java programlarında da ilk evre programı yazmaktır. Java programları her editör programıyla yazılabilirler. Örneğin Unix sistemlerinde vi veya emacs,windows 95 ve windows NT de DOS Edit, veya Windows Notedefteri (notepad) veya WordPad programları kullanılabilir. Bildiğiniz ve kullanmakta rahat olduğunuz herhangi bir editör programı varsa rahatlıkla kullanabilirsiniz. Windows Notedefteri (notepad) editörüyle ilgili karşılaşacabileceğiniz bir programı burada hemen belirtmekte yarar var. Bu program tüm dosyaların arkasını txt eki getirmeye çalışır. Programı direk içinde yazıp çalıştırabilen Microsoft Visual J++, Symantec Visual Café, Jpad, Borland JBuilder gibi Java geliştirme paketleri de mevcuttur. Bu kitapta bu paketler yardımıyla program yapılmasına direk olarak hiç değinilmemiştir. Kişisel olarak bu tür paketler java dilini öğrenme açısından bilhassa yeni programlama öğrenenlere çok fazla yardımı olacağını sanmıyorum, üstelik sadece o paketi kullanmayaı öğreneceğiniz için bir tür bağımlılığa sebep olabilirler. Fakat bu paketler uzman hale geldikten sonra işinizi kolaylaştırmak açısından çok yararlı olabilir.

 

Şüphesiz programı yazmadan önce Java compilerının bir kopyasını edinmeniz de gerekir. Java geliştirme seti (Java Developers kit - JDK) SUN bilgisayar şirketinin

 

http://www.java.sun.com

 

veya

http://www.javasoft.com

 

internet adreslerinden bedava çekilebilir. Çekme zahmeti  istemiyorsanız SUN bu programları CD formatında da satmaktadır. Sun programın kitaplar ve üçüncü el kaynaklarda verilmesine müsade etmemektedir. Ayrıca derleyici sürekli olarak yenilendiğinden orijinal kaynağından her zaman en yeni versiyonunu elde edebilirsiniz. Java ile yaptığınız lisans anlaşmasına göre program dilini bedava olarak kullanabilirsiniz, ancak satacağınız profesyonel bir program geliştirdiğinizde sun şirketine kazancınız üzerinden belirli bir yüzde ödemeniz gerekecektir.

 

Java programı isim.java seklinde editörle yazılır. Java programınız yazıldıktan sonra ilk step java derleyici (compiler) programıyla isim.class ara bilgisayar kodunu oluşturmaktır.

Java programını yazarken dikkat etmeniz gereken diğer bir özellik de javanın nesne sınıfının ismiyle dosyadaki isminin aynı olmasıdır. Bilgisayar konsol ekranında (DOS veya UNIX Console)

 

javac isim.java

 

Komutunu bilgisayara gönderdiğinizde programınızda hata yoksa java derleyicisi isim.class dosyasını yaratır. Eğer programınızda hata varsa hataların listesini verir. Programlamanın dili ingilizce olduğundan bu hata açıklamaları da ingilizcedir. Editör programına geri dönüp hataları düzeltmeniz, programı tekrar kaydetmeniz  ve sonra bu komutu tekrar denemeniz gerekecektir. Java programları iki ortam için yaratılabilir. Birincisi Konsol ortamıdır (DOS, Unix console gibi). Konsol ortamını kullanırken java dilinin konsol komutu java kullanılarak isim.class dosyası yerel bilgisayarın makine diline program çalışırken dönüştürülür.  Bu temelde bir tercüme (interpretation) işlemidir. Sonuç olarak java dilinde iki kademeli bir proses kullanılır, birinci işlemde java dosyası class dosyasına çevirilir (derlenir), ikinci işlemde ise class dosyası yerel bilgisayarın makine diline dönüştürülür. konsol ortamında çalıştırılan program sonuçları yine konsol ortamında alınacağı gibi pop-up pencere grafik ortamında da alınabilir. İkincisi ise internet browser penceresi (Applet) ortamıdır. Eğer Program konsol ortamında yazılmışsa

 

java isim

 

komutu kullanılarak sonuçlar ekranda veya açılan bir pencerede görülebilir. Eğer Program applet ortamında yazılmışsa java programına ilave olarak html dilinde isim.html dosyası açılır. En basit şekilde html  dosyası şu şekilde tanımlanabilir :

<html >

<applet code="isim.class" width=200 height=50 >

</applet >

</html>

 

Buradaki width pencerenin enini pixel olarak, height’da yüksekliğini yine pixel(görüntü noktası) olarak vermektedir. daha sonra bu dosya konsoldan

 

appletviewer isim.html

 

komutuyla çalıstırılabilir. Buradaki appletviewer komutu java program paketindeki basitleştirilmiş bir browser programıdır. Bu komut yerine isim.html dosyası herhangi bir  browser programına yüklenerek görülebilir. Burada hemen şunu not etmeliyiz: braowser program yazıcıları genelde java versiyonlarını kendi programlarına aktarmakta biraz yavaş kalmaktadırlar bu yüzden en yeni java derleyicisiyle derlediğiniz bir programı browser’inız göstermeyebilir. Buna karşılık java “plug-in” denilen küçük programlar geliştirmiştir. Diğer bir olasılıkta elbette eski java derleyicinizi hemen atmayıp bir süre daha (yeni versiyonu browser programları tarafından tam olarak tanınıncaya kadar) profesyonel applet programları geliştirirken kullanmanızdır.

 

Programcılıkta adeta adet haline gelen ilk uygulama daima o dilde ekrana Hosgeldiniz çiktisi almaktır. Bizde bu kuralın dışına çıkmayalım. Aşağıdaki listede ilk konsol programımız Hosgeldiniz.java görülmektedir.

 

Program 1.1   Hoşgeldiniz.java konsol programı

 

import java.io.*; //java girdi cikti sinifini cagir
class Hosgeldiniz
{
public static void main(String args[])
 {
 System.out.println("Java Sinifina Hos Geldiniz!");
 }
 }

 

bu programı çalıştırmak için

 

javac Hosgeldiniz.java

java Hosgeldiniz

 

komutlarını konsolda vermemiz yeterlidir
konsol çıktısı olarak:

 

Java Sinifina Hos Geldiniz!

 

Yazısını alırız.

Şimdi bu programdaki satırlara tek göz atalım.

 

import  java.io.*; Bu deyim java konsol girdi çıktı kütüphanesindeki metotları programımıza aktarır.

//java girdi cikti sinifini cagir
// işaretiyle başlayan yazılar bilgisayar tarafından kullanılamaz sadece programı okuyanı bilgilendirmek amacı taşır /* ..... */ işaretleriyle de verilebilir. Örneğin :

/* Bu kısımda yazılanlarla bilgisayar ilgilenmez
Sadece insanların programı anlaması içindir
*/

class  Hosgeldiniz Class (sınıf) nesne kökenli programlama yapısının temel taşıdır. Her Class'ın kendine özgü bir ismi olması gerekir. Daha önce yazılmış Class'lar import   deyimiyle programa çağırılabilirler. Yeniden yazılmaları gerekmez. Class yapısı ve tanımlamaları üzerinde daha sonraki bölümlerde çok daha detaylı bilgi verilecektir.

{ } başlatma ve bitirme : Sınıf tanımlaması da dahil olmak üzere Tüm Program parçacıkları { işaretiyle başlar ve } işaretiyle son bulur.  {} işaretleri arasında yazılan program parçacıklarını  normal metin yazılmasındaki paragraf kavramına benzetebiliriz. Ayrıca program koduna baktığımızda "; " işaretine sık sık rastlıyoruz. Bu işaret java komutunun bittiğini belirtir. Cümle yağısında kullanılan nokta ". " işareti gibi işlev görür. Java programlarını istersek " ;" ve "{} " ayraçlarını kullanarak tek bir satır olarak yazabiliriz. Fakat bu programın bizim tarafımızdan okunurluğunu zorlaştırır. Program kodunu yazarken boşluk ve satır aralıkları bırakarak insanlar tarafından programın okumasını kolaylaştırabiliriz. Modern programcılıktaki en büyük sorunlardan biri bigisayar kodlarının bakım ve onarımı sorunudur. Ticari olarak yazılan her programın belli bir ömrü olduğunu ve daha sonra başka bir programcı tarafından üzerinde tekrar çalışılacağını sürekli olarak hatırlamak zorundayız.

 

public static void main(String args[]) diğer dillerde fonksiyon (function), subroutine, procedure gibi adlarla anılan Program alt parçacığının başlığı. Bu Program parçacıkları javada Metot  (Method) adıyla anılır. Metotların girdileri ve çıktıları olabilir. Bu metotun adı main (ana Program) dır. String değişken türü args[] değişkeni girdi olarak girebilir. Bu metotta void  çıktı türü kullanılmıştır. Void kelimesi bu metotdan hiçbir çıktı alınmayacağını belirtir. public  metota dışarıdan ulaşılabilme izni verir.

 

System.out.println ("Java Sinifina Hos Geldiniz!"); Bu satır System.out sınıfından println metotunu çalıştırır. Bu metot method girişinde gönderilen String tipi değişkeni konsol çıktısına aktarır. Fortran dilindeki write(*,*) veya print*, c dilindeki printf, c++ dilindeki cout<<  terimlerinin javadaki tam karşılığıdır.

 

"Java Sinifina Hos Geldiniz!" stringi aynen aktarılırken içinde c dilinde kullanılan temel kontrol terimleri yer alabilir ve aynen c dilindeki anlamlarıyla kullanılabilir. Bu kontrol terimlerinden en yaygın olarak kullanılan bazıları:

 

\n   alt satıra geç

\t    bir sonraki tab’a atla

\r    gir tuşu bas

\\   \ işaretini yaz

\”   “ işaretini yaz

 

şeklinde gösterilebilir.

 

İkinci konsol programımız HosgeldinizSW.java Program 1.2 de verilmiştir. Bu program SWING kütüphanesinin alt kütüphanesi olan  JoptionPane kütüphanesi kullanılarak yaratılmıştır. Çıktı yazısı ekranda grafik pencere olarak belirir ve  Java sınıfına Hos geldiniz! mesajını verir. Tüm bu kütüphanelerin detayları ilerideki bölümlerde verilecektir. Şimdilik nasıl kullanıldıklarını öğrenmekle ve programlarımızı örnek programlara benzeterek yazmaya çalışacağız. Uzman programcılar isterlerse ilgili bölümlerden komut detaylarına derhal girebilirler.  

 

 Program 1.2   HosgeldinizSW.java programı

 

import javax.swing.JOptionPane ;

 

class HosgeldinizSW {

     public static void main (String args[])

     {

     JOptionPane.showMessageDialog (null,"Java sınıfına hoş geldiniz!",

     "HosgeldinizSW programı",JOptionPane.INFORMATION_MESSAGE);

     System.exit(0) ;

     }

}

 

Bu programı

 

javac HosgeldinizSW.java

ve

java HosgeldinizSW

komutlarını kullanarak çalıştırdığımızda

 

01001.JPG

HosgeldinizSW

Şekil 1.1 HosgeldinizSW dosyasının konsol SWING pop-up grafik çıktısı  kullanarak görülmesi

 

  Bu çıktıyı alabilmek için java SWING kütüphanesi içerisinde yer alan JOptionPane.showMessageDialog(....) metodunu kullandık.  Bu metodun görevi System.out.println metoduyla aynıdır. Farkı ise grafik ortamda çıktı vermesidir. Metot içindeki ikinci sırada verilen String tipi sabit , "Java sınıfına hoş geldiniz!" grafik çıktıya aktarılmıştır. Üçüncü sırada verilen string tipi "HosgeldinizSW programi" sabiti de grafik kutusunun adını belirtmiştir. JoptionPane.INFORMATION_MESSAGE komutu ise bilgi (information) mesajı penceresi açılacağını belirtmiştir. (grafikteki i harfi – information – bilgi kelimesinin baş harfidir). Bu alanda kullanabileceğimiz diğer alternatifler şunlardır :

 

JOptionPane.ERROR_MESSAGE         : hata mesajı   

JOptionPane.WARNING_MESSAGE    : uyarı mesajı  

JOptionPane.QUESTION_MESSAGE   : soru mesajı  

JOptionPane.PLAIN_MESSAGE           : sade (ikonsuz) mesaj

 

System.exit(0); metodu çıktı penceresinde görülen OK düğmesine basıldığında pencerenin kapanmasını sağlar. import javax.swing.JoptionPane; deyimi swing kütüphanesinde yer alan JoptionPane sınıfını çağırır. Programdan da görüleceği gibi sınıfımızın (class) adı HosgeldinizSW dir. Bir önceki programdaki gibi bu programda kullandığımız komutlar public static void main(String args[]) komutuyla tanımlanan ana metodun içinde yazılmıştır.

 

Üçüncü konsol program örneğimizde iki java programını birleştireceğiz İlk programımız BasicWindowAdaptor.java Program 1.3 de verilmiştir. Program 1.4 ise HosgeldinizSWF.java programını kapsamaktadır. BasicWindowMonitor programını bundan sonraki programlarımızda sık sık kullanacağız.

 

Program 1.3   BasicWindowMonitor.java  programı

import java.awt.event.*;

import java.awt.Window;

 

public class BasicWindowMonitor extends WindowAdapter

{

   public void windowClosing(WindowEvent e)

   {

     Window w=e.getWindow();

     w.setVisible(false);

     w.dispose();

     System.exit(0);

   }

}

 

Program 1.4   HosgeldinizSWF.java programı

import javax.swing.*;

import BasicWindowMonitor;

 

public class HosgeldinizSWF

{

  public static void main(String[] args)

  {

  JLabel etiket=new JLabel("Java Programına Hoş geldiniz!");

  JFrame cerceve=new JFrame("HosgeldinizSWF");

  cerceve.addWindowListener(new BasicWindowMonitor());

  cerceve.getContentPane().add(etiket);

  cerceve.pack();

  cerceve.setVisible(true);

  }

}

 

Burada iki ayrı program bulunmaktadır. Bu iki programlık seti çalıştırmak için önce iki programı da derlemek gerekir.

 

javac BasicWindowMonitor.java

javac HosgeldinizSWF.java

 

sonra ikinci prgramı

java HosgeldinizSWF

 

komutunu kullanarak çalıştırabiliriz. Burada birinci programın görevi hosgeldinizSWF penceresini köşedeki X işaretine basdığımızda pencereyi kapatmaktır. Bu programı bundan sonraki birçok uygulamamızda kullanacağız. Programımız JFrame denilen grafik pencere ortamında yazılmıştır. Çıktı penceresi :

 

01002.JPG


Şekil 1.2 HosgeldinizSWF dosyasının konsol SWING JFrame pop-up grafik çıktısı  kullanarak görülmesi

 

Görüldüğü gibi burada yazma işlemini yaptırmak için tek bir komut yerine bir komutlar ve metotlar zinciri kullanıldı. Bu program swing grafik kütüphanesiyle grafik formatında çıktı almanın çok daha standart bir yoludur. Temel olarak SWING grafik penceresine JLabel sınıf tipi etiket eklenerek yazı grafik ekrana aktarılmıştır.

 

Program 1.5 de yine swing metodu kullanılmıştır. Buradaki küçük farklılık bir önceki HosgeldinizSWF programında kullanılan Jlabel nesnesi üzerinden yazdırma yerine paint metodunun kullanılmış olmasıdır. Burada da BasicWindowMonitor programı kullanılmıştır. fakat bu programı daha önce derlemiş olduğumuzdan tekrar derlememiz gerekmez. Sadece

javac Hosgeldiniz1SWF.java

komutuyla bu programı derlememiz ve

java Hosgeldiniz1SWF

komutuyla çalıştırmamız kafidir.

 

Program 1.5   Hosgeldiniz1SWF.java programı

import javax.swing.*;

import java.awt.*;

import BasicWindowMonitor;

public class Hosgeldiniz1SWF extends Jframe

{

  public void paint(Graphics g)

  {

    g.drawString("Java sınıfına hoşgeldiniz!",10,40);

  }

 

  public static void main(String[] args)

  {

  Hosgeldiniz1SWF cerceve=new Hosgeldiniz1SWF();

  cerceve.addWindowListener(new BasicWindowMonitor());

  cerceve.setSize(160,50);

  cerceve.setVisible(true);

  }

}

 

 

Program çıktısı :

 

01003.JPG

 

Şekil 1.3 Hosgeldiniz1SWF.java dosyasının konsol SWING pop-up grafik çıktısı  kullanarak görülmesi

 

Burada yazıyı temel olarak bir grafik metodu olan

 

g.drawString("Java sinifina hosgeldiniz!",10,40);

 

metodunu kullanarak pencere ortamına aktardık. bu metodda kullanılan 10,40 deyimi yazının grafik ortamındaki x ve y koordinatlarını göstermektedir. y koordinatı yukardan aşağı doğru tanımlanmıştır.

cerceve.setSize(160,50);

deyimi açılan pencerenin boyutunun 160 genişliğinde ve 50 yüksekliğinde olacağını belirtmektedir.

cerceve.setVisible(true);

terimi ise pencerenin görünmesini (çizilmesini) sağlamaktadır.

 

Buraya kadar kullandığımız programlar konsol programlarıydı. Bu programlarda da gördüğünüz gibi grafik ortamını yoğun olarak kullanabiliyoruz. Yalnız programların çalıştırılması konsoldan verilen java isim komutuyla gerçekleştirilmektedir.

Şimdi de applet grafik ortamında çıktı almaya örnek verelim. İlk applet programımız HosgeldinizApplet.java listesi Program  1.6 da verilmiştir


 Program 1.6   HosgeldinizApplet.java programı

 

import java.applet.Applet;
import java.awt.*;
public class HosgeldinizApplet extends Applet
{
public void paint(Graphics g)
{
g.drawString("Java sınıfına hoş geldiniz!",25,35);
}
}

 

bu programı çalıştırmak için önce HosgeldinizApplet.html  HTML dili programını yazmamız gerekir 

 

Program 1.7   HosgeldinizApplet.html HTML kodu

 

<html >

<applet code="HosgeldinizApplet.class" width=200 height=50 >

</applet >

</html>

 

bu html kodunda

<applet code="HosgeldinizApplet.class" width=200 height=50 >

komutu html'e compile edilmiş olan  HosgeldinizApplet.class dosyasının gösterilmesini istemektedir. Şüphesiz aynı komut çok daha kompleks bir html dosyasının içinde de aynı görevi görmek amacıyla kullanılabilirdi. Programı çalıştırmak için 

 

javac HosgeldinizApplet.java
appletviewer
 HosgeldinizApplet.html

 

komutlarını konsolda vermemiz yeterlidir. Elbette HosgeldinizApplet.html dosyasının yukarıda belirtildiği gibi hazırlanmış olması da gerekir. Fakat Konsol programlarından farklı olarak sonucu konsol yerine Applette (browser programında) görürüz. Aynı sonucu appletviewer deyimini kullanmadan herhangi bir browser programı çağırarak da elde edebiliriz. Browser programında sonucu görebilmek için önce programı açmamız sonra da HosgeldinizApplet.html dosyasını bularak açmamız gerekir. Çıktı görüntüsü aşağıdaki gibi olacaktır.

 

01004.JPG

 

Şekil 1.4 HosgeldinizApplet.html dosyasının appletviewer programı kullanarak görülmesi

 

Bu programında temel olarak bazı farklılıklar dışında bir önceki programlara benzediğini gözlemleyebiliriz. Bu programın temel farkı internet ortamından herhangi bir bilgisayardan da (gerekli ayarlama ve kopyelemelerden sonra) görülebilir olmasıdır.

 

import java.applet.Applet;
import java.awt.*;

 

deyimleri java kütüphanesindeki Applet ve pencere(awt) sınıf grafik programlarını programımıza aktarır.

 

public class HosgeldinizApplet extends Applet deyimi HosgeldinizApplet isimli sınıfı (class) yaratır. Bu sınıf tüm Applet sınıfının bir devamı olarak tanımlanmaktadır ( extends Applet ) diğer bir deyimle Applet sınıfının bütün metotları extends deyimiyle HosgeldinizApplet sınıfımızın içine kopyalanmıştır.

 

public void paint(Graphics g) deyimi appletin grafik olarak çizilmesini sağlar. Bu Metot Graphics sınıfı g nesnesini girdi olarak kullanır. Metotun çıktısı yoktur.

 

g.drawString( "Java sinifina hos geldiniz!",25,35); Bu terim Appletin x = 25, y=35 noktasına Java sinifina hos geldiniz! Yazısını çizer. DrawString Grafik sınıfı g nesnesine ait bir metotdur.

 

Bu programda temel grafik kütüphanesi olarak abstract window toolkit (awt) kullanılmıştır. ayrıca konsol programlarından farklı olarak bu programda main metodunun kullanılmadığına da dikkat ediniz. bir program hem applet hem de konsol olarak da oluşturulabilir, yani hem main metodu olabilir hem de applet (html) ortamında çalışabilir.

 

Aynı appleti oldukça benzer bir şekilde SWING kütüphanesini kullanarak da oluşturabilirdik.

 

Program 1.8   HosgeldinizSWA.java programı

 

import javax.swing.Japplet;

import java.awt.Graphics;

 

public class HosgeldinizSWA extends JApplet

{

 public void paint(Graphics g)

 {

 g.drawString("Java sınıfına Hoşgeldiniz",25,25);

 }

}

 

01005.JPG

[Java sınıfına Hoşgeldiniz]

Şekil 1.5 HosgeldinizSWA.java  dosyasının applet SWING pop-up grafik çıktısı  kullanarak görülmesi

 

Bu programdaki

 

import javax.swing.Japplet;

import java.awt.Graphics;

 

deyimleri java swing kütüphanesindeki JApplet ve pencere(awt) sınıfındaki Graphics alt programlarını (sınıflarını)  programımıza aktarır.

 

public class HosgeldinizSWA extends JApplet

 

deyimi HosgeldinizAppletSWA isimli sınıfı (class) yaratır. Bu sınıf  swing sınıfındaki JApplet sınıfının bir devamı olarak tanımlanmaktadır ( extends JApplet). Diğer bir deyimle JApplet sınıfının bütün metotları extends deyimiyle HosgeldinizAppletSWA sınıfımızın içine kopyalanmıştır.

 

Aynı işi yapmak için bir çok değişik program yazdık. Bazılarımız buna ne gerek vardı, tek bir şekilde bu işi halledemezmi idik diyebilirler. Haklıdırlarda. Fakat modern bilgisayar dillerinde kullanıcıları da göz önüne almak durumundayız. Aynı işi daha renkli ve çeşitli şekillerde yapmamız temel olarak program kullanıcılarına daha çeşitli alternatifler sunabilir. Aynı zamanda diğer programlama alternatiflerine göre daha üstün bir çalışma ortamı yaratabilir.

 

Şimdi de programımıza bir basamak daha ekleyelim ve program kullanıcılara  isimlerini sorsun, yani ekrandan bir veri girelim. Bunu yapmak için ilk tanımlayacağımız program konsol ortamında çalışan Hosgeldiniz2.java programı olacaktır. Bu programın çıktısı dos konsol ortamında şekil 1.6 da görülmektedir. Program ekranda isminizi giriniz yazacak, ve ekranda isim girildikten sonra

 

java sınıfına hosgeldiniz! isim

 

çıktısını verecektir.

 

Program 1.9   Hosgeldiniz2.java programı

 

import java.io.*;

 

class Hosgeldiniz2 {

     public static void main (String args[]) throws IOException

     {

     BufferedReader cin=new BufferedReader(new InputStreamReader(System.in));

     System.out.println("isminizi giriniz : ");

     String isim=new String(cin.readLine());

     System.out.println("Java Sinifina Hos Geldiniz! "+isim);

     cin.close();

     }

}

 

=============================

C:\co\java\prog>java Hosgeldiniz2

isminizi giriniz :

Turhan

Java Sinifina Hos Geldiniz! Turhan

C:\co\java\prog>

=============================

Şekil 1.6 Hosgeldiniz2.java  dosyasının sonuçlarının dos çıktısı  kullanarak görülmesi

 

Bu programda okuma işlemini yapmakiçin önce

     BufferedReader cin=new BufferedReader(new InputStreamReader(System.in));

Deyimini kullanarak bir okuma kanalı açtık, sonra 

   

     System.out.println("isminizi giriniz : ");

     String isim=new String(cin.readLine());

Deyimindeki  cin.readLine() komutuyla ismi cin kanalından okuyarak isim değişkenine aktardık.

 

Aynı işlemi yapan fakat girdi çıktı sınıf tanımlarında Ek 1 de verilen Text sınıfını kullanan Hosgeldiniz3.java programı şekil 1.10 da verilmiştir.

 

Program 1.10   Hosgeldiniz3.java programı

 

import java.io.*;

import Text;

 

class Hosgeldiniz3 {

     public static void main (String args[]) throws IOException

     {

     Text cin=new Text();

     System.out.print("isminizi giriniz : ");

     String isim=cin.readString();

     System.out.println("Java Sinifina Hos Geldiniz! "+isim);

     }

}

 

Hosgeldiniz2.java programının çıktısı da Hosgeldiniz2.java programıyla aynı olacaktır.

 

Şimdi de swing kütüphanesindeki JoptionPane.showInputDialog() kullanarak girdi penceresi açan ve çıktı penceresine     JoptionPane.showMessageDialog() kullanarak mesajı yazan Hosgeldiniz1SW.java programını göreceğiz.

 

Program 1.11   Hosgeldiniz1SW.java programı

 

import javax.swing.JoptionPane;

class Hosgeldiniz1SW {

     public static void main (String args[])

     {

     String isim=JoptionPane.showInputDialog("Lutfen isminizi giriniz :");

     JoptionPane.showMessageDialog(null,"Java Sinifina Hos Geldiniz! "+isim,

     "Hosgeldiniz1SW programi",JOptionPane.INFORMATION_MESSAGE);

     System.exit(0);

     }

}

 

Bu programı çalıştırmak içinde

 

javac Hosgeldiniz1SW.java

komutuyla bu programı derlememiz ve

java Hosgeldiniz1SW

komutuyla çalıştırmamız gerekecektir. Program girdi ve çıktı pencereleri şekil 1.7 ve Şekil 1.8 de verilmiştir.

 

01007.JPG

Şekil 1.7 Hosgeldiniz1SW.java  dosyasının pencere popup girdi   penceresi

 

 

01008.JPG

 

Şekil 1.8 Hosgeldiniz1SW.java  dosyasının pencere popup çıktı   penceresi

 

Şimdi aynı girdi ve çıktı programlamasını JApplet sınıfını kullanarak yapalım. Input (girdi) için yine JoptionPane sınıfından yararlanacağız.

 

Program 1.12   Hosgeldiniz1SWA.java programı

 

import javax.swing.*;

import java.awt.Graphics;

public class Hosgeldiniz1SWA extends JApplet

{

 String isim;

 public void init()

 {

 isim=JoptionPane.showInputDialog("isminizi giriniz : ");

 }

 

 public void paint(Graphics g)

 {

 g.drawString("Java sinifina Hosgeldiniz "+isim,25,25);

 }

}

 

Bu programı çalıştırmak için compile prosesinde yine

 

javac Hosgeldiniz1SWA.java komutunu kullanacağız. sonra Hosgeldiniz1SWA.html dosyasını oluşturacağız.

 

Program 1.13   Hosgeldiniz1SWA. html programı

 

<applet code="Hosgeldiniz1SWA.class" width=300 height=30></applet> <html>

<applet code="Hosgeldiniz1SWA.class" width=300 height=30>

</applet>

</html>

 

Hosgeldiniz1SWA.html dosyasını herhangi bir browser programında görebileceğimiz gibi javanın kendi basit browser programı appletviewer da da

appletviewer Hosgeldiniz1SWA.html

deyimiyle gösterebiliriz. Program girdi ve çıktısı :

Resim 01009.JPG

 

Şekil 1.9 Hosgeldiniz1SWA.java  dosyasının applet popup girdi   penceresi

 

Program çıktısı appletviewer browserinda görüleceği şekliyle :

 

Resim 01010.JPG

Şekil 1.10 Hosgeldiniz1SWA.java  dosyasının applet  çıktı   penceresi

 

olacaktır. Son olarak girdi ve çıktı işlemlerini aynı pencerede yapıldığı biraz daha kompleks olan Hosgeldiniz5SWA.java programına göz atalım.

 

Program 1.13   Hosgeldiniz5SWA.java programı

 

import javax.swing.*;  // java JApplet sınıfını çağır

import java.awt.*;   // java pencere kullanma sınıflarını (awt kütüphanesi) çağır

import java.awt.event.*;    // java pencereyi dinleme sınıflarını (awt kütüphanesi) çağır

 

public class Hosgeldiniz5SWA extends JApplet implements ActionListener

{

    //sınıf değişkenleri

    JTextArea ciktiAlani;  //JTextArea  sınıfı çıktı alanı değişkeni

    JLabel kutubasligi;    //JLabel sınıfı değişkeni (nesnesi) kutubasligi

    JTextField kutugirdisi;//JTextfield sinifi degiskeni (nesnesi) kutugirdisi

    String isim;

 

    public void init()

    {

    //girdi çıktı programlarının içine yazılacağı ana pencereyi tanımla

    Container c=getContentPane();

    c.setLayout(new FlowLayout());

    isim="Mürşide Gökağaç";

    kutubasligi=new JLabel("isminizi giriniz :");

    c.add(kutubasligi);//kutubasligini pencereye yaz

    kutugirdisi=new JTextField(10);

    c.add(kutugirdisi);//kutuyu pencereye yerlestir

    ciktiAlani=new JTextArea();

    Color co=c.getBackground();

    ciktiAlani.setBackground(co);

    c.add(ciktiAlani);

    ciktiAlani.setText("Java sınıfına Hoşgeldiniz ! "+ isim);

    // kutuya yeni ilave edilecek komutlari bekle

    // her yeni komutta actionPerformed metodunu calistir.

    kutugirdisi.addActionListener(this);

    }

 

    // girdi alanindaki olan olaylari dinleme metodu

    public void actionPerformed(ActionEvent e)

    {

    //pencereden ismi oku

    isim=e.getActionCommand();

    ciktiAlani.setText("Java sınıfına hoşgeldiniz ! "+ isim);

    repaint();

    }

}

 

bu programı da yine

javac Hosgeldiniz5SWA.java deyimiyle compile edip,

appletviewer Hosgeldiniz5SWA.html komutuyla çalıştırırız. Hosgeldiniz5SWA.html dosyasının yukarıda anlatıldığı gibi hazırlanması gerekir. Program çıktısı şekil 1.11 de gösterilmiştir.

 

Resim 01011.JPG

Şekil 1.11 Hosgeldiniz5SWA.java  dosyasının applet  çıktı   penceresi

 

Bu programda verilen komut detaylarını şu anda bilmek zorunda değilsiniz. Benzer işlemleri yapmak için aynı formattan yararlanabilirsiniz. İlerki bölümlerde grafik programlarının alt metodları detaylı olarak incelenecektir.

 

    1.3 JAVA PROGRAMLAMA DİLİ TEMEL DEĞİŞKEN TÜRLERİ

 

Programlama dillerinde rakamlar bilgisayar belleğinin temel depolama birimlerine yazılırlar. Temel bilgisayar bellek birimi bit olarak adlandırılır. Bir bilgisayar belleğindeki tek bir transistörden oluşmuştur. Bu transistörden akım geçiyorsa tansistörün veya bitin bellek değeri 1 (bir) veya true (doğru) olarak alınır. Eğer akım geçmiyor veya düşük düzeyde bir akım geçiyorsa transistörün bellek değeri 0 (sıfır) veya false(yanlış) olarak alınır. Bilgisayar bit birimleri bir araya gelerek bilgisayar temel değişken türlerini yazabileceğimiz bir sistem oluştururlar. Değişken türü bilgisayar tarafından bilinmelidir, çünkü aynı bit topluluğu bir harfi simgeleyebileceği gibi bir rakamı da simgeleyebilir. Java dilinde Tablo 1.1 de görülen temel değişken türleri mevcuttur.


 Tablo 1.1  Java Temel Değişken türleri

Değişken Türü

Türkçe karşılığı

Bit büyüklüğü

Sınır Değerleri

boolean

Mantık değişkeni

1

true(doğru) , false(yanlış)

char

harf değişkeni

16

'\u0000' den '\uFFFF'

byte

tam sayı değişkeni

8

-128 den 127 e

short

tam sayı değişkeni

16

-32768 den 32767 e

int

tam sayı değişkeni

32

-2157483648 den 2147483647 e

long

tam sayı değişkeni

64

-9223372036854775808 den 
9223372036854775808 e

float

Gerçek sayı değişkeni

32

-3.40292347e+38 den 
3.40292347e+38 e

double

Gerçek sayı değişkeni

64

-1.7976931348623157e+308 den 
1.7976931348623157e+308 e

 

Şimdi bu temel değişken türlerinin bazılarını daha detaylı inceleyelim:

 

  1.3.1 boolean değişken türü

 

boolean değişken türü mantık işlemlerinde kullanılır. Sadece true veya false değerleri alır. true doğru false yanlış anlamı taşır. Mantık değişkenleri ne doğrudan true  veya false  değerleri yüklenebileceği gibi diğer değişkenleri mantık işlemlerini kullanarak karşılaştırarakta değerleri programların içinde hesaplanabilir.

Aşağıdaki küçük program parçası mantık değişkeni ilk mantık değiskenini tanımlamakta ve doğru değerini bu değişkene yüklemektedir.

 

boolean ilkmantıkdegiskeni ;
ilkmantikdegiskeni=true;

 

  1.3.2 char (harf) değişken türü

 

char değişken türü harflerin tanımlanmasında kullanılır. Harfler java dilinde ISO Unicode kodu ile bilgisayara aktarılır. Unicode 4 hekzagonal (16 tabanlı) sayının bir araya gelmesiyle oluşur. Hekzagonal sayı sisteminin onlu ve ikili sayı sistemiyle eşitliği şöyledir :

 

Tablo 1.2 Haksagonal(onaltılı), onlu ve ikili sayı sistemleri eşitlikleri

 

Heksagonal

Onlu

İkili

0

0

0000

1

1

0001

2

2

0010

3

3

0011

4

4

0100

5

5

0101

6

6

0110

7

7

0111

8

8

1000

9

9

1001

A

10

1010

B

11

1011

C

12

1100

D

13

1101

E

14

1110

F

15

1111

 

ISO Unicode da tanımlanan '\u0041' kodu 'A' harfi anlamına gelir. Veya '\u03E1' kodu ' a' harfini tanımlar. ISO Unicode karakter setinin ilk iki rakamı sıfır olduğunda ASCII karakter kodunu tanımlar. Unicode hakkında daha ayrıntılı bilgi için

 

  http:\\unicode.org

 

internet adresini ziyaret edebilirsiniz. Aşağıdaki küçük program parçacığı char tipi A1, A2 ve alpha1,alpha2 değişkenlerine A ve a harflerini yüklemektedir.

char A1,A2;
char alpha1,alpha2;
A1='\u0041';
A2='A';
alpha1='\u03E1';
alpha2='a
';

 

Burada şunu kaydedelim alpha1 değişkenini her ortamda doğru olarak görebiliriz, fakat alpha2 değişkeni bazı ortamlarda doğru olarak görülmeyebilir.

 

  1.3.3 Tam sayı değişken türleri (byte, short,int,long)

 

Tam sayı değişkenler hafızada işgal ettikleri yere göre byte(8 bit), short(16 bit), int(32 bit) ve long(64 bit) adını alırlar. Bir bitlik hafızaya sadece iki rakamın (0 veya 1) yazılabileceği göz önüne alınırsa örneğin sekiz bitlik byte türü tamsayı değişkenine 256 sayı (ikili sayı eşiti 11111111) yazılabileceği ortaya çıkar. Bitlerden biri + veya - işareti için kullanıldığından byte değişkeninin sınır değerleri -128den 127 e kadardır (toplam 256 sayı). Eğer bir tamsayı değişkenin sadece artı değerlerini kullanmak istersek unsigned terimini kullanırız. Örneğin unsigned byte tipi tamsayı değişkenin sınır değerleri 0 dan 256 ya kadardır. Tamsayı değişken türleri içinde en fazla kullanılan int türüdür. Aşağıdaki küçük program parçacığında int türü ilktamsayi değişkenine 32 rakamı yüklenecektir.

 

int ilktamsayi;
ilktamsayi=32;

 

bu iki satırlık program parçacığı tek bir satır olarak

 

int ilktamsayi=32;

 

şeklinde de yazılabilirdi.

 

Javadaki tamsayı değişken türleri + ve – değeri alabilen türlerdir. Örneğin byte değişken türü –128 den +127 e kadar toplam 256 sayı kullanabilir. Eğer – bölgeyi kullanmayacaksak tamsayı değişkenlerin kullanım bölgesini unsigned deyimini kullanarak tamamen artı bölgeye çekebiliriz. Örneğin

unsigned byte artıbolgetamsayisi;

işlemiyle tanımlanan  artıbolgetamsayisi değişkeni 0 ile 256 arasında değerler alabilir.

 

  1.3.4 Gerçek sayı değişken türleri (float, double,long double)

 

Gerçek sayı sistemleri de 0 ve 1 bitleri kullanılarak oluşturulabilir. Gerçek sayıların tamsayıdan küçük kısımları 2 li tabanda eksi üstler kabul edilerek oluşturulur. Örnek olarak 16 bitlik gerçek bir sayıyı ikili sistemdeki bilgisayar belleğinde şu şekilde gösterebiliriz :

 

 Tablo 1.3 gerçek sayı 22.625e-17 yazılmasında kullanılan onlu ve ikili sayıların bellekte gerçek sayı organizasyonu örneği

+/-

24

23

22

21

20

2-1

2-2

2-3

2-4

+\-

24

23

22

21

20

+

16

8

4

2

1

0.5

0.25

0.125

0.0625

   -

16

8

4

2

1

0

1

0

1

1

0

1

0

1

0

1

1

0

0

0

1

 

Yukarıda 16 bitle temsil edilen sayı : +16+4+2+0.5+0.125)*10-(16+1) = 22.625e-17 rakamıdır. Gerçek sayı değişkende yeterli hassasiyeti sağlayabilmek için genelde 64 bit uzunluğundaki double değişken türü kullanılır. Javadaki Matematik kütüphaneleri de double değişken türü için tanımlanmıştır. Aşağıdaki küçük program parçacığında double türü ilkgercekdegisken değişkenine 22.625e-7 sayısını yüklüyoruz.

 

double ilkgerçekdegisken;
ilkgerceldegisken=22.625e-17;

 

eğer 64 bit double sayı hassaslığı yetmezse long double kullanılabilir.  Bu değişken türü 128 bit boyutundadır.

 

  1.4 JAVA NESNESİ OLARAK TANIMLANMIŞ TEMEL DEĞİŞKENLER

 

Java nesne temelli bir dildir. Javadaki tüm değişken türlerinin nesne kökenli eşdeğerleri mevcuttur. Bunun yanında temel değişken türleri arasında yer almıyan String gibi sadece nesne kökenli olarak tanımlanmış değişken türleri de mevcuttur. Şimdi bunların bir kısmını biraz daha detaylı inceleyelim.

 

  1.4.1 String nesne tipi değişkeni  

 

String değişkeni yazı yazdırma işleri için kullanılır. Nesne türü değişkendir. Java dilinde char değişken türü kullanılarak tanımlanmış bir nesne tipi değişkendir. Aşağıdaki küçük program parçacığında bu değişken türünün kullanılmasını görüyoruz.
String a="ali";
String c="veli";
String d;
d=a+b; // d nin değeri "ali veli"

System.out.println(d); // bu satır ali veli çıktısı verir

 

String türü sabitler her zaman " işaretleri arasına yazılırlar ve + işaretiyle bir araya getirilebilirler.

 

String türü değişkenleri tanımlamak için aynı zamanda

 

String a=new String("ali");
String c=new String("veli");
String d=new String();
d=a+b; // d nin değeri "ali veli"
System.out.println(d); // bu satır ali veli çıktısı verir

 

Formunu da kullanabiliriz. İkinci verdiğimiz form işlem olarak ilk verilenin tamamen aynıdır.

 

String türü bir değişkenin toplam boyutu length() alt metoduyla belirlenebilir. Örneğin

String a=new String("ali");

int x=a.length();

x değişkenine 3 değerini yükleyecektir.

Stringin alt metodu equals() karşılaştırma yapar. Örneğin

String a=new String("ali");

boolean y=a.equals(“ali”);

boolean z=a.equals(“veli”);

 

y boolean değişkenine true değerini, z boolean değişkenine false değerini  yükleyecektir.

 

  1.4.2 Integer nesne tipi değişkeni

Integer değişkeni, string değişkeni gibi

 

Integer i;

i=new Integer(3);

veya

Integer i=new Integer(3);

 

Şeklinde tanımlanabilir. Integer tanımı  String değişkeni üzerinden de tanımlanabilir. Örneğin

 

String s=”15”;

Integer i=new Integer(s);

 

Tanımı 15 değerini yükler. Integer değerini int değerine (temel değişken) çevirebiliriz.

 

int x;

Integer  y=new Integer(3);

x=Integer.IntegerValue(y);

 

String değerini int değerine direkt olarak çevirmek içinse

 

String s=”15”;

İnt x=Integer.parseInt(s);

 

kullanılır.

 

int tipi (temel) değişkeni String değişkenine değiştirmek için

 

int x=3;

String s=Integer.toString(x);

 

kullanılır.

 

  1.4.3 Double nesne tipi değişkeni

Double değişkeni kullanım olarak Integer değişkeninden bir farkı yoktur. Aynı tanımlamalar Integer yerine Double kullanılarak yapılabilir. Değişkenler

 

Double  x;

X=new Double(3.66e5);

veya

Double x=new Double(3.66e5);

Şeklinde tanımlanabilir. Double tanımı  String değişkeni üzerinden de tanımlanabilir. Örneğin

 

String s=”15.66e-3”;

Double x=new Double(s);

 

Tanımı 15.66*10 -3 değerini yükler. Double değerini double değerine (temel değişken) çevirebiliriz.

 

double x;

Double  y=new Double(15.66e-3);

X=Double.doubleValue(y);

 

int x;

Double  y=new Double(15.66e3);

x=Double.intValue(y);

 

String değerini double (temel değişken) değerine direkt olarak çevirmek içinse

 

String s=”15.25”;

double x=Double.parseDouble(s);

 

İşlemi kullanılabilir.

 

double tipi (temel) değişkeni String değişkenine değiştirmek için

 

double x=3.75;

String s=Double.toString(x);

 

kullanılır.

 

  1.4.4 diğer nesne temelli değişken türleri

 

Object, Long, Float, Boolean, Character, Vector gibi diğer nesne tipi değişken türleri de mevcuttur. Object nesne tipi tüm bu değişken nesne tiplerini içinde barındıran genel bir tiptir. Tüm nesne tipi değişkenlerin bizim için temel avantajı alt metodlarını kullanarak işlemler gerçekleştime olasılıklarıdır. Fakat bu tür değişkenler temel değişken türlerine göre daha çok hafıza yeri işgal ettiklerinden mecbur kalınmadıkça da kullanılmamalıdırlar. Ayrıca Yine nesne tipi BigDecimal ve BigInteger türleri de hassasiyeti kullanıcı tarafından belirlenen nesne tipi değişkenler olarak kullanılabilirler.

 

  1.5 FİNAL TERİMİ VE SABİTLER

 

Java dilinde değişken yerine sabit kullanmak istersek tanımın başına final sözcüğünü getiririz. Final olarak tanımlanan sabitlerin bir kere değerleri verildikten sonra değiştirilemez.

Örneğin

final double pi=3.14159;

pi sabitini tanımlar.

 

  1.6 ARİTMETİK İŞLEMLER

 

Javadaki temel aritmetik işlemler şunlardır :

+  toplama  
-
 çıkarma  
*
 çarpma  
/
 bölme  
%
 tamsayılar için bölmede kalan (modül )

 

Program 1.15 deki program örneği int tamsayı kullanarak bu aritmetik işlemlerin yapılmasını göstermektedir.

 

Program 1.15 :    Aritmetik.java konsol programı   

 

import java.io.*; //java girdi cikti sinifini cagir
class Aritmetik
{
public static void main(String args[])
{
 int sayi1,sayi2;
 int toplama,cikarma,carpma,bolme,kalan;
 sayi1=2;
 sayi2=3;
 toplama = sayi1+sayi12;
 cikarma = sayi1-sayi2;
 carpma = sayi1*sayi2;
 bolme=sayi1/sayi2;
 kalan=sayi1%sayi2;
 System.out.println("sayi1 + sayi2 ="+toplama);
 System.out.println("sayi1 - sayi2 ="+cikarma);
 System.out.println("sayi1 * sayi2 ="+carpma);
 System.out.println("sayi1 / sayi2 ="+bolme);
 System.out.println("sayi1 % sayi2 ="+kalan);
 }
 }


Aritmetik.java konsol programı çıktısı :

  

sayi1 + sayi2 =5
sayi1 - sayi2 =-1
sayi1 * sayi2 =6
sayi1 / sayi2 =0
sayi1 % sayi2 =2

 

şeklinde olacaktır. Swing grafik kütüphanesi çıktısı pratiği yapmak amacıyla aynı programı  swing JoptionPane çıktısı ile yazarsak :

 

Program 1.16 :    AritmetikSW.java konsol programı   

import javax.swing.JOptionPane; //java swing cikti sinifini cagir

 

class AritmetikSW

 {

      public static void main(String args[])

      {

          String s;

          int sayi1,sayi2;

          int toplama,cikarma,carpma,bolme,kalan;

          sayi1=Integer.parseInt(

          JOptionPane.showInputDialog("birinci sayıyı giriniz : ")

                                );

          sayi2=Integer.parseInt(

          JOptionPane.showInputDialog("ikinci sayıyı giriniz : ")

                                );

          toplama = sayi1+sayi2;

          cikarma = sayi1-sayi2;

          carpma  = sayi1*sayi2;

          bolme   = sayi1/sayi2;

          kalan   = sayi1%sayi2;

          s="";

          s=s+sayi1+" +  "+sayi2+" = "+toplama+"\n";

          s=s+sayi1+" -  "+sayi2+" = "+cikarma+"\n";

          s=s+sayi1+" /  "+sayi2+" = "+carpma +"\n";

          s=s+sayi1+" *  "+sayi2+" = "+bolme  +"\n";

          s=s+sayi1+" %  "+sayi2+" = "+kalan  +"\n";

          JOptionPane.showMessageDialog(null,s,

          "Aritmetik islemleri",JOptionPane.PLAIN_MESSAGE);

          System.exit(0);

       }

 }

 

Bu programın çıktısı :

 

01012.JPG

Şekil 1.12 AritmetikSW.java  dosyasının JOptionPane  çıktı   penceresinde görünümü

 

Java ve C dillerinde temel aritmetik işlemlerinin yanı sıra bu işlemlerin kısaltılmış sembolleri de oldukça sık kullanılır. Bu işlemler :

 

++   bir ilave et  
--   bir çıkar
 
+= sağ taraftaki rakamı ilave et
 
-=  sağ taraftaki rakamı çıkar
 
*= sağ taraftaki rakamla çarp
 
/=  sağ taraftaki rakama böl
 
%= sağ taraftaki rakama bölüp kalanını al işlemleridir.

++   ve -- işlemleri değişkenden önce veya sonra gelebilir. Bu iki şeklin değişken tek başlarına kullanıldığında bir farklılıkları yoktur, fakat ikinci bir değişkenle birlikte tek bir deyimde kullanıldıklarında ikinci değişkenin değeri değişir. Aşağıdaki iki program parçacığına göz atalım.


 ++ işlemcisinin değişkenden sonra kullanılması  

int a=2;
int c;
c=a++; // a nın değeri 3 c nin değeri 2


 ++ işlemcisinin değişkenden önce kullanılması  

int a=2;
int c;
c=++a; // a nın değeri 3 c nin değeri 3

 

a değişkeninin değeri başlangıçta 2 ise görüldüğü gibi hem ++a işleminde hem de a++ işleminde değeri 3 e çıkmaktadır. Ancak c değişkeninin değeri c=a++ işleminde 2 olarak kalırken (önce değeri yükle sonra arttır), c=++a işleminde 3 olmaktadır(önce arttır, sonra değeri yükle). ++ ve -- işlemleri genelde tam sayı değişkenler için kullanılır.

Program 1.17 da aritmetik işlemleri gösteren bir program verilmiştir. Bu programın sonuçları da altta  verilmektedir. Programı basamak basamak takip ederek sonuçların doğruluğunu elde hesaplayarak kontrol edebilirsiniz.

 

Program 1.17 : Aritmetik1.java aritmetik işlem örneği  

import java.io.*;
public class Aritmetik1
{ public static void main(String[] args)
{
int sayi1=1;
int sayi2=2;
sayi1+=sayi2;
System.out.println("sayi1+= : "+ sayi1);
sayi1-=sayi2;
System.out.println("sayi1-= : "+ sayi1);
sayi1*=sayi2;
System.out.println("sayi1*= : "+ sayi1);
sayi1/=sayi2;
System.out.println("sayi1/= : "+ sayi1);
}
}


Aritmetik1 sınıfının sonuçları

sayi1+= : 3
sayi1-= : 1
sayi1*= : 2
sayi1/= : 1


1.7 JAVADA MANTIKSAL İŞLEMLER

  

Javadaki temel değişken türlerine bakarken boolean türü değişkenleri tanımlamıştık. Tam sayı ve gerçek değişkenlerin aritmetik işlemlerde kullanılabildiği gibi boolean değişkenler de mantıksal işlemlerde kullanılabilirler. Mantıksal işlem işlemcileri şunlardır :

Tablo 1.3 Java dilindeki mantıksal işlemler ve anlamları

 

Mantıksal İşlemci

Anlamı

&&

ve

||

veya

büyüktür

<

küçüktür

==

eşittir

>=

büyük ve eşittir

<=

küçük ve eşittir

!

değildir

!=

eşit değildir

 

Mantıksal işlemleri pekiştirmek amacıyla Program 1.18 de bir örnek verilmiştir.
 

Program 1.18 :  Java mantıksal işlemleri örnek problemi booleanvar.java

import java.io.*;

public class booleanvar

{  public static void main(String[] args)

         {

         boolean b1,b2;

         b1=true;

         b2=false;

         System.out.println("b1 : "+ b1+" b2 : "+b2);

         System.out.println("b1 && b2 "+ (b1&&b2) );

         System.out.println("b1 || b2 "+ (b1||b2) );

         int sayi1,sayi2;

         sayi1=1;

         sayi2=2;

         System.out.println("sayi 1 : "+sayi1);

         System.out.println("sayi 2 : "+sayi2);

         b1=(sayi1 > sayi2);

         System.out.println(sayi1+" > "+sayi2+" "+ b1 );

         b1=(sayi1 < sayi2);

         System.out.println(sayi1+" < "+sayi2+" "+ b1 );

         b1=(sayi1 == sayi2);

         System.out.println(sayi1+" == "+sayi2+" "+ b1 );

         b1=(sayi1 >= sayi2);

         System.out.println(sayi1+" >= "+sayi2+" "+ b1 );

         b1=(sayi1 <= sayi2);

         System.out.println(sayi1+" <= "+sayi2+" "+ b1 );

         b1=(sayi1 != sayi2);

         System.out.println(sayi1+" != "+sayi2+" "+ b1 );

         }

}

 

Aşağıda bu örnek problemin (Program 1.5) sonucunu verilmektedir. Satır satır proğramı takip ederek sonucuları kontrol ediniz.

 

b1 : true b2 : false

b1 && b2 false

b1 || b2 true

sayi 1 : 1

sayi 2 : 2

1 > 2 false

1 < 2 true

1 == 2 false

1 >= 2 false

1 <= 2 true

1 != 2 true

 

  1.8 JAVA DİLİNDE BİT KOMUTLARI VE İŞLEMLERİ

 

Bit işlemi doğrudan doğruya bitler üzerinde yapılan işlemlerdir. Bit işlemleri genellikle veri trasferi (bilgisayardan bilgisayara veya çeşitli kontrol sistemlerinde) işlemlerinde kullanılır. Javadaki bit işlemleri Tablo 1.4 de verilmiştir.

 

Tablo 1.4 Java dilindeki bit işlemleri ve anlamları

 

Bit İşlemci

Anlamı

&

AND ve

|

OR veya

XOR

~

Ters bit (NOT)

>>

Bir bit sağa kay

<<

Bir bit sola kay

 

Bit işleminde ne olduğuna bir örnekle bakalım.

int x=7;

x=x<<1;

bit işleminde x değişkeninin bit yapısı  sola doğru bir bit kaydırılmıştır. 7 değerinin bit eşdeğeri

00000000000000000000000000000111

şeklindedir. Sola doğru bir bit kaydığımızda

00000000000000000000000000001110

bit yapısı oluşacaktır. Bu yapının int karşılığı 14 dür.

 

int x=7;

x=x<<1;

x=~x;

işlemi

11111111111111111111111111110001

 

değerini verecektir.

 

Küçük bir programda bit işlemlerinin bazılarını kullanalım.

 

Program 1.19 :  Java bit  işlemleri örnek problemi bitislemi.java

 

class bitislemi{

     public static void main (String args[])

     {

     int x=7;

     System.out.println("x = "+x);

     x= x<<1;

     System.out.println("x = "+x);

     x= x<<1;

     System.out.println("x = "+x);

     x= x>>2;

     System.out.println("x = "+x);

     x= ~x;

     System.out.println("x = "+x);

     }

}

 

bu programın sonucu

x = 7

x = 14

x = 28

x = 7

x = -8

 

şeklinde olacaktır. Çıkan sonuçların bit eşdeğerlerini kontrol ediniz. Bit işlemleri aslında bilgisayarın ve digital elektronik devrelerin temel işlemleridir. Bu işlemler assembler dillerinin de temel işlemlerini teşkil ederler.

 

  1.9 JAVA DİLİNİN TEMEL KOMUTLARI

 

Bilgisayar dillerinde değişkenlerden ve işlemlerden sonraki en temel yapı temel dil komutlarıdır. Şimdi bu komut yapılarına tek tek göz atalım.

 

  1.9.1 if - elseif - else mantıksal karşılaştırma yapısı

 

Bu yapı programda karar mekanizmalarını oluşturmak için kullanılır. Temel yapısı :
 

if( boolean değişken yada sabit)
        { boolean degişken veya sabitin değeri true olduğunda yapılan işlemler}

 else if( boolean değişken yada sabit)
        { boolean degişken veya sabitin değeri true olduğunda yapılan işlemler}

else
        { yukardaki boolean değişken vede sabitlerin hiçbiri true değerine eşit değilse  yapılacak olan işlemler}

 

else if yapısı probleme göre istenilen sayıda olabilir, if ve else yapısı sadece bir tane olarak kullanılır.

 

if yapısı java ve C dillerinde kısaltılmış bir şekilde de yazılabilir bu form

 

değişken adı = (  boolean değişken yada sabit  ?  boolean true ise değişken değeri  :   boolean false ise değişken değeri );

 

şeklindedir. Küçük bir örnek programla if-elseif-else  yapısının çalışmasını inceleyebiliriz.
 

Program 1.20 :  if yapısını gösteren ifyapisi.java programı  

import java.io.*; // giris çikis 
import Text;      // okuma sinifi

class ifyapisi 
{
     public static void main (String args[]) throws IOException
     {
     double not;
     // 
     Text cin=new Text();
     not=cin.readDouble();
        if( not ==90)
           { System.out.println("A"); }
        else if(not ==75)
           { System.out.println("B"); }
        else if(not ==60)
           { System.out.println("C"); }
        else if(not ==50)
           { System.out.println("D"); }
        else if(not ==40)
           { System.out.println("E"); }
        else 
           { System.out.println("F"); }
     }
}

 

İf yapısı programının çıktısı :

 

Ogrencinin notunu giriniz :
53
D

 

Bu programda öğrenci notu ekrandan girdi olarak girilmektedir. Bunu sağlayabilmek için önce

Text  cin=new  Text();
komutunu kullanarak ekrandan girdi girme kanalı olan cin değişkeni tanımlanmakta, sonra bu kanal üzerinden  not=cin.readDouble()
;
deyimiyle ekrandan girilen değer not değişkenine aktarılmaktadır. Okuma işlemi normalde daha detaylı tanımlar gerektirir. Bu tanımlar şimdilik Text sınıfının arkasında verilmiştir. Text sınıfının detaylı Yeri geldiğinde okuma işlemi daha detaylı olarak incelenecektir.

 

not değişkeni bir ekran girdisi olduğundan girilen nota göre bilgisayar A,B,C,D,E veya F notlarından birini verecektir. Bu ilk programımızda if ve else if parantezlerinin içinde direk olarak boolean sabit kullanılmıştır. Parantez içi boolean değişken de olabilir.

 

Aynı program kodunu java swing kütüphanesi JoptionPane alt sınıfını kullanarak yazacak olursak :

 

 Program 1.21 :  if yapısını gösteren ifyapisiSW.java programı  

 

import javax.swing.JOptionPane;

 

class ifyapisiSW

{

     public static void main (String args[])

     {

     double not;

     //JOptionPane her zaman String turu çıktı verir. Bunu Double.parseDouble()

     //kullanarak double değerine çevirebiliriz.

     not=Double.parseDouble(JOptionPane.showInputDialog("Ogrencinin notunu giriniz (0-100) : "));

        if( not >= 90)

           { JOptionPane.showMessageDialog(null,"A","Ogrenci notu",JOptionPane.PLAIN_MESSAGE);}

        else if(not >=75)

           { JOptionPane.showMessageDialog(null,"B","Ogrenci notu",JOptionPane.PLAIN_MESSAGE);}

        else if(not >=60)

           { JOptionPane.showMessageDialog(null,"C","Ogrenci notu",JOptionPane.PLAIN_MESSAGE);}

        else if(not >=50)

           { JOptionPane.showMessageDialog(null,"D","Ogrenci notu",JOptionPane.PLAIN_MESSAGE);}

        else if(not >=40)

           { JOptionPane.showMessageDialog(null,"E","Ogrenci notu",JOptionPane.PLAIN_MESSAGE);}

        else

           { JOptionPane.showMessageDialog(null,"F","Ogrenci notu",JOptionPane.PLAIN_MESSAGE);}

     System.exit(0);

     }

}

 

 

Program çıktısı :

 

 01013.JPG

 

01014.JPG

 

Aşağıdaki program parçasında a degiskeninin degeri : true yazısını yazdıracaktır.
 

boolean a=true;
if(a)
{System.out.println("a degişkeninin değeri : true");}
else
{System.out.println("a degişkeninin değeri : false");}

 

if - elseif - else yapıları iç içe girmiş yapılar veya basit mantıkların && (ve) , || (veya)  işlemleriyle bağlanmasıyla daha kompleks mantıksal şartlar oluşturulabilir.

 

İç içe geçmiş if yapısı kullanılarak mantıksal kontrol prosesi alttaki program parçasında açıklanmıştır :

 

 İç içe geçmiş if yapısı

 

double x = 7.0;
double y = 3.0;
if(x > 5)
{
if(y > 5) { System.out.println("x ve y besten buyuktur.");}
elseif(y==5) { System.out.println("x besten buyuktur ve y bese esittir.");}
else { System.out.println("x besten buyuktur ve y besten kucuktur.");}
}
else
{
if(y > 5) { System.out.println("x besten kucuktur veya esittir ve y 5 den buyuktur.");}
elseif(y==5) { System.out.println("x besten kucuktur veya esittir ve y bese esittir.");}
else { System.out.println("x besten kucuktur veya esıttır ve y besten kucuktur.");
}
}

 

Burada ise  && terimiyle bağlanmış bir program parçacığı görüyorsunuz.
  

 && (ve) deyimiyle bağlanmış if yapısı 

double x = 7.0;

double y = 3.0;

if(x 5 && y 5) { System.out.println("x ve y besten buyuktur.");}
else if(x>5 && y==5) { System.out.println("x besten buyuktur ve y bese esittir.");}
else if(x>5 && y<5) { System.out.println("x besten buyuktur ve y besten kucuktur.");}
else if(x<5 && y>5) { System.out.println("x besten kucuktur ve y 5 den buyuktur.");}
else if(x < 5 && y==5) { System.out.println("x besten kucuktur ve y bese esittir.");}
}
}

 

Yukarıdaki program parçacıklarından da görebildiğimiz gibi her türlü kompleks mantığı bilgisayar programlarına aktarmamız mümkündür. If - else if - else yapıları programlamada en çok kullanılan mantık aktarımı yapı taşlarıdır.

 

  1. 9.2 while tekrarlama yapısı

 

While en çok kullanılan tekrarlama yapılarından biridir. ( ) içindeki boolean terim true (doğru) olduğu sürece yeniden işlemi döndürür. Eğer programda boolean işlemini sonuçlandıracak bir ifade yoksa sonsuza dek veya program başka bir yöntemle durdurulana dek devam eder.

 

while( boolean değişken yada sabit)
{ boolean degişken veya sabitin değeri true olduğunda yapılan işlemler}

 

örneğin :

 

while(true)
{ System.out.println("Bu yazı surekli olarak tekrar edecektir");}

 

yapısı sonsuz bir döngü oluşturur. Aşağıdaki program yapısı ise sayı 1000 den büyük veya 1000 e eşit olduğunda durur.
 

int sayı=2;
while(sayı <= 1000)
{ sayı *= 2; }

 

While tekrarlama yapısı bazen biraz daha farklı bir yapı içinde verilebilir. Aşağıda gösterilen bu yeni yapı, bir önceki while yapısına göre daha ender kullanılar. do..while  yapısının while yapısından temel farkı, döngünün içine en az bir kere girilme zorunluğunun olmasıdır.
 

do
{
boolean degişken veya sabitin değeri true olduğunda yapılan işlemler.
Bu paranteze boolean değerinin ne olduğuna bakılmaksızın en az bir kere girilir
}
while( boolean değişken yada sabit)

 

Program 1.22 de dowhile döngüsünün kullanıldığı   dowhileApplet.java programı görülmektedir

 

Program 1.22 :  do..while döngüsü örneği dowhileApplet.java programı

import java.awt.Graphics;
import java.applet.Applet;

public class dowhileApplet extends Applet
{
    public void paint(Graphics g)
    {
    int saydirici=1;
    int x=25;
    do {
         g.drawString(Integer.toString(saydirici),x,25);
          x += 15;
         } while(++saydirici <= 10);
    }
}

 

 

Bu program calıstığında appletviewer Şekil 1.15 deki sonucu verecektir.

 

01015.JPG

Şekil 1.15 dowhileApplet.class  dosyasının appletviewer programı kullanarak görülmesi

 

Aynı programı Swing JoptionPane çıktısı kullanarak yazalım :

 

Program 1.23 :  do..while döngüsü örneği dowhileSW.java programı

import javax.swing.*;

 

public class dowhileSW

{

    public static void main(String args[])

    {

    int saydirici=1;

    String s="";

    do {

         s=s+Integer.toString(saydirici)+" ";         

       } while(++saydirici <= 10);

    JOptionPane.showMessageDialog(null,s,

    "do-while yapisi",JOptionPane.PLAIN_MESSAGE);

    System.exit(0);

    }

}

 

Program çıktısı :

 

01016.JPG

Şekil 1.16 dowhileSW.class  dosyasının JoptionPane.showMassageDialog metodu  kullanarak görülmesi

 

  1.9.3 for tekrarlama yapısı

 

For tekrarlama yapısı  genellikle sayıları belli bir düzen içinde arttırmak için kullanılır. Genel yapısı aşağıda gösterilmiştir.programlamadaki sayı saydırmaya dönük uygulamalarda en fazla kullanılan yapıdır.
 

for tekrarlama yapısı  

for(baslangıç değerleri ; boolean değişken veya sabiti ; tekrarlama değişkeni artışı)
{ boolean değişken veya sabiti true (doğru) olduğunda yapılan işlemler }

 

Program 1.23 de 1 den yüze kadar sayıların toplamını hesaplayan bir konsol programı verilmiştir.


Program 1.24 : birden 100 e kadar sayıların toplamını hesaplayan  foryapisi.java konsol programı   

 

import java.io.*;
class foryapisi
{
  public static void main(String args[])
  {
  int toplam=0;
  for(int sayi=1;sayi<=100;sayi++)
  { toplam+=sayi;}
  System.out.println("1 den 100 e sayilarin toplami : "+toplam);
  }
}

 

foryapisi.java kompile edildiğinde
 

1 den 100 e sayilarin toplami : 5050

 

sonucunu verecektir.
 

Program 1.25 :  faizOraniSW.java applet programı  

import java.applet.Applet; // java applet sinifi
import java.awt.Graphics;  // Java grafik sinifi

public class faizOraniApplet extends Applet
{
  public void paint( Graphics g)
  {
  double ilkYatanPara=100e6;//yuz milyon lira
  double paraMiktari=ilkYatanPara;
  double faizOrani=0.85;//yuzde seksenbes
  int y=40;
  g.drawString("Yil",25,25);
  g.drawString("paraMiktari",100,25);
  for(int yil=1; yil<=10 ; yil++)
     {
     paraMiktari*=(1.0+faizOrani);
     g.drawString(" "+yil,25,y);
     g.drawString(" "+paraMiktari,100,y);
     // not: drawString terimi daima String türü
     // degiskenle baslamalı veya string e dönüştürülmelidir.
     y+=15;
     } // for döngüsünün sonu
  } // paint metotunun sonu
} // faizOraniApplet sinifinin son

 

Program 1.24 de yine for döngüsünün uygulaması konusunda bir örnek problem verilmiştir. Programı nasıl çalıştığını inceleyiniz. Bu programda yıllık bileşik faizler on yıl için hesaplanmaktadır. İlk iki faiz oranını elde hesaplayınız. Programı çalıştırarak sonuçları kontrol ediniz. Program sonuçları Şekil 1.14 de listelenmiştir.

 

01017.JPG

 

Şekil 1.17 faizOraniApplet.html appletinin appletviewer browser programında görünümü

 

Program 1.26 :  faizOraniSW.java applet programı  

 

import javax.swing.JOptionPane; //JOptionPane sınıfını çağır

 

public class faizOraniSW

{

  public static void main( String args[])

  {

  double ilkYatanPara=100e6;//yuz milyon lira

  double paraMiktari=ilkYatanPara;

  double faizOrani=0.85;//yuzde seksenbes

  int y=40;

  String s="Yil         Para Miktari\n";

  for(int yil=1; yil<=10 ; yil++)

     {

     paraMiktari*=(1.0+faizOrani);

     s=s+yil+"          "+paraMiktari+"\n";

     } // for döngüsünün sonu

  JOptionPane.showMessageDialog(null,s,"faiz orani",

  JOptionPane.PLAIN_MESSAGE);

  System.exit(0);

  } // main metodunun sonu

} // faizOraniSW sinifinin sonu

 

01018.JPG

Şekil 1.18 faizOraniSW.java  program çıktısının swing JoptionPane . showMessageDialog   metodu kullanılarak görüntülenmesi

 

  1.9.4 switch - case yapısı

 

Switch case yapısı çeşitli alternatifler içeren bir tablodan seçme yapma türü işlerde kullanılır. Temel yapı:

 

switch - case yapısı:

 

switch( degişken ismi)
{
case değişkenin alacağı deger :
bu değer oluştuğunda yapılacak işlemler
break; // bu deyim döngünün bitmesini sağlar.

case değişkenin alacağı başka bir değer :
bu değer oluştuğunda yapılacak işlemler
break; // bu deyim döngünün bitmesini sağlar.

................

default :
eğer yukarıdaki case kutularından hiçbirine girilemediyse
yapılacak işlemler
break;
}

 

şeklindedir. Switch yapısından sonra değişken ismi gelir. Her case deyiminden sonra ise değişkenin alacağı yeni bir değer alternatifi verilir. Eğer switch yapısında verilen alternatif hiçbir case bloğunda tanımlanmamışsa default bloğuna gider ve buradaki işlemler gerçekleştirilir. Case ve default blokları break deyimi ile sona erer. break deyimi herhangi bir döngü yapısından döngü bitmeden çıkma amacıyla da kullanılabilir. break yapısıyla döngünün dışına çıkma amacıyla diğer döngü yapılarında da kullanılabilir(if, for while gibi), fakat bu tür break kullanılarak döngü dışına   çıkılması  yapısal programlama teknikleri tarafından tavsiye edilmez. Bilgisayar listelerini yapısallıktan uzaklaştırıp, spagetti programlama dediğimiz karmakarışık programlamaya yol açabilir. Döngü yapılarından standart kontrolları yoluyla çıkılması tavsiye edilir.

 

int i=0;

while(true)
{

i++;

if(i==3) break;

System.out.println("Bu yazı uc kere tekrar edecektir");}

 

 

Program 1.27 de verilen switchApplet.java proğramı switch deyiminin nasıl kullanıldığını göstemektedir. Programcılara göre kullanılma sıklığı değişebildiği varsayılsa bile, switch yapısı şu ana kadar bahsedilen yapılar içinde en az kulanılanıdır.
 

 Program 1.27  switch - case yapısı örneği switchApplet.java   applet programı . Bu program öğrenci notlarını appletden girer ve her nottan kaç tane girildiğini listeler.

 

import java.applet.Applet;  // java applet sinifini cagir
import java.awt.*;          // java pencere kullanma sinifini cagir
import java.awt.event.*;    //  java pencereyi dinleme sinifini cagir

public class switchApplet extends Applet implements ActionListener
{
    //sinif degiskenleri
    Label kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi
    TextField kutugirdisi;//Textfield sinifi degiskeni (nesnesi) kutugirdisi
    char not;
    int Asayisi=0,Bsayisi=0,Csayisi=0,Dsayisi=0,Esayisi=0,Fsayisi=0; 
    // pencereyi baslatma metotu
    public void init()
    {
    kutubasligi=new Label("Ogrencinin notunu giriniz (A B C.. : ");
    add(kutubasligi);//kutubasligini pencereye yaz
    kutugirdisi=new TextField(5);
    add(kutugirdisi);//kutuyu pencereye yerlestir
    // kutuya yeni ilave edilecek komutlari bekle
    // her yeni komutta actionPerformed metotunu calistir.
    kutugirdisi.addActionListener(this);
    }
    public void paint(Graphics g) 
    {
         g.drawString("Her harf notun toplami : ",25,40);
         g.drawString("A : "+Asayisi,25,55);
         g.drawString("B : "+Bsayisi,25,70);
         g.drawString("C : "+Csayisi,25,85);
         g.drawString("D : "+Dsayisi,25,100);
         g.drawString("E : "+Esayisi,25,115);
         g.drawString("F : "+Fsayisi,25,130);
    }

    // girdi alanindaki olan olaylari dinleme metotu
    public void actionPerformed(ActionEvent e)
    {
    //ogrencinin notunu pencereden oku
    String not1=e.getActionCommand();
    not=not1.charAt(0);
    showStatus(""); // sonuç bölgesindeki yazıyı sil
    kutugirdisi.setText(""); //kutudaki harfi sil
    switch(not)
    {
      case 'A': case 'a':
        ++Asayisi;
        break;
      case 'B': case 'b':
        ++Bsayisi;
        break;
      case 'C': case 'c':
        ++Csayisi;
        break;
      case 'D': case 'd':
        ++Dsayisi;
        break;
      case 'E': case 'e':
        ++Esayisi;
        break;
      case 'F': case 'f':
        ++Fsayisi;
        break;
      default:
        showStatus("yanlıs not tanımlandı yani bir not giriniz.");
        break;
    }  // switch deyiminin sonu
    repaint();//pencereyi yeniden paint metotuna gore ciz
    }

}

 

01019.JPG

 

Şekil 1.19  switch - case yapısı örneği switchApplet.html appletinin sonuçlari

 

Program 1.28  switch - case yapısı örneği switchSWA.java   swing applet programı . Bu program öğrenci notlarını appletden girer ve her nottan kaç tane girildiğini listeler.

İmport javax.swing.*;  // java swing JApplet sinifini cagir

import java.awt.*;    // java pencere awt sinifini cagir

import java.awt.event.*;     //  java pencereyi dinleme sinifini cagir

 

public class switchSWA extends JApplet implements ActionListener

{

    //sinif degiskenleri

    JLabel kutubasligi;     // Label sinifi degiskeni (nesnesi) kutubasligi

    JTextField kutugirdisi; // Textfield sinifi degiskeni (nesnesi) kutugirdisi

    JTextArea ciktiAlani;   // çıktıyı tanımlayacak alanı yaratır

    char not;

    int Asayisi=0,Bsayisi=0,Csayisi=0,Dsayisi=0,Esayisi=0,Fsayisi=0;   

    // pencereyi baslatma metodu

 

    public void init()

    {

    Container c=getContentPane();   

    kutubasligi=new JLabel("Ogrencinin notunu giriniz (A B C.. : ");

    c.add(kutubasligi,BorderLayout.WEST);//kutubasligini pencereye yaz

    kutugirdisi=new JTextField(5);

    c.add(kutugirdisi,BorderLayout.EAST);//kutuyu pencereye yerlestir

    ciktiAlani=new JTextArea("\n\n\n ");

    c.add(ciktiAlani,BorderLayout.SOUTH);

    ciktiAlani.setText("              ");

    // kutuya yeni ilave edilecek komutlari bekle

    // her yeni komutta actionPerformed metodunu calistir.

    kutugirdisi.addActionListener(this);

    }

 

    // girdi alanindaki olan olaylari dinleme metodu

 

    public void actionPerformed(ActionEvent e)

    {

    //ogrencinin notunu pencereden oku  

    String cikti="\n";

    String not1=e.getActionCommand();

    not=not1.charAt(0);

    showStatus(""); // sonu‡ b”lgesindeki yaz�y� sil

    kutugirdisi.setText(""); //kutudaki harfi sil

    switch(not)

    {

      case 'A': case 'a':

        ++Asayisi;

        break;

      case 'B': case 'b':

        ++Bsayisi;

        break;

      case 'C': case 'c':

        ++Csayisi;

        break;

      case 'D': case 'd':

        ++Dsayisi;

        break;

      case 'E': case 'e':

        ++Esayisi;

        break;

      case 'F': case 'f':

        ++Fsayisi;

        break;

      default:

        showStatus("yanlis not tanimlandi yani bir not giriniz.");

        break;

    }  // switch deyiminin sonu

         cikti=cikti+"Her harf notun toplami : \n";

         cikti=cikti+"A : "+Asayisi+"\n";

         cikti=cikti+"B : "+Bsayisi+"\n";

         cikti=cikti+"C : "+Csayisi+"\n";

         cikti=cikti+"D : "+Dsayisi+"\n";

         cikti=cikti+"E : "+Esayisi+"\n";

         cikti=cikti+"F : "+Fsayisi+"\n";

         ciktiAlani.setText(cikti);

    repaint();//pencereyi yeniden paint metoduna gore ciz

    }

}

 

01020.JPG

Şekil 1.20  switch - case yapısı örneği switchSWA.html swing appletinin sonuçlari

 

  1.10 ARİTMETİK İŞLEMLERDE DEĞİŞKEN TÜRÜ DEĞİŞTİRME (CASTİNG) OPERASYONU

 

C veya C++ dilinde bir değişken türünden değişkeni diğer değişken türünden değişkene direk olarak atama mümkündür. örneğin

 

char a='x';

int b=a;

 

işlemi c++ da geçerli bir işlemdir. Javada ise bu işlem hata verir. fakat aynı islem

 

char a='x';

int b=(int)a;

 

şeklinde gerçekleştirilebilir (int) deyimi orijinal olarak char olarak tanımlanan a değişkeninin değerini int türüne dönüştürmüş sonra da in türünden b değişkenine yüklemiştir. Bu dönüşüm işlemlerini tüm değişken türleri için kullanabiliriz, yalnız burada programcının çok dikkatli olması ve değişken türlerini, ve sınırlarını iyi tanıması gerekmektedir. Değişken türlerini değiştirirken bazı bilgiler kaybolacağı gibi hiç istemediğimiz bir sonuca ulaşma olasılığımız da mevcuttur.

 

  1.11 SAYI DEĞİL VE SONSUZ SONUÇLARI

 

Java gerçek sayı değişken türleri sayı değil (NaN ) ve artı sonsuz (Pozitif infinity ) ve eksi sonsuz(negative infinity ) sonuçları verebilirler. sayı değil (NaN) sonucu sıfır bölü sıfır, sıfır çarpı sonsuz gibi işlemlerden çıkar. sonsuz işlemi ise sayi bölü sıfır gibi işlemlerden çıkar. Bu işlemler sadece float ve double değişkenleri için tanımlıdır. Tamsayı değişkenler sıfıra bölünemezler.

 

  1.12 ALIŞTIRMALAR

 

1. Notdefteri programını veya diğer herhangibir editörü kullanarak Hosgeldiniz.java programını incele. Konsole (MS DOS veya UNIX console) ortamında aşağıdaki komutları kullanarak calıştır :

javac Hosgeldiniz.java
java Hosgeldiniz

Program 1.1  :  Hoşgeldiniz.java konsol programı

 

import java.io.*;
class Hosgeldiniz
{
public static void main (String args[])
   {
   System.out.println("Java Sinifina Hos Geldiniz!")
   }
}

 

2. Notdefteri programını kullanarak HosgeldinizApplet.java proğramını incele. Yıne not defteriyle HosgeldinizApplet.html programını incele. Konsole (MS Dos) ortamında aşağıdaki komutları kullanarak calıştır:

 

javac HosgeldinizApplet.java
appletviewer HosgeldinizApplet.html
 

  Program 1.2 :  HosgeldinizApplet.java

import java.applet.Applet;
import java.awt.*;

public class HosgeldinizApplet extends Applet
{
   public void paint(Graphics g)
   { g.drawString("Java sinifina hos geldiniz!",25,25); }
}

 

3. Notdefteri programını kullanarak ikisayitopla.java programını incele. Konsole (MS Dos) ortamında aşağıdaki komutları kullanarak calıştır :

javac ikitamsayitopla.java
java ikitamsayitopla

 
Program 1.29 : ikitamsayitopla.java  

 

import java.io.*; //giris çikis
import Text;

class ikitamsayitopla
{
     public static void main (String args[]) throws IOException
     {
     int sayi1,sayi2;
     int toplam=0;
     //
     Text m=new Text();
     System.out.println("Bir tam sayi giriniz : ");
     sayi1=m.readInt();
     System.out.println("Ikinci bir tam sayi girermisiniz : ");
     sayi2=m.readInt();
     toplam=sayi1+sayi2;
     System.out.println("Iki tam sayinin toplami : "+toplam);
     }
}

 

5. ikitamsayitoplaSWA.java

 Notdefteri programını kullanarak ikisayitoplaSWA.java ve ikisayitoplaSWA.html programını ve incele. Konsole (MS DOS) ortamında aşağıdaki komutları kullanarak calıştır :

javac ikitamsayitoplaSWA.java
appletviewer ikitamsayitoplaSWA.html

 

Program 1.30 : ikitamsayitoplaSWA.java  

import java.awt.*; //giris cikis

import javax.swing.*;

 

public class ikitamsayitoplaSWA extends JApplet

{

     int toplam;

 

     public void init()

     {

     int sayi1,sayi2;

     toplam=0;

     //

     sayi1=Integer.parseInt(JOptionPane.showInputDialog(" Bir tam sayi giriniz : "));

     sayi2=Integer.parseInt(JOptionPane.showInputDialog(" Ikinci bir tam sayi giriniz : "));

     toplam=sayi1+sayi2;

     }

 

     public void paint(Graphics g)

     {

      g.drawRect(15,10,270,20);

      g.drawString("iki sayinin toplami : "+toplam,25,25);

     }

}

 

 

6. Notdefteri programını kullanarak tamsayitoplaApplet.java programını incele. Yine not defteriyle tamsayitoplaApplet.html programını incele. Konsole (MS Dos) ortamında aşağıdaki komutları kullanarak calıştır :

javac tamsayitoplaApplet .java
appletviewer tamsayitoplaApplet.html
 

Program 1.31 tamsayitoplaApplet.java programı

 

import java.applet.Applet; // java applet sinifini cagir
import java.awt.*; // java pencere kullanma sinifini cagir
import java.awt.event.*; // java pencereyi dinleme sinifini cagir

public class tamsayitoplaApplet extends Applet implements ActionListener
{
//sinif degiskenleri

Label kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi
TextField kutugirdisi;//Textfield sinifi degiskeni (nesnesi) kutugirdisi
int sayi;
int toplam;
// pencereyi baslatma metotu

public void init()
{
kutubasligi=new Label("Bir tamsayi giriniz : ");
add(kutubasligi);//kutubasligini pencereye yaz
kutugirdisi=new TextField(10);
add(kutugirdisi);//kutuyu pencereye yerlestir
toplam=0;
// kutuya yeni ilave edilecek komutlari bekle
// her yeni komutta actionPerformed metotunu calistir.
kutugirdisi.addActionListener(this);
}

// girdi alanindaki olan olaylari dinleme metotu

public void actionPerformed(ActionEvent e)
{
//sayiyi pencereden oku
Integer sayi1=new Integer(e.getActionCommand() );
sayi=sayi1.intValue();
// sayiyi okutma islemini asagidaki deyimle de yapabiliriz
// sayi=Integer.parseInt( e.getActionCommand() );
toplam+=sayi; // veya toplam=toplam+sayi;
repaint();//pencereyi yeniden paint metotuna göre ciz
}

public void paint(Graphics g)
{ g.drawString("Su ana kadarki sayilarin toplami : "+toplam,25,50); }

 

01021.JPG

 

Şekil 1.21  tamsayitoplaApplet.html appletinin sonuçlari

 

7. tamsayitoplaSWA.java

 Notdefteri programını kullanarak tamsayitoplaSWA.java ve ikisayitoplaSWA.html programını ve incele. Konsole (MS DOS) ortamında aşağıdaki komutları kullanarak calıştır :

javac tamsayitoplaSW.java
appletviewer tamsayitoplaSW.html

 

Program 1.32 tamsayitoplaSWA.java programı :

 

import java.awt.*; //giris cikis

import javax.swing.*;

 

public class ikitamsayitoplaSWA extends JApplet

{

     int toplam;

 

     public void init()

     {

     int sayi1,sayi2;

     toplam=0;

     //

     sayi1=Integer.parseInt(JOptionPane.showInputDialog(" Bir tam sayi giriniz : "));

     sayi2=Integer.parseInt(JOptionPane.showInputDialog(" Ikinci bir tam sayi giriniz : "));

     toplam=sayi1+sayi2;

     }

 

     public void paint(Graphics g)

     {

      g.drawRect(15,10,270,20);

      g.drawString("iki sayinin toplami : "+toplam,25,25);

     }

}

 

01022.JPG

Şekil 1.22  tamsayitoplaSWA.html appletinin sonuçlari

 

7. tamsayitoplaSWFrame.java

 Not defteri programını kullanarak tamsayitoplaSW.java  programını ve incele. Konsole (MS DOS) ortamında aşağıdaki komutları kullanarak calıştır :

javac tamsayitoplaSWFrame.java
java tamsayitoplaSWFrame

 

Program 1.33 tamsayitoplaSWFrame.java programı

import javax.swing.*;       //java swing  sinifini çağırır

import java.awt.*;          // Java grafik sınıfını çağırır

import java.awt.event.*;    //  java pencereyi dinleme sınıfını çağırır

 

public class tamsayitoplaSWFrame extends JFrame implements ActionListener

{

    //Layout container tanımı

    //sinif degiskenleri

    JLabel kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi

    JTextField kutugirdisi;//Textfield sinifi degiskeni (nesnesi) kutugirdisi

    JTextArea cikti;

    int sayi;

    int toplam;

  

    // pencereyi baslatma metodu

 

    public tamsayitoplaSWFrame()

    {

    super("tam sayilarin toplami");

    Container cerceve=getContentPane();

    cerceve.setLayout( new FlowLayout() );

    kutubasligi=new JLabel("Bir tamsayi giriniz : ");

    cerceve.add(kutubasligi);//kutubasligini pencereye yaz

    kutugirdisi=new JTextField(10);

    cerceve.add(kutugirdisi);//kutuyu pencereye yerlestir

    cikti=new JTextArea(6,30);

    cikti.setFont(new Font("Times New Roman",Font.PLAIN,14));

    cerceve.add(cikti);

    toplam=0;

    // kutuya yeni ilave edilecek komutlari bekle

    // her yeni komutta actionPerformed metodunu calistir.

    kutugirdisi.addActionListener(this);

    }

   

    // girdi alanindaki olan olaylari dinleme metodu

    public void actionPerformed(ActionEvent e)

    {

    //sayiyi pencereden oku

    Integer sayi1=new Integer(kutugirdisi.getText() );

    sayi=sayi1.intValue();

    // sayiyi okutma islemini asagidaki deyimle de yapabiliriz

    //  sayi=Integer.parseInt( e.getActionCommand() );

    toplam+=sayi;  // veya toplam=toplam+sayi;

    kutugirdisi.setText("");

    cikti.setText("Su ana kadarki sayilarin toplami : "+toplam);

    }

 

    public static void main( String[] argv ) {

    tamsayitoplaSWFrame frame = new tamsayitoplaSWFrame(); ;

    frame.addWindowListener( new WindowAdapter()

    {

    public void windowClosing( WindowEvent e ) { System.exit( 0 );}

    });

    frame.setSize( 400, 300 );

    frame.show();

    }

}

 

5. Notdefteri programını kullanarak dortArtiIslem.java programını incele. Konsole (MS Dos) ortamında aşağıdaki komutları kullanarak calıştır :

javac dortArtiIslem.java
java dortArtıIslem
               

Program 1.34 dortArtiIslem.java programı

import java.io.*; //giris çikis 
import Text;

class dortArtiIslem
{
     public static void main (String args[]) throws IOException
     {
     int sayi1,sayi2;
     // 
     DataInputStream cin=new DataInputStream(System.in);
     System.out.println("Bir tam sayi giriniz : ");
     sayi1=Text.readInt(cin);
     System.out.println("Ikinci bir tam sayi giriniz : ");
     sayi2=Text.readInt(cin);
     System.out.println("Iki tam sayinin toplami : "+(sayi1+sayi2));
     System.out.println("Iki tam sayinin farki      : " +(sayi1-sayi2));
     System.out.println("Iki tam sayinin carpimi : "+(sayi1*sayi2));
     System.out.println("Iki tam sayinin bolumu  : "+(sayi1/sayi2));
     System.out.println("Iki tam sayinin kalani    :  "+(sayi1%sayi2));
     // Matematik tipi degisken islemleri  :
     //    +    : topla
     //    -    : cikar
     //    *    : carp
     //    /    : bol
     //    %    : bolumun kalani
     //    +=   : kendisi ve sag tarafindaki ile topla
     //           sayi1+=3  ve sayi1=sayi1+3 ayni islemdir
     //    -=   : kendisinden sag tarafindakini cikar
     //           sayi1-=3  ve sayi1=sayi1-3 ayni islemdir
     //    *=   : kendisi ve sag tarafindakini carp
     //           sayi1*=3  ve sayi1=sayi1*3 ayni islemdir
     //    /=   : kendisini sag tarafindakine bol
     //           sayi1/=3  ve sayi1=sayi1/3 ayni islemdir
     //    %=   : kendisini sag tarafindakine bol kalanini ver
     //           sayi1%=3  ve sayi1=sayi1%3 ayni islemdir
     //    ++   : kendisine bir ekle
     //           sayi1++  ve sayi1=sayi1+1 ayni islemdir
     //    ++   : kendisine bir ekle
     //           ++sayi1  ve sayi1=sayi1+1 ayni islemdir
     //    --   : kendisinden bir cikar
     //           sayi1--  ve sayi1=sayi1-1 ayni islemdir 
     //    --   : kendisinden bir cikar
     //           --sayi1  ve sayi1=sayi1-1 ayni islemdir 
     boolean mantik1,mantik2;
     mantik1=true; // dogru
     mantik2=false;//yanlis
     System.out.println("dogru ve yanlis         : "+(mantik1 && mantik2));
     System.out.println("dogru veya yanlis       : "+(mantik1 || mantik2));
     mantik1=( sayi1 sayi2 );
     mantik2=( sayi1 < sayi2 );
     //   Boolean (mantik) tipi degisken islemleri :
     //         : buyuktur
     //   <      : kucuktur
     //   ==     : esittir
     //   =     : buyuk veya esittir
     //   <=     : kucuk veya esittir
     //   !      : mantigi tersine cevirme
     //   !=     : esit degildir
     //   &&     : ve 
     //   ||     : veya
     mantik1=( sayi1 sayi2 );
     mantik2=( sayi1 < sayi2 );
     System.out.println("sayi1 buyuktur sayi2    : "+mantik1);
     System.out.println("sayi 1 kucuktur sayi2   : "+mantik2);
     }
}

 

Bir tam sayi giriniz : 3
Ikinci bir tam sayi giriniz : 2
Iki tam sayinin toplami : 5
Iki tam sayinin farki : 1
Iki tam sayinin carpimi : 6
Iki tam sayinin bolumu : 1
Iki tam sayinin kalani : 1
dogru ve yanlis : false
dogru veya yanlis : true
sayi1 buyuktur sayi2 : true
sayi 1 kucuktur sayi2 : false

 

6. Notdefteri programını kullanarak gercekSayiOrtalamaApplet.java proğramını incele. Yine not defteriyle gercekSayiOrtalamaApplet.html programını incele. Konsole (MS Dos) ortamında aşağıdaki komutları kullanarak calıştır :

javac gercekSayiOrtalamaApplet .java

appletviewer gercekSayiOrtalamaApplet.html

Program 1.34 : gercekSayiOrtalamaApplet.java programı

 

import java.applet.Applet;  // java applet sinifini cagir
import java.awt.*;          // java pencere kullanma sinifini cagir
import java.awt.event.*;    //  java pencereyi dinleme sinifini cagir
public class gercekSayiOrtalamaApplet extends Applet implements ActionListener
{
    //sinif degiskenleri
    Label kutubasligi; //Label sinifi degiskeni (nesnesi) kutubasligi
    TextField kutugirdisi;// Textfield sinifi degiskeni (nesnesi) kutugirdisi
    double sayi;          // Gerçel degisken sayi
    double toplam;        // Gerçel degisken toplam
    double carpim;        // Gerçel degisken carpim
    double aritmetikOrtalama; // Gerçel degisken aritmetik ortalama
    double geometrikOrtalama; // Gerçel degisken geometrik ortalama
    int sayici;  // tam sayi degisken toplam rakam sayisini sayici
    // pencereyi baslatma metotu
    // pencere ilk basladiginda 
    // degiskenler buradaki degerleri alirlar
    public void init()
    {
    kutubasligi=new Label("Bir sayi giriniz : ");
    add(kutubasligi);
    kutugirdisi=new TextField(10);
    add(kutugirdisi);
    toplam=0;
    carpim=1.0;
    aritmetikOrtalama=0;
    geometrikOrtalama=0;
    sayici=0;
    kutugirdisi.addActionListener(this);
    }

    // girdi alanindaki olan olaylari dinleme metotu
    // Her yeni rakam girildiginde bu metot çagirilir
    public void actionPerformed(ActionEvent e)
    {
    sayici++;
    Double sayi1=new Double(e.getActionCommand() );
    sayi=sayi1.doubleValue(); 
    toplam+=sayi;  // veya toplam=toplam+sayi;
    aritmetikOrtalama=toplam/sayici;
    carpim*=sayi;  // veya carpim=carpim*sayi;
    geometrikOrtalama=Math.pow(carpim,(1.0/sayici));//carpimin koku
    kutugirdisi.setText("");//kutudaki rakami sil
    repaint();//pencereyi yeniden paint metotuna göre ciz
    }

    public void paint(Graphics g) 
    {
    //   drawString Metotundaki eksen sistemi
    //   ----------------------- x ekseni
    //   |
    //   |
    //   |
    //   V  y ekseni 
         g.drawString("Su ana kadarki sayilarin toplami : "+toplam,25,50);
         g.drawString("Su ana kadarki sayilarin aritmetik ortalamasi : "+aritmetikOrtalama,25,65);
         g.drawString("Su ana kadarki sayilarin geometrik ortalamasi : "+geometrikOrtalama,25,80);
    }
}

 

01023.JPG

 

Şekil 1.23 gercekSayiOrtalamaApplet.html çıktısı

 

7. Notdefteri programını kullanarak bessayıtopla.java proğramını incele. Konsole (MS Dos) ortamında aşağıdaki komutları kullanarak calıştır :

 

javac bessayıtopla.java
java bessayıtopla

 

Program 1.35 : bessayitopla.java programı,  beş gerçek sayıyı toplar.

import java.io.*; // giris çikis 
import Text;      // okuma sinifi

class bessayitopla 
{
     public static void main (String args[]) throws IOException
     {
     double sayi;
     double toplam=0;
     int saydirici=0;
     // 
     Text cin=new Text();
     while( saydirici < 5)
     {
        System.out.println("Bir tam sayi giriniz : ");
        sayi=cin.readDouble();
        toplam+=sayi;
        saydirici++; 
     }
     System.out.println("sayilarin toplami : "+toplam);
     }
}


 

Bir tam sayi giriniz : 1
Bir tam sayi giriniz : 2
Bir tam sayi giriniz : 3
Bir tam sayi giriniz : 4
Bir tam sayi giriniz : 5
sayilarin toplami : 15.0

 

8 . Notdefteri programını veya herhangi bir editör programı kullanarak StringDegisken.java programını incele. Konsole (MS Dos) ortamında aşağıdaki komutları kullanarak calıştır :

javac StringDegisken.java
java StringDegisken

  Program 1.36 : StringDegisken.java programı,  String değişkenlerini + operatörüyle ekleme işlemi

import java.io.*; //giris çikis sinifini cagir

class StringDegisken
{
     public static void main (String args[]) throws IOException
     {
     String s1,s2,s3,s4;
     int i1;
     String s;
     s1="Ali ";
     s2="Veli ";
     s3="49";
     s4=" Elli";
     s=s1+s2+s3+s4;
     System.out.println(s);
     i1=49;
     s=s1+s2+i1+s4;
     System.out.println(s);
     }
}

 

 

Ali Veli 49 Elli
Ali Veli 49 Elli

 

 

9 . alıstırma 7 deki bessayi topla.java programini iyice anladiktan sonra birden yüze (100) kadar sayiların ortalamasini hesaplayan birdenyüzeOrtalama.java program ve sinifini (Konsole) yaz ve calistir.
 

Program 1.37 : Birdenyüzeortalama.java programı,  birden yüze kadar sayıların ortalamasını hesaplar.

import java.io.*; // giris cikis
import Text; // okuma sinifi
class birdenyuzeortalama
{
public static void main (String args[])
{
double sayi=1;
double toplam=0;
while( sayi <= 100)
{
toplam+=sayi++;
}
System.out.println("sayilarin toplami : "+toplam);
System.out.println("sayilarin ortalamasi : "+toplam/100.0);
}
}

 

sayilarin toplami : 5050.0
sayilarin ortalamasi : 50.5

 

10. If yapısını kullanma programı, karsilastirmaApplet.java ,  İki String türü değişkeni Applet TextField girdi alanından girer ve birbiriyle karşılaştırır. Sonuçları Applet ortamında yazdırır. Bu program applet olarak dizayn edilmiştir. programı çalıştırınız ve sonuçlarını applet ortamında alınız.
 

Program 1.38 : karsilastirmaApplet.java programı

 

//if deyiminin kullanimi
import java.applet.Applet; // java applet sinifini cagir
import java.awt.*; // java pencere kullanma sinifini cagir
import java.awt.event.*; // java pencereyi dinleme sinifini cagir


public class karsilastirmaApplet extends Applet implements ActionListener
{
Label soru1; //kullaniciya birinci degeri girme sorusu sorar
TextField girdi1; //birinci degeri girme kutusu
Label soru2; //kullaniciya ikinci degeri girme sorusunu sorar
TextField girdi2; //ikinci degeri girme kutusu
int sayi1,sayi2; //girilen iki sayi
//graphic kullanici baglantisindaki ilk degerleri tanimla

public void init()
{
soru1=new Label("Bir sayi giriniz ");
girdi1=new TextField(10);
soru2=new Label("Ikinci bir sayi giriniz");
girdi2=new TextField(10);
add(soru1); //soru1 yazisini applete cizer
add(girdi1);//girdi1 kutusunu applete cizer
add(soru2); //soru2 yazisini applete cizer
girdi2.addActionListener(this);
// soru2 den sonra girdi (return) tusunu bekler
// girdi(return) tusundan sonra actionPerformed
// metotuna gider
add(girdi2); //girdi2 kutusunu applete cizer
}

// sonuclari applete yazdir
public void paint(Graphics g)
{
g.drawString("Karsilastirma sonuclari : ",70,75);
if(sayi1 == sayi2)
g.drawString(sayi1+" == "+sayi2,100,90);
if(sayi1 != sayi2)
g.drawString(sayi1+" != "+sayi2,100,105);
if(sayi1 < sayi2)
g.drawString(sayi1+" < "+sayi2,100,120);
if(sayi1 sayi2)
g.drawString(sayi1+" "+sayi2,100,135);
if(sayi1 <= sayi2)
g.drawString(sayi1+" <= "+sayi2,100,150);
if(sayi1 = sayi2)
g.drawString(sayi1+" = "+sayi2,100,165);
}

// eger girdi(return) tusuna basildiysa bu
// metotu cagir

public void actionPerformed( ActionEvent e)
{
// sayi 1 i girdi kutusundan oku
sayi1=Integer.parseInt(girdi1.getText());
// sayi 2 i girdi kutusundan oku
sayi2=Integer.parseInt(girdi2.getText());
repaint();
}
}

 

01024.JPG

 

Şekil 1.24 karsilastirmaApplet.html çıktısı

 

11. whileyapisi.java programını incele, çalıştır ve sonuçlarını konsol ortamında al.

 

Program 1.39 : whileyapisi.java programı. Bu program while yapısını kullanarak sayıların iki ile çarpımını hesaplar.
 

import java.io.*; //java girdi cikti sinifini cagir
class whileyapisi
 {
      public static void main(String args[])
      {
      int sayi=2;
      while(sayi<=1000)
         {
            sayı*=2;
            System.out.prıntln("sayı = "+sayi);
      }
 }

 

sayi = 4
sayi = 8
sayi = 16
sayi = 32
sayi = 64
sayi = 128
sayi = 256
sayi = 512
sayi = 1024

 

 

dowhileApplet.java programını incele ve çalıştır. Bu program do-while   döngü yapısı kullanarak bir sayı dizisini applet ortamında yazdırmaktadır.

 

Program 1.40 : dowhileApplet.java programı

 

import java.awt.Graphics;

import java.applet.Applet;

 

public class dowhileApplet extends Applet

{

    public void paint(Graphics g)

    {

    int saydirici=1;

    int x=25;

    do {

         g.drawString(Integer.toString(saydirici),x,25);

          x += 15;

         } while(++saydirici <= 10);

    }

}

 

01025.JPG

Şekil 1.25 dowhileApplet.html çıktısı


13.  foryapisi.java programını incele ve çalıştır. Bu program for  döngü yapısı kullanarak bir sayı dizisini applet ortamında yazdırmaktadır.

 

Program 1.41 : foryapisi.java   programı

import java.io.*;

class foryapisi

{  public static void main(String args[])

  {

  int toplam=0;

  for(int sayi=1;sayi<=100;sayi++)

  { toplam+=sayi;}

  System.out.println("1 den 100 e sayilarin toplami : "+toplam);

  }

}

 

foryapisi.java   programı çıktısı :

1 den 100 e sayilarin toplami : 5050

 

14.   faizOraniApplet.java programını incele ve çalıştır. Bu program   döngü yapısı kullanarak faiz oranlarını hesaplamaktadır.

 

15.  switchApplet.java programını incele ve çalıştır. Bu program  switch yapısını kullanmaktadır..

 

 

16.   Bir java konsol programı ( kilo.java) yazarak On kişilik bir sınıftaki kişilerin ağırlıklarını girdi olarak giriniz.

·          Ağırlıkları 40 kg dan az olanları zayıf olarak,

·          Ağırlıkları 40 kilo ile 80 kilo arasında olanları normal,

·          Agırlıkları 80 kg in üstünde olanları sişman katagorisinde sınıflarsak

her sınıfta kaç kişi olduğunu yazdırınız. Dosyanızın adı kilo.java, sınıfınızın adı : kilo olacaktır. Bilmediğiniz yapıları örnek problemleri inceleyerek öğrenebilirsiniz.

 

 Program 1.42 : kilo.java programı.

import java.io.*; // giris çikis
import Text;      // okuma sinifi

class kilo
{
     public static void main (String args[]) throws IOException
     {
     double kilo;     //
     Text cin=new Text();
     System.out.println("kilonuzu giriniz : ");
     kilo=cin.readDouble();
        if( kilo <= 40)
           { System.out.println("zayif"); }
        else if( kilo40 && kilo<80 )
           { System.out.println("normal"); }
        else
           { System.out.println("sisman"); }
     }

}

 

program çıktısı :

 

kilonuzu giriniz : 45
normal

 

kilonuzu giriniz : 95
sisman

 

17.  yildiz3forApplet.java programı altta verilmiştir. bu programı inceleyiniz ve Applet çıktısını oluşturunuz.

 

Program 1.21 : yildiz3forApplet.java programı 

 

import java.awt.Graphics;

import java.applet.Applet;

 

public class yildiz3forApplet extends Applet

{

    public void paint(Graphics g)

    {

       int x,y;

       for(x=15;x <= 150;x+=15)

       {

       y=15;

       g.drawString("*",x,y);

       g.drawString("*",x,y+45);

       }

       for(y=15;y <= 65;y+=15)

       {

       x=15;

       g.drawString("*",x,y);

       g.drawString("*",x+135,y);

       }

 

    }

}

 

01026.JPG

Şekil 1.26    yildiz3forApplet.html çıktısı 

 

18. yildiz1whileApplet.java programı altta verilmiştir. Bu programı inceleyiniz ve applet çıktısını oluşturunuz.
 

Program 1.22 : yildiz1whileApplet.java programı 

 

import java.awt.Graphics;import java.applet.Applet;
public class yildiz1whileApplet extends Applet
{
public void paint(Graphics g)
{
int i=1;
int x=15;
while(i++ <= 11) //i degeri birden 11 a kadar degisir
{
g.drawString("*",x,x);
x += 15; // x degeri her i icin 15 artiyor
}
}
}

 

01027.JPG

 

Şekil 1.27 yildiz1whileApplet.html program çıktısı

 

19. yildiz2forApplet.java programı altta verilmiştir. Bu programı inceleyiniz ve applet çıktısını oluşturunuz.

Program 1.23 :  yildiz2forApplet.java

 

import java.awt.Graphics;

import java.applet.Applet;

public class yildiz2forApplet extends Applet{

 

   public void paint(Graphics g)

  { int i;
   int x=0;
   for(i=1;i <= 11;i++) //i degeri birden 11 a kadar degisir
  {
  x += 15; // x degeri her i icin 15 artiyor
  g.drawString("*",x,x);
  g.drawString("*",x,(180-x));
  }
  }

}

 

01028.JPG

Şekil 1.28 yildiz2forApplet.html çıktısı

 

20. yildiz2whileApplet.java programı altta verilmiştir. Bu programı inceleyiniz ve applet çıktısını oluşturunuz.

Program 1.24 : yildiz2whileApplet.java programı
 

import java.awt.Graphics;
import java.applet.Applet;
public class yildiz2whileApplet extends Applet
{
public void paint(Graphics g)
{
int i=1;
int x=0;
while(i++ <= 11) //i degeri birden 11 a kadar degisir
{
x += 15; // x degeri her i icin 15 artiyor
g.drawString("*",x,15);         // x lineer degisken y 15
g.drawString("*",15,x);         // x 15 y lineer değişken
g.drawString("*",x,165);       // x lineer değişken y 165
g.drawString("*",165,x);       // x 165 y lineer değisken
g.drawString("*",x,x);           // çiz
g.drawString("*",x,(180-x));  // çiz
}
}
}

 

01029.JPG

 

Şekil 1.29   yildiz2whileApplet.html çıktısı
 

21. yildiz1forApplet.java programı altta verilmiştir. Bu programı inceleyiniz ve applet çıktısını oluşturunuz.

Program 1.24 yildiz1forApplet.java programı

import java.awt.Graphics;
import java.applet.Applet;
public class yildiz1forApplet extends Applet
{
public void paint(Graphics g)
{
int i;
int x=25;
for(i=1;i <= 10;i++) //i degeri birden 10 a kadar degisir
{
g.drawString("*",x,x);
x += 15; // x degeri her i icin 15 artiyor
}
}
}

 

01030.JPG

 

Şekil 1.30 yildiz1forApplet.html çıktısı

 

22. piApplet.java  programı altta verilmiştir. Bu programı inceleyiniz ve applet çıktısını oluşturunuz. Burada dizi formülü ve for döngüsünden yararlanılarak p sayısı hesaplanmaktadır. Kullanılan seri formülünün dönüşme hızının yüksek olmadığından seri 100000 terim için hesaplanmıştır. Bu serinin açık yazılımı :

  p =  4 - 4/3 + 4/5 -4/7+4/9-4/11+......

şeklindedir.


 Program 1.25  piApplet.java programı.

 

import java.awt.Graphics;
import java.applet.Applet;

public class piApplet extends Applet
{
    public void paint(Graphics g)
    {
       int i;
       double pi=0;
       int artieksi=-1;
       for(i=1;i < 100000;i++)
       {
          artieksi*=-1;
          pi+=4/(2.0*i-1.0)*artieksi;
       }
       g.drawString("pi : "+pi,25,25); 
    }
}

 

23. Pisagor üçlüsü : bir dik üçgende üç kenarın da tam sayı olması mümkündür. Bu tür sayı setine pisagor üçlüsü adı verilir. Pisagor üçlüsünde ilk iki sayının karelerinin toplamı üçüncü sayının karesine eşit olmalıdır. Birincidikkenar, ikincidikkenar ve hipotenüs tam sayı pisagor üçlülerini üçlü for döngüsü kulanarak bulan bir program yazınız.

 

24.  Java applet programı kullanarak aşağıdaki şekli applet de çizdiriniz :

 

* * * * * * * * * *
  * * * * * * * * *
     * * * * * * * *
       * * * * * * *
           * * * * * *
              * * * * *
                 * * * *
                    * * *
                       * *
                          *

Program 1.26 H3A1.java programı. Bu program üçgen bir yıldızı alanı çizdirir.

 

import java.awt.Graphics;

import java.applet.Applet;
public class H3A1 extends Applet
{
    public void paint(Graphics g)
    {
    int x,y;
    for(x=15;x <= 150;x+=15)
       {
         for(y=15;y <= x;y+=15)
          {
          g.drawString("*",x,y);
          }
       }
    }
}

 

01031.JPG

 

 Şekil 1.31 yıldız üçgeni çizen H3A1.html çıktısı

 

25. Java applet programı kullanarak aşağıdaki şekli appletde çizdiriniz

 

 

* * * * * * * * * *
*                          *

*                          *         
* * * * * * * * * *

 

 

Program 1.27 : H3A2.java, Yıldızlardan oluşan dikdörtgen çizer

 

import java.awt.Graphics;
import java.applet.Applet;

public class H3A2 extends Applet
{
    public void paint(Graphics g)
    {
       int x,y;
       for(x=15;x <= 150;x+=15)
       {
         g.drawString("*",x,15);
         g.drawString("*",x,60);
       }
       for(y=15;y <= 60;y+=15)
       {
         g.drawString("*",15,y);
         g.drawString("*",150,y);
       }

    }
}

 

26. Java konsol programı kullanarak aşağıdaki şekli konsolda çizdiriniz. x ekseni ve y eksenindeki toplam yıldız sayısını ekrandan giriniz.

 

* * * * * * * * * *
*                         *
*                         *
* * * * * * * * * *

 

27. Java konsol programı faktoriyel.java programını oluşturunuz ve  bir sayinin faktoriyelini hesaplayiniz.

n!=n*(n-1)*(n-2)….4.3.2.1 4!= 4*3*2*1 3!=3*2*1

Program 1.28 faktoriyel .java programı. Sayının faktoriyelini döngü kullanarak hesaplar.

   

import java.io.*;
import Text;
class faktoriyel
{
  public static void main(String args[]) throws IOException
  {
  int faktoriyel=1;
  Text cin=new Text();
  int faktoriyelsayi;
  System.out.println("Bir tamsayi giriniz:");
  faktoriyelsayi=cin.readInt();
  for(int sayi=1;sayi<=faktoriyelsayi;sayi++)
  { faktoriyel*=sayi;}
  System.out.println(faktoriyelsayi+" faktoriyel: "+faktoriyel);
  }
}

 

Bir tamsayi giriniz: 4
4 faktoriyel: 24

 

28. Java konsol programı kullanarak asağıdaki formulü hesaplayınız:

ex = 1 + x /1! + x2 / 2! + x3 / 3! + x 4 / 4! + ..
not : e=2.7182818
  Program 1.29 H3A4.java programı. For döngüsü kullanarak exponent hesaplar.

import java.io.*;
import Text;
class H3A4
{
public static void main(String args[]) throws IOException
{
double faktoriyel=1;
double x;
double us=1;
double exponent=1;
Text cin=new Text();
System.out.println("Bir sayi giriniz:");
x=cin.readDouble();
for(double sayi=1;sayi<=200;sayi++)
{
faktoriyel*=sayi;
us*=x;
exponent+=us/faktoriyel;
}
System.out.println("exp("+x+") = "+exponent);
System.out.println("gercek exp("+x+") = "+Math.exp(x));
}
}

 

Bir sayi giriniz: 3
exp(3.0) = 20.08553692318766
gercek exp(3.0) = 20.08553692318767

 

29. Alıştırma 28 deki exponent hesabını for döngüsü yerine while döngüsü kullanarak gerçekleştiriniz.



 



30.
Hata fonksiyonu erf(x) aşağıdaki formülle tanımlanabilir.

 

Bir konsol programı yazınız. Text sınıfı kullanarak dışarıdan x değerini okuyunuz. For döngüsü kullanarak formülü hesaplayınız ve sonucunu yazdırınız.

 

31.  gerçek sayı faktoriyel fonksiyonu  ?'nın 1.05 noktasındaki değeri  (1.05) in değeri 0.9735 olarak bilinmektedir. f onksiyonu da faktoriyel gibi

x+1x * x

ifadesiyle tanımlanabildiğine göre (13.05) değerini hesaplayınız.

 

32.  H1OD1.java
  Program 1.30 H1OD1.java

import java.io.*;
class H1OD1
{
  public static void main(String args[])
  {
     // Bu program konsolda(MS DOS)
     // "Java Programlama dili"
     // cok zevkli bir ders
     // yazdirir
     System.out.println("\"Java Programlama dili\"\ncok zevkli bir ders");
  }
}

· programını herhangi bir editör kullanarak yazınız.
· H1OD1.java adıyla kaydediniz.
· javac H1OD1.java terimiyle compile ediniz
· yanlışlarınızı düzeltiniz
· Java H1OD1 terimiyle işletiniz

 

33.     H1OD2.java

Program 1.31 H1OD2.java

 

import java.applet.Applet;
import java.awt.*;

public class H1OD2 extends Applet
{
  public void paint(Graphics g)
  {
     // Bu program apletde(pencere)
     // "Java Programlama dili"
     // cok zevkli bir ders
     // yazdirir
     g.drawString(("\"Java Programlama dili \"",25,25);
     g.drawString("cok zevkli bir ders");",25,40);
  }
}

·           programını herhangi bir editör kullanarak yazınız.

·          H1OD2.java adıyla kaydediniz.

·          javac H1OD2.java terimiyle compile ediniz.

·          Yanlışlarınızı düzeltiniz

·          Herhangibir editor yardımıyla H1OD2.html dosyasını oluşturunuz.

·          appletviewer H1OD2.html komutuyla programı çalıştırınız.

·          Bir browser programında H1OD2.html dosyasını açınız

 

34.   H1OD3.java
İki gerçek sayinin(double) (bu sayilar 2 ve 5 olsun) farklarını Konsol ortamında (MS DOS) hesaplayacak java programını yazıp işletiniz

 

35.  H1OD4.java
İki gerçek sayinin(double) bölümlerini Konsol ortamında (MS DOS) hesaplayacak java programını yazıp işletiniz. Sayılar ekrandan Text sınıfını kullanarak girilecektir (okunacaktır)

 

36.  H1OD5.java
İki gerçek sayinin(double) çarpımlarını Applet(window) ortamında  hesaplayacak java programını yazıp işletiniz.

 

37. H1OD6.java
Beş gerçek sayinin(double) çarpımlarını Konsol ortamında (MS DOS) hesaplayacak java programını yazıp işletiniz. Sayılar ekrandan Text sınıfını kullanarak girilecektir (okunacaktır)

 

38.      H2AL1.java : if  -elseif -else yapisi ve boolean değişken örneği, konsol programı. Programı incele ve çalıştır.

Program 1.32 . H2AL1.java programı boolean double ve String değişken karşılaştırma örneği

import java.io.*;

class H2AL1

{

  public static void main(String args[]) throws IOException

  {

     // Bu program konsolda(MS DOS)

     // if metotu ve boolean kullanarak

     // karsilatirmalar yapar

     // ve sonucu yazdirir

     boolean b1;

     boolean b2;

     boolean b3;

     double sayi1;

     double sayi2;

     String s1,s2;

     Text cin=new Text();

 

     b1=true;

     b2=false;

     b3=b1&&b2;

 

     System.out.println(b1+"&&"+b2+" = "+b3);

 

     if(b3)

     {

     System.out.println("if yapisinin ici b3 = "+b3);

     }

     else if(!b3)

     {

     System.out.println("else if yapisinin ici b3 = "+b3);

     }

 

     // iki gercek sayiyi karsilastir

 

     System.out.print("Birinci gercek sayiyi oku : ");

     sayi1=cin.readDouble();

     System.out.print("Ikinci gercek sayiyi oku : ");

     sayi2=cin.readDouble();

 

     b3=(sayi1>sayi2);

     if(sayi1>sayi2)

     {

     System.out.println(sayi1+">"+sayi2+" = "+b3);

     }

     else if(sayi1<sayi2)

     {

     System.out.println(sayi1+"<"+sayi2+" = "+(sayi1<sayi2));

     }

     else

     {

     System.out.println(sayi1+"=="+sayi2+" = "+(sayi1<sayi2));

     }

 

     // iki String karsilastir

 

     System.out.print("Birinci String'i oku : ");

     s1=cin.readString();

     System.out.print("Ikinci String'i oku : ");

     s2=cin.readString();

 

     b3=s1.equals(s2);

     if(s1.equals(s2))

     {

     System.out.println(s1+" esittir "+s2+" b3 = "+b3);

     }

     else

     {

     System.out.println(s1+" esit degildir "+s2+" b3= "+b3);

     }

 

  }//main metotunun sonu

}  //H2AL1 sinifinin sonu

 

39. H2AL2 : while döngüsü örneği applet programı, 10 dan 30 a kadar sayıları applete yazdırır. Programı incele ve çalıştır.

Program 1.33 : H2Al2.java, while döngüsü örneği applet programı, 10 dan 30 a kadar sayıları applete yazdırır.

import java.applet.Applet;

import java.awt.*;

public class H2AL2 extends Applet

{

  public void paint(Graphics g)

  {

     // Bu program apletde(pencere)

     // 10 dan 30 a kadar sayilari yazdirir

     int i=0;

     double x=10.0;

     while(x<=20.0)

     {

     g.drawString(" "+(x+=1.0),i+=30,25);

     }

  }

}

 

40. H2AL3 : do - while döngüsü örneği applet programı. Programı incele ve çalıştır.


Problem 1.34 H2AL3.java : do-while döngüsü. Bu problem 10 dan 30 a kadar sayıları 2 şer 2 şer yazdırır.

 

import java.applet.Applet;

import java.awt.*;

 

public class H2AL3 extends Applet

{

  public void paint(Graphics g)

  {

     // Bu program apletde(pencere)

     // 10 dan 30 a kadar sayilari ikişer ikişer yazdirir

     int i=0;

     double x=10.0;

     do

     {

     g.drawString(" "+(x+=2.0),i+=30,25);

     } while(x<=20.0)

  }

}

 

41. H2AL4 : for döngüsü örneği, applet programı . Programı incele ve çalıştır.

Problem 1.35 H2AL4.java : for döngüsü. Bu problem 10 dan 30 a kadar sayıları 3 er 3 er yazdırır.

 

import java.applet.Applet;

import java.awt.*;

 

public class H2AL4 extends Applet

{

  public void paint(Graphics g)

  {

     // Bu program apletde(pencere) 10 dan 30 a

     // kadar sayilari 3 er 3 er yazdirir

     int i=0;

     for(double x=10.0;x<=20.0;x+=3.0)

     {

     g.drawString(" "+x,i+=30,25);

     }

  }

}

 

 

42. H2AL6 :  iç içe iki döngü, applet programı . Programı incele ve çalıştır.

Problem 1.36 H2AL6.java : for döngüsü. Bu problem iki applet ortamında boyutlu bir matrix yazdırır.

 

import java.applet.Applet;

import java.awt.*;

 

public class H2AL6 extends Applet

{

  public void paint(Graphics g)

  {

     // Bu program apletde(pencere)

     // 11 12 13 14

     // 21 22 23 24

     // 31 32 33 34

     // 41 42 43 44 yazdirir

     for(int i=1;i<5;i++)

     {

       for(int j=1;j<5;j++)

       {

       g.drawString(""+i+j,i*25,j*25);

       }  // for(int j ...dongusunun kapanisi

     }  //for(int i ..dongusunun kapanisi

  }  //paint metotunun kapanisi

} //H2AL6 sinifinin kapanisi

01032.JPG

 

Şekil 1.32 rakam matrisi çizen H2AL6.html çıktısı

 

43. H2AL7 : sayi1 den sayi2 e n er ner sayilarin toplami, applet programi

Problem 1.37 H2AL7.java : for döngüsü. Bu problem sayi1 den sayi2 e n er ner sayilarin toplamını hesaplar .

 

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

 

public class H2AL7 extends Applet implements ActionListener

{

  int sayi1,sayi2,sayi3;

  int toplam;

  Label s1,s2,s3;     //yazı alanlari sinifi

  TextField t1,t2,t3; //girdi alanlari (kutulari)

 

  //pencereyi baslatma metotu

  public void init()

  {

  s1=new Label("den ");

  s2=new Label("e kadar ");

  s3=new Label("er sayilarin toplami : ");

  t1=new TextField(5);

  t2=new TextField(5);

  t3=new TextField(5);

  //pencereye ekle

  add(t1);

  add(s1);

  add(t2);

  add(s2);

  add(t3);

  add(s3);

  t3.addActionListener(this);

  }

 

  public void paint(Graphics g)

  {

    g.drawString(""+sayi1+"den "+sayi2+"e kadar sayilarin "+

    sayi3+"er "+sayi3+"er toplami :"+toplam,15,100);

  }  //paint metotunun kapanisi

 

  //girdi alanindan sinyal bekle ve sinyal gelince su islemleri yap

  public void actionPerformed(ActionEvent e)

  {

  toplam=0;

  //sayi1, sayi2 ve sayi3  kutulardan oku

  Integer Sayi1=new Integer(t1.getText());

  sayi1=Sayi1.intValue();

  Integer Sayi2=new Integer(t2.getText());

  sayi2=Sayi2.intValue();

  Integer Sayi3=new Integer(t3.getText());

  sayi3=Sayi3.intValue();

    for(int i=sayi1;i<=sayi2;i+=sayi3)

    {

    toplam+=i;

    }

  repaint();

  }//ActionPerformed metotunun kapanisi

 

} //H2AL7 sinifinin kapanisi

01033.JPG

 

Şekil 1.33 değişken sınırlarla toplama yapan H2AL7.java programının applet çıktısı

 

44. H2OD1
while döngüsü ve konsol programı kullanarak 1 den n e kadar olan sayıların aritmetik ortalamasını hesaplayiniz. n sayisi konsoldan girilecektir.
Aritmetik ortalama (1+2+3+..+n)/n formülüyle hesaplanır.

 

Problem 1.38 H2OD1.java : while döngüsü. Bu problem 1 den  n e kadar sayilarin aritmetik ortalamasını hesaplar .

 

import java.io.*;

class H2OD1

 {

  public static void main (String args[])

  {

   //bu program 1 den n ye kadar olan

   //sayilarin aritmatik ortalamasini hesaplar

   int n;

   int sayi=1;

   double ort=0;

   Text cin = new Text ();

   System.out.println("n : ");

   n = cin.readInt ();

    while(sayi<=n)

    {

                ort=(ort + sayi)/sayi;

                sayi++;

    }

  System.out.println("aritmatik ortalama : "+ort);

 }

}

 

45. H2OD2
For döngüsü ve "*" karekterini kullanarak 5*4 yıldız dikdortgenini applet olarak çizdiriniz

 

* * * * *
* * * * *
* * * * *
* * * * *

 

Problem 1.39 H2OD2.java : for döngüsü. Bu problem 5*4 yıldız dikdortgenini applet olarak çizdir

 

import java.awt.Graphics;

import java.applet.Applet;

public class H2OD2 extends Applet

 {

  public void paint(Graphics g)

   {

    int x,y;

    for(y=1;y<6;y++)

     {

      for(x=1;x<5;x++)

       {

                g.drawString ("*",20*x,20*y);}

 

     }

    }

   }

 

 

 

46.    H2OD3

do- while döngüsü kullanarak 1 den n e kadar olan sayıların küplerinin toplamını ve aritmetik ortalamasını applet programı olarak hesaplatınız. n sayısı applet kutu girdisinden girilecektir.

 

Problem 1.40 H2OD3.java : 1 den n e kadar sayıların küplerinin toplamını applet olarak çizdir

 

import java.applet.Applet;

import java.awt.*;

import java.awt.event.*;

 

public class H2OD3 extends Applet implements ActionListener

{

  int sayi1;

  int toplam;

  double ort;

  Label s1,s2;     //yazı alanlari sinifi

  TextField t1; //girdi alanlari (kutulari)

 

  //pencereyi baslatma metotu

  public void init()

  {

  s1=new Label("kup ortalamasi 1 den ");

  s2=new Label("e kadar ");

  t1=new TextField(5);

  //pencereye ekle

  add(s1);

  add(t1);

  add(s2);

  t1.addActionListener(this);

  }

 

  public void paint(Graphics g)

  {

    g.drawString(""+"1den "+sayi1+" e kadar kup ortalamasi :"+ort,15,100);

  }  //paint metotunun kapanisi

 

  //girdi alanindan sinyal bekle ve sinyal gelince su islemleri yap

  public void actionPerformed(ActionEvent e)

  {

  toplam=0;

  //sayi1 i kutulardan oku

  Integer Sayi1=new Integer(t1.getText());

  sayi1=Sayi1.intValue();

 

    int i=1;

    do

    {

    toplam+=i*i*i;

    }while(++i<=sayi1);

    ort=(double)toplam/(double)sayi1;

  repaint();

  }//ActionPerformed metotunun  kapanışı

} //H2OD3 sınıfının kapanışı


46.    H2OD3_2000

do- while döngüsü kullanarak 1 den n e kadar olan sayıların küplerinin toplamını ve aritmetik ortalamasını swing applet (JApplet) programı olarak hesaplatınız. n sayısı JApplet kutu girdisinden girilecektir.

 

Problem 1.40 H2OD3a_2000.java : 1 den n e kadar sayıların küplerinin toplamını swing applet olarak çizdir

 

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

 

public class H2OD3a_2000 extends Japplet implements ActionListener

{  int sayi1;

   int toplam;

   double ort;

   JLabel s1,s2;     //yazı alanlari sinifi

   JTextField t1;    //girdi alanlari (kutulari)

   JTextArea ciktiAlani;

   //pencereyi baslatma metotu

   public void init()

   {

      Container c=getContentPane();

      c.setLayout(new FlowLayout());

      Color renk=c.getBackground();

      s1=new JLabel("küp ortalaması 1 den ");

      s2=new JLabel("e kadar ");

      t1=new JtextField(5);  //pencereye ekle

      ciktiAlani=new JTextArea();

      ciktiAlani.setBackground(renk);

      c.add(s1);

      c.add(t1);

      c.add(s2);

      c.add(ciktiAlani);

      t1.addActionListener(this);

   }

   //girdi alanindan sinyal bekle ve sinyal gelince su islemleri yap

   public void actionPerformed(ActionEvent e)

   {

      toplam=0;  //sayi1 i kutulardan oku

      sayi1=Integer.parseInt(t1.getText());

      int i=1;

      do {

        toplam+=i*i*i;

         }

      while(++i<=sayi1);

      ort=(double)toplam/(double)sayi1;

      ciktiAlani.setText(""+"1den "+sayi1+" e kadar küp ortalaması :"+ort);

      repaint();

    }

      //ActionPerformed metotunun kapanisi

} //H2OD3_2000 sinifinin kapanisi


01034.JPG

Şekil 1.34 1 den n e kadar sayıların küplerinin ortalamasını hesaplayan H2OD3a_2000.java programının JApplet çıktısı

 

H2OD3_2000 Aynı problemin ikinci bir çözümü

do- while döngüsü kullanarak 1 den n e kadar olan sayıların küplerinin toplamını ve aritmetik ortalamasını swing applet (JApplet) programı olarak hesaplatınız. n sayısı JOptionPane.showInputDialog() girdisinden girilecektir.

 

import java.awt.*;

import javax.swing.*;

 

public class H2OD3_2000 extends JApplet

     int n, i = 1;

     int toplam = 0;

     long toplam3 = 0;

     double ortalama;

 

     public void init()

     {

     n=Integer.parseInt(JOptionPane.showInputDialog(" Bir tam sayi giriniz : "));

     while (i <= n){

        toplam3 += i*i*i;

        toplam += i;

        i++;

                            }

     ortalama = (double)toplam / n;

     }

 

     public void paint(Graphics g)

     {

      g.drawRect(15,10,370,20);

      g.drawRect(15,50,370,20);

      g.drawString(n + "'ye kadar olan sayilarin kuplerinin toplami : " + toplam3,25,25);

      g.drawString(n + "'ye kadar olan sayilarin aritmetik ortalamasi : " + ortalama,25,65);

     }

}

 

 

47.  H2OD4


herhangi bir döngü yapısı ve konsol programı kullanarak, n=200 değeri için

1-x/1!+x 2/2!-x3/3!+x4/4!-x5 /6!+..+x n-1 /(n-1)!-xn/n!
 formülünü hesaplayınız.

 

not: ! (faktoriyel) sayının birer eksilerek bire kadar çarpıldığı diziye denir. Örneğin 4!=4*3*2*1

 

Problem 1.41 H2OD4.java : 1-x/1!+x2/2!-x3/3!+x 4 /4!-x5/6!+..+xn-1/(n-1)!-x n /n! formülünün hesabı.

import java.io.*;

import Text;

class H2OD4

{

public static void main(String args[]) throws IOException

{

double faktoriyel=1;

double x;

double us=1;

double exponent=1;

Text cin=new Text();

System.out.println("Bir sayi giriniz:");

x=cin.readDouble();

for(double sayi=1;sayi<=200;sayi++)

{

faktoriyel*=sayi;

us*=(-1)*x;

exponent+=us/faktoriyel;

}

System.out.println("exp(-"+x+") = "+exponent);

}

}

 

 

c:\co\java\prog>Bir sayi giriniz: 1.0

c:\co\java\prog>exp(-1.0) = 0.36787944117144245

 

48. H2OD5

Bir bilgisayar konsol bilgisayar programı yazınız. bu program kullanıcının ismini ve boyunu sorsun. eğer boyu 1.50 cm nin altındaysa "o kullanıcıismi siz pek kısaymışsınız" yazsın,eğer kullanıcı boyu 1.90 cm nn üzerindeyse "o kullanıcıismi boyunuzda ne kadar uzunmuş" yazsın. kullanıcı boyu bu değerlerin arasındaysa "merhaba kullanıcıismi sistemimize hosgeldiniz" yazsın.

 

 Problem 1.42 H2OD5.java : if-elseif bloğu

 

import java.io.*;

import Text;

class H2OD5

{

public static void main(String args[]) throws IOException

{

int boy;

String isim;

Text cin=new Text();

System.out.println("isminiz nedir : ");

isim=cin.readString();

System.out.println(""+isim+" lutfen boyunuzu giriniz:");

boy=cin.readInt();

if(boy<=150)

{System.out.println(isim+" siz de pek kisaymisiniz.");}

else if(boy>=190)

{System.out.println(isim+" boyunuz da ne kadar uzunmus.");}

else 

{System.out.println("merhaba "+isim+" sistemimize hos geldiniz.");}

}

}

 

 

49. H2OD5_2000

 

Bir bilgisayar konsol bilgisayar programı yazınız. bu program kullanıcının ismini ve boyunu sorsun. eğer boyu 1.50 cm nin altındaysa "o kullanıcıismi siz pek kısaymışsınız" yazsın,eğer kullanıcı boyu 1.90 cm nn üzerindeyse "o kullanıcıismi boyunuzda ne kadar uzunmuş" yazsın. kullanıcı boyu bu değerlerin arasındaysa "merhaba kullanıcıismi sistemimize hosgeldiniz" yazsın. Çıktı için java swing JOPtionPane kullanınız.

 

 Problem 1.42 H2OD5_2000.java : if-elseif bloğu

 

import javax.swing.JOptionPane;

 

class H2OD5_2000

{

public static void main(String args[])

{

int boy;

String isim;

isim=JoptionPane.showInputDialog("isminiz nedir : ");

System.out.println(""+isim+" lutfen boyunuzu giriniz:");

boy=Integer.parseInt(

JoptionPane.showInputDialog(" lutfen boyunuzu giriniz:"));

if(boy<=150)

{

     JoptionPane.showMessageDialog(null,"sizde pek kısaymışsınız",

     "boy : "+boy,JOptionPane.PLAIN_MESSAGE);   

}

else if(boy>=190)

{

     JoptionPane.showMessageDialog(null," boyunuz da ne kadar uzunmus",

     "boy : "+boy,JOptionPane.PLAIN_MESSAGE);   

}

else 

{

     JoptionPane.showMessageDialog(null,

     "merhaba "+isim+" sistemimize hos geldiniz.",

     "boy : "+boy,JOptionPane.PLAIN_MESSAGE);   

}

System.exit(0);

}

}

 

01035.JPG

01036.JPG

01037.JPG

 

Şekil 1.35,1.36,1.37 if yapısını test eden H2OD5_2000.java programının swing JoptionPane  çıktısı

 

50 H2AL1_2000 : if  -elseif -else yapisi ve boolean değişken örneği, JoptionPane konsol programı

 

İmport javax.swing.JOptionPane;

 

class H2AL1_2000

{

  public static void main(String args[])

  {

     //  Bu program konsolda(MS DOS)

     //  if metodu ve boolean kullanarak

     //  karşılaştırmalar yapar

     //  ve sonucu yazdirir

     boolean b1;

     boolean b2;

     boolean b3;

     double sayi1;

     double sayi2;

     String s1,s2; 

     b1=true;

     b2=false;

     b3=b1&&b2;

     JoptionPane.showMessageDialog(null,""+b1+"&&"+b2+" = "+b3,

     "if yapisinin disi",JOptionPane.PLAIN_MESSAGE);   

     if(b3)

     {

     JoptionPane.showMessageDialog(null,"if yapisinin ici b3 = "+b3,

     "if yapisinin ici",JOptionPane.PLAIN_MESSAGE);   

     }

     else if(!b3)

     {

     JoptionPane.showMessageDialog(null,"else if yapisinin ici b3 = "+b3,

     "if yapisinin ici",JOptionPane.PLAIN_MESSAGE);   

     }

 

     // iki gercek sayiyi karsilastir

     sayi1=Double.parseDouble(JOptionPane.showInputDialog("birinci gercek sayiyi oku : "));

     sayi2=Double.parseDouble(JOptionPane.showInputDialog("ikinci gercek sayiyi oku : "));

     b3=(sayi1>sayi2);

     if(sayi1>sayi2)

     {

     JoptionPane.showMessageDialog(null,""+sayi1+">"+sayi2+" = "+b3,

     "iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);   

     }

     else if(sayi1<sayi2)

     {

     JoptionPane.showMessageDialog(null,

     ""+sayi1+"<"+sayi2+" = "+(sayi1<sayi2),

     "iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);   

     }

     else

     {

     JoptionPane.showMessageDialog(null,""+sayi1+"=="+sayi2+" = "+(sayi1==sayi2),

     "iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);   

     System.out.println();

     }

 

     // iki String karsilastir

 

     s1=JoptionPane.showInputDialog("birinci String'i oku : ");

     s2=JoptionPane.showInputDialog("ikinci  String'i oku : ");

     b3=s1.equals(s2);

     if(s1.equals(s2))

     {

     JoptionPane.showMessageDialog(null,s1+" esittir "+s2+" b3 = "+b3,

     "iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);   

     }

     else

     {

     JoptionPane.showMessageDialog(null,s1+" esit degildir "+s2+" b3= "+b3,

     "iki gercek sayi karsilastir",JOptionPane.PLAIN_MESSAGE);   

     }

  System.exit(0);

  }//main metodunun sonu

}  //H2AL1_2000 sınıfının sonu

 

51 H2AL2_2000 : while döngüsü örneği JoptionPane konsol programı

 

import javax.swing.JOptionPane;

 

public class H2AL2_2000

{

  public static void main(String args[])

  {

     // Bu program

     // 10 dan 20'ye kadar sayıları yazdırır

     double x=10.0;

     String s="";

     do

     {

     s=s+" "+(x+=1.0);

     }

     while(x<=20.0);

     JoptionPane.showMessageDialog(null,s,

     "10 dan 30 a sayılar",JOptionPane.PLAIN_MESSAGE);

    System.exit(0);

  }

}

01038.JPG

 

52 H2AL4_2000 : for döngüsü örneği, JoptionPane konsol programı

 

import javax.swing.JOptionPane;

 

public class H2AL4_2000

{

  public static void main(String args[])

  {

     // Bu program

     // 10 dan 20 ye kadar sayıları yazdırır

     String s="";

     for(double x=10.0;x<=30.0;x+=1.0)

     {

     s=s+" "+x;

     }

     JoptionPane.showMessageDialog(null,s,

     "10 dan 30 a sayılar",JOptionPane.PLAIN_MESSAGE);

    System.exit(0);

  }

}

 

53 H2AL5_2000 : switch- case yapısı, JoptionPane konsol programı

 

import javax.swing.JOptionPane;

 

class H2AL5_2000

{

  public static void main(String args[])

  {

     // Bu program konsolda(MS DOS)

     // switch case metodunu kullan�r

     char not;

     Text cin=new Text();

     int A=0;

     int B=0;

     int C=0;

     int D=0;

     int E=0;

     int F=0;

     while(true)

     {

       String s="";

       not=JOptionPane.showInputDialog("notu oku : (z cikis) ").toCharArray()[0];

       if(not=='z') {System.exit(0);}

       switch(not)

       {

       case 'A':case 'a':

         {

         ++A;

         break;

         }

       case 'B':case 'b':

         {

         ++B;

         break;

         }

       case 'C':case 'c':

         {

         ++C;

         break;

         }

       case 'D':case 'd':

         {

         ++D;

         break;

         }

       case 'E':case 'e':

         {

         ++E;

         break;

         }

       case 'F':case 'f':

         {

         ++A;

         break;

         }

       default:

         {

         JoptionPane.showMessageDialog(null,"yanlis not tanimlandi yeni bir not giriniz",

         "switch - case örneği",JOptionPane.ERROR_MESSAGE);

         break;

         }

       } // switch deyiminin sonu

       s=s+"A larin sayısı :"+A+"\n";

       s=s+"B lerin sayısı :"+B+"\n";

       s=s+"C lerin sayısı :"+C+"\n";

       s=s+"D lerin sayisi :"+D+"\n";

       s=s+"E lerin sayisi :"+E+"\n";

       s=s+"F lerin sayisi :"+F+"\n";

       JoptionPane.showMessageDialog(null,s,

         "switch - case örneği",JOptionPane.PLAIN_MESSAGE);

       }

  }//main metodunun sonu

}  //H2AL5_2000 sınıfının sonu

01039.JPG

01040.JPG

 

54 H2AL6_2000:  iç içe iki döngü, JoptionPane konsol programı

 

import javax.swing.JOptionPane;

 

public class H2AL6_2000

{

  public static void main(String args[])

  {

     // Bu program

     // 11 12 13 14

     // 21 22 23 24

     // 31 32 33 34

     // 41 42 43 44 yazdirir

     String s="";

     for(int i=1;i<5;i++)

     {

       for(int j=1;j<5;j++)

       {

       s=s+" "+i+j;

       }  // for(int j ...dongusunun kapanisi

       s=s+"\n";

     }  //for(int i ..dongusunun kapanisi

         JOptionPane.showMessageDialog(null,s,

         "switch - case örneği",JOptionPane.PLAIN_MESSAGE);

         System.exit(0);

  }  //main metodunun kapanisi

} //H2AL6_2000 sinifinin kapanisi

 

01041.JPG

 

55 H2AL7_2000: sayi1 den sayi2 e n er ner sayilarin toplami, swing Japplet programi, JTextArea çıktısı ile

 

İmport javax.swing.*;

import java.awt.*;

import java.awt.event.*;

 

public class H2AL7_2000 extends JApplet implements ActionListener

{  int sayi1,sayi2,sayi3;

   int toplam;

   double ort;

   JLabel s1,s2,s3;     //yazı alanlari sinifi

   JTextField t1,t2,t3;    //girdi alanlari (kutulari)

   JTextArea ciktiAlani;

   //pencereyi baslatma metotu

   public void init()

   {

      Container c=getContentPane();

      c.setLayout(new FlowLayout());

      Color renk=c.getBackground();

      s1=new JLabel("den");

      s2=new JLabel("e kadar ");

      s3=new JLabel("er sayilarin toplami : ");

      Font f=s1.getFont();

      Color r1=s1.getForeground();

      t1=new JTextField(5);  //pencereye ekle

      t2=new JTextField(5);  //pencereye ekle

      t3=new JTextField(5);  //pencereye ekle

 

      ciktiAlani=new JTextArea();

      t1.setBackground(renk);

      t1.setForeground(r1);

      t2.setBackground(renk);

      t2.setForeground(r1);

      t3.setBackground(renk);

      t3.setForeground(r1);

      t1.setFont(f);

      t2.setFont(f);

      t3.setFont(f);

      ciktiAlani.setForeground(r1);

      ciktiAlani.setBackground(renk);

      ciktiAlani.setFont(f);

      c.add(t1);

      c.add(s1);

      c.add(t2);

      c.add(s2);

      c.add(t3);

      c.add(s3);

      c.add(ciktiAlani);

      t3.addActionListener(this);

 

   }

   //girdi alanindan sinyal bekle ve sinyal gelince su islemleri yap

   public void actionPerformed(ActionEvent e)

   {

      toplam=0;  //sayi1 i kutulardan oku

      sayi1=Integer.parseInt(t1.getText());

      sayi2=Integer.parseInt(t2.getText());

      sayi3=Integer.parseInt(t3.getText());

      int i;

      for(i=sayi1;i<=sayi2;i+=sayi3)

      {

      toplam+=i;

      }

      ciktiAlani.setText(""+sayi1+"den "+sayi2+"e kadar sayilarin "+

      sayi3+"er "+sayi3+"er toplami :"+toplam);

      repaint();

    }

      //ActionPerformed metotunun kapanisi

} //H2OD3 sinifinin kapanisi

 

01042.JPG

 

56 H2AL8_2000: sayının e inci kuvvetinin hesaplanması (for döngüsü örneği) JoptionPane konsol programı

 

import javax.swing.JOptionPane;

 

class H2AL8_2000

{

public static void main(String args[]) throws IOException

{

double faktoriyel=1;

double x;

double us=1;

double exponent=1;

x=Double.parseDouble(JOptionPane.showInputDialog("Bir sayi giriniz : "));

for(double sayi=1;sayi<=200;sayi++)

{

faktoriyel*=sayi;

us*=x;

exponent+=us/faktoriyel;

}

 

JOptionPane.showMessageDialog(null,"exp("+x+") = "+exponent,

         "exp(x) hesap örneği",JOptionPane.PLAIN_MESSAGE);

System.exit(0);

}

}

 

01043.JPG

 

57 H2AL9_2000: pi sayısını hesaplayan bir seri formülü. JoptionPane konsol programı

 

import javax.swing.JOptionPane;

 

class H2AL9_2000

{

public static void main(String args[])

{

int i;

       double pi=0;

       int artieksi=-1;

       for(i=1;i < 100000;i++)

       {

          artieksi*=-1;

          pi+=4/(2.0*i-1.0)*artieksi;

       }

       String s="pi : "+pi+"\n";

       s=s+"pi nin gercek degeri: "+Math.PI;

 JOptionPane.showMessageDialog(null,s,"pi sayısı hesabı",

JOptionPane.PLAIN_MESSAGE);

System.exit(0);

}

}

 

01044.JPG

 

58 H2OD1_2000

for döngüsü ve konsol programı kullanarak 1 den n e kadar olan sayıların aritmetik ortalamasını hesaplayiniz. n sayisi swing JOptionPane olarak girilecektir.

Aritmetik ortalama (1+2+3+..+n)/n formülüyle hesaplanır.

 

import java.io.*;

import javax.swing.JOptionPane;

 

class H2OD1_2000

{

     public static void main (String args[]) throws IOException

     {

     int n;

     int toplam=0;

     double ortalama;

     n=Integer.parseInt(JOptionPane.showInputDialog("Aritmetik ortalama kaca kadar yapilacak?

     \nLutfen n sayisini giriniz :"));

     for (int i = 1; i <= n; i++){

       toplam += i;

     }

     ortalama = (double)toplam / n;

     JOptionPane.showMessageDialog(null,n + "'ye kadar olan sayilarin    aritmetik ortalamasi :

     " + ortalama + " dir", "Aritmetik Ortalama",JOptionPane.PLAIN_MESSAGE);

     System.exit(0);

     }

}

 

59 H2OD2_2000

while döngüsü ve "*" karekterini kullanarak 7*4 yıldız dikdortgenini swing JOptionPane veya swing JApplet kullanarak çizdiriniz

 

* * * * * * *

* * * * * * *

* * * * * * *

* * * * * * *

 

import java.io.*;

import javax.swing.JOptionPane;

 

class H2OD2T_2000

{

     public static void main (String args[]) throws IOException

     {

     int i = 0,j;

     String s = "";

 

     while (i++ < 4)

     {

        j=0;

        while(j++ < 7)

        {

        s += "*  ";

        }

        s += "\n";

     }

     JOptionPane.showMessageDialog(null,s, "Yıldız Dikdortgen"

     ,JOptionPane.PLAIN_MESSAGE);

     System.exit(0);

     }

}

01045.JPG

 

for döngüsü ve "*" karekterini kullanarak  grafik ortamında swing JApplet ve paint  metodunu kullanarak aşağıdaki şekli çizdiriniz

          *

          *

* * * * * * *

          *

         *

 

import javax.swing.*;

import java.awt.*;

 

public class H2OD6_2000 extends JApplet

{

  public void paint(Graphics g)

  {

                int yer = 0;

                for(int i=0; i < 7; i++)

            {

            g.drawString("*",80,i*20+20);

            }

        for(int j=0; j < 7; j++)

            {                

            g.drawString("*",j*20+20,80);

            }

 

  }

}

 

01046.JPG

 

 

 


     << index         > bölüm 2                   > bolüm başı