15 MART 2017
ÇARŞAMBA
16.52
C++ Girdi ve Çıktı İşlemleri

Her programda kullanıcıdan alınan ve program tarafından belirlenmiş bir takım bilgiler vardır. Tüm konu anlatımlarımızda da kullandığımız cout bunlardan biridir. cout gibi tam tersi olarak çalışan ve kullanıcıdan gelen bilgiye göre işlemleri gerçekleştiren bir yapı da vardır. Bu anlatımımızda girdi/çıktı adını verdiğimiz input/output işlemlerini ele alacağız.

 

C++ dilinde kullanıcı ile etkileşim kurmak veya kullanıcıya bir takım bilgileri aktarmak için girdi ve çıktı işlevlerini kullanırız. Bunları kullanmak için daha önce de yazdığımız mini programlarımızda geçen iostream özelliğini başlangıç olarak ele alalım. Buradaki stream adı verilen ve girdi/çıktı işlemlerini kontrol etmek amacıyla iostream (input / output stream) olarak adlandırılan bir yapı kullanılır. Her programda girişte bu yapıya yer verilir.

  • cin : Standart Girdi (Input)
  • cout : Standart Çıktı (Output)

cout (Standart Çıktı)

Çoğu programda varsayılan çıktı öğesi olarak bilinir ve c++'ta cout yapısı altında gösterilir. Programda << işaretleri ile ifade edilir.

cout << "Merhaba!"; // metin çıktısı
cout << 5; // sayı çıktısı
cout << x; // değişken çıktısı

Yukarıdaki kod yapısına baktığımızda üç farklı çıktı öğesini görmekteyiz. cout << işareti ile çıktının ekrana yansıtılacağını dile getirmekteyiz. İlk satırımıza göz atalım. " (tırnak işareti) kullanılarak Merhaba yazılmış. Değişkenleri öğrendiğimize göre şu yapıya bakabiliriz;

cout << "Merhaba";
cout << Merhaba;

Bu iki satır arasındaki fark, birinci satırın ekrana Merhaba çıktısını verirken, ikinci satırın Merhaba adındaki değişkenin çıktısını vereceğidir. Tırnak işareti arasında yazılmayan bir metin öğesi çoğu durumda değişken olarak algılanır. Buna ekstra olarak rakamların tırnak içinde yazılmadığı sonucuna varabiliriz. Çünkü hiçbir değişken rakamla başlamaz.

Art arda eklenebilen öğeleri aşağıdaki gibi yapabiliriz.

int main() {
	int x = 20;
	cout << "Merhaba" << " benim yasim " << x << " dir";
}

Arka arkaya << işaretini kullanarak birden fazla öğeyi birleştirebiliriz. Çıktısı da;

Merhaba benim yasim 25 dir

olacaktır.

cin (Standart Girdi)

Kullanıcı ile etkileşime geçmeliyiz. Örneğin kullanıcıdan bir değer almalıyız ve aldığımız o değere bir takım matematiksel işlemler uygulamalı ve sonuca ulaşmalıyız. Bunu yapabilmek için ilk olarak kullanıcıdan nasıl veri alacağımızı görmeliyiz.

int main() {
	int x;
	cin >> x;
}

cout'ta yer alan << ifadesinin tam tersini alalım: Girdi alırken cin >> yapısını kullanmalıyız!

Örnek olarak çözeceğimiz problemi şöyle yazalım;

PROBLEM:

Kullanıcıdan 2 farklı değer alalım.

Alınan değerleri üçgenin bir kenarı ve hipotenüs, verilmeyen değeri ise ikinci kenarı kabul edelim.

Önce ikinci kenarı hesaplayalım ve akabinde üçgenin alanını bulalım.

 

ÇÖZÜM:

#include <iostream>
#include <math.h>
using namespace std;

int main() {
	double a,b,c;
	cout << "Ucgenin a kenarinin uzunlugunu girin: ";
	cin >> a;
	cout << "Ucgenin hipotenus uzunlugunu girin: ";
	cin >> c;
	cout << "\n\n";
	b = sqrt((c*c)-(a*a));
	cout << "Ucgenin b kenarinin uzunlugu: " << b;
	cout << "\n";
	cout << "Ucgenin Alani: " << (a*b)/2;
}

Öncelikle bu işlemi yapabilmek için programımıza ekstra olarak bir kütüphane dahil etmeliyiz. Temel matematik işlemleri için kullandığımız math.h kütüphanesini #include ile programımıza çağırdık. Bunun amacı üçgenin ikinci kenarını bulurken karekök alacak olmamızdır. Bu sebeple de b = sqrt((c*c)-(a*a)) işlemini gerçekleştirdik.

Programımız kullanıcıdan aldığı değerlere göre çıktı verecektir. Örneğin;

Ucgenin a kenarinin uzunlugunu girin: 5
Ucgenin hipotenus uzunlugunu girin: 13

olduğunu varsayalım. Program çıktı olarak;

Ucgenin b kenarinin uzunlugu: 12
Ucgenin Alani: 30

olarak verecektir.

cin ve string

cin yardımı ile önceki örneğimizde kullanıcıdan bir sayısal değer aldık. Fakat eğer bir metin almak istersek? Klasik olarak üstteki örneğimizdeki gibi yazarsak;

int main() {
	string a;
	cin >> a;
	cout << a;
}

ve kullanıcı "Mert Topuz" adında bir veri girerse çıktısı;

Mert

olacaktır. Çünkü bu ifade boşluk gibi karakterlerden sonrasını göstermeyecektir. Bunu önlemek için C++ bize getline() kavramını sunuyor. İşte aşağıdaki örnekle kullanımını öğrenebilirsiniz;

#include <iostream>
#include <string>
using namespace std;

int main() {
	string adSoyad;
	string webSitesi;
	cout << "Merhaba! Adin ve soyadini ogrenebilir miyim? : ";
		getline (cin, adSoyad);
	cout << "\nHosgeldin " << adSoyad << ". Web siten neydi? : ";
		getline (cin, webSitesi);
	cout << "\nEn yakin zamanda " << webSitesi << " adresindeki siteni ziyaret edecegim.";
}

Çıktısı ise görseldeki gibi olacaktır;


(kırmızı ile gösterilen yerler kullanıcının girdiği alanlardır)

Kullanıcılardan herhangi bir string ifadesi almanız gerekiyorsa çok zorunda olmadığınız sürece getline() parametresini kullanın.

YORUMLAR 0
Bu konuya henüz kimse yorum yapmadı.
İlk yorumu sen yapmak ister misin?
YORUM BIRAK
Şuanda bu yoruma cevap yazıyorsunuz:
İptal Et