web programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · veri...

72
Web Programlama JavaScript (1)

Upload: others

Post on 03-Feb-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Web Programlama

JavaScript (1)

Page 2: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

JavaScript Programlama Dili

• Web’in nesneye yönelik programlama dili • Pek çok modern web sitesi JavaScript kullanır

• Tüm modern web tarayıcıları (masaüstü, tablet, cep telefonu vs.) JavaScript komutlarını çalıştıran bir işleyiciye (interpreter) sahiptir

• JavaScript, web geliştiricilerin öğrenmesi gereken üç temel teknolojiden biridir: • HTML: web sayfalarının içeriğini ve genel yapısını belirler

• CSS: web sayfalarının görünümünü belirler

• JavaScript: web sayfalarının davranışını belirler

Page 3: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

JavaScript ve Java İlişkisi

• Java ve JavaScript yakın zamanlarda ortaya çıkmış, birbirleriyle direk ilişkisi olmayan iki programlama dilidir

• Nestscape, Java’yı tamamlayan ve profesyonel olmayan geliştiricilere yönelik bir dil ortaya çıkarmak istemiştir

• JavaScript bazı özellikleri açısından Java’dan etkilenmiştir • Web tarayıcısı içerisinde korumalı olarak çalıştırılır (sandboxed)

• Java’nın yazım kuralları ve standart kütüphanesi göz önüne alınarak tasarlanmıştır • Java anahtar kelimeleri JavaScript için ayrılmış kelimelerdir

• JavaScript standart kütüphanesi, Java kütüphanesinin isimlendirme kurallarını kullanır

• JavaScript’in Math ve Date sınıfları, Java 1.0 daki sınıflardan türetilmiştir

Page 4: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

JavaScript Tarihçesi (1/2)

• JavaScript, Brendan Eich tarafından, 1995 yılında, Netscape de çalışırken 10 günde geliştirilmiştir

• Netscape o dönemde Microsoft ile web teknolojileri konusunda yarışmakta • Firefox web tarayıcısını geliştiren Mozilla Netscape tarafından oluşturulan ve

desteklenen bir organizasyon

• Mocha –> LiveScript –> JavaScript (Sun’dan tescil lisansı alınmasıyla)

• 1996 yılında JavaScript’in standartlaştırılması için ECMA’ya başvuruldu • ECMA, C# programlama dilini de standartlaştırmıştır

Page 5: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

JavaScript Tarihçesi (2/2)

Versiyon Yıl

ECMAScript 1 1997

ECMAScript 2 1998

ECMAScript 3 1999

ECMAScript 4 -

ECMAScript 5 2009

ECMAScript 5.1 2011

• ECMAScript 4 çalışmalarına Waldemar Horwat önderliğinde 2000 yılında başlanmıştır

• Microsoft da bazı önerileri kendi JScript.net dilinde gerçekleştirerek katkı sağlayacak gibi gözükmüştür

• Zamanla Microsoft’un uzlaşmaya ve JavaScript standardını düzgün bir şekilde gerçekleştirmeyeceği ortaya çıkmıştır

• 2003 yılında ECMAScript 4 çalışmaları rafa kaldırılmıştır

Page 6: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Unicode ve Kod Yorumları

• Otomatik çöp toplama (garbage collection)

• Büyük-küçük harf ayrımı önemli

• Unicode kaçış karakterleri • Bazı donanım veya yazılımlar unicode karakterlerin tamamını gösteremez

• Bu ortamlarda, istenen unicode karakter kaçış karakteri aracılığıyla kullanılabilir

Page 7: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Veri Tipleri ve Değerleri

• İlkel (primitive) tipler veya değerler • Sayılar

• Karakter katarı (string)

• İkili değer (boolean)

• null

• undefined

• Bazı ilkel değerler nesne gibi davranabilirler ve metotları çağırılabilir

• Nesne tipleri – sıralı olmayan isimlendirilmiş değerler kümesi • array: Özel bir nesne türü. Sıralı sayısal değerler kümesi

• function: Başka bir özel nesne türü. İlişkili çalıştırılabilir koda sahip nesneler

Page 8: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Önemli Bazı Sınıflar

• Array

• Function

• Date

• RegExp

• Error

Page 9: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Sayılar

• JavaScript tam sayılar ve ondalıklı sayılar arasında ayırım yapmaz

• Tüm sayılar 64-bit ondalıklı sayı olarak ifade edilir • IEEE 754 standardı – Tüm modern dillerde (Java, C++ vs.)double tipi için

kullanılan format

• Dizi indeksi olarak 32-bit tamsayılar kullanılır

• 0x ile başlayan sayıların 16’lık tabanda (hexadecimal) verildiği varsayılır: 0xCAFE912 gibi

• Ondalıklı sayılar için kullanılan notasyonlar: 3.4, 6.02e23, 1.47e-32 veya 1.47E-32

Page 10: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Aritmetik İşlemler (1/3)

Page 11: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Aritmetik İşlemler (2/3)

Page 12: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Aritmetik İşlemler (3/3)

Page 13: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Gün ve Zaman (1/3)

• Gün ve zamanla ilişkili işlemler yapmak için Date nesneleri kullanılır

• Date nesneleri Date() yapıcısı kullanılarak oluşturulabilir

• Aşağıda Date nesnesinin bazı kullanımları gösterilmiştir

Page 14: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Gün ve Zaman (2/3)

Page 15: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Gün ve Zaman (3/3)

Page 16: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String

• UTF-16 karakterden oluşan sıralı karakter kümeleridir

• Oluşturulduktan sonra içeriği değiştirilemez

• Tanımlamada string’e ait karakterler tek veya çift tırnak karakterleri arasına yazılır

• Çift tırnak karakterleri içerisinde tanımlanırsa, string içerisinde tek tırnak işareti direk olarak kullanılabilir

• Tek tırnak karakterleri içerisinde tanımlanırsa, string içerisinde çift tırnak işareti direk olarak kullanılabilir

Page 17: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String Tanımlama Örnekleri

Page 18: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Birden Fazla Satıra Dağılan String İfadeleri

• ECMAScript 3’te string ifadeleri tek satırda tanımlanmalıdır

• ECMAScript 5 ile birlikte, yeni satıra geçmeden önce \ karakteri kullanılması şartıyla, string ifade birden fazla satırda tanımlanabilir

Page 19: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

JavaScript ve HTML’de String İfadeleri

• İstemci tarafı programlarda, JavaScript kodu içerisinde HTML kodu veya HTML kodu içerisinde JavaScript kodu olabilir

• JavaScript de olduğu gibi, HTML de string ifadeleri tanımlamak için hem tek hem de çift tırnak kullanmaya izin verir

• Bu nedenle, JavaScript ve HTML kodları birarada kullanıldığında bunlardan birinde, string ifade tanımlamak için tek tırnağı kullanırken, diğerinde çift tırnak kullanmak mantıklı olacaktır

• Aşağıda HTML için çift tırnak kullanılırken, JavaScript için tek tırnak kullanılmıştır:

Page 20: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Kaçış Karakteri

JavaScript’te kaçış karakteri olarak olarak \ karakteri kullanılır

Page 21: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Birleştirilmesi

• + operatörü string ifadelerin birleştirilmesinde kullanılır

alert("Thanks, " + userName + "! ") ;

• + operatörü, string ve sayısal değerlerin birleştirilmesi durumunda otomatik olarak sayısal değeri string ifadeye dönüştürür ve iki string ifadeyi birleştirir

alert("2 plus 2 equals " + 2 + 2); // 2 plus 2 equals 22

Page 22: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Uyarı Pencereleri

• Uyarı pencerleri, kullanıcıya bir mesaj vermek için ortaya çıkan kutulardır

• Uyarı pencerleri, window nesnesinin alert metodu kullanılarak oluşturulur

• Window nesnesi web tarayıcıları için global nesnedir ve fonksiyonlarına erişmek için fonksiyon çağırımlarında yazılması gerekmez

Page 23: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Uyarı Penceresi Örneği

Aşağıdaki JavaScript satırlarının her ikiside ekrana "Thanks for your input" yazan bir kutu gösterecektir

window.alert("Thanks for your input");

alert("Thanks for your input");

Page 24: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Formlar ve Uyarı Penceresi

Aşağıda, bir form ve bu forma ait submit butonuna tıklanıldığında bir uyarı penceresi gösteren HTML kodu verilmiştir

<form name=myform>

<input type=button value="Try it now"

onClick="alert('Hello from JavaScript!')">

</form>

Page 25: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Değişken Tanımlama (1/4)

• Değişkenler (variable) "var" anahtar kelimesi kullanılarak tanımlanırlar

• Aynı "var" anahtar kelimesi, değişkenler arasında virgül lullanılarak birden fazla değişkenin tanımlanmasında kullanılabilir

• Değişken tanımlamayı, değişkenlere ilk değer atamayla aynı anda gerçekleştirilebilir

var name;

var name = "Mark";

var weight = 150;

var name, weight;

Page 26: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Değişken Tanımlama (2/4)

• Değişken isimleri boşluk karakteri içeremez

• Büyük/küçük harfler, sayılar, alt çizgi karakteri veya dolar işareti içerebilir

• Büyük/küçük harf ayrımı vardır. Örnek: count, Count ve couNt

• İsimler bir rakamla başlayamazlar

Page 27: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Değişken Tanımlama (3/4)

• Bir değişken için ilk değer belirtilmemişse, ilk değeri "undefined" olarak atanır

• Değişken tanımlama "for" veya "for/in" döngüleri için de aşağıdaki gibi kullanılabilir:

for(var i = 0; i < 10; i++) console.log(i);

for(var i = 0, j=10; i < 10; i++,j--) console.log(i*j);

for(var p in o) console.log(p);

Page 28: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Değişken Tanımlama (4/4)

• Değişken tanımlarken var kelimesinin yazılması zorunlu değildir. Ancak bu doğru değildir.

• Aynı değişken için, kod içerisinde, tekrar "var" kullanılarak yeniden aynı değişken tanımlanabilir

• JavaScript, C veya Java gibi statik tipli bir dil olmadığından değişkenler tip bilgisine sahip değildir ve değişkenin tuttuğu değer tipi kod içerisinde sonradan değiştirilebilir:

var i = 10;

i = "ten";

Page 29: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Prompt (1/2)

• Prompt kullanıcıdan bilgi almak için kullanılan bir penceredir

• Kullanıcıya bir soru sorulur ve kullanıcının soruya olan cevabını bir metin kutusuna girerek "Tamam" butonuna tıklaması beklenir

• Window nesnesinin prompt metodu çağırılarak gerşekleştirilir

• Prompt metodundan dönen değer bir değişkene alınmalı ve program içerisinde kullanılmalıdır

var numberOfCats = prompt("How many cats?") ;

Page 30: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Prompt (2/2)

• Kullanıcıya varsayılan bir cevap gösterilmek istenirse, bu cevap prompt metodunun ikinci parametresi olarak gönderilmelidir

var spec = prompt("Your species?", "human");

• Prompt metodundan dönen değer her zaman string ifadedir

var numberOfCats = prompt("How many cats?") ;

var tooManyCats = numberOfCats + 1; // tooManyCats="31"

Page 31: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

If Cümleleri

• Eşitlik ve eşitsizlik karşılaştırmalarında sırasıyla === ve !== operatörleri kullanılır

• Karşılaştırma amaçlı >, <, >= ve <= operatörleri kullanılabilir

• If cümlelerinde { ve } karakterleri kullanımı zorunlu değildir

var x = prompt("Where does the Pope live?") ;

if (x === "Vatican") {

alert("Correct! ") ;

}

Page 32: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

If-else ve else-if Cümleleri

var correctAnswer = "Vatican";

if (x === correctAnswer) {

alert("Correct! ") ; } else if (x === "Rome") { alert("Incorrect but close") ; } else { alert("Incorrect") ; }

Page 33: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Birden Fazla Şartın Test Edilmesi

Birden fazla şartın aynı anda test edilmesi için && (VE) ve || (VEYA) operatörleri kullanılabilir

if ((age > 65 | | age < 21) && res === "U. S. ") {

Page 34: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Diziler

• Birden fazla veriyi tutmak için ve bu verilere kolayca erişmek için diziler kullanılabilir

var cities = ["Atlanta", "Baltimore", "Chicago", "Denver];

• Dizi elemanları için indeks sıfırdan başlar: cities[0] ... cities[3]

• Dizi elemanları farklı tipte olabilir

var mixedArray = [1, "Bob", "Now is", true] ;

Page 35: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Dizilere Sonradan Eleman Eklemek

• Başlangıçta boş olarak tanımlanan diziye sonradan eleman eklemek mümkündür

• Dahası eleman ekleme arada bazı elemanları belirtmeksizin de yapılabilir

var pets = [] ;

...

pets[0] = "dog";

pets[1] = "cat";

pets[4] = "bird"; // pets[2] = undefined; pets[3] = undefined;

Page 36: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Diziler Üzerinde Pop ve Push İşlemleri

Pop işlemi dizinin son elemanını silerken, push işlemi diziye bir veya daha fazla eleman eklemeyi sağlar

pets.pop() ; pets.push("elephant");

pets.push("fish", "ferret");

Page 37: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Diziler Üzerinde Shift ve Unshift İşlemleri

• Shift işlemi dizinin başından bir eleman silmek için kullanılır

• Unshift işlemi ise dizinin başına bir veya daha fazla eleman eklemek için kullanılır

pets.shift() ; pets.unshift("elephant");

pets.unshift("fish", "ferret");

Page 38: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Diziler Üzerinde Splice İşlemi

• Dizinin herhangi bir yerine bir veya daha fazla eleman eklemek için kullanılır

• Opsiyonel olarak ekleme yapılan pozisyondan itibaren bazı elemanların silinmesi sağlanabilir

• Metodun ilk parametresi eklemeye başlanılacak pozisyonu belirtir

• Metodun ikinci parametresi ise, birinci paramtredeki poisyondan başlayarak kaç tane elemanın silineceğini belirtir

• Daha sonra gelen parametreler ise, diziye eklenecek eleman(lar)dır

Page 39: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Diziler Üzerinde Splice İşlemi Örneği

• "pets" dizisi "dog", "cat", "fly", "bug" ve "ox" elemanlarını içersin

• Aşağıdaki splice işlemi, "cat" elemanından sonra gelen "fly" ve "bug" elemanlarını siler ve "pig", "duck" ve "emu" elemanlarını ekler

pets. splice(2, 2, "pig", "duck", "emu");

• Dizi elemanlarını silmeden sadece ekleme yapmak yada yeni eleman eklemeden dizi elemanlarını silmek mümkündür

pets. splice(2, 0, "pig", "duck", "emu") ;

pets. splice(2, 2) ;

Page 40: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Diziler Üzerinde Slice İşlemi

• Slice işlemi, bir dizide, belirli bir pozisyondan başlayan ve birbirini takip eden bir veya daha fazla elemanı başka bir diziye kopyalamakta kullanılır

• "pets" dizisi "dog", "cat", "fly", "bug" ve "ox" elemanlarını içersin

• Aşağıdaki slice işlemi, "fly" ve "bug" elemanlarını "noPets" adlı yeni diziye kopyalar ve "pets" dizisini olduğu gibi bırakır

var noPets = pets.slice(2, 4);

Page 41: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

For Döngüsü

var cleanestCities = ["Santa Fe", "Tucson", "Honolulu"];

var cityToCheck = prompt("City?");

for (var i = 0; i <= 2; i++) {

if (cityToCheck === cleanestCities[i] ) {

alert("It' s one of the cleanest cities") ;

}

}

Page 42: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Dizi Uzunluğu ve Döngüyü Bölme (1/2)

var numElements = cleanestCities. length;

var matchFound = false;

for (var i = 0; i < numElements; i++) ;

if (cityToCheck === cleanestCities[i] ) {

matchFound = true;

alert("It' s one of the cleanest cities") ;

break;

} }

Page 43: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Dizi Uzunluğu ve Döngüyü Bölme (2/2)

if (matchFound === false) {

alert("It' s not on the list") ;

}

Page 44: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Büyük/Küçük Harf Dönüşümü

• String nesnesinin toLowerCase() ve toUpperCase() metotları, string değişkenlerinde tutulan karakterleri sırasıyla küçük ve büyük harfe çevirmekte kullanılabilir

• Bu metotların çağırılabilmesi için string temel veri tipi arka planda otomatik olarak String wrapper nesnesine çevirilecektir

• Orijinal string ifade değiştirilmez, metotların dönüş değeri kullanılmalıdır

cityToCheck = cityToCheck.toLowerCase();

cityToCheck = cityToCheck.toUpperCase();

Page 45: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Büyük/Küçük Harf Dönüşümü Örneği

var cityToCheck = prompt("Enter your city") ;

cityToCheck = cityToCheck. toLowerCase() ;

var cleanestCities = ["santa fe", "tucson", "great falls"] ;

for (var i = 0; i <= 4; i++) {

if (cityToCheck === cleanestCities[i] ) {

alert("It' s one of the cleanest cities") ;

}

}

Page 46: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadeyi Parçalara Bölmek (1/3)

• String ifadeler diziler indekslidirler

• String ifade indeksleri (dizilerdeki gibi) sıfırdan başlar

• Bir String ifadenin belli bir kısmını kopyalamak için slice metodu kullanılır

• Öncelikle string ifadenin hangi karakteri aralıktaki karakterlerinin kopyalanacağı belirlenmelidir

• Daha sonra bu karakterlere ait indeksler slice metoduna parametre olarak verilirler

Page 47: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadeyi Parçalara Bölmek (2/3)

var firstChar = cityToCheck. slice(0, 1);

• Eğer cityToCheck "Boston" ise metod "B" değerini döndürür

• İlk parametre kopyalanacak kısmın ilk karakterinin indeksidir

• İkinci parametre ise, kopyalanacak son karakterden sonra gelen karakterin indeksidir

Page 48: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadeyi Parçalara Bölmek (3/3)

var someChars = cityToCheck. slice(2, 5);

• someChars "sto" değerini içerecektir

• Metod, ikinci parametrenin belirtilmemesi durumunda, belirtilen başlangıç indeksinden string ifadenin sonuna kadar kopyalama yapar

var someChars = cityToCheck. slice(2); // "ston"

Page 49: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Uzunlukları (1/2)

• String ifadelerin uzunluklarını elde etmek için, dizilerde olduğu gibi "length" özelliği kullanılır

• Kullanıcıdan bir ay değeri almak isteyelim

• Eğer ay değeri üç karakterden fazla karakter içeriyorsa (örn: November) ilk üç karakterini elde etmek istersek

var month = prompt("Enter a month") ; var charsInMonth = month. length;

if (charsInMonth > 3) { monthAbbrev = month. slice(0, 3) ; }

Page 50: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Uzunlukları (2/2)

• Kullanıcıdan alınan bir String ifade içerisinde çift boşluk olup olmadığını tespit etmek istediğimizi varsayalım

var str = prompt("Enter some text") ; var numChars = str. length;

for (var i = 0; i < numChars; i++) { if (str. slice(i, i + 2) === " ") { alert("No double spaces! ") ; break;

} }

Page 51: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerde Arama (1/4)

• Bir derginin "World War II" ifadesine izin vermediğini, bu terim yerine "the Second World War" ifadesinin kullanılmasını istediğini varsayalım

• Dergiye gelen makalelerde "World War II" ifadesi geçiyorsa bunu otomatik olarak "the Second World War" ifadesine çevirecek programı şu ana kadarki bilgimizi kullanarak aşağıdaki gibi yazabilir

for (var i = 0; i < text. length; i++) {

if (text. slice(i, i + 12) === "World War II") {

text = text. slice(0, i) + "the Second World War" +

text. slice(i + 12);

} }

Page 52: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerde Arama (2/4)

• Ancak bu çözüm döngü kullandığından verimli bir çözüm değildir

• Döngü kullanmak yerine aramayı aşağıdaki gibi indexOf metodu kullanarak gerçekleştirebiliriz

var firstChar = text. indexOf("World War II") ;

• indexOf metodu aranacak String ifadeyi parametre olarak alır

• Eğer aranan ifade bulunamazsa, metod -1 döndürür, bulunursa bulunduğu pozisyonun indeksi geriye döner

Page 53: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerde Arama (4/4)

• Döngülü çözümün, indexOf metodunu kullanacak şekilde değiştirilmiş şekli aşağıdadır

var firstChar = text. indexOf("World War II");

if (firstChar ! == -1) {

text = text. slice(0, firstChar) + "the Second World War"

+ text. slice(firstChar + 12);

}

Page 54: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerde Arama (4/4)

• Aranan String ifade, aramanın yapıldığı ifade içerisinde birden fazla geçiyor ise arama döngü içerisinde yapılabilir

• Bununla ilgili örnek kod yazınız

• indexOf metodu arama yaparken String ifadenin başından başlayıp sonuna doğru gitmektedir

• Sondan başa doğru arama yapmak için lastIndexOf metodu kullanılabilir

var text = "To be or not to be. "; var segIndex = text. lastIndexOf("be"); // 16

Page 55: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

charAt Metodu (1/2)

• Bir String ifadede belli bir karakteri elde etmek için aşağıda gösterildiği gibi "slice" metodu kullanılabilir

var firstChar = firstName. slice(0, 1);

• Daha basit alternatif bir yöntem ise charAt metodunu kullanmaktır

var firstChar = firstName. charAt(0);

• Parametre olarak istenilen karakerin indeksi verilmektedir

Page 56: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

charAt Metodu (2/2)

• charAt metodu özellikle belli bir karakterin aranması için kolayca kullanılabilir

• Aşaşıdaki kod parçası kullanıcının girdiği String ifade içerisinde "!" karakterini aramakta ve bulduğunda kullanıcıyı uyarmaktadır

for (var i = 0; i < text. length; i++) {

if (text. charAt(i) === "!") {

alert("Exclamation point found!");

break;

} }

Page 57: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

replace Metodu (1/2)

• replace metodu bir String ifade kaynağında belirli bir String ifadeyi aratıp onu değiştirmeyi sağlar

• Metodun ilk parametresi aranacak String ifade iken, ikinci parametre aranan String ifade eğer bulunursa, bu ifadenin yerini alacak yeni ifadedir

• Metodun dönüş değeri, değiştirilmiş String ifadedir

• Orijinal string ifadenin değiştirilmesi isteniyorsa, metodun sonucunun orijinal string ifadeye atanması gerektiği unutulmamalıdır

text = text. replace("World War II", "the Second World War") ;

Page 58: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

replace Metodu (2/2)

• Bir önceki çağırım metinde sadece bir değişim gerçekleştirir

• Metinde aranan ifade birden fazla kez geçiyorsa, bu ifadelerin tümünü değiştirmek için global değişim yapılmalıdır

• Global değişim yapmak için aranacak ifade "çift tırnak" yerine "/" karakterleri arasına yazılmalı ve ardından "g" karakteri yazılmalıdır

var text = text. replace(/World War II/g, "the Second World War");

Page 59: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Sayıların Yuvarlanması (1/2)

• Ondalıklı sayıları tamsayılara yuvarlamak için Math sınıfındaki metotlar kullanılır

• round metodu kendisine parametre olarak verilen ondalıklı sayıyı en yakın tamsayıya yuvarlayarak döndürür

• .5 ve üstü değerler daha büyük tam sayıya yuvarlanırken, daha düşük değerler daha küçük tam sayıya yuvarlanır

scoreAvg = Math. round(1.1); // 1

scoreAvg = Math. round(1.5); // 2

scoreAvg = Math. round(-1.5); // -1

Page 60: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Sayıların Yuvarlanması (2/2)

• ceil metodu kendisine parametre olarak verilen ondalıklı sayıyı kendisinden büyük en yakın tamsayıya yuvarlayarak döndürür

var scoreAvg = Math. ceil(.000001); // 1

• floor metodu ise kendisine parametre olarak verilen ondalıklı sayıyı kendisinden küçük en yakın tamsayıya yuvarlayarak döndürür

var scoreAvg = Math. floor(. 999999); // 0

Page 61: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Rastgele Sayılar Üretmek (1/2)

• Math sınıfının random metodu 0 ile 1 (dahil değil) arasında rastgele bir sayı üretir

• Sayının ondalıklı kısmı 16 basamaktır • 0.0000000000000000 - 0.9999999999999999

var randomNumber = Math. random() ;

• 1 ile 6 arasında rastgle bir tamsayı üretmek için aşağıdaki kod parçası kullanılabilir

Page 62: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Rastgele Sayılar Üretmek (2/2)

1 ile 6 arasında rastgle bir tamsayı üretmek için aşağıdaki kod parçası kullanılabilir

var bigDecimal = Math. random() ; var improvedNum = (bigDecimal * 6) + 1; var numberOfStars = Math. floor(improvedNum) ;

Page 63: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Sayıya Dönüştürülmesi (1/8)

• Aşağıdaki satırla kullanıcıdan alınan yaş, değişkene String olarak aktarılır (örn: "20")

var age = prompt("Enter your age. ");

• Buna rağmen bu değişkeni aritmetik işlemlerde tam sayı olarak aşağıdaki gibi kullanabilirsiniz

var yearsEligibleToVote = age - 18;

• Bu durumda JavaScript aritmetik bir işlem yapmak isteiğinizi algılar ve age değişkenini otomatik olarak sayıya çevirir

Page 64: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Sayıya Dönüştürülmesi (2/8)

• JavaScript aşağıdaki işlem için de her iki değeri otomatik olarak sayıya çevirir ve çıkarma sonucunu doğru şekilde elde eder

var profit = "200" - "150"; // 50

• Bu otomatik çevrimin başarılı bir şekilde gerçekleşmesi için String ifadenin bir sayı olması gerekir

• Böyle olmadığı durumlarda aritmetik işlemin sonucu NaN (Not a Number) olur. Örnek:

var profit = "200" - "duck";

Page 65: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Sayıya Dönüştürülmesi (3/8)

• Ancak bu tür işlemlerde + operatörü kullanılırken dikkar edilmelidir

• Daha önce + operatörü ile String ifadelerle sayısal ifadeleri birleştirerek, String ifadeler elde etmiştik. Örnek:

var result = "abc" + 150; // abc150

• Bu sonuc aşağıdaki ifade için de geçerlidir

var result = "200" + "150"; // 200150

Page 66: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Sayıya Dönüştürülmesi (4/8)

• Başka bir problemli durum aşağıda verilmiştir

var currentAge = prompt("Enter your age. ");

var qualifyingAge = currentAge + 1;

• Bu durumda da, kullanıcı 52 değerini girerse, işlem sonucunda qualifyingAge "521" değerine sahip olur

Page 67: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Sayıya Dönüştürülmesi (5/8)

• Bu gibi durumlara engel olmak için, String ifade parseInt metodu ile tamsayıya çevrilmelidir

• Aşağıdaki kod beklendiği gibi çalışacaktır

var currentAge = prompt("Enter your age. ");

var qualifyingAge = parseInt(currentAge) + 1;

• parseInt kendisine parametre olarak gelen ondalıklı sayıları da tamsayıya çevirebilmektedir

var myInteger = parseInt("1. 9999"); // 1

Page 68: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Sayıya Dönüştürülmesi (6/8)

• Ondalık sayının değerini korumak için parseFloat metodu kullanılabilir

var myFractional = parseFloat("1. 9999") ; // 1. 9999

• String ifadelerin sayıya dönüştürülmesi gerektiğinde, hataya neden olmamak için bu iki metod kullanılarak elle dönüştürmek tercih edilmelidir

Page 69: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Sayıya Dönüştürülmesi (7/8)

• parseInt ve parseFloat metotları dışında, Number sınıfı da String ifadelerin sayıya dönüştürülmesinde kullanılabilir

• Farklı olarak Number sınıfı kullanıldığında, String ifadede ondalıklı kısım varsa, String ifade ondalıklı sayıya, ondalıklı kısım yoksa da tam sayıya dönüştürülür

var integerString = "24"

var num = Number(integerString); // 24

var floatingNumString = "24. 9876"; var num = Number(floatingNumString); // 24. 9876

Page 70: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

String İfadelerin Sayıya Dönüştürülmesi (8/8)

• Bazı durumlarda ise, sayıları String ifadeye dönüştürmek gerekebilir

• Örneğin, aritmetik işlemler sonunda elde edilen büyük bir sayının, kullanıcıya gösterilmeden önce daha rahat okunması için, virgül kullanarak yeniden şekillendirilmesi

• Bir sayıyı String ifadeye dönüştürmek için toString() metodu kullanılır

var numberAsNumber = 1234;

var numberAsString = numberAsNumber. toString(); // "1234"

Page 71: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Ondalıklı Sayıların Uzunluğu (1/3)

• Bir ürünün fiyatı $9.95 olsun (price)

• Ürün fiyatı üzerinden %6.5 vergi alınsın (taxrate)

• Toplam fiyatı bulmak için aşağıdaki işlemi yapmamız gerekir:

var total = price + (price * taxRate);

• Bu durumda total değişkeni 10.59675 değerine sahip olacaktır

Page 72: Web Programlamaleventbayindir.net/wp-content/uploads/2013/07/bim206-2015-sunum91.pdf · Veri Tipleri ve Değerleri •İlkel (primitive) tipler veya değerler •Sayılar •Karakter

Ondalıklı Sayıların Uzunluğu (2/3)

• Müşteriden bu miktarı ($10.59675) istemek pratik olmayacaktır

• Noktadan sonra iki basamağa kadar yuvarlayarak $10.60 istemek gerekir

• toFixed metodu bu amaçla aşağıdaki gibi kullanılabilir

var prettyTotal = total. toFixed(2); // 10.60

• toFixed metodunun parametresi ondalıklı sayının noktadan sonra kaç basamağa yuvarlanacağını belirler