You are on page 1of 66

"UKSHIN HOTI"

PRİZREN ÜNİVERSİTESİ
BİLGİ TEKNOLOJİLERİ VE İLETİŞİM FAKÜLTESİ
PROGRAMLAMA JAVA
-2-
Temel kavramlar, Problem çözüm evreleri, Akış
diyagramları, Operatörler, Değişken Atama,
Döngü Kavramları.
TEMEL KAVRAMLAR
Bilgisayar çok karmaşık bir elektronik cihazdır,
şimdilik bizi ilgilendiren kısım onun çalışma
prensibi değil, programlama kısmıdır. Bilgisayar
öğrendiğini unutmaz, eğer iyi programlarsanız
kusursuz olarak işlemleri yapar, yorulmadan hep
aynı işlemi tekrar yapabilir. Programcı izin vermiş
ise, programlar bilgisayarın tüm kaynaklarına
erişebilir.
Bilgisayar, bir konuda yorum yapamaz, yeni
durumlara uyum sağlamak için çaba sarf etmez.
İnsan unutkandır, hata yapabilir, yorulur ve
beyninin tamamını kullanamaz, moral durumu
değişebilir ve duygusal olarak etkilenir.
İnsanların en büyük avantajı, yeni durumlar
karşısında bocalasa bile zamanla uyum
sağlayabilmesidir. Başına gelen olaylardan ders
çıkartabilir. Tek başına birçok sorunu çözebilirler.
Bilgisayar ise her zaman aynı tepkiyi verir, kendini
geliştiremez. İnsan tarafından kontrol edilmedikçe
etkinliklerini değiştirmezler.Bu noktada program
kavramını aşağıdaki gibi tanımlayabiliriz.
Program
• Belirli bir problemi, nasıl çözeceğini anlatmak
üzere bilgisayara verilen komutlar dizisidir. Bu
tanımdan bilgisayarın kendi planını kendisinin
yapamayacağı ortaya çıkmaktadır. Bu planlar o
programı yapan kişi tarafından ona verilir.
Günümüzde bilgisayarların insan beyni yanında
çok az yetenekli olduğu söylenebilir. Fakat rutin
(sıradan) işlemleri, insanlara oranla daha hızlı
yapabilirler.
İyi bir programın temel özellikleri şunlardır:
• Doğruluk: Verilen görevlerin tam olarak yerine
getirilmesidir.
• Dayanıklılık: Beklenmedik hatalardan dolayı
programın çalışması kesilmemelidir.
• Genişletilebilme: İleri aşamalarda görevlerin
değişikliği veya yenilerinin eklenmesi kolay olmalıdır.
• Basitlik: Karmaşık tasarımlardan kaçınmak gerekir.
• Modülerlik: Program kodları başka programlar içinde
de kullanılabilmelidir.
• Uyumluluk: Başka bilgisayar ve sistemlerde
çalışabilmelidir.
• Kontrol edilebilirlik: Hata olabilecek yerlere
açıklayıcı hata mesajları konulmalıdır.
• Kolay kullanım: Kullanıcı arayüzü kolay olmalı
ve rahat öğrenilebilmelidir.
• Parçalanabilirlik: Problemin küçük parçalara
ayrılarak yazılmasıdır.
• Anlaşılırlık: Başkasının yazdığı program elden
geçirilirken rahatça okunabilmelidir.
• Koruma: Modüller birbirlerine müdahale
etmemelidirler.
Programlama ve Programcı
• Program kavramına bağlı olarak, bilgisayara
verilecek olan komutlar listesinin hazırlanması
işlemine programlama, bu işi gerçekleştiren
kimselere de programcı denir.
• Bilgisayar Türkçe, İngilizce veya başka bir dilden
anlamaz. Bilgisayarın fonksiyonel bir beyni
olmadığı için programcının komutlar listesini
yazabilmesine imkan sağlayan bu özel dile
“programlama dili” denir.
• Komutlar bir araya gelerek “program”ı meydana
getirir. Belli bir programlama dili ile yazılmış
komutlara “kaynak kod” da diyebiliriz.
Programlama dilleri seviyelerine göre iki gruba
ayrılabilir
• 1. Düşük seviyeli diller
• Makine Dili: Bilgisayarın anlayabileceği tek dildir.
Bu sistemde sayılar ondalıklı sistem yerine 2'li
sayı sisteminde ifade edilmektedirler. Bu da
demektir ki herhangi bir program parçası yan
yana gelmiş 0 ve 1'lerden ibarettir. Bu dilde
program yazabilmek için makinenin iç yapısının
bilinmesi gerekir.
• Assembler Dili: Bu dilde 0 ve 1’lerin yerine
kelimeler ve semboller kullanılır.
• 2. Yüksek seviyeli diller
• İlk bilgisayarlarda genel bilgilere göre hazırlanmış
program 2’lik sayı sistemine uygun olarak
yeniden ifadelendirilirdi. Bu işleme makine diline
çevirme denir. Her geçen gün bilgisayarların özel
matematiği kullanabilecek kişilerin haricinde;
matematikten hiç anlamayan meslek gruplarında
da kullanılma ihtiyacı doğduktan sonra, makine
dili yerine herkes tarafından kullanılabilen diller
geliştirilmiştir.
• Yüksek seviyeli diller olarak nitelendirilen bu
diller, bilgisayardaki derleyici program vasıtasıyla
otomatik olarak makine diline çevrilir. Böylece
makine dili veya Assembler dili öğrenme
zorunluluğu ortadan kalkmıştır.
• Yüksek seviyeli dillere örnek olarak, Fortran,
Cobol, Basic ve Pascal gösterilebilir. Yüksek
seviyeli bir dilde yazılan program öncelikle
derleyici (compiler) denen bir program ile makine
diline dönüştürülür.
PROBLEM ÇÖZÜM EVRELERİ
• Karmaşık, zaman alıcı bir problemin insan beyni
ile çözülmesi imkansız hale gelebilmektedir veya
problem çözülebilse bile çok zaman alıcı
olabilmektedir. Dolayısıyla bu problemlerin
bilgisayar yardımı ile çözülebilmesi fikri, bilgisayar
problemlerinin ortaya çıkmasına neden olmuştur.
• Problemler çözülürken aşağıdaki evrelere dikkat
edilmesinde fayda vardır:

• 1. Problemin tanımlanması
• 2. Problemin çözümü için bir algoritma belirlenmesi
• 3. Kaynak dosyaların oluşturulması
• 4. Kaynak dosyaların derlenmesi
Problemin Tanımlanması
• Bilgisayarda her tür problemin çözümü şu
düşünceler ve işlemler ile gerçekleştirilir:
• Problemle ilişkili veriler nelerdir?
• Çözüm yöntemi nasıl olacaktır? Hangi
hesaplamalar nasıl gerçekleştirilecektir?
• Problemin sonucunda hangi bilgiler elde edilecektir?
Bilgisayar bize hangi bilgileri, hangi düzende
vermelidir?
• Öncelikle problemin tanımlanabilmesi için
yukarıdaki soruların açıklığa kavuşturulması
gereklidir.
Problemin Çözümü İçin Bir Algoritma
Belirlenmesi
• Algoritma tanımı aşağıdaki gibi yapılabilir:
• Algoritma, belirli bir problemi çözmek için gerekli
adımlar kümesidir veya problemi çözmek için
gerekli özgün adımlar serisidir.
• Çözmek, özgün ve seri kelimeleri tanıma
aşağıdaki anlamları katmaktadır.
• Seri: Adımlar belirli bir sırada gerçekleştirilmeli ve
adımların her biri kullanılmalıdır.
• Özgün: Bir adım, benzer başka bir adımla yer
değiştirmemelidir.
• Çözmek: Algoritma bir problemin çözümünü
teşkil eden bir sonuç üretir.
• Bir algoritmada bulunması gereken önemli
özellikler şunlardır:
• Basit ve anlaşılır olmalı
• Problemin çözümünü mümkün olan en az
adım ile (en kısa sürede) gerçekleştirmeli
• Bu özelliklere sahip algoritmalara etkin algoritma
(efficient algorithm) denir.
• Algoritmalar aşağıdaki seçeneklerden birisi ile
ifade edilebilir:
• Algoritmanın doğal dil ile ifade edilmesi
• Algoritmanın akış diyagramı ile ifade edilmesi
• Algoritmanın bir programlama dili kullanılarak
ifade edilmesi
AKIŞ DİYAGRAMLARI
• Önceki konuda algoritmaların geometrik şekillerle ifade
edilmesi akış diyagramı olarak tanımlanmıştı. Akış
diyagramı ile ifade edilen algoritma istenilen bir
programlama dilinin komutları ile kodlanır. Aynı problem
farklı programlama dilleri ile çözülebilir.
Algoritmanın Doğal Dil Kullanılarak
İfade Edilmesi
• Bir algoritmanın, doğal dil kullanılarak ifade
edilmesi, akla gelen en kolay yoldur. Fakat biraz
daha detaylı düşününce bazı sakıncalarla
karşılaşılabilir. Bu sakıncalar şunlardır:
• Bu yöntemde belirsizlik veya çok anlamlılık
olabilir. Yani bazı ifadeler yanlış anlaşılabilir.
• Doğal dil ile ifade edilmiş bir algoritmanın
bilgisayar kodu haline dönüştürülmesinde
güçlükler ve belirsizlikler olabilir.
• Örnek: Doğal dil kullanılarak ifade edilmiş bir
algoritma
• 30 adet öğrencinin sınav notlarını giriş bilgisi
olarak alınız. Notların toplamını hesapladıktan
sonra toplam değeri 30’a bölerek ortalama notu
bulunuz. Ortalama not 60’ın üzerinde ise ekranda
“Sınıf ortalaması iyi”; 60’ın altında ise ekranda
“Sınıf ortalaması kötü” mesajı yazdırılsın.
Algoritmanın Akış Diyagramı İle İfade Edilmesi

