Veri Yapıları
Bilgisayar Programalamaya Giriş
Doç. Dr. Melih Gunay
Bilgisayar Mühendisliği Bölümü
18 Kasım 2014
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Ana Hatları
Bu hafta:
I
Temel veri tipleri (primitive data types)
I
Değişken tanımlama ve deger atama
I
Aritmatik işlemler
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Veri yapıları
16 bitlik bir hafıza adresindeki veri : 0000 0000 0110 0111
Bu verinin ne olduğunu onun tipinin ne olduğunu bilmezsek
hesaplayamayız !
I
Eğer short tipinde bir sayı ise: 103
I
Eğer char (character) ise : g
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Temel Veri Yapıları - JAVA
I
byte : 8 bit
I
short : 16 bit
I
int : 32 bit
I
long : 64 bit
I
float : 32 bit
I
double : 64 bit
I
char
I
boolean
1.000.000 için short uygunmudur ?
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Floating Point - Ondalıklı Sayılar
1
3
× 3 = 1 Fakat bilgisayarda 1 olmaz. Çünkü 1/3 =
0.333333333333333333
I
float : 32 bit - (single-precision floating point)
I
double : 64 bit - (double-precision floating point) *(tercih
edilmeli)
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Karacter - char
I
char: ’Y’ ’e’ ’A’
I
char: NewLine TAB fakat bunlar kontrol karakterleridir.
I
String: [’Y’,’e’,’d’,’i’] : karakter dizisidir. "Yedi"
(KARISTIRMAYIN - Primitive Değil)
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Boolean - boolean
I
true
I
false
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Değişkenler - Variables
En küçük bir program bile bazı değerleri geçici olarak saklamak için
hafızada yer kullanır. Örneğin 1 den 10 a kadar sayıları toplayan
programda toplamın en güncel değerinin "sum" değişkeninde
saklanması gibi. Değeri değişebildiği için değişken denmiştir. Her
değişkenin bir adı da vardır. Örneğimizde "sum" değişken adıdır.
sum =
for i
sum
print
0
in range(1, 10):
= sum + i
sum
Not: python da veri tipini tanımlamak gerekmez tipi ilk
atandığı yerde otamatik tanımlanır.
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Topla.java içeriği
public class Topla {
public static void main(String[] args) {
int sum = 2 + 2;
System.out.println("Sonuç="+sum);
}
}
Not: değişkenin veri tipi int olarak atama sırasında
tanımlanmış
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Değişken tanımlama ve değer atama sentaks
I
degiskenTipi degiskenAd;
I
degiskenTipi degiskenAd = ilkDeger;
I
degiskenTipi degiskenAd1, degiskenAd2;
I
degiskenTipi degiskenAd1=ilkDeger1, degiskenAd2=ilkDeger2;
Örnek:
I
int toplam;
I
int toplam = 0;
I
int toplam, carpim;
I
int toplam=0, carpim=1;
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Değişken ismi kuralları
I
isimde boşluk olamaz
toplam Miktarı
I
sayı ile başlıyamaz
I
büyük ve küçük harf farklı algılanır :
toplamMiktarı 6= ToplamMiktarı
I
anahtar kelime olamaz.
I
anlaşılır olması tavsiye edilir
I
küçük harf le başlaması tavsiye edilir : toplamMiktarı
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Değişken ismi kuralları - örnekler
I
int maas, vergi; <– OK
I
long maas-ucreti; <– İzin verilmez
I
short kisiSayısı, odaSayısı <– ; unutulmuş
I
short kişi sayısı <– boşluk olmaz ve Türkçe karakter olmaz
I
double char; <– reserved word. (dilde kullanılan anahtar
kelime)
I
double d1; <– OK ama d1 çok açıklayıcı değil
I
double 8kisi; <– Sayı ile baslıyamaz
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Atama / Yorum / Karışık veri Tipi
class Ucretleme {
public static void main ( String[] args ) {
long
calismaSaati = 40;
double saatUcreti = 10.0, vergiOrani = 0.10;
// Bu satır açılamalar için. Derleyici bunu ihmal eder.
System.out.println("Çalışılan saat: " + calismaSaati );
System.out.println("Odeme : " +
(calismaSaati * saatUcreti) );
System.out.println("Vergi : " // Satır alta inebilir.
+ (calismaSaati * saatUcreti * vergiOranı) );
}
}
Not: Çarpım double olarak hesaplanıp String + ile eklendi.
Parantez bazen gerekmez ama olması hatayı önler.
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Önce Sağ Hesaplanır Sonra Atama Yapılır
class Hesaplama {
public static void main ( String[] args ) {
double kisiSayısı = 5 + 8;
//OK
final double UCRET = 10;
// OK final değişmeyeceği anl
double hesap;
hesap = kisiSayısı * UCRET; // OK
}
}
Not: 1) ilk önce 5 + 8 toplandı sonra 12 kisiSayısı olarak
atandı.
2) Önce hesap tanımlandı sonra kisiSayısı*ucret hesap
değişkenine atandı
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
Expression - İfade (Eşitliğin sağ tarafındaki aritmatik işlem)
I
53; -> OK
I
12 - 5); -> Yanlış
I
x + 34; -> OK
I
x + y; -> OK
I
(12 - 5); -> OK
I
*4; -> Yanlış
I
-4; -> OK
I
-4 * 3; -> OK // Sonuç: -12 [Unary - / + önceliği en
yüksektir.]
I
-2 * 9 - 2 * 3 6= -2 * (9 - 2) * 3
I
1/2 + 1/2 = 0 // Garip değil mi? Çünkü integer kullandı
Bilgisayar
Programalamaya Giriş
1.0/2 + 1/2.0 = 1 // Artık double
kullanılıyor
Doç. Dr.IMelih Gunay Bilgisayar Mühendisliği Bölümü
Veri Yapıları
Aritmatik Operatorler
I
* : çarpma
I
/ : bölme
I
%: kalan
I
+ : toplama
I
- : çıkarma
Önemli Hususlar:
I
Öncelik sırası: [ *, /, % ] > [+, -]
I
x y 6= x * y
I
int sayi = 9/5; // Not: sayi = 1
I
int x = 12 - 5/2 + 3; // Not: x = 13
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Veri Yapıları
% - Mod operatörü - Kalanı gösterir
Örnek:
I
0%5=0
I
1%5=1
I
2%5=2
I
3%5=3
I
4%5=4
I
5%5=0
I
6%5=1
I
7%5=?
Doç. Dr. Melih Gunay Bilgisayar Mühendisliği Bölümü
Bilgisayar Programalamaya Giriş
Download

Ders 7 - Kasim 18