Lekcja 3LEKCJA 3
Wypisywanie komunikatów na ekranie
We wszystkich programach, które utworzyliśmy podczas lekcji 1 i lekcji 2, przy
użyciu strumienia wyjściowego cout wypisywaliśmy komunikaty na ekranie. Teraz
będziemy wykorzystywać strumień cout do wyświetlania znaków, liczb całkowitych
takich jak 1001 liczb zmiennoprzecinkowych takich jak 0.12345. Po jej
przerobieniu będziesz rozumieć następujące zagadnienia podstawowe:
Przy użyciu strumienia wyjściowego cout możesz wyświetlać na ekranie znaki i
liczby.
C++ daje Ci możliwość generowania tabulatora, przechodzenia do nowej linii, a
nawet wydobywania dźwięku z głośnika komputera poprzez przesyłanie na cout
znaków specjalnych.
W języku C++ możesz w prosty sposób wyświetlać liczby w formacie
dziesiątkowym, ósemkowym lub szesnastkowym.
Przy użyciu operatorów kierunkowych w linii poleceń systemu operacyjnego
możesz skierować komunikaty wyjściowe, które twoje programy przesyłają na
cout, z ekranu na plik lub do drukarki.
Korzystając ze strumienia wyjściowego cerr twoje programy mogą przesyłać
komunikaty do standardowego urządzenia wyświetlającego błędy, co uniemożliwi
użytkownikowi kierowania komunikatów gdzie indziej.
Możesz formatować wyjście programu przy użyciu modyfikatora setw na strumieniu
wyjściowym.
Wyświetlanie liczb przy użyciu strumienia cout
Programy, które dotychczas utworzyłeś, wyświetlały przy użyciu strumienia cout
teksty znakowe (ciągi liter i cyfr ujęte w cudzysłów). Jak się wkrótce dowiesz,
można przy użyciu cout wyświetlać również liczby. Przedstawiony poniżej program
1001. CPP wyświetla na ekranie liczbę 1001:
#include
void main (void)
{
cout << 1001;
}
Skompiluj i wykonaj program. Na ekranie pojawi się liczba 1001, tak jak tutaj:
C:\> 1001
1001
Następnie przejdź do edycji programu i zmień instrukcję zawierającą cout tak,
aby wyświetlała ona liczbę 2002, czyli w następujący sposób:
cout << 2002;
Prócz tego, że możesz wyświetlać przy użyciu strumienia cout liczby całkowite
(liczby bez kropki dziesiętnej), masz także możliwość prezentować na ekranie
liczby zmiennoprzecinkowe, takie jak 0.12345. Przedstawiony niżej program
ZMIPRZEC.CPP wyświetla na ekranie liczbę 0.12345 przy użyciu strumienia cout:
#include
void main (void)
{
cout << 0.12345;
}
Tak jak przedtem skompiluj i uruchom ten program. Zobaczysz na ekranie
następujące wyjście:
C:\> ZMIPRZEC
0.12345
Wyświetlanie różnych wartości jednocześnie
Jak już wiesz, podwójny znak mniejszości jest operatorem wstawiania (ten
operator wstawia znaki do strumienia wyjściowego, z którego będą one
wyświetlone). Korzystając ze strumienia cout możesz wielokrotnie użyć operatora
wstawiania w jednej instrukcji. Na przykład, w przedstawionym niżej programie
PISZ1001.CPP czterokrotnie zastosowano ten operator, aby wyświetlić na ekranie
cyfry 1001:
#include
void main (void)
{
cout << 1 << 0 << 0 << 1;
}
Gdy skompilujesz i uruchomisz ten program, zobaczysz na ekranie:
C:\> PISZ1001
1001
Za każdym razem, gdy C++ napotyka operator wstawiania, to po prostu dołącza
występującą za nim liczbę lub znak do już znajdujących się na strumieniu
wyjściowym. Przedstawiony niżej program ULUBlO01.CPP wyświetla przy użyciu
strumienia cout ciąg znaków oraz liczbę:
#include
void main (void)
{
cout << "Moja ulubiona liczba to " << 1001;
}
Zwróć uwagę na spację za słowem to (w cudzysłowie), dzięki której liczba 1001
jest oddzielona od tego słowa o jedną spację. Gdyby nie było tej spacji, to
liczba byłaby wyświetlona tuż za słowem (otrzymalibyśmy na wyjściu to1001).
Analogicznie poniższy program 1001W.CPP wyświetla liczbę 1001 wewnątrz tekstu
znakowego:
#include
void main (void)
{
cout << "Liczba " << 1001 << " jest moją ulubioną";
}
Tak jak poprzednio zwróć uwagę na spacje przed i za liczbą 1001.
Na koniec przedstawiony niżej program MIESZ.CPP umieszcza na tym samym
strumieniu wyjściowym teksty, liczbę całkowitą i liczbę zmiennoprzecinkową:
#include
void main (void)
{
cout << "Gdy miałem " << 20 << " lat, zarabiałem " << 493.34 << endl;
}
Gdy skompilujesz i uruchomisz ten program, będziesz mieć na ekranie następujące
wyjście:
C:\> MIESZ
Gdy miałem 20 lat, zarabiałem 493.34
Specjalne znaki wyjściowe
Wszystkie programy z tej książki, które utworzyłeś dotąd, wyświetlały komunikaty
wyjściowe w jednej linii. Ale większość programów, które napiszesz później,
będzie wyświetlać więcej linii wyjścia. Na przykład, załóżmy, że tworzysz
program wypisujący na ekranie twój adres. Jak się domyślasz, będzie on zajmował
kilka linii.
Gdy chcesz przenieść kursor na początek następnej linii, to możesz umieścić
wewnątrz wypisywanego testu znakowego znaki \n. Na przykład, przedstawiony niżej
program DWIELIN.CPP wyświetla wyjście w dwóch liniach przy użyciu znaku nowej
linii:
#include
void main (void)
{
cout << "To jest pierwsza linia\nTo jest druga linia";
}
Gdy skompilujesz i uruchomisz ten program, dzięki znakom nowej linii otrzymasz
dwie linie wyjścia, tak jak tutaj:
C:\> DWIELIN
To jest pierwsza linia
To jest druga linia
Jeśli nie wyświetlasz tekstu, to możesz umieścić znaki nowej linii ujęte w
apostrofy. Na przykład, poniższy program NOWELIN.CPP wyświetla liczby 1,0,0 i 1
w oddzielnych liniach:
#include
void main (void)
{
cout << 1 << '\n' << 0 << '\n' << 0 << '\n' << 1;
}
Poza tym, że możesz przenosić kursor na początek następnej linii przy użyciu
znaków nowej linii, możesz także w programie stosować symbol endl (ang. end line
- koniec linii). Poniższy program ENDL.CPP ilustruje sposób wykorzystania endl w
celu przeniesienia kursora na początek nowej linii:
#include
void main (void)
{
cout << "Jestem uratowany..." << endl << "Dzięki C++";
}
Tak jak poprzednio, gdy skompilujesz i uruchomisz ten program, zobaczysz na
ekranie dwie linie wyjścia:
C:\> ENDL
Jestem uratowany...
Dzięki C++
Na koniec poniższy program ADRES.CPP wyświetla w kilku liniach adres wydawnictwa
Jamsa Press:
#include
void main (void)
{
cout << "Jamsa Press" << endl;
cout << "2975 South Rainbow, Soite I" << endl;
cout << "Las Vegas, NV 89102" << endl;
}
Inne znaki specjalne
Oprócz znaków nowej linii, dzięki którym program może przenosić kursor na
początek nowej linii, masz do dyspozycji znaki specjalne przedstawione w tabeli
1.
Tabela 1.
Znaki specjalne, które można stosować dla strumienia cout
ZnakiInterpretacja
\a
\b
\f
\n
\r
\t
\v
\\
\'
\"
\?
\0
\ooo
\xhhhAlarm (sygnał dźwiękowy)
Cofnięcie o jedno miejsce (backspace)
Przejście na początek następnej strony (formfeed)
Przejście na początek następnej linii (newline)
Przejście na początek bieżącej linii (powrót karetki)
Przejście do następnej pozycji w tabulacji w linii
Przejście do następnej pozycji w tabulacji pionowej
Znak backslash (\)
Znak apostrof (')
Znak cudzysłów (")
Znak zapytania (?)
Znak pusty
Wartość ósemkowa, taka jak \007
Wartość szesnastkowa, tak jak \xFFFF
Uwaga: Gdy używasz znaków specjalnych przedstawionych w tabeli, musisz
umieszczać je w apostrofach, jeśli korzystasz z nich samych, np. "In' albo w
cudzysłowie, jeśli wstawiasz je do tekstów, np. "Wygraj z\nC ++!".
W przedstawionym niżej programie wykorzystujemy znaki specjalne alarm (\a) i
tabulacji (\t) do wydobywania dźwięku z wbudowanego do komputera głośnika, a
następnie wyświetlenia słów Alarm Alarm Alarm oddzielonych znakami tabulacji
poziomej:
#include
void main (void)
{
cout << "Alarm\a\tAlarm\a\tAlarm\a" ;
}
Wyświetlanie wartości ósemkowych i szesnastkowych
Programy przedstawione dotąd w tej lekcji wyświetlały liczby w formacie
dziesiętnym. Ale będziesz być może pisać programy, w których należy wypisywać
wartości ósemkowe lub szesnastkowe. Aby to zrealizować, możesz w programach
umieszczać modyfikatory wyjścia dec, oct oraz hex na strumieniu wyjściowym.
Przedstawiony niżej program OCTHEX.CPP używa tych modyfikatorów do wyświetlania
liczb w formacie ósemkowym, szesnastkowym i dziesiątkowym:
#include
void main (void)
{
cout << "Ósemkowy: " << oct << 10 << ' ' << 20 << endl;
cout << "Szesnastkowy: " << hex << 10 << ' ' << 20 << endl;
cout << "Dziesiątkowy: " << dec << 10 << ' ' << 20 << endl;
}
Gdy skompilujesz i uruchomisz program, otrzymasz na ekranie następujące wyjście:
C:\> OCTHEX
Ósemkowy: 12 24
Szesnastkowy: a 14
Dziesiątkowy: 10 20
Uwaga: Gdy użyjesz jednego z przedstawionych modyfikatorów wyjścia do ustalenia
ósemkowego, szesnastkowego lub dziesiątkowego formatu wyjścia, to będzie on
obowiązywał dopóki nie zastosujesz innego modyfikatora albo do zakończenia
programu.
Kierowanie wyjścia do standardowego urządzenia informacji o błędach
Jak już wiesz, gdy twoje programy korzystają ze strumienia cout do wyświetlania
wyjścia, to możesz skierować ich wyjście do jakiegoś urządzenia lub pliku przy
użyciu operatorów kierunkowych wyjścia systemu operacyjnego. Jednak gdy twoje
programy napotykają błąd, to nie będziesz chciał przesyłać odpowiednich
komunikatów gdzie indziej niż na ekran. Gdybyś skierował je na plik, to
użytkownik mógłby nie dowiedzieć się, że wystąpił błąd.
Jeśli twoje programy muszą wyświetlić komunikat o błędzie, to powinieneś użyć
strumienia wyjściowego cerr. C++ przypisuje go do standardowego urządzenia
informacji o błędach systemu operacyjnego. Przedstawiony niżej program CERR.CPP
wyświetla na ekranie przy użyciu strumienia wyjściowego cerr komunikat treści
Ten Komunikat Pojawia się Zawsze.
#include
void main (void)
{
cerr << "Ten Komunikat Pojawia się Zawsze";
}
Skompiluj i uruchom ten program. Następnie spróbuj skierować jego wyjście na
plik przy użyciu operatora kierunkowego wyjścia:
C:\> CERR > NAZWPLIK.TXT
Ponieważ system operacyjny nie dopuści do skierowania na plik NAZWPLIK.EXT
wyjścia, które powinno być wypisywane na standardowym urządzenia informacji o
błędach, to komunikat pojawi się tylko na ekranie.
Sterowanie szerokością wyjścia
Wiele spośród przedstawionych wcześniej programów wyświetlało liczby na ekranie.
Aby zagwarantować poprawne wyświetlanie liczb (z odpowiednią liczbą spacji),
przed i za liczbami umieszczaliśmy znaki spacji. Jeśli wyświetlasz wyjście przy
użyciu strumieni cout i cerr, to możesz w programach określać szerokość wyjścia
dla każdej wartości za pomocą modyfikatora setw (ang. set width = ustaw
szerokość). Korzystając z setw podajesz w programie minimalną liczbę znaków,
jaką zajmie dana wartość. Na przykład, w poniższym programie SETW.CPP
modyfikator setw jest wykorzystywany do wyświetlania liczby 1001 na 3, 4, 5 i 6
miejscach. Aby korzystać z modyfikatora setw, musisz włączyć do programu plik
nagłówkowy iomanip.h:
#include
void main (void)
{
cout << "Moja ulubiona liczba to" << setw(3) << 1001 << endl ;
cout << "Moja ulubiona liczba to" << setw(4) << 1001 << endl ;
cout << "Moja ulubiona liczba to" << setw(5) << 1001 << endl ;
cout << "Moja ulubiona liczba to" << setw(6) << 1001 << endl ;
}
Gdy skompilujesz i uruchomisz ten program, otrzymasz na ekranie przedstawione tu
wyjście:
C:\> SETW
Moja ulubiona liczba to1001
Moja ulubiona liczba to1001
Moja ulubiona liczba to 1001
Moja ulubiona liczba to 1001
Podając szerokość przy użyciu setw określasz minimalną liczbę pozycji, jakie
zajmie dana wartość. W przypadku powyższego programu modyfikator setw(3) ustalał
minimum trzy znaki dla liczby. Jednak ponieważ wartośćl00l wymaga więcej niż
trzech pozycji, strumień cout użył rzeczywistej liczby potrzebnych znaków, czyli
czterech. Ponadto gdy ustalasz szerokość wyświetlanej wartości przy użyciu setw,
to podana liczba jest stosowana tylko do następnego elementu wyjścia. Jeśli
chcesz określić szerokość dla wielu wartości, to będziesz musiał wielokrotnie
użyć modyfikatora setw.
Uwaga: Powyższy program korzystał z pliku nagłówkowego iomanip.h. Jeśli chcesz,
to możesz poświęcić nieco czasu na wydrukowanie go i przeanalizowanie. Tak jak w
przypadku pliku iostream.h, ten plik także znajdziesz w podkatalogu INCLUDE
katalogu zawierającego pliki kompilatora.
Zapamiętaj
Podczas tej lekcji dowiedziałeś się jak możesz wykorzystywać strumień cout do
wyświetlania wyjścia na ekran w różny sposób. We wszystkich programach, jakie
utworzymy w dalszej części tej książki, będziemy wyświetlać ich wyjście przy
użyciu strumienia cout. Podczas lekcji 4 nauczysz się w jaki sposób używać w
programach zmiennych do przechowywania wartości, które mogą się zmieniać. Zanim
jednak przejdziesz do tej lekcji upewnij się, że opanowałeś już następujące
zagadnienia podstawowe:
Strumień wyjściowy cout pozwala wyświetlać znaki i liczby.
Przesyłając na strumień wyjściowy znaki specjalne program może wstawiać nową
linię, znak tabulacji i inne elementy sterujące.
Aby przenieść kursor do nowej linii, program może utworzyć nową linię przy
użyciu znaków \n lub modyfikatora endl.
Modyfikatory dec, oct oraz hex pozwalają wyświetlać w programach wartości w
formacie dziesiątkowym, ósemkowym i szesnastkowym.
Dzięki strumieniowi wyjściowemu cerr programy mogą wypisywać komunikaty na
standardowe urządzenie informacji o błędach systemu operacyjnego.
Przy użyciu modyfikatora setw można sterować szerokością wyjścia dla
wypisywanych wartości.
WsteczSpis treściDalej
Wyszukiwarka
Podobne podstrony:
Kris Jamsa Wygraj Z C lekcja32
Kris Jamsa Wygraj Z C lekcja23
Kris Jamsa Wygraj Z C lekcja38
Kris Jamsa Wygraj Z C lekcja35
Kris Jamsa Wygraj Z C lekcja20
Kris Jamsa Wygraj Z C lekcja27
Kris Jamsa Wygraj Z C lekcja34
Kris Jamsa Wygraj Z C lekcja18
Kris Jamsa Wygraj Z C lekcja17
Kris Jamsa Wygraj Z C lekcja25
Kris Jamsa Wygraj Z C lekcja14
Kris Jamsa Wygraj Z C lekcja36
Kris Jamsa Wygraj Z C lekcja 4
Kris Jamsa Wygraj Z C lekcja33
Kris Jamsa Wygraj Z C lekcja 7
Kris Jamsa Wygraj Z C lekcja30
Kris Jamsa Wygraj Z C lekcja12
Kris Jamsa Wygraj Z C lekcja28
Kris Jamsa Wygraj Z C lekcja 6
więcej podobnych podstron