Programlama Dilleri 3



Benzer belgeler
C# Dilinde Temel Veri Türleri

C#(Sharp) Programlama Dili

Veri Tipleri Aşağıdaki programdaki 5 hatayı bulunuz.

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

Programlama Dilleri III 1

/*int sayi1, sayi2,toplam=0;

Programlama Dilleri 3

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

HSancak Nesne Tabanlı Programlama I Ders Notları

YZM 2105 Nesneye Yönelik Programlama

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

Programlama Dilleri 3

Operator Aşırı Yükleme (Operator OverLoading)

Nesne Tabanlı Programlama

Akış Konrol Mekanizmaları

C# Çalışma Örnekleri

Nesne Tabanlı Programlama

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

C# Örnek Uygulamalar I

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

C#.NET ile PROGRAMLAMAYA GİRİŞ

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

OPERATÖRLER Alıştırmalar

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Programlama Dilleri 3

7.1- C#.net Giriş Çıkış İşlemleri ve Visual Studio. M.İLKUÇAR - 1

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

7.1- Operatörler ve Giriş-Çıkış İşlemleri. M.İLKUÇAR - 1

Değişkenler. Geçerli değişken isimleri : baslamazamani, ad_soyad, x5 Geçersiz değişken isimleri : 3x, while

2.3- OPERATÖRLER ÇALIŞMA YAPRAĞI

Nesne Yönelimli Programlama ve Kalıtım


2- C# PROGRAMINA GİRİŞ ÇALIŞMA YAPRAĞI

Görsel Programlama 1

ÜNİTE. NESNE TABANLI PROGRAMLAMA I Okt. Mustafa AKBUĞA İÇİNDEKİLER HEDEFLER DEĞİŞKENLER VE VERİ TİPLERİ

public static int Toplam int x, int y

NESNEYE DAYALI PROGRAMLAMA 9. HAFTA UYGULAMA DERSİ

Dr. Fatih AY Tel: fatihay@fatihay.net

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

KARAR YAPILARI. Acaba hangi yöne gitmeliyim? Oturduğun yerden kalkıp, kapıya varana kadar kaç kez karar verdiniz biliyor musunuz?

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

PROGRAMLAMAYA GİRİŞ DERS 2

Giri. Program yazmaya balamadan önce

İNTERNET TABANLI PROGRAMLAMA

giriş program yapısı değişkenler metotlar class kontrol deyimleri döngü deyimleri diziler struct try. catch files GUI


/ C Bilgisayar Programlama Final Sınavı Test Soruları. Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : , 60 dak.

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

// hataları işaret eden referans

BÖLÜM. İşleçler ve İfadeler. 3.2 İşleçler İşleç Nedir? Bölümün İçindekileri

DATA STRUCTURES. Part I C# Programlama Dili Temelleri

You're browsing: Bilişim Teknolojileri, Programlama Temelleri, C#» C# (C Sharp),Genel,Programlama Temelleri» C# Değişken Tanımlama ve Veri Türleri

Nesneye Dayalı Programlama

BPR152-Algoritma ve Programlama II Uygulama -12

Ders 8: Metotlar. barisgokce.com

HSancak Nesne Tabanlı Programlama I Ders Notları

JAVA DEĞİŞKEN VE OPERATÖRLER. M.İLKUÇAR - 1

11- FONKSİYONLAR (FUNCTIONS)

Programlama Dillerinde Kullanılan Veri Tipleri

NESNEYE YÖNELİK PROGRAMLAMA C++ a Giriş

.NET sınıf kütüphanesinde yer alan System isim alanı içersinde oldukça kullanışlı bazı sınıflar bulunmaktadır.

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA II

BİLİŞİM TEKNOLOJİLERİ

BİLİŞİM TEKNOLOJİLERİ

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

C, C++, C# ve Java'da enum Türleri ve Sabitleri Benzerlikler ve Farklılıklar

Nesne Yönelimli Programlama

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

YAPILAR BİRLİKLER SAYMA SABİTLERİ/KÜMELERİ. 3. Hafta

C Programlama Dilininin Basit Yapıları

Lambda İfadeleri (Lambda Expressions)

Adı soyadı :... Öğrenci no :... İmza :... Tarih, Süre : dak.

8- PROGRAM YAPISAL KOMUTLARI ve. M.ilkucar MAKU MYO 1

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜH. BÖL. ALGORİTMA VE PROGRAMLAMA 2 DERSİ LAB. ÖDEVİ

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

HSancak Nesne Tabanlı Programlama I Ders Notları

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

JAVADA DİZİ İŞLEMLERİ

NESNEYE YÖNELİK PROGRAMLAMA

Dizi nin Önemi. Telefon rehberindeki numaralar, haftanın günleri gibi v.b.

(7) C#.NET PROGRAMLAMAYA GİRİŞ. M.İLKUÇAR - 1

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

Pointers (İşaretçiler)

Veri Yapıları Lab Notları 1

Bit, Byte ve Integer. BIL-304: Bilgisayar Mimarisi. Dersi veren öğretim üyesi: Yrd. Doç. Dr. Fatih Gökçe

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

Programlama Dilleri. C Dili. Programlama Dilleri-ders02/ 1

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

J A V A D A P R O G R A M D E N E T İ M İ V E O P E R A T Ö R L E R

C++ Operatörler (Operators)

Biçem Belirteçleri (Format Specifiers)

BAŞLAYINIZ DENİLMEDEN SORU KİTAPÇIĞINI AÇMAYINIZ.

Sunum İçeriği. Programlamaya Giriş

Transkript:

Tür Dönüşümü 1

Farklı türden değişkenlerin aynı ifade içinde işlem görmeleri için tür dönüşümü kullanılır. Tür dönüşümlerini aşağıdaki şekilde gruplara ayırmak mümkündür: Tür Dönüşümleri Bilinçli(explicit) Tür Dönüşümleri Bilinçsiz (implicit) Tür Dönüşümleri 2

Bilinçsiz (Impicit) Tür Dönüşümleri Derleyici tarafından bir değişkeni tanımladığımız türün dışında geçici olarakbaşka birtüre çevirmeye bilinçsiz tür dönüşümü denir. Örn: using System; public class Tur_donusumu1 static void Main() int x=5; float a; a=x; Console.WriteLine(a); 3

Bilinçsiz yapılan yp tür dönüşümlerindeş bir nesnenin türü asla kalıcı olarak değiştirilmez. Bilinçsiz yapılan tür dönüşümleri 2 şekilde gerçekleştirilebilir. a. Küçük Türün Büyük Türe Dönüştürülmesi b. Büyük Türün Küçük Türe Dönüştürülmesi 4

Bilinçsiz (Impicit) Tür Dönüşümleri Küçük Türün Büyük Türe Dönüşümüş Küçük türler büyük türlere dönüştürülürken fazla olan bitler yani büyük türden dolayı eklenen bitler sıfırla beslenirler. Küçük türün yüksek anlamlı bitlerinin sıfırla beslenmesi değişkendeki değeri değiştirmediği i diği ii için tür dönüşümünde ü ü d herhangih bir veri kaybı olmaz. 5

using System; public class Tur_donusumu1 static void Main() byte a=20; int b; b=a; Console.WriteLine(b); float f=20f; double d; d=f; Console.WriteLine(d); char c='a'; decimal m; m=c; Console.WriteLine(m); 6

float sayı formatı 31 30 23 22 s e f 0 double sayı formatı 63 62 52 51 s e f 0 s : işaret biti e : üsleri temsil eden bitler f : noktalı (anlamlı) kısım 7

Byte türünden nesneler toplandığında sonuç olarak int türündenü nesneler üretilirler. l Örn: using System; public class Tur_donusumu1 static void Main() byte a=15; byte b=25; byte c; c=a+b; Console.WriteLine(c); 8

Tür sbyte byte short ushort int uint long ulong char float double decimal Bilinçsiz Dönüşüme İzin verilen Türler byte, ushort, uint, ulong, veya char sbyte veya char sbyte, byte, ushort, uint, ulong, veya char sbyte, byte, short, veya char sbyte, byte, short, ushort, uint, ulong, veya char sbyte, byte, short, ushort, int, veya char sbyte, byte, short, ushort, int, uint, ulong, veya char sbyte, byte, short, ushort, int, uint, long, veya char sbyte, byte, veya short sbyte, byte, short, ushort, int, uint, long, ulong, char, veyadecimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float, veya decimal sbyte, byte, short, ushort, int, uint, long, ulong, char, float, veya double 9

Aşağıdakikod parçasını bilgisayarınızda deneyiniz: using System; public class Tur_donusumu1 static void Main() short b1=100; char c1=b1; bool b2=true; int i1=b2; double d1=10.2; int i2=d1; decimal m1=20.6m; double d2=m1; byte bt1=65; char c2=bt1; float f1=34.78f; decimal d3=f1; 10

Bazı türler arasında tür dönüşümü yapmam mümkün değildir. Bunlar : a. Bool, decimal ve double türünden herhangi bir türe b. Herhangi ibir türden char türüne c. Float ve decimal türünden herhangi bir türe (float türünden double türüne dönüşüm ş hariç) 11

Bilinçsiz (Impicit) Tür Dönüşümleri Büyük Türün Küçük Türe Dönüşümüş Büyük türlerin küçük türlere otomatik dönüştürülmesi C# da yasaklanmıştır. Eğer bu tür bir dönüştürme(bilinçsiz olarak) mümkün olsaydı birtakımverikayıpları yaşanacaktır. 12

Bilinçli (Explicit) Tür Dönüşümleri Bilinçli (explicit) tür dönüşümü genellikle derleyicinin izin vermediği dönüşümlerde kullanılır. Bu tür dönüşümlerde de yine küçük türler büyük türe ya da tersi dönüşümler yapılabilir. Küçük türlerin büyük türlere çevrilmesi aynı bilinçsiz dönüşümde olduğu gibidir. 13

Tür Dönüştürme Operatörü Bilinçli tür dönüşümü yapılırken tür dönüştürme operatörleri kullanılır. Tür dönüştürme operatörü parantez içinde değişkenyadasabittenönceyazılır. (dönüştürülecek tür)degişken_yada_sabit; 14

using System; public class Tur_donusumu1 static void Main() Mi() byte a=100; int b=(int)a; Console.WriteLine(b); Bu işlem tür dönüşüm ü operatörü kullanmadan da yapılabilirdi. Buradaki amaç daha çok okunabilirliği arttırmaktır. 15

Bilinçsiz yapılan tür dönüşümlerinde büyük türler, küçük türlere dönüştürülemiyordu. Eğer tür dönüştürme operatörü kullanılırsa bu işlem mümkün olur. Örn: Aşağıdaki programı deneyin: using System; public class Tur_donusumu1 static void Main() int a=400; byte b=(byte)a; Console.WriteLine(b); 16

Programı çalıştırdığımızda ekrana 144 yazdırdı. Neden? int a=400 : 00000000 00000000 00000001 10010000 (byte)i : 10010000 144 Dec. 17

using System; class TurDonusumu9 static void Main() int i = 256; byte b = (byte)i; Console.WriteLine(b); double d = 123456.7890123456; float f = (float)d; int i3 = (int)d; Console.WriteLine(f); Console.WriteLine(i3); decimal m = 123456789.123456789M; double d2 = (double)m; Console.WriteLine(d2); int i2 = 65600; short s = (short)i2; Console.WriteLine(s); 18

Checked ve Unchecked Büyük veri türleri küçük türlere çevrilirken veri kayıpları meydana gelebiliyordu. Bazı durumlarda bu veri kayıpları olmuyorsa çevrim işlemi yapılması aksi halde hata oluşması istenebilir. Bu durumda checked anahtar sözcüğü kullanılabilir. Bu sözcük veri kaybı oluşması durumunda derleyicinin hata vermesini sağlar. 19

Aşağıdakikod parçasını bilgisayarınızda deneyiniz: using System; public class Tur_donusumu1 static void Main() int i=256; byte b; checked b=(byte)i; Console.WriteLine(b); Checked anahtar sözcüğü ile çalışma zamanında oluşabilecek veri kayıplarının olabileceği durumlarda hata vermesini sağlayabiliriz. 20

using System; public class Tur_donusumu1 static void Main() int i=256; checked byte b=(byte)i; Console.WriteLine(b); Not: checked bir blok oluşturduğu için içinde yapılan değişken tanımlamaları dış bloklarda kullanılamaz. 21

Normal şartlarda yapılan işlemler unchecked dir. Böyle bir ifadenin i konmasının nedeni uzun checked blokları içersindei bazen unchecked blokların oluşturulması istenebilir. Bu durumlarda d çok fazla blok oluşturmamak için unchecked ifadesi kullanılabilir. 22

using System; class TurDonusumu11 static void Main() int i1 = 255; int i2 = 500; byte b, c; checked b = (byte)i1; Console.WriteLine(b); unchecked c = (byte)i2; Console.WriteLine(c); 23

Referans ve Değer Türleri Arasındaki Dönüşüm 24

Object Türü ve ToString() Metodu Temel veri türleri de dahil olmak üzere bütünü veri tipleri i object denilen bir referans türünden türemiştir. Türeme, kl kalıtım yolu ile olduğu ğ ii için var olan özellikler her zaman korunur. Sınıf kütüphanesinin ve temel veri türlerinin atası olan object nesnesinin özellikleri ve işş yapan yp metotları bütün türlerde mevcuttur. 25

ToString() Metodu.ToString() metodu bütün temel türlerde ya da referans türlerde kullanılabilir. Amacı ise string e dönüşüm işlemdi yapmaktır. 56.ToString(); 12.34F.ToString(); Yukarıdaki örnekler verilen sabit ifadelerin string e dönüştürülmesi için kullanılmıştır. 26

Aşağıdakikod parçasını bilgisayarınızda deneyiniz: using System; class TurDonusumu12 static void Main() int x = 10; int y = 20; string a = x.tostring(); string b = y.tostring(); Console.WriteLine(x + y); Console.WriteLine(a + b); 27

Boxing İşlemi Bir çok modern dilde değer tipleri ile referans tipler arasında dönüşüm söz konusu değil iken C# dilinde bu mümkündür. Boxing (kutulama) olarak ifade edilen yöntem değer tipindeki verileri object nesnesine çevirir. 28

Object nesneler de referans tip oldukları için heap bellek alanında tutulurlar. Bu yüzden object nesnesine çevrilen değer tipleri stack alanından heap alanına kopyalanır. stack alanında object türündeki değişken, heap alanını gösterecek şekilde ayarlanır. Bu işleme boxing adı verilir. using System; public class Tur_donusumu1 static void Main() int a=100; object b=a; a b STACK Alanı 100 HEAP Alanı int 100 Boxing işleminin sonucu 29

Boxing işlemi bilinçsiz olarak yapılabileceği gibi tür dönüştürme operatörleri kullanılarak bilinçli olarak da yapılabilir. Örn: using System; public class Tur_donusumu1 static void Main() int a=100; object b=a; using System; public class Tur_donusumu1 static void Main() int a=100; object b=(object) a; 30

Unboxing Heap alanındaki nesnelerin değerlerinin bit olarak stack bölgesine kopyalanması işlemine unboxing adı verilir. Bu işlem sonucunda referans türler değer türüne dönüştürülmüş olur. Unboxing işlerminin çalışma zamanında hata vermemesi içingerekli ikiönemlikoşul vardır: Unboxing uygulanacak nesnenin daha önceden boxing işlemiyle dönüştürülmüş olması Boxing e tabi tutulmuş bu nesnenin unboxing ile doğru türe dönüştürülmesidir. ş Unboxing işlemi bilinçsiz bir biçimde yapılmaz, mutlaka tür dönüşüm operatörü kullanılmalıdır. 31

Aşağıdakikod parçasını bilgisayarınızda deneyiniz: using System; class TurDonusumu13 static void Main() int i = 10; object o = i; int j = (int)o; Console.WriteLine(i); Console.WriteLine(j); 32

Aşağıdakikod parçasını bilgisayarınızda deneyiniz: using System; class TurDonusumu14 static void Main() int i = 10; object o = i; long l = (long)o; Console.WriteLine(i); Console.WriteLine(l); 33

System.Convert Sınıfı ile Tür Dönüşümü ü ü.net sınıf kütüphanesinde yer alan Convert sınıfı string değerleriğ ve temel veri türlerini birbirine çevirmek için kullanılır. Her bir veri türü için ayrı bir çevrim fonksiyonuna sahiptir. 34

Convert.ToBoolean( ) Convert.ToInt64( ) Convert.ToByte( ) Convert.ToUInt64( ) Convert.ToSByte( os ) Convert.ToSingle( os e( ) Convert.ToInt16( ) Convert.ToDouble( ) Convert.ToUInt16( ) Convert.ToDecimal( ) Convert.ToInt32( ) Convert.ToChar( ) Convert.ToUInt32( ) 35

using System; class TurDonusumu15 static void Main() string s1, s2; int i1, i2, t; Console.Write("1.Sayıyı Girin:"); s1 = Console.ReadLine(); Console.Write("2.Sayıyı Girin:"); s2 = Console.ReadLine(); i1 = Convert.ToInt32(s1); i2 = Convert.ToInt32(s2); t = i1 + i2; Console.WriteLine("Toplam = " + t.tostring()); 36

Dönüşüm işleminin sonucunda anlamlı bir sonuç elde edilemeyeceği durumlarda hata meydana gelir. using System; class TurDonusumu16 static void Main() char a = 'a';' bool b = Convert.ToBoolean(a); 37