• Sonuç bulunamadı

C++ Programming: Program Design Including Data Structures, Third Edition. Bölüm 3: Giriş/Çıkış

N/A
N/A
Protected

Academic year: 2022

Share "C++ Programming: Program Design Including Data Structures, Third Edition. Bölüm 3: Giriş/Çıkış"

Copied!
40
0
0

Yükleniyor.... (view fulltext now)

Tam metin

(1)

C++ Programming:

Program Design Including Data Structures, Third Edition

Bölüm 3: Giriş/Çıkış

(2)

C++ Programming: From Problem Analysis to Program Design, Third Edition 2

Bölümün Amaçları

• Akış (stream) nedir? Girdi/çıktı akışlarının işleyişi

• Standart bir giriş aygıtından veri okuması nasıl gerçekleşir?

• Bir programdaki ön tanımlı (predefined ) fonksiyonlar nasıl kullanılır?

• Bazı giriş akış fonksiyonlarının ( input stream functions) kullanılışı : get, ignore, fill,

(3)

C++ Programming: From Problem Analysis to Program Design, Third Edition 3

Bölümün Amaçları

• Girişlerdeki başarısızlıkları (input failure) izleyebilmek

• Standart bir çıktı aygıtına verinin nasıl yazıldığını öğrenmek

• Bir programda çıktının istenildiği şekilde elde edilmesini öğrenmek

• string veri tipini kullanarak giriş çıkış işlemlerinin nasıl yapıldığını öğrenmek

• Dosya giriş/çıkış işlemleri hakkında bilgilenmek

(4)

C++ Programming: From Problem Analysis to Program Design, Third Edition 4

Giriş /Çıkış Akışları

(Input/Output Streams)

• I/O: Kaynaktan hedefe baytların bir dizilişi (bayt akışı- stream of bytes)

• Bayt genellikle karakterlerle simgelenir.

Bazen farklı tipteki bilgilerin gerektiği programlar olabilir

• Akış (Stream) : Kaynaktan hedefe karakterlerin sıralanışıdır.

• Giriş Akışı (Input Stream) Bir giriş aygıtından bilgisayara karakterlerin sıralanışıdır.

• Çıkış Akışı (Output Stream): Bilgisayardan çıktı aletine karakterlerin sıralanışıdır.

(5)

C++ Programming: From Problem Analysis to Program Design, Third Edition 5

Standart I/O Aygıtları

• Klavyeden veriyi çıkarmak (extract-receive) ve ekrana göndermek için iostream

kullanılır.

• iostream iki tipte tanımlama içerir

istream - input stream

ostream - output stream

• iostream iki değişkene sahiptir.

cin – ortak girişi tutar

cout – ortak çıkışı tutar

(6)

C++ Programming: From Problem Analysis to Program Design, Third Edition 6

cin ve cout kullanımı

• cin ve cout, kullanabilmek için önişlemci direktifi (preprocessor directive)

#include <iostream> kullanılmalıdır.

Bildirimi şöyledir:

istream cin;

ostream cout;

• Giriş için akış değişkenleri (input stream variables): istream tipindedir.

• Çıkış akış değişkenleri (output stream variables): ostream tipindedir

(7)

C++ Programming: From Problem Analysis to Program Design, Third Edition 7

cin ve

Çıkartma İşleci (Extraction Operator ) >>

• Giriş deyimi sentaksı olarak cin ve çıkartma işleci (extraction operatör) >>

cin >> variable >> variable...;

kullanılır.

• Çıkartma işleci (extraction operator )>> ikili (binary) bir işleçtir.

Sol tarafındaki işlenen (operand) ise bir giriş akışı değişkenidir (örneğin is cin)

Sağ tarafındaki işlenen (operand) ise herhangi bir basit veri tipidir

(8)

C++ Programming: From Problem Analysis to Program Design, Third Edition 8

Standart Giriş

• >> işlecinin her kullanılışında giriş akışından (input stream) bir sonraki veri çıkartılır.

