45
EĞİTİM : VISUAL STUDIO KULLANIMI - KONTROL YAPILARI VE DÖNGÜLER Bölüm : Visual Studio Kullanımı Konu : Visual Studio Açılış Ekranı

EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Visual Studio Açılış Ekranı

Page 2: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

2 / 45

Visual Studio başlatıldığında bizi açılış sayfası karşılar.

Açılış sayfası aracılığıyla şunlar yapılabilir :

Sol üst kısımda New Project linkine tıkladığında açılacak diyalog kutusu, istediğin

tipte .NET projesi açmana yardımcı olur. Express versiyonda, full versiyona göre

daha az proje şablonu listelenecektir. Yeni proje oluşturuken altı çizilmesi gereken

bir diğer nokta şudur : Açılan proje, istenen .NET Framework versiyonuna yönelik

kodlanabilir.

Buna gerekçe olarak şöyle bir örnek verilebilir : Uygulamanın yazıldıktan sonra

çalışacağı gerçek ortamda bir önceki framework versiyonunun bulunması ve teknolojileri

departmanı politikası uyarınca o anda yükseltilememesi. Bu şekilde ilgili framework

versiyonunun sahip olduğu yeteneklerle uygulama geliştirebilirsin.

Page 3: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

3 / 45

Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin

sln dosyasını göstererek çalışmaya devam etmene yardımcı olur.

Sol taraftaki Recent Projects kısmında en son çalıştığın projeleri listeler. Projeleri

hızlıca yeniden açmanı ve çalışmaya devam etmeni sağlar.

Sağ tarafta 3 tane tab vardır.

o Get Started (Başlangıç): Windows, Web, Oficce Uygulamaları Geliştirme

gibi alt başlıklarda programlama yapmak için yardımcı olacak makale,

video gibi kaynaklar bulunur. Bu kaynakların bir çoğuna erişmek için

internet bağlantısına ihtiyaç olacaktır.

o Guidance and Resources (Rehber ve Kaynaklar) : Yazılım geliştirme

sürecini düzenlemek için yardımcı kaynaklar içerir. Planlama, yazılım

dizaynı, geliştirme, test, yayınlama, yönetme alt başlıkları için Visual

Studio’yu daha etkin nasıl kullanacağın konusunda makale ve videolar

içerir. Burası aynı zaamnda MSDN’deki kaynakları efektif kullanman için

sana yol gösterici olacaktır.

o Latest News (Güncel Haberler) : Buraya bir rss kayıt edebilirsin.

Varsayılan olarak Microsoft uygulama geliştirme ile ilgili son haberleri

içeren bir rss linki kayıtlıdır. Bilgisayarının internet bağlantısı olduğunda en

son gelişmeleri buradan takip etmen mümkün.

Page 4: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

4 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Visual Studio Menüleri

Page 5: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

5 / 45

Visual Studio kullanırken bütün ekranlarda gördüğün menüler komut ve pencerelere

erişim için kolaylık sağlar.

Bu menüler yardımıyla Visual Studio’nun gücünden faydalanabilirsin. Menüleri

birkaç örnek ile inceleyelim :

File : Üzerinde çalışılan proje kayıt edilebilir yada kapatılabilir, yeni proje

açılabilir.

Edit : Solution Explorer, Server Explorer, Object Browser gibi geliştiricinin ihtiyaç

duyacağı pencereler açılabilir.

Project : Projeye yeni kod dosyaları eklenebilir, referans kütüphane yada servis

eklenebilir.

Build : Projelerin derlenmesi için kullanılır. Kod yazarken sık sık kodun derlenmesi

ve varsa hataların incelenmesi için faydalıdır.

Debug : Kesme işareti (breakpoint) koyulabilir, debug edilebilir. Programların satır

satır ilerlenerek incelenmesi için kullanılabilir. Lokal değişkenlerin belli bir anda çalışma

zamanındaki durumunu anlamak için faydalıdır.

Data : Bir veri kaynağına bağlanmak için kullanılır. Örneğin bir sql veritabanındaki

tablolar ve verileri incelenebilir, sorgu ekranı olarak kullanılabilir.

Tools : Visual Studio’nun görsel ayarları yapılabilir.

Window : Visual Studio ekranını bölerek kullanmak, tab görünümünü değiştirmek

için kullanılır.

Help : Geniş MSDN (Microsoft Developer Network) kaynakları içerisinde yardım

aramak için, Visual Studio’nuzun versiyonunu öğrenmek için kullanılabilir.

Page 6: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

6 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Visual Studio Pencereleri

Page 7: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

7 / 45

Visual Studio Pencereleri

Visual Studio’nun gücünü daha yakından tanıyabilmek adına yazılım geliştirici için

bazı önemli pencereleri inceleyelim.

Solution Explorer

Üzerinde çalıştığın proje ile ilgili birçok detaya Solution Explorer penceresinden

erişebilirsin.

Projeye dahil ettiğin kod dosyaları

Projeye dahil ettiğin görsel arayüzler(windows form, web sayfası gibi)

Projeye referans olarak eklenmiş assembly’ler

Projenin konfigürasyon dosyası

Proje ile ilgili bütün dosyalar, projeyi oluştururken senin belirlediğin dizinde bir klasör

içerisinde saklanır. Solution Explorer, bu klasörü sana hiyerarşik bir şekilde gösteren

penceredir. Solution Explorer penceresini açmak için menüden View Solution

Explorer sekmelerini takip edebilirsin.

Tek Solution İçerisinde Birden Fazla Proje İle Çalışmak

Bazen aynı çözüm için birden fazla proje yazman gerekebilir. Örneğin bir içerik

yönetim sistemi programı için windows uygulaması açılabilir. Ardından excel

dosyalarındaki verileri veritabanına kayıt etmek için basit bir konsol uygulamasına ihtiyaç

duyulabilir. Her proje bir solution olabileceği gibi, bir solution içinde birden fazla proje

saklanabilir. Bu durumda 2.projeyi Solution Explorer üzerinde açmak gerekir. Bunun için

Solution Explorer içinde ilk satıra sağ tıklayıp Add New Project demek yeterlidir.

Böylece tek bir sln dosyası ile birden fazla projeyi gruplayarak takip edebilirsin.

Page 8: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

8 / 45

Projeye Referans Eklemek

Projene .NET Framework içerisinde en sık kullanılan assembly’lerin referansları dahil

edilmiştir. Bunu Solution Explorer içindeki References klasöründe görebilirsin. Varsayılan

olarak eklenen bu kütüphanelerin listesi, açtığın proje çeşidine göre değişiklik gösterir.

.NET Framework içerisindeki diğer kütüphaneleri programında kullanmak

isteyebilirsin. Örneğin açtığın konsol uygulamasının konfigürasyon dosyasına (App.config)

erişmesi için gerekli tipleri içeren System.Configuration.dll’ini eklemek istedin. Bunun için

yapman gereken References klasörüne sağ tıklamak ve Add Reference... menü

kalemini seçmektir. Açılan pencerede birkaç tane sekme var.

Page 9: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

9 / 45

.NET sekmesi, çalıştığın bilgisayarda kurulu olan framework’ün sahip olduğu bütün

assembly’leri listeleler. Bunlardan istenen dll dosyası seçilip OK butonuna basılır. Artık

seçtiğin assembly içindeki bütün tiplerden faydalanabilirsin.

Browse sekmesini kullanarak bir arkadaşının yazdığı yada internet gibi diğer

kaynaklardan bulduğun kütüphaneleri, projende kullanabilirsin. Bunun için yapman

gereken şey, dll dosyasının dizindeki yerini göstermek ve ardından OK butonuna

basmak.

Server Explorer

Server Explorer, Visual Studio’nun sunucu yönetim penceresidir.

Bu pencere yardımı ile, bir veri kaynağına bağlanıp oradaki veritabanını

incelenebilir. Bağlanılan veritabanı altında tablolar, fonksiyonlar listelenir. Dilenirse sql

sorguları yazılabilir. Microsoft Sql Server yanında Access, Oracle gibi diğer veri

kaynaklarına da bağlanılabilir.

Bunun yanında ağ üzerindeki bir bilgisayara bağlanıp sistem servislerinden bilgi

almak için kullanılabilir.

Page 10: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

10 / 45

Server Explorer penceresini açmak için menüden View Server Explorer

sekmelerini takip edebilirsin.

Object Browser

Object Browser, projende yer alan bütün tip ve üyeleri incelemene izin veren bir araçtır.

Projeye varsayılan olarak dahil olan kütüphaneler, kendi yazdığın kodlar ve senin

sonradan eklediğin kütüphaneleri burada bulabilirsin.

Bu pencere sayesinde ilk defa kullanacağın bir kütüphaneyi yakında inceleyebilir ve hangi

üyelerini kullanabileceğin hakkında fikir sahibi olabilirsin.

Projenin referans mimarisini bir başka geliştirici arkadaşına anlatırken Object Browser

aracından faydalabilirsin.

Burada yakalaman gereken bir başka detay da şudur : Solution Explorer penceresindeki

referanslarda yer almayan ama Object Browser aracında görülen : mscorlib. Bu

assembly, varsayılan olarak bütün .NET projelerine dahil edilir. İçerisinde int, double,

Console vb. en temel veri tiplerini barındırır.

Object Browser penceresini View Object Browser menüsünden açabilirsin.

Page 11: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

11 / 45

Object Browser üç tane panelden meydana gelmektedir:

Solda Nesne Paneli

Sağ üstte Üye Paneli

Sağ altta Açıklama Paneli

Nesne panelinde yer alan ikonlar, .NET Framework içerisindeki hiyerarşik yapıları ağaç

görünümünde sunmaktadır. Bu ağaçta isim alanları (namespaces), assembly’ler,

arayüzler (interface), sınıflar (classes) gibi bir programı oluşturan bütün kavramlar

gösterilir. Bu nesneleri panel üzerinde genişletebilir ve kendisine bağlı üyeleri sıralı olarak

inceleyebilirsin. Özellikler, metotlar, olaylar, değişkenler ve diğer tip üyeleri Üye

Panelinde listelenir. Nesne ve Üye panelinde seçilen programlama nesnesinin detayı

Açıklama Panelinde gösterilir.

Page 12: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

12 / 45

Class View

Class View, geliştirmekte olduğun uygulamanın içinde çağrılan, referans edilen ve

tanımlanan programlama nesnelerini gösterir.

Class View penceresini View Class View menüsünden açabilirsin.

Page 13: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

13 / 45

Class View penceresinin iki tane paneli vardır :

Nesne Paneli

Üye Paneli

Bu pencere uygulama yazarken her zaman açık kalabilir; böylece uygulama içindeki

hiyerarşiye sürekli hakim olursun. İkonlar sana hiyerarşik yapıyı gösterir; bu şekilde

projendeki tiplerin ve o tiplere ait üyelerin listesini görürsün. Aynı zamanda kendi

yazdığın tip yada üyeye tıklayarak projedeki kodun olduğu yere gidebilirsin. .NET

Framework’e ait bir tip yada üyeye tıkladığında ise daha detaylı inceleyebilmek için

Object Browser aracına geçiş yapabilirsin.

Code Definition

Code Definition, sen kod yazarken kullandığın tip ve üyelerin tanımlarını anlık olarak sana

gösteren bir penceredir. Aktif projede senin yazdığın yada referans edilmiş

kütüphanelerin içindeki kod dosyalarında yer alan tanımları gösterir. Gösterdiği tanımları

sadece-okunabilir olarak sunar.

Page 14: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

14 / 45

Pencereyi View Code Definition Window menüsünden ilk defa açtığında, en son

seçtiğin nesnenin tanımını gösterir. Sadece okunabilir olmasına rağmen birçok açıdan

fonskiyonel bir editördür. Örneğin bu pencereden kod yada yorum satırı kopyalayabilirsin.

Penceredeki kod satırına kesme işareti (breakpoint) koyabilir; bu yolla programın o satıra

kadar çalışıp o satırda duraksamasını sağlayabilirsin. Pencerede gördüğün içeriği

güncellemek istediğinde ise pencere içinde sağ tıklayıp Edit Definition alt menüsünü

seçerek ilgili koda gidebilirsin.

Page 15: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

15 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Visual Studio İle

Uygulamaların Debug Edilmesi

Page 16: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

16 / 45

Yazmakta olduğun C# programı çalışırken lokal değişkenlerin değerini görmek istedin.

Bu, değerlerin doğru olduğundan emin olmak adına faydalı olacaktır. Aynı şekilde

programı satır satır çalıştırarak uygulamanın davranışını takip etmek çok işine yarayacak.

İşte sana Visual Studio ortamında değişkenlerin debug edilmesi ile ilgili bir örnek ekran :

Lokal değişkenlerin çalışma zamanında içeriklerine bakmak için kod bloğunun uygun

bir yerine kesme işareti (breakpoint) koymak gerekir. Bunu modellemek adına C# dili ile

yazılmış ve bir çok lokal değişkene sahip kısa konsol programına göz atalım :

Lokal Değişkenler Kullanan C# Programı

