Treść książki

Przejdź do opcji czytnikaPrzejdź do nawigacjiPrzejdź do informacjiPrzejdź do stopki
Podstawoweelementyikonstrukcje
23
Analizaprogramu.Stałeznakoweznak1iznak2zdefiniowanezkwalifikatoremconst.
Wfunkcjimainzadeklarowanozmienneznak3izntypuchar.Ponieważtozmienneautoma-
tyczne,ichwartościpoczątkoweprzypadkowe.Pierwszainstrukcjawyjściawdrugim
wierszuekranuwyświetlanapisiwartośćzmiennejznak1,tj.ćA’.Instrukcjacout.put(znak2)
drukujeznak2,tj.znaktabulacji.Kolejnainstrukcjawyjściadrukujewtymsamymwierszu
tekstpoznakutabulacji.Wprowadzanązklawiaturywartośćkoduzmiennejznak3(kodznaku
ćB’),którywASCIIjestrówny66)odczytujezestandardowegostrumieniawejściowegocin
funkcjaskładowaget(znak3),awyświetlanaekraniefunkcjaskładowaput(znak3).Następna
instrukcjapobierazbuforawejściowegozapomocąfunkcjiget(zn)znakćB’dozmiennejzn.
Ponieważjednakdlawprowadzeniategoznakudozmiennejzntrzebabyłonacisnąćklawisz
<Enter>,todobuforawejściowegoopróczznakućB’zostałwpisanyznaknowegowierszać\n’
iwłaśniekodtegoznaku(tj.wartość10)wyświetliłanastępnainstrukcjawyjścia.Terazbufor
wejściowyjestjużpustyiwywołaniefunkcjibezargumentowejget()wprowadzidoniegopo
naciśnięciuklawiszazliterąCinastępnie<Enter>kod67(dlaznakućC’)orazkod10(dla
znakuć\n’).Pierwszyznichzostaniewpisanydozmiennejzniwyświetlonyinstrukcjąwyjścia,
zaśdrugipozostaniewbuforzewejściowym.Ostatniedwieinstrukcjeprzedreturn,
cin.ignore()orazcin.get(),zapobiegajązamknięciuoknazwynikamidziałaniaprogramu:
cin.ignore()pobierapozostawionypoostatniejoperacjicin.get()znakć\n’ipomijago,opróż-
niającbuforwejściowy,cin.get()zaśoczekujenanaciśnięcieklawiszadowolnegoznakuipo
nim<Enter>,bądźtylko<Enter>.
$Uwaga!Buforwejściowy(przyczytaniuzklawiaturylubzpliku)jesttoniewielki,ciągły
obszarpamięci,organizowanyiutrzymywanyprzezsystemoperacyjny.Jeżeliczytamy
zklawiatury,tozadaniemtegobuforajestchwiloweprzechowywaniekodówznaków
(naciśniętychklawiszy),donaciśnięciaprzezużytkownikaklawisza<Enter>;dzięki
temunastępujewyrównaniemałejszybkościwprowadzaniaznakówzklawiaturyzdużą
szybkościąwczytywaniaznakówdostrumieniawejściowegocin.Ponaciśnięciuklawisza
<Enter>systemprzesyłaznakizbuforaklawiaturydostrumieniacin.
1.6.3.
Stałerzeczywiste
Stałarzeczywistajestreprezentacjąwartościtypudouble,longdoublelubfloatinależy
dopodzbioruliczbrzeczywistych.Stałątypudoublemożnazapisywaćwnotacjidziesiętnej
zkropkądziesiętną,np.0.0,2.8,–84.17,.345lubwnotacjiwykładniczej,np.1.18e8,3.1415E–3,
–3e12,gdzieznakelubEoznaczapodstawępotęgi10,adodatnialubujemnaliczbapotym
znakujestwykładnikiempotęgi.Dlatypufloat(pojedynczejprecyzji)dodajemypozapisie
liczbyspecyfikatorflubF,np.4.17f,
.28F(bezspecyfikatorafstałajestdomyślnietypu
double),adlatypulongdoubledodajemyllubL:np.1.0L,3.14159e–3L.
Przykład1.6
#iΠclude<iostream.h!
coΠstfloatf1=1.123456789f;
coΠstdoubled1=1.123456789E8;
coΠstdoubled2=.123456789;
iΠtmaiΠ(){
cout<<Wartoscf1=<<f1;
cout.setf(ios..scieΠtific);
cout.precisioΠ(8);
cout<<?ΠWartoscd1.<<d1;