0 Yorum
12.10.2011
ders3

C dilinde giriş çıkış komutları olarak cin ve cout komutları kullanılmaktadır ve bu komutlar iostream kütüphanesinde bulunmaktadır (bkz:kütüphaneler). C++ dilinde ise printf ve scanf komutlarını kullanacağız ve bu komutlar ise stdio.h kütüphanesinde bulunmaktadır. Biz uygulamalarımızda printf ve scanf kullanacağımız için öncelikle cin ve cout komutlarına yüzeysel olarak değinip ardından printf ve scanf komutlarını detaylı bir şekilde işleyeceğiz. gets komutunu ise kullanıcıdan cümle yani içinde boşluk karakteri bulunduran verileri alıp bir değişkene atarken kullanacağız (bkz:değişkenler).

cout Komutu :

cout komutu isminden de belli olduğu üzere ‘out’ yani dışarıya, ekrana veriyi gönderir. Göndermekten kastımız ekrana yazması. Bu komutu kullanmak için iostream kütüphanesini kullanmamız gerekmektedir. Hemen örneklerle daha detaylı açıklamalara geçelim ;

#include <iostream>            //cout için gerekli kütüphane.
#include <conio.h>             //getch(); için gerekli kütüphane.
 
using namespace std;           //cout ve cin komutları, iostream kütüphanesindeki
                               //std class'ının içinde yer almaktadır. Dolayısıyla
                               //Bu fonksiyounları kullanırken aslında başına std::
                               //eklememiz gerekmektedir. Bu kod sayesinde eklemeye
                               //gerek kalmaz.
 
int main(void){                //Ana fonksiyonun başlangıcı.
      char isim[] = "ADogan";
      int numara  = 1266;
      cout<<isim;              //isim değişkenini ekrana yazdırdık.
                               //Şuan ekranda sadece ADogan yazmaktadır.
                               //Sonuna ";" koymayı unutmayın.
                               //using namespace std; komutunu kullanmasaydık eğer
                               //std::cout<<isim; şeklinde kullanmamız gerekecekti.
 
      cout<<endl<<isim<<" - "<<numara;
                               //endl (end line) komutu bir satır aşağı atlamaya
                               //yarar. Değişken değil de bir metin yazdırmak
                               //istiyorsak iki çift tırnak ("...") arasına
                               //yazmamız gerekiyor. Ve her farklı türde şeyler 
                               //yazdırmak istediğimizde de gördüğünüz gibi
                               //aralarına << sembollerini ekliyoruz.
 
/*       Şuan ekranda:                                      */
/*              ADogan                                      */
/*              ADogan - 1266                               */
/*       yazmaktadır                                        */
    getch();
    }                          //Ana fonksiyonun bitişi.

cin Komutu :

cin komutu ile kullanıcının klavye ile girdiği veriyi, daha önceden tanımladığımız bir değişkene atama işlemini gerçekleştiririz. Burada dikkat etmemiz hususlar ise şunlar;

  • Eğer -örneğin- bir integer değişken tanımladıysak kullanıcıdan integer veri girmesini isteyeceğiz.
  • char tipindeki bir değişken için kullanıcının girdiği veride eğer boşluk karakteri varsa, sin komutu sadece boşluktan önceki kısmı değişkene atar. Boşluktan sınrası işleme sokulmaz. Bu tarz verileri almak için gets komutunu kullanmalıyız.
  • Komutlar arasında “>>” işaretini kullanmalıyız.
#include <iostream>
#include <conio.h>
 
using namespace std;
 
int main(void){                //Ana fonksiyonun başlangıcı.
    char adi[10], soyadi[10];  //10'ar karakterlik iki tane değişken tanımladık.
    int numara;
 
    cout<<"Lutfen Adinizi, Soyadinizi ve Numaranizi yaziniz :\n";
    //Yukarıdaki işlemde kullanıcının gireceği veri için
    //ekrana bir uyarı mesajı çıkarttık.
 
    cin>>adi>>soyadi>>numara;  //Kullanıcının girdiği verileri sırayla,
                               //belirttiğimiz değişkenlere atadı. Kullanıcı
                               //arasında birer boşluk bırakarak verileri
                               //girebilir ya da her girişten sonra 'enter'
                               //tuşu ile de verileri girebilir.
 
    cout<<adi<<" "<<soyadi<<" - "<<numara;
    //Son olarak ise kullanıcının girdiği verileri atadığımız değişkenleri,
    //yukarıdabelirttiğimiz düzende ekrana yazdırdık.
 
    getch();
    }                          //Ana fonksiyonun bitişi.

