Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Visual C# 2 Bellek Kavramı

Benzer bir sunumlar


... konulu sunumlar: "Visual C# 2 Bellek Kavramı"— Sunum transkripti:

1 Visual C# 2 Bellek Kavramı
TAYFUN YİRDEM

2 Visual C# 2-3 ) C# ile Programlamaya giriş, Genel bilgi, Algoritma,
Pseudocode ( sözde kod ) kavramları, Programlama da bellek kavramını anlamak, Değişkenler, sabitler, Veri tipleri, String, array yapısı. (katar ve dizi yapısına genel bir bakış), Listeleme yapısı ( Enumeration), Programlama da matematiksel işlemler( aritmetik ).

3 Visual C# Doğrudan .NET Framework için tasarlanmıştır.
Anders Hejlsberg, Scott Wiltamuth, and Peter Golde. “ # “ işareti C++ ‘ daki iki “ + “ işaretinin birleşimidir. Microsoft müzikal nota’dan esinlendiğini açıklamıştır. “See-sharp” Basit, modern, her yazılımcıya hitap eden, nesneye dayalı bir programlama dili üretmek amaçlanmıştır. C ve Assembly ile performans konusunda rekabet etmiyor!!!

4 Visual C# .NET Framework’ ü temel alarak çalışır. Diğer tüm diller gibi Böylece 4000’ den fazla class içerir. Basit bir syntax’ı vardır. Yani C# dilini anlamak kolaydır. Oldukça güçlü bir dildir. Yapmak istediklerinizin fazlasını sunar Type-Safe Yazdığınız kodlar bilgisayarınızda sadece izin verilen yerlere erişebilir. Bir nesne için geçersiz olan işlemleri ona yaptıramazsınız. Label’a veri giremezsiniz, o sadece veri okumak içindir. String değişkeni 2 ile çarpamazsınız. Object Oriented Windows Client Uygulamaları  Masaüstü programcılığı XML Web Servisleri Web Uygulamaları Veritabanı Uygulamaları/ Database

5 Visual C# 90 Keyword Curly-brace syntax
Word dökümanında tüm listeyi görebilirsiniz. Keyword’ler mavi renktedir. “int, string, using, namespace...” Curly-brace syntax C, C++, JAVA vs...” “ { “  Start “ } “  End Tüm değişkenler ve method’ lar bir class içerisinde tanımlanır Programlarımızın giriş noktası olan Main method’u da dahil. Intellisense Diller arasındaki farklılıklardan biri Visual C# Express, Visual VB.NET Express farklı olabilir

6 Visual C# Algorithma Bir programın yapması gereken işlevleri
Bu işlevlerin sıraya sokulması Bu ikisinin oluşturduğu yapıya da algorithma denir. Kullanıcı tarafından girilen iki sayının toplamını bulan programın algoritması. 1) Kullanıcıdan birinci sayıyı al 2) Birinci sayıyı bellekte sakla 3) Kullanıcıdan ikinci sayıyı al 4) İkinci sayıyı bellekte sakla 5) Birinci sayı ile ikinci sayıyı topla 6) Sonucu bellekte sakla Kursun sonuna kadar algoritma kurmaya devam edeceğiz.

7 Visual C# Bir C# uygulamasında kullanılması zorunlu olan yapılar???
Program bir yerden başlamak zorunda, Nerden??? Object Oriented olmayan dillerde ilk satırdan başlar, C# da ise Main method’undan Main Method’u Programın başlangıç noktasıdır. Main method’daki “ { “ programı başlatır. Main method’daki “ } “ programı bitirir. class YeniClass { static void Main() {===================== Program çalışmaya buradan başlar. }===================== Program çalışmasını burada bitirir. }

8 Main Method Bir “class” veya “struct” içerisinde tanımlanmalıdır.
OOP dili olan C# da class veya struct kullanmak zorundasınız. class YeniClass =================== Class tanımlaması { static void Main() } Struct YeniStruct =================== Struct tanımlaması

9 Main Method “static” olarak tanımlanmalıdır.
“static”, kelime olarak değerini saklayan anlamındadır. static üyelere sadece içinde bulundukları class erişebilir. Instance’lar erişemez. Instance = ? Nesneleri tekrar tekrar kullanabilmek için onlardan instance oluşturursunuz yani “örnek”. Object oriented programlama’nın temeli örnek oluşturmaktır. Sadece 1 tane nesne oluşturulur, ama onun milyonlarca örneğini kullanabilirsiniz. Console.WriteLine( )  Console yazmadan WriteLine( ) method’una erişemezsiniz. class YeniClass static olarak tanımlanmak zorunda. { static void Main() }

