Introduction

String Char Dizisidir! 920 300 mezo

String Char Dizisidir!

Merhaba arkadaşlar
Çalıştığım şirkette bulunmuş olduğum proje için Senior yani 2 3 yıl deneyimi olan developer arkadaşlar arıyoruz ve bunun ile ilgili müdürüm mülakat görüşmelerine benimde girmemi rica etti bende seve seve kabul ettim. Mülakatta gelen arkadaşlara neler yaptığını sorduğumuzda herkes güzel güzel anlatıyor yaptıklarını iş görüşmesinde göze girmek için hepimizin yaptığı gibi herşeyi anlatıyor anlatmaya gayret ediyor. Ancak

Dikkatimi çeken bir konu var ki işte oda bu yazıyı sizlerle paylaşmak isteyişimin asıl sebebi : Senior olarak alınacak ve daha önce bir çok projede görev almış olan arkadaşlar çok çok çok basit bir sorudan elendiklerinin veya olumsuz bir not aldıklarının farkında değiller. String bir değişken içindeki karakterlerin sayılması ve işlem yapılması ile ilgili bir sorumuz var ve burada herkese hiçbir string metot vs kullanmayın diye de uyarıyoruz tahmin ettiğiniz gibi basit küçük bir algoritma sorusu.
Ne var bunda diyebilirsiniz işte konu bu zaten 🙂 arkadaşların hiç biri string bir char dizisidir deyip bu şekilde foreach ile veya for ile kodunu kağıda dökmeye başlamadı. Herkes bir ipucu verilmesini bekliyor yada farklı yollarla bir array e çevirme işine giriyor.Halbuki ismini yazarken bile aslında bir karakter dizisi kullandığının farkında bile değil.
Küçük ayrıntılar veya bilgiler hayat kurtarır yada iyi yerlere getirebilir.

Unutmayın  String bir Char dizisidir.

Umarım Yararlı Olur ve bunu okuyan arkadaşlar mülakatlarda başvurdukları güzel iş yerlerine sevdikleri işleri yapmak üzere girebilirler.

Bilgiyle kalın

M.Zeki Osmancık

GDI 2 _ Grafik Çizimi 426 487 mezo

GDI 2 _ Grafik Çizimi

Merhaba arkadaşlar

GDI ile ilgili önceki yazımızda neyin nasıl kullanılacağını görmüştük bu sefer bu GDI metotlarını kullanarak nasıl hesaplamalar yaparız. Seçim sonuçlarında hep görürüz bir pasta dilimi üzerinde partilerin oyları görünür ve yüzde olarak pasta grafikde bir dilim kaplarlar . Bakalım bizim partilerden hangisi ne kadar oyla pastanın neresinde duracak ???

Öncelikle WindowsForm uygulamamız üzerine 2 TextBox 1 Button ve 1 PictureBox atıyoruz.

Bu görüntüyü elde ettikten sonra yapmamız gerek pek de birşey kalmadı aslında sadece kod bloğunu açıp yazmak kalıyor 😀

string[] partiler = new string[10];int[] oylar = new int[10];int siraNo, toplamOy;

Öncelikle yukardaki gibi değerlerimi tutacağım dizilerimi  ve hesaplama yapabilmek içinse değişkenlerimi GLOBAL olarak tanımladım.

Daha sonra buton içersinde değerlerimi alıp bunları grafiksel olarak picturebox içersine çizdireceğim.

Öncelikle 10 elemanlı bir dizi oluşturduğum için dizinin boyutundan çok eleman girilmesin diye bir kontrol yapıyorum. Ardından oylar içersine değer eklerken int değerlerin girildiğinden emin oluyorum…

            if (siraNo == 10){MessageBox.Show(“10 partiden fazla olamaz???”);return;}try

{

oylar[siraNo] = int.Parse(textBox2.Text);

}

catch (Exception)

{

MessageBox.Show(“Oylarda Hata Var”);

return;

}

 

Hem partiler hemde oylar aynı indeks numaralarına yazdırılacak .

            partiler[siraNo] = textBox1.Text;toplamOy += oylar[siraNo];siraNo++;Graphics grp = this.pictureBox1.CreateGraphics();grp.Clear(pictureBox1.BackColor);

Random rnd = new Random();

int i, basAci=0,yayAci ,boy=0;

Color renk;

HatchBrush firca;

Toplam oy sayısını hesaplıyoruz.  Ardından nesnelerimizi tanımlıyoruz.  Picturebox üzerine çizim yapabilmek için Graphics nesnesi oluşturuyoruz. Picturebox da ne varsa siliyoruz. Color değişkeni ve desenli çizim için HatchBrush nesnesi oluşturuyoruz.

