ForumTayfa  

Go Back   ForumTayfa > Güvenlik & Bilgisayar & İnternet & Webmaster & Programlama Bölümü > Güvenlik & Bilgisayar & İnternet & Webmaster & Programlama > Programlama

Programlama Programlama hakkında herşeyi paylaştığımız, soru ve sorunlarımızı tartıştığımız bölüm...

Yeni Konu aç  Cevapla
 
LinkBack Seçenekler Stil
Alt 13.02.07, 12:47   #1 (permalink)
Deneyimli Tayfa
 
silentwolf - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: Dec 2006
Nereden: burada
Mesaj Sayısı: 3.964
Konu Sayısı: 157
Takım: Fenerbahçe
Rep Gücü: 196650
Rep Puanı: 19663395
Rep Derecesi : silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000silentwolf 0-10000000
Ruh Hali:

Standart C# Öğreniyorum Makale 4: Visual C# .NET İle Windows Tabanlı Programlama




Windows tabanlı uygulamalar, Windows işletim sistemi üzerinde çalışan uygulamalardır. Windows uygulamaları Windows formları ve kontrollerinden oluşur. Visual Studio bu formların ve üzerindeki kontrollerin tasarımını, kodların yazılımını büyük ölçüde kolaylaştırarak uygulama geliştirme sürecini daha hızlı ve kolay hale getirir.

Bu makaleyi okuduktan sonra:
· Windows tabanlı programlamada kullanılan kontrolleri tanıyacak,
· Kontrollerin özellik, metot ve olay kavramlarını öğrenecek,
· Visual C# .NET dilinde değişken, sabit tanımlamayı öğrenecek,
· Veri tiplerini tanıyacak,
· Operatörleri kullanabileceksiniz.

Konu 1: İlk Uygulama (Hello World, The Time Is..)

Visual C#.NET ile yazacağımız Windows uygulaması ekrana, “Hello World!” yazısını ve o anki zamanı gösteren bir bilgi mesajını çıkartır.
  • <LI style="COLOR: black; LINE-HEIGHT: normal; TEXT-ALIGN: left">Visual Studio çalışma ortamını açın. <LI style="COLOR: black; LINE-HEIGHT: normal; TEXT-ALIGN: left">File menüsünden, New alt menüsüne işaret edin ve Project komutunu seçin. “New Project” diyalog kutusu, yazılacağı dile, çalışacağı ortama göre değişen projeleri tiplerini listeler. <LI style="COLOR: black; LINE-HEIGHT: normal; TEXT-ALIGN: left">Proje tiplerinden Visual C#Project ve Windows Application tipinin seçili olduğunu kontrol edin. <LI style="COLOR: black; LINE-HEIGHT: normal; TEXT-ALIGN: left">Name özelliğine HelloWorld yazın ve Ok tuşuna basın. Açılan Windows projesinde başlangıç olarak bir adet Windows Form tasarım görünümünde açılır. <LI style="COLOR: black; LINE-HEIGHT: normal; TEXT-ALIGN: left">Toolbox panelinden Button kontrolünü formun üzerine sürükleyip bırakın. Properties panelini açarak Button kontrolünün Text özelliğine “Hello World!” yazın.
  • Eklenen Button kontrolüne çift tıklayarak kod sayfasına geçin. Button kontrolüne basıldığında çalıştırılacak kodu yazın:
MessageBox.Show("Hello World! The time is " + DateTime.Now);

NOT: Yazdığınız kodun ne anlama geldiğini belirtmek için yorum satırları kullanmak, kodları okumayı kolaylaştırır. Yorum satırları // ile başlayarak yazılmalıdır.
  • MessageBox.Show metodunun yazıldığı kodun üstüne, yapılmak istenileni belirten bir yorum satırı yazın.
// MessageBox.Show metodu ile kullanıcıya Merhaba diyoruz.
// Now özelliği ile o andaki saat ve gün
// değerlerini de kullanıcıya gösteriyoruz.
  • F5 tuşuna basarak projeyi çalıştırın.
İPUCU: Çalışma sayfaların isimlerinin yanında yıldız işaretinin gözükmesi, o sayfada değişiklik yapıldığını ancak daha kaydedilmediğini belirtir. Proje dosyalarınızı CTRL-S tuşlarına basarak sıkça kaydedin.
Konu 2: Özellikler, Metodlar Ve Olaylar

.NET Kontrolleri üç temel kavramdan oluşur.
Özellikler

Özellikler, kontrollerin görünümü, yerleşimi veya davranışlarına özel niteliklerdir. Örneğin bir Button kontrolünün Text özelliği, üzerinde yazan yazıya erişmemizi sağlar.
Kontrollerin özellikleri, tasarım anında Properties panelinden ulaşılabileceği gibi, kod tarafında da okunup değiştirilebilir.
Kontrollerin birçok özelliği hem okunabilir hem de değiştirilebilir. Ancak bazı özellikler salt okunur (ReadOnly) ve salt yazılır (WriteOnly) olabilir. Bu tip özellikler Properties panelinde gözükmezler.

Kontrollerin birçok ortak özellikleri vardır.
  • Text (Yazi)
Kontrollerin Text özelliği, üzerinde görüntülenen yazıdır. Bu özellik çalışma anında sıkça okunup değiştirilerek, kullanıcıyla iletişim sağlanır.
TextBox kontrolüne girilen bir değerin okunup Label kontrolüne yazılması için, kontrollerin Text özellikleri kullanılır.

private void button1_Click(object sender, System.EventArgs e)
{
label1.Text = textBox1.Text;
}

)
  • Name (İsim)
Name özelliği kontrollere ulaşmak için kullanılan özelliktir. Birçok kontrolün Text özelliği aynı olabilir. Ancak her biri ayrı birer nesne oldukları için, Name özellikleri benzersiz olması gerekir.

textBox2.Text = textBox1.Text;

İki TextBox kontrolünün yazıları aynı, fakat isimleri farklıdır.
  • Size (Büyüklük)
Kontrollerin büyüklük özelliğidir. Height (yükseklik) ve Width (genişlik) özelliklerinden oluşur. Genellikle tasarım anında belirlenen bu özellik, çalışma anında da değiştirilebilir.

label1.Height = 10;
label1.Width = 20;
  • BackColor (Arka plan rengi)
Kontrollerin arka plan renginin ayarlandığı özelliktir. Bu özelliğin değeri, Color (renk) nesnesinde tanımlı değerler ile belirlenir.
  • ForeColor (Önalan rengi)
Kontrollerin üzerindeki yazıların rengini belirler.

private void button1_Click(object sender, System.EventArgs e)
{
button1.BackColor = Color.Black;
button1.ForeColor = Color.White;
}

  • Visible (Görünür)
Kontrollerin ekranda görünüp görünmediklerini belirleyen özelliktir. True ve False olmak üzere iki değer alabilir. Boolean veri tiplerinden bu makalede bahsedilecektir.

private void button1_Click(object sender, System.EventArgs e)
{
// Label kontrolünü gizle
label1.Visible = false;

// Label kontrolünü göster
label1.Visible = true;
}
Metotlar


Metotlar kontrollerin yaptığı işlemlerdir. Metotlar parametreyle veya parametresiz çağrılabilir. Parametreyle çağırmak, metodun girilen değere göre işlem yapacağını belirtir. Örneğin Focus (Odaklan) metodu, parametre beklemeden çalışır ve kontrolün seçilmesini sağlar.

private void button1_Click(object sender, System.EventArgs e)
{
// İşlem yapıldıktan sonra
// TextBox kontrolüne odaklan
textBox1.Focus();
}
Kontrollerin bazı ortak metotları vardır.
  • Select (Seç)
Select metodu Focus ile aynıdır ama TextBox kontrolünün Select metodunun diğerlerinden bir farkı daha vardır. TextBox içindeki yazıyı, verilen parametreler göre belli bir kısmını ya da hepsini seçer.

private void button1_Click(object sender, System.EventArgs e)
{
textBox1.Text = "Yazılım Uzmanı";
textBox1.Focus();

// Sekizinci karakterden sonra,
// beş karakter seç
textBox1.Select(8, 5);
}

  • BringToFront (Öne Getir)
Üst üste duran kontroller arasından en öne getirir.
  • SendToBack (Arkaya Gönder)
Üst üste duran kontrollerin en arkasına gönderir.
  • Hide (Sakla)
Kontrolün gözükmesini engeller.
  • Show (Göster)
Kontrolün gözükmesini sağlar.
Olaylar:


Olaylar kontrollerin başına gelen işlemlerdir. Olayların metotlardan farkı, bu işlemler kontrollerin elinde olmadan gerçekleşmesidir. Örneğin bir Button kontrolüne tıklanması, o kontrolün isteği dışında yapılmıştır. Bu olayın tetiklemesinde kontrolün bir rolü yoktur. Bu olaylar gerçekleştiği zaman yapılması gereken işlemler, ilgili olayın yordamına yazılır. Button1 isimli kontrolün üzerine tıklandığı zaman gerçekleştirmek istenen eylemler Button1_Click yordamına yazılır.

Visual Studio, olayların yordam isimlerini Kontrolİsmi_Olayİsmi olarak biçiminde yazar.

Kontroller ile çalışırken benzer olaylar kullanılır.
  • Click (Tıklandığında)
Kontrol üzerine tıklandığı zaman tetiklenen olaydır. Windows tabanlı programlamada en sık kullanılan olaylardan biridir.
· MouseDown (Mouse tuşu basıldığında)
Fare, kontrolün üzerindeyken herhangi bir tuşuna basıldığı zaman gerçekleşen olaydır. Bu olay, Click olayından önce çalışır.
· MouseUp (Mouse tuşu bırakıldığında)
Fare, kontrolün üzerindeyken basılan tuş bırakıldığı zaman çalışır.
· Enter (Girildiğinde)
Kontrol seçildiği veya üzerine odaklanıldığı zaman gerçekleşen olaydır.
· Leave (Çıkıldığında)
Başka bir kontrol seçilmek üzere çıkıldığında, bu kontrolün Leave olayı tetiklenir.
· VisibleChanged (Görünürlüğü değiştiğinde)
Kontrolün görünüp görünmediğini belirten Visible özelliği değiştiği zaman tetiklenir.

İPUCU: Olayların çalışma sıralarını test etmek için tüm olay yordamlarına, mesaj kutusu çıkaran (MessageBox.Show) kod yazın. Daha sonra projeyi çalıştırıp kontroller üzerinde yapılan değişikliklere göre olayların çalışma sıralarına bakın.

Konu 3: Visual C# .NET’e Kontrollerin Eklenmesi


Windows tabanlı uygulamalar geliştirirken sıkça kullanacağımız bir grup kontrol vardır. Form kontrolü hariç diğer bütün kontroller Toolbox panelinden seçilir. Bu kontroller sürüklenip Form üzerine istenilen pozisyona bırakılır.



Kontroller, ToolBox panelinde üzerine çift tıklayarak da eklenebilir.

Kontrollerin tasarım anında büyüklükleri, yerleri Size ve Location özellikleri ile değiştirilebileceği gibi, fare ile de istenilen şekilde ayarlanabilir.



Form

Windows uygulamaları, Windows kontrollerinin tutulduğu pencereler olan formlardan oluşur. Bir Windows projesi açıldığı zaman Form kontrolü otomatik olarak eklenir. İkinci bir form eklemek için Project menüsünden Add Windows Form komutunu seçilir. Proje çalıştığı zaman başlangıç formu görüntülenir. Başlangıç formu projenin özelliklerinden değiştirilir.





Visual Studio ortamında formlar, tasarım sayfası ve kod sayfası olmak üzere iki farklı sayfada görüntülenir. Tasarım sayfası, formun ve üzerindeki kontrollerin görünümlerini kolay bir şekilde değiştirmeyi sağlar. Visual Studio bu sayfada yapılan değişiklikleri kod sayfasında eş zamanlı olarak günceller. Örneğin bir Button kontrolünün genişliğini fare ile değiştirdiğimiz zaman, kod sayfasında bu kontrolün Width özelliği yapılan değişikliğe göre güncellenecektir. Aynı değişiklikler properties panelinde de görülebilir.

Formların, diğer kontrollerin özelliklerinden farklı bazı özellikleri vardır.
· ControlBox (Denetim Kutusu)
Form üzerindeki simge durumunda küçültme, ekranı kaplama ve formu kapama kutularının görünümünü ve erişebilirliğini kontrol eder.
NOT: Formun ControlBox özelliği False iken uygulama, Debug menüsünden Stop Debugging komutu seçilerek kapatılabilir.

· StartPosition (Başlagıç Pozisyonu)
Form açıldığı zaman nerede gözükeceğini belirler. CenterScreen seçeneği formu ekranın ortasında gösterir.

Formlar açıldığı zaman Load olayı gerçekleşir. Eğer form, başlangıç formu olarak seçilmişse, proje başladığı zaman çalıştırılmak istenen kodlar bu olayın yordamına yazılır.

private void Form1_Load(object sender, System.EventArgs e)
{
label1.Text = "Proje başlatıldı. Kayıt zamanı: "
+ DateTime.Now;
}
Button

Bir Windows düğmesini temsil eder. Button kontrolüne basıldığında Click olayı tetiklenir. Bu olay gerçekleştiği zaman yapılacak işlemler, ButtonIsmi_Click yordamında yazılır.

private void btnRenkDegistir_Click(object sender, System.EventArgs e)
{
btnRenkDegistir.ForeColor = Color.Gray;
}
TextBox

Bir Windows metin kutusunu temsil eder. Kullanıcıların değer girerek program ile haberleşmesini sağlamak amacıyla kullanılır. TextBox kontrolündeki yazı değiştiği zaman TextChanged olayı gerçekleşir.

private void textBox1_TextChanged(object sender, System.EventArgs e)
{
// TextBox içindeki yazı değiştiği zaman
// aşağıdaki kod çalışır.
MessageBox.Show("Yazı değiştirildi: " + textBox1.Text);
}
Label

Bir Windows etiketini temsil eder. Kullanıcıya, form üzerinde bir yazıyı göstermek amaçlı kullanılır. Bu yazının görünümü, Label kontrolünün bazı özellikleri ile değiştirilir.
· TextAlign (Yazı Hizalama)
Yazının Label kontrolü üzerinde nerede duracağını belirler.



· Font (Yazı Tipi)
Font özelliği birçok alt özellik taşır. Bunlardan bazıları en sık kullanılan özelliklerdir.
o Name
Yazı tipinin ismini belirler. Varsayılan Microsoft Sans Serif seçilidir.
o Size
Karakterlerin boyutunu belirler. Varsayılan büyüklük 8,5 değerini alır.
o Bold (Kalın)
Yazının kalın tipte olmasını belirler.
o Italic (Yatay)
Yazının italik tipte olmasını belirler.
o UnderLine (Altı Çizgili)
Yazının altı çizgili olmasını belirler.


ComboBox

Bir Windows açılan kutusunu temsil eder. ComboBox kontrolü, kullanıcıların bazı değerleri açılan bir listeden seçmesini sağlar. Listeye tasarım anında veya çalışma anında öğe eklenebilir. Listeye öğe eklemek için kontrolün Items özelliğinden faydalanılır.
Tasarım anında öğe eklemek için Properties panelinden Items özelliği seçilir. String Collection Editor penceresinde, her öğenin değeri tek bir satırda yazılır.



Çalışma anında öğe eklemek için kod sayfasında, kontrolün Items özelliğinin Add metodu kullanılır.

private void Form1_Load(object sender, System.EventArgs e)
{
comboBox1.Items.Add("Lise");
comboBox1.Items.Add("Üniversite");
comboBox1.Items.Add("Yüksek Lisans");
comboBox1.Items.Add("Doktora");
}



ListBox

Bir Windows liste kutusunu temsil eder. Kontroldeki öğeler sabit bir liste olarak görüntülenir. ListBox kontrolüne öğe ekleme işlemi, ComboBox kontrolündeki işlemlere ile aynıdır. ComboBox kontrolünden farkı, birden fazla öğe seçilebilir olmasıdır.

private void btnBosSiniflar_Click(object sender, System.EventArgs e)
{
listBox1.Items.Add("YU6501");
listBox1.Items.Add("YM6221");
listBox1.Items.Add("YM6102");
listBox1.Items.Add("YU6412");
}

Timer

Bir Windows sayacını temsil eder. Sayaç çalışmaya başladığı zaman, belirli zaman aralıklarında Tick olayı gerçekleşir. Timer kontrolünün Interval değeri, Tick olayının kaç milisaniyede bir gerçekleşeceğini belirler. Örneğin Interval değeri 2000 olan bir sayaç, Tick olayında yazılan kodları iki saniyede bir çalıştıracaktır.
Sayacı başlatmak için kontrolün Start metodu, durdurmak için ise Stop metodu kullanılır. Enabled özelliği, sayacın aktif olup olmadığını belirler.

private void btnBasla_Click(object sender, System.EventArgs e)
{
// Sayaç 5 saniyede bir çalışacak
timer1.Interval = 5000;
timer1.Start();
}

private void timer1_Tick(object sender, System.EventArgs e)
{
MessageBox.Show("Sayaç çalışıyor...");
}

private void btnDur_Click(object sender, System.EventArgs e)
{
timer1.Stop();
}

LAB 4.1: Kronometre Uygulaması

Bu labı tamamladıktan sonra:
· Form ve üzerindeki kontrollerin görünüm özelliklerini öğrenecek,
· ComboBox, ListBox kontrollerine öğe ekleyebilecek,
· TextBox kontrolünden değer okuyabilecek,
· Timer kontrolünün çalışma şeklini öğreneceksiniz.

Form üzerine kontrollerin eklenmesi, biçimlendirin yapılması


1. “Kronometre” isminde yeni bir Windows projesi açın.
2. Properties panelinden, Form1 nesnesinin BackColor özelliğini “Menu” olarak seçin. Font özelliğini, yanındaki + tuşuna basarak genişletin. Font özelliğinin alt özellikleri listelenir.
· Name özelliğini Tahoma,
· Text özelliğini “Yazılım Uzmanlığı Kronometre Uygulaması”,
· Size özelliğini 10 olarak ayarlayın.
Form görünüm özellikleri, eklenecek kontrollerin (değiştirilmedikleri sürece) görünümlerini de etkiler.
3. Toolbox panelinden Form üzerine bir Label ekleyin. Özelliklerini atayın:
· Text: Kronometrem
· Font – Name: Forte, Font – Size: 28
· Dock: Top
· TextAlign: BottomCenter
4. Bir Label kontrolü ekleyin. Özelliklerini atayın:
· Text: 0
· Font – Size: 30
· TextAlign: MiddleCenter
· Name: lblSure
5. Forma bir Timer kontrolü ekleyin. Name özelliğini tmrKronometre olarak değiştirin.
İPUCU: Kod tarafında kullanacağınız kontrollerin isimlerini değiştirmek, daha sonra ulaşmak için zaman kazandıracaktır.
6. Bir ComboBox ekleyin. Text özelliğini “Hız Seçin” olarak, Name özelliğini de cmbInterval olarak değiştirin. Items Collection içine sırayla 1000, 2000, 3000, 4000 değerlerini girin.
Bu kontrol, çalışma anında Timer kontrolünün Interval özelliğini değiştirmeyi, dolayısıyla kronometrenin hızını ayarlamayı sağlayacak.
7. Biri “Dur”, diğeri “Başla” Text özelliklerine sahip iki Button ekleyin. Kontrollerin Name özelliklerini sırayla btnDur ve btnBasla olarak değiştirin.
8. Bir ListBox kontrolü ekleyin ve Name özelliğini lbKayit olarak değiştirin. Bu kontrol kronometrenin başlama ve durma zamanlarını kaydetmeyi sağlayacak.
9. Bir TextBox kontrolü ekleyin. Name özelliğini txtSure olarak değiştirin ve Text özelliğinde yazan yazıyı silin.
10. Eklenen kontrolleri, resim (Resim numarası) de görünen şekilde düzenleyin.


Kodların yazılması

1. Formun üzerine sağ tıklayın ve View Code komutunu seçin.
2. Açılan kod sayfasında, KalanSure isimli bir değişken tanımlayın.

public int KalanSure;

3. Formun tasarım görünümüne dönün ve Başla isimli Button kontrolüne çift tıklayın. btnBasla_Click yordamı içine Timer kontrolünü ayarlayıp başlatan, ListBox kontrolüne kayıtları giren, kalan süreyi Label kontrolünde görüntüleyen kodları yazın.

private void btnBasla_Click( System.Object sender, System.EventArgs e ) {
// Başlangıç zamanı "KalanSure" değişkenine atanır.
KalanSure = System.Convert.ToInt32( txtSure.Text );

// Kalan süre kullanıcıya gösterilir.
lblSure.Text = System.Convert.ToString( KalanSure );

// ListBox kontrolüne kayıt girilir.
lbKayit.Items.Add( "Kronometre balad: " + DateAndTime.Now.TimeOfDay.ToString() );

// ComboBox kontrolünden seçilen değer,
// Timer kontrolünün çalışma hızını belirler.
tmrKronometre.Interval = System.Convert.ToInt32( cmbInterval.Text );

// Timer kontrolünü çalıştırır.
tmrKronometre.Start();
}

4. Dur isimli Button kontrolüne çift tıklayın. btnDur_Click yordamı içine Timer kontrolünü durduracak ve ListBox kontrolüne kayıtları ekleyecek kodları yazın.

private void btnDur_Click( System.Object sender, System.EventArgs e ) {
// Timer kontrolünü durdurur.
tmrKronometre.Stop();

// ListBox kontrolüne kayıt girilir.
lbKayit.Items.Add( "Kronometre durduruldu: " + DateAndTime.Now.TimeOfDay.ToString() );
}

5. Tasarım görünümünde tmrKronometre isimli Timer kontrolüne çift tıklayın. tmrKronometre_Tick yordamı içine kalan süreyi azaltacak ve süre sıfırlandığında kronometreyi durduracak kodları yazın.

private void tmrKronometre_Tick( System.Object sender, System.EventArgs e ) {
// Her saniye geçtiğinde sure değeri 1 azalacaktır.
KalanSure = KalanSure - 1;

// KalanSure değeri kullancıya gösterilir
lblSure.Text = System.Convert.ToString( KalanSure );

// KalanSure değeri sıfıra ulaşmışsa kronometre durdurulur.
if ( KalanSure == 0 ) {
tmrKronometre.Stop();
lbKayit.Items.Add( "Süre Doldu: " + DateAndTime.Now.TimeOfDay.ToString() );

MessageBox.Show( "Süre doldu" );
}
}

6. Projeyi başlatın, metin kutusuna 5 değerini girin. Hız Seçin açılan kutusundan 1000 değerini seçin ve Başla düğmesine basın.
· Süre başladıktan ve bittikten sonra ListBox kontrolündeki değişiklikler nelerdir?
· Hız 3000 olarak seçildiğinde başlama ve bitiş zamanları arasındaki süre ne kadardır?
Konu 4: MessageBox

MessageBox, kullanıcıya bilgi göstermek için açılan mesaj kutusudur. Bu mesaj kutusu dört öğeden oluşur.
· Text (Yazı): Mesaj kutusunda verilmek istenen bilgiyi tutan yazıdır
· Caption (Başlık): Mesaj kutusunun başlığıdır
· Buttons (Düğmeler): Mesaj kutusunda hangi düğmelerin gösterileceğini belirler.
· Icon (Simge): Mesaj kutusunda gösterilecek olan simgeyi ve açıldığı zaman çıkartılacak sesi belirler.

MessageBox.Show("Devam etmek istiyor musunuz?", "Uyarı", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);



Mesaj kutusu, kapanırken hangi düğmenin basıldığını DialogResult nesnesi ile programcıya bildirir.

if(MessageBox.Show("Değişiklikler kaydedilsin mi?", "Kayıt", MessageBoxButtons.YesNoCancel) == DialogResult.Cancel)
{
// İptal tuşuna basıldığı zaman
// buraya girilir.
}
Konu 5: Değişken – Sabit Nedir, Değişkenlerin ve Sabitlerin Tanımlanması

Değişken Nedir, Nasıl Tanımlanır

Program yazarken, bazı verilerin daha sonra kullanılmak üzere bir yerde tutulması gerekebilir. Örneğin bir hesaplama yapılırken, önceden hesaplanmış verileri kullanmak istenirse, bu verileri tekrar hesaplamak yerine hafızada tutmak performansı artıracaktır. Veya veritabanından alınan bir kullanıcı isminin hafızada tutulması, bu değer her istendiğinde veritabanına bağlanıp alınmasına tercih edilmelidir. Verilerin bu şekilde hafızada tutulması değişkenler ile sağlanır.
Değişkenler farklı türde verileri tuttukları için, farklı tiplere sahip olabilirler. Bir negatif veya pozitif sayıyı tutan değişken ile yazı tutan bir değişken farklı tiplere sahiptirler.

int sayi;
string kelime;

Tanımlanan değişkenlerin tipleri değişken isminden önce belirtilir.
Değişken isimlerini belirlerken bazı noktalara dikkat etmek gerekir.
· Boşluk, nokta, soru işareti, noktalı virgül, çift tırnak, tek tırnak, aritmetik operatörler, karşılaştırma ve atama operatörleri, parantezler kullanılamaz.
· Sayı ile başlayamaz.
· Visual C#.NET dilinde tanımlı anahtar kelimeler kullanılamaz.
İPUCU: Değişken isimlerinde Türkçe karakter kullanılırsa, farklı dil seçenekli işletim sistemlerinde çalışma anında hata üretecektir.

Hatalı bazı değişken tanımları:

int int;
short (sayi);
int 333sayisi;
string “kelime”;
string <isim>;

Aynı tipteki değişkenler tek bir satır içinde tanımlanabilir.
int sayi1, sayi2;

Değişkenlere değer atamak = operatörü ile yapılır. Eşitliğin sağ tarafındaki değer, sol tarafta bulunan değişkene atanır. Dolayısıyla sağ taraftaki ifadenin değeri değişmez.
sayi1 = 10;
sayi2 = sayi1;

Değişkenler tanımlandıkları sırada başlangıç değeri alabilirler.
string isim = “Enis Günesen”;

Değişkenler program içinde, tuttukları verilere ulaşmak için kullanılır. Ancak değişkenlere ulaşmak, tanımlandıkları yerde veya alt bloklarda mümkündür. Bu kavrama değişkenlerin kapsam alanı (Scope) denir.
Kapsam alanı dışındaki bir yerden değişkene ulaşılamaz.

namespace NameSpace1
{
class Class1
{
int SinifDegiskeni;

void Sub1()
{
int YordamDegiskeni;

while(true)
{
int DonguDegiskeni;
}
}

void Sub2()
{
int YordamDegiskeni2;
}
}
}

Tablo 0-i, kod bloklarından hangi değişkenlere ulaşabilindiğini gösterir.

[Sadece Kayıtlı Kullanıcılar Linkleri Görebilir.Kayıt Olmak İçin Tıklayınız...]

Tablo 0‑i
Uygulamanın çalışması değişkenlerin kapsam alanlarındayken, bu değişkenler bellekte tutulur. Dolayısıyla değişkenlerin tanımlandıkları yer, kullanılacağı amaca göre seçilmelidir. Örneğin bir değişken birden fazla yordamda kullanılacaksa, bir üst düzeyde (Class düzeyinde) tanımlanmaları gerekir. Ancak sadece bir yordam içinde kullanılan değişkenler class düzeyinde tanımlanırsa, fazladan bellekte yer tutar ve performans düşer. Class seviyesindeki değişkenler, aynı class içindeki fonksiyonlar ile değiştirebilir ve class örneğinin yaşam süresinde ilgili özelliklerine erişim sağlanabilir.
Sabit Nedir, Nasıl Tanımlanır

Sabit, sürekli aynı değeri tutan değişkendir. Uygulamanın çalışması boyunca değişmeyen bir değer kullanılıyorsa sabit kullanılması, kodun kolay okunmasını sağlayacaktır.
Sabitler tanımlandıktan sonra değiştirilemeyeceği için, tanımlandıkları anda değerlerinin verilmesi gerekir.

const int x = 1;

Sabitlerin kapsam alanları değişkenler ile aynıdır.
Veri Tipleri

Veri tipi, değişkenlerin tuttukları değerlerin türünü ve bellekte tutulacak boyutunu tanımlar. Değişkenleri veri tipleri ile tanımlarken verinin boyutuna göre bir veri tipi seçilmelidir.
Visual C#.NET veri tipleri Tablo 1’de listelenmiştir.

[Sadece Kayıtlı Kullanıcılar Linkleri Görebilir.Kayıt Olmak İçin Tıklayınız...]

Tablo 1

double ve float veri tiplerinin aralığında belirtilen “E + sayı” ifadesi, 10 ^ sayı ile çarpılacağını belirtir. Örneğin 12 E-3 ifadesi, 12 * 0.001 anlamına gelir.
-1.7E-5 = -0.000017
-1.7E+10 = -17000000000.0
0.7432E+2 = 74.32
7432E-3 = 7.432

NOT: Int16, Int32, Int64 .NET veri tipleridir. Visual C# dilindeki karşılıkları short, int, long veri tipleridir.

string yazi = "Veri tipleri örnekleri";

bool b = true;
char karakter = "A";

decimal numerik = -123456789;
double cift = -1.234E-120;
float tek = 3.32E+100;
byte bayt = 255;

short kisaSayi = -32000;
int tamSayi = 2000000000;
long uzunSayi = -123456789123456789;

Büyük veri tiplerinden küçük veri tiplerine dönüşüm sırasında, değer kayıpları meydana gelebilir. Örneğin float tipinden short tipine yapılacak bir dönüşümde virgülden sonraki sayılar kaybedilecektir.

float virgullu = 1.12;
short kisaSayi = (float) virgullu;
// kisaSayi değişkenin son değeri 1 olur
struct


struct veri tipleri, programcıların kendilerinin tanımladığı veri tipleridir. struct, birkaç veri tipinin bir araya getirilip oluşturulduğu bileşik bir tiptir. struct veri tiplerinde yordam tanımları da yapılabilir.

struct Nokta
{
int x;
int y;

void Degistir(int yeniX , int yeniY)
{
x = yeniX;
y = yeniY;
}
}

struct Ucgen
{
Nokta n1;
Nokta n2;
Nokta n3;
}
Dizilerle Çalışmak


Dizi değişkenleri, aynı tipte birçok veriyi bir arada tutmayı sağlar. Benzer işlemlerde kullanılan değişkenler bir dizi altında listelenebilir. Örneğin kullanıcıdan alınan isimler String tipinde bir dizi içinde toplanabilir.

string [] isimler;

Dizilerin kaç eleman içereceği, dizi tanımlanırken ya da daha sonra belirtilebilir:

string [] isimler = new string[10];

string [] isimler;
// ...
isimler = new string[4];

Dizilerin indisleri sıfırdan başlar. Örnekteki isimler dizisinin 4 tane String tipinden elemanı vardır.
Dizilerin elemanlarına ulaşmak için, istenilen elemanın indisi verilmesi gerekir.

isimler[0] = “Ali”;
isimler[1] = “Ahmet”;
isimler[2] = “Mehmet”;
isimler[3] = “Ayşe”;

MessageBox.Show(isimler[3]);

Dizilere tek tek değer atanabildiği gibi, tanımlarken de başlangıç değerleri atanabilir.

string [] isimler = {"Ali","Ahmet","Mehmet","Ayşe"};

Diziler tek boyutlu olduğu gibi, birkaç boyutlu diziler de tanımlanabilir.

// İlk boyutunda 5, İkinci boyutunda 6 int değeri olan
// 2 boyutlu dizi
int [,] matris = new int[5,6];

Burada dizinin ilk boyutunda 5 tane eleman vardır. İlk boyuttaki her eleman için İkinci boyutta 6 eleman bulunur. Dolayısıyla toplam 30 elemanlı bir dizidir. Bu dizide bir boyut daha olsaydı, o boyutun her elemanı için diğer boyutlardaki 30 eleman bulunacaktı.
Çok boyutlu dizilerin eleman sayıları boyutlarındaki eleman sayılarını çarparak hesaplanabilir.

int [,,,,] dizi = new int[boyut1,boyut2,boyut3,... ,boyutn];
// Eleman sayısı:
// boyut1 * boyut2 * ... * boyutN

Çok boyutlu dizilere başlangıç değerleri, dizinin boyutu dikkate alınarak verilmelidir. Boyutlardaki elemanlar küme parantezleri ile gruplanmalıdır.

// İlk boyutunda 2, ikinci boyutunda 4 eleman olan
// 2 boyutlu dizi
int [,] matris = {{1, 2, 3, 4}, {5, 6, 7, 8}};

Çok boyutlu dizilerin elemanlarına ulaşmak için, her boyut için indis göstermek gerekir.

matris[0, 0] = 1;
Bazı dizi özellikleri ve metotları

Diziler, .NET Framework içinde tanımlı Array sınıfı temsil eder. Tüm diziler Array sınıfında tanımlı özellikleri ve metotları kullanırlar.
· Length
Dizinin bütün boyutlarındaki toplam eleman sayısını veren özelliktir.
ComboBox [] ComboBoxDizisi = new ComboBox[20];
MessageBox.Show(ComboBoxDizisi.Length.ToString());
// Sonuç = 20

int [] dizi = new int[1, 4, 4, 5, 6];
MessageBox.Show(dizi.Length.ToString());
// Sonuç = 2 * 5 * 5 * 6 * 7 = 2100
· Rank
Dizinin boyut sayısını veren özelliktir.
MessageBox.Show(dizi.Rank.ToString());
// Sonuç = 5
· GetLength
İndisi verilen boyutun kaç elemanlı olduğunu gösterir. Burada indisin sıfırdan başladığına dikkat edilmelidir.
int [,,,,] dizi = new int[10, 40, 50, 80, 90];
MessageBox.Show(dizi.GetLength(4).ToString());
// Sonuç = 90

Clear, Reverse, IndexOf metotları Array sınıfında Shared (paylaştırılmış) olarak tanımlı metotlardır. İşlemin yapılacağı dizi parametre olarak verilmelidir.
· Clear
Parametre olarak verilen dizinin, belirtilen indis aralığındaki tüm değerleri temizler. Temizleme işleminde atanan değer, dizi elemanlarının tiplerine göre değişir. Örneğin int tipinde tanımlı bir dizinin elemanları temizlenirse 0 değerini alacaktır. Buna karşın String tipindeki elemanlar “” (boş yazı) değerini alır.
int []dizi= {12, 13, 14, 15};
// 1. indisten başlayarak, 3 elemanı temizle
Array.Clear(dizi, 1, 3);
MessageBox.Show(dizi[2].ToString());
//Sonuç = 0

// Dizinin tüm elemanlarını temizler
Array.Clear(dizi, 0, dizi.Length);
· Reverse
Parametre olarak verilen dizinin eleman sırasını tersine çevirir. Dizinin tüm elemanlarının veya belirli indis aralığındaki elemanlarının sırası tersine çevrilebilir.
string [] harfler = {"A", "B", "C"};
Array.Reverse(harfler);
MessageBox.Show(harfler[2]);
// Sonuç = A

string [] harfler = {"A", "B", "C"};
Array.Reverse(harfler, 0, 1);
MessageBox.Show(harfler[2]);
// Sonuç = C

· IndexOf
İlk parametrede verilen dizide, ikinci parametrede verilen değeri arar. Aranan değer dizide bulunursa indisi, bulunamazsa -1 döndürür.
float [] notlar = {78.1, 99.9, 100, 12.2};
float maxNot = 100;
MessageBox.Show(Array.IndexOf(notlar, maxNot).ToString());
// Aranan maxNot değerinin indisi = 2

Debug


Visual Studio Debug aracı, çalışma anında kodlar arasında satır satır ilerleyerek hataları bulmayı sağlar. İncelemeye başlamak istenen kod satırı üzerinde bir BreakPoint (durma noktası) konarak, hata ayıklayıcının bu satır çalıştırılmadan önce orada durması sağlanır.

Uygulama çalıştırıldığında, BreakPoint konulan kod satırına kadar durmaz. Belirtilen satıra sıra gelindiğinde, kod sayfasında, o an üzerinde bulunan satır ok ile gösterilir. Visual Studio ile hata ayıklarken, tanımlanan değişkenlerin o andaki değerler incelenerek mantıksal hatalar bulunabilir.

Hata ayıklama sırasında bazı Visual Studio panelleri, değişkenlerin, kontrollerin ve nesnelerin değerlerini listelemek için kullanılabilir. Bu paneller Debug menüsünde Windows alt menüsünden gösterilir.
· Autos Paneli
Çalışmakta olan satırdaki ifade ile bir önceki ifadede bulunan değişken ve kontrollerin değerlerini listeler.
· Locals Paneli
İçinde bulunan kapsam alanındaki tüm değişkenlerin değerlerini listeler.
· Watch Paneli
Değeri incelenmek istenen değişken veya kontroller bu panele elle yazılmalıdır.

Kodlar arasında ilerlemek ve hata ayıklamaya devam etmek için dört yol vardır. Bu komutlar Debug menüsünden veya Debug araç çubuğundan ulaşılabilir.
1. Step Into
Kod satırında bir yordam çalıştırılacaksa, bu yordamın içine girer. Bu yordam farklı bir yerde ise, ilgili sayfa açılır ve hata ayıklamaya devam edilir.
2. Step Over
Herhangi bir yordam içine girmeden, içindeki kapsam alanında çalışmaya devam eder.
3. Step Out
Bulunan yordamdan çıkarak hata ayıklamaya devam eder.
4. Continue
Birden fazla durma noktası yerleştirilmişse, bir sonraki noktaya kadar çalışmaya devam eder.
Hata ayıklama, çalıştırılacak hiçbir satır kalmadığında durur ve uygulama normal çalışmasına devam eder. Durma noktaları kaldırılarak ya da pasif hale getirilerek uygulamanın durması engellenebilir.
Bütün durma noktalarını kaldırmak için Debug menüsünden Clear All BreakPoints komutu, pasif hale getirmek için Disable All BreakPoints komutu verilmelidir. Durma noktalarını aktif hale getirmek için tekrar aynı komut seçilmelidir.
Alıştırma

Bu uygulamada veri tiplerinin kullanım yerlerine, diziler ile çalışma örneklerine bakılacaktır.
struct veri tipi

1. Sınıf isminde bir Windows projesi açın.
2. Açılan form üzerine sağ tıklayarak View Code komutunu seçin. Kod sayfasında class düzeyinde bir struct tanımlayın.
public struct Ogrenci {
public string Isim;
public string Soyad;
public char Sube;
public float OrtalamaNotu;
public bool DevamEdiyor;
}
3. Ogrenci tipindeki değerleri tutmak için, class düzeyinde iki elemanlı bir dizi tanımlayın
public Ogrenci[] ogrenciler = new Ogrenci[2];

4. Formun Load olayına, uygulama açılırken yeni öğrenci ekleme kodlarını yazın.
Ogrenci ogrenci1 = new Ogrenci();

ogrenci1.Isim = "Ali";
ogrenci1.Soyad = "Veli";
ogrenci1.Sube = "C";
ogrenci1.OrtalamaNotu = 67.1;
ogrenci1.DevamEdiyor = true;

Ogrenci ogrenci2 = new Ogrenci();

ogrenci2.Isim = "Ahmet";
ogrenci2.Soyad = "Veli";
ogrenci2.Sube = "C";
ogrenci2.OrtalamaNotu = 72.9;
ogrenci2.DevamEdiyor = true;

ogrenciler[ 0 ] = ogrenci1;
ogrenciler[ 1 ] = ogrenci2;

5. Forma btnOgrenciEkle isminde bir Button kontrolü yerleştirin. Bu kontrolün Click olayına, diziye yeni bir öğrenci kaydı ekleyen kodu ekleyin.
// ogrenciler dizinde boş yer kalmadığı için
// diziyi, eski değerleri kaybetmeden tekrar
// boyutlandırmak gerekir.
Ogrenci[] gecici = new Ogrenci[ 3 ];
System.Array.Copy( ogrenciler, gecici,2 );
ogrenciler = gecici;

Ogrenci ogrenci = new Ogrenci();

ogrenci.Isim = "Veli";
ogrenci.Soyad = "Veli";
ogrenci.Sube = char.Parse( "D" );
ogrenci.OrtalamaNotu = System.Convert.ToSingle( 92.1 );
ogrenci.DevamEdiyor = false;

ogrenciler[ 2 ] = ogrenci;

ogrenciler dizisine başka bir yordamdan nasıl erişildi?
Formun Load olayında ogrenci isimli bir değişken tanımlandığı halde, Button kontrolünün Click olayında aynı isimde bir değişken nasıl tanımlanabiliyor?
Dizi işlemleri

1. Forma bntOzellikleriGoruntule isminde bir Button kontrolü ekleyin ve Click olayında, diziden indisi verilen öğrenciyi alan kodları yazın.
int indis = Int32.Parse(textBox1.Text);
Ogrenci secilenOgrenci = new Ogrenci();
secilenOgrenci = (Ogrenci)ogrenciler[indis];

string bilgiler = null;

bilgiler +=secilenOgrenci.Isim + " " + secilenOgrenci.Soyad; bilgiler +="\n";
bilgiler +="Notu: " + secilenOgrenci.OrtalamaNotu + "\n";
bilgiler +="Şubesi: " + secilenOgrenci.Sube + "\n";
bilgiler +="Devam ediyor mu: " + secilenOgrenci.DevamEdiyor;

MessageBox.Show(bilgiler, MsgBoxStyle.Information, "Öğrenci Bilgileri" );

İPUCU: "\n"ifadesi, String değişkenlerinde yeni satıra geçilmesini sağlar.
Aritmetik işlemler

1. Forma btnOrtalamaHesapla isminde bir Button kontrolü ekleyin ve Click olayında sınıfın ortalamasını hesaplayan kodu yazın.
double not1 = ogrenciler[ 0 ].OrtalamaNotu;
double not2 = ogrenciler[ 1 ].OrtalamaNotu;
double not3 = ogrenciler[ 2 ].OrtalamaNotu;

int ortalama = ( ( int )( ( not1 + not2 + not3 ) / 3 ) );
MessageBox.Show( ortalama.ToString() );

2. Not3 değişkeninin tanımlandığı yere BreakPoint koyun ve projeyi çalıştırın.
3. Form açıldığında btnOrtalamaHesapla düğmesine basın. Uygulamanın çalışması durma noktası konulan yerde duracaktır.
4. Debug menüsünden Windows alt menüsünden Autos komutunu seçin. Autos panelinde not1 ve not2 değişkenlerinin değerlerini inceleyin.
5. Debug menüsünden Windows alt menüsünden Watch komutunu seçin. Watch panelinde Name sütununa “ogrenciler” yazın. ogrenciler dizisini + düğmesine basarak genişletin ve dizinin elemanlarının değerlerini inceleyin.
6. Debug menüsünden Step Into komutunu seçin. Bu işlemi Debug araç çubuğu ile ya da F11 tuşuna basarak yapabilirsiniz.
7. Gösterilen hata mesajını inceleyin. Continue düğmesine basarak uygulamayı sonlandırın.
8. Uygulamayı tekrar çalıştırın ve önce btnOgrenciEkle düğmesine daha sonra btnOrtalamaHesapla düğmesine basın.
Konu 8: Operatörler


Visual C# .NET dilinde çalışırken, değişkenler üzerinde birçok işlem yapılır. Hesaplamalarda aritmetik işlemler, kontrollerde karşılaştırma işlemleri veya mantıksal işlemler yapılır. Bu işlemler için Visual C# .NET dilinde tanımlı operatörler kullanılır.
Aritmetiksel Operatörler

Bu operatörler aritmetik işlemlerinde, sayılarla veya sayı tutan ifadelerle kullanılır.
· Çarpma
int sayi = 100;
sayi = 200 * 2;

· Bölme
double bolum;
bolum = sayi / 23;

· Çıkarma
int sonuc = bolum – 100;

· Toplama
int toplam;
toplam += sonuc;
// Bu ifade, “toplam = toplam + sonuc” ile aynı anlama gelir

İPUCU: Aritmetik operatörleri, eşittir ifadesi ile beraber kullanılırsa, işlem değişkenin kendisi ile yapılır.
· Mod alma
int kalan = toplam % 42;
// Sonuç, toplam değişkenindeki değerin 42 ile
// bölümünden kalan sayıdır.
Karşılaştırma Operatörleri

Bu operatörler veri tiplerini birbirleriyle karşılaştırmak için kullanılır. Bu operatörler ile yapılan işlemlerin sonucunda true ya da false değeri döner. Karşılaştırma operatörleri yalnızca sayı tipleri üzerinde yapılmaz.

· Küçük
double sayi = 1.5;
float sayi2 = 1.3;

sayi2 < sayi
// Sonuç: True

· Küçük Eşit

sayi2 <= sayi
// Sonuç: True

· Büyük
sayi2 > sayi
// Sonuç: False

· Büyük Eşit
sayi2 >= sayi
// Sonuç: False

· Eşit
sayi2 == sayi
// Sonuç: False

· Eşit Değil
sayi2 != sayi
// Sonuç: True

String Operatörleri

String tipleri üzerinde gerçekleştirilen işlemler için tanımlı operatörlerdir.
· String tipindeki değişkenleri birbirine bağlama + operatörü ile gerçekleşir.
string isim, soyad;
string IsimSoyad = isim + " " + soyad;
· Split
Belirtilen ayraca göre yazıyı böler, çıkan sonuç String dizisinde tutulur. Ayraç karakterleri sonuç dizisinde yer almaz.
string Kelime = "Kelime1:Kelime2:Kelime3";
string [] parcalar;
parcalar = Kelime.Split(':');
// parcalar dizisinin üç elemanı olur:
// Kelime1
// Kelime2
// Kelime3

string [] parcalar2;
parcalar2 = Kelime.Split('m');
// parcalar2 dizisinin dört elemanı olur:
// Keli
// e1:Keli
// e2:Keli
// e3

· ToCharArray
String değerinin belli bir bölümündeki karakterleri ya da tüm karakterlerini, Char dizisi olarak döndürür.
char []harfler = "Kelime".ToCharArray();

// Dizinin 1. elemanından başlayarak 4 karakter oku
char [] harfler = "Kelime".ToCharArray(1,4);

· Insert
String tipinde bir değişkenin değerine, ilk parametrede belirtilen yerden başlayarak ikinci parametredeki değeri ekler. Ancak bu değişkenin değeriyle oynamaz. Yeni oluşturulan String ifadesini döndürür.
string sayilar = "0123456789";
string yeniSayilar;
yeniSayilar = sayilar.Insert(5, "--- Rakamlar ---");
MessageBox.Show(yeniSayilar);
// Sonuç: 01234--- Rakamlar ---56789

· Remove
İlk parametrede verilen değerden başlayarak, ikinci parametredeki değer kadar karakter, değişkenden çıkarılır.
yeniSayilar = yeniSayilar.Remove(4, yeniSayilar.Length - 4);
MessageBox.Show(yeniSayilar);
// Sonuç: 0123
Makale Sonu Soruları & Alıştırmalar


1. Arabanın fren yapması ve arabaya çarpılması, .NET nesnelerinin hangi kavramlarına girer?
2. 10 saniyede bir, ListBox kontrolüne, kullanıcıdan alınan değerleri ekleyen kodları yazın.
3. Değişkenler ile sabitlerin farkı nedir?
4. 5 < 6 = -1 ifadesi hangi Boolean değerini döndürür, neden? Option Strict On seçildiğinde çıkan hata mesajını inceleyin.

Kaynak : Yazılım Profesyoneli 1


__________________
bir silahım olsaydı...




hiç bir farklılık ayrımcılığa neden olamaz.
Hürriyet Hürriyettir.

silentwolf isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 26.01.08, 16:00   #2 (permalink)
Yeni Tayfa
 
kalelim53 - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: Jan 2008
Mesaj Sayısı: 1
Konu Sayısı: 0
Rep Gücü: 0
Rep Puanı: 10
Rep Derecesi : kalelim53 0-250000
Standart Cevap: C# Öğreniyorum Makale 4: Visual C# .NET İle Windows Tabanlı Programlama




slm arkadaşlar bana ögrenci bilgilerini tutan programın kod kısmı lazım bazı yerlerini yapanadımda verebilirseniz iyi olur


kalelim53 isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Alt 05.03.08, 16:49   #3 (permalink)
Yeni Tayfa
 
tavuk_kavurma - ait Kullanıcı Resmi (Avatar)
 
Üyelik Tarihi: Aug 2007
Mesaj Sayısı: 195
Konu Sayısı: 4
Rep Gücü: 6028
Rep Puanı: 601442
Rep Derecesi : tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000tavuk_kavurma 0-1000000
Ruh Hali:

Standart Cevap: C# Öğreniyorum Makale 4: Visual C# .NET İle Windows Tabanlı Programlama




Alıntı:
kalelim53 Nickli Üyeden Alıntı Mesajı göster
slm arkadaşlar bana ögrenci bilgilerini tutan programın kod kısmı lazım bazı yerlerini yapanadımda verebilirseniz iyi olur
hangi kısımları yapamadın yawrucum anlatta destek çıkalım
hem burda güzle bir paylaşım olmuş bir teşekkürüde esirgememek lazım dimi ??

gzel paylaşım başlangıç için arkadaşlara yararlı olabilicek bir konu teşekkürler


__________________
tavuk kavurma


Hazırlanışı
* Soğanları ve sarımsakları temizleyip kıyın. Biberlerin ince şeritler halinde doğrayın. Domateslerin kabuklarını soyup doğrayın.
* Tavuk etlerini teflon tavaya alıp etler suyunu salıp çekinceye kadar kavurun. Zeytinyağı, kıyılmış soğan ve sarımsakları ekleyip soteleyin. Biber, domates, tuz, karabiber ve kekik ekleyip karıştırın. Kapağı kapalı olarak ara sıra karıştırıp 15 dakika pişirin. Sıcak olarak servis yapın.


afiyet olsin
tavuk_kavurma isimli Üye şimdilik offline konumundadır   Alıntı ile Cevapla
Cevapla


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 
Seçenekler
Stil

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 01:28.


Powered by vBulletin® Version 3.8.0
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.6.0
User Alert System provided by Advanced User Tagging v3.0.6 (Lite) - vBulletin Mods & Addons Copyright © 2020 DragonByte Technologies Ltd.
ForumTayfa

Arşiv: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16 22 23 24 25 26 27 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 95 96 97 98 99 100 102 103 104 105 106 155 156 157 158 159 160 161 162 163 164 167 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271


ForumTayfa - Link Değişimi
Telinka İletişim | Voip Ürünleri | Link Değişimine Katılın |

Sitemiz bir forum sitesi olduğundan dolayı, kullanıcılar her türlü görüşlerini önceden onay olmadan anında siteye yazabilmektedir. ForumTayfa Yöneticileri mesajları itina ile kontrol etse de, bu yazılardan dolayı doğabilecek her türlü sorumluluk yazan kullanıcılara aittir. Yine de sitemizde yasalara aykırı unsurlar bulursanız [email protected] email adresine bildirebilirsiniz, şikayetiniz incelendikten sonra en kısa sürede gereken yapılacaktır.

Any member of our web site has the right of adding comments instantly without getting permisson due to the forum structure of our site basis. Althought, our site modarators check comments with care, all the responsibilities sourced from these comments directly belong to the members. If you still find any illegal content in our site ( A.buse, H.arassment, S.camming, H.acking, W.arez, C.rack, D.ivx, Mp.3 or any Illegal Activity ), please report us via [email protected] .Your reports will be evaluated as soon as the arrival of your e-mail.