28 Ekim 2013 Pazartesi

C de Play Fair Şifrelemesi

Bu programda PLAY FAİR şifrelemesinin C kodunu yazacağız.

Kodun Kısa Açıklaması:


Kullanıcıdan anahtar metnini istiyoruz ve metnin uzunluğunu hesaplıyoruz. Bu programda öteleme işlemlerini kullanacağımız için her dizinin bitiş indisini tutuyoruz. Anahtarı aldıktan sonra içinde tekrar eden harfleri siliyoruz. Bu silme işlemini de bahsettiğimiz gibi sola bir kere öteleme yaparak hallediyoruz. Tekrarları sildikten sonra bu dizinin harflerini başta tanımladığımız alfabe dizisinden çıkartıyoruz. Tekrarları sildiğimiz dizinin elemanlarını alfabe dizisinin başına kopyalamamız gerekiyor. Bunun için de alfabe dizisini sağa doğru ötelememiz gerekiyor(tekrarsız kalan harf sayısı kadar). Alfabe dizisinin başına gerekli kopyalamaları yaptıktan sonra bu diziyi tabloya atıyoruz.

Kullanıcıdan şifrelenecek metni girmesini istiyoruz ve ikili olarak kontrole başlıyoruz. İkililerden aynı karakter olan varsa arasına yine öteleme işlemi yaparak ‘X’ karakterini yerleştiriyoruz. Tüm diziye bunu uyguladıktan sonra eğer en son eleman tek kalmışsa dizi sonuna da ‘Z’ karakterini ekliyoruz. Fakat bu son eleman da ‘Z’ ise programımızın sonsuz döngüye girmesini engellemek için ‘X’ karakterini ekliyoruz. Şifreleme işlemine geldiğinde ise her ikili karakterleri bir anda tabloda arıyoruz. Bulduğumuz karakterlerin adreslerini tablo adlı 2x2 lik matriste tutuyoruz. Örneğin HC ikilisini arıyoruz ve bulduğumuzda H karakterinin satır numarasını tutac[0][0] ’a H karakterinin sutun numarasını  tutac[0][1] ‘e ;  C karakterinin satır numarasını tutac[1][0] ’a C karakterinin sutun numarasını  tutac[1][1] ‘e  kaydediyoruz. Daha sonra bunların aynı satırda-sütunda olup olmadığına bu tutaç matrisini kullanarak bakıyoruz ve hemen şifrelenmiş şeklini şifrelenmiş string’i tutacak diziye atıyoruz. Bu işlemleri şifrelenecek string’in sonuna kadar yapıyoruz ve şifreyi ekrana yazdırıyoruz.

Kodun Ayrıntılı Açıklaması:


     Problemin çözüm kısmında öncelikle kullanıcıdan anahtar olacak metni büyük harflerle girmesini istiyoruz ve strlen fonksiyonunu kullanarak girilen dizinin son karakterinin indisini buluyoruz. Daha sonra ilk işimiz girilen bu anahtardaki tekrar eden harfleri çıkartmaktır. Bunu da bir while döngüsü kullanarak yapıyoruz. While döngüsünde aynı harflerin olup olmadığına bakıyoruz. Eğer aynı harfler varsa ikinci olarak bulunan harfi silmemiz gerekiyor. Bu işlemi de o harfin olduğu yere bir kere öteleyerek yapıyoruz. Burada ötelemeden sonra i değişkenini bir azaltmamızın sebebi sildiğimiz harfin üstüne aynı harf geldiği zaman tekrar silmesi gerektiğidir.

     Bahsettiğim başa dönme olayından dolayı bu işlemleri en başta for ile değil de while ile yaptık çünkü for döngüsündeki i değişkenine müdahale etmemiz gerekecekti ve for döngüsünde bu azaltma işlemini yapmak hiç sağlıklı değildir.

     Anahtar dizimizdeki tekrarlı harfleri çıkarttıktan sonra geriye kalan harfleri alfabe dizisinden çıkartmamız gerekiyor çünkü tablomuza alfabede kalan harfleri sırayla ekleyeceğiz.
Tabloya ekleyeceğimiz harfleri alfabe dizisinden alacağız. Bu yüzden sırayla, önce tekrar eden harfleri çıkarttığımız dizideki harfleri alfabe dizisine almalıyız. Bunu da yapmak için öncelikle alfabeden sildiğimiz harf kadar sağa öteleme yapmalıyız ki alfabe dizisinin başına tekrarsız harfleri ekleyebilelim.

     Öteleme işlemini yaptıktan sonra anahtar dizisinde kalan harfleri sırayla alfabe dizisine atıyoruz. Artık alfabe dizisini tabloya atarak şifre metinini kullanıcıdan istiyoruz.

     Bu bölümde öncelikle girilen string’i ikili parçalara ayırıp aynı harf ikililerinin olup olmadığına bakıyoruz. Eğer böyle ikililer varsa o ikililerin arasına ‘X’ karakterini yerleştiriyoruz.  Bu işlemi dizinin sonuna kadar yapıyoruz. Bu işlemleri tamamladıktan sonra eğer en sonda tek karakter kaldıysa onu  ikili yapmak için string’in sonuna ‘Z’ ekliyoruz ve dizinin uzunluğunu bir arttırıyoruz. Eğer son eleman da ‘Z’ ise dizinin sonuna sonsuz döngüyü engellemek için ‘X’ karakterini ekleriz.  Dizilerde son elemanı tutmaktaki amaç öteleme yaptığımız zaman kalan elemanların da diziye dâhil olduğu fakat kullanılmadığından dolayı dizinin asıl son elemanını bulabilmemiz. Görsel amaçlı olarak kullanıcıya burada bir de şifrelenecek string’in son halini gösteriyoruz.

     En son olarak geriye string’i şifrelemek kalıyor. İ değişkenini 0’dan dizi uzunluğuna kadar ikişer olarak arttırıyoruz. Bunu yapmamızdaki amaç her ikilileri bir adımda bulacağımız için teker teker gitmeye gerek kalmamasıdır. Tutaç adlı 2x2 lik matrisimiz bize bulunan harflerin tablodaki indislerini gösterecektir.

Örneğin:

2
4
1
3




     Yukarıdaki tablo bulunan birinci harfin satır sayısının 2 Sütun sayısının 4 olduğunu, ikinci harfin de satır sayısının 1 sütun sayısının 3 olduğunu gösteriyor.

     Programın devamında24’e kadar giden bir t değişkeni tanımladık. Bu bize bulunduğumuz satır ve sütunu verecek. Eğer burada for döngüsü kullansaydık her eleman için 25 elemanı da kontrol etmek zorunda kalacaktık. Örneğin t=13 durumunda satır sayısını 13/5 den 2, sütun sayısını da 13 (mod5 )‘ten 3 olarak bulacağız. Şifrelenecek iki harfin de Satır ve sütun numaralarını bulduktan sonra aynı satır-sütunda olduğuna ya da olmadığına bakıyoruz. Eğer aynı satırdalarsa yanlarındaki, aynı sütundalarsa altlarındaki, ikisi de değilse köşelerindeki elemanları alıyoruz. Bunu tüm stringi dolaşarak yapıyoruz ve bulduğumuz her şifreli harfleri şifre için tanımladığımız diziye atıyoruz. En son da şifrelenmiş string’i ekrana yazdırıyoruz ve programımızı bitiriyoruz. 

Programın Kaynak Kodu:







#include <stdio.h>
#include <stdlib.h>

int main() {
	char tablo[5][5];
	char anahtar[25];//GİRİLECEK ANAHTAR İÇİN KULLANILACAK DİZİ
	char sifrelenmis_dizi[25];//ŞİFRELENEN HARFLERİN YAZILACAĞI DİZİ
	int tutac[2][2];//TABLODA ARANIP-BULUNAN 2 HARFİN ADRESLERİNİN TUTULACAĞI DİZİ
	char alfabe[25]={'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','R','S','T','U','X','V','W','Y','Z'};
	char sifrelenecek_dizi[30];//ŞİFRELENMEK İÇİN GİRİLEN DİZİ
	int i,j,k,t,indis;
	int anahtar_dizi_sonu;//ANAHTAR DİZİSİNİN SON İNDİSİNİ TUTAN DEĞİŞKEN
	int alfabe_sonu=24;
	int sifrelenecek_dizi_uzunlugu;
	int sifre_onay=0;
	
	printf("Lutfen anahtar metnini buyuk harflerle giriniz !!\n");
	scanf("%s",&anahtar);
	anahtar_dizi_sonu=strlen(anahtar)-1;
	i=1;
	while(i<=anahtar_dizi_sonu){
		j=0;
				while(anahtar[j]!=anahtar[i] && j<i){
					j++;
				}
				if(j!=i){
						for(k=i;k<anahtar_dizi_sonu;k++){
							anahtar[k]=anahtar[k+1];
						}
						anahtar_dizi_sonu--;
						i--; 
				}
		i++;
	}//AYNI HARFLER BULUNUP DİZİDEN ÇIKARTILIYOR
	for(i=0;i<=anahtar_dizi_sonu;i++){
		j=0;
			while(anahtar[i]!=alfabe[j] ){
				j++;
			}
				for(k=j;k<alfabe_sonu;k++){
					alfabe[k]=alfabe[k+1];
				}
					alfabe_sonu--;
	}//GİRDİĞİMİZ ANAHTARDAKİ HARFLER ALFABEDEN ÇIKARTILIYOR	
	for(i=alfabe_sonu;i>=0;i--)
	{
		alfabe[i+anahtar_dizi_sonu+1]=alfabe[i];
	}//SİLİNEN HARFLER KADAR ALFABE DİZİSİNİ SAĞA ÖTELİYORUZ VE ANAHTARDAKİ HARFLERE YER AÇIYORUZ
	
	for(i=0;i<=anahtar_dizi_sonu;i++){
		alfabe[i]=anahtar[i];
	}//ALFABE DİZİSİNDE AÇTIGIMIZ YERLERE TEKRARSIZ ANAHTAR HARFLERİMİZİ YERLEŞTİRİYORUZ
	printf("\nGirdiginiz anahtarin tekrarsiz harfli formati asagidaki gibidir:\n\n");
	for(i=0;i<=anahtar_dizi_sonu;i++){
		printf("%c",anahtar[i]);
	}
	strcpy(tablo,alfabe);//ALFABE DİZİMİZİ TABLOYA YERLEŞTİRİYORUZ
	printf("\n\nAnahtar yerlestirilmis tablo asagidaki gibidir!!\n\n");
	for(i=0;i<5;i++)
	{
		for(j=0;j<5;j++){
			printf("%c ",tablo[i][j]);
		}
			printf("\n");
	}
	
	
		printf("\nLutfen sifrelenecek metni giriniz!!\n");
		scanf("%s",&sifrelenecek_dizi);
		sifrelenecek_dizi_uzunlugu=strlen(sifrelenecek_dizi);
		indis=0;
		while(indis<sifrelenecek_dizi_uzunlugu){
				if(sifrelenecek_dizi[indis]==sifrelenecek_dizi[indis+1]){
					for(j=strlen(sifrelenecek_dizi)-1;j>indis;j--){
						sifrelenecek_dizi[j+1]=sifrelenecek_dizi[j];
					}
							sifrelenecek_dizi_uzunlugu++;
							sifrelenecek_dizi[indis+1]='X';
		  		}
				else{
					indis=indis+2;
	        	}
		}//AYNI HARF OLAN İKİLİLER VARSA ARAYA 'X' YERLEŞTİRİYORUZ
		
		
			if(sifrelenecek_dizi_uzunlugu%2==1){
				if(sifrelenecek_dizi[sifrelenecek_dizi_uzunlugu-1]=='Z'){
					sifrelenecek_dizi[sifrelenecek_dizi_uzunlugu]='X';
					sifrelenecek_dizi_uzunlugu++;	
				}//EN SON HARF 'Z' İSE SONUNA 'X' EKLİYORUZ
				else{
					sifrelenecek_dizi[sifrelenecek_dizi_uzunlugu]='Z';
					sifrelenecek_dizi_uzunlugu++;	
				}//EN SON HARF TEK KALMIŞSA SONUNA 'Z' EKLİYORUZ
						
			}
		
    
		printf("\nGirdiginiz metnin sifrelenmeye uygun son hali :\n\n");
		for(i=0;i<sifrelenecek_dizi_uzunlugu;i++){
				if(i%2==0&&i!=0){
						printf("-");
				}
				printf("%c",sifrelenecek_dizi[i]);
		}
		printf("\n\n ***ACIKLAMALAR***\n");
		
		for(i=0;i<sifrelenecek_dizi_uzunlugu;i=i+2){
				for(k=i;k<i+2;k++){
					t=0;
						while(sifrelenecek_dizi[k]!=tablo[t/5][t%5]){
								t++;
				   		}
			    		tutac[k%2][0]=t/5;
			    		tutac[k%2][1]=t%5;
				}
			if(tutac[0][0]==tutac[1][0]){
				sifrelenmis_dizi[i]=tablo[tutac[0][0]][(tutac[0][1]+1)%5];
				sifrelenmis_dizi[i+1]=tablo[tutac[1][0]][(tutac[1][1]+1)%5];
	printf("\n%c ve %c ayni satirdadirlar!!\n",tablo[tutac[0][0]][tutac[0][1]],tablo[tutac[1][0]][tutac[1][1]]);
			}//AYNI SATIRDALARSA
			else{
				if(tutac[0][1]==tutac[1][1]){
				
				sifrelenmis_dizi[i]=tablo[(tutac[0][0]+1)%5][tutac[0][1]];
				sifrelenmis_dizi[i+1]=tablo[(tutac[1][0]+1)%5][tutac[1][1]];
       printf("\n%c ve %c ayni sutundadirlar!!\n",tablo[tutac[0][0]][tutac[0][1]],tablo[tutac[1][0]][tutac[1][1]]);
				}//AYNI SUTUNDALARSA
				else{
					sifrelenmis_dizi[i]=tablo[tutac[0][0]][tutac[1][1]];
					sifrelenmis_dizi[i+1]=tablo[tutac[1][0]][tutac[0][1]];
printf("\n%c ve %c ayni satir-sutunda degildirler!!\n",tablo[tutac[0][0]][tutac[0][1]],tablo[tutac[1][0]][tutac[1][1]]);
				}//AYNI SATIR VEYA SUTUNDA DEĞİLLERSE
			}
		}
		printf("\n\nMetnin sifrelenmis hali asagidaki gibidir:\n");
		for(i=0;i<strlen(sifrelenmis_dizi);i++){
				if(i%2==0&&i!=0){
						printf("-");
				}
				printf("%c",sifrelenmis_dizi[i]);
		}	
	return 0;
}

 

Programın Ekran Çıktıları:

























8 Ekim 2013 Salı

C Diliyle Tic Tac Toe Oyunu Yazımı

Tic tac toe oyununun mantığı 3x3 lük karelerde yan yana, alt alta ve ya çapraz biçimde 3’lü seri yapmaya çalışmaktır. Bu örneğimizde de bu oyunun konsol kodunu yazacağız.

Oyunumuzun genel mantığını şöyle özetleyebiliriz:

Kullanıcı oyunu bir yer seçerek başlatacaktır. Daha sonra ise bilgisayar random olarak boş bir yer bulup hamlesini yapacaktır. Bu şekilde sırayla, kullanıcı veya bilgisayar oyunu kazanıp –oyun berabere bitene kadar hamlelerini gerçekleştirecektir.
Kod kısmını ayrıntılı olarak ele almaya başlarsak:

Öncelikle programda kullandığımız değişkenleri ve dizimizi tanımlıyoruz. Daha sonra ekran çıktısı için sade ve anlaşılır bir tablo hazırlamamız gerekiyor. 


Tablomuzu da oluşturduktan sonra sıra geliyor kullanıcıdan girdileri almaya. Burada bir for döngüsü kullanıyoruz. Bu for döngüsü içinde indeks olarak kullandığımız k değişkenini 0’dan 9’a kadar artırıyoruz. Bunu yapmamızdaki neden oyunda maksimum 9 adım olabilmesidir. For döngüsünün ardından k olarak belirlediğimiz indeksin 2’ye göre modunu alıyoruz. Buradaki mantık da k değişkenin ikiye göre modu 0(sıfır) ise sıranın kullanıcıda, 1 ise sıranın bilgisayarda olduğunu belirtmemizdir.

Oyuna hamle sırası kullanıcıda olduğu zaman kullanıcı_girisi adlı fonksiyonumuzu çalıştırıyoruz. Bu fonksiyonumuz ise önce kullanıcıdan satır ve sütun değerlerini istiyor ve hemen ardından while döngüsüne giriyor. Eğer bu girdiğimiz değer 0-2 aralığı dışında veya herhangi dolu bir yere denk geliyorsa ekrana bir bildirim yazdırıp yeni değerler girmesini istiyoruz. Bu işlem kullanıcının geçerli değerleri girene kadar devam ediyor ve en sonunda aldığımız geçerli değişkenlere denk gelen yeri ‘x’ yapıyoruz. Fonksiyon geriye,  düzelttiğimiz ‘matris’ matrisini döndürüyor ardından for döngüsü de k değişkeni bir arttırıp sırayı bilgisayara veriyor.


Bilgisayara sıra geldiğinde ise bilgisayar_girisi adlı fonksiyonumuzu devreye sokuyoruz. Bu fonksiyon da öncelikle rastgele satır ve sütun değerleri seçiyor ardından da yine bir while döngüsüne girdiriyoruz. Burada da boş yer bulana kadar sürekli random fonksiyonuyla satır ve sütun değerleri yakalıyoruz. En son yakaladığımız geçerli yeri bilgisayarı temsilen ‘o’ yapıyoruz. Bu işlemler oyun sonlana kadar devam ediyor.



 Oyunun sonlandığını kontrol etmek için bazı if deyimlerine ihtiyacımız var. Bu if’lerin başlaması için en az 4 el oynanmış olmalıdır, bu yüzden kontrolleri en baştan itibaren değil de k değişkenimizin 4’lenmesinden itibaren başlatıyoruz. Oyunun kazanının olup olmadığını kontrol eden if’ler sekiz adet olmalı çünkü oyunun bir kazananı olup da bitebilmesi için sekiz farklı kombinasyon vardır(3 yatay,3 dikey veya 2 çapraz olarak). Oyunun bittiğini gösteren if deyimlerinin içine birer if deyimi daha eklemeliyiz. Bu son ekleyeceğimiz if’ler ise kazananın bilgisayar mı yoksa kullanıcı mı olduğunu anlamamıza yarayacak. Eğer 3’lü oluşturan karakterler ‘x’ ise kullanıcı,  ’o’ ise bilgisayar kazanmış demektir. Bunların dışında bir de berabere bitme olasılığını da göz önünde bulundurmamız gerekiyor. Oyunların bitme kontrollerini teker teker sekiz adet kontrolle yapacağız. Oyunun berabere bittiğini ise bu kontrollerin sonuna, hamleler için oluşturduğumuz for döngüsünün sonuna gelip gelmediğimizin kontrolünü yaparak anlayabiliriz. Bu kullandığımız if’lerin sonlarına da birer break eklemeliyiz çünkü oyun bittiği zaman programımız sonlanmalıdır.


C Kodunun Tamamı:





#include <stdio.h>
#include <stdlib.h>

char kullanici_giris(char matris[][3]){
int sat,sut;
printf("Oynamak istediginiz satir/sutun giriniz :\n");
scanf("%d%d",&sat,&sut);

while(sat>2||sat<0||sut<0||sut>2||matris[sat][sut]!='-'){
 printf("Girdiginiz aralik gecersiz tekrar girin : \n");
 scanf("%d%d\n",&sat,&sut);
 scanf("%d%d\n",&sat,&sut);
}

matris[sat][sut]='x';//doğru değer girilmiştir, atamayı yapıyoruz
return matris[3][3];//matrisimizi döndürüyoruz 
}

char bilgisayar_giris(char matris[][3]){
int sat,sut;
sat=rand()%3;//satır için ilk random atamyı yapıyoruz
sut=rand()%3;// sutun için ilk randım atamayı yapıyoruz
while(matris[sat][sut]!='-'){//adres doluysa yeniden random atama yapmalıyız
sat=rand()%3;
sut=rand()%3;
}
printf("\nBilgisayarin hamle yaptigi yer\n");
printf("Satir: %d \n",sat);
printf("Sutun: %d \n\n",sut);
matris[sat][sut]='o';//boş yer bulunmuştur, atamayı yapıyoruz
return matris[3][3];//matrisimizi döndürüyoruz
}

int main() {
 int i,j,k,sat,sut;//değişkenlerimiz
 srand(time(NULL));//random fonksiyonun her seferinde 
                               //farklı değer vermesi için gerekli kod
 char matris[3][3]={{'-','-','-'},
      {'-','-','-'},
             {'-','-','-'}};//ilklendirme
printf("  0  1  2\n"); 
for(i=0;i<3;i++){
 printf("%d",i);
 for(j=0;j<3;j++){
  printf(" %c ",matris[i][j]);
 }
 printf("\n");
}//ekran göstergesi

 for(k=0;k<9;k++){//maksimum hamle sayısı 9 olduğundan 9'a kadar döndürürüz
  
  if(k%2==0){//kullanıcının başlaması için mod kullanıyoruz
        kullanici_giris(matris);//kullanıcıdan değer isteme fonksiyonu
      
  }
  else{
  //system("CLS");//ekran temizleyicisi
  bilgisayar_giris(matris);//blgsyrın boş yer bulması ve
      //atama yapması için kullanılan foksiyon 
      printf("  0  1  2\n"); 
       for(i=0;i<3;i++){
          printf("%d",i);
           for(j=0;j<3;j++){
                               printf(" %c ",matris[i][j]);
            }
       printf("\n");
       }//ekran göstergesi
    }
 if(k>3){//oyunun kimin kazandığını ya da oyunun berabere bitip bitmediğini
                                      //kontrol ettiğimiz if dizimleri
  
  if(matris[0][0]==matris[0][1]&&matris[0][1]==matris[0][2]){
   printf("OYUN BITTI!!");
   if(matris[0][0]=='x'){
    printf("TEBRIKLER KAZANDINIZ!!");
    break;
   }
   else{
    printf("MALESEF KAYBETTINIZ");
    break;
   }   
  }
  if(matris[1][0]==matris[1][1]&&matris[1][1]==matris[1][2]){
   printf("OYUN BITTI!!");
   if(matris[1][0]=='x'){
    printf("TEBRIKLER KAZANDINIZ!!");
    break;
   }
   else{
    printf("MALESEF KAYBETTINIZ");
    break;
   }
  }
  if(matris[2][0]==matris[2][1]&&matris[2][1]==matris[2][2]){
   printf("OYUN BITTI!!");
   if(matris[2][0]=='x'){
    printf("TEBRIKLER KAZANDINIZ!!");
    break;
   }
   else{
    printf("MALESEF KAYBETTINIZ");
    break;
   }
  }
  if(matris[0][0]==matris[1][0]&&matris[1][0]==matris[2][0]){
   printf("OYUN BITTI!!");
   if(matris[0][0]=='x'){
    printf("TEBRIKLER KAZANDINIZ!!");
    break;
   }
   else{
    printf("MALESEF KAYBETTINIZ");
    break;
   }
  }
  if(matris[0][1]==matris[1][1]&&matris[1][1]==matris[2][1]){
   printf("OYUN BITTI!!");
   if(matris[0][1]=='x'){
    printf("TEBRIKLER KAZANDINIZ!!");
    break;
   }
   else{
    printf("MALESEF KAYBETTINIZ");
    break;
   }
  }
  if(matris[0][2]==matris[1][2]&&matris[1][2]==matris[2][2]){
   printf("OYUN BITTI!!");
   if(matris[0][2]=='x'){
    printf("TEBRIKLER KAZANDINIZ!!");
    break;
   }
   else{
    printf("MALESEF KAYBETTINIZ");
    break;
   }
  }
  if(matris[0][0]==matris[1][1]&&matris[1][1]==matris[2][2]){
   printf("OYUN BITTI!!");
   if(matris[0][0]=='x'){
    printf("TEBRIKLER KAZANDINIZ!!");
    break;
   }
   else{
    printf("MALESEF KAYBETTINIZ");
    break;
   }
  }
  if(matris[2][0]==matris[1][1]&&matris[1][1]==matris[0][2]){
   printf("OYUN BITTI!!");
   if(matris[2][0]=='x'){
    printf("TEBRIKLER KAZANDINIZ!!");
    break;
   }
   else{
    printf("MALESEF KAYBETTINIZ");
    break;
   }
  }
  if(k==8){
   printf("OYUN BERABERE BITTI!!");
   break;
  }
  
 }
} 
 return 0;
}

