BTP205 – Görsel Programlama

Slides:



Advertisements
Benzer bir sunumlar
Yrd. Doç. Dr. Mustafa Akkol
Advertisements

Prof.Dr.Şaban EREN Yasar Üniversitesi Fen-Edebiyat Fakültesi
Fonksiyonlar.
Değişkenler ve bellek Değişkenler
T.C. İNÖNÜ ÜNİVERSİTESİ Arapgir Meslek YÜKSEKOKULU
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Programlama-II (Java ile Bilgisayar Programlama)
Atlayarak Sayalım Birer sayalım
BEIER CÜMLE TAMAMLAMA TESTİ
Diferansiyel Denklemler
ÖRNEKLEME DAĞILIŞLARI VE TAHMİNLEYİCİLERİN ÖZELLİKLERİ
OOP UYGULAMA 5.
KIR ÇİÇEKLERİM’ E RakamlarImIz Akhisar Koleji 1/A.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 9 Dizgiler Dizgi Tanımı Dizgi Girdi İşlemleri
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Bölüm 10 Yapılar ve Birleşimler
Namespaces and .NET Class Library (İsim Alanları Sınıf Kütüphanesi)
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
HAZIRLAYAN:SAVAŞ TURAN AKKOYUNLU İLKÖĞRETİM OKULU 2/D SINIFI
BPR152 ALGORİTMA VE PROGRAMLAMA - II
ÖRNEKLEM VE ÖRNEKLEME Dr.A.Tevfik SÜNTER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
TÜRKİYE KAMU HASTANELERİ KURUMU
NESNEYE YÖNELİK PROGRAMLAMA
DİZİLER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DELEGATE OOP-UYG.
MATRİSLER ve DETERMİNANTLAR
Erişim Denetimi, Fonksiyon
NESNE TABANLI PROGRAMLAMA -METOTLAR-
METODLAR.
PÇAĞEXER / SAYILAR Ali İhsan TARI İnş. Yük. Müh. F5 tuşu slaytları çalıştırmaktadır.
BPR151 ALGORİTMA VE PROGRAMLAMA - I
.Net teknolojisi ve C# Yasin Gedik Dokuz Eylül Üniversitesi (4. Sınıf) Microsoft Danışman Öğrenci
Chapter 7: Using Methods. Metotları ve Kodlamayı Gizlemeyi Anlama Metot – Kapsüllenmiş ifadeler serisini gerçekleştiren bir görev – Kullanılan metodun.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
ALGORİTMALAR VE PROGRAMLAMAYA GİRİŞ
4 X x X X X
Mukavemet II Strength of Materials II
Chapter 6: Using Arrays.
Yard. Doç. Dr. Mustafa Akkol
Chapter 8: Advanced Method Concepts
1 DEĞİŞMEYİN !!!
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
NESNEYE YÖNELİK PROGRAMLAMA
Kalıtım , Sınıf Asli Ergün.
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
JAVA’DA DİZİLER Dr.Galip AYDIN.
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Veri.
ÇOK DEĞİŞKENLİ FONKSİYONLARDA
Ders İçeriği Liste Soyut veri yapısı (ADT)
NESNEYE YÖNELİK PROGRAMLAMA
PÇAĞEXER / SAYILAR Ali İhsan TARI İnş. Yük. Müh. F5 tuşu slaytları çalıştırmaktadır.
Diferansiyel Denklemler
Ders 2- Veri türleri, Karar ve Döngü Yapıları, Görsel Kontröller
BTP206– Görsel Programlama II
VERİ ve BELLEK & DEĞİŞKENLERİN SAKLANMASI Asst.Prof.Dr.Misket YEKTAY Gizem AYIK.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
Seriport String İletimi
Fonksiyonlar ve Diziler
3- VERİ TİPLERİ - OPERATÖRLER Nesne Yönelimli Programlama - i
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
MTM216 GÖRSEL PROGRAMLAMA
Sunum transkripti:

BTP205 – Görsel Programlama Metinler ve Fonksiyonlar

Bugün… Değişkenler üzerine daha fazla Fonksiyonlar ve Yetkiler Tip Dönüşümleri Saymalar (Enumerations) Yapılar (Structs) Diziler (Arrays) Metin İşlemleri (String Operations) Fonksiyonlar ve Yetkiler

Tip Dönüşümleri Örnekler Dolaylı Dönüşümler Doğrudan Dönüşümler Metni tam sayıya ya da tamsayıyı metne string  int int  string Rasyonel sayıyı tamsayıya (yuvarlama işlemleri) double  int Dolaylı Dönüşümler Veri kaybı olmaz Derleyici tarafından yapılır Doğrudan Dönüşümler Veri kaybı olabilir Derleyici onaylar

Dolaylı Dönüşümler Dolaylı dönüşümler için sizin bir şey yapmanız gerekmez, ek kod yazılmaz. ushort ve char tipleri etkili biçimde dönüştürülebilirdirler, çünkü her ikisi de 0 ile 65535 arasında sayılar tutarlar.

Dolaylı Dönüşüm Örneği char ch = ‘a’; ushort num; num = ch; Console.WriteLine(“ch = {0}, num = {1}”, ch, num); ch = a, num = 97

Dolaylı Tip Dönüşümleri Güvenler Dönüştürülebileceği Tipler char ushort, int, uint, long, ulong, float, double, decimal byte short, ushort, int, uint, long, ulong, float, double, decimal sbyte short, int, long, float, double, decimal short int, long, float, double, decimal ushort int, uint, long, ulong, float, double, decimal int long, float, double, decimal uint long, ulong, float, double, decimal long float, double, decimal ulong float double - decimal

Doğrudan Dönüşümler Geniş tipler daha dar tiplere dönüştürülemezler (örn. short  byte dönüşümü) Böyle durumlarda derleyici hata verir: Cannot implicitly convert type ‘short’ to ‘byte’. An explicit conversion exists (are you missing a cast?) Dönüşümü yapmak istediğinizden eminseniz, o halde doğrudan dönüşüm kullanmalısınız: Tamam, dönüşüm konusunda beni uyardığının farkındayım, ama olacaklar için sorumluluğu alıyorum.

Örnek byte b; short s = 7; b = s; Console.WriteLine(“b = {0}, s = {1}”, b, s); Cannot implicitly convert type ‘short’ to ‘byte’. An explicit conversion exists (are you missing a cast?)

Çözüm byte b; short s = 7; b = (byte) s; Console.WriteLine(“b = {0}, s = {1}”, b, s); b = 7, s = 7

281 byte sınırına girmez, taşar! Sınır Sorunu 281 byte sınırına girmez, taşar! byte b; short s = 281; b = (byte) s; Console.WriteLine(“b = {0}, s = {1}”, b, s); b = 25, s = 281 256’dan taşma miktarı!

“Convert” ile Doğrudan Dönüşümler Doğrudan dönüşüm yapmanın başka bir yolu “Convert” yöntemini kullanmaktır: int i = Convert.ToInt32(val) float f = Convert.ToSingle(val) double d = Convert.ToDouble(val) string s = Convert.ToString(val) Burada val birçok değişken tipinde olabilir.

Doğrudan Dönüşümler üzerine bir not Eğer doğrudan dönüşüm mümkün değilse, programınız derlenmez. string s = “12.34”; double d = (double)s; Eğer doğrudan dönüşüm mümkünse ancak çalışma anında bir hata oluşursa, bir İstisna (Exception) oluşur (yani; programınız göçer  ) string s = “abcd”; double d = Convert.ToDouble(s);

Karmaşık Değişken Tipleri Saymalar (Enumerations - enum) Yapılar (Structures - struct) Diziler (Arrays)

Saymalar (Enumerations - enum) double tipi noktalı sayıları tutmak için kullanılır bool tipi true ya da false değerlerini tutar Gerçek hayatta, başka tipler de vardır: Yön: Kuzey, Güney, Doğu, Batı Haftanın Günleri: Pazartesi, Salı, Çarşamba, Perşembe, Cuma, Cumartesi, Pazar Aylar: Ocak, Şubat, …, Aralık Bu tipler C# dilinde saymalar (enum) ile uygulanır.

enum Sözdizimi Tanım: enum <tipAdı> { <değer1>, … <değerN> }

enum Sözdizimi Değişken tanımlama: Değer atama: <tipAdı> <değişkenAdı>; Değer atama: <değişkenAdı > = <tipAdı >.<değer>;

enum Örneği namespace Ch05Ex02 { enum Yonler { Kuzey, Guney, Dogu, Bati } class Program static void Main(string[] args) { Yon benimYonum = Yonler.Kuzey; Console.WriteLine(«Benim Yönüm= {0}", benimYonum );

enum üzerine ileri konular (1) Saymalardaki (enum) her değer bir tamsayı olarak kaydedilir, 0’dan başlar ve birer birer artar Console.WriteLine("{0} = {1}, {2} = {3}", Yonler.Kuzey, (int) Yonler.Kuzey, Yonler.Guney, (int) Yonler.Guney); Kuzey = 0, Guney = 1

enum üzerine ileri konular (2) Bazı saymaların tamsayı değerlerini değiştirebilirsiniz Belirtilmeyen değerler otomatik olarak bir öncekinin bir artırılmasıyla belirlenir enum Yonler {Kuzey=1, Guney, Dogu=4, Bati=8} Kuzey = 1, Guney = 2, Dogu = 4, Bati = 8

enum üzerine ileri konular (3) Varsayılan tipi (int) byte, short ve long tiplerine dönüştürebilirsiniz (ve bunların işaretli ve işaretsiz versiyonlarına) enum Yonler : byte {Kuzey, Guney, Dogu, Bati} Console.WriteLine((byte)Yonler.Kuzey)

Yapılar (Struct) Yapılar (structs), birbirinden farklı veri tipinde birden fazla veri parçası içeren veri yapılarıdır. Öğrenci kayıtları (ad, yaş, doğum yılı vb.) Rota (Yön, uzaklık, etc.)

Yapıları Tanımlamak struct <yapıAdı> { <erişilebilirlik1> <tip1> <ad1>; <erişilebilirlik2> <tip2> <ad2>; … }

Örnek struct Rota { public Yonler Yon; public double Uzaklik; }

Bir yapı değişkeni tanımlama Sözdizim: <YapıAdı> <değişkenAdı>; Örnek: Rota benimRotam; benimRotam.Yonler = Yonler.Kuzey; benimRotam.Uzaklik = 2.5;

Örnek Rota benimRotam; int benimYonum = -1; double benimUzakligim; Console.WriteLine("1) Kuzey\n2) Guney\n3) Dogu\n4) Bati"); do { Console.WriteLine("Bir yon seciniz:"); benimYonum = Convert.ToInt32(Console.ReadLine()); } while (benimYonum < 1 || benimYonum > 4); Console.WriteLine("Bir uzaklik giriniz:"); benimUzakligim = Convert.ToDouble(Console.ReadLine()); benimRotam.Yon = (Yonler)benimYonum; benimRotam.Uzaklik = benimUzakligim; Console.WriteLine("Rotam {0} yonunu ve {1} uzakligini gosteriyor", benimRotam.Yon, benimRotam.Uzaklik);

Diziler Aynı tipte çok sayıda veriyi tutmak için kullanılır int not1, not2, not3, …; int[] notlar; Diziler bazı işlemleri kolaylaştırır Bütün değişkenlerin ilk değerini sıfıra eşitlemeniz gerektiğini düşünün.

Dizileri tanımlamak Sözdizimi: Örnek: <tip>[] <ad>; Örnek: int[] tamsayiDizisi; string[] metinDizisi; Bu tanımlamada elemanı olmayan bir referans tanımlaması yapılmıştır

İlk değerleme int[] dizi = new int[5]; int[] dizi = {5, 9, 10, 2, 99}; Varsayılan ilk değerli 5 elemanlı bir dizi (sayılar için 0) int[] dizi = {5, 9, 10, 2, 99}; İlk değerleri belirli 5 elemanlı bir dizi int[] dizi = new int[5] {5, 9, 10, 2, 99}; 5 elemanlı ve ilk değerleri belirli bir dizi int[] dizi = new int[10] {5, 9, 10, 2, 99}; 10 elemanlı ve ilk 5 elemanının ilk değerleri belirli olan dizi (geri kalanlara varsayılan değer atanır)

Dizi Elemanlarına Erişme Dizinin 6’ıncı elemanına 10 değeri atanmıştır İndeksleme 0’dan başlar (1’den değil) int sayi = dizi[5]; Dizinin 6’ıncı elemanı bir değişkene atanmıştır for (int i = 0; i < dizi.Length; i++) { Console.WriteLine(dizi[i]); } Tüm dizi elemanları ekrana yazdırılır.

Örnek string[] arkadaslarim = { "Koray", "Cihan", "Serhan" }; Console.WriteLine("Arkadaslarimdan {0} tanesi:", friendNames.Length); for (int i = 0; i < arkadaslarim.Length; i++) { Console.WriteLine(arkadaslarim[i]); }

Aynı örnek foreach ile string[] arkadaslarim = { "Koray", "Cihan", "Serhan" }; Console.WriteLine(" Arkadaslarimdan {0} tanesi:", friendNames.Length); foreach (string arkadas in arkadaslarim) { Console.WriteLine(arkadas); }

Çok Boyutlu Diziler int[,] matris = new int[5, 8]; matris[i, j] şeklinde erişilir int[,,] kup = new int[3, 5, 8]; int[,] matris = {{1,2,3,4},{5,6,7,8},{9,10,11,12}}; 3x4 büyüklüğünde iki-boyutlu dizi (3 satır, 4 sütun)

Metin İşlemleri (1) Birleştirme Belirli bir yerdeki karaktere erişme str = str1 + str2; Belirli bir yerdeki karaktere erişme char ch = str[3]; // 4’üncü eleman ch değişkenine atanır Uzunluğunu bulma int metinUzunlugu = str.Length; Bütün karakterleri bir karakter dizisine koyma char[] chars = str.ToCharArray();

Metin İşlemleri (2) Büyük ya da küçük harfe çevirme str2 = str1.ToUpper(); str2 = str1.ToLower(); Bu metodlar str1’i değiştirmez! Eğer str1’in kendisini değiştirmek isterseniz: str1 = str1.ToLower(); Başındaki ve sonundaki beyaz boşlukları atma (boşluk, tab, yeni satır) : str2 = str1.Trim();

Metin İşlemleri (3) Sadece başındaki beyaz boşlukları atma: str2 = str1.TrimStart(); Sadece sonundaki beyaz boşlukları atma : str2 = str1.TrimEnd(); Alt metinler: string str1 = “marabalar”; string str2 = str1.SubString(1, 5); // “araba” str2 = str1.SubString(1); // “arabalar”

Split() Split() metodu ile bir metni bölebilirsiniz Split() metodu bir metin dizisi döner Ayırıcı karakterleri bir karakter dizisi şeklinde alır Eğer parametre verilmezse metni sadece boşluğa göre böler string metin = “Fenerbahcem benim biricik sevgilim”; string[] dizi = str.Split(); foreach (string s in dizi) { Console.WriteLine(s); } Fenerbahcem benim biricik sevgilim

Split() ile ayırıcıları kullanmak string metin= “1,2,3,4,5”; char[] ayirici= {‘,’}; string[] dizi = str.Split(ayirici); foreach (string s in dizi) { Console.WriteLine(s); } 1 2 3 4 5

Diğer Metin İşlemleri Aşağıdaki metin işlemlerini kendiniz inceleyiniz: CompareTo, Equals Contains StartsWith, EndsWith IndexOf, IndexOfAny, LastIndexOf, LastIndexOfAny PadLeft, PadRight Remove Replace

Fonksiyonlar Bazı görevlerin program içinde birçok noktada tekrarlanması gerekebilir örn. Bir dizinin en büyük elemanını bulmak Çözüm: Kodu bir fonksiyona yazın ve onu tekrar tekrar çağırın Nesne-tabanlı programlamada fonksiyon objelerine metod denir

‘static’ yazmayı unutmayın! Fonksiyon Örneği class Program { static void CerceveCiz() Console.WriteLine(“+----------+”); } static void Main(string[] args) CerceveCiz(); Console.WriteLine(“| Merhaba! |”); +----------+ | Merhaba! | ‘static’ yazmayı unutmayın!

Değer dönen fonksiyonlar static int YasOku() { Console.Write(“Yasinizi giriniz: ”); int yas = int.Parse(Console.ReadLine()); if (yas < 1) return 1; else if (yas > 120) return 120; else return yas; }

Parametre alan fonksiyonlar static double Carpim(double a, double b) { return a * b; }

Parametre olarak dizi alan fonksiyonlar class Program { static int MaxDeger(int[] intDizi) { int maxDeger = intDizi[0]; for (int i = 1; i < intDizi.Length; i++) { if (intDizi[i] > maxDeger) maxDeger = intDizi[i]; } return maxDeger ; static void Main(string[] args) { int[] benimDizim = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 }; int max = MaxDeger(benimDizim ); Console.WriteLine("BenimDizim’deki maksimum deger {0} dir.", max);

Parametre Dizileri Eğer bir fonksiyon değişken sayıda parametre alabiliyorsa, bu durumda parametre dizileri kullanabilirsiniz Örn. Console.WriteLine(format, params) Format metininden sonra istediğiniz sayıda parametre kullanabilirsiniz Parametre dizileri params anahtar sözcüğüyle tanımlanır Parametre dizisi fonksiyonun parametre listesinde son parametre olmalıdır

params Örneği class Program { static int DegerlerToplami(params int[] degerler) { int toplam= 0; foreach (int deger in degerler) { toplam += deger; } return toplam; static void Main(string[] args) { int toplam = DegerlerToplami(1, 5, 2, 9, 8); Console.WriteLine("Toplanan Degerler = {0}", toplam);

Değer ile çağırma, Referans ile çağırma Bir fonksiyonda parametre olarak aldığınız bir değer-tipli argümanın değerini değiştirirseniz, main fonksiyondaki değişken bundan etkilenmez Çünkü, değişkenin sadece değeri gönderilmiştir Ancak eğer referans-tipli bir parametrenin değerini değiştirirseniz, main fonksiyondaki argümanın da değeri değiştirilir Çünkü nesnenin kendisi transfer edilir Dizileri referans-tipi olarak düşünebilirsiniz

Değer ile çağırma degerin iki kati = 10 main icinde sayi: 5 static void IkiKatiniGoster(int deger) { deger *= 2; Console.WriteLine(“degerin iki kati = {0}”, deger); } static void Main(string[] args) { int sayi = 5; IkiKatiniGoster(myNumber); Console.WriteLine(“main icinde sayi: ” + sayi); degerin iki kati = 10 main icinde sayi: 5

Referans il çağırma static void IlkiniDegistir(int[] arr) { dizi[0] = 99; } static void Main(string[] args) int[] dizi = {1, 2, 3, 4, 5}; DiziGoster(dizi); IlkiniDegistir(dizi); 1 2 3 4 5 99 2 3 4 5

ref ve out Main fonksiyonda bir argümanın değerini ref anahtar sözcüğüyle değiştirebilirsiniz Fonksiyona gönderdiğiniz bir argümanı out anahtar sözcüğüyle bir fonksiyonun çıktısı olarak tanımlayabilrsiniz out parametreleri fonksiyon çağrılmadan önce ilkdeğerlemeye ihtiyaç duymaz (değerleri fonksiyon tarafından belirlenir)

ref Örneği degerin iki kati = 10 Main icinde sayi: 10 static void IkiKatiniGoster (ref int deger) { deger*= 2; Console.WriteLine(“degerin iki kati = {0}”, deger); } static void Main(string[] args) { int sayi = 5; IkiKatiniGoster(ref sayi); Console.WriteLine(“Main icinde sayi: ” + sayi); degerin iki kati = 10 Main icinde sayi: 10

out Örneği static void OrtVeToplamBul(int[] dizi, out double ort, out int toplam) { toplam = 0; foreach (int sayi in dizi) { toplam += sayi; } ort = (double) toplam / dizi.Lenght; static void Main(string[] args) { int toplam; double ort; int[] benimDizim = {3, 4 , 8, 2, 7}; OrtVeToplamBul(benimDizim, out ort, out toplam);

Başka bir out örneği static int MaxDeger(int[] intDizi, out int maxIndex) { int maxDeger = intDizi[0]; maxIndex = 0; for (int i = 1; i < intDizi.Length; i++) { if (intDizi[i] > maxVal) { maxDeger = intDizi[i]; maxIndex = i; } return maxDeger;

Değişkenlerin kapsamı Fonksiyonlar içindeki değişkenlere diğer fonksiyonlar tarafından erişilemez Bunlara yerel (lokal) değişkenler denir Class tanımlamasında kullanılan değişkenler ise tüm fonksiyonlar tarafından erişilebilirdir Bunlara global değişkenler denir Static olmaları gerekir ve böylece static fonksiyonlar tarafında erişilebilirler Bir blok içinde (for, while, {}, vb.) tanımlanan değişkenler sadece o blok içinde tanımlıdırlar

Main Fonksiyon Main fonksiyion bir C# programının giriş noktasıdır Bir metin dizi parametresi alır ve bu dizinin elemanlarına komut satırı parametreleri denir Main için aşağıdaki tanımlamaların hepsi geçerlidir: static void Main() static void Main(string[] args) static int Main() static int Main(string[] args)

Komut satırı parametreleri class Program { static void Main(string[] args) Console.WriteLine("{0} komut satiri parametresi belirtilmistir:", args.Length); foreach (string arg in args) Console.WriteLine(arg); }

Visual Studio IDE’sinde komut satırı argumanı vermek Solution Explorer kısmında proje ismine sağ tıklayınız ve Properties’i seçiniz Debug sekmesini seçiniz Komut satırı parametrelerini kutuya yazınız Uygulamayı çalıştırınız

Komut satırı parametrelerini komut satırında belirlemek Bir komut satırı açınız Programın çalıştırılabilir çıktısının olduğu dizine gidiniz Çalıştırılabilir dosyanın adını ve argümanları yazınız prog.exe 256 dosya.txt “uzun bir arguman”

struct Fonksiyonları struct MusteriAdi { public string adi, soyadi; public string Isim() return adi + " " + soyadi; }

struct Fonksiyonlarını çağırmak MusteriAdi yeniMusteri; yeniMusteri.adi = "Ahmet"; yeniMusteri.soyadi = "Yavuz"; Console.WriteLine(yeniMusteri.Isim());

Fonksiyon Overloading Bir fonksiyonun birçok imzası olabilir Aynı fonksiyon ismi fakat farklı parametreler örn. Console.WriteLine() Visual Studio’nun Intellisense özelliği doğru fonksiyonu seçmemize yardımcı olur

Örnek 1 static int MaxDeger(int[] intDizi) { … } static double MaxDeger(double[] doubleDizi) { static void Main(string[] args) { int[] dizi1 = { 1, 8, 3, 6, 2, 5, 9, 3, 0, 2 }; double[] dizi2 = { 0.1, 0.8, 0.3, 1.6, 0.2}; int maxDeger1 = MaxDeger(dizi1); double maxDeger2 = MaxDeger(dizi2);

Örnek 2 static void func(ref int deger) { … } static void func(int deger) { … } func(ref deger); func(deger); İmzalar farklı olduğu için kullanım doğrudur! ref anahtar sözcüğü fonksiyonları farklılaştırır!

Temsilciler (Delegates) Fonksiyon referansları (adresleri) C ve C++ daki “Fonksiyon İşaretçileri” Tanımlama: Bir dönüş tipi ve parametre listesi belirleyin Atama: Fonksiyon referansını bir temsilciye çevirin Çağırma: Sadece temsilci ismini kullanın

Delegate Örneği Tanımlama delegate double MyDelegate(double num1, double num2); static double Çarpma(double param1, double param2) { return param1 * param2; } static double Bolme(double param1, double param2) { return param1 / param2;

Delegate Örneği (devam) static void Main(string[] args) { MyDelegate fonk; double param1 = 5; double param2 = 3, fonk = new MyDelegate(Carpma); Console.WriteLine("Result: {0}", fonk(param1, param2)); process = new MyDelegate(Bolme); }

Daha kolayı static void Main(string[] args) { MyDelegate fonk; double param1 = 5; double param2 = 3, fonk = Carpma; Console.WriteLine("Result: {0}", fonk(param1, param2)); fonk = Bolme; }