26 Nisan 2015 Pazar

Windows Format USB'si Oluşturma (PROGRAMSIZ)

     Bilgisayarımıza format atmak istiyoruz ve cd-room bozuk, çalışmıyor veya mevcut değil. Bu durumda USB ile format atmak sorunumuza çare olacaktır, hemde daha hızlı!
Adım adım format atma USB'si yapmayı sizlere anlatacağım bu yazımda.
   
1.USB'nin içinde U3 gibi ek bir partition varsa bunu silmek gerekiyor. USB'nin kendi silme programı var.Küçük bir google araştırmasıyla bulunabilir. U3 yoksa eğer ikinci adımdan devam edin.
2.USB'yi bilgisayara takın.
3.Başlat -> Çalıştır -> CMD yazıyoruz ve komut satırını açıyoruz.
4.diskpart yazıp entera basıyoruz.
5.Yeni bir komut penceresi açılacak, ordan devam ediyoruz.
6.list disk yazıp entera basıyoruz.
USB diskimizin numarasına burdan bakıyoruz. Genelde numarası 1 olur. 1 numarada değilse USB boyutundanda anlaşılabilir. Eğer numarası görülmüyorsa 1.adıma gidin. Çünkü U3 partition yüklüyse numara görünmez.
7.select disk 1 (hangi numaraya aitse) yazıp entera basıyoruz.
8.clean yazıp entera basıyoruz.
9.create partition primary yazıp entera basıyoruz.
10.select partition 1 yazıp entera basıyoruz.
11.active yazıp entera basıyoruz.
12.assign yazıp entera basıyoruz.
13.exit 
14.exit 

Gelen format penceresinde fat32'yi ve cluster boyutunuda 32 kb seçiyoruz. 64kb hariç herhangi biri de olabilir. Ama 32 kb olması hız açısından daha verimli olur.