• Tek bir cin deyimi ile fazla sayıda değişken ifade etmekle, fazla çok sayıda cin deyimi ile her seferinde tek bir değişken tanımlamak

aynıdır.

• Tarama sırasında >> işleci tüm boş

karakterleri atlar . «Whitespace» olarak adlandırılır.

• «Whitespace» karakterler çıktısı alınamayan karakterler de olabilir.

(9)
(10)

C++ Programming: From Problem Analysis to Program Design, Third Edition 10

Datanın Okunması

• char tipinde bir verinin okunması için variable

>> çıkartma (extraction) operatörü boşluğu atlar ve sonraki karakteri bularak depolar

Tek bir karakterin okunmasından sonra okuma işlemi durur.

(11)

C++ Programming: From Problem Analysis to Program Design, Third Edition 11

Datanın Okunması

• int ya da double tipinde bir değişkenin okunması

>> çıkartma (extraction) işleci

boşlukları atlar, eğer işaret dijiti varsa bunu okuduktan sonra, sonraki dijitleri okur.

Okuma işlemi dijit olmayan bir «whitespace»

karakter ile sonlanır.

(12)

Example 3-1 int a, b;

double z;

char ch, ch1, ch2;

Statement Input Value Stored in Memory

1 cin >> ch; A ch = 'A‘

2 cin >> ch; AB ch = 'A', 'B' is held for later input

3 cin >> a; 48 a = 48

4 cin >> a; 46.35 a = 46, .35 is held for later input

5 cin >> z; 74.35 z = 74.35

6 cin >> z; 39 z = 39.0

7 cin >> z >> a; 65.78 38 z = 65.78, a = 38

(13)

Statement Input Value Stored in Memory

8 cin >> a >> b; 4 60 a = 4, b = 60

9 cin >> a >> ch >> z; 57 A 26.9 a = 57, ch = 'A', z = 26.9 10 cin >> a >> ch >> z; 57 A26.9 a = 57, ch = 'A', z = 26.9 11 cin >> a >> ch >> z; 57 A26.9 a = 57, ch = 'A', z = 26.9 12 cin >> a >> ch >> z; 57A26.9 a = 57, ch = 'A', z = 26.9 13 cin >> z >> ch >> a; 36.78B34 z = 36.78, ch = 'B', a = 34 14 cin >> z >> ch >> a; 36.78 B34 z = 36.78, ch = 'B', a = 34

15 cin >> a >> b >> z; 11 34 a = 11, b = 34, computer waits for the next number

(14)

Statement Input Value Stored in Memory

16 cin >> a >> z; 46 32.4 68 a = 46, z = 32.4,

68 is held for later input 17 cin >> a >> z; 78.49 a = 78, z = 0.49

18 cin >> ch >> a; 256 ch = '2', a = 56

19 cin >> a >> ch; 256 a = 256, computer waits for the input value for ch

20 cin >> ch1 >> ch2; A B ch1 = 'A', ch2 = 'B'

(15)

C++ Programming: From Problem Analysis to Program Design, Third Edition 15

Öntanımlı Fonksiyonlar

• Fonksiyon (alt program ): komutlar dizisidir.

• Aktivite olduğunda bir görev (iş) gerçekleştirir.

• main fonksiyonu bir program çalıştırıldığında (run) işlenir (executes).

• Diğer fonksiyonlar ise çağrıldıklarında çalıştırılır.

• C++ bir dizi hazır fonksiyon içerir. Bunlar

öntanımlı (predefined) fonksiyonlardır ve başlık

dosyaları ile çağrılan kütüphane fonksiyonlarının bir koleksiyonudur.

(16)

16

Öntanımlı Fonksiyonlar

• Başlık dosyası (Header file) pek çok fonksiyon içerebilir.

• Ön tanımlı bir fonksiyonun kullanılması için, başlık dosyasının ismi bilinmelidir.

