console uygulama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
console uygulama etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

4 Ağustos 2013 Pazar

C# : Metoda Diziden Veri Alma


          Metotlarda dışarıdan dizi alınarak işlem yapılması gerekebilir. Fakat gerek metot yazımında gerekse bu metodun kullanımında kullanılacak dizinin yazımı normal veri türlerinin yazımına göre farklılık gösterecektir.

         Öncelikle metot üzerinde dizinin kullanımına bakacak olursak metotta kullanılacak diziyi normalde kod kısmında hangi veri türünde olacağını belirterek tanımlıyorsak aynısını burada da yapacağız.


          İçinde dizi içeren metotların kullanımında da sadece dışarıdan alınacak dizinin ismi yazılır.


          Örnek üzerinde bunu göstermemiz anlaşılması bakımında daha verimli olacaktır.

          Öncelikle bir dizinin içerisindeki elemanları karıştıran yani yer değiştiren bir metot yazıyoruz.


İpucu: Dizilerimizi metot içerisinde yer alan for döngüsündeki kullanımı ile karıştırabiliriz. Öncelikle dizi içerisinde var olan değerimizi bir a değişkende tutuyoruz. Ardından bu değişkenimize dizi boyutu neyse o sayıya göre rastgele bir indeks seçecek ve dizimiz o indeksteki diziyi öncesinde atama yaptığımız belirli indeksteki aynı diziye atıyoruz. Tabi seçilen bu rastgele sayımızı da farklı bir b değişkeninde tutuyoruz. b değişkenimize atadığımız sayıyı dizimizin indeksi olarak kullanacağız ve b indeksli dizimize a değişkenimizdeki değeri atayarak takas işlemi yani belirli aynı iki dizin değerinin yer değiştirmesi sağlanacaktır.

          Daha sonra konsol ile kullanıcının 5 tane sayı girmesini istiyoruz ve bu sayıları oluşturduğumuz int türünde bir diziye aktarıyoruz.. Oluşturduğumuz metodu yazarak bu metodun parametresini de girdiğimiz sayıların dizisinin adını kullanacağız. foreach döngüsü ile de karıştırdığımız dizideki değerleri görmek için konsol ekranına yazdırıyoruz.

Kodun Tamamı


Ekran Çıktısı


C# : foreach Kullanımı


         Yazdığımız programlarda yaptırdığımız işlemlerden dolayı dizilerde tuttuğumuz verilerin tümünü kullanıcıya aktarma gereği duyabiliriz. Bu yüzden dizilerdeki tüm verileri sıralamak için foreach kullanılmaktadır. foreach komutu kullanmadan da verilerin ekrana ya da farklı nesnelere aktarılarak sıralanması da mümkündür. Çeşitli program dillerinde sık yapılan işlemler gerek metot gerekse farklı bir özellik olarak sınıflarına eklenmiştir. foreach ise dizelerdeki verilerin sıralanması için geliştirilmiş bir döngüdür.

         foreach yapısının karşımıza çıkan aşağıdaki şekilde bir yapısı vardır:


          var: Yazdıracağımız dizinin hangi veri türünde olursa olsun yazdırılması için kullanılır fakat kullandığımız dizinin türü biliniyorsa var yerine onu belirtmek daha doğru olacaktır.
          collection: Kullanacağımız dizinin adını yazarak kullanılacak dizi belirtilir.
          item: Kullanacağımız dizinin foreach döngüsü içerisinde kullanımında temsili bir isim vermemiz gerekmektedir. 

Örnek Kod Parçası:

          Bu örnek kullanımında string türünde sehir dizinindeki verilerin console üzerinde alt alta yazılmasını sağlayacaktır.

Örnek Kullanımı:


Ekran Çıktısı




28 Temmuz 2013 Pazar

C# : Küçük - Büyük Harf Kontrolü Yapma


          char türünde tanımlanan değişkenlere yalnız tek bir karakteri atayabiliriz. Biz bu değişken türünü klavyeden girilen harfin büyük mü yoksa küçük harf mi olduğunu anlamak için kullanacağız.

          Öncelikle kontrolü metot tanımlayarak yapacağız. Metodumuzun veri türünü belirlemek için metotta yapacağımız işleme bakmak gerek. Metot büyük ya da küçük harf duyarlılığını kontrol edeceği için iki durum olacaktır. Bunun için bool veri türünü kullanacağız. bool türü true-false;1-0 şeklinde değerler geri döndüren veri tipidir.


          Ardından da kullanıcıdan konsol üzerine kontrol için tek bir karakter girmesini sağlayacak bir mesaj yazdırıp metodun çalışmasını sağlıyoruz. Metodun döndürdüğü değere göre de if yapısını kullanarak küçük mü yoksa büyük harf mi girdiğini gösteren bir mesaj yazdırıyoruz.

Ekran Görüntüsü


Kodun Sayfası





17 Temmuz 2013 Çarşamba

C de Bankamatik Para Ayrıştırma Programı

Bu programdaki amacımız; kullanıcının ATM den para çektiğini varsayarak paranın en az kağıt kullanacak şekilde kişiye ödemenin yapılmasını sağlamaktır.

Öncelikle kullanıcıdan çekmek istediği para miktarını girmesini istiyoruz ve parayı parçalamaya başlıyoruz. Tabi ki parçalamadan önce girilen miktarı kontrol etmemiz gerekiyor. Eğer kullanıcı 10’ un katlarında bir miktar girmezse gerekli bildirimi ekrana yazdırmamız lazım. Kullanıcın 10’un katlarında bir miktar girdiğini varsayarsak; paranın içinde kaç adet 200 TL olduğunu bulmalıyız ilk önce. Bunu yaparken de parayı 200’e bölüp bölüm sayısını tutmalıyız, eğer bölüm sayısı 0-1 arasındaysa 200 lira içermiyordur demektir.200 liranın araştırmasından sonra kalan parayı bulmalıyız. Bunun için de ilk girilen para miktarının 200 liraya göre modunu almalıyız. Kalan miktarı da bulduktan sonra aynı işlemleri sırasıyla 100,50,20 ve 10 TL için yapmalıyız. En son ise paranın nasıl en az kağıt para kullanılarak verilmesi gerektiğini kullanıcıya bildirmeliyiz. 

Programın Kodu:  

Programın Ekran Çıktıları:




16 Temmuz 2013 Salı

C de dosya okuma işlemleri

Örnek: Verilen bir text'teki satır,kelime ve cümle sayılarının bulunması

Kod Açıklaması:

       Programda öncelikle bir giriş.txt isimli bir dosya oluşturduk. Daha sonra bir struct oluşturup içinde kelime, cümle, satır ve linked kullanımı için next adlı struct oluşturduk. Bu struct ı ise say adlı bir değişken ile p adlı bir pointer la devam ettirdik. Her linked kullanımı her paragraf için ayrı olmuştur. Yani bir diğer paragrafı incelemek için konsola p=p->next komutu vererek diğer alanımıza geçtik. Paragraflardaki cümle sayımlarını ‘.’ karakterlerini sayarak rahatlıkla bulduk. Daha sonra kelime sayılarını ise boşluk sayısından ve satır indiren ‘enter’ komutlarının yardımıyla bulduk. Yöntemimiz her satırda boşluk sayısının bir fazlası kadar kelime olmasıdır. Ayrıca alt satıra geçmek de bir boşluk bırakmak anlamına geldiği için bunu da göz önüne almayı unutmadık. Satır sayılarını da paragraftaki ‘\n’ karakterini araştırıp bulduk. Paragraf sayılarını bulmak için de üst üste olan iki tane ‘\n’ karakterlerini araştırarak saydık. Paragraflardaki non-alpha kelimelerini bulmak için bir yöntem kullandım fakat kodun çıkmaza girmesi sonucu o kısmını ekleyemedim. Yöntemi kısaca açıklamak istersek:
1-Öncelikle iki adet dizi gerekli(a[] ve b[] şeklinde). İkisinin de boyutu paragraflardaki boşluk sayısı kadar olmalı.
2-Dosyamızdaki karakterleri tek tek okurken her boşluktan sonra a[i] dizisinin indisi bir artırılmalı sonucu indisine eşitlenmeli.
3-Bu işlemler yapılırken ise boşluk karakteri bulunana kadar alfabetik olmayan karakter bulununca b[i] dizisinin kendisi, boşluk karakteri bulununca ise b[i] dizisinin indisi bir arttırılıp aynı zamanda da yeni dizi sıfırlanır.
4- Değerlendirmeyi ise dizilerin indisleri aynı iken b dizisi sıfırdan farklı ise bu alfabetik olmayan kelime olduğu anlamına geldiğini düşünüp ona göre sayım yaparız.

Örneğin Kodu:

#include <stdio.h>
#include <stdlib.h>
struct SAYAC{
       int kelime;
       int satir;
       int bosluk;
       int cumle;
       int nonalpha;
       struct SAYAC *next;
};
int main(int argc, char *argv[])
{FILE *deneme;
struct SAYAC *p;
struct SAYAC say={0,0,0,0,0,NULL};
p=&say;
int paragraf,i,x,topcumle=0,topkelime=0,topsatir=0;
p->satir=0;
p->cumle=0;
p->bosluk=0;
int karakter;
deneme=fopen("giris.txt","r");
if(deneme==NULL)
{                 printf("Dosya acılırken hata olustu!!\n Programdan cikiliyor!!");
                 exit(1);
}

putchar(karakter=getc(deneme));                   
while(!feof(deneme))
{
                    if(karakter=='.'){
                                      p->cumle++;
                                      } 
                    if(karakter==' '){
                                      p->bosluk++;
                                      } 
                    if(karakter=='\n'){
                                       paragraf++;
                    if(paragraf==2)
                    {
                                   p->next=(struct SAYAC*)calloc(1,sizeof(struct SAYAC));
                                   p=p->next;
                                   p->satir=0;
                                   p->cumle=0;
                                   p->kelime=0;
                                   p->bosluk=0;
                    
                    } 
                    else
                    { 
                                       p->satir++;
                    }
                    } 
                    else{
                                      paragraf=0;
                    } 
                                        
                    putchar(karakter=getc(deneme));
}
p=&say;
printf("\n\n1. paragraf \n");
p->bosluk=p->bosluk+p->satir-1;
p->kelime=p->bosluk+1;
topsatir=p->satir;
topcumle=p->cumle;
topkelime=p->kelime;
 printf("\nSatir: %d",p->satir);
              printf("\nKelime sayisi: %d\n",p->kelime);
              printf("Cumle sayisi: %d\n\n",p->cumle);
x=2;
p=p->next;
while(p!='\0')
{             printf("%d. paragraf\n",x);
              p->bosluk=p->bosluk+p->satir;
              p->kelime=p->bosluk;
              topsatir=p->satir+topsatir;
              topcumle=p->cumle+topcumle;
              topkelime=p->kelime+topkelime;
              printf("\nSatir: %d",p->satir);
              printf("\nKelime sayisi: %d\n",p->kelime);
              printf("Cumle sayisi: %d\n\n",p->cumle);
              p=p->next;
              x++;
}
printf("TOPLAM\nSatir: %d\nKelime: %d\nCumle: %d\n",topsatir,topkelime,topcumle);
fclose(deneme);
system("PAUSE");  
  return 0;
}

Örnek ve Ekran Çıktısı:






9 Temmuz 2013 Salı

C# : Çarpım Tablosu


Şekilde görülen 1’den 10’lara kadar giden bir çarpım tablosunu yapmak için iç içe iki döngü kurmamız gerektiğinin farkına varmalıyız. Dıştaki birinci döngü 1’ler,2’ler, vs. grupları için kullanılacaktır. İçteki döngü de hangi sayı grubundaysa o sayının 1’den başlayıp 10’a kadar olan her bir sayıyı temsil edecektir.


Bunu kod üzerinde görecek olursak:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            int carpim=1;
            for (int i = 1; i <= 10; i++)
            {
                for (int j = 1; j <= 10; j++)
                {
                    carpim = i * j;
                    Console.WriteLine("{0}*{1}={2}", i, j, carpim);
                }
                Console.WriteLine("............");
            }
            Console.ReadKey();
        }
    }
}