• Şekil ve resimlerin pek çok durumda çok sayıda


sözcükten daha fazlasını anlattığını hepimiz
biliriz. Akış Diyagramı (Flow Chart), bir
algoritmanın adımlarının mantıksal sırasını,
adımların birbiri ile bağlantısını, bir işlemden
diğerine nasıl gidileceğini belirten kontrol
mekanizmalarını, özel bazı şekil ve sembollerle
anlatan bir ifade biçimidir. Akış diyagramlarında
kullanılan bazı şekil ve semboller şunlardır:
Örnek:1
• Örnek: Önceki örnekte doğal dil kullanılarak ifade
edilmiş olan algoritma, aşağıda akış diyagramı ile
gösterilmiştir.
Örnek:2 Akış diyagramı örneği
Algoritmaların Programlama Dilleri İle
İfade Edilmesi
• Bilgisayar programlama dilleri bir algoritmayı
derleyicide işlenebilecek biçimde tasvir edebilmek
için hassas ve kesin olarak tanımlanmış yapılara
sahip olan dillerdir. Bir algoritma, bir programlama
dilinde ifade edilebilmişse, bilgisayarda kesin
olarak icra edilebilecektir.
Kaynak Dosyaların (Source File) Oluşturulması

• Program geliştirmede bir sonraki adım, herhangi


bir biçimde ifade edilmiş olan problemin
çözümünü gerçekleştirecek algoritmanın, bir
programlama dilinin kurallarına uygun olarak
ifade edilmesidir.
Kaynak Dosyaların Derlemesi (Compile)
• Bir programlama dili ile yazılmış olan kodlar
derlenmediği takdirde bilgisayar açısından bir
anlam ifade etmeyecektir. Bu nedenle kaynak
dosyalar derlenerek makine diline çevrilir ve EXE
uzantılı amaç (object) program elde edilir. Daha
sonra bu EXE uzantılı dosya çalıştırılarak
program için gerekli veriler girilebilir ve problemin
çözümüne ulaşılabilir.
Örnek:3
• Aşağıdaki şekilde kaynak dosyaların derlenmesi
ile ilgili akış diyagramı gösterilmiştir.
Örnek:3
Operatörler
• Algoritmalar ifade edilirken matematiksel operatörlerin,
karşılaştırma operatörlerinin ve mantıksal operatörlerin
kullanılmasına ihtiyaç duyulmaktadır.
Matematiksel Operatörler

• Algoritmalarda kullanılan matematiksel operatörler