• Ayrıca

Fonksiyonun ismi

Gerekli parametrelerinin sayısı

Her parametrenin tipi

Fonksiyonun hangi işlemi gerçekleştirdiğinin bilinmesi şarttır.

(17)

C++ Programming: From Problem Analysis to Program Design, Third Edition 17

Öntanımlı Fonksiyon Örneği

• pow (power) fonksiyonun kullanılması için , cmath başlık dosyası kullanılmalıdır.

• Pow fonksiyonunun 2 nümerik parametresi vardır

• Sentaksı pow(x,y) = xy

• x ve y argümanlardır.

• pow(2,3) fonksiyonunu parametreleri 2 ve 3 dür.

(18)

//Öntanımlı fonksiyonların kullanılması

#include <iostream>

#include <cmath>

#include <string>

using namespace std;

int main() {

double u, v;

string str;

cout << "Line 1: 2 to the power of 6 = "

<< pow(2, 6) << endl; //Line 1

u = 12.5; //Line 2

v = 3.0; //Line 3

cout << "Line 4: " << u

<< " to the power of "

<< v << " = " << pow(u, v)

<< endl; //Line 4

(19)

cout << "Line 5: Square root of 24 = "

<< sqrt(24.0) << endl; //Line 5

u = pow(8.0, 2.5); //Line 6

cout << "Line 7: u = " << u

<< endl; //Line 7 str = "Programming with C++"; //Line 8 cout << "Line 9: Length of str = "

<< str.length() << endl; //Line 9 return 0;

}

Sample Run:

Line 1: 2 to the power of 6 = 64

Line 4: 12.5 to the power of 3 = 1953.13 Line 5: Square root of 24 = 4.89898

Line 7: u = 181.019

Line 9: Length of str = 20

(20)

C++ Programming: From Problem Analysis to Program Design, Third Edition 20

cin ve get Fonksiyonu

• get fonksiyonu:

Sonraki karakterin okunmasını sağlar («whitespace» içerebilir),

Depolama karakteri cin ve get fonksiyonunun birlikte kullanılır. cin.get(varChar);

varChar

− char tipinde bir değişkendir

Fonksiyonun argümanıdır (parametresi)

(21)

C++ Programming: From Problem Analysis to Program Design, Third Edition 21

Nokta Notasyonu (Dot Notation)

cin.get(ch);

deyiminde cin ve get farklı iki tanımlayıcıdır ve nokta (dot) ile birbirlerinden ayrılırlar.

• Nokta (Dot) giriş akış değişkeni ismini bir fonksiyon ya da bir isimden ayırır.

• C++ dilinde , nokta (dot) üye erişim operatörüdür (member access operatör)

(22)

C++ Programming: From Problem Analysis to Program Design, Third Edition 22

Standart çıktının Yazılıması

• cout terim olarak << operatörü ile kullanılır.

cout < <ifade ya da manipülatör

<< ifade ya da manipülatör...;

• İfade değerlendirilir

• Değeri yazılır

• Manipülatör çıktının düzenlenmesi için kullanılır

(23)

C++ Programming: From Problem Analysis to Program Design, Third Edition 23

Çıktı Formatları

(Formatting Output)

• endl manipülatördür. Çıktıyı sonraki satıra taşır.

• setprecision(n): Çıktının ondalıklı bir sayı olarak görüntülenmesini sağlar.

• fixed : kKayan nokta sayılarının ( floating- point numbers) belirtilen sabit bir formatta görüntülenmesini sağlar

• showpoint : Çıktı mutlaka ondalıklı olarak görüntülenir.

(24)

C++ Programming: From Problem Analysis to Program Design, Third Edition 24

setw Manipülatörü

• setw sütunün istenilen uzunluk değerini verir.

• Eğer belirlenen sütün değeri, ifadede

belirlenmiş olan sayının sütunlarını aşarsa - İfadenin çıktısı sağa dayandırılır