Index numarasına göre tüm dizi içersindeki elemanları alıp grafiksel olarak çizebilmek için bir for döngüsü oluşturuyoruz.

            for (i = 0; i <= siraNo-1; i++){yayAci = 360 * oylar[i] / toplamOy;renk = Color.FromArgb(rnd.Next(255), rnd.Next(255), rnd.Next(255));firca = new HatchBrush((HatchStyle)rnd.Next(50), renk);grp.FillPie(firca,0,80,200,200,basAci,yayAci);

 

grp.DrawString(“% ” + boy.ToString(), new Font(“Tahoma”, 8, FontStyle.Bold), Brushes.Black, 5, 80 + i * 20);

grp.FillRectangle(firca, 260, 80 + i * 20, 18, 18);

 

grp.DrawString(partiler[i] + ” = ” + oylar[i].ToString(), new Font(“Tahoma”, 8, FontStyle.Bold), Brushes.Black, 290, 80 + i * 20);

basAci += yayAci;

}

 

Çizdireceğimiz FillPie nesnesinin kaç derecelik bir açı ile çizileceğini hesaplamak için yay _aci değişkenini kullanacağız.  Random renk elde edebilmek için Color.FromArgb metodunu kullanarak rastgele renk değerlerini veriyoruz. HatchBrush üzerindede random olarak desen gelebilmesi için gerekli tanımlamayı yapıyoruz. Ardından küçük bir kare rengin hangi partiye ait olduğunu göstermek için hemen yanınada partinin adı ve oy sayısı  yazdırdıktan sonra en son tanımladığım başlangıç açısı bas_Aci değişkenini çizdiğim şeklin yay_Aci değeri kadar arttırıp yeni çizilecek olan pie için başlangıç konumunu belirliyoruz.

Ve son olarak karşımıza çıkan görüntü :

Böylelikle Graphics nesnesindeki değerlerin nasıl işimize yarayacağı biraz daha kafamızda oturmuş olur umarım…

Görüşmek Üzere.

M.Zeki OSMANCIK

C# _ Methods 329 374 mezo

C# _ Methods


Merhaba arkadaşlar programları yazarken çoğu kez bir işlemi birden fazla yerde yapmamız gerekebilir.  Bu da her seferinde aynı kodu yazmak anlamına geliyor ve buda bize hem zaman kaybı  hemde kod karışıklığına neden olacaktır. Peki buna çözüm olarak yapacağımız işlemle alakalı koda bir isim versek ve kullanmak istediğimiz yerde o kadar kodu tekrar tekrar yazmayıp sadece ismiyle çağırsak nasıl olur ? Bence süper olur 😀

Metotlar işte bu işlemi yaparlar bir isimle çağırılarak içersindeki işlemleri tek satırda çağırabilmemizi sağlar. Metotları bir işci olarak düşünebiliriz biz ona ne iş yapması gerektiğini söyleriz ve ismini söylediğimizde o iş yapılır.

Örnek olarak bir öğrenci takip programı yaptığımızı düşünelim. Bu program için ilk önce düşünülmesi gereken form Öğrenci Kayıt formudur ve bu form basit olarak aşağıdaki gibi bi görüntüye sahip olacaktır.

En basit işlemi düşünecek olursak doldurulmuş olan textBox ların temizlenmesini istiyorum ve bunun için form içersine bir Temizle butonu yerleştiriyorum ve bu butonda bütün butonları temizliyorum.

private void btnTemizle_Click(object sender, EventArgs e){

txtAd.Clear();

txtSoyad.Clear();

txtTcNo.Clear();

txtDogumYeri.Clear();

txtVeliAd.Clear();

txtVeliSoyad.Clear();

txtTelefon.Clear();

}

Çalıştırdığımda kodlarımın çalıştığını görüyorum tüm alanlar temizleniyor ;).  Buraya kadar bir sorunumuz yok. Peki Kaydet butonuma bastığımda kaydetme işlemleri tamamlandıktan sonra kullanıcının yeni kayıt ekleyebileceğinide hesaba katıp kaydetme işleminden sonrada textBoxları temizlememiz gerekiyor. Aynı kodları tekrar yazarsak sorun kalmaz ama sadece bu kadarla kalmasak ve bu formda 2 den fazla yerde textBoxları temizlemek istesek her seferinde bu kodları tekrar tekrarmı yazıcaz ? Diyelimki yazdık program çalışıyor. Daha sonra okul yönetimi bizden 2 textbox daha koymamızı istedi. Biz yazdığımız Clear kodlarına 2 satır daha eklememiz gerekicek ama bir çok yerde kullandığımız için bir tanesini bile unutsak sıkıntı çıkacaktır. Bu kodları merkezi bir yerde toplasak ve ihtiyacımız olduğunda sadece ismi ile çağırsak nasıl olur ? 😉

Metotda değişiklik yaptığımızda tüm farklı yerlerde kullandığımız kodlarda değişecektir. Gelin nasıl yapıyoruz bu işlemi görelim . Bir Metot tanımlayarak aynı işlemi birden fazla yerde yapalım 😉

Void MetotAdi()

{

Yapılacak işlem

}

private void btnTemizle_Click(object sender, EventArgs e){

Temizle();

}

private void btnKaydet_Click(object sender, EventArgs e)

{

Temizle();

}

private void Temizle()

{

txtAd.Clear();

txtSoyad.Clear();

txtTcNo.Clear();

txtDogumYeri.Clear();

txtVeliAd.Clear();

txtVeliSoyad.Clear();

txtTelefon.Clear();

}

Görüldüğü gibi tek bir metodu yani işçimi sadece adını çağırarak işimi yaptırabiliyorum. 😉

Void metotlar örnekteki gibi sadece içersinde tanımlanan işi yapar. Geriye bir değer döndürmezler.

Metot içersinde yapılan işlem sonucu geriye bir değer döndürmek istiyorsak geriye dönen değer tipinde bir metot oluşturmamız gerekir. Yani işçimize işini yap ama bana yaptığına dair bilgi getir diyoruz. J

Örnek olarak iki sayıyı toplayarak sonucu geri deger olarak döndüren bir metot yazalım.

private void btnTopla_Click(object sender, EventArgs e){

MessageBox.Show(Topla().ToString());

}

int Topla()

{

int sayi1 = 5;

int sayi2 = 6;

int sonuc = sayi1 + sayi2;

return sonuc;

}

Gördüğümüz gibi içeride yapılan işlemin sonucu metodun tipinde olmak zorunda.

Birde içeriye değer gönderebildiğimiz metot tipleri varki buda metot – işçi metaforunu tamamlayan unsurlardan biz işçimizin eline malzemeleri veriyoruz ona sadece o malzemelerle ona söylenmiş olan işi yapmak kalıyor. Ve yine bize bu malzemelerle yaptığı işin sonucunu dönmek zorunda.

private void btnTopla_Click(object sender, EventArgs e){

MessageBox.Show(Topla(5,6).ToString());

}

int Topla(int sayi1 , int sayi2)

{

int sonuc = sayi1 + sayi2;

return sonuc;

}

Ne kadar kolay değilmi ? 😉

Bir sonraki yazımızda görüşmek üzere.


C# _ Diziler _ Foreach Döngüsü 595 199 mezo

C# _ Diziler _ Foreach Döngüsü


Merhaba arkadaşlar bu yazımızda da dizileri anlamaya çalışacağız.  Bu yazı sonunda dzi nedir , nasıl tanımlanır dizilerdeki boyut dizilerin metotları ve foreach döngüsü ile alakalı bilgi sahibi olacaksınız.

Daha önce değişkenler ile ilgili bir yazımız vardı. Hatırlarsak değişkenler program içersinde bize geçiçi süre gerekli olan değerleri tutabildiğimiz yapılardı örneğin int sayi = 5; diyerek 5 sayısını sayi değişkeninde tutabiliyordum. Peki bu sayi değişkeninde birden fazla değer tutmam gerekirse bunu gerçekleştirebilirmiyim ? Cevap değişkenlerle hayır ama Dizilerle evet.

Sizinde anlayacağınız gibi 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. Yani ben sayi değişkenimi dizi olarak tanımlarsam o zaman birden fazla değeri içersinde tutabilirim.

Dizilerin tanımını yaptıktan sonra gelin bu dizi nasıl birşeymiş nasıl yazılırmış ona bir göz atalım.  Dizi tanımları veritiplerinin yanında [] simgeleri ile yapılır.

<veri tipi> [] dizi ismi = new <veri tipi> [dizi eleman sayısı]
String[] isimler;İnt[] sayilar;

Float[] paralar;

Byte[] yaslar;

Dizilerin kaç eleman içereceği, dizi tanımlanırken ya da daha sonra belirtilebilir. Şu şekilde tanımlanabilirler:

int[] sayilar = {3, 8, 2, 6};

int[] sayilar = new int[6]{4, 2, 5, 6, 7, 0};

int[] sayilar = new int[5];

Dizilerin indis numaraları 0 dan başlar ve devam eder. Orneğin isimleri tutacağımız bir dizi tanımladık:

string[] isimler = new string[4];

değerlerini atarken yapacağımız işlem şu olacaktır.

İsimler[0]=”Zeki”;

İsimler[1]=” Yudum”;

İsimler[2]=”Ali”;

İsimler[3]=” Orhan”;

Küçük bir dizi uygulaması yapalım. Bir dizi ve elemanlarını tanımlayarak ListBox içersinde bu değeri gösterelim.

İşte bu kadar kolay bir değişken tanımlar gibi fakat içersinde birden fazla değer taşıyabilen bir değişken gibi düşünebiliriz.

Peki birden fazla boyuta sahip diziler tanımlamak mümkünmü ?  Yani tanımladığımız dizinin 1 elemanıda birkaç değere sahip olsa …

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

int [,] matris = new int[5,6];

Bu diziyi tanımladığımızda önce 5 elemanlı bir dizi ardından bu dizinin her elemanı içinde 6 elemanlık bir dizi tanımlamış oluruz.  Yani 2 boyut oluşturmuş oluruz.

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];

Dizilerin boyutlarınada göz attıktan sonra gelin isterseniz bir kaç metodunada bakalım.

Dizilerin Metotları

Array.Resize();

Resize metodu mevcut dizimizin eleman sayısını istediğimiz kadar arttırır. Bir örnekle bakalım bu olaya bir form üzerinde listbox textbox ve butonumuz olsun ve textbox a yazdığımız değer string bir diziye ve listbox a eklensin istiyorum. İlk etapta ne kadar değer girileceğini bilemiyeceğimizden önce 1 elemanlı bir dizi tanımlıyorum ve her eleman eklendiğinde dizi boyutunu arttırıyorum.

Array.Clear();

Dizimiz içersindeki değerleri temizlemek isteyebiliriz işte bu gibi durumlarda Array.Clear kullanıyoruz. Biraz önce yaptığımız proje üzerinde ufak değişikliklerle Clear metodunu inceleyelim.

Foreach Döngüsü

Daha önceki yazımızda bahsettiğimiz döngüler arasında bir tane daha vardı ama ona bu konunun sonunda değinmek daha mantıklı sanki.

Foreach döngümüz bir dizi veya kolaksiyonun her elemanı için yapısındaki kodları çalıştıran bir döngüdür.

foreach (<tip değişkeni > in <koleksiyon> ){

Yapılacak işlemler

}

Bilgiyle Kalın…
M.Zeki Osmancık

C# _ Döngüler _ For & While 490 448 mezo

C# _ Döngüler _ For & While


Merhaba arkadaşlar bu yazımızda C# programlama içersinde bulunan döngüleri sizlere anlatmaya çalışacağım. Bu yazının sonunda ardarda işlemleri nasıl kısa yolla yapabilirsiniz, for döngüsü ve while döngüsü ile ilgili bilgi sahibi olacaksınız. Haydi başlayalım… 😀
Döngüler programlarımızda ardarda yada sıralı şekilde yaptıracağımız işlemleri için kullanılır. Fazla kod ,zaman kaybı ve performans açısından yarar sağlarlar. Diyelim ki öğrenci kaydı yapabileceğimiz bir windows form tasarlıyoruz ve bu windows formu üzerinde combobox nesnemiz yer almakta yıl kısmının yanlış yazılmasını engellemek için biz girerek kişinin sadece seçme işlevini yerine getirmek istiyoruz. İlk aklımıza gelen ComboBox nesnemizin items özelliği üzerinden tüm bilgileri girmek oldu değilmi ?

İster items özelliğinden dolduralım istersek kod ile dolduralım yinede bu işlem bize inanılmaz vakit kaybına neden olacaktır. Peki bir kolay yolu yokmu bu işi yapmanın tabi ki var. Döngüler bu konuda bizlere yardımcı oluyorlar.   Yukarıda bahsettiğimiz işlem için sadece döngü kullanmamız yetecektir.

For Döngüsü

for (başlangıç; koşul;artım){

Yapılacak işler;

}

Belirtilen başlangıç değerinden itibaren koşul sağlanana kadar içine yazılan kod parçasını çalıştırır ve bize sıralı işlemlerimizi hızlıca yapmamızı sağlar. Buna göre yukardaki işlemimiz nasıl oluyor görelim.

Ne kadar kolay değilmi ? 😀

Peki bu for döngüsü içersinde bir erken geçiş sağlamak istersek o zaman ne yapmalıyız?

for (int i = 1950; i < 2010; i++){

if (i == 1965)

{

continue;

}

comboBox1.Items.Add(i.ToString());

}

Biraz önce ki doldurma işlemi sırasında bir koşul sağlanıyorsa o koşulun sağlandığı değeri atlayarak döngü devam eder. Yani burada i 1965 olduğunda o satırdaki işlemi atlayacak ve 1966 dan devam edecek

Continue ile oluşan işlemi anladıysak birde koşul sağlandığında döngü işlemine son veren bir kodumuz daha var :

Break

for (int i = 1950; i < 2010; i++){

if (i == 1965)

{

break;

}

comboBox1.Items.Add(i.ToString());

}

MessageBox.Show(“Döngü Sonlandırıldı.”);

Yine aynı işlem için break işlemi yapıldığı zaman koşul sağlanıyorsa döngüden çıkarak sadece 1965 e kadar olan sayıları ComboBox nesnesi üzerine ekler.

Return

Bir döngünün sonundaki erken geçişi sağlar koşul sağlanmıyorsa hiç bir işlem yapmadan çıkar.

for (int i = 1950; i < 2010; i++){

if (i == 1965)

{

return;

}

comboBox1.Items.Add(i.ToString());

}

MessageBox.Show(“Döngü Sonlandırıldı.”);

While Döngüsü

Bir başka döngü türü olan while bir koşul sağlanıyorken dönmeye devam eden döngü çeşididir. Koşul false ise döngü sona erer.

while(koşul){

Yapılacak işler;

}

Aynı örneğimizi While ile yaptığımızda bu kez biraz syntax değişiyor ama yaptığımız işlem aynı.

Koşulumuz sağlandığı sürece yani i 2010 dan küçük olduğu sürece işlemimizi sürdürdü ve yine aynı örneğimizdeki Combobox itemlerini ekledik.

While i en güzel anlatan örnek belkide Eşşek Sudan Gelinceye Kadar Dayak Yemek deyimi.

Hadi gelin bu örneği yapalım 😀

Do While Döngüsü

Diğer döngülerden farkı koşul sonda kontrol edilir. Buda döngünün en az 1 kere çalışacağı anlamına gelir.

Do{

Yapılacak işler;

} while (koşul);

Bilgiyle Kalın…
M.Zeki Osmancık

C# _ Karar Yapıları _ If-Else & Switch 522 236 mezo

C# _ Karar Yapıları _ If-Else & Switch


Gerçek hayatta bizlerin bazı kararlar almak zorunda kaldığımız gibi programımızada karar alma yeteneğini kazandırabiliriz çıkabilecek tüm sonuçları değerlendirerek ilgili işlemi yapabilecek duruma gelebilir. Kısacası programımıza düşünme yeteneği kazandırabiliriz.

If – Else Karar Yapısı

If..Else deyimi bir Boolean ifadeyi degerlendirerek program denetimi belirtilen deyim gruplarına geçirir. Basit bir örnek olarak tatile çıkmak istiyorsunuz ve mevcut paranız 500 lira. Afirmasında  1 haftalık tatil 900 lira   ,Bfirmasında 850 lira ,Cfirmasında 450 lira ,Dfirmasındada 300 lira bu 4 firma arasında seçim yapmak gerekirse ilk iki firmayı eledik bile. C ve D firmaları arasındaki seçimimizede orada yapacağımız harcamaları göz önünde bulundurarak değerlendirecek olursak en uygun D firması olacağına karar veririz. İf yapılarıda bu şekilde çalışır. İf karar blogları aşağıda belirtilen formatta yazılır.

Bir çok program ve web sitesinde gördüğümüz kullanıcı adı ve şifrenin doğru olduğuna karar verdiğimiz basit bir program yazalım.

Swicth – Case

Mantık olarak “if else” koşul yapısına benzer. Kendisine gönderilen parametreyi değerlendirir ve ona göre ayrılan kod bloğunu çalıştırır. Yani eleme yaparak parametrenin sahip olduğu değeri ile eşitlenen kod bloğunu çalıştırır.

switch(değişken)

{

case kosul1:

//kodlar bu panele gelecek

break;

case kosul2:

//kodlar bu panele gelecek

break;

case kosuln:

//kodlar bu panele gelecek

break;

default:

//eğer hiç bir koşul desteklenmiyorsa bu koşul gerçekleşecek

break;

}

Bilgisayarımızın saatini kontrol ederek günün çeşitli zamanlarında bize karşılama mesajı çıkartan bir uygulama yazalım

Bilgiyle Kalın…
M.Zeki Osmancık

Algoritma 503 345 mezo

Algoritma


Algoritma Nedir?

Algoritmalar bir işin nasıl yapıldığını adım adım hangi etaplardan geçerek gerçekleşeceğini gösteren bir çalışma planıdır aslında. Algoritmalar  programlama dili değildir  sadece programlama dillerine klavuz görevi gören bir yöntem dizisidir.Algoritmalar yazılı şekilde olabileceği gibi semboller dizilimi ilede  karşımıza çıkabilirler.

Algoritmalardaki yöntemler sırası

  • Veri Girişi
  • İşlem
  • Kararlar

Veri Girişi : Yapılan uygulamaların runtime kısmında kullanıcı tarafından girilecek olan verilerdir.

Kararlar: Karar ve kontrol yapıları algoritmanın akışını yönlendiren önemli kavramlardır. Girilen veya işlem sonucu elde edilen veriler kontrol edilerek algoritma istenilen yere yönlendirilir.

İşlem: Algoritmada belirtilen kararlar ve girilen veriler ile hangi işlemlerin gerçekleşeceğini belirtiğimiz yöntemlerdir.

Özellikleri

  • Girdi: Sıfır veya daha fazla değer dışarıdan verilmeli.
  • Çıktı: En azından bir değer üretilmeli.
  • Açıklık: Her işlem (komut) açık olmalı ve farklı anlamlar içermemeli.
  • Sonluluk: Her türlü olasılık için algoritma sonlu adımda bitmeli.
  • Etkinlik: Her komut kişinin kalem ve kağıt ile yürütebileceği kadar basit olmalıdır.

Akış Diagramları

Bu diagramlar daha anlaşılır bir  yapıya sahip olmaları için bazı semboller ile belirtilen algoritma yöntemidir.Akış diagramları farklı semboller yardımı ile hazırlanırlarşekilleri itibari ile anlaşılması kolay problem çözümünde

yardımcı bir yöntemdir. Şimdi bazı diagram şekillerini tanıyalım ve bir işlemin algoritmasını çizelim.

Çay Demleme İşleminin Algoritması

•      Kullanıcıdan su verilmesi beklenir.

•      Suyu ısıtma işlemi yapılır

•      Suyun kaynadığı kontrol edilir. Kaynamamışsa ısıtmaya devam eder

•      Demliğe çay konulur.

•      Kullanıcıdan alınan demleme bilgisi ile şimdiki zaman toplanır ve süre bulunur .

•      Şimdiki zaman küçükse çay demlenmeye devam eder.

•      Çayın demlendiği mesajla bildirilir.

Çay Demleme İşlemi Algoritma Diagramı

Bilgiyle Kalın…
M.Zeki Osmancık

C# _ Hatalar ve Giderilmeleri _ Try-Catch 353 238 mezo

C# _ Hatalar ve Giderilmeleri _ Try-Catch


Hata Nedir ?

Programcılar veya programı kullanacak olan  son kullanıcılar kimi zaman bazı kullanım yada mantıksal hatalar yapabilirler. Bu hatalar gözden kaçabilen mantıksal hatalar olabilir son kullanıcının programı kullanması sırasında veya test aşamasında karşımıza çıkabilir. İşte bu hataların giderilmesi hata çıktığı anda işlem kod bloğunu terk etmesi için işlemlerimizi try bloğu içersinde yazıyoruz bu blog içersinde bir hata meydana geldiğinde catch bloğu ile hata durumunda ne gibi bir işlem yapacağımızı belirtiyoruz.

Hatanın Yakalama

Örnek olarak iş yerimizde çalışan sarışın bir sekreterimiz için 2 sayıyı toplaması için çok basit bir hesap makinesi yazmış olalım. Sekreterimiz bu hesap makinesini kullanırken sayısal değerler kullanmak zorunda. Peki sayısal olmayan bir değer girdiğinde programın tepkisi ne olacaktır ?

Bu sorunu program içersinde hata kontrolü yaparak çözebiliriz. Eğer işlem bloğumuzda hata oluşursa hata yakalanacak işlemden çıkacak ve hata durumunda ne yapmasını istemişsek onu yapacak.

Finally

Birde programlarımızda hata olsun yada olmasın çalışmasını istediğimiz bazı kodlar yapılmasını istediğimiz işlemler olacaktır. Bunlar hata çıkması durumunda bile çalışacak olan kod bloklarıdır. Finally blogu içersinde yer alan kodlar her ne hata olursa olsun çalışacaktır.

Bilgiyle Kalın…
M.Zeki Osmancık

C# _ Değişkenler ve Veri Tipleri 507 316 mezo

C# _ Değişkenler ve Veri Tipleri


Merhaba arkadaşlar bu yazımda sizlere değişkenler denilen yapıları anlatmaya çalışacağım. Haydi başlayalım 😉

Değişken nedir nasıl tanımlanır?
Bir program çalıştırırken tüm veriler geçici olarak hafızada tutulur. Değişkenler bu verilerin isimlendirilmesi işlemidir. Değişken mantığı günlük yaşamdada çok kullanılan bir mantıktır aslında. Aklımızdan iki sayı tutmamız istendiğinde ve bu sayılarla alakalı işlem yapmamız istendiğinde aslında isimlendirecek olursak sayi1 ve sayi2 olarak o sayıları aklımızda tutuyoruz. İşte bu sayi1 ve sayi2 sadece o an geçiçi bir süre içinde işlem yapmamız için kafamızda ürettiğimiz değişkenlerdir. Programlamadada geçiçi olarak veri tutmak istediğimizde değişkenleri kullanırız.
<veri tipi> <değişken adı>; şeklinde tanımlanırlar.
string isim;
int rakam;
Tanımlama Kuralları
•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.
•Değişken isimlerinde Türkçe karakter kullanılırsa, farklı dil seçenekli işletim sistemlerinde çalışma anında hata üretecektir.

Veri Tipleri

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.

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. İki tip veri tipi mevcuttur Değer Tipleri (Value Type)  ve Referans Tipleri (Reference Type)

Değer Tipleri (Value Type)