Evet şuanda USB'miz hazır. Tek eksik olan format için gerekli olan iso dosyamız. Son aşamada iso dosyasına sağ tıklayıp winrar (Winzip/Winrar/7-Zip vs.) yardımıyla extract(çıkart) işlemini yapacağız. Yani iso dosyasının içindekileri USB'ye çıkartacağız.
Direk iso dosyasını USB'nin içine sürüklerseniz olmaz,  iso dosyasına sağ tıklayıp dosya içerisindekileri winrar yardımıyla USB'nin içine çıkartmamız gerekiyor.
(iso dosyasına sağ tıkla->dosyaları çıkart->usb'yi seç.)

USB'miz hazır! Geriye format atmak kalıyor :)

23 Nisan 2015 Perşembe

Pointer and Swap

     Pointerlar verilerimizin bellekde hangi adreste tutulduklarını gösterir.    
     değişkenTipi* GöstergeAdi şeklinde tanımlanır.
     int türünde bir a pointeri
     int* a;  veya int *a; şeklinde tanımlanır.
     cout << a ; yazarsak a pointerının hangi adresi tuttuğunu görürüz. 
     cout << *a; yazarsak a pointerının tuttuğu adresdeki verinin değerini görürüz. 

    Soru:
    İnt türünde iki adet değişkenimiz olsun. Bu değişkenlerin değerlerini birbiriyle değiştiren bir fonksiyon yazalım.

Kodlar:
#include <iostream>
using namespace std;
void degistir(int *a, int *b);//fonksiyon prototipi
void main(){
    int a = 100;
    int b = 200;
    cout <<"-- degisimden once --"<< endl;
    cout << "a: " << a << " b: " << b << endl;
    degistir(&a, &b);//& adres operatörüdür. a ve b'nin adresini fonksiyona gönderdik.
    cout <<"-- degisimden sonra -- "<< endl;
    cout <<"a: "<< a << " b: " << b << endl;
    system("PAUSE");
}

void degistir(int *a, int *b){
    int x = *a;//a pointerındaki değeri x'a atadı.
    int y = *b;//b pointerındaki değeri y'ye atadı.
    *a = y;//a pointerının değerine y'yi atadı.
    *b = x;//b pointerının değerine x'i atadı.
}

Çıktı:

19 Nisan 2015 Pazar

Satır Temizleme Programı

     (DPU Veri Yapıları ve Algoritmalar 2013 Vize 6.soru)
     5 satırlık 3 sütunluk bir matrisimiz var. Bu matrisi bool türünde iki boyutlu bir dizi tanımlayarak oluşturacağız. Eğer matrisimizin herhangi bir satırındaki bütün değerler true ise bu satırın tamamını false yaparak temizleme işlemini gerçekleştireceğiz.


     Öncelikle kullanıcıdan matrisin elemanlarını alıp, gerekli kontrolleri yapıp temizleme işlemini bitireceğiz. Temizleme işlemini fonksiyon yardımıyla yapacağız.

Kodlar:
#include <iostream>
using namespace std;
void satir_temizle(bool dizi[][3], int satir);//fonksiyon başlığı
void main(){
    setlocale(LC_ALL,"Turkish");
    bool dizi[5][3]; //5satır ve 3sütundan oluşan bool matrisi.
    //matrise elemanları almak için for açtık.
    for(int i=0;i<5;i++){//ilk for satır satır ilerler.
        for(int j=0;j<3;j++){//içteki for sütun sütun ilerler.
        cout << i+1 <<".satırın " << j+1 << ".sütünunu giriniz: ";
            cin>> dizi[i][j];
        }
    }
    cout << "-- Oluşturduğumuz matris:"<<endl;
    //matrisi ekrana yazdırıyoruz.
    for(int i=0;i<5;i++){
        for(int j=0;j<3;j++){
        cout <<"     "<<dizi[i][j]<<" " ;    
        }
    cout << endl;
    }
    cout << " "<< endl;
    cout << "-- Satırları temizlenmiş olan matris: "<<endl;
    satir_temizle(dizi,5);//satir_temizle()fonksiyonu çağrıldı.
system("PAUSE");
}
void satir_temizle(bool dizi[][3],int satir){
    int sayac=0; // sayac değeri 3 olunca silme işlemi gerçekleşecek.
    //matrisin değerlerini kontrol etmek için for döngüsü.
    for(int i=0;i<satir;i++)
    {
        for(int j=0;j<3;j++)
        {
        if(dizi[i][j]) //matrisin i.satır j.sütur elemanı true ise
            sayac++; // sayacı bir arttır, 3sütunda true ise sayac==3 olacaktır.
        }
        //tüm satırlar true ise silme işlemi gerçekleşecek.
        if(sayac==3){ 
        for(int j=0;j<3;j++)
            dizi[i][j]= false; // ilgili satır false yapıldı.
        }
        sayac=0; // sayac diğer satırları kontrol için sıfırlandı.
    }
    //yeni oluşan matrisi ekrana yazdıralım.
    for(int i=0;i<satir;i++)
    {
        for(int j=0;j<3;j++)
        {
        cout <<"     "<<dizi[i][j]<<" " ;
            }
    cout << endl;
    }
}



Çıktıda 1-4 ve 5.satırların temizlendiğini görüyoruz. Çünkü kullanıcı bu satırların tüm elemanlarını true değer girdi.
Çıktı:

18 Nisan 2015 Cumartesi

ASCII Değeri ve Fonksiyon


 
     Fonksiyonları niye kullanıyoruz? Kod tekrarından kaçınmak için. Fonksiyonlar kod yazımını kolaylaştırır.Örneğin  elimizde sayı değerleri var ve biz bu değerlerin ortalamasını bulacağız. Kodumuzun çeşitli yerlerinde ortalama bulma işlemi yapacak ise fonksiyon yardımıyla işimizi kolaylaştırabiliriz. Fonksiyon kütüphaneleri olduğu gibi kendi fonksiyonumuzuda yazabiliriz.
Fonksiyon şu şekilde oluşturuluyor.

VeriTipi FonksiyonAdı(Parametreler) // fonksiyon başlığı
{
//kodlar
return döndürülecekDeğer;
}
Veri tipi double, int, string, bool vs. olabilir.
 Eğer fonksiyonun döndüreceği bir değer yoksa veri tipi void olarak tanımlanır ve return değeri olmaz.

Soru:
Her karakterin ASCII tablosunda sayısal bir değeri vardır. Siz de kullanıcıdan bir karakter ve tam sayı değeri girmesini isteyin. Girilen karakterin ASCII değerinin girilen tam sayı ile eşit olup olmadığını belirten bool türünde bir fonksiyon yazınız.(bool türü 0(false) veya 1(true) değeri alır.)

Cevap:


#include <iostream>
using namespace std;
bool asciiDegeri(char a, int b){ //bool türünde fonksiyon oluşturuldu.
if(a==b)
return true; // a==b ise return edilen değer true.
else
return false; // return edilen değer false.
}
void main(){ //main ana fonksiyonumuz
char ch; // ch adında bir karakter tanımlandı.
cout << "Karakteri giriniz: ";
cin >> ch ;
//cout << (int)ch; yazarak girilen karakterin ASCII değeri görülebilir.
int x;
cout << "Tam sayi degeri giriniz: ";
cin >> x;
bool sonuc;
sonuc=asciiDegeri(ch,x);//asciiDegeri fonksiyonu çağrıldı ve sonuc değişkenine atandı.
if(sonuc) // sonuc true ise if'e girer.
cout <<"ASCII degeri ile esit!"<<endl;
else
cout <<"ASCII ile esit degil!"<<endl;
system("PAUSE");
}

Çıktı:












17 Nisan 2015 Cuma

Dizi Kullanımı

     Öncelikle dizilerden kısaca bahsetmek istiyorum. Dizileri niye kullanıyoruz? Elimizde aynı türden çok sayıda veri var ise her defasında bir değişken yardımıyla tanımlamak yerine dizimizin içerisinde tutuyoruz. Buda bize büyük kolaylık sağlıyor. C++'da dizinin eleman sayısını diziyi tanımlarken belirtmemiz gerekiyor. İlerleyen uygulamalarımızda dinamik dizilere geldiğimizde eleman sayısını daha sonradan da alabileceğiz.
 
     C++'da diziler şu şekilde tanımlanıyor:
VeriTipi diziİsmi[elemanSayisi];

     Soru:
   
     Mevcudu 10 olan bir sınıfın notları klavyeden alın ve ortalaması hesaplayıp ekrana yazdırın.

Kodlar:
#include <iostream>
using namespace std;
void main(){
    double notlar[10]; // boyutu 10 olan double türünde bir dizi tanımlandı.
    double toplam = 0, ortalama;
    for (int i = 0; i < 10; i++){ // for döngüsü ile notları diziye aldık.
        cout << i + 1 << ". ogrencinin notunu giriniz" << endl;
        cin >> notlar[i]; // cin ile klavyeden değer alındı.
        toplam += notlar[i]; // toplam = toplam + notlar[i];
    }
    ortalama = toplam / 10;
    cout << "Not ortalamasi: " << ortalama;
    system("PAUSE");
}



Çıktımız: