1 / 198

Prof. Dr. İskender Öksüz Araştırma Görevlisi Alpay Şahin

C#. Prof. Dr. İskender Öksüz Araştırma Görevlisi Alpay Şahin Beginning Visual C# 2010, Karli Watson, Christian Nagel, Jacob Hammer Pedersen, Jon Reid, Morgan Skinner, Wrox- Wiley 2010. 1 Bilgisayar programlama:. Programlama dilleri, makine dili, yüksek düzey diller

ivan
Download Presentation

Prof. Dr. İskender Öksüz Araştırma Görevlisi Alpay Şahin

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. C# Prof. Dr. İskender Öksüz Araştırma Görevlisi Alpay Şahin Beginning Visual C# 2010, Karli Watson, Christian Nagel, Jacob Hammer Pedersen, Jon Reid, Morgan Skinner, Wrox- Wiley 2010

  2. 1 Bilgisayar programlama: Programlama dilleri, makine dili, yüksek düzey diller Derleyici, "source", "object", "link" kavramları. Algoritma, bir programın hayat hikâyesi

  3. Von Neumann bilgisayarı Aritmetik ve Mantık Birimi Arithmetic and Logic Unit Ana Hafıza (RAM) Main Memory Giriş- Çıkış Cihazları Input Output Equipment Şimdi buna "işlemci" veya "mikroprosesör" diyoruz Program Kontrol Birimi Program Control Unit

  4. Makine dili X = A * B + C • Hafızanın A adresindeki değeri al, ALU’da bir "register"e yükle; • Hafızanın B adresindeki değeri al, yukardaki değerle çarp ve sonucu aynı "register"de tut. • Hafızanın C adresindeki değeri registerdeki değere ekle. • Registerdeki değeri hafızanın X adresine koy.

  5. Makine dili X = A * B + C Opcode Operand • 00010000000000000000010000000000 (A’daki değeri reg. yükle)Hex: 08 00 04 00 • 00100100000000000000010000000001 (B’deki değerle çarp)Hex: 24 00 04 01 • 00100011000000000000010000000010 (C’deki değeri reg. ile topla) Hex: 23 00 04 02 • 00010001000000000000010000000011 (Registerdeki değeri X’e taşı)Hex: 11 00 04 03 İki tabanındaki sayılar : 0, 1 Ondalık sayılar : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 Onaltılık (hex) sayılar : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F

  6. Biraz daha hex Ondalık  Hex Hex  Ondalık 1 = 1 10 = A 36 = 24 A5 = 165 147 = 93 DD = 221 255 = FF

  7. Makine dili - Assembler X = A * B + C

  8. Yüksek seviye dilleri? X = A * B + C X = A * B + C LET X = A * B + C

  9. Üst seviye dili • FORTRAN • C • Pascal • Basic • C++ • Java • C# Üst seviye dili Derleyici (compiler)(Scriptlerde yok) Makine dili

  10. http://www.digibarn.com/collections/posters/tongues/tongues.jpghttp://www.digibarn.com/collections/posters/tongues/tongues.jpg

  11. Derleme (Compilation) Kaynak kod(Source code) Source module Üst seviye dili X = A * B + C 08 00 04 00 24 00 04 01 23 00 04 02 11 00 04 03 Ara dil (Java, C#) Derleyici (compiler)(Scriptlerde yok) Makine dili Object code Object module

  12. Bitti mi? Okumaprogramı Bağlama- link İcra edilebilir program: ExecutableÇarp_Topla.exe Object program Ekrana yazmaprogramı … programı … programı dll :dynamic link library

  13. Hatalar: • Derleme hataları (Compiler error) • Bağlama hataları (Falan modülü bulamadım) • İcra hataları (Run time error)

  14. İlk program: A * B hesap makinesi Gerçekten A * B’yi hesaplayan bir hesap makinesi yazalım. Şimdilik A, B tam sayı olsun... Bu bir nesne mi? Evet, yalnız çarpma yapabilen ucuz bir hesap makinesi... Özellikler (Properties): Birinci sayı İkinci sayı Sonuç Metot? Çarpma

  15. A * B Hesap makinesi devam... public class HesapMakinesi { public string Birinci, Ikinci, Sonuc; int a, b, c; public void Carp() { a = int.Parse(Birinci); b = int.Parse(Ikinci); c = (a * b); Sonuc = c.ToString(); } }

  16. A * B Hesap makinesi devam...  class Program { static void Main() { HesapMakinesi HM = new HesapMakinesi(); HM.Birinci = Console.ReadLine(); HM.Ikinci = Console.ReadLine(); HM.Carp(); Console.WriteLine(HM.Sonuc); Console.Read(); } }

  17. Tepeden bakış: namespaceKaraEkranÇarpmaMakinesi { class Program { staticvoidMain() { ......... } } publicclassHesapMakinesi { .......... } }

  18. A * B Hesap makinesi devam... class Program { static void Main() { Console.WriteLine("Çarpacağınız birinci tam sayıyı giriniz:"); HesapMakinesi HM = new HesapMakinesi(); HM.Birinci = Console.ReadLine(); Console.WriteLine("Çarpacağınız iknci tam sayıyı giriniz:"); HM.Ikinci = Console.ReadLine(); HM.Carp(); Console.WriteLine(HM.Sonuc); Console.WriteLine("İşte sonuç! Nasıl ama!"); Console.Read(); } }

  19. 2. C# programcılığına giriş Değişken tipleri: int int birinciSayi; birinciSayi = 1256; string string strBirinci; strBirinci = “Gaziantep” Sabit Değişken Sabit Değişken Atama Atama

  20. Tipler (types) • Değişken tipleri mutlaka ilan edilmelidir(type decleration- types must be declared“C# is a strongly typed language) • Kullanılmadan önce ilan edilmelidir • İlk değer atanması ilân sırasında veya ilândan sonra yapılabilir: int birinciSayi; birinciSayi = 1256; int birinciSayi = 1256; string strBirinci = “Bu takım” string strBirinci; strBirinci = “Bu takım”

  21. Tipler int birinciSayi = 1256; string strBirinci = “Bu takım” long uzunTamSayi= 12345678901.. char uUml = 'ü' float Avagadro = 6.02E23 bool dogruMu = false double piSayisi= 3.141592653589

  22. C# veri tipleri

  23. Atama ifadesi: Assignment statement = variable = expression object = expression

  24. Operatörler

  25. Not: = ile diğer operatörler birleştirilebilir:a = a + b yerine a += b a = a / b yerine a /= b

  26. Operatörler devam...

  27. Diğer önemli işaretler • ( ve ) işlemlerde öncelik değiştirmek için, vby... • { ve } program bloklarını ayırmak için • // x = y + z // y ile z’yi topluyorum • /* ve */ • /* y ile z’yi topluyorum */ En önemli işaret: a = x + y Boşluk!

  28. Operatör öncelikleri (operator precedence) • Önce parantez içleri • Sonra soldan sağa * ve / ve % işlemleri • Sonra soldan sağa + ve – işlemleri

  29. İşlem Öncelikleri (Örnek) Mehmet Ali Hoca’dan y = 2 * 5 * 5 + 3 * 5 + 7; 1. Adım 2 * 5 = 10 (En soldaki çarpma) y = 10 * 5 + 3 * 5 + 7; 10 * 5 = 50 (En soldaki çarpma) 2. Adım y = 50 + 3 * 5 + 7; 3 * 5 = 15 (Toplamadan önceki çarpma) 3. Adım y = 50 + 15 + 7; 50 + 15 = 65 (En soldaki toplama) 4. Adım y = 65 + 7; 65 + 7 = 72 (Son toplama) 5. Adım y = 72; (Son işlem 72 değeri y değişkenine aktarılır) 6.Adım

  30. Değişkenleri, nesneleri isimlendirme (Kimlikleyiciler ~ identifiers) • İsim vermede kurallar ve tavsiyeler • C# anahtar kelimeleri Mehmet Ali Hoca’dan

  31. Mehmet Ali Hoca’dan Kurallar ve Öneriler  Cevap42 42Cevap  • Kurallar • İlk karakter harfler, altçizgi • Daha sonraki karakterler rakam olabilir • Öneriler (style ~ üslup) • Tümü büyük harf olmasın • Başlangıç alt çizgi olmasın • Birden fazla kelimede her kelimenin baş harfi büyük olsun • Kısaltmalardan kaçınınız • İlk kelimenin baş harfi için başka kurallar var.  farkFark   KOTUSONUC _KotuSonuc KotuSonuckotuSonuc     Msj Mesaj 

  32. Mehmet Ali Hoca’dan C# Anahtar kelimeleri • Keyword’ler derleyiciye ayrılmış kimlikleyicilerdir Keyword’ler değişken adı olamazlar • compile-time hatası üretir • Keyword’ler yazıldığı gibi kullanılmalıdır. (Case-Sensitive) abstract, base, bool, default, if, finally int INT; // Kötü Kullanım

  33. Soru: Geçerli olmayan veya tavsiye edilmeyen kimliklemeleri bulunuz.  1 int 12sayi;  2 char $diskFiyat;  3 char ortaDeger;  4 float BUDEGER;  5 int __ilkDeger; Mehmet Ali Hoca’dan

  34. Programlama paradigmaları • Batch • Etkileşimli - olayların sürdüğü (event driven) • Prosedürel-> yapılı (structured) • Nesneye yönelik (Object oriented- OOP)

  35. Sınıf- nesne (class- object) • Veri- değişkenler • MetotlarVeri üzerinde yapılacak işlemler (Encapsulation) • Sınıf = plan • Nesne = plana göre inşa edilmiş yapı

  36. Hesap makinesi? • Veriler ne? • Birinci değer • İkinci değer • İşlemi belirten bişiy • Metotlar ne? • İnşa • Carpma, • Bölme • Toplama • Çıkarma

  37. Basitten başlayalım: A * B Gerçekten A * B’yi hesaplayan bir hesap makinesi yazalım. Bu bir nesne mi? Evet, yalnız çarpma yapabilen ucuz bir hesap makinesi... Özellikler (Properties): Birinci sayı İkinci sayı Metot? Çarpma

  38. A * B Hesap makinesi devam... public class CarpmaMakinesi { // Özellikler public double Birinci; public double Ikinci; // Metot(lar) public double Carp() { return Birinci * Ikinci; } }

  39. namespace CarpmaMakinesi { class Program { static void Main() { double IlkSayi, IkinciSayi; IlkSayi = double.Parse(Console.ReadLine()); IkinciSayi = double.Parse(Console.ReadLine()); CarpmaMakinesi Makinemiz = new CarpmaMakinesi(); Makinemiz.Birinci = IlkSayi; Makinemiz.Ikinci = IkinciSayi; Console.WriteLine ("İşte sonuç ağalar:" + Makinemiz.Carp()); } } public class CarpmaMakinesi{} } public class CarpmaMakinesi { public double Birinci; public double Ikinci; public double Carp() { return Birinci * Ikinci; } }

  40. Windows için ne yapmalıyız? public class CarpmaMakinesi { public double Birinci; public double Ikinci; public double Carp() { return Birinci * Ikinci; } } public class CarpmaMakinesi { public double Birinci; public double Ikinci; public double Carp() { return Birinci * Ikinci; } } Aradaki 7 farkı bulunuz!

  41. using System; using System.ComponentModel; using System.Windows.Forms; namespace WindowsApplication5 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void btCarpma_Click(object sender, EventArgs e) { CarpmaMakinesi Makinem = new CarpmaMakinesi(); Makinem.Birinci = double.Parse(tbIlkSayi.Text); Makinem.Ikinci = double.Parse(tbIkinciSayi.Text); lbSonuc.Text = Makinem.Carp().ToString(); } } public class CarpmaMakinesi { public double Birinci; public double Ikinci; public double Carp() { return Birinci * Ikinci; } } }

  42. private void btCarpma_Click(object sender, EventArgs e) { CarpmaMakinesi Makinem = new CarpmaMakinesi(); Makinem.Birinci = double.Parse(tbIlkSayi.Text); Makinem.Ikinci = double.Parse(tbIkinciSayi.Text); lbSonuc.Text = Makinem.Carp().ToString(); } } public class CarpmaMakinesi { public double Birinci; public double Ikinci; public double Carp() { return Birinci * Ikinci; } } Sınıf(Class) Nesne(Object)

  43. public class HesapMakinesi { public string Birinci, Ikinci, Islem, Sonuc; int a, b, c; public void Carp() { a = int.Parse(Birinci); b = int.Parse (Ikinci); c = (a * b); Sonuc = c.ToString(); }........................ } public variables private variables metot

More Related