using System; namespace DebugCsharpProgram { class Program { static void Main(string[] args) { //İndirim oranı - Lokal değişken double oran = 0.15; //Aracın fiyatı - Lokal değişken long fiyat = 25460; //İndirimli satış rakamı - Lokal değişken double sonFiyat = fiyat - (fiyat * oran);

Page 17: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

17 / 45

Console.WriteLine("Aracın satış rakamı :

{0}",sonFiyat); } } }

Page 18: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

18 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Kesme İşareti (Breakpoint)

Eklemek

Page 19: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

19 / 45

Örnek programın sonuna doğru bir kesme işareti ekliyoruz. Kaynak kodu yazdığın ekranın

en solunda dar gri bir şerit göreceksin. Debug etmek istediğin satırda o şerite tıkla (F9

yada menüden Debug Toogle Breakpoint). Visual Studio orayı kırmızı bir daire ile

işaretler. Kod üzerinde oluşan kırmızı blok ise debugger’ın açılacağı bloğu belirtir.

Page 20: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

20 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Debug İşlemini Başlatmak

Page 21: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

21 / 45

Visual Studio ile programı başlatırken, aynı zamanda debugger’ın nasıl başlatılacağını

görelim. Bunu yapmak için Visual Studio’da üst kısımdaki araç çubuğunda yer alan yeşil

oka tıklamak yeterlidir. Bu, klavyede F5 tuşuna basmak ile aynı işlemi gerçekleştirir.

Ayrıca debug süreci kısayollar yerine, menüden yönetilebilir. Visual Studio üst

menüsünde Debug Start Debugging tıklanarak hem uygulama çalıştırılmış olur, hem de

kod içerisinde kesme işaretiniz (breakpoint) varsa program çalışıp o satırda çalışmayı

duraksatır ve bekler.

Programın Kesme İşaretine Gelmesi

Program çalıştırıldığında kod dosyasına koyulan kesme işaretine gelir ve çalışması

ilgili o satırda duraksar. Kırmızı kod bloğu, sarıya döner. Sol şeritteki kırmızı dairenin

içinde sarı ok belirir ve debugger’ın o anda hangi satırı işletmekte olduğunu sana gösterir.

Visual Studio Call Stack, Immediate Window gibi birçok panel açar ve çalışma zamanı ile

alakalı geliştiriciye kullanışlı bilgiler sunar. Bu noktada Locals penceresini açarak, o anda

bellekte yer alan lokal değişkenleri inceleyelim. Visual Studio’daki birçok ekran gibi Locals

penceresini açmanın da birçok yolu var. Şimdi Debug Windows Locals menüsünü

kullan.

Page 22: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

22 / 45

Buradaki kolonların ne ifade ettiklerine kısaca göz atalım:

- Name : Lokal değişkene verilen isim

- Value : Lokal değişkenin çalışma zamanında o andaki güncel değeri

- Type : Tanımlanan lokal değişkenin veri tipi

Komut Satırları Arasında Adım Adım İlerlemek

Bazen kodu debug ederken bir sonraki satıra ilerlemek isteyebilirsin. Bunu yaparken

sıradaki metodun içerisine girip satır satır kodu işletmek ve oradaki değişkenlerin aldığı

değerleri görme ihtiyacın olabilir. Ayrıca 3 satır aşağıda başka bir kesme işareti

(breakpoint) koymuş olabilirsin ve satır satır ilerlemeden programın doğrudan oraya

kadar çalışmasını ve orada yeniden duraksamasını isteyebilirsin. Bunun için tekrar F5’e

basman yeterlidir. İşte diğer seçenekler :

Step Into (F11)

Bu hareket, programın bulunduğu satırı çalıştırmasını ve ardından bir sonraki satıra

geçmesini sağlar. Eğer debugger’ın o an üzerinde bulunduğu satır, metot çağıran bir kod

içeriyorsa debugger metodun içine girer ve ilk satırında duraksar. Böylece metot

içerisindeki lokal değişkenlerin durumu gözlenebilir. Menüden Debug Step Into yada

klavyeden F11 ile kullanılabilir.

Step Over (F10)

Bu hareket, programın bulunduğu satırı çalıştırmasını ve ardından bir sonraki satıra

geçmesini sağlar. Ancak sıradaki satırda bir metot varsa onun içine girmez ve metodu

çalıştırıp devam eder. Menüden Debug Step Over yada klavyeden F10 ile kullanılabilir.

Step Out (Shift + F11)

Bu hareket, o an debug edilen metodun geri kalanına satır satır devam etmeyip tek

seferde çalıştırır ve kendisini çağıran metoda geri döner. Adım adım çalışmaya dışardaki

metottan devam eder. Menüden Debug Step Out yada klavyeden Shift + F11 ile

kullanılabilir.

Page 23: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

23 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Debug İşlemini Sonlandırmak

Page 24: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

24 / 45

Kodu Debug ederken istenen anda vazgeçebilir ve programı sonlandırabilirsin. Bunu

yapmak için Visual Studio’da üst kısımdaki araç çubuğunda yer alan mavi kare işaretine

tıklaman yeterlidir. Alternatif olarak klavyeden Shift + F5 tuşlarını kullanabilirsin.

Bir Uygulamayı Debug Etmeden Çalıştırmak

Yazdığımız programın içinde breakpoint’ler olsa da olmasa da adım adım ilerlemek

yerine bütün programı tek seferde çalıştırmak ve ortaya çıkan sonucu görmek istediğinde

Debug Start Without Debugging yada Ctrl + F5 tercih etmelisin.

Debug Seçeneğini Devre Dışı Bırakmak

Yazdığın programı gerçek ortamında yayınlamadan önce debug etme seçeneği

devre dışı bırakılmalıdır. Bunun sebebi debugger’ın önemli ölçüde performans yükü

getirmesidir. Debug seçeneği web.config dosyası üzerinden kapatılmış bir programın

çalışması, açık olan programın çalışmasına göre yaklaşık 2 kat daha hızlıdır. Bunun için

web uygulamasında web.config dosyasında compilation etiketinin debug niteliğine false

değer vermelisin. Konsol yada masaüstü uygulamalarda ise menüden Project ProjeAdin

Properties Debug Configuration listesinde Release seçmelisin.

Page 25: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

25 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Kontrol Yapıları

Page 26: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

26 / 45

If Kontrolü

İngilizce olarak Eğer anlamına gelen if kontrolü, aynen Türkçe’deki gibi kullanılır. Eğer

ile başlayan cümlenin mantıksal ifadesi doğru (true değer dönerse) ise eğer için yazılmış

kod bloğu çalıştırılır; aksi takdirde bu bloğun atlanarak çalıştırılmamasını sağlar. Bir

uygulamanın kod akışını belli şartlara bağlı olarak dallandırmak için kullanılan if

deyiminde kontrol her zaman ilişkisel, koşul veya eşitlik operatörleri ile sağlanır. Genel

söz dizimi aşağıdaki gibidir :

İf (mantıksal ifade) { //Yapılacak iş bloğu }

Bu örneğimizde mantıksal ifadenin doğru olması halinde “Yapılacak iş bloğu”

nun bulunduğu blok çalışır; yanlış olması yani false değer döndürmesi halinde ise

“Yapılacak iş bloğu” nun bulunduğu kod bloğu çalıştırılmadan atlanır ve bloğun bittiği

noktadaki satırdan itibaren normal kod akışı devam eder.

Ayrıca, if bloğunu takiben, bir else bloğu kullandığında; eğer mantıksal ifadenin

döndürdüğü değer yanlış olursa, if bloğu atlanıp, else bloğu içerisindeki kod

çalıştırılacaktır. Yani, mantıksal ifadenin sonucuna bağlı olarak, iki farklı kod bloğundan

sadece birini çalıştırmak istediğin durumlarda if deyimini else ile birlikte kullanabilirsin.

İhtiyaç dahilinde if ve else bloklarını bir arada kullanmak istediğinde, genel söz dizimi

aşağıdaki gibidir :

if(mantıksal ifade) { //Yapılacak iş bloğu 1 } else { //Yapılacak iş bloğu 2 }

Bu örnekte mantıksal ifadenin doğru olması halinde halinde “Yapılacak iş bloğu

1” in bulunduğu ilk kod bloğu çalışır; mantıksal ifadenin yanlış olması halinde halinde ise

“Yapılacak iş bloğu 2” nin bulunduğu kod bloğu çalışır.

x>7 : x değişkeninin içerisindeki değer 7’den büyük olursa mantıksal ifade true

döndürür, 7’ye eşit yada 7’den küçük olursa mantıksal ifade false döndürür.

... int not1 = 80; int not2 = 90; int ortalama = (not1 + not2) / 2; if (ortalama < 50) { Console.WriteLine("Bu dersten kaldınız..."); } else

Page 27: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

27 / 45

} Console.WriteLine("Bu dersten geçtiniz..."); } ...

not1 ve not2 değişkenlerinin ortalaması alınarak hesaplanan ortalama

değişkeninin değerine bağlı olarak uygulamada iki farklı kod bloğundan birisi çalışır.

Hangi kod bloğunun çalışacağına if(...) deyiminin içerisindeki mantıksal ifadenin

değerlendirilmsi sonucunda karar verilir. ortalama, 85 olarak hesaplanarak if kontrolüne

girer; burada (85 < 50) şeklindeki mantıksal ifade değerlendirilir ve sonuç ‘yanlış (false)’

olarak elde edilir. Bu noktada if, kontrolün ilk bloktan mı yoksa ikinci bloktan mı devam

edeceğine karar verir ve elde edilen sonuç yanlış olduğu için kod akışı “else” bloğuna

yönlendirilir.

if ve else anahtar kelimelerinin ardından sadece tek bir komuttan oluşan

bir kod bloğu çalıştırılacak ise bloğu küme parantezleri içerisine almaya gerek

yoktur. Örneğin; if (ortalama < 50) Console.WriteLine("Bu dersten kaldınız...");

Fakat, birden fazla komut barındıran bir kod bloğu kullanılacağı zaman,

küme parantezlerinin kullanılması zorunludur. Aksi takdirde if’den sonra

kullanılmayan küme parantezleri için derleme zamanı hatası oluşma riski vardır.

(eğer arkasından else kullanılmış ise), else’den sonra kullanılmayan küme

parantezleri derleme zamanında hata üretmez fakat bloğun ilk satırından sonraki

kodlar else bloğundan bağımsız olarak çalışır ve isteğimiz dışında bir davranış

sergiler. Bu gibi olası hataların gerçekleşmesinin önüne geçmek için, kod

bloğumuz tek bir komuttan oluşsa dahi, if/else bloklarını küme parantezleri

içerisinde yazmalıyız. Benzer durum, ileriki konuda anlatılacak olan for döngüsü

için de geçerlidir.

Yukarıdaki örneğin çıktısı şöyledir:

if bloğu kullanımına örnek olarak aşağıdaki kodları inceleyelim:

...

if ((5 % 2) == 0) { Console.WriteLine("5, tek sayıdır...");

} else { Console.WriteLine("5, çift sayıdır..."); }

Page 28: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

28 / 45

...

5’in 2 ile bölümünden kalan 1’dir. Dolayısıyla if deyimi false değer döndürür ve

kontrol else bloğundan akışına devam eder. Bu aşamalar debug edilerek çok daha sağlıklı

bir şekilde gözlemlenebilir. Debug işlemi, konunun anlaşılmasını da kolaylaştıracaktır.

Operatör öncelikleri

if parantezi içerisinde herhangi bir mantıksal ifade olması yeterlidir. Bu birden

fazla ifadenin birleşimi de olabilir, çok basit bir kontrol de olabilir. Örnekte if bloğu

içerisinde 7’nin 2 ile bölümünden kalan sayının 0’a eşit olup olmadığı kontrol

edilmektedir. (7 % 2) ifadesi parantez içerisine alınmasa da kod sağlıklı bir şekilde çalışır;

çünkü aritmetik operatörlerin eşitlik operatörüne karşı önceliği vardır. Ancak; hiçbir

zaman işi önceliklere bırakmayıp, kendi önceliklerini –aynen matematik

kurallarında olduğu gibi- parantezlerle belirlemen tavsiye edilir. Örnekte de bu

tavsiyeye uyulmuştur.

Hiçbir zaman işi önceliklere bırakma, kendi önceliklerini

parantezlerle belirle.

if – else if İfadeleri

if deyimleri birbirine bağlı olarak, arka arkaya kullanıldığında, mantıksal deyimler

birbirlerine zincirlenir ve bir tanesi true değer döndürünceye kadar birbiri arkasına

çalıştırılır. Örneğin haftanın günlerini ele alalım. Kullanıcıdan alınacak haftanın gün sayısı

ile günün ne olduğunu ekrana yazdıracağımızı düşünelim:

Bu örnekte kullanıcının hatasız şekilde bir sayı girdiği varsayılır. İlk if’den itibaren girilen

sayı ile karşılaştırma yapılarak ilerlenir. if ve else if kontrolleri birbirlerine bağlı şekilde

çalışmaktadır. Bu yüzden if ya da else if’lerden herhangi birinde doğru değer

... string gunAdi; Console.Write("1 ile 7 arasında haftanın bir gününü giriniz : "); string gun = Console.ReadLine();

if (gun == "1") gunAdi = "Pazartesi";

else if (gun == "2") gunAdi = "Salı";

else if (gun == "3") gunAdi = "Çarşamba";

else if (gun == "4") gunAdi = "Perşembe";

else if (gun == "5") gunAdi = "Cuma";

else if (gun == "6") gunAdi = "Cumartesi";

else if (gun == "7") gunAdi = "Pazar"; else gunAdi = "Doğru gün sayısı girilmedi"; Console.WriteLine(gunAdi); ...

Page 29: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

29 / 45

tutturulmuşsa kontrol bağlı bulunan diğer blokların sonuna gider. Diğer bloklar boşuna

kontrol edilmez. Çünkü oradaki dizayn, bir tane doğrunun olması üzerine kuruludur.

else/if yapısı

else/ if blokları doğru bir şekilde çalışıyor.

if Bloğunda Koşul Operatörleri

if bloklarında koşul operatörleri de (&& , ||) kullanılabilir. Özellikle birden fazla koşulu tek

bir if içerisinde test etmek istediğimizde bu yola başvurabiliriz. Aşağıdaki yüzde kontrolü

buna iyi bir örnektir.

int yuzde = 90; if ((yuzde >= 0) && (yuzde <= 100)) { Console.WriteLine("Yüzde {0}",yuzde);

} else { Console.WriteLine("Geçersiz yüzde..."); }

Switch Kontrolü

if – else ve/veya if – else if deyimleri ile yapılabilen kontrollerin, bazı durumlarda

switch deyimi ile yapılması tercih edilebilir. Özellikle if – else if deyimlerinin sayısı

arttıkça, switch deyiminin tercih edilmesi, hem daha etkili, hem de daha okunaklı kod

yazılmasını sağlar. Dikkat edilmesi gereken nokta, switch bloklarının sadece sabit

değerler üzerinden koşul denetimi yapıyor olmasıdır. switch bloklarında eşitlik denetimi

yapılıyor olmasına rağmen, karşılaştırma veya eşitlik operatörlerinden faydalanılamaz.

Genel söz dizimi aşağıdaki gibidir:

Page 30: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

30 / 45

Burada kodun hareketini kontrol eden kararDegiskenidir. Onun değeri switch

bloğu içerisindeki case anahtar kelimesinin önündeki değererle karşılaştırılır.

Eğer eşleşen bir değere rastlarsa bir alt satıra geçer ve kodu çalıştırır. Aksi

takdirder otomatik olarak bir sonraki case anahtar kelimesini kontrol etmeye

geçer.

Eşleşen hiçbir case bulunamazsa, default anahtar kelimesinin altındaki kodlar

çalışır.

‘case’ lerin altında herhangi bir süslü paranteze ihtiyaç duyulmaz. Çünkü

eşleşen bir case in kodları aşağıya doğru akar ve break anahtar kelimesini

görene kadar çalışır. break, kod akışını switch deyiminin sonuna götürür.

Böylece şartlardan sadece bir tanesinin çalışması ve diğerlerinin atlanması

garanti altına alınır.

Switch bloğunda default bulunmak zorunda değildir. Eğer default varsa ilgili

bloğun sonuna da break koyulmalıdır. detault yoksa, en son case deyimi

break ile bitmelidir. Zaten unutulursa derleyici, derleme zamanı hatası

vererek uygulama geliştiriciyi uyaracaktır.

Aşağıdaki örnekte kullanıcıdan sayısal bir değer alınıp, bu değere bağlı olarak

kullanıcıya basit cevap veren bir uygulama yer almaktadır. Kullanıcıdan istenilen değerler

dışında bir sayısal değer girilmesi durumunda, if kontrolündeki else bloğunun benzeri

işlevselliğe sahip default bloğu çalışır.

... int kararDegiskeni = 1; switch (kararDegiskeni) { case 1: Console.WriteLine("Karar 1"); break; case 2: Console.WriteLine("Karar 2"); break; default: Console.WriteLine("Varsayılan Karar"); break; } ...

Page 31: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

31 / 45

... Console.WriteLine("1 [C#], 2 [VB]"); Console.Write("Lütfen dil seçiminizi yapınız: "); string dilSecimi = Console.ReadLine(); int n = int.Parse(dilSecimi); switch (n) { case 1: Console.WriteLine("İyi tercih. C#, .NET’in gözdesidir..."); break; case 2: Console.WriteLine("VB .NET: İşin biraz zor ama imkansız

değil..."); break; default: Console.WriteLine("Geçersiz bir değer girdin. Sana iyi

şanslar..."); break; } ...

switch deyimi kullanılarak kontrol edilecek değişken (Yukarıdaki örnekte

dilSecimi değişkeni) tipleri şunlar olabilir: Bütün tam sayı tipler, metinsel tipler,

bool tipi veya her hangi bir numaralandırıcı (enum) tipi.

Page 32: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

32 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Döngüler

Page 33: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

33 / 45

While Döngüsü

Mantıksal bir ifade doğru olduğu sürece belli bir kod bloğunu, tekrar tekrar

çalıştırılmak istediğinde başvurabileceğin döngü deyimlerinden biridir.

Döngülerin çalışma mekanizmasını daha kolay kavrayabilmen için,

aşağıdaki kod parçasını, çalışma zamanında debug edip, adım adım ilerlemelisin.

...

int a = 0; while (a <= 5) { Console.WriteLine("a'nın şu anki değeri : {0}",a); a++;

}

...

Önce a değişkeni tanımlanır ve 0 değerini alır. Sonra while deyiminin içerisi

kontrol edilir. Bu deyimin içi doğru olduğu sürece, while bloğu (küme parantezleri arası)

tekrar tekrar çalıştırılır. Dolayısıyla, deyim içerisinde kontrol edilen değişkenin değeri, her

dönüşte denetlenen şartı bozmaya yönelik olarak değiştirilmelidir. Yani deyim içerisinde

a<=5 ifadesini denetlerken, döngü bloğu içerisinde a’nın değerini her seferinde

azaltılırsak, bu döngüden çıkılmaz. Çıkılsa da sağlıklı olarak uygulamaya geri dönülemez.

Bu yüzden a değişkeninin değeri her seferinde 1 arttırılır. İlk şart sağlanıp ekrana gerekli

bilgilerin yazılmasının hemen ardından değişkenin değeri arttırılır. Sonrasında da döngü

deyiminin kontrolü yeniden yapılır ve ‘1’ değeri için de ifade doğru olduğundan, bloğa

tekrar girilip kod çalıştırılır. Döngü değişkeninin değeri tekrar arttırır ve bu döngü a, 5

değerini alana kadar devam eder. Hatta 5 değeri de şartı sağladığı için döngü içerisindeki

kod bloğu bir kere daha çalışır. Fakat sonraki artışta a değişkeni 6 değerini aldığı için

koşul false değer döndürür ve döngü sonlanır. Kod akışı, döngü bloğundan sonraki ilk

satırdan devam eder. Çıktı aşağıdaki gibi olur:

While döngüsü örneği

Burada dikkat edilmesi gereken nokta var. while döngüsünde 3 ayrı çok önemli

parametre tamamen birbirinden ayrı yerlerde işleniyor.

Page 34: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

34 / 45

Döngü değişkeninin tanımlandığı ve ilk değerinin verildiği yer, döngü bloğunun

dışındadır.

Döngünün ne kadar süre ile devam edeceğine karar verilen yer, döngü deyiminin

içerisindedir.

Döngü değişkeninin değer arttırımı ise döngü bloğunun içerisinde yapılmaktadır.

Özellikle arttırım ifadesinin unutulmamasına ve doğru olarak verilmesine dikkat

edilmelidir. Bu koordinasyon iyi kurulduğu sürece ihtiyaç duyulan yerlerde while

döngüsünden maksimum fayda sağlanır.

While döngüsü için yazılmış aşağıdaki örnekte kullanıcıdan istenen iki kelimeden

birisi olan “yes” girilmediği sürece döngü içerisinde kalınmaktadır. Kullanıcıdan alınan

değer doğru olsa dahi büyük harfli olması durumunda eşleşme olmayacaktır. Her

ihtimalde doğru değerin kabul edilmesini garanti altına almak için ToLower() metodu ile

girilen değerin küçük harfli temsili elde edilir. While döngüsünde döngü deyimi

içerisindeki şart, kod bloğu çalışmadan önce kontrol edilir. Bundan dolayı, değişkene,

döngünün devamını sağlayacak bir başangıç değeri verilir.

... string deger = "no"; while (deger.ToLower() != "yes") { Console.Write("Tamam mı? [yes] [no]: "); deger = Console.ReadLine(); Console.WriteLine("*While döngüsündesin*");

} Console.WriteLine("-While döngüsünden çıktın-");

...

Burada döngünün devamını kontrol eden şey ekrandan “yes” dışında herhangi

bir şey girilmesidir. Çünkü döngü deyiminin içerisinde ‘eşit olmadığı sürece’ kontrolü

yapılmaktadır.

deger.ToLower() != "yes"

Do-While Döngüsü

Do-While döngüsü tamamen while döngüsü gibi çalışır. Aralarındaki tek fark

şudur. while döngüsünde döngü deyimi içerisindeki kontrol, döngüye girilmeden önce

yapılır. do-while döngüsünde ise bu kontrol ilk döngü bloğundan çıkıldıktan sonra

yapılmaya başlanır. Yani döngü bloğu içersinde yer alan kod, kayıtsız-şartsız ilk sefer için

çalıştırılır. Öyleyse while döngüsünde verilen 2. örnek aşağıdaki gibi düzenlenebilir:

...

string deger = ""; do { Console.WriteLine("*While döngüsündesin*");

Page 35: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

35 / 45

Console.Write("Tamam mı? [yes] [no]: "); deger = Console.ReadLine();

} while (deger.ToLower() != "yes"); Console.WriteLine("-While döngüsünden çıktın-");

...

Öncelikle bir do-while döngüsünün yapısını inceleyelim. Döngü bloğunun içerisi,

ilk sefer için kontrol edilmeden çalışacağından while anahtar kelimesi ve döngü deyimi,

kod bloğunun sonunda yer alır. do-while söz dizimi noktalı virgül ile biter. Kod bloğunun

başına da do anahtar kelimesi gelir. Kod incelendiğinde görülen en önemli değişiklik,

bloğun ilk çalıştırılmada kontrole maruz kalmamasıdır. İkinci değişiklik ise, her şart

altında döngü bloğundaki kod çalıştırıldığı için (döngü deyimi içerisindeki şart sağlanmasa

da)

Console.WriteLine("*While döngüsündesin*");

yazısının döngü bloğunun başına alınmasıdır.

Do-while döngüsü kullanımına örnek olarak kullanıcı adı ve şifreyi kullanıcıdan

minimum bir defa isteyen bir algoritma düşünülebilir. Aşağıdaki kodu inceleyelim:

...

string kullaniciAdi = ""; string sifre = ""; do { Console.Write("Kullanıcı adı giriniz : ");

kullaniciAdi = Console.ReadLine(); Console.Write("Şifre giriniz : "); sifre = Console.ReadLine(); } while ((kullaniciAdi != "emrah") || (sifre != "1234")); Console.WriteLine("Siteye login oldunuz..."); ...

do bloğu herhangi bir kontrol yapılmadan ilk sefer için çalışır. Yanlış değerler

girilmesi durumunda kullanıcıdan, kullaniciAdi ve sifre bilgileri alınıp, ikinci sefer kontrol

ettirilebilir. Kullanıcı adı ya da şifreden birinin bile yanlış olması durumunda login olmayı

engellemek için kontrol aşağıdaki şekilde yapılmıştır:

while ((kullaniciAdi != "emrah") || (sifre != "1234"));

Bu deyim eğer kullanıcı adı ”emrah” değilse ya da sifre=”1234” değilse

döngüye devam edilsin olarak yorumlanabilir.

Page 36: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

36 / 45

For Döngüsü

For döngüsü, while döngüsü ile benzer bir fonksiyonelliğe sahiptir. Döngü

değişkeninin tanımlanması, değişkenin döngü içerisinde güncellenmesi ve döngü koşul

deyiminin bildirilmesi for döngüsünde tek bir yerde yapılır. Genel söz dizimi aşağıda yer

almaktadır:

for (başlangıç değeri; mantıksal ifade ; kontrol değerinin güncellenmesi)

{ //kod bloğu;

}

Bu 3 işlem, for döngüsünün temellerini teşkil eder. Şimdi, aşağıdaki örneği

inceleyelim:

for (int i = 0; i != 10; i++) { Console.WriteLine(i);

}

1. Baştaki i değişkeni, sadece döngünün başında bir defa oluşturulur.

2. Eğer ortadaki mantıksal (boolean) ifade doğru ise döngü bloğu çalıştırılır.

3. Sondaki kontrol değişkeni güncellenir ve mantıksal ifade yeniden hesaplanır.

4. Eğer koşul hala doğruysa döngü bloğu yeniden çalıştırılır.

5. Kontrol değişkeni güncellenir ve mantıksal ifade yeniden hesaplanır.

6. Ortadaki koşul (mantıksal ifade) false dönene kadar bu süreç devam eder.

Burada dikkat edilmesi gereken bazı noktalar vardır:

Değişken oluşturma ve başlanıç değeri verme sadece ilk döngüde gerçekleşir.

Döngü bloğu her zaman konrol değişkeninin (i) güncellenmesinden önce çalışır.

Güncelleme her zaman mantıksal koşul ifadesinden önce çalışır.

For döngüsü örneği

Başka bir örnek daha inceleyelim. For döngüsü kullanarak 1 ile 20 arasındaki

tam sayıların toplamını bulan kod aşağıda yer almaktadır:

...

Page 37: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

37 / 45

int toplam = 0; for (int i = 1; i <= 20; i++) { toplam += i;

} Console.WriteLine("1 ile 20 arasındaki değerlerin toplamı :

{0}",toplam); ...

Bu kod çalıştığında döngüden önce başlangıç değeri ‘0’ olan toplam değişkeni

tanımlanır. Döngü içerisinde her turda i değişkeninin güncel değeri toplam değişkenine

eklenir. Bu sayede 1’den 20’ye kadar olan sayıların kümülatif toplamı elde edilir.

For döngüsü kullanarak 1 ile 20 arasındaki sayıların toplamı

For döngüsünde aralarına noktalı virgül koyularak belirtilen üç bileşenden

herhangi biri, ikisi ya da üçü birden belirtilmeyebilir. Bu bileşenlerin uygun başka bir

yerde belirtilmesi de mümkündür. İhtiyaç varsa çoklu başlangıç değeri ve güncelleme

parçası kullanılabilir. Ayrıca döngü için oluşturulan değişkenlerle ilgili farkında olunması

gereken bazı önemli noktalar vardır:

Eğer mantıksal ifade yazılmazsa, varsayılan olarak dönecek değer true olacaktır.

Dolayısıyla aşağıdaki for döngüsü sonsuza kadar çalışır:

... for (int i = 0; ; i++) {

Console.WriteLine("Biri beni durdursun..."); } ...

Bir diğer sonsuz döngü çeşidi de aşağıda yer almaktadır:

for( ; ; )

{

}

Bu tarz sonsuz döngülere çok sık ihtiyaç duyulmaz. Genel olarak giriş-çıkış

(I/O) işlemlerinde, şifreleme algoritmalarında ve örneğin kullanıcı doğru değer

girene kadar devam etmesi gereken durumlarda vb. kullanılabilir.

Page 38: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

38 / 45

Değişken oluşturup başlangıç değerini verme ile değişkeni güncelleme parçaları for

deyiminin içerisine yazılmasa dahi, doğru satırlara yerleştirilirse ortaya çıkan kod

‘while’ döngüsüne benzemektedir.

... int i = 1; for ( ; i != 11 ;) { Console.WriteLine(i); i++; }

...

For döngüsü için birden fazla değişken tanımlanıp yönetilebilir. Çoklu değişken

tanımlama, başlangıç değerlerini verme ve bu değişkenleri güncelleme ifadeleri

noktalı virgülle ayrılan parça içerisinde yer alır ve kendi içlerinde virgül ile ayrılır.

Ortadaki mantıksal ifade ise her zaman tek olmalıdır. Aşağıdaki örnek bunu

modellemektedir:

... for (int i = 0, j = 20 ; i != j; i += 2, j -= 2) { Console.WriteLine(i + " <---> " + j); } ...

Döngü Değişkenleri

For döngüsü kullanırken oluşturulan değişkenler, sadece döngü bloğu içerisinde

geçerli değişkenlerdir. Yani döngü deyimi içerisindeki mantıksal (boolean) ifadenin false

değer döndürmesinin ardından kod akışı döngü sonuna gelir ve değişken bellekten düşer.

Dolayısıyla döngü sonunda değişken, kullanılmaya çalışılırsa derleyici bizi uyarır:

... for (int i = 0; i < 10; i++) { // Hesaplamalar...

}// i değişkeni burada bellekten düşer. Console.WriteLine(i); //Derleme zamanı hatası ...

Yukarıdaki özelliğe bakarak şu ifade rahatlıkla söylenebilir: Ard arda gelen

döngüler içerisinde aynı isimli değişkenler kullanılabilir. Bunu sağlayan şey, her

değişkenin farklı bir kapsama alanına sahip olmasıdır:

...

Page 39: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

39 / 45

for (int i = 0; i <= 10; i++) { Console.WriteLine(i); }

Console.WriteLine("******************");

for (int i = 10; i >= 0; i-- ) { Console.WriteLine(i); } ...

Son olarak for döngüsünün daha iyi anlaşılması adına aşağıdaki kodu analiz

etmekte fayda vardır: (Ancak döngülerin bu şekilde kullanılması tavsiye edilmez)

...

int i = 0; Console.WriteLine("*****Döngü başladı\n"); for(Console.WriteLine("Ben sadece ilk sefer çalışırım"); i < 6;

Console.WriteLine("Ben döngü deyimi doğru olduğu sürece çalışırım")) { Console.WriteLine(i); i++; } Console.WriteLine("\n*****Döngü sona erdi...");

...

Bu döngünün çıktısı aşağıdaki gibi olacaktır :

Page 40: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

40 / 45

For döngüsünde döngü deyimi parçalarının çalışma sırası.

Page 41: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

41 / 45

EĞİTİM :

VISUAL STUDIO

KULLANIMI - KONTROL

YAPILARI VE DÖNGÜLER

Bölüm :

Visual Studio Kullanımı

Konu :

Atlama Deyimleri (Jump

Statements)

Page 42: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

42 / 45

Atlama deyimleri (jump statements) kullanılarak, kod akışı yönlendirilebilir ve akışta

dallanma(lar) sağlanabilir. Atlama deyimleri şunlardır:

break

continue

goto

return

throw

Bu atlama deyimlerinden return, daha sonraki konularda işlenecek olan

metotlarda kullanılır. return ifadesi, bir metotun çalışmasını sonlandırır. return

kullanıldığında, kod akışı metot bloğunun sonuna gider.

throw ise, program akışı sırasında oluşan alışılmışın dışında bir durumu

(çalışma zamanı hatası -exception-) işaret etmek için kullanılır. throw anahtar

kelimesinin kullanımına daha sonraki konularda değinilecektir.

break Anahtar Kelimesi

break anahtar kelimesine daha önce switch kontrolünde değinilmişti. Orada

yaptığı iş, kontrolü switch bloğunun sonuna transfer etmek ve akışın oradan devam

etmesini sağlamaktır. Bu anahtar kelime, bir döngü içerisinde kullanıldığında, yine switch

örneğindekine benzer bir davranış gösterir. Kod akışını bir daha dönmemek üzere döngü

bloğunun sonuna götürür. Bir başka deyişle döngü içerisinden bir koşul nedeniyle

çıkılmak istendiğinde kullanılabilir. Aşağıdaki örnek bunu modellemektedir:

... for (int i = 0; i < 10; i++) {

if (i == 4) { break; } Console.WriteLine(i);

} //break çalışınca kontrolü buraya transfer eder. Console.WriteLine("Döngü sonu..."); ...

Döngü bloğu 0,1,2 ve 3 için sağlıklı bir şekilde çalışır. İlk dört dönüş içerisinde

yapılan if kontrolleri sonucunda false değer döner ve break komutu çalıştırılmadan

geçilir. Döngü değişkeninin (i) değeri 4 olduğunda if kontrolü true değer döneceği için

break deyimi çalışır. Bunun sonucunda kod akışı, for döngü bloğunun sonuna gider.

Dolayısıyla 4 için değer ekrana yazdırılamaz; sonraki sayılar için ise döngü çalışmaz.

Page 43: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

43 / 45

‘break’ anahtar kelimesinin çalışma mekanizması

Eğer iç içe döngü yapısı kullanılıyorsa; break, kod akışını kendisini

çevreleyen en yakın döngü bloğunun dışına transfer eder. Yani kontrol dışardaki

döngü için çalışmaya devam eder.

continue Anahtar Kelimesi

continue anahtar kelimesi, kod akışını, kendisini çevreleyen en yakın döngünün

başına transfer eder. Görüldüğü noktadan sonrasını o tur için çalıştırmaz. Yani döngüyü

bir turluğuna erteler. Döngü bir sonraki iterasyondan normal çalışmasına devam eder.

break için yazılan kodu şimdi de continue için test edelim:

... for (int i = 0; i < 10; i++) {

if (i == 3) {

continue; //aşağıdaki kod, 3 değeri için çalışmaz; ancak //4’den itibaren normal çalışmasına döner.

} Console.WriteLine(i);

} Console.WriteLine("Döngü sonu..."); ...

‘continue’ anahtar kelimesinin çalışma mekanizması

Page 44: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

44 / 45

Yukarıdaki şekilden görüldüğü gibi döngü sadece 3 değeri için çalışmasına ara

verdi. Daha sonra ise normal çalışmasına devam etti.

break ve continue deyimlerinin kullanımı sadece for döngüsü ile sınırlı

değildir; while, do-while ve diziler konusunda incelenecek olan foreach

döngülerinde de kullanılabilir.

goto Anahtar Kelimesi

Bu anahtar kelime, kod akışını etiketlenmiş bir noktaya transfer eder.

... Console.Write("Bir sayı giriniz : "); int a = int.Parse(Console.ReadLine()); if (a % 2 == 0) { goto cift; } Console.WriteLine("Girilen sayı tek"); goto Son; cift: Console.WriteLine("Girilen sayı çift"); Son: ...

Yukarıdaki kod, kullanıcıdan alınan sayının tek mi çift mi olduğu kontrolünü

doğru bir şekilde yapar. Fakat, gerek buradaki kullanımı, gerekse diğer kullanılabileceği

yerler düşünüldüğünde, oldukça karışık bir düzen oluşturduğu görülebilir. Ayrıca, kodu,

anlaşılması güç hale getirir. Bu yüzden goto kullanımını sadece şu iki senaryoda tercih

etmek gerekir:

1. switch-case kontrolünde, akışı belli bir case’e ya da default’a yönlendirmek söz

konusu olduğunda.

2. İç içe geçmiş for döngülerinde break ya da continue ile sadece bir kademe dışarı

çıkılabilir. En dışa çıkılmak istendiğinde, yani kod akışının en dıştaki döngünün

sonuna yönlendirmesi istendiğinde.

Bu iki senaryo için goto kullanımı anlamlıdır. Bu durumlar dışında, goto

kullanmak spagetti kod (Anlaşılması zor, iç içe geçmiş kodlar) oluşturur.

... Console.WriteLine("Kahve boyutu: 1=Küçük 2=Orta 3=Büyük"); Console.Write("Lütfen seçiminizi yapınız : "); string secim = Console.ReadLine(); int n = int.Parse(secim); int fiyat = 0; switch (n) { case 1:

fiyat += 25; //Fiyatı : 25 break; case 2: fiyat += 25; //Fiyatı = 25 + 25 = 50

Page 45: EĞİTİM - WordPress.com...3 / 45 Sol üst kısımda Open Project linkine tıklayarak önceden kayıt attiğin bir projenin sln dosyasını göstererek çalımaya devam etmene yardımcı

45 / 45

goto case 1; case 3: fiyat += 25; //Fiyatı 25 + 25 + 25 = 75 goto case 2; default: Console.WriteLine("Yanlış seçim"); break; } if (fiyat != 0) { Console.WriteLine("Lütfen makineye {0} kuruş atınız.", fiyat);

} Console.WriteLine("Teşekkürler...");

...

Burada doğru hesaplamayı yapmak için case’ler arasında ‘goto’ kullanımı ile

paslaşmalar yer almaktadır.

Eğer kullanıcı küçük boy kahve istiyorsa 1 girer. ‘n’ değişkeninin değerine göre

uygulamayı yönlendirecek olan switch kontrolünün içerisinde case 1:’den sonraki

kod çalışır. Başlangıç değeri 0 olan fiyat değişkeninin değeri 25 olarak değiştirilir.

Ardından break, kod akışını switch bloğunun sonuna götürür ve ekrana fiyatla ilgili

yazılar yazılır.

Eğer kullanıcı orta boy kahve istiyorsa 2 girer. switch kontrolünün içerisinde case

2:’den sonraki kod çalışır ve fiyat değişkeninin değeri yine 25 yapılır. Sonrasında

kod akışı break ile switch bloğu sonuna gönderilmez. ‘goto’ ile case 1’e transfer

edilir. Bir üst maddedeki süreç tekrar eder. Dolayısıyla fiyat 25 + 25 = 50 kuruş

olarak elde edilip kulanıcıya bildirilir.

Eğer kullanıcı büyük boy kahve istiyorsa 3 girer. Bu sefer önce case 3’ün

içerisindeki kod çalışır. Fiyat değişkeninin değeri 25 yapılır. Kod akışı, case 2’ye

transfer edilir. Burada fiyat 50’ye tamamlanır. Son olarak case 2 kod akışını case

1’e devreder. Nihai fiyat 75 kuruş olarak hesaplanır.

Bu kullanımın avantajı, küçük seçimin case’indeki olası bir fiyat artışında, bu

artışın diğer 2 boya otomatik olarak yansımasıdır.

Bu ders notu, Açık Akademi projesi çerçevesinde TCM tarafından Microsoft Türkiye için hazırlanmıştır.

Tüm hakları Microsoft Türkiye’ ye aittir. İzinsiz çoğaltılamaz, para ile satılamaz.