Ekran Çıktıları:





28 Eylül 2013 Cumartesi

JAVA da Arayüz Kullanarak Kütle İndeksi Bulma

Vücut kitle indeksi kişinin boy ve kilo bilgilerini kullanarak hesaplanır. Bu hesaplama kişinin kilosunun-kg cinsinden- kişinin boy uzunluğunun-cm cinsinden- karesine bölünmesiyle elde edilir. Bu uygulamamızda kişinin vücut kitle indeksini bulan bir program yazacağız.


Programımız için öncelikle bir ara yüz tasarlamalıyız. Tasarladığımız bu ara yüzde  giriş için iki tane textbox , sonucu bulmamız için bir adet buton ve çıktılar için ise iki adet daha textbox’a ihtiyacımız olacak. Bunların için oluşturulan örnek ara yüz  aşağıdaki gibidir:


Programımıza geçmek istersek kısaca şu şekilde işlemeli:

           Öncelikle kişinin boy ve kilo değerlerini istenilen türde kullanıcıdan almalıyız. Daha sonra kullanıcı sonuç bulunması için butona tıkladığında arka planda işlemleri yapmalıyız. Bu işlemin sonucuna göre değerleri belli aralıklarda belli açıklamalarla kullanıcıya bildirmeliyiz.

Programın detaylı açıklaması:

        Öncelikle boy, kilo ve sonuç bilgilerini saklayacağımız değişkenleri tanımlıyoruz. Textbox aracılığıyla alacağımız değerleri String olarak, sonuç değişkenini ise float olarak tanımlayabiliriz. 

         Programın asıl işlem kısmında geçtiğimizde ise butona tıklandığı zaman işlemlerin gerçekleştirmemiz gerekiyor. Bu aşamada ilk önce boy ve kilo değerlerini okumamız gerekiyor. Textbox’lardan gerekli girdileri alıp boy ve kilo String’lerine atıyoruz. Kütle indeksini bulabilmemiz için string olarak aldığımız bu kilo ve boy değerlerini float’a çevirmemiz gerekiyor. Bu çevirme işlemlerini “parse” fonksiyonuyla yapacağız. Kodda göreceğiniz üzere  girdi aldığımız boy string’ini Float.parseFloat(boy) kod satırıyla float değere çeviriyoruz. Aynı şekilde kişinin kilosunu da floata çevirip başta bahsettiğimiz şekilde indeksini buluyoruz ve bu çıkan float sonucu “sonucc” değişkenine atıyoruz. Bulduğumuz sonucu ara yüzümüzde yer alan indeks textbox’una set etmemiz gerekiyor. Ancak sonuç değerimiz float olduğu için bunu öncelikle String’e çevirmeliyiz daha sonra set etmeliyiz. Bunu de 149. Satırdaki gibi String.valueOf(sonucc) koduyla çevirebiliriz. Çevirdiğimiz sonuç değerini de setText() metoduyla ara yüzümüze gönderiyoruz.

Ara yüzümüzde bir de açıklama diye bölümümüz var. Burada da bulduğumuz sonuca göre kişinin ayrıntılı indeksini ekrana yazdıracağız. Kullanacağımız sonuçların aralıkları ve açıklamaları şunlardır:

0-18.4: Zayıf
18.5-24.9: Normal
25.0-29.9: Fazla Kilolu
30.0-34.9: Şişman (Obez) - I. Sınıf
35.0-44.9: Şişman (Obez) - II. Sınıf
45.0 ve üstü: Aşırı Şişman (Aşırı Obez) - III. Sınıf

Programın bu kısmında da sonucc değerinin bu aralıklardan hangisine dahil  olduğunu bulmamız gerekiyor. Gerekli kontrolleri yapıp bulduğumuz aralığın açıklamasını da açıklama textbox’una set ederek programımızı sonlandırıyoruz.

Programın Kodu:





Programın Ekran Çıktıları:                          





6 Eylül 2013 Cuma

C# : Access Veri Tabanı Kayıt Ekleme

          Veri tabanının yazacağımız programa eklenmesinin en büyük nedenlerinden biri, eklediğimiz kayıtları tutmak ve bunları görüntülemektir. Bunun için form üzerine gerekli nesneleri kullanarak bir kayıt ekleme arayüzü oluşturup kayıtları bu arayüz üzerinden eklemek daha kullanışlı olacaktır.

          Access üzerine kayıt eklemek için Insert Into SQL veri ekleme komutunu kullanacağız. Bunun için sırasıyla aşağıdaki işlemleri yapacağız:

1. Öncelikle verileri ekleyeceğimiz veri tabanının yüklü olması gerekmektedir. Yüklü değilse bunu yükleyeceğiz. Bu yükleme işlemini tıklayarak buradaki gibi adım adım yapacağız.

2. Access'ten veri çekebilmemiz ve access veri tabanı işlemleri için Data ve Data.OleDb sınıflarını projemize eklemek zorundayız.


3. Eklediğimiz access veri tabanı ile projemiz arasında bağlantı kurmamız gerekiyor. Bunun için OleDbConnection bağlantı nesnesini kullanacağız.
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" yolu mdb ve accdb uzantılı access dosyalarında farklılık göstermektedir. Bunu Server Explorer penceresine tıklayıp Properties penceresinde Connection String alanından bakarak kullanacağımız yolu bulabiliriz. Adres uzantısını Application.Startup kod parçacığı ile değiştirirsek veri tabanımız verileri projemizdeki ekli olan kaynaktan alacaktır.

4. SQL komutunu kullanıyoruz ve ekleyeceğimiz verileri form üzerindeki textboxlardan alıyoruz. Kodlarda karışıklığı önlemek için bu SQL komutumuzu kod adındaki bir string değişkene atıyoruz.

5. 
           Bu kod parçası ile urun_kayit tablosuna kaydımızı ekliyoruz. Kaydı eklemek için OleDbCommand ' ın  ExecuteNonQuery özelliğini kullanıyoruz. Kayıt ekleme işlemimizden sonra kaydın eklendiğine dair mesaj ekliyoruz.

Kodun Tamamı


29 Ağustos 2013 Perşembe

C# : Olasılık Hesabı - 1

          Bir torbanın içinde 60 tane topumuz var. Bunların 10 tanesi kırmızı, 50 tanesi de mavidir. Bu torbanın içerisinden her bir top geri atılmak koşulu ile 5 kez top alınacaktır. Topların kırmızı gelme olasılığı nedir?

İpucu: 5 defa random ile 1 ile 60 arasında bu sayılar dahil olmak üzere sayı seçilecektir. Tabi biz 60 kadar olan sayılardan ardışık 10 sayıyı kırmızı topumuz olarak alacağız(12-21,1-10, vb.)

Kod


Başlıca Yapılanlar:


  • Kırmızı toplarımızın sayısını tutacak bir değişken tanımlıyoruz.
  • rast_sayi adında 1'den 60'a kadar olan sayılardan rastgele bir değer seçmesi için random değişken tanımlıyoruz. 
  • Torbanın içerisinden 5 kez top seçileceği için 5 kez dönen bir for döngüsü tanımlıyoruz.
  • Her bir adımda 1'den 60'a kadar rastgele bir sayı seçilip top değişkenine atılıyor. Kırmızı toplar için belirlediğim 1 ile 10 arasındaki aralıkta olup olmadığı kontrol ediliyor. Eğer ki istenilen aralıkta ise kırmızı topların sayısı 1 artıyor.
  • Sonucumu da kırmızı topların sayısını tutan değişkeni 5' e bölerek olasılığımı hesaplıyorum ve console üzerine yazdırıyorum.
NOT:  Olasılık hesabı olduğu için kodlar her çalıştırıldığında farklı sonuçlar gelecektir.

İpucu:

          Olasılık hesaplarında sonuç 0 ile 1 arasında olduğundan ondalıklı değerler çıkmaktadır. Fakat bizim değerleri tuttuğumuz değişkenler tam sayı türündeki integer değerlerdir. Double ya da ondalık değer yazacak bir değişken türü kullanmadan olasılık hesabımda virgülden sonraki kaç değeri görmek istiyorsam nokta koyup bir o kadar da sıfır koymalıyız. 

Ekran Görüntüsü




11 Ağustos 2013 Pazar

C# : XML Dosyasından Veri Alma


          Visual Studio üzerinde C# ile hazırlayacağımız uygulamalara dışarıdan veri çekmek için kullandığımız yöntemlerden biri de XML dosyasından veri çekmektir. XML dosyasından veri almak için öncelikle XML dosyasının nasıl oluşturulduğunu ve hazırlanan projeler kapsamında nasıl kullanıldığını göreceğiz. Bunun için programlama dersi kapsamında gördüğüm örnek üzerinden XML dosyasının bir proje üzerinde kullanımını göstereceğim.

         Basit bir resimli sözlük uygulaması üzerinden gideceğiz. Öncelikle aşağıdaki şekilde formumuzu tasarlıyoruz.


          Tasarımımızı tamamladıktan sonra projemize Project menüsünden Add New Item seçeneği ile XML File seçeneğini tıklayarak ve isim vererek dahil ediyoruz. Bunu Solution penceresinde.xml uzantılı bir dosya olarak görebiliriz. Fakat oluşturduğunuz bu XML dosyasını debug klasörü içine de kopyalayacağız. Ya da var olan XML leri projemize dışarıdan ekleyerek de kullanabiliriz.


          Karşımıza aşağıdaki şekilde boş bir XML dosyası açılacaktır.


          Sözlükte kullanacağımız her bir kelimenin türkçe, ingilizce ve resim adını kelime adında bloklar adında XML dosyası içerinde gruplayacağız. Kelime blogu adı altında türkçe kelimeleri turkce blogundan, resimlerin isimlerini resim blogu adı altında, ingilizce kelimeleri ingilizce blogu adında toplayacağız.

