Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

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

Benzer bir sunumlar


... konulu sunumlar: "C# Prof. Dr. İskender Öksüz Araştırma Görevlisi Alpay Şahin"— Sunum transkripti:

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 Giriş- Çıkış Cihazları Input Output Equipment Ana Hafıza (RAM) Main Memory Ş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
(A’daki değeri reg. yükle) Hex: (B’deki değerle çarp) Hex: (C’deki değeri reg. ile topla) Hex: (Registerdeki değeri X’e taşı) Hex: İ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
147 = DD = 221 255 = FF

7 Makine dili - Assembler
X = A * B + C MOV A, ACC MUL B, ACC ADD C, ACC STO ACC, X

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

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

10

11

12

13

14

15 http://www.digibarn.com/collections/ posters/tongues/tongues.jpg

16 Derleme (Compilation)
Kaynak kod (Source code) Source module Üst seviye dili X = A * B + C Ara dil (Java, C#) Derleyici (compiler) (Scriptlerde yok) Makine dili Object code Object module

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

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

19 İ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

20 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(); }

21 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(); }

22 Tepeden bakış: namespace KaraEkranÇarpmaMakinesi { class Program
static void Main() } public class HesapMakinesi

23 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(); }

24 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

25 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 = 1256; int birinciSayi; birinciSayi = 1256; string strBirinci = “Bu takım” string strBirinci; strBirinci = “Bu takım”

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

27 C# veri tipleri Tip Bit? Değerler bool 8 true – false char 16
‘\u0000’ - ‘\uFFFF’ byte sbyte short ushort 0 – int 32 Tip Bit? Değerler uint 32 0 – ulong 64 decimal 128 1, – 7,9 1028 float ±1, ±3,4 1038 double ±5, ±1,7, 10308 string object

28 Atama ifadesi: Assignment statement
= variable = expression object = expression

29 Aritmetik operatörleri
C# ifadesi + f + 7 - p - c * b * m / x / y % x % s Mantık operatörleri Operatör C# ifadesi = = x = = y != x != y > x > y < x < y >= x >= y <= x <= y

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

31 Operatörler devam... Operatör C# ifadesi && bool a && bool b ||
++ a++ veya ++a -- a-- veya --a << >> & | bitlerle oynama

32 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!

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

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

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

36 Kurallar ve Öneriler           Kurallar
Mehmet Ali Hoca’dan 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. Cevap42 42Cevap fark Fark KOTUSONUC _KotuSonuc KotuSonuc kotuSonuc Msj Mesaj

37 C# Anahtar kelimeleri Mehmet Ali Hoca’dan 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 Here is a complete list of the 76 C# keywords: int INT; // Kötü Kullanım

38 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

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

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

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

42 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

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

44 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; }

45

46 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!

47

48 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;

49 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)

50 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

51 X static void Main(string[] args) {
HesapMakinesi.Birinci = Console.ReadLine(); HesapMakinesi.Islem = Console.ReadLine(); HesapMakinesi.Ikinci = Console.ReadLine(); if (HesapMakinesi.Islem == "x") HesapMakinesi.Carp(); if (HesapMakinesi.Islem == "/") HesapMakinesi.Bol(); if (HesapMakinesi.Islem == "+") HesapMakinesi.Topla(); if (HesapMakinesi.Islem == "-") HesapMakinesi.Cikar(); Console.WriteLine(HesapMakinesi.Sonuc); Console.ReadLine(); }

52 static void Main(string[] args)
{ HesapMakinesi HM = new HesapMakinesi(); HM.Birinci = Console.ReadLine(); HM.Islem = Console.ReadLine(); HM.Ikinci = Console.ReadLine(); if (HM.Islem == "x") HM.Carp(); if (HM.Islem == "/") HM.Bol(); if (HM.Islem == "+") HM.Topla(); if (HM.Islem == "-") HM.Cikar(); Console.WriteLine(HM.Sonuc); Console.ReadLine(); }

53 using System; namespace HesapMakinesi { class Program static void Main(string[] args) HesapMakinesi HM = new HesapMakinesi(); } public class HesapMakinesi değişkenler public void Carp() metotlar

54 Laboratuar ödevi: Dört işlem yapan makineyi Windows ortamında programlayın. Dikkat edin: Dört işlem için ayrı ayrı düğmeler kullanırsanız, Hesapla() diye bir metot yazıp switch veya bir sürü if’le uğraşmanız gerekmiyor: Her düğme için basit bir metot yazmanız yeterli.

55 Ara: Algoritma ~ El Harezmî
Ebû Cafer Muhammed bin Musâ el- Harizmî (Ölümü: 847) İlk cebir kitabının yazarı: "Kitabı muhtasar fi hisabil- cebr ve’l mukabele" İlk "algoritma" fikri de onun; o yüzden adını taşıyor… Lâtinceye çevirirken H ile G’yi karıştırmışlar: H: ﺧ G: ﻏ

56 Ödev: Harezmî’nin anısına… 2 x2 – 19 x + 35 = 0
(Harezmî, daha önce ismin verdiğimiz kitabında ikinci derece denkleminin çözümüyle uğraşmış, bir çok hal için çözmüş ve ilk defa iki kök bulunduğunu fark etmiştir.) Mesela: 2 x2 – 19 x + 35 = 0 Böyle bir denklemi çözmek için IkinciDerece adlı bir class yazın. Sonra bu class’ı kullanacak bir Windows uygulaması yazın.

57 ax2 + bx + c = 0 Değişkenler a, b, c, x1, x2, delta, kokDelta
Metotlar: “constructor” private diskriminantHesapla public KokleriHesapla

58 Değişkenler: a, b, c, x1, x2, delta, kokDelta
class IkinciDerece{ double a, b, c, x1, x2, delta, kokDelta; }

59 double a, b, c, x1, x2, delta, kokDelta; double diskriminantHesapla{
Metotlar: “constructor”, diskriminantHesapla, KokleriHesapla class IkinciDerece{ double a, b, c, x1, x2, delta, kokDelta; double diskriminantHesapla{ delta = b * b - 4.* a * c; return Math.Sqrt(delta); } public void KokleriHesapla{ kokDelta = diskriminantHesapla(); x1 = (-b + kokDelta) / (2.*a); x2 = (-b - kokDelta) / (2.*a);

60 class IkinciDerece{ double a, b, c, x1, x2, delta, kokDelta; bool gercek ; double diskriminantHesapla{ delta = b * b - 4.* a * c; if(delta < 0) { gercek = false; return Math.Sqrt(-delta); } gercek = true; return Math.Sqrt(delta);

61 class IkinciDerece{ double a, b, c, x1, x2, delta, kokDelta; bool gercek ; double diskriminantHesapla{ delta = b * b - 4.* a * c; if(delta < 0) { gercek = false; return Math.Sqrt(-delta); } else{ gercek = true; return Math.Sqrt(delta);

62 double a, b, c, xR1, xI1, xR2, xI2, delta, kokDelta;
bool gercek ; public void KokleriHesapla(){ kokDelta = diskriminantHesapla(); if(gercek){ xR1 = (-b + kokDelta) / (2.*a); xR2 = (-b - kokDelta) / (2.*a); } else{ xR1 = -b / (2 * a); xR2 = xR1; xI1 = kokDelta / (2. * a); xI2 = - xI1;

63 X ... IkinciDerece Denklem = new IkinciDerece(); Denklem.a = 2;
Denklem.b = -19.; Denklem.c = 35; Denklem.KokleriHesapla(); ... Denklem.xR1, Denklem.xR2, ... class IkinciDerece{ double a, b, c, xR1, xI1, xR2, xI2, delta, kokDelta; bool gercek ; double diskriminantHesapla{...} public void KokleriHesapla{...} }

64 Nesnenin değişkenlerinin dışardan kullanılması
1. Çözüm: Bütün özellikleri “public” yapmak. Bu, nesne yönelim felsefesine tamamen zıttır. Nesnelerin değişkenleri ve metotlarının nasıl çalıştığı, tam tersine, kullanıcı programlardan gizlenmelidir. Doğru çözüm: Gerekli minimum sayıda public değişken, nesnenin kontrolü altında nesnenin iç değişkenlerine değer vermelidir.

65 ... IkinciDerece Denklem = new IkinciDerece(); Denklem.A = 2; Denklem.B = -19.; Denklem.C = 35; Denklem.KokleriHesapla(); ... Denklem.XR1, Denklem.XR2, ... class IkinciDerece{ public double A, B, C, XR1, XI1, XR2, XI2 private double a, b, c, xR1, xI1, xR2, xI2, delta, kokDelta; private bool gercek ; private double diskriminantHesapla(){...} public void KokleriHesapla(){...} }

66 A a; B b; C c değerleri nasıl geçirilecek?
1. Metotlarda gerektikçe (Q&D yöntem) : public void KokleriHesapla(){ kokDelta = diskriminantHesapla(); if(gercek){ xR1 = (-b + kokDelta) / (2.*a); xR2 = (-b - kokDelta) / (2.*a); } else{ xR1 = -b / (2 * a); xR2 = xR1; xI1 = kokDelta / (2. * a); xI2 = - xI1; XR1= xR1; XI1 = xI1; XR2 = xR2; XI2 = xI2;

67 A a; B b; C c değerleri nasıl geçirilecek?
2. Namuslu yöntem: private double a; public double A{ get{ return a; } set{ a = value;

68 “Get”, “Set” başka işlere de yarar
2. Namuslu yöntem: private double a; public string A{ get{ return a.ToString(); } set{ a = Convert.ToDouble(value);

69 Özet Her şey nesne- object.
Sınıflar, nesnelerin planlarıdır. Classes are blueprints of objects Programda nesneler çalışır, sınıflar değil. Nesne yaratmak için Sınıf_ismi nesne_ismi = new Sınıf_ismi(); HesapMakinesi HM = new HesapMakinesi(); kullanılır. Sınıftan nesne yaratmak: Instantiation Her nesne bir sınıfın bir “instance”ıdır.

70 Sınıflar public/private sınıf_adı {
public/private type değişkenler public/private sınıflar public/private type metotlar }

71 Sınıf değişkenleri Sınıfın değişkenleri tiplerinden (double, int, string, v. s.) başka public veya private olabilir. public belirtilmemişse hükmen (default) private olurlar. public değişkenlere dışarıdan değer verilebilir; değerleri alınıp kullanılabilir. Bunlara nesnenin özellikleri - (property) denir.

72 Sınıf değişkenleri... devam
HM.A = 3.12; ... Sonuc = HM.X1R ... public class HesapMakinesi{ public double A, X1R; private double a, x1R; public/private BirMetot(){ a = A; }

73 Doğrusu: … HM.A = 3.12; ... Sonuc = HM.A ...
public class HesapMakinesi{ private double a; public double A{ get{ return a; } set{ a = value; }

74 Sınıf değişkenleri... devam
Getter ve setter kullanılarak görülen ve değer atanan değişkenlere “özellik” (“property”) deniliyor. (Get ve set kullanmasanız da böyle derleniyor.) Get ve set’in içinde kullanılan değerleri kontrol edebilir, tip değişiklikleri yapabilir, varsayılan değerler verebilirsiniz.

75 Metotlar Sınıf içinde tanımlanması:
public/private return_type metot_adı (parametreler){ ..... } public void KokleriHesapla(){ ... Dışarda kullanılması: object.metot_adı (parametreler); HM.KokleriHesapla ();

76 Özel bir sınıf cinsi: static
Console.ReadLine(); public static Main(){ ... } Yüklendiği anda object olarak inşa edilir. Tek kopyası vardır. Instance- instantiation

77 Özel bir metot cinsi: Constructor
HesapMakinesi HM = new HesapMakinesi(); Sınıfla aynı ismi taşır. Tipsizdir (return değeri ve tipi yoktur). Parametreleri bulunabilir. Constructor

78 Constructor... devam IkinciDerece Denklem = new IkinciDerece(); yerine
IkinciDerece Denklem = new IkinciDerece(A, B, C); O zaman sınıfın içinde: public class Ikinci Derece{ private double a, b, c; public IkinciDerece(double A, double B, double C){ a = A; b = B; c = C; } }

79 Constructor... devam Bazen şu stil kullanılıyor:
public class Ikinci Derece{ private double a, b, c; public IkinciDerece(double a, double b, double c){ this.a = a; this.b = b; this.c = c; } }

80 Biraz eğlenelim: Zar atmak...

81 Önce fotoğrafları bulalım ve debug klasörüne yerleştirelim.
1.png 4.png 5.png 2.png 6.png 3.png

82 public class Zar{ int yuz; PictureBox hangiKutu; Random rastgele;
public Zar(PictureBox HangiKutu) { rastgele = new Random(); hangiKutu = HangiKutu; } public void at() yuz = rastgele.Next( 1, 7); hangiKutu.Load(yuz.ToString() + ".png"); hangiKutu.Refresh();

83 Visual Studio Windows Form
picboxZar1 button1

84 public partial class Form1 : Form
{ Zar zarBir; public Form1() InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { zarBir = new zar(picboxZar1); zarBir.at(); private void button1_Click(object sender, EventArgs e) zarBir.at();

85 Deneyim Bakiim... Bir zar

86 İki zar yapıp tavla oynayalım...
public partial class Form1 : Form { Zar zarBir; Zar zarIki; public Form1(){InitializeComponent();} private void Form1_Load(object sender, EventArgs e) { zarBir = new zar(picboxZar1); zarBir.at(); zarIki = new zar(picboxZar2); zarIki.at(); } private void button1_Click(object sender, EventArgs e) { zarBir.at();

87 Formdaki ilaveler İki zar

88 Sizin laboratuarda yapmanızı istediğim
Oyun makinesi Bir böcü temizleme görevi: Niçin çok kazanılıyor?

89 İpucu: public void Yuvarla(PictureBox pbox) { at(); Thread.Sleep(100);
}

90 public void Yuvarla(PictureBox pbox)
{ at(); for(int i = 0; i < 7; i = i +1){ Thread.Sleep(100); } public void Yuvarla(PictureBox pbox) { at(); Thread.Sleep(100); } i += 1 i++

91 Akış kontrolu: Dallanmalar if switch ? Tekrarlar for while do - while

92 if if(önerme) ifade; if(önerme){ ifade; ifade .... }
if( a > b) x = Math.Sqrt(a-b); if( a > b){ x = a * a - b * b; y = Math.Sqrt(x); }

93 if if(grade >= 60) tbSonuc.Text = “Geçti”; if(grade >= 60){
print “Passed” Grade >= 60 true false if(grade >= 60) tbSonuc.Text = “Geçti”; if(grade >= 60){ tbSonuc.Text = “Geçti”; }

94 if if( a > b) x = Math.Sqrt(a-b); else x = Math.Sqrt(b-a);
if(önerme) ifade; else ifade; if(önerme){ ifade; .... } else{ ifade; ifade: ..... { if( a > b) x = Math.Sqrt(a-b); else x = Math.Sqrt(b-a); if( a > b){ x = a * a - b * b; y = Math.Sqrt(x); } else{ x = b * b - a * a; y = Math.Sqrt(x);

95 if tbSonuc = (grade >= 60 ? “Geçti”: “Kaldı”)
print “Passed” print “Failed” false true if(grade >= 60) tbSonuc.Text = “Geçti”; else tbSonuc.Text = “Kaldı”; if(grade >= 60){ tbSonuc.Text = “Geçti”; } else{ tbSonuc.Text = “Kaldı”; tbSonuc = (grade >= 60 ? “Geçti”: “Kaldı”)

96 ? if Peki, geçti ve kaldıdan başka sonuç yok mu?
95’in üstündeyse AA ver, altındaysa BA ver. ? if(grade >= 90){ tbSonuc.Text = “AA”; } else{ tbSonuc.Text = “BA”; if(grade >= 95){ tbSonuc.Text = “AA”; } else if(grade >= 90{ tbSonuc.Text = “BA”; else if(grade >= 70{ ....

97 if if(grade >= 95){ tbSonuc.Text = “AA”; } else if(grade >= 90){
tbSonuc.Text = “BA”; else if(grade >= 85){ tbSonuc.Text = “BB”; else if (grade >= 80){ tbSonuc.Text = “CB”; else if (grade >= 75){ tbSonuc.Text = “CC”; if if(grade >= 70){ tbSonuc.Text = “DC”; } else if(grade >= 65){ tbSonuc.Text = “DD”; else if(grade >= 60){ tbSonuc.Text = “FD”; else { tbSonuc.Text = “FF”;

98 if if(önerme){ } else if(önerme){ else{ Aslında... if(önerme){ } else{
X if(önerme){ } else{ X

99 Notlara devam: Tersten alalım:
if(sonuc = = “AA”){ tbNot.Text = “ arası”; } else if(sonuc = = “BA”){ tbNot.Text = “ arası”; else if(sonuc = = “BB”) {tbNot.Text = “ arası”; else if (sonuc = = “CB”){ tbNot.Text = “ arası”; else if (sonuc = = CC){ tbNot.Text = “ arası”; if(sonuc = = “DC”){ tbNot.Text = “ arası”; } else if(sonuc = = “DD”){ tbNot.Text = “ arası”; else if(sonuc = = “FD”) {tbNot.Text = “ arası”; else if (sonuc = = “FF”){ tbNot.Text = “0- 59 arası”; else{ tbNot.Text = “Böyle bir not yok!”;

100 Notlara devam: Tersten alalım:
if(sonuc = = “AA”){ tbNot.Text = “ arası”; } else if(sonuc = = “BA”){ tbNot.Text = “ arası”; else if(sonuc = = “BB”) {tbNot.Text = “ arası”; ---- else { tbNot.Text = “Böyle bir not yok”; switch(sonuc){ case “AA”: tbNot.Text = “ arası”; break; case “BA”: tbNot.Text = “ arası”; case “BB”; tbNot.Text = “ arası”; ---- default: tbNot.Text = “Böyle bir not yok!” }

101 int cinslerinden biri, char, string
Switch grameri: int cinslerinden biri, char, string case sabit: ifade; ... break; default: --- } switch(ifade){ case sabit: ifade; ... break; --- Aynı cins sabit

102 Tekrarlar Tekrarlar for while do - while

103 for for(tarif ve ilk değer; kontrol; değişim){ ifade; ----- }
for(int i = 0; i < 7; i++){ Thread.Sleep(100); at();

104 Tekrarlar for(int i = 0; i < 7; i ++){ Thread.Sleep(100); at(); }
for(i = 0; i < 7; i++){ Thread.Sleep(100); at(); }

105 Tekrarlar int i; for(i = 0; i < 7; i++){ Thread.Sleep(100); at(); }
while(i < 7){ Thread.Sleep(100); at(); i++; } int i = 0; do{ Thread.Sleep(100); at(); i++; } while(i < 7);

106 Ödev: Bir Acı sınıfı kuralım
1) Açı değerini alarak kurulsun. Açıyı derece cinsinden alsın, kurulurken en küçük radyan değerine çevrilsin. (1 rad = 180/π) π = 3, 2) Set de aynı şeyi yapsın. 3) Get derece döndürsün. 5) Sinüs hesaplayan bir metot olsun Sin x = x – x3/3! + x5/5! – x7/ 7! + ... 6) Kosinüs hesaplayan bir metot olsun Cos x = 1 – x2/2! + x4/4! – xN/N! + … 7) Bir Acı nesnesinin hesapladığı Sin ve Cos ile Math sınıfının hesapladıklarını karşılaştırarak yaptığınızı denetleyin.

107 Direnc (1) Direnc isimli bir sınıf yazın.
Constructor, ohm cinsinden direnç yazılarak bir direnç nesnesi kursun. Paralel adlı bir metot, iki direnç paralel bağlandığında sonucu versin. Seri adlı bir metot, iki direnç seri bağlandığında sonucu versin. Seri: R = R1 + R2 (1) Paralel: 1/R = 1/ R1 + 1/R2 (2) veya R = (R1R2)/(R1 + R2) (2') İpucu: (Meselâ) şöyle çalışacak: ..... Direnc Rezistans1 = new Direnc(15.5); Direnc Rezistans2 = new Direnc(8.2); ... real paralelDirenc = Rezistans1.Paralel(Direnc2.R); real seriDirenc = Rezistans1.Seri(Direnc2.R);

108 Direnc...

109 Direnc... { public Form1() {InitializeComponent();}
public partial class Form1 : Form { public Form1() {InitializeComponent();} private void Seri_Click(object sender, EventArgs e) Direnc D1 = new Direnc(Convert.ToDouble(textBox1.Text)); Direnc D2 = new Direnc(Convert.ToDouble(textBox2.Text)); lblSonuc.Text = "R1 + R2 = " + (D1.Seri(D2.R)).ToString() + " Ohm"; } private void Paralel_Click(object sender, EventArgs e) lblSonuc.Text = "R1 // R2 = " + (D1.Paralel(D2.R)).ToString() + " Ohm"; Direnc...

110 public class Direnc { double r; public double R get return r; } set r = value; public Direnc(double r) { this.r = r; } public double Seri(double DigerR) return (r + DigerR); public double Paralel(double DigerR) return (r * DigerR / (r + DigerR));

111 Gun sınıfı Nesne, haftanın kaçıncı günü olduğu belirtilerek kurulacaktır: “Pazartesi”= 0, “Salı”=1 gibi. Gun sınıfının şu üç metodu olacaktır: Sayiya(), günün kaçıncı gün olduğunu sayıyla verecektir. “Pazartesi” ise 0, Salı ise 1 gibi... 0’dan başlayarak. Yaziya(int birsayı), günün ismini verecektir. Topla(int kacgun), kacgün sonra hangi gün olduğunu yazıyla verecektir.

112 Gun sınıfı

113 public class Gun { int kacincigun; public int KacinciGun get return kacincigun; } public Gun(int kacincigun) this.kacincigun = kacincigun;

114 Gun... public string Topla(int Sonra) { int sonuc;
sonuc = (kacincigun + Sonra) % 7; return Yaziya(sonuc); }

115 public int Sayiya(string gunismi)
{ int hangiGun; switch (gunismi) case "Pazartesi": hangiGun = 0; break; case "Salı": hangiGun = 1; case "Çarşamba": hangiGun = 2; case "Perşembe": hangiGun = 3; case "Cuma": hangiGun = 4; break; case "Cumartesi": hangiGun = 5; case "Pazar": hangiGun = 6; default: hangiGun = -1; } return hangiGun;

116 public string Yaziya(int ggun)
{ string strGun; switch (ggun) case 0: strGun = "Pazartesi"; break; case 1: strGun = "Salı"; case 2: strGun = "Çarşamba"; case 3: strGun = "Perşembe"; case 4: strGun = "Cuma"; break; case 5: strGun = "Cumartesi"; case 6: strGun = "Pazar"; default: strGun = "Yok böyle gün"; } return strGun;

117 Ay sınıfını laboratuarda yapınız
Tıpkı gün gibi Aylar arasında kodlanıyor Sayiya ve Yaziya metotları var Topla metodu var

118 Aci Gecen hafta yazdığınız Aci sınıfına iki metot veya property ekleyin: Radyana(double derece) Dereceye(double radyan) --- Aci BirAci = new Aci(45.0); BirAci.Derece(); //Bunun değeri 45.0 olsun BirAci.Radyan(); // Bunun değeri π/4 olsun. Nasıl yapacağınızı bilmediğim için parametreleri çeşitli yazdım...

119 Hesap Makinesi İlk derslerde yazdığınız hesap makinesi sınıfına üst alma özelliğini ekleyin. Öyle ki makine gerçek sayılarla toplama, çıkarma, çarpma, bölme yapmanın yanı sıra, bir gerçek sayını bir tam sayı üstünü de alsın. Yazacağınız program XY şeklinde X’in Y’inci kuvvetini alacaktır. Y, tam sayıdır. Üst alma metodunda (adı Ust olsun), girilen Y sayısı tam sayı değilse, tam sayıya yuvarlanacaktır. Pozitif değilse de işlemi doğru yapacaktır.

120 Üst alma public double Ust(double X, int Y){ double sonuc = 1.0
if(Y > 0){ for(int i = 0; i < Y; i++){ sonuc *= X; } else{ for(int i = 0; i > Y; i--){ sonuc /= X; return sonuc;

121 Ödev Uzaktaki bir cismin bize uzaklığını ölçmek için kullanılan ve temelde iki dürbünden oluşan mesafe tayin cihazı (telemetre) yandaki şekilde şemayla gösterilmiştir. Telemetrenin iki gözü arasındaki uzaklık S, D uzaklığına bakarken dürbünün yaptığı açı B ise D = S/2 tgB bağıntısı ile uzaklık hesaplanır. (D / (S/2) nin, B açısının tanjantıdırBu telemetrenin firmwareinde kullanılacak programı yazacaksınız. Bir telemetre nesnesi, s değeri belirtilerek kurulur.

122 Telemetre sınıfı Kullanan program (Console veya Windows programı- her ikisini de yazınız.) Açı hatalıysa: Aci 0’dan kucuk ve 90 dereceden buyuk olamaz. Siz girdiniz. gibi bir mesaj verecektir. Açı doğruysa Mesafe santimdir gibi sonuç yazılacaktır.

123 Telemetre Mesafe(double aci) metodu, derece cinsinden açıyı alıp mesafeyi verir. Açı 90 veya daha büyük, 0 veya daha küçükse Mesafe -1. değerini verir. Kullanan program bundan faydalanarak hata mesajı gönderir: Metot önce açının 0 derece ile 90 derece arasında bulunduğunu kontrol edecek, açı negatif veya 90’a eşit veya 90’dan büyükse verecektir. Açı doğru girilmişse D = S/2 tg(B * ) tg için Math sınıfındaki fonksiyonu veya geçen hafta yazdığınız Aci sınıfını kullanın.

124

125 public partial class TeleForm : Form
{ public TeleForm() InitializeComponent(); } private void btnMesafeHesapla_Click(object sender, EventArgs e) {---} public class Telemetre {---} public class Aci {---}

126 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Telemetri { public partial class TeleForm : Form public TeleForm() InitializeComponent(); } public class Telemetre double s; public Telemetre(double s) this.s = s; public double Mesafe(double dblAci){ if(dblAci <= 0.0 || dblAci >= 90.0)return -1.0; Aci aciTele = new Aci(dblAci); return( (s/2.0)* aciTele.Tanjant()); public class Telemetre { double s; public Telemetre(double s) this.s = s; } public double Mesafe(double dblAci){ if(dblAci <= 0.0 || dblAci >= 90.0)return -1.0; Aci aciTele = new Aci(dblAci); return( (s/2.0)* aciTele.Tanjant());

127 Aci sınıfına ek metot: Tanjant()
public class Aci { double radyan; public Aci(double Derece) {---} public double Tanjant() return this.Sinus() / this.Cosinus(); } public double Sinus() {---} public double Cosinus() {---}

128 private void btnMesafeHesapla_Click(object sender, EventArgs e)
{ if (tbGozUzakligi.Text = = "") MessageBox.Show("Göz uzaklığını gir!"); return; } if (tbAci.Text = = "") MessageBox.Show("Açıyı gir!"); Telemetre objTelemetre = new Telemetre(Convert.ToDouble(tbGozUzakligi.Text)); double Uzaklik = objTelemetre.Mesafe(Convert.ToDouble(tbAci.Text)); if (Uzaklik < 0) MessageBox.Show("Açı sıfırdan büyük ve doksandan küçük olmalı!"); lblSonuc.Text = "Cismin uzaklığı " + Uzaklik.ToString() + "cm dir.";

129 Geçen haftanın Aci sınıfı

130 public partial class frmAci : Form
{ public frmAci() { InitializeComponent();} private void btHesapla_Click(object sender, EventArgs e) Aci birAci = new Aci(Convert.ToDouble(tbGiris.Text)); lblMathSin.Text = (Math.Sin(birAci.Radyan).ToString())+ " Math Sin"; lbBizimSin.Text = (birAci.Sinus()).ToString() + " Bizim Sin"; lblMathCos.Text = (Math.Cos(birAci.Radyan)).ToString()+ " Math Cos"; lblBizimCos.Text = (birAci.Cosinus()).ToString() + " Bizim Cos"; }

131 public class Aci { double radyan; public double Radyan get return radyan; } const double faktor = / 180.0; public Aci(double Derece) radyan = Derece * faktor;

132 public double Sinus() {//Sin x = x – x3/3! + x5/5! – x7/ 7! + ... double sonuc = radyan; double eski = radyan; double epsilon = 1.0D - 14; double fark; double terim; for (int i = 3; i < 101; i += 2) { terim = -eski * radyan * radyan / (i * (i - 1)); sonuc += terim; fark = terim / sonuc; if (fark < 0) fark = -fark; if (fark < epsilon) { return sonuc; } eski = terim;

133 public double Cosinus()
{ // Cos x = 1 – x2/2! + x4/4! – xN/N! + … double sonuc = 1.0; double eski = 1.0; double epsilon = 1.0D - 14; double fark; double terim; for (int i = 2; i < 101; i += 2) { terim = -eski * radyan * radyan / (i * (i - 1)); sonuc += terim; fark = terim / sonuc; if (fark < 0) fark = -fark; if (fark < epsilon) { return sonuc; } eski = terim;

134 Diziler Array ArrayList HashTable SortedList

135 Array type [] array_identifier = new type[];
string [] Gunler = new string[7]; Gunler[0] = “Pazartesi”; Gunler[1] = “Salı”; Gunler[3] = “Çarşamba” veya string[] Gunler = {“Pazartesi”, “Salı”, “Çarşamba”, “Perşembe”, “Cuma”, “Cumartesi”};

136 Array Avantajlar: Kolay (her programlama dilinde var) Hızlı
Üyenin tipini siz belirliyorsunuz Dezavantajlar Boyu sabit Araya üye sokmak zor

137 Gun sınıfında günleri array yapsaydık
Gun sınıfında günleri array yapsaydık... string[] Gunler = {“Pazartesi”, “Salı”, “Çarşamba”, “Perşembe”, “Cuma”, “Cumartesi”}; public string Yaziya(int ggun) { return Gunler[ggun]; } public int Sayiya(tring gunismi) return Gunler.IndexOf(gunismi);

138 Gun sınıfında günleri array yapsaydık
Gun sınıfında günleri array yapsaydık... string[] Gunler = {“Pazartesi”, “Salı”, “Çarşamba”, “Perşembe”, “Cuma”, “Cumartesi”}; Gunleri ard arda yazmak istiyoruz: lbl.Text = “Pazartesi ” + “Salı ” + “ Çarşamba” yerine: lbl.Text = “”; foreach(string gun in Gunler){ lbl.Text += gun; } gun + “ “;

139 Arraylist ArrayList identifier = new ArrayList();
ArrayList gunler = new ArrayList(); Peki boyu belli değil... gunler.Add(“Pazartesi”); gunler.Add(“Salı”); gunler[0].ToString() >>> “Pazartesi” verir.

140 Arraylist ArrayList gunler = new ArrayList();
İşe yarayan bazı özellik (property) ve metotlar: gunler.Count >>>> 7 verir (bütün günler girilmişse) gunler.Clear(); gunler.RemoveAt(1); gunler.Reverse(); gunler.Sort(); gunler.Remove(“Çarşamba”);

141 ArrayList foreach ile çalışır. Her türlü nesneyi taşır
Avantajlar: Otomatik boy Üye sokup çıkarmak çok kolay Kolay kullanış Dezavantaj Yavaş

142 Hashtable ArrayList gibi... Fakat indeks yerine nesne var. (Kullanımda nesne genellikle string) Hashtable Ulke = new Hashtable(), Ulke[“tr”] = “Türkiye”; Ulke[“de”] = “Almanya”; Ulke[“to”] = “Tonga”; veya Ulke.Add(“tr”, “Türkiye”); Ulke.Add(“de”, “Almanya”);

143 Hashtable Bir üyeye ulaşmak için: string hangiUlke = Ulke[“tr”];
hangiUlke’nin içinde “Türkiye” vardır. foreach kullanımı: foreach(DictionaryEntry ulkeler in Ulke){ ---- }

144 Hashtable Avantajlar: Esnek kullanım Hızlı bulma... Dezavantajlar
Sıraya sokulamaz Kuruluş yavaş, yeni üye sokmak yavaş

145 SortedList ArrayList gibi, fakat eleman eklendikçe otomatik olarak sıraya sokuyor. Hashtable gibi, fakat sıraya sokamama problemi yok Meselâ: Öğrenci isimlerini otomatik sıraya sokarak bir öğrenci koleksiyonu yaratabilir. Kelime- açıklama ikilisi ile sözlük yaratabilir...

146 Laboratuvar ve ödev Öğrenci sınıfı yazın. Numara, İsim, Not özellikleri olsun Sınıf sınıfı yazın. İçinde uygun dizi çeşitleriye öğrenci nesnelerini taşısın. Sınıf nesnelerinin ortalama hesaplayacak bir metodu olsun. Ortalam hesabında foreach kullansın. Kullanıcı ara yüzü numaraya veya isme göre (istenirse birine, istenirse diğerine göre), numara, isim, notu versin. Sınıf ortalaması da görünsün. Temel dizi, ArrayList, HashTable ve SortedList kullanarak ayrı ayrı yapın.

147 Sınıf ve Ogrenci uygulaması

148 Sınıf- öğrenci public class Ogrenci { int numarasi; string ismi;
Single notu = -1.0F; public Single Notu{ get{ return notu; } public Ogrenci(int numarasi, string ismi) { this.numarasi = numarasi; this.ismi = ismi; public void Notver(Single notu) { this.notu = notu;

149 Sınıf- öğrenci public class Sinif { int ogrenciSayisi = 0;
public int OgrenciSayisi { get return ogrenciSayisi; } ArrayList ogrenciler; public ArrayList Ogrenciler{ return ogrenciler; public Sinif(){ ogrenciler = new ArrayList();

150 Sınıf- öğrenci public void Kayit(int numarasi, string ismi,Single notu) { Ogrenci birOgrenci = new Ogrenci(numarasi, ismi); ogrenciler.Add(birOgrenci); birOgrenci.Notver(notu); ogrenciSayisi++; } public Single Ortalama() { Single ortalama = 0.0F; int kacnot = 0; foreach (Ogrenci ogr in ogrenciler) { if (ogr.Notu < 0.0F) continue; ortalama += ogr.Notu; kacnot++; return ortalama / kacnot;

151 Asal sayılar

152 Asal sayılar private void btBul_Click(object sender, EventArgs e) {
if (tbIlkSayi.Text == "" || tbSonSayi.Text == "") MessageBox.Show("İlk ve son sayiları girmelisiniz"); return; } int ilk = Convert.ToInt32(tbIlkSayi.Text); int son = Convert.ToInt32(tbSonSayi.Text); if (son <= ilk) MessageBox.Show("Son sayı ilkinden büyük olmalı!");

153 Asal sayılar AsalSayi asalSayilar = new AsalSayi();
ArrayList sayilar = asalSayilar.Asallar(ilk, son); lblAsalSayilar.Text = ""; if (sayilar.Count == 0) { lblAsalSayilar.Text = "Bu aralıkta asal sayi yok."; return; } foreach (int asayi in sayilar) lblAsalSayilar.Text += asayi.ToString() + "\n"; } // Form’un btBul_Click metodunun sonu

154 Asal sayılar public class AsalSayi { ArrayList sayilar;
public ArrayList Asallar(int ilksayi, int sonsayi) { for (int i = ilksayi; i <= sonsayi; i++) bool asal = true; for (int j = 2; j < i; j++) if (i / j * j == i) asal = false; break; } if (asal) sayilar.Add(i); return sayilar; } // AsalSayi sınıfının sonu Asal sayılar public class AsalSayi { ArrayList sayilar; public AsalSayi() sayilar = new ArrayList(); } public int KacTane get return sayilar.Count;

155 Gerçek problemler: 2) En küçük kareler metodu
Fiyat 160 180 200 220 240 260 280 Satış 126 103 82 75 40 20

156 …en küçük kareler Yapılması gereken: Kavuniçi parçaların toplamını minimize etmek! Toplamını?... Mutlak değerlerinin toplamını veya karelerinin toplamını.

157 …en küçük kareler Eğrinin denklemi y = ax + b ise farkların karelerinin toplamını en küçük yapacak şekilde a ve b ayarlanmalı. Her xi değeri için fark2 = (a xi+ b – yi)2 Fark karelerinin toplamı = Σi(a xi+ b – yi)2 En küçük yapmak demek, a ve b’ye göre türev alıp sıfıra eşitlemektir…

158 …en küçük kareler Fark karelerinin toplamı = Σi(a xi+ b – yi)2
En küçük yapmak demek, a ve b’ye göre türev alıp sıfıra eşitlemektir… a’ya göre: 2 Σixi(a xi+ b – yi) = 0 düzenlersek: a Σixi2+ b Σixi – Σixiyi = 0 b’ye göre: 2 Σi(a xi+ b – yi) = 0 düzenlersek: a Σi xi+ n b – Σiyi = 0

159 …en küçük kareler a Σixi2+ b Σixi = Σixiyi a Σi xi+ b n = Σiyi
İki bilinmeyen için iki denklem! Toplamlara isim verelim… Kolay olsun: X2 = Σixi2 X = Σixi XY = Σixiyi Y = Σiyi D = X2 * n – X*X a = (XY * n – X * Y) / D b = (X2 * Y – X * XY) / D

160 …en küçük kareler

161 …en küçük kareler public class VeriNoktasi { float x;
public float X{ get { return x; } float y; public float Y{ return y; public VeriNoktasi(float x, float y) { this.x = x; this.y = y; public class Veriler { int verisayisi = 0; public int VeriSayisi { get { return verisayisi; } VeriNoktasi[] xvey = new VeriNoktasi[100]; public VeriNoktasi[] XveY { return xvey; public void Ekle(VeriNoktasi Nokta) { XveY[verisayisi] = Nokta; verisayisi++;

162 …en küçük kareler public class EnKucuk { public void Hesapla() {
Veriler veri; float x, y, x2, xy; float a, b; public float ASonuc { get { return a; } public float BSonuc { get { return b; public EnKucuk(Veriler veri) { this.veri = veri; public void Hesapla() { x = 0.0f; y = 0.0f; x2 = 0.0f; xy = 0.0f; float iks; float ye; float d; for (int i = 0; i < veri.VeriSayisi; i++) { iks = veri.XveY[i].X; ye = veri.XveY[i].Y; x += iks; y += ye; x2 += iks * iks; xy += iks * ye; } d = x2 * veri.VeriSayisi - x*x; a = (xy * veri.VeriSayisi - x * y) / d; b = (x2 * y - x * xy) / d;

163 …en küçük kareler namespace EnKucukKareler {
public partial class Form1 : Form { Veriler verilistesi; public Form1() { InitializeComponent(); verilistesi = new Veriler(); } private void btKaydet_Click(object sender, EventArgs e) { float x = Convert.ToSingle(tbX.Text); float y = Convert.ToSingle(tbY.Text); VeriNoktasi nokta = new VeriNoktasi(x, y); verilistesi.Ekle(nokta); tbX.Text = ""; tbY.Text = "";

164 …en küçük kareler private void btHesapla_Click(object sender, EventArgs e) { EnKucuk uydur = new EnKucuk(verilistesi); uydur.Hesapla(); lblSonuc.Text = "Verilere bir doğru uyduruldu.\n"; lblSonuc.Text += "Doğrunun denklemi şöyle:\n"; lblSonuc.Text += (uydur.ASonuc).ToString() + " X + "; lblSonuc.Text += (uydur.BSonuc).ToString(); } } //Form sınıfının sonu

165 İntegral Y fonksiyonunun şekilde gösterilen aralıkta sayısal integralini almak için, şekilde gösterilen yamukların alanları toplanır. Yamukların yükseklikler birbirine eşit ve S'dir. s X0 X1 X2 XN XN-1 Y0 Y1 Y2 YN-1 YN İntegral = (Y0 + YN) + S ∑ Yi Yi ler her Xi noktasında fonksiyonun değeridir. S = (YN- Y0) / N ile bulunur.

166 İntegral namespace Tamami { public partial class Form1 : Form {
public Form1() InitializeComponent(); } private void btHesapla_Click(object sender, EventArgs e) double birinci = Convert.ToDouble(tbIlk.Text); double ikinci = Convert.ToDouble(tbSon.Text); int yamukS = Convert.ToInt32(tbKac.Text); Tamami integral = new Tamami(birinci, ikinci, yamukS); double sonuc = integral.Topla(); lblSonuc.Text = sonuc.ToString();

167 İntegral public class Tamami {
double ilkdeger; double sondeger; int kacabol; public Tamami(double ilkdeger, double sondeger, int kacabol) this.ilkdeger = ilkdeger; this.sondeger = sondeger; this.kacabol = kacabol; }

168 İntegral public double Topla() {
// İntegral = (Y0 + YN) + S ∑ Yi double S = (sondeger - ilkdeger) / (double)kacabol; double integral = 0.0; double x = 0.0; for(int i = 0; i < kacabol; i++) { x += S; integral += Fun(x); } integral *= S; integral += -0.5 * (Fun(ilkdeger) + Fun(sondeger)); return integral; public double Fun(double x) { return Math.Sin(x);

169 Format Yazmada ve okumada sayının, tarihin, diğer yazılanların şeklini yönetemiyorduk. Sayı formatları Tarih formatları Kültür

170 Sayı formatları c veya C ---- para f veya F ----- tam sayı
d veya D ---- ondalık sayı x veya X ---- heksadesimal sayı e veya E bilimsel (üstel) Her birinin sonuna kaç rakam hassasiyet istediğinizi bildiren bir sayı koyabilirsiniz: F10, D5 gibi. Kendi tasarladığınız formatlar

171 Tarih formatları DateTime, zamanı, 1 Ocak 1900’den bu yana geçen milisaniye sayısını tam sayı olarak tutar. Y2K kıyamet korkusu d D Nisan :33:44 M Nisan t :33 T :33:44 F Nisan :33:44

172 Uygulama:

173 private void btCurrency_Click(object sender, EventArgs e)
{ double sayi = Convert.ToDouble(tbSayi.Text); lblSayiSonuc.Text = sayi.ToString("C"); } private void btFixed_Click(object sender, EventArgs e) lblSayiSonuc.Text = sayi.ToString("F10"); private void btYuzde_Click(object sender, EventArgs e) lblSayiSonuc.Text = sayi.ToString("P2");

174 private void btHex_Click(object sender, EventArgs e)
{ int sayi = (int) Convert.ToDouble(tbSayi.Text); lblSayiSonuc.Text = sayi.ToString("X"); } private void btBilim_Click(object sender, EventArgs e) double sayi = Convert.ToDouble(tbSayi.Text); lblSayiSonuc.Text = sayi.ToString("E5"); private void btCustom_Click(object sender, EventArgs e) lblSayiSonuc.Text = sayi.ToString("0###,###.#0");

175 TarihZaman (DateTime) formatları
private void btdate_Click(object sender, EventArgs e) { lblTarihSonuc.Text = DateTime.Now.ToString("d"); } private void btD_Click(object sender, EventArgs e) lblTarihSonuc.Text = DateTime.Now.ToString("D"); private void btt_Click(object sender, EventArgs e) lblTarihSonuc.Text = DateTime.Now.ToString("t");

176 TarihZaman (DateTime) formatları...
private void btTT_Click(object sender, EventArgs e) { lblTarihSonuc.Text = DateTime.Now.ToString("T"); } private void btM_Click(object sender, EventArgs e) lblTarihSonuc.Text = DateTime.Now.ToString("M"); private void btF_Click(object sender, EventArgs e) lblTarihSonuc.Text = DateTime.Now.ToString("F");

177 ... ve Kültür İki sembol: xx - XX tr - TR en - US ru - RU ar - SA
İki assembly gerekiyor: using System.Globalization using System.Threading

178 private void btTurk_Click(object sender, EventArgs e)
{ Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR", false); } private void btAmerikan_Click(object sender, EventArgs e) Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US", false); private void btRus_Click(object sender, EventArgs e) Thread.CurrentThread.CurrentCulture = new CultureInfo("ru-RU", false); private void btArap_Click(object sender, EventArgs e) Thread.CurrentThread.CurrentCulture = new CultureInfo("ar-SA", false);

179 Okur yazarlık Niçin okuma ve yazma öğrenmeliyiz? Okuma, yazmaya bakış:
bit akışı byte akışı karakter akışı kayıt (satır) dosya bit stream byte stream character str record(line) file A4 C2 4F N e h a Ne haber? Haber.doc Alt seviye Üst seviye Bodruma gider

180 Nasıl? using System.IO Stream, FileStream, File Directory

181 Uygulama

182 File sınıfı private void btDosyaYarat_Click(object sender, EventArgs e) { if (tbDosyaIsmi.Text == "") { lblSonuc.Text = "Dosya ismi yok!"; return; } if(File.Exists(tbDosyaIsmi.Text)) lblSonuc.Text = tbDosyaIsmi.Text + " dosyası zaten var."; File.Create(tbDosyaIsmi.Text); lblSonuc.Text = tbDosyaIsmi.Text + " içine yazmaya hazır.";

183 Okuma ve yazma private void btKaydet_Click(object sender, EventArgs e)
{ if (tbDosyaIsmi.Text == "") lblSonuc.Text = "Hangi dosyaya yazacağım?"; } File.AppendAllText(tbDosyaIsmi.Text, tbYaziKutusu.Text); lblMetin.Text = "Yazı başarıyla kaydedildi. Baaak: \n\n" + File.ReadAllText(tbDosyaIsmi.Text);

184 Veri tabanları ile konuşma
İlişkili Veri Tabanı Relational Data Base Tablo(lar) Alan (Field) Tarih Başlık Konu1 Konu2 Metin İbo Yozgat’ta konser veriyor Sosyete Müzik Önümüzdeki Cumartesi İbrahim Tatlıses Yozgat’ta iki saatlik bir konser verecek Kayıt Kayıt Kayıt Kayıt

185 Örnek problem: Haber veri tabanı
NeOldu

186 Haber: Kullanıcı Ara Yüzü
Konu seçimi Başlık Metin Resim

187 static string VeriTabani = "Provider=Microsoft.Jet.OleDb.4.0;"
public class Haber { static string VeriTabani = "Provider=Microsoft.Jet.OleDb.4.0;" + " Data Source= " string baslik; public string Baslik { get return baslik; } string konu; public string Konu return konu;

188 string metin; public string Metin { get return metin; } string resim; public string Resim return resim;

189 public Haber(string konu) {
this.konu = konu; OleDbConnection objBaglanti = new OleDbConnection(VeriTabani); string strSQLSoru = "SELECT * FROM NeOldu WHERE Konu = '“ + konu + "'" ; OleDbCommand objKomut = new OleDbCommand(strSQLSoru, objBaglanti); objBaglanti.Open(); OleDbDataReader objVeriOkuyucu = objKomut.ExecuteReader(); objVeriOkuyucu.Read(); baslik = objVeriOkuyucu["Baslik"].ToString(); metin = objVeriOkuyucu["Metin"].ToString(); resim = objVeriOkuyucu["Resim"].ToString(); objVeriOkuyucu.Close(); objBaglanti.Close(); }

190 Form’dakiler... private void Form1_Load(object sender, EventArgs e) {
string[] konular = { "", "Müzik", "Sosyete", "Siyaset", "Film" }; cBoxKonu.DataSource = konular; }

191 Form’dakiler... private void cBoxKonu_SelectedIndexChanged(
object sender, EventArgs e) { string NeKonuda = cBoxKonu.Text; if (NeKonuda == "") return; Haber YeniHaber = new Haber(NeKonuda); lblBaslik.Text = YeniHaber.Baslik; lblMetin.Text = YeniHaber.Metin; pbResim.ImageLocation = YeniHaber.Resim; }

192 Web Sunucu (Apache, IIS, vs.) Internet Http Request Http Response
Talep (Request) Internet Cevap (Response) Talep (Request) Cevap (Response) Http Request Http Response Client Browser (IE, Firefox, Opera, vs.) Sunucu ile tarayıcının konuştuğu dil: HTML: Hyper Text Mark-up Language

193 Web sayfası <html > <head > <title>
Buraya başlık girer </title> </head> <body> Buraya gövde girer </body> </html> <h1> </h1>

194 ASP.Net Web sayfası Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Buraya başlık girer</title> </head> <body> <form id="form1" runat="server"> Buraya gövde girer </form> </body> </html>

195 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default
Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Page</title> </head> <body> <form id="form1" runat="server"> <div> </div> </form> </body> </html> Web sayfası

196 Form’dakiler... private void Form1_Load(object sender, EventArgs e) {
string[] konular = { "", "Müzik", "Sosyete", "Siyaset", "Film" }; cBoxKonu.DataSource = konular; } protected void Page_Load(object sender, EventArgs e) { string[] konular = { "", "Müzik", "Sosyete", "Siyaset", "Film" }; cBoxKonu.DataSource = konular; }

197 Form’dakiler... protected void Bitir(object sender, EventArgs e)
private void cBoxKonu_SelectedIndexChanged( object sender, EventArgs e) { string NeKonuda = cBoxKonu.Text; if (NeKonuda == "") return; Haber YeniHaber = new Haber(NeKonuda); lblBaslik.Text = YeniHaber.Baslik; lblMetin.Text = YeniHaber.Metin; pbResim.ImageLocation = YeniHaber.Resim; } pbResim.ImageUrl = YeniHaber.Resim

198 <form id="form1" runat="server">
--- <asp:DropDownList ID="cBoxKonu" OnSelectedIndexChanged="Bitir" runat="server" AutoPostBack="True"> </asp:DropDownList <asp:Label ID="lblBaslik" runat="server" Font-Names="Verdana" Font-Bold="True" Font-Size="Large" ForeColor="Navy"></asp:Label> <asp:Image ID="pbResim" runat="server" ImageUrl='' /> <asp:Label ID="lblMetin" runat="server" Font-Names="Verdana" Width="400px"></asp:Label </form>


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

Benzer bir sunumlar


Google Reklamları