3_BilgisayarProgramlamannTemelleri_I-1.pdf
Document Details
Uploaded by AdvancedSugilite2489
OSTİM Teknik Üniversitesi
Dr.Şahin YAŞAR
Tags
Summary
This document is a set of lecture notes on computer programming, specifically focusing on Java variables and data types. The content covers primitive and reference data types, variable declaration, and concepts like static and instance variables. It also details topics like data type conversions and includes example programs and exercises as well as explanations related to the topic.
Full Transcript
YÖNETİM BİLİŞİM SİSTEMLERİ YBS111 – Bilgisayar ve Programlamanın Temelleri-I DEĞİŞKENLER VE VERİ TİPLERİ Dr.Şahin YAŞAR VERİ TİPLERİ İlkel Tipler: Bunlar Java'daki en temel veri tipleridir ve nesne değildir. Bunlar: – int: tam sayıları...
YÖNETİM BİLİŞİM SİSTEMLERİ YBS111 – Bilgisayar ve Programlamanın Temelleri-I DEĞİŞKENLER VE VERİ TİPLERİ Dr.Şahin YAŞAR VERİ TİPLERİ İlkel Tipler: Bunlar Java'daki en temel veri tipleridir ve nesne değildir. Bunlar: – int: tam sayıları saklar. (örneğin, int yas = 25;) – long: uzun tamsayıları saklar. (örneğin, long nufus = 7000000000L;) – short: kısa tamsayıları saklar. (örneğin, short sicaklik = 100;) – byte: tek baytlık tamsayıları saklar. (örneğin, byte seviye = 10;) – float: double değerinden daha az hassasiyete sahip kayan noktalı sayıları saklar (örn. float kilo = 60.5f;) – double: ondalık sayıları saklar (örneğin, double fiyat = 199.99;) – boolean: doğru veya yanlış değerleri depolar. (örneğin, boolean isValid = true;) – char: tek bir karakter saklar. (örneğin, char not = 'A';) 10/15/2024 2 Dr. Şahin YAŞAR VERİ TİPLERİ Referans Türleri: Bu türler nesnelere başvurur. Bunlar: – String: karakter dizilerini depolar (örneğin, String isim = “Mehmet”;) – Diziler: Aynı türdeki öğelerin koleksiyonları. (örneğin, int[] numbers = {1, 2, 3};) – Sınıflar/nesneler: yerleşik veya kullanıcı tanımlı veri türleri (örneğin, Kisi kisi=new Kisi();). 10/15/2024 3 Dr. Şahin YAŞAR Veri türü, değişkende saklayabileceğiniz değerin türünü belirtir. byte, short ve char örtük olarak int türüne dönüştürülür. Java'da float sayılar varsayılan olarak double olarak değerlendirilir, bu nedenle kodlamada float yerine double kullanabilirsiniz. 10/15/2024 4 10/15/2024 Dr. Şahin YAŞAR 4 VERİ TİPİ KARŞILAŞTIRMASI İlkel Tipler Referans Tipler gerçek verileri bellekte tutar, referans verisini bellekte tutar Java'da önceden tanımlıdır, String dışında önceden tanımlı değildir. ilk harf geleneksel olarak küçük harftir, ilk harf geleneksel olarak büyük harftir, boyutu veri tipine göre değişir, tümünün varsayılan boyutu 8 bayttır, yöntem çağrılmasına izin vermez, yöntem çağrılmasına izin verir, null değer kabul etmez ancak her zaman bir null değerini kabul eder. değere sahiptir. 10/15/2024 10/15/2024 Dr. Şahin YAŞAR 5 DEĞİŞKENLER Verileri saklamak veya verilere başvurmak için bellekte adlandırılmış konum – Boş bir kutuyu andırır – Bir değişkenin veri türü içeriğini belirler. – Kodun yeniden kullanılabilirliğini sağlar oku değiştir 10/15/2024 6 Dr. Şahin YAŞAR DEĞİŞKEN BİLDİRME Bir değişken bildirmenin sözdizimi: [=] [başlangıç değeri]; – Açı parantezi < > içindeki değerler zorunludur. – Köşeli parantez [ ] içindeki değerler isteğe bağlıdır. Bir tamsayı değişken bildirimi: – Tür bildirim hatası: tür-değer uyumluluğu – İsimlendirme tanımlayıcısı: değişken adı amacına atıfta bulunur – Statik başlatma: 10, ‘C’, … gibi gerçek/sabit değerlerle başlatma – Dinamik başlatma: çalışma zamanı sırasında başlatma (örn. x = a + b) 10/15/2024 7 Dr. Şahin YAŞAR Alıştırma 1: Değişken Bildirme Değişken adları ve bunlara karşılık gelen değerler aşağıda verilmiştir. Bunları uyumlu veri tipleriyle bildirebilir misiniz? – kimsinSen: “Ben bir öğrenciyim” – yas: 24 – isYoung: true – odenek: 700.25 10/15/2024 8 Dr. Şahin YAŞAR DEĞİŞKEN TÜRLERİ Bir değişkenden önce static anahtar sözcüğünün konumu ve kullanımı değişken türünü belirtir. Üç tür değişken vardır: Sınıf (static) değişkenleri – Bir sınıfın içinde ancak static anahtar sözcüğü ile tüm kurucuların ve yöntemlerin dışında. – Sınıf bellekte olduğu sürece canlıdır Örnek (instance) değişkenler – Bir sınıfın içinde ancak static anahtar sözcüğü olmayan tüm kurucuların ve yöntemlerin dışında. – Bir nesne bellekteyken canlı Yerel değişkenler – Bir sınıfın içinde ancak bir yöntem veya kurucu bloğu içinde – Kontrol bloktan çıkana kadar canlı 10/15/2024 9 Dr. Şahin YAŞAR DEĞİŞKEN TÜRLERİ ÖRNEĞİ class VariableTypes { static int result; // sınıf/statik değişkenler int x, y; // instance değişkenler void add(int a, int b){//a ve b yerel değişkenler x = a; y = b; int sum = x+y; //sum yerel bir değişken System.out.println("Sum = "+sum); } public static void main(String[] args{ VariableTypes obj = new VariableTypes(); obj.add(10, 20); } } 10/15/2024 10 Dr. Şahin YAŞAR Alıştırma 2: Değişkenleri Uygun Şekilde Yerleştirme Aşağıdaki önceden tanımlanmış class Student { //class and değişkenleri verilen sınıfın instance variables uygun konumuna yerleştirebilir misiniz? – static String major = “YBS”; – int studentID = 202435; void calculateGrade(){ – double vize = 83.5; //local variables – double final = 70.5; return grade – double not = (vize + final ) / 2 } } 10/15/2024 11 Dr. Şahin YAŞAR DEĞİŞKENLERİN KAPSAMI { } bir sınıfın kapsamını/gövdesini, sınıf üyelerini ve if, switch, while, for gibi deyimleri işaretler. – Değişkenlerin kapsamı, içinde bildirildikleri { } tarafından belirlenir Parametre olarak tanımlanan veya yöntemlerde bildirilen değişkenlere yerel değişkenler denir. – Yerel değişkenlerden önce erişim değiştiricileri ve this anahtar sözcüğünü kullanmayız. 10/15/2024 12 Dr. Şahin YAŞAR DEĞİŞKEN KAPSAMI ÖRNEĞİ public class Employee { static int companyID; // Sınıf değişkeni String employeeName; // Örnek değişken int employeeAge; // Örnek değişken public void printSalary(double salary) { int tax = 0.15; // Yerel değişken System.out.println(tax * salary); } } tax değişkeni printSalary yöntemi içinde bildirildiği için, yalnızca printSalary içinde kullanılabilir. Aynı durum salary parametresi için de geçerlidir. 10/15/2024 13 Dr. Şahin YAŞAR Alıştırma 3: Değişken Kapsamı Kapsamlarını tanımlamak için verilen sınıftaki değişkenlere tek satırlık bir yorum ekleyebilir misiniz? class Kopek{ String ad; int yas; int kilo; public void yazKopekIsmi(int id){ String nickname = "Karabas” System.out.println(”Kopegin lakabi: " + nickname); System.out.println(" Kopegin ismi " + name); } } 10/15/2024 14 Dr. Şahin YAŞAR STRING NESNELERİ String, indekslenmiş karakterlerden oluşan bir koleksiyondur. – Bir String nesnesini iki şekilde tanımlayabiliriz: String greeting = "Merhaba Dunya"; // string literal String merhaba = new String("Merhaba Dunya"); // bir string nesnesi Bir String'deki kaçış dizisi – \” , \\ , \n , ve \t + dize birleştirme için – İki dizeyi birleştirmek için artı (+) işaretini kullanırız. 10/15/2024 15 Dr. Şahin YAŞAR STRING KULLANIM ÖRNEĞİ Kaçış dizisi örnekleri: System.out.println("\"Merhaba Dunya\""); // Çıktı: "Merhaba Dunya" System.out.println(" Bu ters eğik çizgi sembolüdür: \\"); //Çıktı: Bu ters eğik çizgi sembolüdür: \ + Birleştirme örneği: String username = "Kaan"; System.out.println("Hosgeldin " + username); // Çıktı: Hosgeldin Kaan 10/15/2024 16 Dr. Şahin YAŞAR final ANAHTAR KELİMESİ Değiştirilemez değişkenleri tanımlayın. Yani, sabit değişkenleri tanımlamak için final anahtar sözcüğünü kullanırız. – Final anahtar sözcüğü bir değişkene şu şekilde eklenir; final double pi = 3.14; pi = 4.25; //ERROR – son değişken pi'ye bir değer atanamaz 10/15/2024 17 Dr. Şahin YAŞAR Alıştırma 4: final Anahtar Kelimesini Kullanma Sabit değeri 2003 olan dogumTarihi adında bir değişken tanımlayabilir misiniz? 10/15/2024 18 Dr. Şahin YAŞAR TÜR DÖNÜŞÜMÜ YBS111- BİLGİSAYAR VE PROGRAMLAMANIN TEMELLERİ 10/15/2024 Dr. Şahin YAŞAR 19 TÜR DÖNÜŞÜMÜ Bir veri türünü başka bir veri türüne dönüştürme işlemi. Otomatik ve manuel olarak yapılır – Derleyici, veri kaybına neden olmayan otomatik dönüşümler gerçekleştirir. – Programcılar veri kaybına neden olan manuel dönüşümler gerçekleştirir. Dönüştürmenin kullanılacağı zamanlar: – farklı veri türleri üzerinde işlem gerçekleştirirken – bir veri türündeki değeri, farklı bir veri türüne atarken – bir yöntemden uygun bir veri türünü döndürürken 10/15/2024 20 Dr. Şahin YAŞAR SAYISAL TÜRLER ARASINDA DÖNÜŞTÜRME Java'daki boolean veri türleri hariç tüm ilkel veri türleri sayısaldır. Başlıca dönüştürme kategorileri: Sayısal Tip Çevrimi Genişletme / Örtülü Daraltma/Açık Dönüştürme veya Dönüştürme veya Zorlama Döküm 10/15/2024 21 Dr. Şahin YAŞAR GENİŞLETEN DÖNÜŞÜM VEYA ZORLAMA Daha küçük veri tipi daha büyük bir veri tipine dönüştürülür. Uyumlu dönüştürme modeli: – byte->short->char->int->long->float->double Veri kaybı OLMADIĞI için otomatik olarak gerçekleşir. public class TypeConversion { public static void main(String[] args) { int intNum = 5; double convertIntTodouble = intNum;//örtük dönüşüm System.out.println("donusumden once: "+intNum); //intNum = 5 // çıktı: donuşumden once : 5 System.out.println("donusumden sonra : "+ convertIntTodouble); //çıktı: donuşumden sonra : 5.0 } } 10/15/2024 22 Dr. Şahin YAŞAR DARALTAN DÖNÜŞTÜRME VEYA DÖKÜM Daha büyük veri tipi daha küçük bir veri tipine dönüştürülür. Uyumlu dönüştürme modeli: – double->float->long->int->char->short->byte kesirli veri kaybı nedeniyle manueldir. Sözdizimi: – degiskenIsmi = () deger; Örnek: – double mySaving = 200.45; – int money = (int)mySaving; 10/15/2024 23 Dr. Şahin YAŞAR AÇIK TİP DÖNÜŞÜMÜ ÖRNEĞİ public class TypeConversion { public static void main(String[] args) { double num= 10.25; int castedNum = (int)num;//açık dönüşüm System.out.println("before casting: "+num); //çıktı: before casting: 10.25 System.out.println("after casting: "+castedNum); //çıktı: after conversion: 10 } } 10/15/2024 24 Dr. Şahin YAŞAR Alıştırma 5: Tip Dönüşümü Aşağıdaki değişkeni intSaving adlı tamsayı değişkene dönüştürebilir misiniz? – double dblSaving = 100.25; – İpucu: (veri tipi) castedVariable'ı kullanın. 10/15/2024 25 Dr. Şahin YAŞAR İFADELERDE TÜR YÜKSELTME Sayısal tür dönüşümleri ifadelerde örtük/otomatik olarak gerçekleşir. Java'da ifadeler için tip yükseltme kuralları: – Tüm char, short ve byte değerleri otomatik olarak int türüne yükseltilir. – dönüştürme her zaman en büyük veri türüne yükseltilir. Örnek: sonuç ifadesindeki en büyük işlenen double'dır, bu nedenle nihai değer double'dır. class TypePromotion{ public static void main(String[] args) { byte b = 12; short s = 6; char c = 'd'; // d = 100 value in ASCII code int i = 64000; long l = 200; float f = 2.50f; double d = 1.500; double result = (b / s)-(i / c)+(l * f)+(d * s);// 2-640+500.0+9.0 = -129.0 System.out.println("Result: "+ result); //Result: -129.0 } } 10/15/2024 26 Dr. Şahin YAŞAR SARMALAYICI SINIFLAR Sarmalayıcı sınıflar ilkel veri Primitives Wrapper Classes türlerini (int, boolean, vb.) nesne byte Byte olarak kullanır. short Short Sarmalayıcı sınıflar, ilgili ilkel veri char Character türlerini sarar ve bunlarla çalışmak int Integer için ek yöntemler sağlar. long Long Sayısal ve string veri tipleri float Float arasında dönüşüm gerçekleştirmek double Double için static metot sarmalayıcı boolean Boolean sınıflarını kullanırız. 10/15/2024 27 Dr. Şahin YAŞAR OTOMATİK KUTULAMA VE KUTUDAN ÇIKARMA İlkel türlerden eşdeğer sarmalayıcı sınıf türüne otomatik dönüşüm otomatik kutulamadır (autoboxing) ve tam tersi kutudan (unboxing) çıkarmadır. Örneğin: public class WrapperExample1{ public static void main(String args[]){ int intNum1 = 20; Integer intObj1 = intNum1; //autoboxing, derleyici otomatik/ içsel olarak ilkel türden Tamsayı Nesnesine dönüştürür. Integer intObj2 = Integer.valueOf(intNum1); //autoboxing, derleyici ilkel türü açık bir şekilde Tamsayı Nesnesine dönüştürür int intNum2 = intObj1; //unboxing, derleyici nesneyi örtük olarak ilkel türe dönüştürür System.out.println(intNum1+" "intNum2+" "+intObj1+" "+intObj2 ); //Çıktı: 20 20 20 20 } } 10/15/2024 28 Dr. Şahin YAŞAR Alıştırma 6: Otomatik Kutulama ve Kutudan Çıkarma Aşağıdaki değişkenlere otomatik kutulama veya kutudan çıkarma şeklinde tek satırlık yorumlar ekleyebilir misiniz? – double dblSaving = 100.25; // – Double mySaving = dblSaving; // – Integer age = 28; // – int myAge = age: // 10/15/2024 29 Dr. Şahin YAŞAR SAYISAL TÜRLERİ DİZELERE DÖNÜŞTÜRME (1) Sarmalayıcı Sınıflar Tarafından: Sarmalayıcı sınıfların.toString() fonksiyonu ile sayısal tipleri, dizelere dönüştürürüz. Söz dizimi: WrapperClassName.toString(sayisalDegisken) wrapperClassObj.toString() Örnek: double dblNum = 20.3; String strNum = Double.toString(dblNum);//strNum şimdi “20.3” değerine sahiptir Double dblObj = 25.5; String strNum = dblObj.toString(); // strNum şimdi “25.5” değerine sahiptir 10/15/2024 30 Dr. Şahin YAŞAR BİRLEŞTİRMEYLE OTOMATİK DÖNÜŞÜM Java derleyicisi, sayısal değeri aşağıdaki gibi bir dize (string) ile birleştirildiğinde (+) sayısal değeri otomatik olarak bir dize değerine dönüştürür: // Bir tamsayıyı otomatik olarak dizeye dönüştürme int intNum = 20; String strNum = "" + intNum; // strNum artık “20” değerine sahiptir 10/15/2024 31 Dr. Şahin YAŞAR SAYISAL TÜRLERİ DİZELERE DÖNÜŞTÜRME (2) String.valueOf(): Sayısal türleri (double, float, long, int, short ve byte) dizelere (stringe) dönüştürür. Sözdizimi: String.valueOf(value) public class StringValuOfExamples { public static void main(String[] args) { //Bir String ile bir double birleştirilmesi double num = 20.11; String str = String.valueOf(num) + 22; System.out.println(str); // Çıktı: 20.1122 //boolean bağımsız değişkeninin String gösterimi boolean isYoung = true; str = String.valueOf(isYoung); System.out.println(str); // Çıktı: true }} 32 Dr. Şahin YAŞAR 10/15/2024 Alıştırma 7: Sayıları Dizelere Dönüştürme Aşağıdaki değişkenleri uygun yöntemleri kullanarak string tipi değişkenlere dönüştürebilir misiniz? – double saving = 100.25;//String.valueOf(saving) kullan – Double cash = 125.40;//cash.toString() kullan – Integer age = 28; //age.toString() kullan – boolean isYoung = true://Boolean.toString(isYoung) kullan 10/15/2024 33 Dr. Şahin YAŞAR DİZELERİ SAYISAL TÜRLERE DÖNÜŞTÜRME Sarmalayıcı sınıfların static.parseXxx() ve.valueOf() işlevleri dize (stringi) alır ve eşdeğer sayısal değerlere döndürür. Sözdizimi: WrapperClass.parseXxx(stringValue); WrapperClass.valueOf(stringValue); Örnek: String strNum = "20"; int intNum = Integer.parseInt(strNum); // intNum artık tamsayı 20 float fltNum = Float.parseFloat(strNum); // fltNum şimdi float 20f double dblNum = Double.valueOf(strNum); // dblNum artık double 20.0 10/15/2024 34 Dr. Şahin YAŞAR Alıştırma 8: Dizeleri Sayılara Dönüştürme Aşağıdaki string tipi değişkeni uygun yöntemleri kullanarak integer, double ve char'a dönüştürebilir misiniz? – String price = “67”; – double cash = //valueOf(price) kullan – int money = //parseInt(price) kullan – char letter = //(char)money kullan 10/15/2024 35 Dr. Şahin YAŞAR DEĞİŞKENLERİN GÖZDEN GEÇİRİLMESİ Bugünkü derste öğrendiklerimiz: – İlkel ve referans veri türleri – Bir değişken nasıl bildirilir – Bir değişken statik ve dinamik olarak nasıl başlatılır. – Veri türü uyumluluğunu kontrol eden statik yazım – String (Dize) nesnesi Kaçış dizisi ( \ ) Artı karakteri ( + ) ile dize birleştirme – final anahtar kelimesinin kullanımı. 10/15/2024 36 Dr. Şahin YAŞAR TÜR DÖNÜŞÜMÜNÜN GÖZDEN GEÇİRİLMESİ (1) Bir veri tipini başka bir veri tipine dönüştürmeye tür dönüştürme veya tür atama denir. Derleyici, veri kaybı olmadığında otomatik olarak örtük/genişleyen tip dönüştürme işlemi yapar. Açık/daraltıcı tür dönüştürme, manuel müdahale gerektirir ve veri kaybı olasılığı olduğunda kullanılır. Dönüştürme, farklı veri türleri arasında uyumluluk sağlayarak bunlar üzerinde işlem yapmamıza olanak tanır. İfadelerde, yalnızca char, short ve byte değerleri otomatik olarak int türüne terfi ettirilir, aynı zamanda otomatik dönüşüm de derleyici tarafından her zaman daha büyük veri türüne terfi ettirilir. 10/15/2024 37 Dr. Şahin YAŞAR TÜR DÖNÜŞÜMÜNÜN GÖZDEN GEÇİRİLMESİ (2) Tüm ilkel veri tipleri, sayısal ve string veri tipleri arasında dönüşüm yapmamızı sağlayan sarmalayıcı sınıflara sahiptir. İlkel veri türlerinden eşdeğer sarmalayıcı sınıf türlerine otomatik dönüşüm yapmaya autoboxing, tersine ise unboxing denir. Sayısal veri türlerini string (dize) veri türlerine dönüştürmek için WrapperClassName.toString() veya String.valueOf() işlevlerinden biri kullanılır. Bir dizeyi sayıya dönüştürmek için WrapperClassName.parseXxx() veya WrapperClassName.valueOf() yöntemlerinden biri kullanılır. Burada Xxx, şu gibi ilkelleri ifade eder: parseInt(), , parseDouble(), vb. Bir dizeye otomatik dönüşüm, sayısal değerler bir string (dize) ile birleştirildiğinde (+) gerçekleşir. 10/15/2024 38 Dr. Şahin YAŞAR Ders Sonu Sorular Laboratuvar Zamanı 10/15/2024 39 Dr. Şahin YAŞAR