BÖLÜM 1: JAVAYA GİRİŞ
1.1 NİÇİN JAVA PROGRAMLAMA DİLİ
1.2 JAVA PROGRAMINI YAZMA VE ÇALIŞTIRMA
1.3 JAVA PROGRAMLAMA DİLİ TEMEL DEĞİŞKEN TÜRLERİ
1.3.2 char (harf) değişken türü
1.3.3 Tam sayı değişken türleri (byte, short,int,long)
1.3.4 Gerçek sayı değişken türleri (float, double,long double)
1.4 JAVA NESNESİ OLARAK TANIMLANMIŞ TEMEL DEĞİŞKENLER
1.4.1 String nesne tipi değişkeni
1.4.2 Integer nesne tipi değişkeni
1.4.3 Double nesne tipi değişkeni
1.4.4 diğer nesne temelli değişken türleri
1.8 JAVA DİLİNDEKİ BİT KOMUTLARI VE İŞLEMLERİ
1.9 JAVA DİLİNİN TEMEL KOMUTLARI
1.9.1 if - elseif - else mantıksal karşılaştırma yapısı
1.10 ARİTMETİK İŞLEMLERDE DEĞİŞKEN TÜRÜ DEĞİŞTİRME (CASTİNG) OPERASYONU
1.11 SAYI DEĞİL VE SONSUZ SONUÇLARI
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.
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
veya
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
Ş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
Ş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.
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 |
float |
Gerçek sayı değişkeni |
32 |
-3.40292347e+38
den |
double |
Gerçek sayı değişkeni |
64 |
-1.7976931348623157e+308
den |
Şimdi bu temel değişken türlerinin bazılarını daha detaylı inceleyelim:
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;
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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
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.
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.
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.
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
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
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
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.
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. 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+1x * 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
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);
}
}
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şı