Not: Bloglar arasında veri eklerken boşlukların da dikkate alındığı unutulmamalıdır. Özellikle de yol belirten verilerin yazımında sorun çıkabilir.


          Projemizde ekli olan bu XML dosyasını kullanmak için projemize XML kütüphanesini dahil edeceğiz.


          XML dosyasını XML kütüphanesinin sınıfları olan  XmlDocument, XmlNodeList sınıfları ile projemizde kullanacağız. XmlDocunent ile XML nesnemizi oluşturuyoruz. XmlNodeList ile de aynı etiketteki blogları tutmak için bir liste oluşturur. Ayrıca kelimelerin gösteriminde listedeki konumunu tutması için global bir sira değişkeni tanımladık.


          Projemizde uygulama çalıştığı anda XML üzerinden işlem yapılacağı için Public Form1( ) blogu içinde yapılması gerekenleri yazacağız. XmlDocunent.Load ile kullanacağımız XML dosyasını belirteceğiz. XmlDocunent.SelectNodes özelliği ile de hangi etiket altındaki blogları kelimeler listesine atayacağımızı belirtiyoruz. Form açıldığında XML dosyası üzerinde yer alan ilk kelime olacağı için buton ile geri alınacak bir kelime olmadığı için geri al butonunu pasif yapıyoruz. XML dosyası üzerinden sıradaki çağrılan  kelimeyi getiren show adında oluşturduğumuz metotu çağırıyoruz.


          XML dosyasındaki verilerin form üzerindeki nesnelere yerleştirilmesi için bir show adında bir metot oluşturduk. Burada yapılanları açıklayacak olursak; daha sonradan ilk ve son kelime olduğunu belirten kontrolümüzü yaptığımız için öncelikle her iki butonumuzu da aktif yapıyoruz. XmlNode sınıfında dugum adında kelime gruplarının bir alt blokları olan resim, turkce ve ingilizce bloklarındaki verileri tutmak için bir değişken oluşturuyoruz. Sırası ile resim, ingilizce, turkce bloklarındaki verileri çekip bunları XmlNode.InnerText komutu ile form üzerindeki atamak istediğimiz nesnelere atıyoruz. Son olarak XML dosyasından çekilen kelimenin ilk ya da son kelime olup olmadığını kontrol eden bir if yapısı ile kontrol yapıyoruz. Kontrol sağlandığında da butonların pasif olmasını sağlıyoruz.


         Ardından ileri ve geri butonlarımızda oluşturduğumuz show metodunu çağrıyoruz. Onun öncesinde geriyse sıramızı azaltıyor ileriyse artırıyoruz ve ona göre XML dosyasındaki indeksini belirliyoruz.
Not: Verileri çekeceğimiz XML dosyasının, kullanacağımız resimlerin debug altında tek bir klasörde bulunmasına dikkat etmeliyiz.


Ekran Görüntüsü


Kodların Tamamı


6 Ağustos 2013 Salı

C de Dizinin En Küçük Elemanını Bulma

Bir dizi şeklinde bize verilen sayılar içinde en küçük elemanı bulmak için şu yolları izleriz:


Öncelikle derleyicimize kullanacağımız diziyi tanımlarız. Burada örnek amaçlı 6 elemanlı bir dizi tanımladık. Daha sonra da döngüde kullanacağımız değişkeni ve minimum elemanı hafızada tutmak için kullanacağımız tampon bir değişken tanımlıyoruz. Diziyi doldurmak için for döngüsü içerisinde gerekli bildirimleri ve elemanları alma işlemlerini yapıyoruz. Kullanıcıdan dizimizi aldıktan sonra ilk elemanı en küçük elemanmış gibi düşünüyoruz. Bu işlemi dizinin herhangi bir elemanı da yapabiliriz fakat  for döngüsü kullandığımız için ilk elemanı minimum gibi düşünüp 1 döngü kâr elde ederiz. Tampon değişkenimize atama yaptıktan sonra kalan tüm diziyi tarama yapmalıyız. Bu kısımda da for döngüsü içerinde if kontrolünü kullanacağız. Kalan her eleman için tampon değişkenimizi karşılaştırıyoruz. Eğer karşılaştırdığımız eleman bizim minimum eleman olarak hafızada tuttuğumuz elemandan –yani min_sayi değişkeninden- küçükse minimum elemanımızı artık değiştirmemiz gerekmektedir. Bu işlemi tüm diziyi tarayarak yaptıktan sonra artık geriye minimum elemanı tuttuğumuz değişkeni ekrana çıktı olarak  yazdırmak kalıyor.

Programın Kodu:


#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[]) {
    int dizi[6];
    int min_sayi,i;
    printf("Dizinin elemanlarini giriniz\n");
    for(i=0;i<6;i++){
        printf("Dizinin %d. elemaninini giriniz :\n",i);
        scanf("%d",&dizi[i]);
    }
    min_sayi=dizi[0];
    for(i=1;i<6;i++){
        if(min_sayi>dizi[i]){
            min_sayi=dizi[i];
        }
    }    
    printf("Dizideki minimun eleman %d dir!!",min_sayi);    
    return 0;
}


Ekran Çıktıları:







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ı




2 Ağustos 2013 Cuma

JAVA da döküm(casting) işlemleri

Döküm(Casting) işlemi bir sayıyı kendi tipinden alıp başka bir sayı tipine dönüştürmektir.


  • Bir sayısal tipin değerinin aynı tipten başka bir değişkene  atanması söz konusu olabilir. Burada casting işlemi yapılmaz.

Örnek Kod:

Sayısal tiplerin hafızadan kullandıkları alanları küçükten büyüğe doğru sıralamak istersek:


Byteà short à int àlongàfloatàdouble

Bu sıralamayı göz önünde bulundurursak cast işlemleri ile ilgili şunları söyleyebiliriz:
  •      Okların solunda bulunan tiplerden , sağında bulunan-yani daha yüksek alanlı – tiplere dönüşümü direk atama olarak yapılabilir. Bunda derleyicimiz hata vermez.

Örnek kod


Okların sağında bulunan tiplerden , solunda bulunan-yani daha düşük alanlı – tiplere dönüşümü direk atama olarak yapılamaz.İşte burada devreye döküm(casting) işlemleri giriyor. Bu şekilde olan atamalarda derleyicimiz hata verecektir bu yüzden burada casting işlemi kullanmamız gerekiyor.

Hatalı Kod!!!



Doğru Casting Kodu!!






31 Temmuz 2013 Çarşamba

JAVA da Sınıflar Arası Bilgi Alışverişi ve Constructor Kullanımı

Kod Anlatımı:

Bu konu için 3 ayrı sınıf oluşturmamız gerekiyor. Bunlar öğrenci,okul ve test sınıflarıdır.