10 Main Method Return Type’ı olmalıdır.
Yazdığınız programlarda siz method’lardan bir iş görmesini istersiniz. Eğer, verilen işi yaptıktan sonra method’ların size dönüp cevap vermesini istiyorsanız “return” keyword’ünü kullanırsınız. Hayır, sadece işini yapsın bana sonuçları haber vermesin diyorsanız “void” keyword’ünü kullanmak zorundasınız. class YeniClass return type’ı void { static void Main() } Void = boş, boşluk, geçersiz, yani, aslında return type yok, Bu örnekte Main method’u geriye bir değer döndürmüyor.

11 Main Method Method işini bitirdikten sonra size sonuçlarla ilgili cevap versin istiyorsanız return type olarak “int” keyword’ünü kullanırsınız. Main method’u void değilse sadece integer tipinde değer döndürür. class YeniClass return type’ı int { static int Main() return 1; }

12 Main Method Return type “int” ise return keyword’ü ile değişken de kullanılabilir. class YeniClass return type’ı int { static int Main() return 0; } class YeniClass return type’ı int tipinde bir değişken int myVariable; return myVariable;

13 Main Method Diğer methodların çağrıldığı yerdir.
Yazdığını methodlara erişebilmek için onları main method’u içinde çağırmak zorundasınız. “Method çağırmayı daha sonra göreceğiz” class YeniClass { static int Main() YeniMethod(); System.Console.ReadLine(); return 3; } static void YeniMethod()

14 Console Class’ı Temel Input / Output İşlemleri
Console ekranında herhangi bir bilgi gösterebilmek için Write( ) ve WriteLine( ) method’ları kullanılır. System.Console.Write( )  Ekranda istenilen ifadeyi gösterir. System.Console.Write(“merhaba”); System.Console.Write(“istanbul”); Ekranda tek bir satırda “merhabaistanbul” System.Console.WriteLine(“merhaba”); System.Console.WriteLine(“istanbul”); Ekranda alt alta iki satırda merhaba istanbul Yani Write ile WriteLine method’larının farkı WriteLine method’unda yazma işleminden sonra cursor bir alt satıra geçmesidir.

15 Console Class’ı Write method’u 18 farklı formatta kullanılabilir.
WriteLine merhod’u 19 farklı formatta kullanılabilir. WriteLine Write method’undan farklı olarak parametre almadan da kullanılabilen biçimi vardır. System.Console.Write( );  Hata üretir System.Console.WriteLine( );  Ekranda boş bir satır gösterir. Ekranda sayısal tipte değerler göstermek için System.Console.WriteLine(951357); Ekranda string tipinde değerler göstermek için System.Console.WriteLine(“merhaba istanbul”); Temel Input / Output İşlemlerinin yanında standard hatalarda Console ekranında incelenir.

16 Console Class’ı Ekranda gösterdiğimiz string tipindeki değerlerin arasında sayısal veya diğer tipte değerler göstermek için parametreler kullanılır. {0}  Parametre 0, ilk parametre {1}  Paremetre 1, ikinci parametre {2}  Paremetre 2, ... ... int x=5; System.Console.WriteLine_ (“x değişkenin değeri={0}, x değişkenin değerinin 3 fazlası={1}“, x, x+3); Output x değişkenin değeri=5, x değişkenin değerinin 3 fazlası=8

17 Console Class’ı int x=5;
System.Console.WriteLine(“x değeri={0,5}tir”, x); Output  x değeri= tir {0,5}  Virgülden sonraki sayı kaç karakter boşluk verileceğini gösterir.

18 Console Class’ı C4 sayıları para birimi olarak gösterir, 88.8  888.8
D5 sayıları tamsayı olarak gösterir. 88  00088 E sayıları bilimsel formatta gösterir  E+002 F3 devirli sayıların ondalıklı kısmını sınırlar   G Genel formatlama  N Sayısal format  ,900  478,123,456.90 X4 Hexadecimal formatlama  88  0058 Date&Time formating  tarih ve zaman değerlerini formatlamayı daha sonra ayrıntılı olarak işleyeceğiz.

19 Console Class’ı Kullanıcının girdiği değerleri elde edebilmek(yakalayabilmek) için Read( ) ve ReadLine( ) methodları kullanılır. System.Console.Read( );  Girilen tek bir karakter için System.Console.ReadLine( );  Girilen ifadenin tamamı için ReadLine( ) method’u string tipinde değer döndürür.

20 CommentsAçıklama //  Tek bir satırı açıklama olarak kullanmak için.
/* */  Birden fazla satırları açıklama olarak kullanmak için.

21 Bellek Kavramı Variable  Değişken
Bu kavram için neden değişken sözcüğü kullanılıyor??? Programcılıkta bellek denince RAM akla gelmelidir. RAM nedir? Random Access Memory  Rasgele Bellek Erişimi Random=Rasgele sözcüğünün kullanılmasının sebebi teyp kasetlerinin tersine RAM de rasgele istediğiniz bir yere erişip oraya veri aktarabilmenizdir. Bunun sonucu nedir ? Kaydetmek istemiyorsunuz sadece geçici olarak saklıyorsunuz. RAM geçici bellek olarakta adlandırılır. Neden geçici? RAM’deki bilgiler geçici olarak saklandığından sürekli değişmektedir. RAM değişken olduğundan, RAM de saklanan her veriye değişken denir. Variable = Değişken denmesinin sebebi budur. Sonuç olarak Bellek Kavramı denince RAM yapısını düşünmelisiniz.

22 Bellek Kavramı Variable  Değişken
Neden programlarımızda değişken kullanırız. Bilgisayarın belleğinde kendimize geçici olarak bir alan yaratmak için, Bilgisayarın belleğinde veri saklamak için Belleğe veri aktarma işlemi  Write Bilgisayarın belleğinde saklanan verilere erişmek için. Bellekten veri çekme işlemi Read Şekil bellekteki bir bölgeyi ifade ediyor

23 Bellek Kavramı Variable  Değişken
Peki değişkenlerin değerleri bellekte nasıl saklanır. int x; X=5; Bilgisayarın belleğinde içinde integer tipinde değerler tutabilen ismi x olan bir bölge tanımladık. x değişkenine 5 değerini atadık. Yani bilgisayarın belleğindeki ayırdığımız bölgede 5 değerini saklıyoruz.

24 Değişken Kavramı C# da Bir değişkeni kullanmadan önce onu tanımlamak zorundasınız. DEĞİŞKEN TANIMLAMAK Bir değişken tanımlarken uyulması gereken 3 kural vardır. Her tanımlanan değişkenin tipi belirtilmeli.  Type Her tanımlanan değişkene bir isim verilmeli.  Label, Name Değişken tipi isminden önce belirtilmeli. Örnekler: int x; Değişkenin tipi integer, yani tamsayı. Değişkenin ismi x. Görüldüğü üzere değişkenin tipini isminden önce belirttik. string y; Long z; Object t; gibi Değişken tipleri birer “keyword” olduğundan mavi renktedirler.

25 Değişken Kavramı DEĞİŞKEN TANIMLAMAK
Değişken tanımlarken Type ve isim belirtmenin de kuralları vardır. İstediğiniz type veya isim de değişken yaratamazsınız. C#.NET de belirli sayıda type vardır. C#.NET de her türlü isimlendirme işleminin bir kuralı vardır.

26 Değişken Kavramı Tanımlanan değişkenlerde uygun tipte değer saklanıp saklanmadığını kontrol eden programlama dilleri “type-safe” programlama dilidir. Common Language Runtime içerisinde Common Type System (CTS) yer alır. Build-in(önceden tanımlanmış) değişkenleri yöneten yapı CTS dir. Common Type System hem Object-Oriented hem de procedural dilleri destekler. Bu nedenle object tipinde de basit tiplerde de değişken yaratabilirsiniz. Object-Oriented  Reference Types procedural  Value types Hem Compiler, hem de .NET ortamındaki araçlar CTS’ yi destekler. Yani hem design time, hem de runtime da iş görmektedir.

27 Değişken Kavramı TYPES Value Types  Değer Reference Types  Referans
Pointer Types  Gösterge

28 Değişken Kavramı VALUE TYPES int x = 5;
Değişken için tahsis edilen bellekte verinin kendisi saklanır. Şekildeki gibi, 5 değerini doğrudan bellekte tanımlanan x değişkeninde tutuyoruz.