Kodumuzu bitirdikten sonra f9 tuşu ile derlediğimizde aşağıdaki gibi bir uygulama ile karşılaşacağız:

cout ve cin komutlarının uygulaması ve aşamalar
Resim 1: cout ve cin komutlarının uygulaması ve aşamalar.

Yukarıda cin komutu sayesinde kullanıcının girdiği ‘ahmet’ verisi ‘adi’ değişkenine, ‘dogan’ verisi ‘soyadi’ değişkenine, ’1266′ verisi ise ‘numara’ değişkenine atandı.

printf Komutu :

printf komutu da cout komutu ile aynı işlemleri yapmaktadır. stdio.h kütüphanesinde bulunmaktadır. Kullanım şekli cout komutundan çok daha farklıdır. Yapısı ise printf(“metin yapısı ve değişken konumları”,değişken listesi); şeklindedir. printf komutunu ile ilgili önce bir örnek yapalım daha sonra dikkat etmemiz gereken noktalara değinelim;

#include <stdio.h> //Kütüphanemizi eklemeyi unutmuyoruz.
#include <conio.h>
 
//printf ve scanf fonksiyonları "için using namespace std;"
//komutunu kullanmaya gerek yoktur.
 
int main(void){                //Ana fonksiyonun başlangıcı.
    char username[10] = "ADogan";
    int number = 1266;
 
    printf("Kullanici Adi : %s, Numara : %d",username,number);
    /*Tırnak işaretleri içerisinde metnimizin nasıl görüneceğini
      belirledik. Tırnak işaretinden sonra ise, tırnak içerisinde
      kullandığımız değişkenleri sırayla tanımladık.*/
 
    getch();
    }                          //Ana fonksiyonun bitişi.

Yukarıdaki kodda kullandığımız %s ve %d, o alanda görünmesini istediğimiz değişkenlerin tiplerini belirtmektedir (bkz:veri tipleri). En sık kullanacağımız veri tipleri aşağıda verilmiştir daha detaylı liste için mutlaka cplusplus.com adresini inceleyin.

  • %d : Tamsayı (decimal integer) yani int tipindeki değişkenler için kullanılır.
  • %f : Kesirli sayı yani float tipindeki değişkenler için kullanılır.
  • %4.2f : Kesirli sayımızın virgülden önce 4, virgülden sonra 2 basamaklı olacak şekilde yuvarlanmasını sağlar.
  • %s : Dizi (string) yani char tipindeki değişkenlerin ‘tamamını’ ekrana yazdırmak için kullanılır. (pointerlar konusunda buraya tekrar değineceğiz.)
  • %c : Karakter (character) yani char tipindeki değişkenin tek bir karakteri ekrana yazar. Burada, tırnaktan çıkıp değişkenleri tanımladığımız kısımdaki değişkenin kaçıncı karakterini ekrana yazmak istiyorsak onu username[2] şeklinde belirtmeliyiz. Burada karakterlerin sırası 0′dan başlamaktadır.
  • %p : İşaretçi adresi (pointer adress) tipindeki değişkenleri yani değişkenin hafızadaki adres bilgisi için kullanılır.

Şimdi bunlarla ilgili birer örnek yapalım.

#include <stdio.h>
#include <conio.h>
 
int main(void){                //Ana fonksiyonun başlangıcı.
    char username[10] = "ADogan";
    int number = 1266;
    float pi = 3.1416;
 
    printf("Numara : %d\n",number);
    printf("Pi Sayisi : %f, Yuvarlanmis Hali: %.2f\n",pi,pi);
    printf("Kullanici Adi : %s, Son Karakteri : %c\n",username,username[5]);
    printf("'number' degiskeninin adresi : %p",&number);
 
    /*  \n : Bir satır aşağı atlar.
        &number : Başındaki & işareti adres sembolüdür. Başına geldiği
        değişkeni artık bir adres bilgisi yapar. %p tipi sadece adres
        yollandığı zaman çalışır.                                        */
 
    getch();
    }                          //Ana fonksiyonun bitişi.

Derlediğiniz zaman ekranda göreceğiniz metin aynen şöyledir:
Numara: 1266
Pi Sayisi : 3.141600, Yuvarlanmis Hali : 3.14
Kullanici Adi : ADogan, Son Karakteri : n
‘number’ degiskeninin adresi : 0028FF2C