Öğrenci sınıfında neler kullandığımızı ve ne işe yaradığını kısaca söylemek istersek:
  • Öğrenci isimlerini tutmak için 'isim' String'ini tanımlıyoruz.
  • Öğrenci numaralarını tutmak için ogr_no şeklinde bir integer tanımlıyoruz 
  • Her öğrenci nesnesi için Okul sınıfından bir nesne oluşturuyoruz
  • Ogrenci constructor'ının içine isim ve numarasını almak için gerekli bölümleri ekliyoruz
  • Diğer sınıflardan öğrenci adına erişebilmek için getisim metodu oluşturuyoruz
  • Öğrencinin okulunu set'lemek için de setOkul metodunu ekliyoruz ve öğrenci sınıfını tamamlıyoruz
Okul sınıfında neler kullandığımızı ve ne işe yaradığını kısaca söylemek istersek:
  • Okulun adını tutmamız için bir okul_adi String'i tanımlıyoruz
  • Okul kapasitesini tutmak için kapasite adında bir integer tanımlıyoruz
  • Öğrencileri de bir dizide tutmamız gerektiği için de liste şeklinde bir dizi oluşturuyoruz
  • Okul constructor'unda okul adını ve kapasitesini tutmamız gerektiğinden bunları yazıyoruz içerisine
  • Bu constructor'un içine bir de her okul için liste oluşturmamız gerekiyor
  • Öğrencileri listeye eklemek için OgrenciEkle metodunu kullanıyoruz.Bu metodun içinde de öğrencimizi listeye direk ekliyoruz ve indisimizi bir artırıyoruz
  • isimYaz metoduyla da  ekrana öğrencinin adı ile  hangi okulda okuduğunu yazdırıyoruz ve bu sınıfımızı da tamamlıyoruz.
Test sınıfında neler kullandığımızı ve ne işe yaradığını kısaca söylemek istersek:
  • Burada öncelikle Okulun adını alıp yeni bir okul oluşturuyoruz ve otomatik olarak 100 kapasite veriyoruz
  • Daha sonra yeni bir öğrenci oluşturuyoruz ve bu öğrenciyi okulumuza set ediyoruz.
  • Okulumuza öğrenciyi OgrenciEkle metoduyla ekledikten sonra okuldaki öğrencileri de isimYaz metoduyla ekrana yazdırıyoruz.

İlgili Kod:

 Öğrenci Sınıfı:

Okul Sınıfı:


Main Sınıfı:

Ekran Alıntısı:




C# : dll Oluşturma


          DLL'in türkçe olarak açılımını dinamik bağlantı kütüphanesi olarak tanımlayabiliriz. dll'e bazı programları ve oyunları çalıştırdığımızda belirtilen dll'in eksikliğini bildiren mesaj gelir ve işlem yapılmaz. Şimdi bizler de en basitinden bir program için nasıl dll oluşturacağımızı ve bu dll'i nasıl kullanacağımzı adım adım uygulamalı bir şekilde göreceğiz.

          Örnek olarak alan ve hacim hesaplamaları üzerinden gideceğiz.

          İlk olarak dll oluşturma aşamasının nasıl yapıldığına bir göz atalım.

1. DLL oluşturmak için "Class Library" seçeneğini seçerek bir sınıf kütüphanesi oluşturuyoruz.


2. Karşımıza aşağıdaki şekilde bir kod alanı açılacaktır. bu kod alanında namespace kısmında yazan blog_class bizim dll'imizin adıdır. Class1 ise bizim projelerimizin çağıracağımız blog_class'ın bir alt sınıfıdır. Tıpkı random sınıfı gibi. Classlar içinde de metot oluşturarak kullanacağımız sınıfı daha fonksiyonel hale getirebiliriz.


3. Biz bu DLL içerisinde alan ve hacim hesaplarını ayrı bir şekilde yapan sınıflar tanımladık. Daha sonra da her bir sınıf için de ayrı metotlar oluşturduk. Alan hesabı yapan sınıfımızda kare ve dikdörtgenin hesaplarını ayrı ayrı yapan metot oluşturduk. Hacim hesabında da küp ve dikdörtgen prizmaların hacim hesabını yapan iki ayrı metot oluşturduk. DLL için oluşturduğumuz kodu aşağıda görebiliriz.


4. Kod kısmımız tamamladıktan sonra Build menüsüne tıklayarak oradan Build blog_class seçeneğini tıklıyoruz.


5. DLL'imiz oluşturduğumuz kütüphanenin debug klasörü içerisinde olacaktır.

Proje'ye DLL Ekleme


          Bundan sonrasında projemiz üzerinden gideceğiz. Alan ve hacim hesabı yapan basit bir projemiz olacak. Buna göre bir form tasarlayacağız.


          Var olan DLL'leri projemize eklemek için sırası ile aşağıdaki işlemleri yaparak ekleyebiliriz.

1. Açtığımız yeni projemizde Project menüsünde yer alan "Add Reference" komutuna tıklarız.



2. Açılan pencereden ekleyeceğimiz dll'i bulup pojemize ekliyoruz.


3. Eklediğimiz DLL'i kod sayfamızda kullanabilmek için using ile kullanacağımız dll'in adını kod sayfasının yukarısında tanımlıyoruz.


4. Eklediğimiz dll'deki kullanacağımız sınıfları tanımlıyoruz.


5. Öncelikle sınıfını tanımladığımız değişkeni yazıyoruz ve ardından kullanacağımız metodu seçiyoruz. Ayrıca metodumuzun üzerinde geldiğinde nasıl kullanacağı hakkında da bilgi alabiliyoruz.


6. Projemizde hesaplamalar için ayrıca dışarıdan değer alacağımız için bunu bir değişkende tutmayı daha kolay olacağını düşünerek bu atama işlemini bir void türünde bir metotta tanımladık ve her butonda hesaplama yapmadan önce bu metodu çağırarak değerlerin atanmasını sağladık.

Kodun Tamamı