Değer tipleri veriyi direk olarak bellek bölgesinden alırlar

Referans Tipleri (Reference Type)


Visual Studio 2008 Genel Bir Bakış 500 339 mezo

Visual Studio 2008 Genel Bir Bakış


Merhaba Arkadaşlar.

Yazıya başlamadan önce sizleri bir terim ile alakalı bilgilendirmek istiyorum bu terim ; IDE  sakın harddisklerdeki bağlantı türü ile karıştırmayın 😉 IDE = Integrated Development Environment yani Entegrasyonlu Geliştirme Platformu programların gelişme aşamalarının gerçekleştiği platformlardır. Farklı diller için farklı IDE ler geliştirilmiştir.

Biz bu IDE ler içersinde en gelişmiş olanını kullanacağımız için bende bu gelişmiş IDE yi sizlere basitçe tanıtmak istedim. Kullanacağımız IDE :

Visual Studio

Teknolojisini basit cümlelerle anlatmak zor elbette ama özetlemek gerekirse çok gelimiş özelliklere ve yardımcı araçlara sahip bir IDE dir. Sadece tek bir dil için geliştirilmemiştir bir önceki yazımızda bahsettiğimiz  .Net uyumlu tüm programlama dillerinin desteklendiği ve aynı projelerde dahi çalıştırılabildiği bir ortamdır.  Program geliştirenlere kullanışlı ve kolay bir ortam sağlayarak uygulamaların daha işlevsel olması konusunda bizlere destek sağlar.

Peki ne var bu Visual Studio nun içersinde.

Visual Studio’yu genel görünüm olarak 4 bölümde inceleyebiliriz;

*Çalışma Sayfaları

*Araç Çubukları

*Menüler

*Pencereler

Visual Studio programımızı ilk açtığımızda bizi Başlangıç sayfası karşılıyor ve bizlere (eğer internete bağlıysak) MSDN den çeşitli gelişme ve haberleri sunuyor. Visual studio içersinde web sayfalarıda açabiliyorsunuz bu arada. Start Page başlangıç sayfamızın bulunduğu kısma daha sonra projelerimizi yazacağımız sayfalarda geliyor işte bu alana Çalışma Sayfaları diyoruz. Sekmeler halinde pencerelerle çalışabileceğimiz bu çalışma alanı hem form veya web sayfaları tasarımlarında hemde kod yazarken çokça kullanacağımız bir alan olacaktır.

İkinci olarak çoğu programda gelenek haline gelmiş olan Araç Çubuklarımız var. Bu araç çubukları menü komutları için görsel kısayollar sunarak işimizi kolaylaştırırlar. Benzer işlemler aynı araç çubuğu üzerinde gruplanarak kullanım dahada işlevsel hale gelir. Yada istersek biz bu araç çubukları üzerindeki görsel kısayolları değiştirerek kişiselleştirebiliriz de.

Üçüncü olarak hemen hemen her programda  görmeye ve kullanmaya aşina olduğumuz Menüler aslında tüm programlarda benzer niteliklerdedir. Çeşitli komut ve yardımcı pencerelere ulaşmamızda bize kolaylık  sağlarlar.

Menülerde bulunan temel başlıkları kısaca tanıyalım :

File: Adındanda anlaşılacağı gibi dosya işlemlerinin yapıldığı menüdür yeni proje yada varolan projelerin açılması gibi işlemleri bu menü seçeneği içersinde bulunan seçeneklerden yönetebiliriz.

Edit : Tüm yazı ile ilgili düzenleme işlemlerinin yer aldığı menüdür. Kopyala Kes Yapıştır Bul Değiştir gibi seçenekleri mevcuttur.

Project: Üzerinde çalıştığımız projenin özelliklerinin yönetilebileceği referans ve dosya ekleme çıkarma gibi işlemlerin var olduğu menüdür.

Built: Geliştirdiğimiz projelerin çalıştırılmak üzere içersinde bulunan komutların derlenmesi için gereken komutlara ulaşabildiğimiz menüdür.

Debug : Adındanda anlaşılacağı gibi Hata bulma ve ayıklama ile ilgili tüm seçeneklerin bulunduğu menüdür.

Tools : Visual Studio ile birlikte yüklenen yardımcı araçların bulunduğu menüdür. Ayrıca Visual Studio ile alakalı ayarların yapılabildiği Options seçeneğide bu menü  altında yer alır.

Ve Help menüsü sanırım bunun açıklamasına gerek yoktur. =)

Visual Studio içersindeki yolculuğumuza devam edelim çalışma sayfaları araç çubukları menüler derken son olarak belirttiğimiz Pencereler  seçeneğine geldik

Dördüncü ve son olarak bahsedeceğimiz Pencerelerden kasıt ise Visual studio içersinde uygulama geliştirme aşamasında sık sık kullanılabilecek olan birçok elemanı bir araya getiren yada durum belirten pencerelerdir.

