INF2_24Z.pdf
(
124 KB
)
Pobierz
Politechnika Białostocka
Wydział Elektryczny
Katedra Elektrotechniki Teoretycznej i Metrologii
Spis treści
1. Opis stanowiska ............................................................................................. 3
1.1. Stosowana aparatura ............................................................................... 3
1.2. Oprogramowanie ...................................................................................... 3
2. Wiadomości teoretyczne................................................................................ 3
2.1. Operacje wejścia-wyjścia w języku C++ ................................................... 3
2.2. Struktura programu w języku C++ ............................................................ 7
2.3. Formatowanie wyjścia .............................................................................. 8
3. Przebieg ćwiczenia ....................................................................................... 13
4. Literatura ....................................................................................................... 15
5. Zagadnienia na zaliczenie ............................................................................ 15
Instrukcja
do pracowni specjalistycznej z przedmiotu
Informatyka 2
Kod przedmiotu:
EZ1C300 014
(studia niestacjonarne)
OPERACJE WEJŚCIA-WYJŚCIA W JĘZYKU C++.
STEROWANIE FORMATEM, MANIPULATORY
6. Wymagania BHP ........................................................................................... 15
Numer ćwiczenia
INF24Z
_____________
Materiały dydaktyczne przeznaczone dla studentów Wydziału Elektrycznego PB.
Autor:
dr inż. Jarosław Forenc
Białystok 2015
© Wydział Elektryczny, Politechnika Białostocka, 2015 (wersja 1.3)
Wszelkie prawa zastrzeżone. Żadna część tej publikacji nie może być kopiowana i odtwarzana
w jakiejkolwiek formie i przy użyciu jakichkolwiek środków bez zgody posiadacza praw
autorskich.
Informatyka 2
2 z 16
Instrukcja INF24Z
1. Opis stanowiska
1.1. Stosowana aparatura
Podczas zajęć wykorzystywany jest komputer klasy PC z systemem
operacyjnym Microsoft Windows (XP/Vista/7).
-
clog
- związany ze standardowym urządzeniem, na które chce się wypisywać
komunikaty o błędach (standardowo ekran) - strumień buforowany.
Za wysyłanie i odbieranie informacji ze strumienia odpowiadają operatory
<<
i
>>:
-
<<
- operator odpowiadający za wysyłanie informacji do strumienia, nazywany
jest często operatorem wstawiania (ang.
insert
lub
put to);
-
>>
- operator odpowiadający za wczytywanie informacji, nazywany jest
operatorem ekstrakcji (ang.
extract operator
lub
get from).
Zakładamy, że w programie znajdują się następujące deklaracje zmiennych
(wraz z inicjalizacją):
int
int
float
float
char
x = 10
y = 25;
z1 = 1.1234567;
z2 = 11.1234567;
txt[10] =
"Napis";
1.2. Oprogramowanie
Na komputerach zainstalowane jest środowisko programistyczne Microsoft
Visual Studio 2008 Standard Edition lub Microsoft Visual Studio 2008 Express
Edition zawierające kompilator Microsoft Visual C++ 2008.
2. Wiadomości teoretyczne
2.1. Operacje wejścia-wyjścia w języku C++
Operacje wejścia-wyjścia nie są częścią języka C++. Ich wykonywanie
umożliwiają biblioteki standardowo dołączane przez producenta kompilatora.
Wprowadzanie i wyprowadzanie informacji w języku C++ zostało zrealizowane za
pomocą
strumieni.
Wszystkie strumienie są obiektami odpowiednich
klas.
Wykorzystanie w programie strumieni wymaga dołączenia pliku nagłówkowego
iostream:
#include
<iostream>
-
wyświetlenie wartości zmiennej
x
typu
int
(pomiędzy nazwą strumienia
cout
i operatorem
<<
oraz pomiędzy operatorem
<<
i nazwą zmiennej
x
może nie
być spacji lub może znajdować się tam ich dowolna liczba):
cout << x;
10
W języku C++ dostępne są cztery predefiniowane strumienie:
-
cout
- związany ze standardowym urządzeniem wyjścia (ekran), nazwa
strumienia pochodzi od ang.
C-onsole OUT-put;
-
cin
- związany ze standardowym urządzeniem wejścia (klawiatura), nazwa
strumienia pochodzi od ang.
C-onsole IN-put;
-
cerr
- związany ze standardowym urządzeniem, na które chce się wypisywać
komunikaty o błędach (standardowo ekran) - strumień niebuforowany;
Informatyka 2
3 z 16
Instrukcja INF24Z
-
wyświetlenie wartości zmiennej
x
typu
int
poprzedzonej tekstem "x
=
":
cout <<
"x = "
<< x;
x = 10
-
wyświetlenie wartości dwóch zmiennych,
x
i
y,
typu
int
(pomiędzy liczbami nie
będzie żadnego odstępu, gdyż nie został on wstawiony do strumienia):
Informatyka 2
4 z 16
Instrukcja INF24Z
cout << x << y;
1025
Ogólne zasady dotyczące wyświetlania danych przy zastosowaniu strumienia
cout
i operatora
<<
są następujące:
-
liczby całkowite wyświetlane są w systemie dziesiętnym;
-
zmienne typów
char, unsigned char
wyświetlane są jako pojedyncze znaki;
-
liczby zmiennoprzecinkowe (float,
double)
wyświetlane są z dokładnością do
6 cyfr (część całkowita i ułamkowa, bez zbędnych zer);
-
wskaźniki
wyświetlane są w systemie szesnastkowym;
-
zmienne typów
char *, unsigned char *
wyświetlane są jako łańcuchy
znaków.
Zakładamy, że w programie znajdują się następujące deklaracje zmiennych:
-
wyświetlenie wartości dwóch zmiennych,
x
i
y,
typu
int
oddzielonych znakiem
spacji:
cout << x <<
" "
<< y;
10 25
-
wyświetlenie wartości dwóch zmiennych,
z1
i
z2,
typu
float
(domyślnie
wyświetlanych jest sześć pierwszych znaczących cyfr):
cout << z1 <<
" "
<< z2;
int
x;
float
z;
-
wczytanie zmiennej
x
typu
int:
1.12346 11.2346
cin >> x;
-
wyświetlenie łańcucha znaków:
cout << txt;
Napis
cin >> x >> z;
-
wczytanie zmiennej
x
typu
int
i zmiennej
z
typu
float
(przy wprowadzaniu
wartości zmiennych, użytkownik może oddzielić je od siebie dowolną liczbą
białych znaków, do których należą: spacja, tabulacja i enter):
-
wyświetlenie wartości zmiennych
x, y
i
txt
w oddzielnych wierszach
(za pierwszym razem do przejścia do nowego wiersza zastosowano
sekwencję
\n,
zaś za drugim - manipulator
endl):
cout << x <<
"\n"
<< y << endl << txt;
10
25
Napis
Ogólne zasady dotyczące wczytywania danych przy zastosowaniu strumienia
cin
i operatora
>>
są następujące:
-
białe znaki (spacja, tabulacja, enter) są ignorowane;
-
wczytywanie tekstów jest kończone po napotkaniu pierwszego białego znaku;
-
liczby wczytywane są w systemie dziesiętnym;
-
nie można umieszczać spacji pomiędzy znakiem liczby a jej wartością;
Informatyka 2
5 z 16
Instrukcja INF24Z
Informatyka 2
6 z 16
Instrukcja INF24Z
-
wczytywanie liczby całkowitej jest kończone, gdy kolejny znak nie jest cyfrą;
-
w liczbach zmiennoprzecinkowych nie może występować spacja w środku.
2.2. Struktura programu w języku C++
Program w języku C++ ma taką samą strukturę jak w języku C.
Najprostszy program w języku C++.
#include
<iostream>
int
main()
{
std::cout <<
"Witaj swiecie!"
<< std::endl;
}
W programie można stosować wszystkie funkcje znane z języka C (także te, które
dotyczącą operacji wejścia-wyjścia). Pliki nagłówkowe mają swoje
zoptymalizowane wersje, np. zamiast
math.h,
można dołączyć plik
cmath,
zamiast
time.h
-
ctime,
zamiast
string.h
-
cstring.
2.3. Formatowanie wyjścia
Domyślny sposób wyświetlania wartości zmiennych można zmodyfikować
stosując:
-
funkcje
setf
i
unsetf
z klasy
ios
ustawiające odpowiednie flagi;
-
funkcje z klasy
ios
zmieniające towarzyszące im parametry, np. szerokość,
precyzję;
-
manipulatory (modyfikatory).
Manipulatory są to specjalne wartości, które można wstawić do strumienia.
Powodują one zmianę sposobu formatowania wyświetlanych danych. Większość
manipulatorów działa ciągle, tzn. na wszystkich kolejnych danych wstawianych do
strumienia. Poniżej opisano najważniejsze manipulatory oraz podano przykłady ich
zastosowania.
hex, dec, oct
Wykonanie programu rozpoczyna się od funkcji
main().
W funkcji tej znajduje
się instrukcja wyświetlająca na ekranie tekst
"Witaj swiecie".
Tekst ten jest
wstawiany do strumienia
cout.
Na koniec do strumienia wstawiane jest przejście
do nowego wiersza (endl). W języku C++ nie jest wymagane umieszczanie na
końcu programu instrukcji
return 0;.
Przed nazwami identyfikatorów
cout
i
endl
umieszczony jest tekst
std::.
Oznacza on, że identyfikatory te pochodzą z biblioteki standardowej (dokładniej -
z tzw. przestrzeni nazw
std).
W celu uniknięcia ciągłego pisania
std::
przed
nazwami identyfikatorów, umieszcza się w programie dyrektywę
using
namespace std;.
Powyższy program przyjmie zatem postać:
Najprostszy program w języku C++.
-
określają system liczbowy, w którym są wyświetlane / wczytywane liczby:
hex
- szesnastkowy,
dec
- dziesiętny,
oct
- ósemkowy;
-
działają tylko dla liczb całkowitych,
-
domyślnie działa manipulator
dec;
int
x = 100;
#include
<iostream>
using namespace
std;
int
main()
{
cout <<
"Witaj swiecie!"
<< endl;
}
cout << x <<
" "
<< hex << x <<
" ";
cout << oct << x << endl;
cout << x << endl;
100 64 144
144
Informatyka 2
7 z 16
Instrukcja INF24Z
Informatyka 2
8 z 16
Instrukcja INF24Z
showpoint, noshowpoint
int
x = 10;
cout << dec << x <<
" "
<< showbase << x << noshowbase;
cout << hex << x <<
" "
<< showbase << x << noshowbase;
cout << oct << x <<
" "
<< showbase << x;
10 10
a 0xa
12 012
-
manipulator
showpoint
włącza, zaś
noshowpoint
wyłącza pokazywanie
nieznaczących zer i kropki dziesiętnej przy wyświetlaniu liczb
zmiennoprzecinkowych;
-
domyślnie działa manipulator
showpoint;
float
x = 10;
cout << showpoint << x <<
" "
<< noshowpoint << x;
fixed, scientific
10.0000 10
-
fixed
włącza notację dziesiętną zapisu liczb zmiennoprzecinkowych, zaś
scientific
- notację wykładniczą (naukową);
showpos, noshowpos
-
manipulator
showpos
włącza, zaś
noshowpos
wyłącza pokazywanie znaku
liczby dodatniej;
-
domyślnie działa manipulator
noshowpos;
int
x = 10;
float
y = 12.34567;
cout << showpos << x <<
" "
<< noshowpos << x << endl;
cout << showpos << y <<
" "
<< noshowpos << y << endl;
+10 10
+12.3457 12.3457
-
domyślnie liczby zmiennoprzecinkowe wyświetlane są z dokładnością do 6
cyfr (część całkowita i ułamkowa); włączenie manipulatora
fixed
powoduje,
że wartość 6 dotyczy liczby cyfr tylko części ułamkowej; włączenie
manipulatora
scientific
powoduje, że wartość 6 dotyczy tylko liczby cyfr
części ułamkowej mantysy; do zmiany dokładności służy manipulator
setprecision()
opisany w dalszej części instrukcji;
float
x = 100.123456;
cout << x << endl;
cout << fixed << x << endl;
cout << scientific << x << endl;
100.123
100.123459
1.001235e+002
showbase, noshowbase
-
manipulator
showbase
włącza, zaś
noshowbase
wyłącza wyświetlanie
0x
na początku liczby w systemie szesnastkowym i
0
na początku liczby
w systemie ósemkowym;
-
domyślnie działa manipulator
noshowbase;
Informatyka 2
9 z 16
Instrukcja INF24Z
endl
-
wstawia do strumienia znak przejścia do nowego wiersza;
-
endl
jest równoważne wstawieniu do strumienia
\n
oraz
flush;
Informatyka 2
10 z 16
Instrukcja INF24Z
Plik z chomika:
grzegorj
Inne pliki z tego folderu:
INF1_01.pdf
(457 KB)
INF1_01Z.pdf
(457 KB)
INF1_02.pdf
(250 KB)
INF1_02Z.pdf
(250 KB)
INF1_03.pdf
(124 KB)
Inne foldery tego chomika:
AdamByw
c++(PL book)
C++Builder 5
C++Builder 5 - Ćwiczenia praktyczne
CPP
Zgłoś jeśli
naruszono regulamin