Buradaki adres bilgisi number değişkeni o an hafızanın neresine yazıldıysa o hücrenin adresinin 16′lık tabanda yazılmış halidir. Pointerlar dersinde tüm detayı ile adres konusunu ele alacağız.

scanf Komutu :

scanf komutu cin ile aynı mantıktadır. Kullanım şekli printf ile hemen hemen aynıdır. Tek farklı printf komutunda tırnak işaretleri arasına yazdığımız metin biçimi yerine, dışarıdan alınacak verilerin atanacağı değişkenlerin sırası yazılmaktadır. Hemen bi örnek ile uygulamaya geçelim;

#include <stdio.h>
#include <conio.h>
 
int main(void){                //Ana fonksiyonun başlangıcı.
    char username[10];
    int number; float pi;
 
    printf("Numara ve Pi sayisini yazin:\n");
    scanf("%d %f",&number,&pi);
    printf("Numara: %d, Pi: %.2f\n",number,pi);
 
//     scanf fonksiyonunda tırnak işaretleri arasında, alınacak verinin tipini
//   belirttik. Tırnak işaretinden sonra ise gelen verilerin yazılacağı
//   değişkenlerin adreslerini belirttik. Çünkü scanf komutu aldığı veriyi
//   bizim belirttiğimiz adreste bulunan hücrenin içine yazar. Burada direkt
//   olarak değiken ismi kullanamayız. Bu çok önemli bir noktadır.
 
 
    printf("\nKullanici Adinizi yazin:\n");
    scanf("%s",username);
    printf("Kullanici Adi: %s",username);
 
//     scanf fonksiyonu ile dışarıdan bir karakter dizisi yani char tipinde
//   bir veri aldık. Dikkat ederseniz tırnak işaretinden sonraki değişken
//   isminin başına adres sembolu getirmedik. Çünkü char tipindeki
//   değişkenler aslında bir 'dizi'dir. Ve char tipindeki değişkenlerin ismi
//   aslında bir pointer yani bir adres işaretçisidir. Burada username
//   aslında 10 karakterlik harf dizisinin başladığı noktanın adresini tutan
//   bir pointerdır. Dolayısıyla başında & sembolu koymamıza gerek yoktur.
//   Bu dizilere özel bir durumdur. Diziler ve pointerlar konusunda daha iyi
//   anlaşılacaktır.
 
    getch();
    }                          //Ana fonksiyonun bitişi.

Bu kodları derlediğiniz zaman int ve float tipindeki verilerinizi girmenizi isteyecek. Daha sonra bu verilerin atandığı değişkenleri printf komutunda belirttiğimiz şekilde ekrana yazacak. Daha sonra ise char tipinde bir veri isteyecek ve aynı işlemi tekrar yapacak… scanf komutu ise böyle çalışmaktadır.

gets(); Fonksiyonu :

cin ve scanf ile kullanıcıdan istediğimiz char tipindeki veri tek bir kelime olmak zorundır. Örneğin “Steve Jobs” verisini girdiğiniz zaman sadece “Steve” verisini alır ve bizim belirttiğimiz değişkene yazar. İşte bu verinin tamamını bir değişkene atama işlemini gets(); fonksiyonu ile yapabiliyoruz. gets(); fonksiyonu stdio.h kütüphanesinde bulunmaktadır. Örnek ile açıklayalım;

Not : char tipindeki değişkenleri tanımlarken dizinin boyutunu göz önünde bulundurmayı unutmayın. Tanımlama yaparken eğer başlangıç değeri veriyorsanız boyut belirtmeniz de olur [] koymanız yeterli. Fakat başlangıç değeri vermiyorsanız mutlaka boyutunu belirtmek zorundasınız.
#include <stdio.h>
#include <conio.h>
 
int main(void){                //Ana fonksiyonun başlangıcı.
    char tam_ad[50];
 
    printf("Lutfen Isminizi ve Soyisminizi yazin :\n");
    gets(tam_ad);
    printf("\nTam Adiniz: %s",tam_ad);
 
//     Burada gets(); fonksiyonu parametre olarak tanımladığınız char
//   tipindeki değişkenin adresini alır. Ve girilen verinin tamamını
//   oraya kaydeder.
 
    getch();
    }                          //Ana fonksiyonun bitişi.

Böylece giriş-çıkış işlemşlerinin nasıl yapılacağını da öğrenmiş olduk. Bundan sonraki dersler ise verileri yorumlama işlemleri üzerine olacak.


Kategori: C/C++ Dersleri

Bir Cevap Yazın