Bu pencerelerden çok kullanılan bir kaçını tanımlamak gerekirse:

Properties: Projedeki tüm öğelerin özelliklerinin yer aldığı bir penceredir. İstenen değişiklikleri yine bu pencere üzerinden gerçekleştirmekde mümkündür.

ToolBox :Projelerde kullanılan çeşitli kontrollerin listelendiği penceredir. Buradaki öğeler sekmeler içersinde gruplanmıştır.

Solution Explorer : Projeler bir solution (çözüm) içersinde yer açılır. Bir çözüm içersine farklı dilde ve tipte projeler dahil edilebilir.Bu pencere solution yapısını gösterir ve ilgili işlemlerin yapılmasına olanak sağlar.

Uygulama geliştirirken en çok kullanacağımız pencereler olacaktır.

Visual Studio yu basitçe olsa tanımış olduk geliştirme ortamını etkin bir şekilde kullanmak önemlidir. Bu yüzden bu yazının klavuzluğunda  sizde biraz merak ile Visual Studio içersinde ne var ne yok karıştırarakda bulabilirsiniz.

Görüşmek Dileğiyle.

Microsoft .Net ‘ e Giriş 547 203 mezo

Microsoft .Net ‘ e Giriş

Merhaba arkadaşlar programlama ile alakalı ilk makaleme tabiki işin en başından başlamam gerekiyor.  Elimden geldiğince size yararlı bilgiler sunmaya çalışacağım.Programlama dilleri ile ilgileniyorsak bu kelimeyi cok duymussunuzdur.
.NET
Peki nedir bu .Net denilen şey ?Tek başına tanımlanamayacak bir sistemler bütünüdür aslında; Microsoft tarafından geliştirilen  farklı teknoloji , araç ve programlama dillerinin bir arada, tek bir iskelet üzerinde çalışmasına olanak veren uygulama geliştirme platformudur.
Uygulama derken neyi kastettim peki , aslında o kadar geniş bir kavram ki .Net platformunda uygulama diyorsak eğer  aklınıza gelebilecek her türlü uygulamayı bu kelime içersine sığdırabiliriz. Web ,Windows,Mobile vb bir çok uygulamayı geliştirmemize olanak tanır .
.Net güzel bir şeymiş tanımını duyunca heyecanlandık . Nasıl çalışır peki ? Nasıl bu kadar geniş bir çerçevede programcılara özgürlük sunabilir. Gelin .Net içersinde kısa bir yolculuk yapalım:
Öncelikle .Net ile uygulama geliştirebilmemiz için onun kaynağını bilgisayarımıza yüklemiş olmamız gerekiyor.   BCL (Base Class Library ) Temel Sınıf Kütüphanesi  adı verilen bu kütüphane uygulama geliştirmek için gerekli olan arayüz ,sınıf ,fonksiyonları barındırır bizlerde bu arayüz sınıf ve fonksiyonları kullanalarak uygulamalarımızı kolayca geliştirebiliriz.
.Net çok güzel  ve kütüphane olmak zorunda bunları öğrendik   peki asıl soru geliyor hangi programlama dilini kullanmak gerekiyor?
Microsoft bu soruya bizim için çok radikal bir biçimde karar vermiş bile .Net platformunu destekleyen herhangi bir programlama dili cevabı sanırım bizim için yeterli . Her .Net uyumlu dilin kendine özgü bir derleyicisi vardır. Herhangi bir dilde yazılmış uygulama derlendiğinde o dilin derleyicisi kodları ortak bir dile çevirir.
Oluşan bu ortak dilin adı ise MSIL (Microsoft Intermediate Language) yani Microsoft un Ortak Dili . .Net platformu destekli programlama dillerinden herhangi biri veya birden fazlası ile bir uygulama geliştirdiğimizde o dilin derleyicileri  kodları alıp MSIL e çevirerek hepsinin aynı anda makine diline çevrilmesini sağlar.
Buraya kadar geldik yolculuğumuz sürüyor uygulamamızı yazdık derledik  MSIL e çevirdik daha sonra bu kodların işletim sistemine ulaşması gerekiyor yani makine kodlarına çevrilmesi gerekiyor bu işide
CLR devralıyor ve MSIL kodlarımızı alıp makine koduna çeviriyor ve işletim sistemine iletiyor.
Bu işlemi yaparken JIT (Just In Time) derleme yöntemini kullanarak görevini tamamlıyor.
Böylelikle  .Net platformunda geliştirdiğimiz bir uygulamamızın hangi devrelerden geçerek karşımıza geldiğini ve azda olsa .Net platformunun mantığını umarım anlayabilmişsinizdir.
Sonraki Yazılarda Görüşmek Üzere…

    Join our Newsletter

    We'll send you newsletters with news, tips & tricks. No spams here.