You are on page 1of 83

OOP’ye Giriş

1. Gün

Itero Academy

Arkhé Köyü

Temmuz 2022

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 1 / 52


Hoşgeldiniz

Silikon ve metalden bir tuğlaya istediğini nasıl yaptırabilirsin?


İçinde çalışan yazılım olmadan laptopunuzun pek bir amacı kalmıyor.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 2 / 52


Neler Öğreneceksiniz?

Bu yaz kampının temel amacı size yazılımın, özellikle OOP paradigmasının


temellerini öğretmek. Kampın sonunda, hepinizin tek başına java ile küçük
bir proje geliştirebilecek seviyeye gelmenizi amaçlıyoruz.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 3 / 52


Java Nedir?

1985’de geliştirilmiş çok amaçlı, obje odaklı bir yazılım dilidir.


Bu derste Java, size OOP paradigmasını öğretirken kullanacağımız bir
araç olacak.
Java ile program geliştirmeyi de öğreneceksiniz
Ama asıl amacımız size endüstride yaygın olarak kullanılan OOP
konseptini, ve elinizdeki bir problemi OOP ile nasıl ele alabileceğinizi
öğretmek.
Java, 1985’te geliştirilmesine rağmen düzenli olarak yeni versiyonları
çıkan endüstride sıklıkla kullanılan bir yazılım dilidir.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 4 / 52


Nedir bu OOP?

İlk kez 1963’te Alan Kays tarafından yayınlanan tezde ortaya çıkmıştır.
OOP kullanılarak geliştirilen programlarda, programdaki
konseptleri/yapıları temsil eden sınıflar(classlar) oluşturulur.
Programın yapması gereken işlemler objeler oluşturarak bu objeler
üzerinde çalışır.
Polymorphism, inheritance, encapsulation gibi korkunç görünen
konseptler, doğru kullanılarak programların kalitesini arttırır,
yazılımcının işini kolaylaştırır.
OOP’nin düzgün kullanılması büyük projeleri geliştirmek daha
kolaylaştırır.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 5 / 52


Dersin İlerleyişi

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 6 / 52


Kullanacağımız Araçlar

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 7 / 52


İlk Java Kodumuz

class Main { // Classimizi Tanimliyoruz


// Program acildiginda ilk calisacak fonksiyon
public static void main(String[] args) {
// Ekrana Hello World bastiriyoruz
System.out.println("Hello world!");
}
}

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 8 / 52


// Yorumlar

// Bu bir yorum
/* Bu da oyle */
/*
Birden fazla satir kullanan
yorumlar yazmak da mumkun
*/

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 9 / 52


// Yorumlar

// Bu bir yorum
/* Bu da oyle */
/*
Birden fazla satir kullanan
yorumlar yazmak da mumkun
*/

Trivia
Neden yorumlarda Türkçe karakter kullanmadık?

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 9 / 52


Satır Satır...

class Main {

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 10 / 52


Satır Satır...

class Main {

Önemli
Class’ın adının önemi yok!

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 10 / 52


Satır Satır...

public static void main(String[] args) {

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 11 / 52


Satır Satır...

public static void main(String[] args) {

Bu fonksiyon java programına kodu nereden çalıştırmaya başlaması


gerektiğini gösteriyor

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 11 / 52


Satır Satır...

public static void main(String[] args) {

Bu fonksiyon java programına kodu nereden çalıştırmaya başlaması


gerektiğini gösteriyor
Her java programında 1 tane (Ne daha çok ne daha az) main
fonksiyonu olmak zorunda

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 11 / 52


Satır Satır...

public static void main(String[] args) {

Bu fonksiyon java programına kodu nereden çalıştırmaya başlaması


gerektiğini gösteriyor
Her java programında 1 tane (Ne daha çok ne daha az) main
fonksiyonu olmak zorunda
Kalıpla oynama yapılmıyor, burdaki her anahtar kelimenin anlamını
öğrendikten sonra main fonkiyonunu tekrar inceleyeceğiz

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 11 / 52


Satır Satır...

System.out.println("Hello world!");

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 12 / 52


Satır Satır...

System.out.println("Hello world!");

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 12 / 52


Temel Konsept: Değişkenler

Bilgisayar = Hafızası Olan Hesap Makinesi

Java’da verileri kaydetmek ve ihtiyaç duyduğumuzda erişip değiştirmek için


değişkenleri(variable) kullanıyoruz.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 13 / 52


Temel Konsept: Değişkenler

Java “statically typed” bir yazılım dili

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 14 / 52


Temel Konsept: Değişkenler

Java “statically typed” bir yazılım dili


Bir değişken sadece kendi namespace’i içerisinde erişilebilir.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 14 / 52


Temel Konsept: Değişkenler

Java “statically typed” bir yazılım dili


Bir değişken sadece kendi namespace’i içerisinde erişilebilir.
Değişkenler kullanılmadan önce tanımlanmalı

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 14 / 52


Temel Konsept: Değişkenler

Java “statically typed” bir yazılım dili


Bir değişken sadece kendi namespace’i içerisinde erişilebilir.
Değişkenler kullanılmadan önce tanımlanmalı
Tanımlama ̸= Atama (Definition ̸= Initialization)

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 14 / 52


Örnek: Java Değişkenleri

int x; // x’i tanimladik


int y = 14; // y’yi tanimladik ve 14 atadik

x = 28; // 28 atadik

System.out.println(x + y); // x ve y’nin toplamini bastir

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 15 / 52


Veri Tipleri

Primitive Types
int Tam sayılar
char Karakterler (’a’, ’z’,
’ ?’)
float, double Reel sayılar (1.12381)
boolean true , false

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 16 / 52


Veri Tipleri

Primitive Types
int Tam sayılar Reference Types
char Karakterler (’a’, ’z’, String Karakter dizisi (”Hello
’ ?’) World”)
float, double Reel sayılar (1.12381) Diğer Tipler Scanner , Stream ...
boolean true , false

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 16 / 52


Daha Fazla Basit Veri Tipi

Veri Tipi Anahtar Kelime Aralık


Boolean boolean {true, false}
byte [−128, 127]
short [−32786, 32787]
Tam Sayı
int [−2147483648, 2147483647]
long −[263 , 263 − 1]
float [±1.4 ∗ 10−45 , 3.4 ∗ 1038 ]
Reel Sayı
double [±4.9 ∗ 10−324 , 1.8 ∗ 10308 ]
Karakter char Tüm Unicode Karakterler

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 17 / 52


Namespace

Namespace Bir yazılım dilinde kullanılan anahtar kelimelerin


(fonksiyonlar, değişkenler, classlar) oluşturduğu isim kümesi.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 18 / 52


Namespace

Namespace Bir yazılım dilinde kullanılan anahtar kelimelerin


(fonksiyonlar, değişkenler, classlar) oluşturduğu isim kümesi.

Pratik Bilgi
Java’da namespace’ler süslü parantez arasında tanımlanır. Yani, bir süslü
parantezin içerisinde tanımlanan bir değişkene ya da fonksiyona dışarıdan
erişmek mümkün değildir.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 18 / 52


Namespace Örneği

int x; // x’i tanimladik


{
int y = 14; // y’yi tanimladik ve 14 atadik
}

// Buradan itibaren y degiskenine erisemiyoruz


x = 28; // x’e 28 atadik

System.out.println(x); // Ekrana 28 bastirdik


System.out.println(y); // HATA!!!

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 19 / 52


Tanımlama ̸= Atama

Düşünelim
Tanımlanan ama atanmayan bir değişkenin değeri ne olur?

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 20 / 52


Tanımlama ̸= Atama

Düşünelim
Tanımlanan ama atanmayan bir değişkenin değeri ne olur?

Değişkenleri ilk tanımlandıklarında aldığı değer belirsizdir. Ve eğer atama


yapılmadan değişken kullanılmaya çalışılırsa ya program belirsiz bir davranış
gösterir ya da compiler hata verir ve program en başından çalışmaz.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 20 / 52


Tanımlama ̸= Atama

Düşünelim
Tanımlanan ama atanmayan bir değişkenin değeri ne olur?

Değişkenleri ilk tanımlandıklarında aldığı değer belirsizdir. Ve eğer atama


yapılmadan değişken kullanılmaya çalışılırsa ya program belirsiz bir davranış
gösterir ya da compiler hata verir ve program en başından çalışmaz.

(Değişkenin bir class field’ı olarak mı yoksa fonksiyon içerisinde lokal bir
değişken olarak mı tanımlandığına göre)

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 20 / 52


Aritmetik Operasyonları

= Değişken atama

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 21 / 52


Aritmetik Operasyonları

= Değişken atama
+ Toplama, ya da uç uca ekleme
- Çıkarma işlemi
/ Bölme
* Çarpma
% Modulo (Bölme işleminden kalan)

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 21 / 52


Kısaltılmış Aritmetik Operasyonları

x += b x = x + b
x *= b x = x * b
x /= b x = x / b
x -= b x = x - b
x++ x = x + 1
x-- x = x - 1

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 22 / 52


Toplama İşlemi Üzerine

Matematik İşlemleri İçin


12 + 30
12.8 + 15.9

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 23 / 52


Toplama İşlemi Üzerine

Matematik İşlemleri İçin


12 + 30
12.8 + 15.9

String Operasyonları İçin


"Hello" + " " + "World"
"iteroacademy" + ".org"

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 23 / 52


Bölme İşlemi Üzerine

Önemli
Eğer bölme işleminin sonucunun ondalık kısmına da ihtiyacınız varsa,
kullandığınız veri tiplerine çok dikkat etmeniz gerek.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 24 / 52


Bölme İşlemi Üzerine

Önemli
Eğer bölme işleminin sonucunun ondalık kısmına da ihtiyacınız varsa,
kullandığınız veri tiplerine çok dikkat etmeniz gerek.

int x = 10;
int y = 4;

int div1 = x/y;


double div2 = (double)x/(double)y;
int casted = (int)div2;

System.out.println(div1);
System.out.println(div2);
System.out.println(casted);

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 24 / 52


Bölme İşlemi Üzerine

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 25 / 52


Dönüştürme (Casting)

Casting Bir değişkenin veri tipine başka bir veri tipine dönüştürmeye
casting denir.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 26 / 52


Dönüştürme (Casting)

Casting Bir değişkenin veri tipine başka bir veri tipine dönüştürmeye
casting denir.

Önemli
Casting’i istediğimiz veri tipinden diğerine dönüştürmek için kullanamayız.
Hangi veri tipinin neye dönüşebileceğini belirleyen kurallar var.
Sayılar sayılara dönüşebilir (int → float, long → short)
Karakterler tam sayıya dönüşebilir (char → int)
Referans veri tiplerinin kuralları ise kalıtım hiyerarşisine bağlı

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 26 / 52


Kullanıcı Etkileşimi: Çıktı Vermek

Programın kullanıcıyla etkileşime geçerken çıktı vermek için en çok


System.out objesinin metodlarını kullanacağız. Şimdilik bilmeniz
gereken metodlar:

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 27 / 52


Kullanıcı Etkileşimi: Çıktı Vermek

Programın kullanıcıyla etkileşime geçerken çıktı vermek için en çok


System.out objesinin metodlarını kullanacağız. Şimdilik bilmeniz
gereken metodlar:

println System.out.println(...) Verilen değişkeni ekrana


bastırır ve yeni satıra geçer.
print System.out.print(...) Verilen değişkeni ekrana bastırır
ama yeni satıra geçmez.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 27 / 52


Kullanıcı Etkileşimi: Girdi Almak

Kullanıcıdan veri girdisi almak için Java standart kütüphanesindeki


Scanner classını kullanabiliriz.
import java.util.Scanner;

class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Lutfen isminizi girin: ");

String isim = s.next();


System.out.println("Merhaba " + isim);
}
}

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 28 / 52


Kullanıcı Etkileşimi: Girdi Almak

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 29 / 52


Scanner

Scanner classı, kullanıcıdan alınan girdiyi farklı veri tipleri halinde size
verebilir. Kurs süresince kullanıcığınız birkaç scanner metodu:

next() Kullanıcının girdiği kelimeyi okumanızı sağlar ve size kelimeyi


String olarak verir
nextLine() Kullanıcının entera basana kadar yazdığı her şeyi size
String halinde verir.
nextInt() Girilen ilk sayıyı int halinde size verir.
setDelimiter() Scanner’ın next() işleminde stringi böleceği stringi
ayarlar.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 30 / 52


Basit bir Hesap Makinesi

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 31 / 52


Kontrol Yapıları

Kontrol Yapıları Programın akışını kontrol edip belli koşullara bağlı olarak
farklı kod bloklarının çalışmasını sağlayan yapılardır.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 32 / 52


Kontrol Yapıları

Kontrol Yapıları Programın akışını kontrol edip belli koşullara bağlı olarak
farklı kod bloklarının çalışmasını sağlayan yapılardır.

Karar Verme Yapıları


if-else ifadeleri
switch yapıları

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 32 / 52


Kontrol Yapıları

Kontrol Yapıları Programın akışını kontrol edip belli koşullara bağlı olarak
farklı kod bloklarının çalışmasını sağlayan yapılardır.

Karar Verme Yapıları


if-else ifadeleri
switch yapıları
Iterasyon Yapıları
for döngüleri
while döngüleri

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 32 / 52


Karar Verme Yapıları
Belirli bir koşula göre bir kod bloğunun çalışıp çalışmayacağına karar veren
ifadeler karar verme yapısıdır.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 33 / 52


Karar Verme Yapıları
Belirli bir koşula göre bir kod bloğunun çalışıp çalışmayacağına karar veren
ifadeler karar verme yapısıdır.

Evet
Karar Ver Koşul Sağlandı

Hayır

Koşul Sağlanmadı

Devam

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 33 / 52


Mantık Operatörleri

Karar verme yapılarının temel amacı belirli bir koşula bağlı olarak kodu
yönlendirmektir. Bu koşulları java’da ifade etmek için de mantık
operatörleri kullanılır:

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 34 / 52


Mantık Operatörleri

Karar verme yapılarının temel amacı belirli bir koşula bağlı olarak kodu
yönlendirmektir. Bu koşulları java’da ifade etmek için de mantık
operatörleri kullanılır:
== İki tarafındaki terimler birbirine eşitse true döndürür
!= İki tarafındaki terimler birbirinden farklı ise true döndürür

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 34 / 52


Mantık Operatörleri

Karar verme yapılarının temel amacı belirli bir koşula bağlı olarak kodu
yönlendirmektir. Bu koşulları java’da ifade etmek için de mantık
operatörleri kullanılır:
== İki tarafındaki terimler birbirine eşitse true döndürür
!= İki tarafındaki terimler birbirinden farklı ise true döndürür
&& Mantıktaki ve operatörüyle aynı işi yapar
|| Mantıktaki veya operatörüyle aynı işi yapar

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 34 / 52


Mantık Operatörleri

Karar verme yapılarının temel amacı belirli bir koşula bağlı olarak kodu
yönlendirmektir. Bu koşulları java’da ifade etmek için de mantık
operatörleri kullanılır:
== İki tarafındaki terimler birbirine eşitse true döndürür
!= İki tarafındaki terimler birbirinden farklı ise true döndürür
&& Mantıktaki ve operatörüyle aynı işi yapar
|| Mantıktaki veya operatörüyle aynı işi yapar
< ve <= Soldaki terim sağdakinden küçük(veya eşit) ise true
döndürür
> ve >= Soldaki terim sağdakinden büyük(veya eşit) ise true
döndürür

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 34 / 52


if yapıları

int x = 10;

if(x > 15){


System.out.println("x 15’den buyuk");
}

if(x >= 15 && x <= 30){


System.out.println("x 15 ve 30 arasinda");
}else{
System.out.println("x 15 ve 30 arasinda degil");
}

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 35 / 52


else if

Aşağıdaki sistem bir öğrencinin takdir mi teşekkür mü alacağına karar


veriyor:
int derece = 90;

if(derece > 25){


System.out.println("Hava cok sicak");
}else if(derece > 10){
System.out.println("Biraz serin, uzerine ceket al");
}else{
System.out.println("Siki giyin");
}

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 36 / 52


else if vs if

Düşünelim
else if yerine if kullansaydık ne olurdu?

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 37 / 52


else if vs if

Düşünelim
else if yerine if kullansaydık ne olurdu?

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 38 / 52


switch yapıları

Bir değişkenin birçok farklı değerine göre karar alınması gerekiyorsa, if


ifadelerini kullanmak kodun okunaklılığını azaltıyor.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 39 / 52


switch yapıları

Bir değişkenin birçok farklı değerine göre karar alınması gerekiyorsa, if


ifadelerini kullanmak kodun okunaklılığını azaltıyor.

if kullanırsak
if(yaprak == 3){
System.out.println("3 yaprakli yonca");
}else if(yaprak == 4){
System.out.println("Sanslisin, 4 yaprakli yonca");
}else if(yaprak == 5){
System.out.println("5 yaprakli yonca var miymis?");
}else{
System.out.println("Onun yonca olduguna emin misin?");
}

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 39 / 52


switch yapıları
Bir değişkenin birçok farklı değerine göre karar alınması gerekiyorsa, if
ifadelerini kullanmak kodun okunaklılığını azaltıyor.
switch kullanırsak
switch(yaprak){
case 3:
System.out.println("3 yaprakli yonca");
break;
case 4:
System.out.println("Sanslisin, 4 yaprakli yonca");
break;
case 5:
System.out.println("5 yaprakli yonca var miymis?");
break;
default:
System.out.println("Onun yonca olduguna emin misin?");
break;
}
Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 40 / 52
switch ve break

Düşünelim
switch’i yazarken break; satirini yazmazsak ne olur?
İpucu: else if’e çok yakın bir etkisi var

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 41 / 52


Itero Hesap Makinesi Version 2

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 42 / 52


Iterasyon Yapıları
Bir kod bloğunu bir koşul sağlanana kadar çalıştırmak için kullanılan
yapılara “iterasyon” yapıları denir.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 43 / 52


Iterasyon Yapıları
Bir kod bloğunu bir koşul sağlanana kadar çalıştırmak için kullanılan
yapılara “iterasyon” yapıları denir.

Evet
Karar Ver Koşul Sağlandı

Hayır

Koşul Sağlanmadı

Devam

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 43 / 52


Intermezzo

Iterasyon, herhangi bir şeyin tekrarlanması, art arda yeniden yapılması


anlamına gelmektir.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 44 / 52


Intermezzo

Iterasyon, herhangi bir şeyin tekrarlanması, art arda yeniden yapılması


anlamına gelmektir.

İsmimiz itero, iterasyon kelimesinin latincesi olan


itero’dan geliyor

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 44 / 52


while döngüleri

1’den 20’ye kadar bütün sayıları toplamak istediğimizi varsayalım:

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 45 / 52


while döngüleri

1’den 20’ye kadar bütün sayıları toplamak istediğimizi varsayalım:


int x = 1;

int toplam = 0;

while(x <= 20){


toplam += x;
x++;
}

System.out.println(toplam);

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 45 / 52


do-while döngüleri

Do-While döngüleri while’ın aksine en az bir kere çalışmayı garantilerler.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 46 / 52


do-while döngüleri

Do-While döngüleri while’ın aksine en az bir kere çalışmayı garantilerler.


Scanner s = new Scanner(System.in);
int sayi, toplam = 0;

do{
sayi = s.nextInt();
toplam += sayi;
}while(sayi != 0);

System.out.println(toplam);

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 46 / 52


for döngüleri

For döngüleri, while döngülerindeki değişken tanımlama ve değişkeni


arttırma işlemlerini tek bir satıra taşıyarak yazılımcının işini kolaylaştırır.

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 47 / 52


for döngüleri

For döngüleri, while döngülerindeki değişken tanımlama ve değişkeni


arttırma işlemlerini tek bir satıra taşıyarak yazılımcının işini kolaylaştırır.
for(int i = 0; i < 20; i++){
System.out.println(i);
}

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 47 / 52


for döngüleri

For döngüleri, while döngülerindeki değişken tanımlama ve değişkeni


arttırma işlemlerini tek bir satıra taşıyarak yazılımcının işini kolaylaştırır.
for(int i = 0; i < 20; i++){
System.out.println(i);
}

for(int i = 20; i > 0; i = i - 2){


System.out.println(i);
}

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 47 / 52


Sonsuz Döngüler

int total = 0;
int i = 1;
while(true){
total += i;
i++;
}

int i = 1;
for(; i > 0; ){
System.out.println(i);
i = i * 2;
}

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 48 / 52


break ve continue

Loopların içerisinden çıkmak veya bir sonraki iterasyona atlamak için


break ve continue anahtar kelimeleri kullanılır.
int sum = 0;
for(int i = 0; i < 100; i++){
if(i % 2 == 1) // Sadece cift sayilar
continue;
sum += i;
}

Scanner s = new Scanner(System.in);


while(true){
if(s.nextInt() % 11 != 0) // 11’in kati degil ise
break;
}
System.out.println("Kaybettin!");

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 49 / 52


Hesap Makinesi Version 3

Yeni Operasyonlar aˆb =ab ve a#b =EBOB(a, b)


Kullanıcıdan Çıkma Emri Her işlemden sonra kullanıcıya başka bir işlem
yapmak isteyip istemediğini sor

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 50 / 52


Yarına Kadar Kendin Dene

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 51 / 52


Intermezzo

int i = 1;
for(; i > 0; ){ // while(i > 0)
System.out.println(i);
i = i * 2;
}

Aslında bu sonsuz bir döngü değil!

Itero Academy (Arkhé Köyü) OOP’ye Giriş 1. Gün Temmuz 2022 52 / 52

You might also like