Język C C++.pdf
(
228 KB
)
Pobierz
24888382 UNPDF
J˛ezykC/C++
MarcinSzpyrka
KatedraAutomatyki
AkademiaGórniczo-HutniczawKrakowie
c
MarcinSzpyrka,2005/06
Cz˛e´s´c1
Literatura
1.BrianW.Kernighan,DennisM.Ritchie:„J˛ezykANSIC”,WydawnictwaNaukowo–Tech-
niczne,Warszawa,2003.
2.BjarneStroustrup:„J˛ezykC++”,WydawnictwoNaukowo–Techniczne,Warszawa,2002.
3.BruceEckel:„ThinkinginC++”,2nded.,2000,(ksi˛a˙zkajestdost˛epnawsieciwww).
4.JerzyGr˛ebosz:„SymfoniaC++”,OficynaKallimach,Kraków,2000.
5.JerzyGr˛ebosz:„PasjaC++”,OficynaKallimach,Kraków,2000.
J˛ezykC
J˛ezykCzostałnapisanyprzezD.Ritchie’go.Pierwszyokresrozwojuj˛ezykatolata1969-1973.
Pocz˛atkowoj˛ezyktenbyłprzeznaczonydotworzeniaoprogramowaniasystemowego(przyjegopo-
mocyzostałnapisanysystemoperacyjnyUNIX).Wmiar˛eupływuczasustałsi˛ej˛ezykiemogólnego
przeznaczenia.
J˛ezykCjestuwa
˙
zanyzaj˛ezykumo
˙
zliwiaj˛acyszybkiepisanieefektywnychprogramów.Ł˛aczy
onwsobiezaletyj˛ezykówprogramowaniastrukturalnegowysokiegopoziomuzzaletaminiskiego
poziomuj˛ezykówasemblerowych.
Cechyj˛ezyka
•pełnyzakresinstrukcjisteruj˛acychwykonaniemprogramu,zawieraj˛acyinstrukcjep˛etli,warun-
kowegowykonaniaiwyboru;
•du
˙
zyzestawoperatorów,zktórychcz˛e´s´codpowiadawprostinstrukcjommaszynowymcodaje
mo
˙
zliwo´s´cwykorzystaniaprocesorakomputerowegotakefektywnie,jakwj˛ezykuasemblero-
wym;
•bogatyzestawprostychpredefiniowanychtypówdanychimo˙zliwo´s´ctworzeniazło˙zonych
strukturdanych;
•wska´znikinadaneifunkcje,wrazzarytmetyk˛aumo
˙
zliwiaj˛ac˛amanipulowaniewska´znikami
(adresamipami˛eci);
•preprocesorprzetwarzaj˛acytekstprogramu,umo˙zliwiaj˛acym.in.kompilacj˛ewarunkow˛a.
2
J˛ezykC/C++,cMarcinSzpyrka2005/06
J˛ezykC++
Autorempierwszejwersjij˛ezykajestBjarneStroustrup.StandardISOratyfikowanow1998roku.
Zwyj˛atkiemkilkudrobnychszczegółów,C++jestnadzbioremC.Ameryka´nskiInstytutStandardów
ANSIstoinastra˙zyjednolitegostandarduj˛ezyka,którynazywasi˛estandardemANSICiANSIC++.
Kluczowympoj˛eciemwC++jestklasa.Jestonatypemdefiniowanymprzezu
˙
zytkownika.Klasy
zapewniaj˛aukrywaniedanych,gwarantuj˛ainicjalizacj˛edanych,niejawn˛akonwersj˛etypówdlatypów
definiowanychprzezu
˙
zytkownika,dynamiczn˛atypizacj˛e,zarz˛adzaniepami˛eci˛akontrolowaneprzez
u˙zytkownikaimechanizmydoprzeci˛a˙zaniaoperatorów.
Cechyj˛ezyka
C++jestj˛ezykiemprogramowaniaogólnegoprzeznaczeniaukierunkowanymnaprogramowanie
systemowe,który
•jestulepszonymj˛ezykiemC,
•wspieraabstrakcj˛edanych(klasy),
•wspieraprogramowanieobiektowe,
•wspieraprogramowanieuogólnione(szablony).
Zasadyorganizacjikodu-programowaniestrukturalne
Wtrywialnymprzypadkuprogramzj˛ezykuC(C++)mo
˙
zeskłada´csi˛etylkozjednegoplikui
jednejfunkcji.
Funkcjajestwydzielon˛acz˛e´sci˛aprogramu,realizuj˛ac˛apewnezadanie.Kompletnyprogrammusi
zawiera´cfunkcj˛eonazwiemainodktórejrozpoczynasi˛ewykonanieprogramu.
Doprogramumo
˙
znadoł˛acza´cplikizawieraj˛acenagłówki(opis)funkcjizdefiniowanychwinnych
plikachlubfunkcjisystemowych(dyrektywainclude).
#include
<iostream>
int
main()
{
std::cout<<"C++\n";
}
Preprocesor
Pierwszymetapemkompilacjijesturuchomieniedlaka
˙
zdegoplikukompilowanegokodu´zródło-
wegopreprocesora.Jegopodstawowymzadaniemjestprzygotowaniekodudokompilacji,poprzez
wykonaniezawartychwkodziedyrektywpreprocesora.
Dyrektywypreprocesorarozpoczynaj˛asi˛eznakiem#is˛aumieszczanewosobnychliniach.Poza
dyrektyw˛awdanejliniimo˙zewyst˛api´cjedyniekomentarz.
Dyrektywa#includepowodujewstawieniewmiejscujejwyst˛apieniatre´scipodanegopliku.Dy-
rektywawyst˛apujewdwóchpostaciach,pierwsz˛awykorzystujesi˛edowł˛aczaniaplikównagłówko-
wychbibliotek,drug˛a,doplików,któresamipiszemy
J˛ezykC/C++,cMarcinSzpyrka2005/06
3
#include
<nazwa_pliku>
#include
"nazwa_pliku"
Preprocesor–ł˛aczenieplików
Wewł˛aczanymplikumog˛aznajdowa´csi˛ekolejnedyrektywy#include,wł˛aczaj˛acekolejnepliki.
Danyplikmo
˙
zeby´cwł˛aczonydoplikutylkoraz.Abyzapobiecewentualnemuwielokrotnemuwł˛a-
czeniudanegopliku,mo
˙
znawykorzysta´cdyrektywykompilacjiwarunkowej.
#ifndef
PLIK_X
#define
PLIK_X
//trescpliku
#endif
Je´sliplikzostaniewł˛aczonydokompilacjicho´craz,zdefiniowanazostanienazwaPLIK_X.Przy
kolejnejpróbiewł˛aczeniategoplikunazwaPLIK_Xb˛edzieju
˙
zzdefiniowanainamocykompilacji
warunkowejnicztegoplikuporazdrugikompilowanenieb˛edzie.
Kompilacjaikonsolidacja
Zprzygotowanegoprzezpreprocesorkodu´zródłowegogenerowanyjestkodwassemblerze,b˛e-
d˛acysymboliczn˛areprezentacj˛akodubinarnego.Procestenjestwykonywanyprzezgeneratorkodu.
Kodwassemblerzejestnast˛epnietłumaczonyprzeztranslator,nazywanyrównie
˙
zassemblerem,
nakodmaszynowy(binarny)uruchamialnyprzezprocesor.
Wszystkiemodułyprogramuwpostacikodumaszynowegos˛anast˛epnieł˛aczoneprzezlinkerz
dostarcznymizkompilatoremisystememoperacyjnymbibliotekamiimodułami,wcelustworzenia
programuuruchamialnego.Procestennazywamykonsolidacj˛a.
Tworzenieplikuwykonywalnego
preprocesor−!generatorkodu−!asembler−!linker
Plikinagłówkowe
Wrazzrozwojemj˛ezykaC++uległzmianiestyldoł˛aczaniaplikównagłówkowychdoprogramu.
Nowewersjekompilatorówdopuszczaj˛acoprawdadwiewersje,alewprzypadkukorzystaniaze
starszejwersjikompilatoryzgłaszaj˛auwagi.
#include
<iostream.h>//starawersja
#include
<iostream> //nowawersja
Biblioteki,którezostały„wspadku”zj˛ezykaCs˛aci˛agledost˛epnezrozszerzeniem„.h”.Nowy
styl(C++)doł˛aczaniatychbibliotekodrzucarozszerzenieijednocze´sniedodanazostajelitera„c”na
pocz˛atkunazwybiblioteki.
#include
<stdlib.h>//starawersja
#include
<cstdlib>//nowawersja
Przestrzenienazw
Ka˙zdyzbiórdefinicjiwbibliotecejestumieszczonywtzw.przestrzeninazw.Dzi˛ekitemu
wró
˙
znychprzestrzeniachnazwmog˛aistnie´cidentycznenazwybezwywołaniakolizji.Odwołanie
4
J˛ezykC/C++,cMarcinSzpyrka2005/06
si˛edokonkretnegoelementu(obiektu,funkcji)przestrzeninazwkoniecznejestpodaniejegonazwy
poprzedzonejnazw˛aprzestrzeniioperatoremzakresu,np.:
std::cout
.
Abyunikn˛a´ckonieczno´scikorzystaniazpełnychnazwmo
˙
znadoł˛aczy´cjejnazw˛ekorzystaj˛ac
zinstrukcjiusing(niejesttozalecaneprzywi˛ekszychprogramach).StandardowebibliotekiC++
umieszczones˛awprzestrzeninazwstd.
#include
<iostream>
usingnamespace
std;
Zasadypisaniakodu´zródłowego
•Nagłówekfunkcjizawiera(odlewej):typzwracanegowyniku,nazw˛efunkcjiilist˛eargumen-
tówumieszczon˛awnawiasachokr˛agłych(argumentyoddzielasi˛eprzecinkiem).
•Instrukcjeskładaj˛acesi˛enakodfunkcjiumieszczasi˛ewnawiasachklamrowych’{’,’}’.Para
nawiasówklamrowychmo
˙
zesłu
˙
zy
´
cdogrupowaniainstrukcji.Ci˛aginstrukcjiumieszczony
wewn˛atrznawiasówklamrowychokre´slanyjestmianeminstrukcjizło˙zonej.
•Ka
˙
zdainstrukcjawj˛ezykuC(C++)musiby´czako´nczona´srednikiem’;’.
´
Srednikanieumiesz-
czasi˛epozamykaj˛acymnawiasieklamrowym(s˛awyj˛atki).To´srednik,aniekonieclinii,
decydujeotymgdzieko´nczysi˛einstrukcja.Sam´sredniktraktowanyjestjakoinstrukcjapu-
sta.
•Niemo
˙
znadzieli´c(przenosi´cdonowejlinii)nazwzmiennych,funkcjiisłówkluczonych.
Zmienne1
Zmienn˛awj˛ezykuprogramowanianazywamywielko´s´c,któramo˙zeprzechowywa´cwarto´s´cnale-
˙
z˛ac˛adopewnegozbiorunazywanegotypemzmiennej.Zmiennajestjednoznacznieidentyfikowana
przezswoj˛anazw˛e(identyfikator).Ka˙zdazmienna,którajestu˙zywanawprogramiemusizosta´c
wcze´sniejzadeklarowana,tzn.nale
˙
zyokre´sli´cjejnazw˛eitypwarto´sci.
Identyfikatorem(nazw˛a)nazywamyci˛agliter,cyfriznakówpodkre´slenia,rozpoczynaj˛acysi˛e
odliterylubznakupodkre´slenia.Nazwaminiemog˛aby´csłowakluczowe,tj.słowazastrze
˙
zone
u˙zywanewkonstrukcjachj˛ezyka,np.:for,while,itd.
Przykładydeklaracji
int
i;
int
a,b;
float
x,y;
Zmienne2
Warto´s´czmiennejjesttym,coprzechowujemywobszarzepami˛eciokre´slanymprzeznazw˛e.W
momenciedeklaracjiwarto´s´czmiennejlokalnejjestnieokre´slona,zmienneglobalnes˛ainicjalizowane
nazero.
Typzmiennejokre´slajak˛awarto´s´cmo˙znawpisa´cdoobszaruwskazywanegoprzeznazw˛e.W
zale
˙
zno´sciodtypuzmiennej,innyjestrozmiarpami˛ecipotrzebnydojejzapami˛etania.Kompilator
J˛ezykC/C++,cMarcinSzpyrka2005/06
5
napodstawietypuokre´slajak˛ailo´s´cpami˛ecinale
˙
zyprzydzieli´czmiennejijakieoperacjes˛ananiej
dopuszczalne.
Donadawaniawarto´scizmiennejsłu
˙
zyinstrukcjaprzypisania(=).Winstrukcjiprzypisaniapo
lewejstronieznaku=znajdujesi˛eidentyfikatorzmiennej,za´spoprawejstroniewarto´s´clubwyra˙zenie
daj˛acewwynikuwarto´s´codpowiedniegotypu(zgodnegozzadeklarowanymtypemzmiennej).
Prostetypydanych
•Typlogiczny-typboolobejmujedwiewarto´scitrueifalse.
•Typyznakowe-typcharsłu˙zydoprzechowywaniaznakówwkodzieASCIIlubinnymsto-
sowanymnadanejmaszynie,jestonnaogółjednobajtowy.Doprzechowywaniaznakówz
wi˛ekszegozbioru(np.Unikod)słu˙zytypwchar_t.Jegorozmiarzale˙zyodimplementacji.
•Typycałkowite-typcałkowitywyst˛epujewtrzechpostaciachint,signedintiunsignedint
orazwtrzechrozmiarach:shortint(short),intilongint(long).
•Typyzmiennoprzecinkowe-typfloat(pojedynczaprecyzja),double(podwójnaprecyzja),
longdouble.Dokładneznaczenietychterminówzale˙zyodimplementacji.
•Typvoid-typpustyvoidoznaczabrakwarto
´
sci.
˙
Zadnazmiennaniemo
˙
zeby
´
ctypuvoid.
Je
˙
zeliwynikfunkcjijesttypuvoid,tooznaczato,
˙
zefunkcjanicniezwraca.
Stałenumerycznecałkowite
Liczbacałkowitaskładasi˛ezdowolnejliczbycyfr.Napocz˛atkumo
˙
zeznajdowa´csi˛eznak’−’
lub’+’.
Je´slistałacałkowitamie´scisi˛ewzakresieintjesttraktowanajakoint,je´sliniemie´scisi˛ewza-
kresieint(lubnako´ncuznajdujesi˛elitera’l’),amie´scisi˛ewzakresielongjesttraktowanajakolong.
Winnymprzypadkujesttraktowanajakodouble.
Stałebezznakudefiniujesi˛edopisuj˛acnako´nculiter˛e’u’:
12lu,123u
.
Stałaósemkowazaczynasi˛eodznaku’0’:012,0777
Stałaszesnastkowazaczynasi˛eodznaków’0x’:
0xffff,0x12fe
.Cyfry11-15s˛azast˛epo-
waneliterami’a’-’f’.
Stałenumerycznezmiennoprzecinkowe
Stałazmiennoprzecinkowaskładasi˛ezopcjonalnejcz˛e´scicałkowitej,znaku’.’,cz˛e´sciułamko-
wejorazopcjonalnejdefinicjiwykładnika.
Cz˛e´s´cułamkowajeststał˛acałkowit˛aniezawieraj˛acaznaków’+’ani’−’.
Cz˛e´s´cokre´slaj˛acawykładnikjestpoprzedzonaznakiem’e’,poktórymwyst˛epujeliczbacałko-
wita.
1.23,.23,0.23,1.,1.0,1.2e10,.23e
−
15
Plik z chomika:
FreeKwL
Inne pliki z tego folderu:
Język C C++.pdf
(228 KB)
diagnozowanie samochodów - programy.rar
(179131 KB)
Auto Enginuity ScanTool Speed Tracer OBD II.nrg
(195284 KB)
ETOS.rar
(495019 KB)
Repair Peugeot 206-406 multilanguage.ISO
(451810 KB)
Inne foldery tego chomika:
#2023
11 TYNA PRZEDSZKOLE11
2017 maj
2022
Aero2 - Bezpłatny Mobilny Internet 2013
Zgłoś jeśli
naruszono regulamin