Download - başlıkk 11111
![Page 1: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/1.jpg)
C#
Prof. Dr. İskender ÖksüzAraştırma Görevlisi Alpay Şahin
Beginning Visual C# 2010, Karli Watson, Christian Nagel, Jacob Hammer Pedersen, Jon Reid, Morgan Skinner, Wrox- Wiley 2010
![Page 2: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/2.jpg)
1 Bilgisayar programlama:
Programlama dilleri, makine dili, yüksek düzey dillerDerleyici, "source", "object", "link" kavramları.Algoritma, bir programın hayat hikâyesi
![Page 3: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/3.jpg)
Şimdi buna "işlemci" veya "mikroprosesör" diyoruz
Von Neumann bilgisayarı
Ana Hafıza
(RAM)
Main
Memory
Aritmetik ve Mantık Birimi
Arithmetic and Logic Unit
Program Kontrol Birimi
Program Control Unit
Giriş- Çıkış
Cihazları
Input
Output
Equipment
![Page 4: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/4.jpg)
Makine diliX = A * B + C1) Hafızanın A adresindeki değeri al, ALU’da bir
"register"e yükle;2) Hafızanın B adresindeki değeri al, yukardaki
değerle çarp ve sonucu aynı "register"de tut.3) Hafızanın C adresindeki değeri registerdeki değere
ekle.4) Registerdeki değeri hafızanın X adresine koy.
![Page 5: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/5.jpg)
Makine diliX = A * B + C
Opcode Operand1) 00010000000000000000010000000000 (A’daki değeri reg. yükle)
Hex: 08 00 04 002) 00100100000000000000010000000001 (B’deki değerle çarp)
Hex: 24 00 04 01 3) 00100011000000000000010000000010 (C’deki değeri reg. ile topla)
Hex: 23 00 04 02 4) 00010001000000000000010000000011 (Registerdeki değeri X’e taşı)
Hex: 11 00 04 03
İki tabanındaki sayılar : 0, 1Ondalık sayılar : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9Onaltılık (hex) sayılar : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
![Page 6: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/6.jpg)
Biraz daha hexOndalık Hex Hex Ondalık1 = 110 = A36 = 24 A5 = 165147 = 93 DD = 221255 = FF
![Page 7: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/7.jpg)
Makine dili - AssemblerX = A * B + C
08 00 04 0024 00 04 01 23 00 04 0211 00 04 03
MOV A, ACCMUL B, ACCADD C, ACCSTO ACC, X
![Page 8: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/8.jpg)
Yüksek seviye dilleri?
X = A * B + C
X = A * B + C
LET X = A * B + C
![Page 9: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/9.jpg)
Üst seviye dili FORTRAN C Pascal Basic C++ Java C#
Üst seviye dili
Derleyici (compiler)(Scriptlerde yok)
Makine dili
![Page 10: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/10.jpg)
![Page 11: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/11.jpg)
![Page 12: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/12.jpg)
![Page 13: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/13.jpg)
![Page 14: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/14.jpg)
![Page 15: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/15.jpg)
http://www.digibarn.com/collections/posters/tongues/tongues.jpg
![Page 16: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/16.jpg)
Derleme (Compilation)
Üst seviye dili
Derleyici (compiler)(Scriptlerde yok)
Makine 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#)
Kaynak kod(Source code)
Source module
Object code
Object module
![Page 17: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/17.jpg)
Bitti mi?
Object program
Okumaprogramı
Ekrana yazmaprogramı
… programı
… programı
Bağlama- link
İcra edilebilir program: Executable
Çarp_Topla.exedll : dynamic link library
![Page 18: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/18.jpg)
Hatalar:
Derleme hataları (Compiler error)
Bağlama hataları (Falan modülü bulamadım)
İcra hataları (Run time error)
![Page 19: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/19.jpg)
İ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
![Page 20: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/20.jpg)
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(); } }
![Page 21: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/21.jpg)
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(); } }
![Page 22: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/22.jpg)
Tepeden bakış:namespace KaraEkranÇarpmaMakinesi{
class Program { static void Main() {
......... }
}public class HesapMakinesi {
.......... }
}
![Page 23: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/23.jpg)
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(); } }
![Page 24: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/24.jpg)
2. C# programcılığına giriş
Değişken tipleri:intint birinciSayi;birinciSayi = 1256;
SabitDeğişken
Atama
string
string strBirinci;
strBirinci = “Gaziantep”
SabitDeğişken
Atama
![Page 25: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/25.jpg)
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”
![Page 26: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/26.jpg)
Tiplerint birinciSayi = 1256;
long uzunTamSayi= 12345678901..
float Avagadro = 6.02E23
double piSayisi= 3.141592653589
string strBirinci = “Bu takım”
char uUml = 'ü'
bool dogruMu = false
![Page 27: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/27.jpg)
C# veri tipleriTip Bit? Değerler
bool 8 true – false
char 16 ‘\u0000’ - ‘\uFFFF’
byte 8 0 - 255
sbyte 8 -128 - +127
short 16 -32.768 - +32.767
ushort 16 0 – 65.535
int 32 -2.147.483.648
Tip Bit? Değerler
uint 32 0 – 4.294.967.295
ulong 64 264 - 1
decimal 128 1,0 10-28 – 7,9 1028
float 32 ±1,5 10-45 - ±3,4 1038
double 64 ±5, 10-324 - ±1,7, 10308
string
object
![Page 28: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/28.jpg)
Atama ifadesi: Assignment statement
=variable = expressionobject = expression
![Page 29: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/29.jpg)
OperatörlerAritmetik operatörleri
Operatör 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
![Page 30: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/30.jpg)
Not:
= ile diğer operatörler birleştirilebilir:
a = a + b yerine a += ba = a / b yerine a /= b
![Page 31: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/31.jpg)
Operatörler devam...Operatör C# ifadesi
&& bool a && bool b
|| bool a || bool b
++ a++ veya ++a
-- a-- veya --a
<< >> & | bitlerle oynama
![Page 32: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/32.jpg)
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!
![Page 33: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/33.jpg)
Operatör öncelikleri (operator precedence)
Önce parantez içleri Sonra soldan sağa * ve / ve % işlemleri Sonra soldan sağa + ve – işlemleri
![Page 34: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/34.jpg)
•İşlem Öncelikleri (Örnek)
1. Adım
2. Adım
5. Adım
3. Adım
4. Adım
6.Adım
y = 2 * 5 * 5 + 3 * 5 + 7;
2 * 5 = 10 (En soldaki çarpma)
y = 10 * 5 + 3 * 5 + 7;
10 * 5 = 50 (En soldaki çarpma)
y = 50 + 3 * 5 + 7;3 * 5 = 15 (Toplamadan önceki çarpma)
y = 50 + 15 + 7;
50 + 15 = 65 (En soldaki toplama)
y = 65 + 7;
65 + 7 = 72 (Son toplama)
y = 72; (Son işlem 72 değeri y değişkenine aktarılır)
Mehmet Ali Hoca’dan
![Page 35: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/35.jpg)
• Değişkenleri, nesneleri isimlendirme (Kimlikleyiciler ~ identifiers)
İsim vermede kurallar ve tavsiyeler
C# anahtar kelimeleri
Mehmet Ali Hoca’dan
![Page 36: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/36.jpg)
Kurallar ve Öneriler 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.
farkFarkfarkFark
Cevap4242CevapCevap4242Cevap
KOTUSONUC_KotuSonucKotuSonuckotuSonuc
KOTUSONUC_KotuSonucKotuSonuckotuSonuc
MsjMesajMsjMesaj
Mehmet Ali Hoca’dan
![Page 37: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/37.jpg)
C# Anahtar kelimeleriKeyword’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, finallyabstract, base, bool, default, if, finally
int INT; // Kötü Kullanımint INT; // Kötü Kullanım
Mehmet Ali Hoca’dan
![Page 38: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/38.jpg)
Soru: Geçerli olmayan veya tavsiye edilmeyen kimliklemeleri bulunuz.
char $diskFiyat;char $diskFiyat;
char ortaDeger;char ortaDeger;
int 12sayi;int 12sayi;
float BUDEGER;float BUDEGER;
2222
3333
4444
1111
int __ilkDeger;int __ilkDeger;5555
Mehmet Ali Hoca’dan
![Page 39: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/39.jpg)
Programlama paradigmaları
Batch Etkileşimli - olayların sürdüğü (event
driven)
Prosedürel-> yapılı (structured) Nesneye yönelik
(Object oriented- OOP)
![Page 40: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/40.jpg)
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ı
![Page 41: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/41.jpg)
Hesap makinesi?
Veriler ne? Birinci değer İkinci değer İşlemi belirten bişiy
Metotlar ne? İnşa Carpma, Bölme Toplama Çıkarma
![Page 42: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/42.jpg)
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
![Page 43: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/43.jpg)
A * B Hesap makinesi devam...
public class CarpmaMakinesi { // Özellikler public double Birinci; public double Ikinci;
// Metot(lar) public double Carp() { return Birinci * Ikinci; } }
![Page 44: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/44.jpg)
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; } }
![Page 45: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/45.jpg)
![Page 46: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/46.jpg)
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!
![Page 47: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/47.jpg)
![Page 48: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/48.jpg)
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; }
}}
![Page 49: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/49.jpg)
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)
![Page 50: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/50.jpg)
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
![Page 51: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/51.jpg)
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();
}X
![Page 52: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/52.jpg)
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();
}
![Page 53: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/53.jpg)
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
}}
![Page 54: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/54.jpg)
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.
![Page 55: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/55.jpg)
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: غ
![Page 56: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/56.jpg)
Ödev:Harezmî’nin anısına…
(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.
![Page 57: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/57.jpg)
ax2 + bx + c = 0Değişkenlera, b, c, x1, x2, delta, kokDelta
Metotlar:“constructor”private diskriminantHesaplapublic KokleriHesapla
![Page 58: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/58.jpg)
Değişkenler: a, b, c, x1, x2, delta, kokDelta
class IkinciDerece{double a, b, c, x1, x2, delta, kokDelta;
}
![Page 59: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/59.jpg)
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);
}}
![Page 60: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/60.jpg)
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);
}}
![Page 61: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/61.jpg)
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);
}}
}
![Page 62: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/62.jpg)
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;
}}
double a, b, c, xR1, xI1, xR2, xI2, delta, kokDelta;bool gercek ;
![Page 63: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/63.jpg)
...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{...}
}
X
![Page 64: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/64.jpg)
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.
![Page 65: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/65.jpg)
...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, XI2private double a, b, c, xR1, xI1, xR2, xI2, delta, kokDelta; private bool gercek ;private double diskriminantHesapla(){...}public void KokleriHesapla(){...}
}
![Page 66: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/66.jpg)
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;
}
![Page 67: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/67.jpg)
2. Namuslu yöntem:private double a; public double A{
get{ return a;}set{ a = value;}
}
A a; B b; C c değerleri nasıl geçirilecek?
![Page 68: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/68.jpg)
“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);}
}
![Page 69: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/69.jpg)
Ö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: InstantiationHer nesne bir sınıfın bir “instance”ıdır.
![Page 70: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/70.jpg)
Sınıflarpublic/private sınıf_adı {
public/private type değişkenler public/private sınıflar public/private type metotlar
}
![Page 71: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/71.jpg)
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.
![Page 72: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/72.jpg)
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;
}}
![Page 73: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/73.jpg)
Doğrusu:…HM.A = 3.12;...Sonuc = HM.A...public class HesapMakinesi{
private double a;public double A{
get{return a;
}set{
a = value;}
} }
![Page 74: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/74.jpg)
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.
![Page 75: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/75.jpg)
MetotlarSı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 ();
![Page 76: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/76.jpg)
Ö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
![Page 77: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/77.jpg)
Ö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
![Page 78: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/78.jpg)
Constructor... devamIkinciDerece Denklem = new IkinciDerece();yerineIkinciDerece 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;}.........
}
![Page 79: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/79.jpg)
Constructor... devamBazen ş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;
}.........
}
![Page 80: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/80.jpg)
Biraz eğlenelim: Zar atmak...
![Page 81: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/81.jpg)
Önce fotoğrafları bulalım ve debug klasörüne yerleştirelim.
1.png
2.png
3.png
4.png
5.png
6.png
![Page 82: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/82.jpg)
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(); }}
![Page 83: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/83.jpg)
Visual Studio Windows Form Form1
button1
picboxZar1
![Page 84: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/84.jpg)
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(); }}
![Page 85: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/85.jpg)
Deneyim Bakiim...
Bir zar
![Page 86: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/86.jpg)
İ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();
zarIki.at(); }}
![Page 87: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/87.jpg)
Formdaki ilaveler
İki zar
![Page 88: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/88.jpg)
Sizin laboratuarda yapmanızı istediğim
Oyun makinesi
Bir böcü temizleme görevi: Niçin çok kazanılıyor?
![Page 89: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/89.jpg)
İpucu: public void Yuvarla(PictureBox pbox) { at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); }
![Page 90: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/90.jpg)
public void Yuvarla(PictureBox pbox) { at();
for(int i = 0; i < 7; i = i +1){ Thread.Sleep(100); at(); }
}
public void Yuvarla(PictureBox pbox) { at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); Thread.Sleep(100); at(); }
i += 1i++
![Page 91: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/91.jpg)
Akış kontrolu: Dallanmalar
if switch ?
Tekrarlar for while do - while
![Page 92: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/92.jpg)
ifif(önerme) ifade;
if(önerme){ifade;ifadeifade....
}
if( a > b) x = Math.Sqrt(a-b);
if( a > b){
x = a * a - b * b;
y = Math.Sqrt(x);
}
![Page 93: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/93.jpg)
if
print “Passed”Grade >= 60true
false
if(grade >= 60) tbSonuc.Text = “Geçti”;
if(grade >= 60){tbSonuc.Text = “Geçti”;
}
![Page 94: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/94.jpg)
ifif(önerme) ifade;
else ifade;
if(önerme){ifade;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);
}
![Page 95: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/95.jpg)
if
if(grade >= 60) tbSonuc.Text = “Geçti”;else tbSonuc.Text = “Kaldı”;
if(grade >= 60){tbSonuc.Text = “Geçti”;
}else{
tbSonuc.Text = “Kaldı”;}
Grade >= 60
print “Passed”print “Failed”
false true
tbSonuc = (grade >= 60 ? “Geçti”: “Kaldı”)
![Page 96: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/96.jpg)
?if(grade >= 90){
tbSonuc.Text = “AA”;}else{
tbSonuc.Text = “BA”;}
ifPeki, geçti ve kaldıdan başka sonuç yok mu?95’in üstündeyse AA ver, altındaysa BA ver.
if(grade >= 95){tbSonuc.Text = “AA”;
}else if(grade >= 90{
tbSonuc.Text = “BA”;}else if(grade >= 70{....
![Page 97: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/97.jpg)
ifif(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(grade >= 70){tbSonuc.Text = “DC”;
}else if(grade >= 65){
tbSonuc.Text = “DD”;}else if(grade >= 60){
tbSonuc.Text = “FD”;}else {
tbSonuc.Text = “FF”;}
![Page 98: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/98.jpg)
ifAslında...
if(önerme){
}else{
}
if(önerme){
}else{
}
X
X
if(önerme){
}else if(önerme){
}else{
}
![Page 99: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/99.jpg)
Notlara devam: Tersten alalım:if(sonuc = = “AA”){
tbNot.Text = “95- 100 arası”;}else if(sonuc = = “BA”){
tbNot.Text = “90- 94 arası”;}
else if(sonuc = = “BB”){tbNot.Text = “85- 94 arası”;
}else if (sonuc = = “CB”){
tbNot.Text = “80- 84 arası”;}else if (sonuc = = CC){
tbNot.Text = “75- 79 arası”;}
if(sonuc = = “DC”){tbNot.Text = “70- 74 arası”;
}else if(sonuc = = “DD”){
tbNot.Text = “65- 69 arası”;}
else if(sonuc = = “FD”){tbNot.Text = “60- 64 arası”;
}else if (sonuc = = “FF”){
tbNot.Text = “0- 59 arası”;}else{
tbNot.Text = “Böyle bir not yok!”;
}
![Page 100: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/100.jpg)
Notlara devam: Tersten alalım:if(sonuc = = “AA”){
tbNot.Text = “95- 100 arası”;}else if(sonuc = = “BA”){
tbNot.Text = “90- 94 arası”;}
else if(sonuc = = “BB”){tbNot.Text = “85- 94 arası”;
}----else {
tbNot.Text = “Böyle bir not yok”;
}.......
switch(sonuc){case “AA”:
tbNot.Text = “95- 100 arası”;break;
case “BA”:
tbNot.Text = “90- 94 arası”;
break;case “BB”;
tbNot.Text = “85- 89 arası”;
break;----default:
tbNot.Text = “Böyle bir not yok!” }
![Page 101: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/101.jpg)
Switch grameri:switch(ifade){
case sabit:ifade;ifade;...break;
case sabit:ifade;ifade;break;
---
case sabit:ifade;ifade;...break;
default:ifade;ifade;---
break;}
int cinslerinden biri, char, string
Aynı cins sabit
![Page 102: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/102.jpg)
Tekrarlar Tekrarlar
for while do - while
![Page 103: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/103.jpg)
forfor(tarif ve ilk değer; kontrol; değişim){
ifade;ifade;-----
}
for(int i = 0; i < 7; i++){Thread.Sleep(100);at();
}
![Page 104: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/104.jpg)
Tekrarlarfor(int i = 0; i < 7; i ++){
Thread.Sleep(100);at();
}
int i;for(i = 0; i < 7; i++){
Thread.Sleep(100);at();
}
![Page 105: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/105.jpg)
Tekrarlarint i;for(i = 0; i < 7; i++){
Thread.Sleep(100);at();
}
int i = 0;while(i < 7){
Thread.Sleep(100);at();i++;
}
int i = 0;do{
Thread.Sleep(100);at();i++;
} while(i < 7);
![Page 106: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/106.jpg)
Ö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,1415926535897932
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.
![Page 107: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/107.jpg)
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);
![Page 108: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/108.jpg)
Direnc...
![Page 109: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/109.jpg)
Direnc... 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) { Direnc D1 = new Direnc(Convert.ToDouble(textBox1.Text)); Direnc D2 = new Direnc(Convert.ToDouble(textBox2.Text)); lblSonuc.Text = "R1 // R2 = " + (D1.Paralel(D2.R)).ToString() + " Ohm"; } }
![Page 110: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/110.jpg)
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)); }}
![Page 111: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/111.jpg)
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.
![Page 112: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/112.jpg)
Gun sınıfı
![Page 113: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/113.jpg)
public class Gun { int kacincigun; public int KacinciGun { get { return kacincigun; } } public Gun(int kacincigun) { this.kacincigun = kacincigun; }}
![Page 114: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/114.jpg)
Gun...
public string Topla(int Sonra)
{
int sonuc;
sonuc = (kacincigun + Sonra) % 7;
return Yaziya(sonuc);
}
![Page 115: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/115.jpg)
public int Sayiya(string gunismi) { int hangiGun; switch (gunismi) { case "Pazartesi": hangiGun = 0; break; case "Salı": hangiGun = 1; break; case "Çarşamba": hangiGun = 2; break; case "Perşembe": hangiGun = 3; break;
case "Cuma": hangiGun = 4; break; case "Cumartesi": hangiGun = 5; break; case "Pazar": hangiGun = 6; break; default: hangiGun = -1; break; } return hangiGun; }
![Page 116: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/116.jpg)
public string Yaziya(int ggun) { string strGun; switch (ggun) { case 0: strGun = "Pazartesi"; break; case 1: strGun = "Salı"; break; case 2: strGun = "Çarşamba"; break; case 3: strGun = "Perşembe"; break;
case 4: strGun = "Cuma"; break; case 5: strGun =
"Cumartesi"; break; case 6: strGun = "Pazar"; break; default: strGun = "Yok
böyle gün"; break; } return strGun; }
![Page 117: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/117.jpg)
Ay sınıfını laboratuarda yapınız Tıpkı gün gibi Aylar 0- 11 arasında kodlanıyor Sayiya ve Yaziya metotları var Topla metodu var
![Page 118: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/118.jpg)
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 olsunBirAci.Radyan(); // Bunun değeri π/4 olsun.
Nasıl yapacağınızı bilmediğim için parametreleri çeşitli yazdım...
![Page 119: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/119.jpg)
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.
![Page 120: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/120.jpg)
Üst almapublic double Ust(double X, int Y){
double sonuc = 1.0if(Y > 0){
for(int i = 0; i < Y; i++){sonuc *= X;
}else{
for(int i = 0; i > Y; i--){sonuc /= X;
}return sonuc;
}
![Page 121: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/121.jpg)
Ö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.
![Page 122: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/122.jpg)
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 95.00000 girdiniz.
gibi bir mesaj verecektir.
Açı doğruysa
Mesafe 2347.23 santimdir
gibi sonuç yazılacaktır.
![Page 123: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/123.jpg)
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 -1.0 verecektir. Açı doğru girilmişse
D = S/2 tg(B * 0.0174533)
tg için Math sınıfındaki fonksiyonu veya geçen hafta yazdığınız Aci sınıfını kullanın.
![Page 124: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/124.jpg)
![Page 125: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/125.jpg)
public partial class TeleForm : Form { public TeleForm() { InitializeComponent(); }
private void btnMesafeHesapla_Click(object sender, EventArgs e) {---}
}
public class Telemetre {---}
public class Aci {---}
![Page 126: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/126.jpg)
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()); } }
![Page 127: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/127.jpg)
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() {---}}
![Page 128: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/128.jpg)
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!"); return; } 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ı!"); return; } lblSonuc.Text = "Cismin uzaklığı " + Uzaklik.ToString() + "cm dir."; }
![Page 129: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/129.jpg)
Geçen haftanın Aci sınıfı
![Page 130: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/130.jpg)
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"; } }
![Page 131: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/131.jpg)
public class Aci { double radyan; public double Radyan { get { return radyan; } } const double faktor = 3.1415926535897932/ 180.0; public Aci(double Derece) { radyan = Derece * faktor; }
![Page 132: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/132.jpg)
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; } return sonuc; }
![Page 133: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/133.jpg)
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; } return sonuc; }
![Page 134: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/134.jpg)
Diziler Array ArrayList HashTable SortedList
![Page 135: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/135.jpg)
Arraytype [] 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”};
![Page 136: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/136.jpg)
ArrayAvantajlar: Kolay (her programlama dilinde var) Hızlı Üyenin tipini siz belirliyorsunuzDezavantajlar Boyu sabit Araya üye sokmak zor
![Page 137: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/137.jpg)
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);}
![Page 138: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/138.jpg)
Gunleri ard arda yazmak istiyoruz: lbl.Text = “Pazartesi ” + “Salı ” + “ Çarşamba” +- - -yerine:
lbl.Text = “”;foreach(string gun in Gunler){
lbl.Text += gun;}
Gun sınıfında günleri array yapsaydık... string[] Gunler = {“Pazartesi”, “Salı”, “Çarşamba”,
“Perşembe”, “Cuma”, “Cumartesi”};
gun + “ “;
![Page 139: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/139.jpg)
ArraylistArrayList identifier = new ArrayList();ArrayList gunler = new ArrayList();
Peki boyu belli değil...
gunler.Add(“Pazartesi”);gunler.Add(“Salı”);
gunler[0].ToString() >>> “Pazartesi” verir.
![Page 140: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/140.jpg)
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”);
![Page 141: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/141.jpg)
ArrayList foreach ile çalışır. Her türlü nesneyi taşır Avantajlar:
Otomatik boyÜye sokup çıkarmak çok kolayKolay kullanış
DezavantajYavaş
![Page 142: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/142.jpg)
HashtableArrayList 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”);-- -- --
![Page 143: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/143.jpg)
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){
----}
![Page 144: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/144.jpg)
HashtableAvantajlar: Esnek kullanım Hızlı bulma...
Dezavantajlar Sıraya sokulamaz Kuruluş yavaş, yeni üye sokmak yavaş
![Page 145: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/145.jpg)
SortedList ArrayList gibi, fakat eleman eklendikçe
otomatik olarak sıraya sokuyor. Hashtable gibi, fakat sıraya sokamama
problemi yokMeselâ: Öğrenci isimlerini otomatik sıraya
sokarak bir öğrenci koleksiyonu yaratabilir.Kelime- açıklama ikilisi ile sözlük yaratabilir...
![Page 146: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/146.jpg)
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.
![Page 147: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/147.jpg)
Sınıf ve Ogrenci uygulaması
![Page 148: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/148.jpg)
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; } }
Sınıf- öğrenci
![Page 149: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/149.jpg)
Sınıf- öğrenci public class Sinif { int ogrenciSayisi = 0; public int OgrenciSayisi { get { return ogrenciSayisi; } } ArrayList ogrenciler; public ArrayList Ogrenciler{ get { return ogrenciler; } } public Sinif(){ ogrenciler = new ArrayList(); }
![Page 150: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/150.jpg)
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; }
![Page 151: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/151.jpg)
Asal sayılar
![Page 152: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/152.jpg)
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ı!"); return; }
![Page 153: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/153.jpg)
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
![Page 154: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/154.jpg)
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; } }
![Page 155: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/155.jpg)
Gerçek problemler: 2) En küçük kareler metodu
Fiyat 160 180 200 220 240 260 280
Satış 126 103 82 75 82 40 20
![Page 156: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/156.jpg)
…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ı.
![Page 157: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/157.jpg)
…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…
![Page 158: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/158.jpg)
…en küçük karelerFark 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) = 0düzenlersek: a Σixi
2+ b Σixi – Σixiyi = 0
b’ye göre: 2 Σi(a xi+ b – yi) = 0
düzenlersek: a Σi xi+ n b – Σiyi = 0
![Page 159: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/159.jpg)
…en küçük karelera Σixi
2+ b Σixi = Σixiyi
a Σi xi+ b n = Σiyi
İki bilinmeyen için iki denklem!
Toplamlara isim verelim… Kolay olsun:X2 = Σixi
2 X = Σixi XY = Σixiyi Y = Σiyi
D = X2 * n – X*X
a = (XY * n – X * Y) / D
b = (X2 * Y – X * XY) / D
![Page 160: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/160.jpg)
…en küçük kareler
![Page 161: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/161.jpg)
…en küçük kareler public class VeriNoktasi { float x; public float X{ get { return x; } } float y; public float Y{ get { 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 { get { return xvey; } } public void Ekle(VeriNoktasi Nokta) { XveY[verisayisi] = Nokta; verisayisi++; } }
![Page 162: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/162.jpg)
…en küçük karelerpublic class EnKucuk { 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;
} }}
![Page 163: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/163.jpg)
…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 = ""; }
![Page 164: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/164.jpg)
…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
![Page 165: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/165.jpg)
İntegral
s
----------
X0 X1 X2 XNXN-1
Y0
Y1
Y2
YN-1
YN
İntegral = - 0.5 (Y0 + YN) + S ∑ Yi
Yi ler her Xi noktasında fonksiyonun değeridir.
S = (YN- Y0) / N ile bulunur.
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.
![Page 166: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/166.jpg)
İntegralnamespace 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(); }
![Page 167: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/167.jpg)
İ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; } }
![Page 168: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/168.jpg)
İntegral public double Topla() { // İntegral = - 0.5 (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); } }
![Page 169: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/169.jpg)
Format Yazmada ve okumada sayının, tarihin, diğer
yazılanların şeklini yönetemiyorduk. Sayı formatları Tarih formatları Kültür
![Page 170: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/170.jpg)
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
![Page 171: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/171.jpg)
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 ---- 30.04.2007 D --- 30 Nisan 2007 14:33:44 M --- 30 Nisan t ---- 14:33 T --- 14:33:44 F --- 30 Nisan 2007 14:33:44
![Page 172: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/172.jpg)
Uygulama:
![Page 173: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/173.jpg)
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) { double sayi = Convert.ToDouble(tbSayi.Text); lblSayiSonuc.Text = sayi.ToString("F10"); }
private void btYuzde_Click(object sender, EventArgs e) { double sayi = Convert.ToDouble(tbSayi.Text); lblSayiSonuc.Text = sayi.ToString("P2"); }
![Page 174: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/174.jpg)
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) { double sayi = Convert.ToDouble(tbSayi.Text); lblSayiSonuc.Text = sayi.ToString("0###,###.#0"); }
![Page 175: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/175.jpg)
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"); }
TarihZaman (DateTime) formatları
![Page 176: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/176.jpg)
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"); }
TarihZaman (DateTime) formatları...
![Page 177: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/177.jpg)
... ve Kültür İki sembol: xx - XX tr - TR en - US ru - RU ar - SA İki assembly gerekiyor:
using System.Globalizationusing System.Threading
![Page 178: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/178.jpg)
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); }
![Page 179: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/179.jpg)
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
01001101001 23 A4 C2 4F N e h a Ne haber? Haber.doc
Alt seviye Üst seviye
Bodruma gider
![Page 180: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/180.jpg)
Nasıl?
using System.IO Stream, FileStream, File Directory
![Page 181: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/181.jpg)
Uygulama
![Page 182: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/182.jpg)
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."; return; } File.Create(tbDosyaIsmi.Text); lblSonuc.Text = tbDosyaIsmi.Text + " içine yazmaya hazır."; }
![Page 183: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/183.jpg)
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); }
![Page 184: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/184.jpg)
Alan (Field)
Veri tabanları ile konuşma Veri tabanı? İlişkili Veri Tabanı
Relational Data BaseTablo(lar)
Tarih Başlık Konu1 Konu2 Metin
07.05.2007 İ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
![Page 185: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/185.jpg)
Örnek problem: Haber veri tabanıNeOldu
![Page 186: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/186.jpg)
Haber: Kullanıcı Ara YüzüKonu seçimi
Başlık
Resim Metin
![Page 187: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/187.jpg)
public class Haber {
static string VeriTabani = "Provider=Microsoft.Jet.OleDb.4.0;" + " Data Source= " + @".\Haberler.mdb";
string baslik; public string Baslik { get { return baslik; } } string konu; public string Konu { get { return konu; } }
![Page 188: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/188.jpg)
string metin; public string Metin { get { return metin; } } string resim; public string Resim { get { return resim; } }
![Page 189: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/189.jpg)
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(); }
![Page 190: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/190.jpg)
Form’dakiler...
private void Form1_Load(object sender, EventArgs e) { string[] konular = { "", "Müzik", "Sosyete", "Siyaset", "Film" }; cBoxKonu.DataSource = konular; }
![Page 191: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/191.jpg)
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; }
![Page 192: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/192.jpg)
WebSunucu (Apache, IIS, vs.)
ClientBrowser(IE, Firefox,Opera, vs.)
InternetTalep (R
equest)Talep
(Request)
Cevap (R
esponse)Cevap (Response)
Http Request
Http Response
Sunucu ile tarayıcının konuştuğu dil:HTML: Hyper Text Mark-up Language
![Page 193: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/193.jpg)
Web sayfası
<html ><head >
<title>Buraya başlık girer
</title></head><body>
Buraya gövde girer</body>
</html>
<h1> </h1>
![Page 194: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/194.jpg)
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>
![Page 195: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/195.jpg)
Web sayfası<%@ 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>
![Page 196: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/196.jpg)
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; }
![Page 197: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/197.jpg)
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; } pbResim.ImageUrl = YeniHaber.Resim
protected void Bitir(object sender, EventArgs e)
![Page 198: başlıkk 11111](https://reader033.vdocuments.site/reader033/viewer/2022051617/55a801ff1a28ab924d8b46a4/html5/thumbnails/198.jpg)
<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>