29 Değişken Kavramı REFERENCE TYPES object y = new object( );
Değişken için tahsis edilen bellekte verinin adresi saklanır. Bellekte tanımlanan y değişkeni object’e giden okun başlangıç noktasıdır. Yani gerçek değer başka bir yerde saklanır. İçerdikleri verinin yolunu gösterirler. Y object’i işaret eder. Aynı object’ i işaret edebilirler.

30 Değişken Kavramı int x = 5; object y = new object( );
int a = x; object b = y;

31 Değişken Kavramı x değişkenin değeri değişirse, a değişkeni bundan etkilenmez. x=7; Atamasını yapsak bile a değişkeni 5 değerini tutmaya devam eder. Reference Type kullanımında ise değişkenler birbirini etkiler. y object’in değerini değiştirir ise, bu değişimden b de etkilenir.

32 Değişken Kavramı y = null; b = null;
Bu komutlardan sonra y ve b değişkenleri bellekte herhangi bir yeri işaret etmezler. “null” boş, anlamsız manasındadır. DİKKAT!!!, bellekteki object hiçbir değişken tarafından işaret edilmiyor, yani kullanılmıyor. Bu durumda CLR “Common Language Runtime” onu çöp sayacak. Bellekte gereksiz bir şekilde yer tutmaması için bir süre sonra yok edilecektir. Bellekten de atılacaktır.

33 Değişken Kavramı TYPES Value Types  Değer Reference Types  Referans
Pointer Types  Gösterge Pointer daha ileri de ele alınacaktır. Pointer’ tipi değişkenler de bellekteki başka bir adresi işaret ederler. Ancak Reference tipindeki değişkenlerle tek ortak yanları budur. “Gargabe Collector” Çöp toplayıcısı Reference’ları takip ederken pointer’lerı takip etmez. Siz kendiniz onları temizlemek zorundasınız.

34 Değişken Kavramı Değişkenlerden bahsederken 4 unsur aklımıza gelmeli.
Her değişkenin bir ismi vardır. Bellekte verilerin saklandığı yeri gösterir. myInt myString myDate Her değişkenin bir değeri vardır. 5 merhaba 12/12/2005 Her değişkenin sakladığı değerin bir tipi vardır. int string date Her değişken tipinin bir kapasitesi vardır. Dolayısıyla o tip de oluşturulmuş değişkenlerinde bir kapasitesi vardır. < integer < Bu aralığın dışındaki sayıları integer tipindeki bir değişkende saklayamazsınız. integer = Tamsayı  Maalesef matematikteki kadar değil... Bir değişkenin taşıdığı değer değişebilir, ama bir değişkenin ismi, tipi, kapasitesi asla değişemez.

35 Bellek Kavramı Value Types  Enum ve Struct kullanıcı tarafından tanımlanır. Value Types  Diğer value type’lar build-in tipdedir. Yani C# zaten onları tanımlamıştır. Value Types  “null” değerini içeremezler

36 Değişken Kavramı DEĞİŞKENLER SADECE BİR DEĞER SAKLAYABİLİR.
Boy değişkenine ailenizdeki bireylerin boylarını saklamak istiyorsunuz. Boy = 170  Baba Boy = 180  Kardeş, daha önceden babanız için saklamak istediğiniz 170 değerini kaybedersiniz. Değişkenler ile ilgili bir kavram daha ortaya çıkıyor “atama” yapmak

37 Değişken Kavramı DEĞİŞKENLERE ATAMA YAPMAK, “DEĞER SAKLAMAK” int x;
string y; y = “merhaba”; DateTime d; d = :59:59;

38 Değişken Kavramı DEĞİŞKENLERE ATAMA YAPMAK, “DEĞER SAKLAMAK”
Her değişken tipinin bir kapasitesi vardır. Dolayısıyla değişkenler belli bir aralıkta değerler alabilir.

39 Değişken Kavramı class YeniClass { static void Main(string[] args)
System.Console.WriteLine(System.SByte.MaxValue); System.Console.WriteLine(System.Byte.MaxValue); System.Console.WriteLine(System.Int16.MaxValue); System.Console.WriteLine(System.UInt16.MaxValue); System.Console.WriteLine(System.Int32.MaxValue); System.Console.WriteLine(System.UInt32.MaxValue); System.Console.WriteLine(System.Int64.MaxValue); System.Console.WriteLine(System.UInt64.MaxValue); System.Console.WriteLine(System.Decimal.MaxValue); System.Console.WriteLine(System.Single.MaxValue); System.Console.WriteLine(System.Double.MaxValue); System.Console.ReadLine(); }