- Eğer çıktıda setw ile belirlenmiş ama

kullanılmayan sütunlar varsa, boşluk olarak sol taraftan doldurulur.

(25)

25

Çıktı Formatı için İlave Komutlar

• Çıktı akış değişkenleri setfill komutunun

yazılması ile ile kullanılmayan kolonların 8değer atanmamış olan sütunların) bir karakter ile

doldurulmasını sağlar.

• left: Çıktıyı sola dayar.

setfill ile birlikte etkindir.

ostreamVar << left;

• left komutunu etkinsizleştirmek için unsetf kullanılır.

• right: çıktıyı sağa yaslar ostreamVar << right;

(26)

C++ Programming: From Problem Analysis to Program Design, Third Edition 26

Manipülator Tipleri

• İki tip manipülasyon gerçekleştirilir:

Parametreli

Parametresiz

• Parametreli: iomanip başlık dosyasının verilmesini gerektirir setprecision, setw, ve setfill

• Parametresiz : iostream başlık dosyası gerektirir.

- endl, fixed, showpoint, left, ve flush…..

(27)

C++ Programming: From Problem Analysis to Program Design, Third Edition 27

I/O ve string Veri Tipi

• Bir giriş akışı değişkeni (cin) and çıkarma (extraction) işleci >> birlikte «string» tipinde bir verinin okunmasını sağlar.

• Çıkarma (Extraction) operatörü

«whitespace» karakterleri atlar. Bir

«whitespace» karakter ile okuma durur.

Boşluk içeren dizgilerin (strings) bu operatör ile okunması mümkün değildir.

• getline fonksiyonu

Mevcut satırın sonuna kadar okuma gerçekleştirir

Boşlukların da okunması mümkündür.

(28)

C++ Programming: From Problem Analysis to Program Design, Third Edition 28

Dosya Giriş /Çıkışı (File Input/Output)

• File: ikinci bellekte (secondary storage) tutulan verileri gösterir.

• File I/O

1. fstream başlık dosyası (header) içerir.

2. Dosya akış değişkenleri bildirilir.

3. Dosya akış değişkenleri (file stream variables) giriş/çıkış kaynakları ile ilişkilendirilir.

4. Dosya akış değişkenleri >>, <<, veya diğer giriş /çıkış fonksiyonlarını kullanır

5. Dosya giriş/çıkışı kapatılır.

(29)

C++ Programming: From Problem Analysis to Program Design, Third Edition 29

Programming Example

• A theater owner agrees to donate a portion of gross ticket sales to a charity

• The program will prompt the user to input:

movie name

adult ticket price

child ticket price

number of adult tickets sold

number of child tickets sold

percentage of gross amount to be donated

(30)

C++ Programming: From Problem Analysis to Program Design, Third Edition 30

Programming Example I/O

• Inputs: movie name, adult and child ticket price, # adult and child tickets sold, and percentage of the gross to be donated

• Program output:

-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*

Movie Name: ...Duckey Goes to Mars Number of Tickets Sold: ... 2650

Gross Amount: ... $ 9150.00 Percentage of Gross Amount Donated: 10.00%

Amount Donated: ... $ 915.00 Net Sale: ... $ 8235.00

(31)

C++ Programming: From Problem Analysis to Program Design, Third Edition 31

Problem Analysis

• The program needs to:

1. Get the movie name

2. Get the price of an adult ticket price 3. Get the price of a child ticket price 4. Get the number of adult tickets sold 5. Get the number of child tickets sold

(32)

C++ Programming: From Problem Analysis to Program Design, Third Edition 32

Problem Analysis (continued)

6. Get the percentage of the gross amount donated to the charity

7. Calculate the gross amount

8. Calculate the amount donated to the charity 9. Calculate the net sale amount

10.Output the results

(33)

C++ Programming: From Problem Analysis to Program Design, Third Edition 33

Formulas

• Calculate the gross amount:

grossAmount = adultTicketPrice * noOfAdultTicketsSold + childTicketPrice

* noOfChildTicketsSold;

• Calculate the amount donated to the charity:

amountDonated = grossAmount *

percentDonation / 100;

• Calculate the net sale amount:

netSale = grossAmount – amountDonated;

(34)

C++ Programming: From Problem Analysis to Program Design, Third Edition 34

Variables

string movieName;

double adultTicketPrice;

double childTicketPrice;

int noOfAdultTicketsSold;

int noOfChildTicketsSold;

double percentDonation;

double grossAmount;

double amountDonated;

double netSaleAmount;

(35)

C++ Programming: From Problem Analysis to Program Design, Third Edition 35

Formatting Output

• First column is left-justified

• Numbers in second column are right-justified

• When printing a value in the first column, use left

• Before printing a value in the second column, use right

• Use setfill to fill the empty space between the first and second columns with dots

(36)

C++ Programming: From Problem Analysis to Program Design, Third Edition 36

Formatting Output (continued)

• In the lines showing gross amount, amount donated, and net sale amount

Use blanks to fill space between the $ sign and the number

• Before printing the dollar sign

Use setfill to set the filling character to blank

(37)

C++ Programming: From Problem Analysis to Program Design, Third Edition 37

Main Algorithm

1. Declare variables

2. Set the output of the floating-point to

Two decimal places

Fixed

Decimal point and trailing zeros

3. Prompt the user to enter a movie name

4. Input movie name using getline because it might contain spaces

(38)

C++ Programming: From Problem Analysis to Program Design, Third Edition 38

Main Algorithm (continued)

5. Prompt user for price of an adult ticket 6. Input price of an adult ticket

7. Prompt user for price of a child ticket 8. Input price of a child ticket

9. Prompt user for the number of adult tickets sold

(39)

C++ Programming: From Problem Analysis to Program Design, Third Edition 39

Main Algorithm (continued)

10.Input number of adult tickets sold

11.Prompt user for the number of child tickets sold

12.Input the number of child tickets sold

13.Prompt user for percentage of the gross amount donated

14.Input percentage of the gross amount donated

(40)

C++ Programming: From Problem Analysis to Program Design, Third Edition 40

Main Algorithm (continued)

15.Calculate the gross amount 16.Calculate the amount donated 17.Calculate the net sale amount 18.Output the results

Referanslar

Benzer Belgeler

PD4 XCK (USART External Clock Input/Output) T0 (Timer/Counter 0 External Counter Input) PCINT20 (Pin Change Interrupt 20). PD3 INT1 (External Interrupt

1- Büyükşehir statüsündeki 30 ilimiz ile Zonguldak il sınırlarından kara, hava ve deniz yolu ile (toplu ulaşım aracı, özel araç ve yaya vb.) yapılacak tüm

Klavyeden girilen iki sayıyı toplayıp ekrana yazdıran programın akış şemasını çizeceğiz.. Akış Şeması Örneği

Yurtiçinde ise Ağustos ayı işsizlik rakamının çift haneye çıkması ve para piyasasındaki sıkışıklık ile kısa vadeli tahvil ihalesine ilginin

Ekim ve Kasım aylarında halen üçüncü çeyreğin altında seyretse de endeksin yönünü yukarı çevirmiş olması kayda değer gelişme.. ZEW endeksi yaklaşık

Veri gündemi açısından sakin bir günde ABD fabrika siparişleri %-1 ile beklenti olan %-0,9 oranından sınırlı da olsa daha kötü geldi.. Akşam saatlerinde konuşan

Yurtdışına baktığımızda geçtiğimiz Çarşamba günü akşamı şahin FED sonrasında ABD’den gelen veriler bir miktar da olsa beklentilerin atında kalırken, Avro

Stanley Fisher ve William Dudley de Yellen’in şahinvari açıklamalarını destekleyici beyanat verdiler.. Açıklamalar sonrasında Dolar endeksi (DXY) son üç ayki en