aşağıda listelenmiştir.
Karşılaştırma Operatörleri
• Bilgisayar temel matematik işlemlerin yanında farklı
durumlar için karar verebilmek için karşılaştırma işlemleri
de yapabilmektedir. Yani iki farklı değerin birbirine göre
küçük, büyük veya eşit olması gibi durumlar için karar
verebilmektedir. Örneğin bir değer başka bir değerden
küçük olduğunda yapılacak işlem ile küçük olmadığında
yapılacak işlem birbirinden farklı olabilmektedir.
• Algoritmalarda kullanılan karşılaştırma operatörleri
aşağıda listelenmiştir
Mantıksal Operatörler

• Algoritmalarda kullanılan mantıksal operatörler aşağıda


listelenmiştir.
Genel İşlem Operatörleri
• Algoritmalarda kullanılan genel işlem operatörleri aşağıda
listelenmiştir.
İşlem Öncelik Sıraları
• İşlem öncelik sırası matematiksel işlemlerin doğru olarak
yapılabilmesi için çok önemlidir. Bu sıralamaya dikkat
edilmemesi durumunda program yazımında hata
olmamasına rağmen, elde edilen sonuç yanlış olacaktır.
İşlem öncelik sıraları aşağıda listelenmiştir.
• Örneğin a+b/c işlemi ile (a+b)/c işlemi birbirinden farklıdır.
a+b/c işleminde önce b sayısı c sayısına bölünür ve
sonuç a sayısı ile toplanır. (a+b)/c işleminde ise öncelikle
a sayısı ile b sayısı toplanır ve sonuç c sayısına bölünür.
Yapılması gereken işlem hangisi ise algoritma veya
programlama dillerinde ifade edilirken işlem öncelik
sıralarına dikkat edilmelidir.

• Örnek: a=4, b=6, C=2


• 1.örnek 6/2=3 ise 3+4=7
• 2.örnek 4+6=10 ise 10/2=5
• Aşağıda örnek olarak bazı matematiksel ifadelerin
algoritmalarda nasıl yazılması gerektiği gösterilmiştir.
•  Örneğin a=20, b=8 ve c=2 değerleri için
• a+b/c = a+ =20+ = 20+4=24 sonucunu verirken
• (a+b)/c = = = = = = 14 sonucunu verecektir.
Değişken, Atama, Döngü Kavramları
• Algoritmalarda veya programlarda değişken, atama ve
döngü terimleri sıklıkla kullanılmaktadır. Bunların ne
anlama geldiğini açıklayalım.
Değişken
• Değişkenler, girilen değerleri alabilen veya program
çalıştırıldığında yapılan işlemlere göre farklı değerlerin
atanabildiği bilgi alanlarıdır.
• Algoritmada, dolayısı ile programda hangi değişkenlerin
kullanılacağının belirlenmesi önemli bir adımdır. Problem
çözüm evrelerinin ilk adımı olan problemin tanımlanması
aşamasına da dikkat edilerek problemin yapısına göre
hangi değişkenlerin kullanılması gerektiği belirlenmelidir.
Problemi çözmek için hangi verilerin gerektiği, sonuç
olarak neler istendiği soruları açıklığa kavuşturularak
değişken tanımlamaları yapılmalıdır.
Değişken isimleri verilirken aşağıdaki hususlara
dikkat edilmelidir:
• İngiliz alfabesindeki büyük ve küçük harfler ve
rakamlar kullanılabilir.
• Alt çizgi ( _ ) dışında özel karakterler kullanılmamalıdır.
• Değişken isimleri mutlaka bir harf ile başlamalıdır.
• İçerisine atanacak değeri anımsatacak kısaltmalar
verilebilir.
Atama
• Herhangi bir değişkene doğrudan değer verme, herhangi
bir ifadenin sonucunu bir değişkende gösterme gibi
işlemler için atama terimi kullanılmaktadır.
• “Değişken_ismi = ifade” şeklinde atama yapılır. Burada
ifade kısmında sayısal, mantıksal veya metin şeklinde
değerler olabilir. Arada kullanılan “=” karakteri atama
operatörüdür ve sağdaki if adenin sonucu soldaki
değişkene atanır. Atama işlemi sonrasında değişkenin
daha önceden bir değeri varsa silinir.
• Örnek: a,b,c değişkenleri olduğunu düşünelim
• 1. a=5
• 2. b=8
• 3. c=a+b
• Yukarıdaki 3 satırda da atama işlemi yapılmıştır. Sırası ile
a ve b değişkenlerine 5 ve 8 değerleri atanmıştır. 3.
satırda ise önce sağ tarafta a ve b değişkenleri toplanır
(a+b=13) ve elde edilen sonuç c değişkenine atanır.
• Yukarıda 3 satıra aşağıdaki gibi 4. bir satır eklendiğinde
• 1. a=5
• 2. b=8
• 3. c=a+b
• 4. c=c+a
• ilk 3 işlemde matematiksel mantığa ters düşen bir durum
bulunmamaktadır. Fakat 4. işlemi (c=c+a) incelediğimizde
matematiksel olarak
• c=c+5
• c-c=5
• 0=5
• yanlış bir sonuç çıkacaktır. Fakat programlama sürecince
durum farklıdır. Şöyle ki 3. satır işlem gördüğünde c
değişkeninin değeri 13 olacaktır. 4. satıra gelindiğinde ise
öncelikle sağ taraftaki işlem gerçekleştirilecek
(c+a=13+5=18) ve elde edilen sonuç sol taraftaki c
değişkenine atanacaktır. Dolayısı ile c değişkeninin daha
önceki değeri (13) silinmiş ve 18 değeri atanmıştır.
Örnek atamalar
• FLOAT: float veri tipi 32 bitlik büyüklüğe sahiptir ve 1.4×10^-45 ile
3.4×10^38 aralığında bir değer tanımlanabilir. float olarak
belirlenmiş olan veri tipine integer bir değer atandığı takdirde java
tarafından direk olarak 1.0 şeklinde algılanır. Geliştirme
aşamasında hata oluşmaz. Fakat float veri tanımlarken (.)
noktadan sonra değişken değerinin sonuna “f” veya “F”
koyulmadığı takdirde geliştirme esnasında hata alınacaktır.
Sebebi ise javanın bu değişkeni double olarak algılayacak
olmasıdır. Aşağıdaki örneklerle konuya biraz daha açıklık
getirmeye çalışalım.
• float floatDeger1 = 35.4f; //dogru tanim
• float floatDeger2 = 4.5F; //dogru tanim
• float floatDeger3 = 67; //dogru tanim
• float floatDeger4 = 45.0; //hatali tanim
• float floatDeger5 = 34.65; //hatali tanim
• DOUBLE: double veri tipi 64 bitlik büyüklüğe sahiptir ve
4.9×10^-324 ile 1.8×10^308 arasında bir değer
tanımlanabilir. Kod geliştirirken double anahtar kelimesi ile
tanımlama yapılır.
• double doubleDeger = 34.5;
• Karakterler:CHAR: Java da karakterler char veri tipi
içinde saklanır. C/C++ gibi yazılım dillerinde char veri tipi
8 bitlik büyüklüğe sahipken, Java’da 16 bitlik büyüklüğe
sahiptir. Bunun sebebi Java’nın Unicode karakter setini
kullanıyor olmasıdır. Ayrıca Java ASCII kod yapısını da
desteklemektedir. Kod geliştirirken char anahtar kelimesi
ile tanımlama yapılır.
• char charDeger1 = 65;
• char charDeger2 = 'A';
Döngü
• Döngü programlarda bir veya birden fazla işlemin istenilen
sayıda tekrar ettirilmesidir. Tekrarlama işlemi karar
yapılarına bağlı olarak da yapılabilir, yani bir döngü bir
şart sağlandığı sürece veya bir şart sağlanana kadar
tekrar ettirilebilir. Örneğin 1’den 5000’e kadar olan
sayıların toplamı için “toplam=1+2+3+… +5000” ifadesinin
yazılması yerine bir döngü kullanılarak hesaplamanın
yapılması daha uygun olacaktır.
• Akış diyagramlarında döngü oluşturmak için aşağıdaki
sembol kullanılır.
• Artan döngü: Başlangıç değeri, bitiş değerinden daha
küçüktür dolayısı ile artış miktarı pozitif olmalıdır.
(K=2,50,2 gibi)
• Azalan döngü: Başlangıç değeri, bitiş değerinden daha
büyüktür dolayısı ile artış miktarı negatif olmalıdır.
(K=50,2,-2 gibi)
• Programlamada yerine göre tek döngü kullanılabilirken,
gerektiğinde iç içe döngüler de oluşturulabilmektedir.
Aşağıdaki şekilde tek döngü ve iç içe döngü örneği
gösterilmektedir.
• Örnek:
• Her iki döngüde de “A işlemi” 10 defa tekrarlanacaktır.
Fakat iç içe döngüde “B işlemi” 10x10=100 defa tekrar
edecektir. Çünkü K döngüsünün bir adımı için “B işlemi” L
döngüsünden dolayı 10 defa tekrar edecektir. İç içe
döngülerde, öncelikle içteki döngü tamamlandıktan sonra
dıştaki döngünün bir sonraki adımına geçilir.
• Örnek: Aşağıda 1’den 5’e kadar olan sayıların toplamını
veren bir programın akış diyagramı ve algoritmanın adım
adım çalıştırılması durumunda değişkenlerin alacağı
değerler listelenmiştir.
• Değişkenler
• K: Döngü değişkeni
• Toplam: Toplam değerini tutacak değişken
• Örnek:
• Burada sadece döngünün bitiş değerinin 5000 yapılması
ile 1’den 5000’e kadar olan sayıların toplamı hesaplanmış
olacaktır veya döngü bitiş değerinin (N) dışarıdan girilmesi
ile 1+2+3+… +N toplamı hesaplanabilecektir.
• Örnek: Dışarıdan girilen N sayısının f aktöriyelini
hesaplayıp ekrana yazdıran programın akış diyagramı ve
N değerinin 5 olarak girilmesi durumunda değişkenlerin
alacağı değerler listelenmiştir.
• Değişkenler
• N: Bir pozitif tamsayı
• K: Döngü değişkeni
• Faktor: Faktöriyel değerini tutacak değişken
• Örnek:
Akış Diyagramı Örnekleri
• Örnek 1: Yükseklik ve taban uzunluğu girilen bir üçgenin
alanını hesaplayan programın akış diyagramı
• Değişkenler
• A: Üçgenin taban uzunluğu
• H: Üçgenin yüksekliği
• Alan: Üçgenin alanı
• Örnek 2: Yarıçapı verilen dairenin alanı ve çevresini bulan
programın akış diyagramı
• Değişkenler
• R: Yarıçap
• Alan: Dairenin alanı (pi*R2)
• Cevre: Dairenin çevresi (2*pi*R)
• Örnek 3: Maaşı 2000TL’den fazla olanlardan %10, az
olanlardan ise %7 vergi kesinti yapan, vergi ve net maaşı
ekrana yazdıran programın akış diyagramı
• Değişkenler
• Bmaas: Brüt maaş
• Vergi: Vergi miktarı
• Nmaas: Net maaş
• Yukarıda 2000 TL ve üzerinde maaş alanlar için vergi
değeri “bmaas*10/100” şeklinde, ayrıca net maaşlar her
iki durum için ayrı ayrı hesaplatılacak olsaydı,
“nmaas=bmaas*0.90 veya nmaas=bmaas*90/100”
şeklinde de hesaplatılabilirdi.

• Örnek 4: Dışarıdan girilen A sayısının kuvvetleri olan A1,


A2, A3, …, A10 sayılarını ekrana yazdıran programın akış
diyagramı
• Değişkenler
• A: Bir sayı
• K: Döngü değişkeni
• Örnek 5: Dışarıdan girilen 10 adet sayının karelerinin
toplamını hesaplayan programın akış diyagramı
• Değişkenler
• A: Bir sayı
• K: Döngü değişkeni
• Toplam: Karelerin toplamını tutacak değişken
•  Örnek 6: + + + ... + toplamını bulan programın akış
diyagramı
• Değişkenler
• N: Toplanacak sayıların üst sınırı
• K: Döngü değişkeni
• Toplam:Toplam değerini tutacak değişken

You might also like