40 Değişken Kavramı class YeniClass { static void Main(string[] args)
System.Console.WriteLine(System.SByte.MinValue); System.Console.WriteLine(System.Byte.MinValue); System.Console.WriteLine(System.Int16.MinValue); System.Console.WriteLine(System.UInt16.MinValue); System.Console.WriteLine(System.Int32.MinValue); System.Console.WriteLine(System.UInt32.MinValue); System.Console.WriteLine(System.Int64.MinValue); System.Console.WriteLine(System.UInt64.MinValue); System.Console.WriteLine(System.Decimal.MinValue); System.Console.WriteLine(System.Single.MinValue); System.Console.WriteLine(System.Double.MinValue); System.Console.ReadLine(); }

41 Değişken Kavramı short  Int16 int  Int32 long  Int64
ulong, uint, ushort  Unsigned, yani negatif değer almıyor.

42 Değişken Kavramı string System.String sbyte System.SByte
byte System.Byte short System.Int16 ushort System.UInt16 int System.Int32 uint System.UInt32 long System.Int64 ulong System.UInt64 char System.Char float System.Single double System.Double bool System.Boolean decimal System.Decimal DEĞİŞKENLERİ İFADE EDERKEN İKİSİNDEN BİRİNİ SEÇERSİNİZ. Keyword’ler (soldakiller) için Takma isim diyebiliriz. Tek farkları sağ taraftakilerin birer struct olmasıdır. Keyword’ler simpel value type’lar için kullanılır.

43 Değişken Kavramı class YeniClass { static void Main(string[] args)
System.Console.WriteLine(System.Byte.MaxValue); System.Console.WriteLine(System.Byte.MinValue); System.Console.ReadLine( ); } Bu programın çıktısı sırasıyla 255 ve 0 olacaktır. Byte tipindeki değişkenlerin alabileceği en büyük değer 255 en küçük değer 0 dır. [0,255] aralığının dışındaki değerleri bu tip değişkenlerde saklayamazsınız.

44 Değişken Kavramı class YeniClass { static void Main(string[] args)
int x; x = “merhaba”; =========== Bu atama işlemi yapılamaz. System.Console.WriteLine(x); System.Console.ReadLine( ); } Bu program hata üretecektir. x değişkeni integer tipinde tanımlanmışsa integer tipinde değerler tutabilir. Dolayısıyla x değişkenine integer tipinde değerler atayabilirsiniz. Aynı şekilde integer tipinde tanımlanmış x değişkenine “2.5” değerini de atayamazsınız.

45 Değişken Kavramı Bir değişkenin ismini tanımlarken uymanız gereken sadece 2 kural vardır. Keyword kullanamazsınız. Değişken isminin ilk karakteri harf, veya alt çizgi olabilir. İlk karakterden sonra harf, alt çizgi, ve rakam kullanabilirsiniz. Değişken ismi hatası Compile-Time hata üretir

46 Visual C# Assembly Application Error Exception Namespace Program
Programın “compile” edilmesi sonucu oluşan dosyalar. “Output of Compiler” Application Genellikle “.exe” uzantılı, bir giriş noktası’na sahip olan assembly. Error Programın assembly’ye çevrilmesi sırasında oluşur. Exception Olağan dışı durum sonucu oluşan hata. Namespace Sadece bir gruplama şekli, Msgbox element’ i System.VisualBasic yerine, System.Elements namespace’ i içinde de yer alabilirdi. Kolay hatırlanması için... Program “Input of Compiler”, assembly olarak çıktısını almak istediğimiz, yazdığımız kaynak kodlar.

47 Visual C# Program.cs  Kaydedilen dosyanın ismi using System;
namespace ConsoleApplication1 { class Program static void Main(string[] args) Console.WriteLine(“ilk örneğimiz”); Console.ReadLine(); }

48 Visual C# Assembly Application Error
Programın “compile” edilmesi sonucu oluşan dosyalar. “Output of Compiler” Application Genellikle “.exe” uzantılı, bir giriş noktası’na sahip olan assembly. Error Programın assembly’ye çevrilmesi sırasında oluşur.


"Visual C# 2 Bellek Kavramı" indir ppt

Benzer bir sunumlar


Google Reklamları