ALGORTMA ve PROGRAMLAMA II BAHAR YARIYILI. Y. Doç. Dr. Aybars UUR

Benzer belgeler
DATA STRUCTURES. Part I C# Programlama Dili Temelleri

KUYRUKLAR QUEUES. Doç. Dr. Aybars UĞUR

Programlama Dilleri III 1

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

YZM 2105 Nesneye Yönelik Programlama

ALGORTMA ve PROGRAMLAMA - II (C# Sürümü) DERS NOTLARI

1 GİRİŞ 1 C# Hakkında Genel Bilgiler 1.Net Framework 1 CLR 2 CLR Ve CTS 2 Temel Sınıf Kütüphanesi 3 CIL 3 Algoritma Nedir? 4 Sözde Kod (Pseudocode) 5

HSancak Nesne Tabanlı Programlama I Ders Notları

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

2 VISUAL STUDIO 2012 GELİŞTİRME ORTAMI

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

/*int sayi1, sayi2,toplam=0;

İNTERNET TABANLI PROGRAMLAMA

Giri. Program yazmaya balamadan önce

Görsel Programlama 1

KUYRUKLAR. Doç. Dr. Aybars UĞUR

11- FONKSİYONLAR (FUNCTIONS)

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

HSancak Nesne Tabanlı Programlama I Ders Notları

Algoritma ve Programlamaya Giriş II JAVA İLE PROGRAMLAMA. Muhammet BAYKARA

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Doç. Dr. Aybars UĞUR

Nesne Tabanlı Programlama

DÖNGÜLER (LOOPS) while(), do-while(), for(), foreach()

C# Çalışma Örnekleri

2 ALGORİTMA VE AKIŞ DİYAGRAMLARI

2 PYTHON A GIRIŞ 13 PyCharm İle Python Projesi Oluşturma 15 Projenin Çalıştırılması 18 İlk Python Programımız 19 Açıklama Satırları 21

Çoktan Seçmeli Değerlendirme Soruları Akış Şemaları İle Algoritma Geliştirme Örnekleri Giriş 39 1.Gündelik Hayattan Algoritma Örnekleri 39 2.Say

DATA STRUCTURES. Lab II Metotlar, Diziler ve Hata Ayıklama. Prof. Dr. Aybars UĞUR

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Akış Konrol Mekanizmaları

Dr. Fatih AY Tel:

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 11: Metot Kavramı

Programlama Dilleri 3

VER YAPILARI Y. Doç. Dr. Aybars UUR Haziran 2005

BBS515 Nesneye Yönelik Programlama. Ders 3 Zümra Kavafoğlu

Öğr. Gör. Musa AYDIN Fatih Sultan Mehmet Vakıf Üniversitesi

Veri Tipleri Aşağıdaki programdaki 5 hatayı bulunuz.

Karşılaştırma İşlemleri ve Koşullu İfadeler

Nesne Tabanlı Programlama

İçerik. Java da İşleçler, İşleçler. Aritmetik İşleçler - 1. Aritmetik İşleçler - 2. Geçen ders: Bu ders: BS-515 Nesneye Yönelik Programlama

Yazılım Nedir? 2. Yazılımın Tarihçesi 3. Yazılım Grupları 4 Sistem Yazılımları 4 Kullanıcı Yazılımları 5. Yazılımın Önemi 6

Java da İşleçler, Ders #3 (4 Kasım 2009)

HSancak Nesne Tabanlı Programlama I Ders Notları

elemanlarının gezilmesine yönelik bir örnek sunulmuştur, inceleyiniz.

BMÜ-111 ALGORİTMA VE PROGRAMLAMA AKIŞ KONTROLÜ YRD. DOÇ. DR. İLHAN AYDIN

Sınav Dağılım & IMKB Endeks

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

1 C#.NET GELİŞTİRME ORTAMI 1 Visual Studio 2015 Arayüzü 4 Menu Window 6 Solution Explorer 7 Properties Window 8 Server Explorer 8 Toolbox 9

PROGRAMLAMA TEMELLERİ DERSİ ÖZETİ

1 PROGRAMLAMAYA GİRİŞ

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

BĠLGĠSAYAR PROGRAMLAMA II C++ Programlamaya GiriĢ Published by Juan Soulié

MAT213 Bilgisayar Programlama I

DÖNGÜLER BMÜ-111 ALGORİTMA VE PROGRAMLAMA-I YRD. DOÇ. DR. İLHAN AYDIN

DATA STRUCTURES. Part II. Değer ve Referans Veri Tipleri, Metotlar C# Programlama Dili Örnekleri

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Aritmetik Operatörler, Math Sınıfı ve Program Akış Komutları

Dr. Fatih AY Tel: fatihay@fatihay.net

EBG101 PROGRAMLAMA TEMELLERİ VE ALGORİTMA

BBS515 Nesneye Yönelik Programlama. Ders 2 Zümra Kavafoğlu

C#(Sharp) Programlama Dili

Programlama Dilleri 3

Java 2 Standart Edition SDK Kurulum ve Java ya Giriş

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 3. Bölüm Veri Tipleri ve Değişkenler

BİL1001 Bilgisayar Bilimlerine Giriş 1

C# ile İlk Uygulamalar ve Değişkenler

Kodlanacak programlama dilinin kaynaklarından faydalanılarak kod yazımı yapılır.

JAVA PROGRAMLAMA DİLİ ÖZELLİKLERİ

BMÜ-111 Algoritma ve Programlama. Bölüm 5. Tek Boyutlu Diziler

JAVADA DİZİ İŞLEMLERİ

Pythonda değişkenlerin türlerini tanımlamaya gerek yoktur

Programlamaya Giriş Karar Yapıları, Tekrarlı İfadeler(Döngüler)

Java da Program Denetimi ve Operatörler

BİL-142 Bilgisayar Programlama II

2.2- DEĞİŞKENLER VE SABİTLER ÇALIŞMA YAPRAĞI

Nesne Tabanlı Programlama-1

YZM 2116 Veri Yapıları

1 JAVASCRIPT NEDİR? 1

while(), do-while(), for() M.İLKUÇAR 2010 MAKU-MYO

D İ Z İ L E R A R R A Y S

7.1- Operatörler ve Giriş-Çıkış İşlemleri. M.İLKUÇAR - 1

Fonksiyonlar (Altprogram)

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Java da Program Denetimi ve Operatörler. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 2 1

Lambda İfadeleri (Lambda Expressions)

1. LabVIEW ile Programlama

JAVADA METOTLAR. BMÜ-111 Algoritma ve Programlama. Yrd. Doç. Dr. İlhan AYDIN

giriş program yapısı değişkenler metotlar class kontrol deyimleri döngü deyimleri diziler struct try. catch files GUI

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

Görsel Programlama (Visual Programming)

Programlama Dilleri 3

BPR152-Algoritma ve Programlama II Uygulama -12

BM102 BİLGİSAYAR PROGRAMLAMA II LABORATUVAR UYGULAMALARI. 3Hafta

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

C++ Giriş Ders 1 MSGSU Fizik Bölümü Ferhat ÖZOK Kullanılacak kaynak: Published by Juan Soulié

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

public static int Toplam int x, int y

Transkript:

ALGORTMA ve PROGRAMLAMA II 2004-2005 BAHAR YARIYILI Y. Doç. Dr. Aybars UUR

Dersin çerii 1. C# DLNE GR 2. VER TPLER ve DEKENLER 3. PROGRAM KONTROL (DENETM) YAPILARI 4. DZLER, STRING ve KARAKTER DZLER 5. METOTLAR ve ÖZYNELEME 6. NESNEYE YÖNELK PROGRAMLAMA 7. KUYRUKLAR ve YIIT 8. BALAÇLI LSTELER 9. ARAMA, SIRALAMA 10.DOSYALAR ve GUI 11.02.2005 Y. Doç. Dr. Aybars UUR 2

ALGORTMA ve PROGRAMLAMA Algoritma : Bir problemin çözümünde kullanılan komutlar dizisi. Bir problemi çözmek için gelitirilmi kesin bir yöntemdir. Bir algoritma, bir programlama dilinde (Java, C, Pascal gibi) ifade edildiinde program adını alır. Algoritmanın Önemi Programlama Dilleri 11.02.2005 Y. Doç. Dr. Aybars UUR 3

C# DLNE GR C#, event-driven, nesne yönelimli ve görsel bir programlama dilidir. Web tabanlı uygulamaların ve mobil iletiim cihazlarının yaygınlaması sonucu, programlama ortamlarında oluan gereksinimleri karılamak ve yaanmaya balayan sorunları ortadan kaldırmak için.net platformu ve C# programlama dili gelitirilmitir. (Microsoft) C# Programları, IDE (Integrated Development Environment) kullanılarak hazırlanır. IDE ortamında, programların yazılması, iletilmesi, test edilmesi ve hatalardan arındırılması kolay olduu için, bu ekilde uygulama yazılması ilemine RAD (Rapid Application Development) adı verilmektedir. 11.02.2005 Y. Doç. Dr. Aybars UUR 4

VISUAL STUDIO.NET ORTAMI C# ile Yeni Proje Açıldıktan Sonra 11.02.2005 Y. Doç. Dr. Aybars UUR 5

ÖRNEK 1 (1) KONSOL UGULAMASI : Merhaba Yazdıran Program New Project Dümesi ile yeni bir proje açılır. Projeye verilmek istenen isim Name kısmına yazılır ve Location kısmında Projenin dosyalarının tutulacaı yer belirtilir. Burada Proje ismi olarak Ornek1 yazılmıtır. Konsol Uygulaması yapacaımız için Console Application simgesi seçilerek OK dümesine basılır. Karımıza sonraki sayfadaki kod gelir. 11.02.2005 Y. Doç. Dr. Aybars UUR 6

ÖRNEK 1 (2) using System; namespace Ornek1 { /// <summary> /// Summary description for Class1. /// </summary> class Class1 { /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main(string[] args) { // // TODO: Add code to start application here // } } } 11.02.2005 Y. Doç. Dr. Aybars UUR 7

ÖRNEK 1 (3) // // TODO: Add code to start application here // Yerine stenen ii yapacak olan kod yazılır: Console.WriteLine("Merhaba"); Kod aaıdaki hale gelir : static void Main(string[] args) { Console.WriteLine("Merhaba"); } F5 e basılarak veya Menüden Debug-Start ile veya Araç çubuundaki Start dümesi ile program çalıtırılır. Ekran Çıktısı : Merhaba 11.02.2005 Y. Doç. Dr. Aybars UUR 8

ÖRNEK 1 (4) Kod çalımakta, Konsola Merhaba yazdırılmakta ve hemen C# ortamına geri dönülmektedir. Konsola yazılanları uzun süre görmek için kodun sonuna Console.ReadLine(); ifadesi eklenebilir. Bu durumda, program girdi bekleyecek ve ancak Enter tuuna basıldıında Konsol penceresi kapanacaktır. static void Main(string[] args) { Console.WriteLine("Merhaba"); Console.ReadLine(); } 11.02.2005 Y. Doç. Dr. Aybars UUR 9

VISUAL STUDIO.NET ORTAMI C# ile Windows Projesi Açıldıktan Sonra 11.02.2005 Y. Doç. Dr. Aybars UUR 10

ÖRNEK 2 (1) WINDOWS UYGULAMASI Windows Forms Araç Kutusundan Düme Button seçilerek Form üzerine ilgili boyutlarda yerletirilir. Properties penceresinden Text sahası bulunarak YAZDIR kelimesi yazılır. Dümenin üzerindeki metni belirtir. Windows Forms Araç Kutusundan Metin Kutusu TextBox seçilerek Form üzerine yerletirilir. Text sahasındaki textbox1 silinerek, form açılıında metin kutusunun bo açılması salanır. YAZDIR dümesine çift tıklanarak kod ekranına gelinir. Programın iletimi sırasında YAZDIR dümesine basıldıında yapılacak olan ilemleri içeren kod yazılır. Metin Kutusuna Merhaba yazdırmak için kod u ekilde deitirilir : (textbox1 metin kutumuza C# ın verdii isimdir. Deitirilebilir) private void button1_click(object sender, System.EventArgs e) { } textbox1.text = "Merhaba"; 11.02.2005 Y. Doç. Dr. Aybars UUR 11

ÖRNEK 2 (2) letimden Sonraki Pencere Görünümü Yazdır Dümesine Basıldıktan Sonra 11.02.2005 Y. Doç. Dr. Aybars UUR 12

ÖRNEK 3 LAB DA YAPILACAK New Project Visual C# Projects Windows Application ki Etiket Üç Metin Kutusu Bir Düme eklenir.... Düme için aaıdaki kod yazılır: private void button1_click(object sender, System.EventArgs e) { } textbox3.text = "" + (Double.Parse (textbox2.text) + Double.Parse (textbox1.text)); 11.02.2005 Y. Doç. Dr. Aybars UUR 13

C# Programının letimi CMD Konsol Uygulaması Aaıdaki program herhangi bir isim ile kaydedilir. (Burada Ornek1.cs adı verilmitir) csc Ornek1.cs komutu verilerek derlenir. (path ayarı!) Ornek1 programı çalıtırılır. using System; class Welcome1 { static void Main(string[] args) { Console.WriteLine("Merhaba"); } } 11.02.2005 Y. Doç. Dr. Aybars UUR 14

C# VER TPLER Veri Tipi Anlamı int tamsayı (32 bit) (-2,147,483,648..2,147,483,647) long uzun tamsayı (64 bit) short kısa tamsayı (16 bit) (-32768..32767) float kayan noktalı sayı (kns) (32 bit) (1,5E-45..3,4E+38) double çift duyarlıklı kns (64 bit) (5E-324..1.7E+308) byte 8 bit iaretsiz tamsayı (8 bit) (0..255) bool true/false deerleri char karakter (16 bit) uint iaretsiz tamsayı (32 bit) >4 milyar ulong (64 bit) (0..18,446,744,073,709,551,615) ushort (16 bit) (0..65535) decimal (128 bit) (1E-28..7,9E+28) (hatasız) 11.02.2005 Y. Doç. Dr. Aybars UUR 15

SINIF ADI System.Object System.String System.SByte System.Byte System.Int16 System.UInt16 System.Int32 System.UInt32 System.Int64 System.UInt64 System.Char System.Single System.Double System.Boolean System.Decimal KısaAdı object string sbyte byte short ushort int uint long ulong char float double bool decimal Tanımı Base class for all CTS types String Signed 8-bit byte Unsigned 8-bit byte Signed 16-bit value Unsigned 16-bit value Signed 32-bit value Unsigned 32-bit value Signed 64-bit value Unsigned 64-bit value 16-bit Unicode character IEEE 32-bit float IEEE 64-bit float Boolean value (true/false) 128-bit data type exact to 28 or 29 digits mainly used for financial applications where a great degree of accuracy is required 11.02.2005 Y. Doç. Dr. Aybars UUR 16

DEKENLER Tip deiken ismi int sayi1; // int veri tipidir. /* sayi1 deikeninin tamsayı tipinde olduunu belirtir */... sayi1=5; float sayi=5.7f; 11.02.2005 Y. Doç. Dr. Aybars UUR 17

VER TP DÖNÜÜMLER int i=10; float f; f=i; double sayi; int karekok = (int) Math.Sqrt(sayi); 11.02.2005 Y. Doç. Dr. Aybars UUR 18

YAZDIRMA KOMUTU : Console.WriteLine Console.WriteLine( Not Ortalaması = + ort); Console.WriteLine( ubat {0} veya {1} gündür, 28,29); Console.WriteLine( Sayı\tKaresi ); Console.WriteLine( {0}\t{1},5,5*5); Console.WriteLine( {0,8}{1,10},7,7*7); Console.WriteLine( 10/3 = {0:#.##},10.0/3.0); 11.02.2005 Y. Doç. Dr. Aybars UUR 19

OPERATÖRLER - I Hesaplamalarda kullanılan operatörler : Aritmetik : +, -, *, /, % (Mod, kalan), ++, -- Mantıksal : &&,,!, &,,... likisel : == (eittir)!= (eit deildir) >, <, >=, <= 11.02.2005 Y. Doç. Dr. Aybars UUR 20

OPERATÖRLER - II Atama Operatörü : deiken = deyim; int x = 5; double sayi = -3.5; int a, b, c; a=b=c=100; // Atama zinciri Bileik Atamalar : +=, -=, *=, /=,... x-=10; // x = x - 10 ile edeer 11.02.2005 Y. Doç. Dr. Aybars UUR 21

YAPISAL PROGRAMLAMA Yapısal Programlamada üç tür denetim yeterlidir: Sıra (Sequence) Seçim (Selection) Tekrar (Repetition) Sıralı iletim? 11.02.2005 Y. Doç. Dr. Aybars UUR 22

PROGRAM DENETM YAPILARI SEÇM YAPILARI if if/else switch TEKRAR YAPILARI (Döngüler) while do/while for foreach 11.02.2005 Y. Doç. Dr. Aybars UUR 23

if (koul) ifade SEÇM YAPILARI : IF if(notu>=60) Console.WriteLine( Geçti ); Koul : bool veri tipindedir. true veya false olabilir. fade blou : if(notu>=60) { Console.WriteLine( Geçti ); sayac++; } 11.02.2005 Y. Doç. Dr. Aybars UUR 24

SEÇM YAPILARI : IF/ELSE if (koul) ifade; else ifade; if(notu>=60) Console.WriteLine( Geçti ); else Console.WriteLine( Kaldı ); 11.02.2005 Y. Doç. Dr. Aybars UUR 25

KÜMELENM (ÇÇE) IF LER (NESTED IF) Verilen bir sayının iaretini (negatif, pozitif veya 0) bulan C# kod parçası : if (i==0) Console.WriteLine( aretsiz ); else if(i<0) Console.WriteLine( Negatif ); else Console.WriteLine( Pozitif ); 11.02.2005 Y. Doç. Dr. Aybars UUR 26

CONDITIONAL OPERATOR (?:) Console.WriteLine(notu>=60? Geçti : Kaldı ); Edeer ifade : if (notu>=60) Console.WriteLine( Geçti ); else Console.WriteLine( Kaldı ); 11.02.2005 Y. Doç. Dr. Aybars UUR 27

IF-ELSE-IF MERDVEN (CASCADING IF) if(koul) ifade else if (koul) ifade else if (koul) ifade... else ifade; if (notu>=90) str = A ; else if (notu>=80) str = B ; else if (notu>=70) str = C ; else if (notu>=60) str = D ; else str = E ; Console.WriteLine(str); 11.02.2005 Y. Doç. Dr. Aybars UUR 28

SEÇM YAPILARI : SWITCH switch (deyim) { case sabit1: ifade1; break; case sabit2: ifade2; break;... default : ifade; break; } switch(sayi) { case 0 : Console.WriteLine( Sayı 0 ); break; case 1 : Console.WriteLine( Sayı 1 ); break; case 2 : Console.WriteLine( Sayı 2 ); break; default : Console.WriteLine( X ); break; } 11.02.2005 Y. Doç. Dr. Aybars UUR 29

DÖNGÜLER : FOR for(int sayac=0; sayac<10; ++sayac) for(balangıç; devam koulu; kontrol deikeni deiimi) for(int sayac=0; sayac<10; ++sayac) { ifadeler; } foreach döngüsü için diziler bölümüne bakınız. 11.02.2005 Y. Doç. Dr. Aybars UUR 30

DÖNGÜLER : WHILE ve DO-WHILE while(koul) ifade do { ifadeler } while (koul); int sayac=1, toplam=0; while(sayac<10) { toplam+=sayac; sayac++; }; 11.02.2005 Y. Doç. Dr. Aybars UUR 31

DÖNGÜDEN ÇIKMAK : BREAK for(int x=1; x<10; ++x) { toplam+=x; if (x==5) break; } Console.WriteLine( 1 ile 5 arasındaki sayıların toplamı = +toplam); BREAK sadece en içteki döngüden çıkar. 11.02.2005 Y. Doç. Dr. Aybars UUR 32

DÖNGÜDE ERKEN TEKRAR : CONTINUE 1 ile 100 arasındaki tek sayıları yazan program : for(int i=0; i<100; ++i) { if ( (i%2)!=1) continue; Console.WriteLine(i); } 11.02.2005 Y. Doç. Dr. Aybars UUR 33

DZLER Dizi (array), aynı tipteki deikenler topluluudur. int[] arr = new int[10]; int[] dizi = {5,7,12,2,9,8,14,21,-6,5}; 0 1 2 3 4 5 6 7 8 9 5 7 12 2 9 8 14 21-6 5 double[] sayilar; sayilar = new double[5]; -3.4 12.5 27.0 1.1 25.33 11.02.2005 Y. Doç. Dr. Aybars UUR 34

DZ KULLANIM ÖRNEKLER dizi[2]++; dizi[3]=dizi[1]+dizi[2]; Console.WriteLine(dizi[5]); Dizi elemanlarının toplamını bulduran programı yazınız : dizi.length kullanınız! 11.02.2005 Y. Doç. Dr. Aybars UUR 35

FOREACH foreach döngüsü, özellikle bir koleksiyonun tüm elemanları üzerinde ilemler yapılacaksa yararlıdır : int toplam=0; foreach(int i in dizi) toplam+=i; foreach döngüsü break kullanılarak daha erken de bitirilebilir. 11.02.2005 Y. Doç. Dr. Aybars UUR 36

K BOYUTLU DZLER (MATRSLER) M x N M satır, N sütun M=4 0 2 21 3 89 tablo 1 15 33 17 3 2 9 8 61 5 0 1 2 3 N=3 Oluturulması : int[,] tablo = new int[4,3]; Kullanımı : tablo[0,2] 11.02.2005 Y. Doç. Dr. Aybars UUR 37

ÇOK BOYUTLU DZLER Tip [,...,] isim = new tip[büyüklük1,..., büyüklükn] Örnekler double[,,] mdizi = new double[4,10,2]; // boyutu 3 float[,,,] dizi4d = new float[5,5,5,5]; // boyutu 4 11.02.2005 Y. Doç. Dr. Aybars UUR 38

DÜZENSZ DZLER (jagged array) Her biri farklı uzunluktaki dizilerin oluturduu dizidir. ki boyutlu dizilerde dikdörtgensel olmayan matrisler elde etmek için kullanılabilir : Her satırı farklı uzunlukta olabilen matris. int[][] ddizi =new int[3][]; ddizi[0]=new int[4]; ddizi[1]=new int[3]; ddizi[2]=new int[5]; ddizi 11.02.2005 Y. Doç. Dr. Aybars UUR 39

STRING LER ve KARAKTER DZLER Karakter dizisi : char[] harfdizi = { T, e, s, t }; String : Karakter dizisinden farklıdır. string str1 = Merhaba ; string str2 = new string(harfdizi); 11.02.2005 Y. Doç. Dr. Aybars UUR 40

BÖL ve ÇÖZ (Divide and Conquer) Yazılım Mühendislii deneyimleri, büyük programlar gelitirmenin en iyi yolunun küçük program parçaları (modül) yazıp onları birletirmek olduunu göstermitir. Böl ve Çöz olarak bilinen bu yöntem aynı zamanda, hatalardan arındırmayı, programı gelien artlara göre büyütmeyi, deiiklikler yapmayı kolaylatırmak ve anlaılırlıı artırmak gibi birçok avantajı da beraberinde getirmektedir. C# ta temel modüller, sınıf (class) ve metotlardır (method). Metotlar yazılım içinde yeniden kullanılarak kodu ve yazılım gelitirme süresini kısaltmaktadır. 11.02.2005 Y. Doç. Dr. Aybars UUR 41

METOTLAR (METHOD) Bir ilemin yapılması için bir veya daha fazla ifade kullanmak gerekir. Verilen bir matrisi ekrana yazdırmak gibi. lgili kodu yazdir() adını verdiimiz bir metot içine yazarak istediimiz zaman, ismi ile çaırabiliriz..framework Class Library (FCL), matematik hesaplamalarını, string, karakter, girdi/çıktı ilemlerini ve dierlerini yapmak için hazır sınıflar ve metotlar içermektedir. Ayrıca deiik alanlarda hazırlanmı veya kendimizin daha önceden hazırladıı metotları da kullanmak mümkündür. 11.02.2005 Y. Doç. Dr. Aybars UUR 42

Çok Kullanılan Hazır Metotlar Bazı Math Sınıfı Metotları Abs(x) Ceiling(x) Floor(x) Cos(x) Sin(x),Tan(x) Exp(x) Log(x) Max(x,y), Min(x,y) Pow(x,y) Sqrt Mutlak deer x i kendinden küçük olmayan en küçük tamsayıya yuvarlar x ten büyük olmayan en büyük tamsayıyı döndürür Radyan cinsinden trigonometrik fonksiyonlar e x Logaritma Max ve Min fonksiyonları 2 sayıdan büyük/küçük olanı döndürür. Üs : x y Karekök Abs(-5.3) == 5.3 Ceiling(-9.8) == -9.0 Floor(-9.8) == -10.0 Cos(0.0) == 1.0 Exp(1.0) yaklaık 2.718.. Log(2.718) yaklaık 1.0 Max(3.7,12.3) == 12.3 Min(3.7,12.3) == 3.7 Pow(9.0,.5) == 3.0 Sqrt(900.0) == 30.0 11.02.2005 Y. Doç. Dr. Aybars UUR 43

METOTLARIN GENEL BÇM eriim dönü_tipi isim(parametre listesi) { metodun gövdesi } Eriim : public, private gibi Dönü_tipi : metodun döndürdüü veri tipi. Deer döndürmüyorsa void. Parametre listesi :, lerle ayrılmı tip ve parametre ismi. 11.02.2005 Y. Doç. Dr. Aybars UUR 44

Deer Döndürmeyen Metotlar void metotları public void yazdir() { Console.WriteLine(Merhaba); } Çarılması : yazdir(); 11.02.2005 Y. Doç. Dr. Aybars UUR 45

Deer Döndüren Metotlar public int topla(int a, int b) { return (a+b); } Çarılması : int y=topla(5,6); Metodun iki de parametresi var. 11.02.2005 Y. Doç. Dr. Aybars UUR 46

Parametre, Argüman, Return Argüman : Metoda aktarılan deer Parametre : Argümanı kabul eden deiken Return : Metottan çıkmak veya geri dönmek 11.02.2005 Y. Doç. Dr. Aybars UUR 47

ÖZYNELEME RECURSION Kendini dorudan veya dolaylı olarak çaıran fonksiyonlara özyineli (recursive) fonksiyonlar adı verilir. Özyineleme (recursion), iterasyonun (döngüler, tekrar) yerine geçebilecek çok güçlü bir programlama tekniidir. Orijinal problemin küçük parçalarını çözmek için, bir alt programın kendi kendini çaırmasını salayarak, tekrarlı ilemlerin çözümüne farklı bir bakı açısı getirir. Aaıdaki faktöryel metodu özyineli bir metottur ve Console.WriteLine(factorial(3)); deyimi ile çarıldıında ekrana 6 yazdırır : public int factorial(int n) { if(n==0) return 1; else return (n*factorial(n-1)); } 11.02.2005 Y. Doç. Dr. Aybars UUR 48

SINIFLAR (CLASS) Sınıf bir nesnenin eklini tanımlayan ablondur. Veri, metot ve dier bileenleri içerir. Nesneler ise sınıfın örnekleridir. class Ogrenci { public string ad, soyad; public int yas; public void yazdir() { Console.WriteLine(ad+ +soyad+ +yas) }; } Ogrenci ogrenci1 = new Ogrenci(); 11.02.2005 Y. Doç. Dr. Aybars UUR 49

KUYRUKLAR (1) Kuyruklar, eleman eklemelerin sondan (rear) ve eleman çıkarmaların batan (front) yapıldıı veri yapılarıdır. Bir eleman eklenecei zaman kuyruun sonuna eklenir. Bir eleman çıkarılacaı zaman kuyrukta bulunan ilk eleman çıkarılır. Bu eleman da kuyruktaki elemanlar içinde ilk eklenen elemandır. Bu nedenle kuyruklara FIFO (First-In First-Out = ilk giren ilk çıkar) listeleri de denilmektedir. Gerçek yaamda da bankalarda, duraklarda, gielerde, süpermarketlerde, otoyollarda kuyruklar olumaktadır. Kuyrua ilk olarak girenler ilemlerini ilk olarak tamamlayıp kuyruktan çıkarlar. Veri yapılarındaki kuyruklar bu tür veri yapılarının simülasyonunda kullanılmaktadır. Ayrıca ilemci, yazıcı, disk gibi kaynaklar üzerindeki ilemlerin yürütülmesinde ve bilgisayar alarında paketlerin yönlendirilmesinde de kuyruklardan yararlanılmaktadır. C# ta Kuyruk yapısı hazır olarak vardır : (Koleksiyon sınıflarından) Queue sınıfının bazı metotları Enqueue metodu : Kuyruun sonuna eleman ekler. Dequeue metodu : Kuyruun baından eleman siler. 11.02.2005 Y. Doç. Dr. Aybars UUR 50

KUYRUKLAR (2) Queue q = new Queue(); q.enqueue ("Masa"); q.enqueue ( Koltuk"); q.enqueue ("Dolap"); q q q Ekran Ekran Çıktısı Çıktısı :: Masa Masa Koltuk Koltuk Masa Dolap Dolap Masa Koltuk Masa Koltuk Dolap while(q.count!=0) q Console.WriteLine(q.Dequeue()); Koltuk Dolap q Dolap q bo 11.02.2005 Y. Doç. Dr. Aybars UUR 51

YIIT (1) Eleman ekleme çıkarmaların en üstten (top) yapıldıı veri yapısına yııt (stack) adı verilir. Bir eleman ekleneceinde yııtın en üstüne konulur. Bir eleman çıkarılacaı zaman yııtın en üstündeki eleman çıkarılır. Bu eleman da yııttaki elemanlar içindeki en son eklenen elemandır. Bu nedenle yııtlara LIFO (Last In First Out : Son giren ilk çıkar) listesi de denilir. C# ta Yııt yapısı hazır olarak vardır : (Koleksiyon sınıflarından) Stack sınıfının bazı metotları Push : Yııta (sonuna) eleman ekleyen metot. Pop : Yııttan (sonundan) eleman silen metot. 11.02.2005 Y. Doç. Dr. Aybars UUR 52

YIIT (2) 1. Stack s = new Stack(); 2. s.push("masa"); 3. s.push("koltuk"); 4. s.push("dolap"); Ekran Ekran Çıktısı Çıktısı :: Dolap Dolap Koltuk Koltuk Masa Masa 5. while(s.count!=0) Console.WriteLine(s.Pop()); Adım 3 Adım 4 Adım 5 Adım 5 Dolap Adım 2 Koltuk Koltuk Koltuk Adım 1 s Masa s Masa s Masa s Masa s Masa s Adım 5 s 11.02.2005 Y. Doç. Dr. Aybars UUR 53

KAYNAKLAR Dr. Aybars UUR, Veri Yapıları Ders Notları, 1999. Herbert Schildt, C# : The Complete Reference, McGraw-Hill, 2002 (Türkçe Baskısı : Herkes çin C#) Deitel ve Dierleri, C# : How to Program, Prentice- Hall, 2002. Cormen, T.H., Leiserson, C.E., Rivest, R.L., Stein, C., Introduction to Algorithms, Second Edition, MIT Press, McGraw-Hill, 2001. 11.02.2005 Y. Doç. Dr. Aybars UUR 54