18 Mayıs 2020

#5 C Dili: Giriş ve Çıkış

C programlama dilinde yazılan programlarda verilerin konsola yazdırılması ve kullanıcıdan veri alma işlemleri giriş ve çıkış işlemleri olarak adlandırılmaktadır. Giriş ve çıkış işlemlerinde iki temel fonksiyon mevuttur. Bunlar printf() ve scanf() fonksiyonlarıdır.

printf() Fonksiyonu

printf() fonksiyonu kullanılarak içerisinde belirtilen parametre veya parametreler ekrana yazdırılabilmektedir. Bu fonksiyonun kullanımında önemli olan içerisinde belirtilen parametrenin hangi değişken türünde olduğunu programa doğru bir şekilde bildirmektedir.


#include<stdio.h>

int main(){
    printf("Merhaba Dunya");

    return 0;
}

Çıktı:

Merhaba Dunya

Yukarıdaki kodda da görüldüğü üzere ekrana “Merhaba Dunya” yazısı yazdırabilmek için printf() fonskiyonu kullanılmıştır. Lakin yukarıdaki kodda dikkat ederseniz “Dünya” kelimesi yerine “Dunya” kelimesi kullanılmıştır. Bunu sebebi Türkçe karakterlerin standart olarak ekrana yazdırılamamasıdır. Eğer Türkçe karakter olan “ç, ğ, ü, ö” karakterleri ekrana yazdırılmak istenirse bunun için yerelleştirme işlemi yapılmalıdır.


#include<stdio.h>
#include<locale.h>

int main(){
    setlocale(LC_ALL, "Turkish");
    //Turkce karakterler cikis icin kodumuza eklendi
    printf("Merhaba Dünya");

    return 0;
}

Çıktı:

Merhaba Dünya

Yukarıdaki kodda görüldüğü üzere “locale.h” projemize dahil edilmiştir. Devamında setlocale komutu ile Türkçe dilinin karakterleri program için tanımlanmıştır. Sadece ekrana yazı yazdırmak için değil aynı zamanda önceden bellekte tanımlanmış olan veriler de printf() fonksiyonu ile ekrana yazdırılabilmektedir.


#include<stdio.h>

int main(){
    int x = 5; 
    //tamsayi tanımlandı
    float y = 4.7;
    //ondalikli sayi tanımlandı
    char z = 'h';
    //karakter tanımlandı

    printf("x = %d, y = %f, z = %c",x, y, z);

    return 0;
}

Çıktı:

x = 5, y = 4.700000, z = h

Yukarıdaki kodun çıktısında dikkat ettiyseniz y değişkenin değeri 4.7 değil de 4.700000 olarak verilmiştir. Ondalıklı kısımda veya tam kısımda kaç basamak görüntülenmesini istiyorsak bunu printf() içerisinde belirtmeliyiz.

#include<stdio.h>

int main(){
    float x = 4.751165165;
    //ondalikli sayi tanımlandı
    
    printf("x = %.3f \n",x);
    //3 basamak ondalık hassasiyeti
    
	  printf("x = %.5f \n",x);
	  //5 basamak ondalık hassasiyeti
	
	  printf("x = %.7f \n",x);
	  //7 basamak ondalık hassasiyeti
    

    return 0;
}

Çıktı:

x = 4.751
x = 4.75117
x = 4.7511654

Yukarıdaki kodda da görüldüğü üzere tamsayı (integer), ondalıklı (float) ve karakter (char) tipinde verileri printf() fonksiyonu ile konsola yazdırdık.

Bilgisayarımızın konsoluna gelen çıktının resmi yukarıda mevcuttur.


scanf() Fonksiyonu

scanf() fonskiyonu kullanılarak kullanıcıdan veri alınmaktadır. Bu fonksiyon ile kullanıcı kendi belirlediği değerleri programa bildirmektedir. scanf() fonnski,yonu kullanılırken dikkat edilmesi gereken en önemli nokta kullanıcıdan hangi türde bir veri alınacağının scanf() fonksiyonuna doğru işlenmesidir. Eğer kullanıcıdan integer veri tipinde bir değer istenilecekse %d şeklinde scanf() içerisinde bu belirtilmelidir.

#include<stdio.h>

int main(){
    int sayi;
    scanf("%d", &sayi);

    return 0;
}

Çıktı:


Yukarıdaki kodda integer veri tipinde sayi isimli bir değişken tanımlanmış ve sonrasında kullanıcıdan bir değer girmesi istenilmiştir. Kullanıcının girmiş olduğu bu tamsayı değerinin sayi isimli değişkene atanması sağlanmıştır.

scanf() fonksiyonunun ekrandaki karşılığı yanıp sönen imleçtir. Bu kullanıcıdan bir değer istenildiği anlamına gelmektedir. Genellikle kullanıcıdan scanf() fonksiyonu ile bir veri girilmesi stenildiği zaman öncesinde bir printf() fonksiyonu kullanılarak kullanıcıdan tam olarak ne istenildiği ekrana yazdırılır.


#include<stdio.h>
#include<locale.h>

int main(){
    setlocale(LC_ALL, "Turkish");

    int sayi;

    printf("Lütfen bir tamsayı giriniz: ");
    scanf("%d", &sayi);

    return 0;
}

Çıktı:


Yukarıdaki kodda kullanıcıdan bir tamsayı değer girmesi istenilmmiş ve girilen bu değer sayi isimli değişkene atanmıştır. Kullanıcıdan değer alma ve değişkene alınan değerin atanması işlemlerini scanf() fonksiyonu gerçekleştirmiştir.

Veri türleri arasında dönüşüm yapılarak ekrana yazdırılma istenirse printf() fonksiyonu içerisine dönüştürülmesi istenilen biçim yazılmalıdır.

#include <stdio.h>
#include<locale.h>

int main(){
    setlocale(LC_ALL, "Turkish");

    char karakter;
    //karakter değişkeni tanımlandı

    printf("Lütfen bir karakter giriniz: ");
    //ekrana yazı yazdırıldı

    scanf("%c", &karakter);
    //kullanıcıdan değer istenildi

    printf("Girdiğiniz karakter: %c.\n",karakter);
    //girilen değer ekrana yazdırıldı

    printf("Girdiğiniz değerin ASCII değeri: % d.", karakter);  
    //girilen değerin ASCII karşılığı ekrana yazdırıldı

    return 0;
}

Yukarıdaki kodda kullanıcıdan scanf() fonksiyonu ile bir char veri tipinde bir değer alınmıştır. Alınan bu değer hiç bir değişime uğramadan %d biçiminde fonksiyoa işlenerek değerin ASCII tablosundaki karşılığı ekrana yazdırılmıştır.

Yorum bölümünden tüm sorularınızı bana iletebilirsiniz.

Çalışmalarınızda başarılar dilerim.

Hamit Can Dinç.

udemy
Share

Hamit Can Dinç

Yıldız Teknik Üniversitesinde Elektrik Mühendisliği öğrencisi. Araştırma ve geliştirme odaklı projelerde yer almayı sever.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir