Centeglassered
Kızıltaş Madencisi
- Mesajlar
- 579
- En iyi cevaplar
- 0
- Beğeniler
- 268
- Puanları
- 900
- Ruh hali
Buna devam etmeyeceğim çünkü gereksiz olduğunu düşünüyorum. İnternet'te çok daha güzel binlerce rehber varken boşuna böyle bir şey yapmayacağım. Ama silinmesin belki birinin işine yarar.
Selam gençler! Forumdan bayağı bir uzak kaldım. Yazılılar da bitmişken boş vakitlerimde Java öğreteyim dedim. Yararlı olursa ne mutlu bana!
Öncelikle İngilizce'ye önem vermeniz lazım. Kesin gerek demiyorum fakat kendi kendinize gelişmek istiyorsanız kesinlikle gerek. Tabi ki de ben terimleri Türkçe olarak yazacağım ama İngilizce olarak da bilmenizde fayda var.
Not: Yazdıklarım daha kolay anlaşılsın diye öyküleme yoluna gittim. Kafalar karışmasın. Olayın tam gerçeğini yazmamış olabilirim. Sadece akla yatkın olsun diye böyle yazıyorum.
Selam gençler! Forumdan bayağı bir uzak kaldım. Yazılılar da bitmişken boş vakitlerimde Java öğreteyim dedim. Yararlı olursa ne mutlu bana!
Öncelikle İngilizce'ye önem vermeniz lazım. Kesin gerek demiyorum fakat kendi kendinize gelişmek istiyorsanız kesinlikle gerek. Tabi ki de ben terimleri Türkçe olarak yazacağım ama İngilizce olarak da bilmenizde fayda var.
Not: Yazdıklarım daha kolay anlaşılsın diye öyküleme yoluna gittim. Kafalar karışmasın. Olayın tam gerçeğini yazmamış olabilirim. Sadece akla yatkın olsun diye böyle yazıyorum.
Temelden anlamazsanız ilerde kafanız karışır!
O zaman temelden girelim!
Bilgisayar Programı
Bilgisayarın anlayacağı dilde belli bir komut dizisidir. Bilgisayar yalnızca kendine söyleneni yapar!
Programlama Dili
Bilgisayarın algılayabileceği dillere programlama dili denir. Bilgisayara komut vermek için bu dilleri bilmek gerekir. Programlama dilleri tamamen mantığa dayalıdır, sistemlidir. Çünkü bilgisayarlar insanlar gibi algılayamaz. Bir dil insana ne kadar yakınsa o kadar yüksek seviyelidir ve kolaydır. Bir dil insana ne kadar uzaksa o kadar düşük seviyelidir ve zordur. Fakat düşük seviyeli dilleri bilgisayar daha kolay anlayacağı için onlar daha hızlı ve güçlüdür.
Derleyici
Şimdi biz kodumuzu metin olarak yazıyoruz iyi güzel de bilgisayar metini nasıl komuta çevirecek? Eğer her çalıştığımızda bunu yaparsa programların açılması yıllar alır ve her satır önce komuta çevrileceği için yavaş olur. İşletim sistemleri gibi devasa yapıları hesaba katmıyorum bile. O zaman düz bir metini komutlara çevirecek bir şeye ihtiyacımız var. İşte bu şeylere derleyici diyoruz. Bazı dillerde bu sistem yoktur ve program çalışırken metin komutlara çevrilir. Bu nedenle bu diller daha yavaştır. Yani bir dillin derleme sistemi ile çalışması ona hız kazandırır. Ve derleme sırasında optimizasyon da yapılabilir. Yani aynı işlemi daha hızlı bir şekilde yapmanın yolu varsa o kullanılır.
Şuraya bir göz atın ve görüşürüz!
Bir dakika şuraya da bakın!
O zaman temelden girelim!
Bilgisayar Programı
Bilgisayarın anlayacağı dilde belli bir komut dizisidir. Bilgisayar yalnızca kendine söyleneni yapar!
Programlama Dili
Bilgisayarın algılayabileceği dillere programlama dili denir. Bilgisayara komut vermek için bu dilleri bilmek gerekir. Programlama dilleri tamamen mantığa dayalıdır, sistemlidir. Çünkü bilgisayarlar insanlar gibi algılayamaz. Bir dil insana ne kadar yakınsa o kadar yüksek seviyelidir ve kolaydır. Bir dil insana ne kadar uzaksa o kadar düşük seviyelidir ve zordur. Fakat düşük seviyeli dilleri bilgisayar daha kolay anlayacağı için onlar daha hızlı ve güçlüdür.
Derleyici
Şimdi biz kodumuzu metin olarak yazıyoruz iyi güzel de bilgisayar metini nasıl komuta çevirecek? Eğer her çalıştığımızda bunu yaparsa programların açılması yıllar alır ve her satır önce komuta çevrileceği için yavaş olur. İşletim sistemleri gibi devasa yapıları hesaba katmıyorum bile. O zaman düz bir metini komutlara çevirecek bir şeye ihtiyacımız var. İşte bu şeylere derleyici diyoruz. Bazı dillerde bu sistem yoktur ve program çalışırken metin komutlara çevrilir. Bu nedenle bu diller daha yavaştır. Yani bir dillin derleme sistemi ile çalışması ona hız kazandırır. Ve derleme sırasında optimizasyon da yapılabilir. Yani aynı işlemi daha hızlı bir şekilde yapmanın yolu varsa o kullanılır.
Şuraya bir göz atın ve görüşürüz!
Bir dakika şuraya da bakın!
Sancılı teorik bilgilerle devam! Yazma işini size ve hayal gücünüze bırakıyorum.
Nesne (Object)
Herkes diyor "Java nesneye yönelik bir dildir." iyi güzel de nesne ne? Nesne gerçek bir nesnenin sanal versiyonudur. Ve her nesnenin bir türü bir sınıfı vardır. Şöyle düşünelim köpek bir nesnedir. Peki özellikleri nelerdir? Basit olarak rengi ve adı olsun. Bu özellikleri değişken dediğimiz veri yapılarında saklayacağız. Özellikleri dışında yapabileceği şeyler de fonksiyonlarıdır. Havlamak gibi. Eğer bir fonksiyon bir sınıfın içinde ise buna metot denir. Java da her şey sınıflarda olduğu için bütün fonksiyonlar ayrıca metottur.
Kısa bir özet; bir nesnenin özellikleri değişken, fonksiyonları metottur.
Sınıf (Class)
Tamam nesnenin az çok bir görüntüsü oluştu peki sınıf nedir? Sınıflar nesnelerin iskeleti gibidir. Köpek diye bir sınıf oluşturursunuz daha sonra köpek nesnesinin değişkenlerini ve metotlarını yazarsınız. Daha sonra constructor dediğimiz özel metotlar ile o sınıfın bir nesnesini oluşturursunuz.
Örneklerle her şeyi kavrayacaksınız şimdilik devam edin.
Paket (Package)
Paketler sınıfların gruplanmasıdır. Sınıfların içinde bulunduğu klasörler olarak da düşünebilirsiniz. Eğer aynı isimde iki sınıf varsa bunları paketleri ile ayırırsınız. Bu mantıktan şu çıkar; aynı isimli iki sınıf aynı pakette olamaz.
Mesela "hayvan" adında bir paket oluşturup içine Kedi, Köpek ve Yılan sınıfları koyabilirsiniz.
Nesne (Object)
Herkes diyor "Java nesneye yönelik bir dildir." iyi güzel de nesne ne? Nesne gerçek bir nesnenin sanal versiyonudur. Ve her nesnenin bir türü bir sınıfı vardır. Şöyle düşünelim köpek bir nesnedir. Peki özellikleri nelerdir? Basit olarak rengi ve adı olsun. Bu özellikleri değişken dediğimiz veri yapılarında saklayacağız. Özellikleri dışında yapabileceği şeyler de fonksiyonlarıdır. Havlamak gibi. Eğer bir fonksiyon bir sınıfın içinde ise buna metot denir. Java da her şey sınıflarda olduğu için bütün fonksiyonlar ayrıca metottur.
Kısa bir özet; bir nesnenin özellikleri değişken, fonksiyonları metottur.
Sınıf (Class)
Tamam nesnenin az çok bir görüntüsü oluştu peki sınıf nedir? Sınıflar nesnelerin iskeleti gibidir. Köpek diye bir sınıf oluşturursunuz daha sonra köpek nesnesinin değişkenlerini ve metotlarını yazarsınız. Daha sonra constructor dediğimiz özel metotlar ile o sınıfın bir nesnesini oluşturursunuz.
Örneklerle her şeyi kavrayacaksınız şimdilik devam edin.
Paket (Package)
Paketler sınıfların gruplanmasıdır. Sınıfların içinde bulunduğu klasörler olarak da düşünebilirsiniz. Eğer aynı isimde iki sınıf varsa bunları paketleri ile ayırırsınız. Bu mantıktan şu çıkar; aynı isimli iki sınıf aynı pakette olamaz.
Mesela "hayvan" adında bir paket oluşturup içine Kedi, Köpek ve Yılan sınıfları koyabilirsiniz.
Hadi birinci ve ikinci derste gördüklerimizi kullanalım. Birinci derste verdiğim bağlantılardan -kendilerine teşekkür ediyorum çok güzel açıklamışlar tekerleği yeniden icat etmek istemedim- yüklediğiniz Eclipse programını açın. Arayüzü çok karmaşık gelebilir ama öğrenince bebek oyuncağı gibi.
İlk önce bir workspace isteyecek. Yani bir çalışma alanı. Eclipse sınıfları, paketleri falan bu konumda saklayacak. Ona göre bir yer seçin. Ya da olduğu gibi bırakın o bir yer seçer. Ayrıca birden fazla workspace oluşturabilirsiniz. (File > Switch Workspace) Sınıfların depolanacak neyi var diyebilirsiniz. Sınıflar metin halinde iken "BilmemNe.java" olarak kaydedilirler. Birinci derste bahsettiğimiz derleme işleminden sonra "BilmemNe.class" olarak kaydedilirler. Bu arada Eclipse otomatik olarak derler.
Şimdi gel gelelim projeye. Çalışma alanı seçtikten sonra Eclipse açılmalı ve başlama ekranı gibi bir şey çıkmalı. Uzun zamandır yeni bir workspace oluşturmadığım için ne olduğunu pek hatırlamıyorum ama o ekranı kapatın. Sol tarafta "Package Explorer" olmalı. Ona sağ tıklayıp açılan bağlam menüsünden New > Java Project diyin. Bir kutu çıkacak bu da başta karmaşık gelebilir ama kullandıkça öğrenirsiniz.
Proje oluşturduktan sonra en önemli iki klasör var. Biri src diğeri de bin. src klasöründe .java ile biten kaynak kodları (okunabilir, metin haldeki kodlar). bin klasöründe ise .class uzantılı dosyalar yani derlenmiş (bytecode) bulunur. Tabi biz src ile uğraşacağız. Zaten package expolerer'da bin klasörünü göremezsiniz. src klasörüne sağ tıklatıp açılan bağlam penceresinden New > Class diyerek yeni bir sınıf, New > Package diyerek yeni bir paket oluşturabilirsiniz.
Örnek olarak proje oluşturma ekranında Project Name kutucuğuna "Hayvanat Bahçesi" yazalım ve projeyi oluşturalım. Diğer ayarlara gerek yok. Daha sonra yeni paket oluşturma ekranında Source Folder kutucuğuna "Hayvanat Bahçesi/src" yazın. Name kutucuğuna da "hayvan" yazın. Ve paketi oluşturun. Son olarak sınıf oluşturma penceresinden Source Folder'a "Hayvanat Bahçesi/src", Package'a "hayvan", Name'e de "Kedi" yazın ve sınıfı oluşturun. Aynı şekilde Köpek ve Yılan sınıflarını da oluşturabilirsiniz.
Artık sınıf oluşturabildiğinize göre sonraki bölümde kod yazmaya girebiliriz. Ama bugünlük bu kadar. Umarım yararlı oluyordur.
İlk önce bir workspace isteyecek. Yani bir çalışma alanı. Eclipse sınıfları, paketleri falan bu konumda saklayacak. Ona göre bir yer seçin. Ya da olduğu gibi bırakın o bir yer seçer. Ayrıca birden fazla workspace oluşturabilirsiniz. (File > Switch Workspace) Sınıfların depolanacak neyi var diyebilirsiniz. Sınıflar metin halinde iken "BilmemNe.java" olarak kaydedilirler. Birinci derste bahsettiğimiz derleme işleminden sonra "BilmemNe.class" olarak kaydedilirler. Bu arada Eclipse otomatik olarak derler.
Şimdi gel gelelim projeye. Çalışma alanı seçtikten sonra Eclipse açılmalı ve başlama ekranı gibi bir şey çıkmalı. Uzun zamandır yeni bir workspace oluşturmadığım için ne olduğunu pek hatırlamıyorum ama o ekranı kapatın. Sol tarafta "Package Explorer" olmalı. Ona sağ tıklayıp açılan bağlam menüsünden New > Java Project diyin. Bir kutu çıkacak bu da başta karmaşık gelebilir ama kullandıkça öğrenirsiniz.
Proje oluşturduktan sonra en önemli iki klasör var. Biri src diğeri de bin. src klasöründe .java ile biten kaynak kodları (okunabilir, metin haldeki kodlar). bin klasöründe ise .class uzantılı dosyalar yani derlenmiş (bytecode) bulunur. Tabi biz src ile uğraşacağız. Zaten package expolerer'da bin klasörünü göremezsiniz. src klasörüne sağ tıklatıp açılan bağlam penceresinden New > Class diyerek yeni bir sınıf, New > Package diyerek yeni bir paket oluşturabilirsiniz.
Örnek olarak proje oluşturma ekranında Project Name kutucuğuna "Hayvanat Bahçesi" yazalım ve projeyi oluşturalım. Diğer ayarlara gerek yok. Daha sonra yeni paket oluşturma ekranında Source Folder kutucuğuna "Hayvanat Bahçesi/src" yazın. Name kutucuğuna da "hayvan" yazın. Ve paketi oluşturun. Son olarak sınıf oluşturma penceresinden Source Folder'a "Hayvanat Bahçesi/src", Package'a "hayvan", Name'e de "Kedi" yazın ve sınıfı oluşturun. Aynı şekilde Köpek ve Yılan sınıflarını da oluşturabilirsiniz.
Artık sınıf oluşturabildiğinize göre sonraki bölümde kod yazmaya girebiliriz. Ama bugünlük bu kadar. Umarım yararlı oluyordur.
Komutlar
Metotları ve değişkenleri ikinci derste yazmıştım. Şimdi ise bunları kullanmaya gelelim. Komutlar bir metodun çağırılması (çalıştırılması) veya bir değişkenin değerinin değiştirilmesi olabilir. İlerleyen kısımlarda göreceğiz. Bilmeniz gereken her komuttan sonra ";" (noktalı virgül) işareti kullanılır. Komutların ayrı satırlarda olması gerekmez.
Ya da bir komudun tamamının aynı satırda olması gerekmez. Bu Java'nın whitespace dediğimiz görünmez karakterleri es geçmesi yüzündendir. (Tab, space, enter gibi)
Bloklar
Bloklar bir veya birden fazla komutun toplanması ile oluşur. Bu komutlar "{}" (küme parantezi) arasına yazılır. Bir blok içinde oluşturulan nesneler blok sonunda bellekten silinir. Yani yok olur.
Metotları ve değişkenleri ikinci derste yazmıştım. Şimdi ise bunları kullanmaya gelelim. Komutlar bir metodun çağırılması (çalıştırılması) veya bir değişkenin değerinin değiştirilmesi olabilir. İlerleyen kısımlarda göreceğiz. Bilmeniz gereken her komuttan sonra ";" (noktalı virgül) işareti kullanılır. Komutların ayrı satırlarda olması gerekmez.
Ya da bir komudun tamamının aynı satırda olması gerekmez. Bu Java'nın whitespace dediğimiz görünmez karakterleri es geçmesi yüzündendir. (Tab, space, enter gibi)
PHP:
// Örnek 1
komut1;
komut2;
// Örnek 2
komut1; komut2;
// Örnek 3
kom
ut1;
Bloklar
Bloklar bir veya birden fazla komutun toplanması ile oluşur. Bu komutlar "{}" (küme parantezi) arasına yazılır. Bir blok içinde oluşturulan nesneler blok sonunda bellekten silinir. Yani yok olur.
PHP:
// Örnek 4
{ // bloğun başı
komut1;
komut2;
} // bloğun sonu
// Örnek 5
{ komut3; }
Değişkenler
Bir veri tutan yapılardır diyebiliriz. İkiye ayrılırlar Temel Türler ve Nesneler. Nesnelerden zaten bahsetmiştik. Oluşturulmalarına da sonra gireceğiz.
Temel (İlkel) Türler
Bu türler bir nesneden daha ilkeldirler. Metotları ve değişkenleri olmayan nesneler gibi düşünebilirsiniz. Bir sayı veya karakter mesela. Aslında her birinin sınıfı var fakat onlar ileri düzey şeyler. Örnek olarak bir tam sayıyı verebiliriz. Tam sayının bir metodu yok. Fakat Tam Sayı sınıfında bir metini sayıya çeviren bir metot olabilir.
Şuradan ikilik sisteme bakın.
Gördüğünüz gibi ikilik sistemde yalnızca iki rakam kullanarak veri saklayabiliyoruz. İşte her 1 ve 0'a biz bit diyoruz.
bayt = 8 bit
kilobayt = 1024 bayt
...
Bellekteki veriler de ikilik sistemde saklanır. Yani bütün değişkenlerimizin belli bir boyutu vardır. Ayrıca bir değişkenin oluşturulması komutu şöyledir;
Not: Değişken adı bir harfle başlar ve daha sonra rakam kullanılabilir. Örnek; d1, d2, d3
Not: Java büyük harfi ve küçük harfi ayrı tutar. Aynı adla iki değişken oluşturamazsınız. Yani "değişken" ve "değişken" hata verir. Fakat "değişken" ve "Değişken" normaldir.
Not: Java'da bütün tam sayıların + veya - oldukları da depolanır. (signed) Ve Java two's complement integer sistemini kullanır. Buradan (İngilizce) bakabilirsiniz.
Not: Java'da kayan nokta sayıları (floating point numbers) IEEE 754 floating point standardındadır. Buradan bakabilirsiniz.
Anahtar Kelimesi (Adı): Açıklaması
byte: 8-bit işaretli (signed) tam sayı two's complement integer
short: 16-bit işaretli (signed) tam sayı two's complement integer
int: 32-bit işaretli (signed) tam sayı two's complement integer
long: 64-bit işaretli (signed) tam sayı two's complement integer
float: 32-bit işaretli (signed) gerçel sayı single-precision IEEE 754 floating point
double: 64-bit işaretli (signed) gerçel sayı double-precision IEEE 754 floating point
boolean: 1-bit bilgi koşul true-false
char: 16-bit karakter Unicode
Ve merak etmeyin zevkli yerler gelecek... Sanırım
Bir veri tutan yapılardır diyebiliriz. İkiye ayrılırlar Temel Türler ve Nesneler. Nesnelerden zaten bahsetmiştik. Oluşturulmalarına da sonra gireceğiz.
Temel (İlkel) Türler
Bu türler bir nesneden daha ilkeldirler. Metotları ve değişkenleri olmayan nesneler gibi düşünebilirsiniz. Bir sayı veya karakter mesela. Aslında her birinin sınıfı var fakat onlar ileri düzey şeyler. Örnek olarak bir tam sayıyı verebiliriz. Tam sayının bir metodu yok. Fakat Tam Sayı sınıfında bir metini sayıya çeviren bir metot olabilir.
Şuradan ikilik sisteme bakın.
Gördüğünüz gibi ikilik sistemde yalnızca iki rakam kullanarak veri saklayabiliyoruz. İşte her 1 ve 0'a biz bit diyoruz.
bayt = 8 bit
kilobayt = 1024 bayt
...
Bellekteki veriler de ikilik sistemde saklanır. Yani bütün değişkenlerimizin belli bir boyutu vardır. Ayrıca bir değişkenin oluşturulması komutu şöyledir;
PHP:
// Örnek 1 - Değişken oluşturma
anahtarKelime değişkenAdı;
// Örnek 2 - Değer atama
değişkenAdı = değişkenDeğeri;
// Örnek 3 - İkisi bir arada
anahtarKelime değişkenAdı = değişkenDeğeri;
// Örnek 4 - Birden Fazla Değişken
anahtarKelime değ1, değ2, değ3;
// Örnek 5 - Karma
anahtarKelime değ1 = değer1, değ2, değ3 = değer2;
Not: Değişken adı bir harfle başlar ve daha sonra rakam kullanılabilir. Örnek; d1, d2, d3
Not: Java büyük harfi ve küçük harfi ayrı tutar. Aynı adla iki değişken oluşturamazsınız. Yani "değişken" ve "değişken" hata verir. Fakat "değişken" ve "Değişken" normaldir.
Not: Java'da bütün tam sayıların + veya - oldukları da depolanır. (signed) Ve Java two's complement integer sistemini kullanır. Buradan (İngilizce) bakabilirsiniz.
Not: Java'da kayan nokta sayıları (floating point numbers) IEEE 754 floating point standardındadır. Buradan bakabilirsiniz.
Anahtar Kelimesi (Adı): Açıklaması
byte: 8-bit işaretli (signed) tam sayı two's complement integer
short: 16-bit işaretli (signed) tam sayı two's complement integer
int: 32-bit işaretli (signed) tam sayı two's complement integer
long: 64-bit işaretli (signed) tam sayı two's complement integer
float: 32-bit işaretli (signed) gerçel sayı single-precision IEEE 754 floating point
double: 64-bit işaretli (signed) gerçel sayı double-precision IEEE 754 floating point
boolean: 1-bit bilgi koşul true-false
char: 16-bit karakter Unicode
PHP:
// Örnek 6 - Örnek 1'den hatırlayın değişken oluşturmanın kalıbı var.
int yaş = 15;
char harf1 = 'C', harf2 = 'E', harf3 = 'M';
boolean erkek = true;
double kiloBölüBoy = 73 / 175;
Ve merak etmeyin zevkli yerler gelecek... Sanırım
Operatörler
Şimdi size operatörlerden bahsedeceğim. Veriyi düzenleyen bir işlem gibi düşünebilirsin. Bir sayıya başka bir sayıyı eklemek gibi. Operatörleri beşe ayıracağım; Sayısal Operatörler, Koşulsal Operatörler, Metinsel Operatörler, Atama Operatörleri ve Genel Operatörler. (Kağıt üzerinde böyle bir şey yok. Ben oluşturdum. Orijinalı: Operators)
Sayısal Operatörler
Sayısal değişken türlerinde kullanılan operatörler. Bu türler küçükten büyüğe; byte, short, int, long, float, double. Unutmayın sayısal bir işlem yaparken iki değer varsa sonucun türü bu değerlerden büyük olan türe göredir. Yani bir float ile bir double toplanırsa sonuç double olur.
+ Toplama Operatörü: İki sayıyı toplar.
- Çıkarma Operatörü: İki sayıyı çıkarır.
- Aksi Operatörü: Bir sayıyı pozitifse negatife, negatifse pozitife, sıfır ise sıfıra çevirir. Ya da -1 ile çarpar.
* Çarpma Operatörü: İki sayıyı çarpar.
/ Bölme Operatörü: İki sayıyı böler.
% Kalan Operatörü: İki sayının kalanını verir.
++ Arttırma Operatörü: Bir sayıyı 1 arttırır ve değerini verir. Eğer öne koyulursa arttırıp değeri verir, eğer ardına koyulursa değeri verip arttırır.
-- Azaltma Operatörü: Bir sayıyı 1 azaltır ve değerini verir. Eğer önüne koyulursa azaltıp değeri verir, eğer ardına koyulursa değeri verip azaltır.
- Bit Çevirme Operatörü: Bir sayının bitlerinden 0 olanı 1, 1 olanı 0 yapar.
<< Bit Sola Kaydırma Operatörü (Signed): Bir sayının bitlerini diğer sayı kadar sola kaydırır. Sağdaki hanelere 0 ekler.
>> Bit Sağa Kaydırma Operatörü (Signed): Bir sayının bitlerini sağa kaydırır. En sağdaki sayı yok olur. En sola en soldaki sayı tekrar eklenir.
>>> Bit Sağa Kaydırma Operatörü (Unsigned): Bir sayının bitlerini sağa kaydırır. En sağdaki sayı yok olur. En sola 0 eklenir.
& Bit VE Operatörü: Her bit ayrı ayrı karşılaştırılır. İki tarafın biti de 1 ise sonuç 1 değilse 0 dır.
| Bit VEYA Operatörü (Kapsayıcı VEYA): Her bit ayrı ayrı karşılaştırılır. İki tarafın bitlerinden herhangi biri 1 ise sonuç 1 değilse 0 dır.
^ Bit Özel VEYA Operatörü: Her bit ayrı ayrı karşılaştırılır. İki tarafın bitleri farklı ise sonuç 1 aynı ise sonuç 0 dır.
Devamı gelecek... Şimdilik yemek yeyip yatacağım. Hayırlı Ramazanlar.
Ayrıca Ders 5'deki bir hatayı düzelttim. Aslında büyük bir hataydı.
Şimdi size operatörlerden bahsedeceğim. Veriyi düzenleyen bir işlem gibi düşünebilirsin. Bir sayıya başka bir sayıyı eklemek gibi. Operatörleri beşe ayıracağım; Sayısal Operatörler, Koşulsal Operatörler, Metinsel Operatörler, Atama Operatörleri ve Genel Operatörler. (Kağıt üzerinde böyle bir şey yok. Ben oluşturdum. Orijinalı: Operators)
Sayısal Operatörler
Sayısal değişken türlerinde kullanılan operatörler. Bu türler küçükten büyüğe; byte, short, int, long, float, double. Unutmayın sayısal bir işlem yaparken iki değer varsa sonucun türü bu değerlerden büyük olan türe göredir. Yani bir float ile bir double toplanırsa sonuç double olur.
+ Toplama Operatörü: İki sayıyı toplar.
- Çıkarma Operatörü: İki sayıyı çıkarır.
- Aksi Operatörü: Bir sayıyı pozitifse negatife, negatifse pozitife, sıfır ise sıfıra çevirir. Ya da -1 ile çarpar.
* Çarpma Operatörü: İki sayıyı çarpar.
/ Bölme Operatörü: İki sayıyı böler.
% Kalan Operatörü: İki sayının kalanını verir.
++ Arttırma Operatörü: Bir sayıyı 1 arttırır ve değerini verir. Eğer öne koyulursa arttırıp değeri verir, eğer ardına koyulursa değeri verip arttırır.
-- Azaltma Operatörü: Bir sayıyı 1 azaltır ve değerini verir. Eğer önüne koyulursa azaltıp değeri verir, eğer ardına koyulursa değeri verip azaltır.
- Bit Çevirme Operatörü: Bir sayının bitlerinden 0 olanı 1, 1 olanı 0 yapar.
<< Bit Sola Kaydırma Operatörü (Signed): Bir sayının bitlerini diğer sayı kadar sola kaydırır. Sağdaki hanelere 0 ekler.
>> Bit Sağa Kaydırma Operatörü (Signed): Bir sayının bitlerini sağa kaydırır. En sağdaki sayı yok olur. En sola en soldaki sayı tekrar eklenir.
>>> Bit Sağa Kaydırma Operatörü (Unsigned): Bir sayının bitlerini sağa kaydırır. En sağdaki sayı yok olur. En sola 0 eklenir.
& Bit VE Operatörü: Her bit ayrı ayrı karşılaştırılır. İki tarafın biti de 1 ise sonuç 1 değilse 0 dır.
| Bit VEYA Operatörü (Kapsayıcı VEYA): Her bit ayrı ayrı karşılaştırılır. İki tarafın bitlerinden herhangi biri 1 ise sonuç 1 değilse 0 dır.
^ Bit Özel VEYA Operatörü: Her bit ayrı ayrı karşılaştırılır. İki tarafın bitleri farklı ise sonuç 1 aynı ise sonuç 0 dır.
PHP:
// Toplama Operatörü
int sayi1 = 3, sayi2 = 4;
int sonuc = sayi1 + sayi2; // sonuc = 7
// Çıkarma Operatörü
sonuc = sayi1 - sayi2; // sonuc = -1
// Aksi Operatörü
sonuc = -sayi1; // sonuc = -3
// Çarpma Operatörü
sonuc = sayi1 * sayi2; // sonuc = 12
// Bölme Operatörü
sonuc = sayi1 / sayi2; // sonuc = 0
// Kalan Operatörü
sonuc = sayi1 % sayi2; // sonuc = 3
// Arttırma Operatörü
sayi1++; // sayi1 = 4
sonuc = sayi1++; // sonuc = 4 sayi1 = 5
sonuc = ++sayi1; // sonuc = 6 sayi1 = 6
// Azaltma Operatörü
sayi1--; // sayi1 = 5
sonuc = sayi1--; // sonuc = 5 sayi1 = 4
sonuc = --sayi1; // sonuc = 3 sayi1 = 3
// Bit Çevirme Operatörü
sonuc = -sayi1;
// sayi1 = 3 = 00000000 00000000 00000000 00000011
// sonuc = -4 = 11111111 11111111 11111111 11111100
// Bit Sola Kaydırma Operatörü
sonuc = sayi1 << 3;
// sayi1 = 3 = 00000000 00000000 00000000 00000011
// sonuc = 24 = 00000000 00000000 00000000 00011000
// Bit Sağa Kaydırma Operatörü (Signed)
sayi1 = -24;
sonuc = sayi1 >> 3;
// sayi1 = -24 = 11111111 11111111 11111111 11101000
// sonuc = -3 = 11111111 11111111 11111111 11111101
// Bit Sağa Kaydırma Operatörü (Unsigned)
sonuc = sayi1 >>> 3;
// sayi1 = -24 = 11111111 11111111 11111111 11101000
// sonuc = 536870909 = 00011111 11111111 11111111 11111101
// Bit VE Operatörü
int sayi3 = 12, sayi4 = 2;
sonuc = sayi3 & sayi4;
// sayi3 = 12 = 00000000 00000000 00000000 00000110
// sayi4 = 2 = 00000000 00000000 00000000 00000010
// sonuc = 2 = 00000000 00000000 00000000 00000010
// Bit Kapsayıcı VEYA Operatörü
sayi4 = 1;
sonuc = sayi3 | sayi4;
// sayi3 = 12 = 00000000 00000000 00000000 00000110
// sayi4 = 1 = 00000000 00000000 00000000 00000001
// sonuc = 13 = 00000000 00000000 00000000 00000111
// Bit Özel VEYA Operatörü
sayi4 = 8;
sonuc = sayi3 ^ sayi4;
// sayi3 = 12 = 00000000 00000000 00000000 00000110
// sayi4 = 8 = 00000000 00000000 00000000 00000100
// sonuc = 4 = 00000000 00000000 00000000 00000010
Devamı gelecek... Şimdilik yemek yeyip yatacağım. Hayırlı Ramazanlar.
Ayrıca Ders 5'deki bir hatayı düzelttim. Aslında büyük bir hataydı.
Son düzenleme: