Python C The Complete Manual - Issue 4 2023
Python C The Complete Manual - Issue 4 2023
The Complete
Coding Manual
Essential programming guides & projects
OVER
820
GUIDES
&TIPS
Not only can you learn new skills and master your
tech, but you can now SAVE 25% off all of our coding
and consumer tech digital and print guidebooks!
N Y H F23C N
www.pclpublications.com
The Complete
& Python
Manual
Unleash the power of Python and C++
Having a basic knowledge of programming can open many different
doors for the newcomer to explore. You can gain a better understanding
of how hardware and software work together, how your computer or
device functions and how incredible open-world gaming environments are
converted from ones and zeros to what’s on your monitor or TV.
Technology is everywhere and it’s all connected through programming.
Your TV, microwave, in-car entertainment and the Internet itself are all
reliant on good programming to make them work the way you want them
to. Within these pages are the building blocks to help you take your first
steps into the world of programming. We’ve taken two of the most
powerful and versatile programming languages available, Python and C++
and broken them down into bite-sized tutorials and guides to help you
learn how they work, and how to make them work for you.
www.pclpublications.com
&RQWHQWV
7KH&RPSOHWH& 3\WKRQ0DQXDO
4 ZZZSFOSXEOLFDWXLRQVFRP
&RQWHQWV
ZZZSFOSXEOLFDWLRQVFRP 5
Index
6 ZZZSFOSXEOLFDWLRQVFRP
Say Hello to Python
7KHUHDUHPDQ\GLƪHUHQWSURJUDPPLQJ
ODQJXDJHVDYDLODEOHWROHDUQDQGXVH
6RPHDUHFRPSOH[DQGLQFUHGLEO\
SRZHUIXODQGVRPHDUHH[WUHPHO\EDVLF
DQGXVHGDVPLQRUXWLOLWLHVIRURSHUDWLQJ
V\VWHPV3\WKRQVLWVVRPHZKHUHLQWKH
PLGGOHFRPELQLQJHDVHRIXVHZLWKD
JHQHURXVKHOSLQJRISRZHUWKDWDOORZV
WKHXVHUWRFUHDWHPLQRUXWLOLWLHVDUDQJH
RIH[FHOOHQWJDPHVDQGSHUIRUPDQFH
KHDY\FRPSXWDWLRQDOWDVNV
+RZHYHUWKHUHoVPRUHWR3\WKRQWKDQ
VLPSO\EHLQJDQRWKHUSURJUDPPLQJ
ODQJXDJH,WKDVDYLEUDQWDQGOLYHO\
FRPPXQLW\EHKLQGLWWKDWVKDUHV
NQRZOHGJHFRGHDQGSURMHFWLGHDVDV
ZHOODVEXJƬ[HVIRUIXWXUHUHOHDVHV
,WoVWKDQNVWRWKLVFRPPXQLW\WKDWWKH
ODQJXDJHKDVJURZQDQGWKULYHGDQGQRZ
LWoV\RXUWXUQWRWDNHWKHSOXQJHDQGOHDUQ
KRZWRSURJUDPLQ3\WKRQ
7KHƬUVWKDOIRIWKLVERRNKHOSV\RX
JHWVWDUWHGZLWKWKHODWHVWYHUVLRQRI
3\WKRQDQGIURPWKHUHJXLGH\RXRQKRZ
WRXVHVRPHRIWKHPRVWFRPPRQDQG
LQWHUHVWLQJIXQFWLRQVDQGIHDWXUHVRIWKH
ODQJXDJH%HIRUHORQJ\RXZLOOEHDEOHWR
FRGH\RXURZQKHOSIXOV\VWHPWRROVWH[W
DGYHQWXUHVDQGHYHQFRQWURODFKDUDFWHU
DVWKH\PRYHDURXQGWKHVFUHHQ
8 Why Python?
10 Equipment You Will Need
12 Getting to Know Python
14 How to Set Up Python in Windows
16 How to Set Up Python on a Mac
18 How to Set Up Python in Linux
ZZZSFOSXEOLFDWLRQVFRP 7
6D\+HOORWR3\WKRQ
:K\3\WKRQ"
7KHUHDUHPDQ\GLƪHUHQWSURJUDPPLQJODQJXDJHVDYDLODEOHIRUWKHPRGHUQFRPSXWHU
DQGVRPHVWLOODYDLODEOHIRUROGHUDQGELWFRPSXWHUVWRR6RPHRIWKHVHODQJXDJHV
DUHGHVLJQHGIRUVFLHQWLƬFZRUNRWKHUVIRUPRELOHSODWIRUPVDQGVXFK6RZK\FKRRVH
3\WKRQRXWRIDOOWKHUHVW"
PYTHON POWER
Ever since the earliest home computers were available, enthusiasts, users and professionals have toiled away until the wee
hours, slaving over an overheating heap of circuitry to create something akin to magic.
7KHVHSLRQHHUVRISURJUDPPLQJFDUYHGWKHLUZD\LQWRDQHZ 5HJDUGOHVVRIZKHWKHU\RXXVHDQ$QGURLGGHYLFHL26GHYLFH3&
IURQWLHUIRUJLQJVPDOOURXWLQHVWKDWHQDEOHGWKHOHWWHUn$oWRVFUROO 0DF/LQX[6PDUW79JDPHVFRQVROH03SOD\HU*36GHYLFHEXLOWLQ
DFURVVWKHVFUHHQ,WPD\QRWVRXQGWHUULEO\H[FLWLQJWRDJHQHUDWLRQ WRDFDUVHWWRSER[RUDWKRXVDQGRWKHUFRQQHFWHGDQGnVPDUWo
WKDWoVXVHGWRXOWUDKLJKGHƬQLWLRQJUDSKLFVDQGRSHQZRUOGPXOWL DSSOLDQFHVEHKLQGWKHPDOOLVSURJUDPPLQJ
SOD\HURQOLQHJDPLQJ+RZHYHUIRUW\VRPHWKLQJ\HDUVDJRLWZDV
EOLQGLQJO\EULOOLDQW $OOWKRVHDIRUHPHQWLRQHGGLJLWDOGHYLFHVQHHGLQVWUXFWLRQVWRWHOO
WKHPZKDWWRGRDQGDOORZWKHPWREHLQWHUDFWHGZLWK7KHVH
1DWXUDOO\WKHVHEHGURRPFRGHUVKHOSHGIRUPWKHIRXQGDWLRQVIRU LQVWUXFWLRQVIRUPWKHSURJUDPPLQJFRUHRIWKHGHYLFHDQGWKDWFRUH
HYHU\SLHFHRIGLJLWDOWHFKQRORJ\ZHXVHWRGD\6RPHZHQWRQWR FDQEHEXLOWXVLQJDYDULHW\RISURJUDPPLQJODQJXDJHV
EHFRPHFKLHIGHYHORSHUVIRUWRSVRIWZDUHFRPSDQLHVZKHUHDV
RWKHUVSXVKHGWKHDYDLODEOHKDUGZDUHWRLWVOLPLWVDQGIRXQGHGWKH 7KHODQJXDJHVLQXVHWRGD\GLƪHUGHSHQGLQJRQWKHVLWXDWLRQWKH
ELOOLRQSRXQGJDPLQJHPSLUHWKDWFRQWLQXDOO\DPD]HVXV SODWIRUPWKHGHYLFHoVXVHDQGKRZWKHGHYLFHZLOOLQWHUDFWZLWKLWV
8 3\WKRQ &&RGLQJ
:K\3\WKRQ"
HQYLURQPHQWRUXVHUV2SHUDWLQJV\VWHPVVXFKDV:LQGRZVPDF26 3\WKRQZDVFUHDWHGRYHUWZHQW\VL[\HDUVDJRDQGKDVHYROYHGWR
DQGVXFKDUHXVXDOO\DFRPELQDWLRQRI&&DVVHPEO\DQGVRPH EHFRPHDQLGHDOEHJLQQHUoVODQJXDJHIRUOHDUQLQJKRZWRSURJUDPD
IRUPRIYLVXDOEDVHGODQJXDJH*DPHVJHQHUDOO\XVH&ZKLOVWZHE FRPSXWHU,WoVSHUIHFWIRUWKHKREE\LVWHQWKXVLDVWVWXGHQWWHDFKHU
SDJHVFDQXVHDSOHWKRUDRIDYDLODEOHODQJXDJHVVXFKDV+70/-DYD DQGWKRVHZKRVLPSO\QHHGWRFUHDWHWKHLURZQXQLTXHLQWHUDFWLRQ
3\WKRQDQGVRRQ EHWZHHQHLWKHUWKHPVHOYHVRUDSLHFHRIH[WHUQDOKDUGZDUHDQGWKH
FRPSXWHULWVHOI
0RUHJHQHUDOSXUSRVHSURJUDPPLQJLVXVHGWRFUHDWHSURJUDPV
DSSVVRIWZDUHRUZKDWHYHUHOVH\RXZDQWWRFDOOWKHP7KH\oUH 3\WKRQLVIUHHWRGRZQORDGLQVWDOODQGXVHDQGLVDYDLODEOHIRU/LQX[
ZLGHO\XVHGDFURVVDOOKDUGZDUHSODWIRUPVDQGVXLWYLUWXDOO\HYHU\ :LQGRZVPDF2606'2626%H26,%0LVHULHVPDFKLQHVDQG
FRQFHLYDEOHDSSOLFDWLRQ6RPHRSHUDWHIDVWHUWKDQRWKHUVDQGVRPH HYHQ5,6&26,WKDVEHHQYRWHGRQHRIWKHWRSƬYHSURJUDPPLQJ
DUHHDVLHUWROHDUQDQGXVHWKDQRWKHUV3\WKRQLVRQHVXFKJHQHUDO ODQJXDJHVLQWKHZRUOGDQGLVFRQWLQXDOO\HYROYLQJDKHDGRIWKH
SXUSRVHODQJXDJH KDUGZDUHDQG,QWHUQHWGHYHORSPHQWFXUYH
3\WKRQLVZKDWoVNQRZQDVD+LJK/HYHO/DQJXDJHLQWKDWLWnWDONVo 6RWRDQVZHUWKHTXHVWLRQZK\S\WKRQ"6LPSO\SXWLWoVIUHHHDV\WR
WRWKHKDUGZDUHDQGRSHUDWLQJV\VWHPXVLQJDYDULHW\RIDUUD\V OHDUQH[FHSWLRQDOO\SRZHUIXOXQLYHUVDOO\DFFHSWHGHƪHFWLYHDQGD
YDULDEOHVREMHFWVDULWKPHWLFVXEURXWLQHVORRSVDQGFRXQWOHVV VXSHUEOHDUQLQJDQGHGXFDWLRQDOWRRO
PRUHLQWHUDFWLRQV:KLOVWLWoVQRWDVVWUHDPOLQHGDVD/RZ/HYHO
/DQJXDJHZKLFKFDQGHDOGLUHFWO\ZLWKPHPRU\DGGUHVVHVFDOO
VWDFNVDQGUHJLVWHUVLWVEHQHƬWLVWKDWLWoVXQLYHUVDOO\DFFHVVLEOH
DQGHDV\WROHDUQ
ZZZSFOSXEOLFDWLRQVFRP 9
6D\+HOORWR3\WKRQ
(TXLSPHQW<RX
:LOO1HHG
<RXFDQOHDUQ3\WKRQZLWKYHU\OLWWOHKDUGZDUHRULQLWLDOƬQDQFLDOLQYHVWPHQW<RX
GRQoWQHHGDQLQFUHGLEO\SRZHUIXOFRPSXWHUDQGDQ\VRIWZDUHWKDWoVUHTXLUHGLV
IUHHO\{DYDLODEOH
COMPUTER
2EYLRXVO\\RXoUHJRLQJWRQHHGDFRPSXWHULQRUGHUWROHDUQKRZWRSURJUDPLQ
3\WKRQDQGWRWHVW\RXUFRGH<RXFDQXVH:LQGRZV IURP;3RQZDUG RQHLWKHUD
RUELWSURFHVVRUDQ$SSOH0DFRU/LQX[LQVWDOOHG3&
AN IDE
$Q,'( ,QWHJUDWHG'HYHORSHU(QYLURQPHQW LVXVHGWRHQWHUDQGH[HFXWH3\WKRQ
FRGH,WHQDEOHV\RXWRLQVSHFW\RXUSURJUDPFRGHDQGWKHYDOXHVZLWKLQWKHFRGHDV
ZHOODVRƪHULQJDGYDQFHGIHDWXUHV7KHUHDUHPDQ\GLƪHUHQW,'(VDYDLODEOHVRƬQG
WKHRQHWKDWZRUNVIRU\RXDQGJLYHVWKHEHVWUHVXOWV
PYTHON SOFTWARE
PDF26DQG/LQX[DOUHDG\FRPHZLWK3\WKRQSUHLQVWDOOHGDVSDUWRIWKHRSHUDWLQJ
V\VWHPDVGRHVWKH5DVSEHUU\3L+RZHYHU\RXQHHGWRHQVXUHWKDW\RXoUHUXQQLQJ
WKHODWHVWYHUVLRQRI3\WKRQ:LQGRZVXVHUVQHHGWRGRZQORDGDQGLQVWDOO3\WKRQ
ZKLFKZHoOOFRYHUVKRUWO\
TEXT EDITOR
:KLOVWDWH[WHGLWRULVDQLGHDOHQYLURQPHQWWRHQWHUFRGHLQWRLWoVQRWDQDEVROXWH
QHFHVVLW\<RXFDQHQWHUDQGH[HFXWHFRGHGLUHFWO\IURPWKH,'/(EXWDWH[WHGLWRU
VXFKDV6XEOLPH7H[WRU1RWHSDGRƪHUVPRUHDGYDQFHGIHDWXUHVDQGFRORXUFRGLQJ
ZKHQHQWHULQJFRGH
INTERNET ACCESS
3\WKRQLVDQHYHUHYROYLQJHQYLURQPHQWDQGDVVXFKQHZYHUVLRQVRIWHQLQWURGXFH
QHZFRQFHSWVRUFKDQJHH[LVWLQJFRPPDQGVDQGFRGHVWUXFWXUHWRPDNHLWDPRUH
HƯFLHQWODQJXDJH+DYLQJDFFHVVWRWKH,QWHUQHWZLOONHHS\RXXSWRGDWHKHOS\RX
RXWZKHQ\RXJHWVWXFNDQGJLYHDFFHVVWR3\WKRQoVLPPHQVHQXPEHURIPRGXOHV
10 3\WKRQ &&RGLQJ
(TXLSPHQW<RX:LOO1HHG
THE RASPBERRY PI
:K\XVHD5DVSEHUU\3L"7KH5DVSEHUU\3LLVDWLQ\FRPSXWHUWKDWoVYHU\FKHDSWRSXUFKDVHEXWRƪHUVWKHXVHUDIDQWDVWLFOHDUQLQJ
platform. Its main operating system, Raspbian, comes preinstalled with the latest Python along with many Modules and extras.
RASPBERRY PI
7KH5DVSEHUU\3LLVWKHODWHVWYHUVLRQLQFRUSRUDWLQJDPRUH
SRZHUIXO&38PRUHPHPRU\:L)LDQG%OXHWRRWKVXSSRUW
<RXFDQSLFNXSD3LIRUDURXQG~RUDVDSDUWRINLWIRU
GHSHQGLQJRQWKH3LPRGHO\RXoUHLQWHUHVWHGLQ
FUZE PROJECT
7KH)8=(LVDOHDUQLQJHQYLURQPHQWEXLOWRQWKHODWHVWPRGHO
RIWKH5DVSEHUU\3L<RXFDQSXUFKDVHWKHZRUNVWDWLRQVWKDW
FRPHZLWKDQHOHFWURQLFVNLWDQGHYHQDURERWDUPIRU\RXWR
EXLOGDQGSURJUDP<RXFDQƬQGPRUHLQIRUPDWLRQRQWKH)8=(
DWwww.fuze.co.uk
Python 3 ¦ Linux
Scripting ¦ C++
BOOKS
:HKDYHVHYHUDOJUHDWFRGLQJ
WLWOHVDYDLODEOHYLDwww.
SFOSXEOLFDWLRQVFRP2XU3L
RASPBIAN ERRNVFRYHUKRZWREX\\RXU
ƬUVW5DVSEHUU\3LVHWLWXSDQG
7KH5DVSEHUU\3LoVPDLQRSHUDWLQJV\VWHPLVD'HELDQEDVHG XVHLWWKHUHDUHVRPHJUHDW
/LQX[GLVWULEXWLRQWKDWFRPHVZLWKHYHU\WKLQJ\RXQHHGLQ VWHSE\VWHSSURMHFWH[DPSOHV
DVLPSOHWRXVHSDFNDJH,WoVVWUHDPOLQHGIRUWKH3LDQGLVDQ DQGJXLGHVWRJHWWKHPRVW
LGHDOSODWIRUPIRUKDUGZDUHDQGVRIWZDUHSURMHFWV3\WKRQ IURPWKH5DVSEHUU\3LWRR un
yo
tutorials
SURJUDPPLQJDQGHYHQDVDGHVNWRSFRPSXWHU
ng
a di
ZZZSFOSXEOLFDWLRQVFRP 11
6D\+HOORWR3\WKRQ
*HWWLQJWR
.QRZ3\WKRQ
3\WKRQLVWKHJUHDWHVWFRPSXWHUSURJUDPPLQJODQJXDJHHYHUFUHDWHG,WHQDEOHV
\RXWRIXOO\KDUQHVVWKHSRZHURIDFRPSXWHULQDODQJXDJHWKDWoVFOHDQDQGHDV\
WR{XQGHUVWDQG
WHAT IS PROGRAMMING?
,WKHOSVWRXQGHUVWDQGZKDWDSURJUDPPLQJODQJXDJHLVEHIRUH\RXWU\WROHDUQRQHDQG3\WKRQLVQRGLƪHUHQW/HWoVWDNHD
look at how Python came about and how it relates to other languages.
PROGRAM COMMANDS
<RXPLJKWQRWXQGHUVWDQGVRPHRIWKH3\WKRQFRPPDQGVOLNHERZODSSHQGDQGFDNHFRRN ERZO
7KHƬUVWLVDOLVWWKHVHFRQGDQREMHFWZHoOOORRNDWERWKLQWKLVERRN7KHPDLQWKLQJWRNQRZLV
WKDWLWoVHDV\WRUHDGFRPPDQGVLQ3\WKRQ2QFH\RXOHDUQZKDWWKHFRPPDQGVGRLWoVHDV\WR
ƬJXUHRXWKRZDSURJUDPZRUNV
12 3\WKRQ &&RGLQJ
*HWWLQJWR.QRZ3\WKRQ
PYTHON 3 VS PYTHON 2
In a typical computing scenario, Python is complicated somewhat by the existence of two active versions of the language:
Python 2 and Python 3.
ZZZSFOSXEOLFDWLRQVFRP 13
6D\+HOORWR3\WKRQ
+RZWR6HW8S
3\WKRQLQ:LQGRZV
:LQGRZVXVHUVFDQHDVLO\LQVWDOOWKHODWHVWYHUVLRQRI3\WKRQYLDWKHPDLQ3\WKRQ
'RZQORDGVSDJH:KLOVWPRVWVHDVRQHG3\WKRQGHYHORSHUVPD\VKXQ:LQGRZVDVWKH
SODWIRUPRIFKRLFHIRUEXLOGLQJWKHLUFRGHLWoVVWLOODQLGHDOVWDUWLQJSRLQWIRUEHJLQQHUV
14 3\WKRQ &&RGLQJ
+RZWR6HW8S3\WKRQLQ:LQGRZV
ZZZSFOSXEOLFDWLRQVFRP 15
6D\+HOORWR3\WKRQ
+RZWR6HW8S
3\WKRQRQD0DF
,I\RXoUHUXQQLQJDQ$SSOH0DFWKHQVHWWLQJXS3\WKRQLVLQFUHGLEO\HDV\,QIDFWD
YHUVLRQRI3\WKRQLVDOUHDG\LQVWDOOHG+RZHYHU\RXVKRXOGPDNHVXUH\RXoUHUXQQLQJ
WKHODWHVWYHUVLRQ
INSTALLING PYTHON
Apple’s operating system comes with Python installed, so you don’t need to install it separately. However, Apple doesn’t
XSGDWH3\WKRQYHU\RIWHQDQG\RXoUHSUREDEO\UXQQLQJDQROGHUYHUVLRQ6RLWPDNHVVHQVHWRFKHFNDQGXSGDWHƬUVW
16 3\WKRQ &&RGLQJ
+RZWR6HW8S3\WKRQRQD0DF
ZZZSFOSXEOLFDWLRQVFRP 17
6D\+HOORWR3\WKRQ
+RZWR6HW8S
3\WKRQLQ/LQX[
3\WKRQYHUVLRQ[LVDOUHDG\LQVWDOOHGLQPRVW/LQX[GLVWULEXWLRQVEXWDVZHoUHJRLQJ
WREHXVLQJ3\WKRQ[WKHUHoVDOLWWOHZRUNZHQHHGWRGRƬUVWWRJHWKROGRILW
7KDQNIXOO\LWoVQRWWRRGLƯFXOW
PYTHON PENGUIN
/LQX[LVVXFKDYHUVDWLOHRSHUDWLQJV\VWHPWKDWLWoVRIWHQGLƯFXOWWRQDLOGRZQMXVWRQHZD\RIGRLQJVRPHWKLQJ'LƪHUHQW
GLVWULEXWLRQVJRDERXWLQVWDOOLQJVRIWZDUHLQGLƪHUHQWZD\VVRZHZLOOVWLFNWR/LQX[0LQWIRUWKLVSDUWLFXODUWXWRULDO
18 3\WKRQ &&RGLQJ
+RZWR6HW8S3\WKRQLQ/LQX[
ZZZSFOSXEOLFDWLRQVFRP 19
Index
20 ZZZSFOSXEOLFDWLRQVFRP
Getting Started with Python
ZZZSFOSXEOLFDWLRQVFRP 21
*HWWLQJ6WDUWHGZLWK3\WKRQ
6WDUWLQJ3\WKRQIRU
WKH)LUVW7LPH
:HoUHJRLQJWREHXVLQJWKH5DVSEHUU\3LDVRXU3\WKRQKDUGZDUHSODWIRUP7KH
ODWHVWYHUVLRQRI5DVSELDQFRPHVSUHLQVWDOOHGZLWK3\WKRQYHUVLRQWREHH[DFW
VRDVORQJDV\RXKDYHDYHUVLRQ6KHOODOORXUFRGHZLOOZRUN
STARTING PYTHON
We’re not going to go into the details of getting the Raspberry Pi up and running, there’s plenty of material already available
RQWKDWVXEMHFW+RZHYHURQFH\RXoUHUHDG\ƬUHXS\RXU3LDQGJHWUHDG\IRUFRGLQJ
22 3\WKRQ &&RGLQJ
6WDUWLQJ3\WKRQIRUWKH)LUVW7LPH
ZZZSFOSXEOLFDWLRQVFRP 23
*HWWLQJ6WDUWHGZLWK3\WKRQ
<RXU)LUVW&RGH
(VVHQWLDOO\\RXoYHDOUHDG\ZULWWHQ\RXUƬUVWSLHFHRIFRGHZLWKWKHnSULQW p+HOOR
HYHU\RQHq oIXQFWLRQIURPWKHSUHYLRXVWXWRULDO+RZHYHUOHWoVH[SDQGWKDWDQGORRNDW
HQWHULQJ\RXUFRGHDQGSOD\LQJDURXQGZLWKVRPHRWKHU3\WKRQH[DPSOHV
24 3\WKRQ &&RGLQJ
<RXU)LUVW&RGH
ZZZSFOSXEOLFDWLRQVFRP 25
*HWWLQJ6WDUWHGZLWK3\WKRQ
6DYLQJDQG([HFXWLQJ
<RXU&RGH
:KLOVWZRUNLQJLQWKH,'/(6KHOOLVSHUIHFWO\ƬQHIRUVPDOOFRGHVQLSSHWVLWoVQRW
GHVLJQHGIRUHQWHULQJORQJHUSURJUDPOLVWLQJV,QWKLVVHFWLRQ\RXoUHJRLQJWREH
LQWURGXFHGWRWKH,'/((GLWRUZKHUH\RXZLOOEHZRUNLQJIURPQRZRQ
EDITING CODE
You will eventually reach a point where you have to move on from inputting single lines of code into the Shell. Instead, the
IDLE Editor will allow you to save and execute your Python code.
26 3\WKRQ &&RGLQJ
6DYLQJDQG([HFXWLQJ<RXU&RGH
ZZZSFOSXEOLFDWLRQVFRP 27
*HWWLQJ6WDUWHGZLWK3\WKRQ
([HFXWLQJ&RGHIURP
WKH&RPPDQG/LQH
$OWKRXJKZHoUHZRUNLQJIURPWKH*8,,'/(WKURXJKRXWWKLVERRNLWoVZRUWKWDNLQJ
DORRNDW3\WKRQoVFRPPDQGOLQHKDQGOLQJ:HDOUHDG\NQRZWKHUHoVDFRPPDQGOLQH
YHUVLRQRI3\WKRQEXWLWoVDOVRXVHGWRH[HFXWHFRGH
28 3\WKRQ &&RGLQJ
([HFXWLQJ&RGHIURPWKH&RPPDQG/LQH
ZZZSFOSXEOLFDWLRQVFRP 29
*HWWLQJ6WDUWHGZLWK3\WKRQ
1XPEHUVDQG([SUHVVLRQV
:HoYHVHHQVRPHEDVLFPDWKHPDWLFDOH[SUHVVLRQVZLWK3\WKRQVLPSOHDGGLWLRQDQGWKH
OLNH/HWoVH[SDQGRQWKDWQRZDQGVHHMXVWKRZSRZHUIXO3\WKRQLVDVDFDOFXODWRU<RX
FDQZRUNZLWKLQWKH,'/(6KHOORULQWKH(GLWRUZKLFKHYHU\RXOLNH
30 3\WKRQ &&RGLQJ
1XPEHUVDQG([SUHVVLRQV
ZZZSFOSXEOLFDWLRQVFRP 31
*HWWLQJ6WDUWHGZLWK3\WKRQ
8VLQJ&RPPHQWV
:KHQZULWLQJ\RXUFRGHWKHƮRZRILWZKDWHDFKYDULDEOHGRHVKRZWKHRYHUDOO
SURJUDPZLOORSHUDWHDQGVRRQLVDOOLQVLGH\RXUKHDG$QRWKHUSURJUDPPHUFRXOG
IROORZWKHFRGHOLQHE\OLQHEXWRYHUWLPHLWFDQEHFRPHGLƯFXOWWRUHDG
#COMMENTS!
Programmers use a method of keeping their code readable by commenting on certain sections. If a variable is used, the
programmer comments on what it’s supposed to do, for example. It’s just good practise.
32 3\WKRQ &&RGLQJ
8VLQJ&RPPHQWV
ZZZSFOSXEOLFDWLRQVFRP 33
*HWWLQJ6WDUWHGZLWK3\WKRQ
:RUNLQJZLWK9DULDEOHV
:HoYHVHHQVRPHH[DPSOHVRIYDULDEOHVLQRXU3\WKRQFRGHDOUHDG\EXWLWoVDOZD\V
ZRUWKJRLQJWKURXJKWKHZD\WKH\RSHUDWHDQGKRZ3\WKRQFUHDWHVDQGDVVLJQVFHUWDLQ
YDOXHVWRDYDULDEOH
VARIOUS VARIABLES
You’ll be working with the Python 3 IDLE Shell in this tutorial. If you haven’t already, open Python 3 or close down the previous
IDLE Shell to clear up any old code.
34 3\WKRQ &&RGLQJ
:RUNLQJZLWK9DULDEOHV
ZZZSFOSXEOLFDWLRQVFRP 35
*HWWLQJ6WDUWHGZLWK3\WKRQ
8VHU,QSXW
:HoYHVHHQVRPHEDVLFXVHULQWHUDFWLRQZLWKWKHFRGHIURPDIHZRIWKHH[DPSOHV
HDUOLHUVRQRZZRXOGEHDJRRGWLPHWRIRFXVVROHO\RQKRZ\RXZRXOGJHWLQIRUPDWLRQ
IURPWKHXVHUWKHQVWRUHDQGSUHVHQWLW
USER FRIENDLY
The type of input you want from the user will depend greatly on the type of program you’re coding. For example, a game may
ask for a character’s name, whereas a database can ask for personal details.
36 3\WKRQ &&RGLQJ
8VHU,QSXW
ZZZSFOSXEOLFDWLRQVFRP 37
*HWWLQJ6WDUWHGZLWK3\WKRQ
&UHDWLQJ)XQFWLRQV
1RZWKDW\RXoYHPDVWHUHGWKHXVHRIYDULDEOHVDQGXVHULQSXWWKHQH[WVWHSLVWRWDFNOH
IXQFWLRQV<RXoYHDOUHDG\XVHGDIHZIXQFWLRQVVXFKDVWKHSULQWFRPPDQGEXW3\WKRQ
HQDEOHV\RXWRGHƬQH\RXURZQIXQFWLRQV
FUNKY FUNCTIONS
A function is a command that you enter into Python to do something. It’s a little piece of self-contained code that takes data,
works on it and then returns the result.
38 3\WKRQ &&RGLQJ
&UHDWLQJ)XQFWLRQV
FORGING FUNCTIONS
7KHUHDUHPDQ\GLƪHUHQWIXQFWLRQV\RXFDQLPSRUWFUHDWHGE\RWKHU3\WKRQSURJUDPPHUVDQG\RXZLOOXQGRXEWHGO\FRPH
across some excellent examples in the future; you can also create your own with the def command.
ZZZSFOSXEOLFDWLRQVFRP 39
*HWWLQJ6WDUWHGZLWK3\WKRQ
&RQGLWLRQVDQG/RRSV
&RQGLWLRQVDQGORRSVDUHZKDWPDNHVDSURJUDPLQWHUHVWLQJWKH\FDQEHVLPSOHRU
UDWKHUFRPSOH[+RZ\RXXVHWKHPGHSHQGVJUHDWO\RQZKDWWKHSURJUDPLVWU\LQJWR
DFKLHYHWKH\FRXOGEHWKHQXPEHURIOLYHVOHIWLQDJDPHRUMXVWGLVSOD\LQJDFRXQWGRZQ
TRUE CONDITIONS
Keeping conditions simple to begin with makes learning to program a more enjoyable experience. Let’s start then by checking
if something is TRUE, then doing something else if it isn’t.
40 3\WKRQ &&RGLQJ
&RQGLWLRQVDQG/RRSV
LOOPS
$ORRSORRNVTXLWHVLPLODUWRDFRQGLWLRQEXWWKH\DUHVRPHZKDWGLƪHUHQWLQWKHLURSHUDWLRQ$ORRSZLOOUXQWKURXJKWKHVDPH
block of code a number of times, usually with the support of a condition.
ZZZSFOSXEOLFDWLRQVFRP 41
*HWWLQJ6WDUWHGZLWK3\WKRQ
3\WKRQ0RGXOHV
:HoYHPHQWLRQHGPRGXOHVSUHYLRXVO\ WKH0DWKPRGXOH EXWDVPRGXOHVDUHVXFKD
ODUJHSDUWRIJHWWLQJWKHPRVWIURP3\WKRQLWoVZRUWKGHGLFDWLQJDOLWWOHPRUHWLPHWR
WKHP,QWKLVLQVWDQFHZHoUHXVLQJWKH:LQGRZVYHUVLRQRI3\WKRQ
MASTERING MODULES
Think of modules as an extension that’s imported into your Python code to enhance and extend its capabilities. There are
countless modules available and as we’ve seen, you can even make your own.
42 3\WKRQ &&RGLQJ
3\WKRQ0RGXOHV
ZZZSFOSXEOLFDWLRQVFRP 43
Index
44 ZZZSFOSXEOLFDWLRQVFRP
Working with Data
46 Lists
48 Tuples
50 Dictionaries
52 Splitting and Joining Strings
54 Formatting Strings
56 Date and Time
58 Opening Files
60 Writing to Files
62 Exceptions
64 Python Graphics
ZZZSFOSXEOLFDWLRQVFRP 45
:RUNLQJZLWK'DWD
/LVWV
/LVWVDUHRQHRIWKHPRVWFRPPRQW\SHVRIGDWDVWUXFWXUHV\RXZLOOFRPHVDFURVVLQ
3\WKRQ$OLVWLVVLPSO\DFROOHFWLRQRILWHPVRUGDWDLI\RXSUHIHUWKDWFDQEHDFFHVVHG
DVDZKROHRULQGLYLGXDOO\LIZDQWHG
46 3\WKRQ &&RGLQJ
/LVWV
ZZZSFOSXEOLFDWLRQVFRP 47
:RUNLQJZLWK'DWD
7XSOHV
7XSOHVDUHYHU\PXFKLGHQWLFDOWROLVWV+RZHYHUZKHUHOLVWVFDQEHXSGDWHGGHOHWHGRU
FKDQJHGLQVRPHZD\DWXSOHUHPDLQVDFRQVWDQW7KLVLVFDOOHGLPPXWDEOHDQGWKH\oUH
SHUIHFWIRUVWRULQJƬ[HGGDWDLWHPV
48 3\WKRQ &&RGLQJ
7XSOHV
ZZZSFOSXEOLFDWLRQVFRP 49
:RUNLQJZLWK'DWD
'LFWLRQDULHV
/LVWVDUHH[WUHPHO\XVHIXOEXWGLFWLRQDULHVLQ3\WKRQDUHE\IDUWKHPRUHWHFKQLFDOZD\
RIGHDOLQJZLWKGDWDLWHPV7KH\FDQEHWULFN\WRJHWWRJULSVZLWKDWƬUVWEXW\RXoOOVRRQ
EHDEOHWRDSSO\WKHPWR\RXURZQFRGH
KEY PAIRS
A dictionary is like a list but instead each data item comes as a pair, these are known as Key and Value. The Key part must be
unique and can either be a number or string whereas the Value can be any data item you like.
50 3\WKRQ &&RGLQJ
'LFWLRQDULHV
ZZZSFOSXEOLFDWLRQVFRP 51
:RUNLQJZLWK'DWD
6SOLWWLQJDQG
-RLQLQJ6WULQJV
:KHQGHDOLQJZLWKGDWDLQ3\WKRQHVSHFLDOO\IURPDXVHUoVLQSXW\RXZLOOXQGRXEWHGO\
FRPHDFURVVORQJVHWVRIVWULQJV$XVHIXOVNLOOWROHDUQLQ3\WKRQSURJUDPPLQJLVEHLQJ
DEOHWRVSOLWWKRVHORQJVWULQJVIRUEHWWHUUHDGDELOLW\
STRING THEORIES
You’ve already looked at some list functions, using .insert, .remove, and .pop but there are also functions that can be applied
to strings.
52 3\WKRQ &&RGLQJ
6SOLWWLQJDQG-RLQLQJ6WULQJV
ZZZSFOSXEOLFDWLRQVFRP 53
:RUNLQJZLWK'DWD
)RUPDWWLQJ6WULQJV
:KHQ\RXZRUNZLWKGDWDFUHDWLQJOLVWVGLFWLRQDULHVDQGREMHFWV\RXPD\RIWHQZDQW
WRSULQWRXWWKHUHVXOWV0HUJLQJVWULQJVZLWKGDWDLVHDV\HVSHFLDOO\ZLWK3\WKRQDV
HDUOLHUYHUVLRQVRI3\WKRQWHQGHGWRFRPSOLFDWHPDWWHUV
STRING FORMATTING
Since Python 3, string formatting has become a much neater process, using the .format function combined with curly brackets.
It’s a more logical and better formed approach than previous versions.
54 3\WKRQ &&RGLQJ
)RUPDWWLQJ6WULQJV
ZZZSFOSXEOLFDWLRQVFRP 55
:RUNLQJZLWK'DWD
'DWHDQG7LPH
:KHQZRUNLQJZLWKGDWDLWoVRIWHQKDQG\WRKDYHDFFHVVWRWKHWLPH)RUH[DPSOH\RX
PD\ZDQWWRWLPHVWDPSDQHQWU\RUVHHDWZKDWWLPHDXVHUORJJHGLQWRWKHV\VWHPDQG
IRUKRZORQJ/XFNLO\DFTXLULQJWKHGDWHDQGWLPHLVHDV\WKDQNVWRWKH7LPHPRGXOH
TIME LORDS
The time module contains functions that help you retrieve the current system time, reads the date from strings, formats the
time and date and much more.
56 3\WKRQ &&RGLQJ
'DWHDQG7LPH
ZZZSFOSXEOLFDWLRQVFRP 57
:RUNLQJZLWK'DWD
2SHQLQJ)LOHV
,Q3\WKRQ\RXFDQUHDGWH[WDQGELQDU\ƬOHVLQ\RXUSURJUDPV<RXFDQDOVRZULWHWRƬOH
ZKLFKLVVRPHWKLQJZHZLOOORRNDWQH[W5HDGLQJDQGZULWLQJWRƬOHVHQDEOHV\RXWR
RXWSXWDQGVWRUHGDWDIURP\RXUSURJUDPV
58 3\WKRQ &&RGLQJ
2SHQLQJ)LOHV
ZZZSFOSXEOLFDWLRQVFRP 59
:RUNLQJZLWK'DWD
:ULWLQJWR)LOHV
7KHDELOLW\WRUHDGH[WHUQDOƬOHVZLWKLQ3\WKRQLVFHUWDLQO\KDQG\EXWZULWLQJWRDƬOHLV
EHWWHUVWLOO8VLQJWKHZULWH IXQFWLRQ\RXoUHDEOHWRRXWSXWWKHUHVXOWVRIDSURJUDPWR
DƬOHWKDW\RXFDQWKHQUHDG EDFNLQWR3\WKRQ
60 3\WKRQ &&RGLQJ
:ULWLQJWR)LOHV
ZZZSFOSXEOLFDWLRQVFRP 61
:RUNLQJZLWK'DWD
([FHSWLRQV
:KHQFRGLQJ\RXoOOQDWXUDOO\FRPHDFURVVVRPHLVVXHVWKDWDUHRXWRI\RXUFRQWURO
/HWoVDVVXPH\RXDVNDXVHUWRGLYLGHWZRQXPEHUVDQGWKH\WU\WRGLYLGHE\]HUR7KLV
ZLOOFUHDWHDQHUURUDQGEUHDN\RXUFRGH
EXCEPTIONAL OBJECTS
5DWKHUWKDQVWRSWKHƮRZRI\RXUFRGH3\WKRQLQFOXGHVH[FHSWLRQREMHFWVZKLFKKDQGOHXQH[SHFWHGHUURUVLQWKHFRGH<RX
can combat errors by creating conditions where exceptions may occur.
62 3\WKRQ &&RGLQJ
([FHSWLRQV
ZZZSFOSXEOLFDWLRQVFRP 63
:RUNLQJZLWK'DWD
3\WKRQ*UDSKLFV
:KLOHGHDOLQJZLWKWH[WRQWKHVFUHHQHLWKHUDVDJDPHRULQDSURJUDPLVJUHDWWKHUH
ZLOOFRPHDWLPHZKHQDELWRIJUDSKLFDOUHSUHVHQWDWLRQZRXOGQoWJRDPLVV3\WKRQ
KDVQXPHURXVZD\VLQZKLFKWRLQFOXGHJUDSKLFVDQGWKH\oUHVXUSULVLQJO\SRZHUIXOWRR
GOING GRAPHICAL
You can draw simple graphics, lines, squares and so on, or you can use one of the many Python modules available, to bring out
VRPHVSHFWDFXODUHƪHFWV
64 3\WKRQ &&RGLQJ
3\WKRQ*UDSKLFV
ZZZSFOSXEOLFDWLRQVFRP 65
Index
66 ZZZSFOSXEOLFDWLRQVFRP
Using Modules
68 Calendar Module
70 OS Module
72 Random Module
74 Tkinter Module
76 Pygame Module
80 Create Your Own Modules
ZZZSFOSXEOLFDWLRQVFRP 67
8VLQJ0RGXOHV
&DOHQGDU0RGXOH
%H\RQGWKHWLPHPRGXOHWKHFDOHQGDUPRGXOHFDQSURGXFHVRPHLQWHUHVWLQJUHVXOWV
ZKHQH[HFXWHGZLWKLQ\RXUFRGH,WGRHVIDUPRUHWKDQVLPSO\GLVSOD\WKHGDWHLQWKH
WLPHPRGXOHOLNHIRUPDW\RXFDQDFWXDOO\FDOOXSDZDOOFDOHQGDUW\SHGLVSOD\
68 3\WKRQ &&RGLQJ
&DOHQGDU0RGXOH
ZZZSFOSXEOLFDWLRQVFRP 69
8VLQJ0RGXOHV
260RGXOH
7KH26PRGXOHDOORZV\RXWRLQWHUDFWGLUHFWO\ZLWKWKHEXLOWLQFRPPDQGVIRXQGLQ\RXU
RSHUDWLQJV\VWHP&RPPDQGVYDU\GHSHQGLQJRQWKH26\RXoUHUXQQLQJDVVRPHZLOO
ZRUNZLWK:LQGRZVZKHUHDVRWKHUVZLOOZRUNZLWK/LQX[DQGPDF26
70 3\WKRQ &&RGLQJ
260RGXOH
STEP 9 <RXFDQDOVRUHQDPHDQ\GLUHFWRULHV\RXoYHFUHDWHG
E\HQWHULQJ
LPSRUWRV
RVUHQDPH ´1(:µ´2/'µ
7RGHOHWHWKHP
STEP 6 )RU6WHSoVH[DPSOHZHXVHG:LQGRZVWRVKRZ
WKDWWKH26PRGXOHZRUNVURXJKO\WKHVDPHDFURVV LPSRUWRV
DOOSODWIRUPV,QWKDWFDVHZHRSHQHG<RX7XEHoVPXVLFIHHGSDJHVR RVUPGLU ´2/'µ
LWLVWKHUHIRUHSRVVLEOHWRRSHQVSHFLƬFSDJHV
LPSRUWRV
RVV\VWHP ¶FKURPLXPEURZVHU´KWWS
EGPSXEOLFDWLRQVFRPµ·
STEP 10 $QRWKHUPRGXOHWKDWJRHVWRJHWKHUZLWK26LV
VKXWLO<RXFDQXVHWKHVKXWLOPRGXOHWRJHWKHU
ZLWK26DQGWLPHWRFUHDWHDWLPHVWDPSHGEDFNXSGLUHFWRU\DQG
FRS\ƬOHVLQWRLW
LPSRUWRVVKXWLOWLPH
URRWBVUFBGLU U·KRPHSL'RFXPHQWV·
URRWBGVWBGLU ¶KRPHSLEDFNXS·WLPHDVFWLPH
IRUVUFBGLUGLUVÀOHVLQRVZDON URRWBVUFBGLU
GVWBGLU VUFBGLUUHSODFH URRWBVUFBGLUURRWB
STEP 7 1RWHLQWKHSUHYLRXVVWHSoVH[DPSOHWKHXVHRI GVWBGLU
VLQJOHDQGGRXEOHTXRWHV7KHVLQJOHTXRWHVHQFDVH LIQRWRVSDWKH[LVWV GVWBGLU
WKHHQWLUHFRPPDQGDQGODXQFKLQJ&KURPLXPZKHUHDVWKHGRXEOH RVPDNHGLUV GVWBGLU
TXRWHVRSHQWKHVSHFLƬHGSDJH<RXFDQHYHQXVHYDULDEOHVWRFDOO IRUÀOHBLQÀOHV
PXOWLSOHWDEVLQWKHVDPHEURZVHU VUFBÀOH RVSDWKMRLQ VUFBGLUÀOHB
GVWBÀOH RVSDWKMRLQ GVWBGLUÀOHB
LPSRUWRV
LIRVSDWKH[LVWV GVWBÀOH
D ¶FKURPLXPEURZVHU´KWWSEGPSXEOLFDWLRQV
RVUHPRYH GVWBÀOH
FRPµ·
VKXWLOFRS\ VUFBÀOHGVWBGLU
E ¶FKURPLXPEURZVHU´KWWSZZZJRRJOHFRXNµ·
RVV\VWHP DE SULQW ´!!!!!!!!!!%DFNXSFRPSOHWHµ
ZZZSFOSXEOLFDWLRQVFRP 71
8VLQJ0RGXOHV
5DQGRP0RGXOH
7KHUDQGRPPRGXOHLVRQH\RXZLOOOLNHO\FRPHDFURVVPDQ\WLPHVLQ\RXU3\WKRQ
SURJUDPPLQJOLIHWLPHDVWKHQDPHVXJJHVWVLWoVGHVLJQHGWRFUHDWHUDQGRPQXPEHUV
RUOHWWHUV+RZHYHULWoVQRWH[DFWO\UDQGRPEXWLWZLOOVXƯFHIRUPRVWQHHGV
RANDOM NUMBERS
There are numerous functions within the random module, which when applied can create some interesting and very useful
Python programs.
STEP 2 ,QRXUH[DPSOH
WKHQXPEHUIRXU
ZDVUHWXUQHG+RZHYHUHQWHU
WKHSULQWIXQFWLRQDIHZPRUH
WLPHVDQGLWZLOOGLVSOD\GLƪHUHQW
LQWHJHUYDOXHVIURPWKHVHWRI
QXPEHUVJLYHQ]HURWRƬYH7KH
RYHUDOOHƪHFWDOWKRXJKSVHXGR
UDQGRPLVDGHTXDWHIRUWKH STEP 5 <RXFDQH[WHQGWKHSUHYLRXVH[DPSOHVRPHZKDWE\
KDYLQJUDQGRPFKRLFH VHOHFWIURPDOLVWRIPL[HG
DYHUDJHSURJUDPPHUWRXWLOLVHLQ
YDULDEOHV)RULQVWDQFH
WKHLUFRGH
LPSRUWUDQGRP
OVW >´'DYLGµ´%'03XEOLFDWLRQVµ
´3Lµ7UXH´3\WKRQµ@
UQG UDQGRPFKRLFH OVW
STEP 3 )RUDELJJHUVHWRIQXPEHUVLQFOXGLQJƮRDWLQJ
SULQW UQG
SRLQWYDOXHV\RXFDQH[WHQGWKHUDQJHE\XVLQJWKH
PXOWLSOLFDWLRQVLJQ
LPSRUWUDQGRP
SULQW UDQGRPUDQGRP
:LOOGLVSOD\DƮRDWLQJSRLQWQXPEHUEHWZHHQDQGWRWKHWXQH
RIDURXQGƬIWHHQGHFLPDOSRLQWV
72 3\WKRQ &&RGLQJ
5DQGRP0RGXOH
STEP 7 8VLQJVKXưH\RXFDQFUHDWHDQHQWLUHO\UDQGRPOLVW
RIQXPEHUV)RUH[DPSOHZLWKLQDJLYHQUDQJH
LPSRUWUDQGRP
OVW >>L@IRU,LQUDQJH @
UDQGRPVKXIÁH OVW STEP 10 +HUHoVDQLQWHUHVWLQJSLHFHRIFRGH8VLQJDWH[W
SULQW OVW ƬOHFRQWDLQLQJWKRXVDQGZRUGV\RXFDQSOXFN
DXVHUJHQHUDWHGQXPEHURIZRUGVIURPWKHƬOH WH[WƬOHIRXQGDW
.HHSVKXưLQJWKHOLVWDQG\RXFDQKDYHDGLƪHUHQWVHOHFWLRQRI
www.github.com/dwyl/english-words)
LWHPVIURPWRHYHU\WLPH
LPSRUWUDQGRP
SULQW ´!!!!!!!!!!5DQGRP:RUG)LQGHUµ
SULQW ´?Q8VLQJD.(QJOLVKZRUGWH[WÀOH,FDQ
SLFNDQ\ZRUGVDWUDQGRP?Qµ
ZGV LQW LQSXW ´?Q+RZPDQ\ZRUGVVKDOO,FKRRVH"
´
ZLWKRSHQ ´KRPHSL'RZQORDGVZRUGVW[Wµ´UWµ DV
I
ZRUGV IUHDGOLQHV
ZRUGV >ZUVWULS IRUZLQZRUGV@
ZZZSFOSXEOLFDWLRQVFRP 73
8VLQJ0RGXOHV
7NLQWHU0RGXOH
:KLOHUXQQLQJ\RXUFRGHIURPWKHFRPPDQGOLQHRUHYHQLQWKH6KHOOLVSHUIHFWO\ƬQH
3\WKRQLVFDSDEOHRIVRPXFKPRUH7KH7NLQWHUPRGXOHHQDEOHVWKHSURJUDPPHUWRVHW
XSD*UDSKLFDO8VHU,QWHUIDFHWRLQWHUDFWZLWKWKHXVHUDQGLWoVVXUSULVLQJO\SRZHUIXOWRR
GETTING GUI
Tkinter is easy to use but there’s a lot more you can do with it. Let’s start by seeing how it works and getting some code into it.
Before long you will discover just how powerful this module really is.
74 3\WKRQ &&RGLQJ
7NLQWHU0RGXOH
STEP 10 7KHFRGHIURP6WHSLQWURGXFHGVRPHQHZ
STEP 7 JHRPHWU\HOHPHQWVLQWR7NLQWHU1RWHWKH
VWLFN\ 1(DQG:DUJXPHQWV7KHVHGHVFULEHWKHORFDWLRQVRIWKH
7KHSUHYLRXVFRGHLV FKHFNER[HVDQGEXWWRQV 1RUWK(DVW6RXWKDQG:HVW 7KHURZ
TXLWHZHLJKW\PRVWO\ DUJXPHQWSODFHVWKHPRQVHSDUDWHURZV+DYHDSOD\DURXQGDQG
GXHWRWKHFRQWHQW VHHZKDW\RXJHW
YDULDEOHKROGLQJDSDUW
RI%'0oV$ERXWSDJH
IURPWKHFRPSDQ\
ZHEVLWH<RXFDQ
REYLRXVO\FKDQJHWKH
FRQWHQWWKHURRWWLWOH
DQGWKHLPDJHWRVXLW
\RXUQHHGV
ZZZSFOSXEOLFDWLRQVFRP 75
8VLQJ0RGXOHV
3\JDPH0RGXOH
:HoYHKDGDEULHIORRNDWWKH3\JDPHPRGXOHDOUHDG\EXWWKHUHoVDORWPRUHWRLWWKDW
QHHGVH[SORULQJ3\JDPHZDVGHYHORSHGWRKHOS3\WKRQSURJUDPPHUVFUHDWHHLWKHU
JUDSKLFDORUWH[WEDVHGJDPHV
PYGAMING
Pygame isn’t an inherent module to Python but those using the Raspberry Pi will already have it installed. Everyone else will
need to use: pip install pygame from the command prompt.
STEP 2 /HWoVFUHDWHDVLPSOHJDPHUHDG\ZLQGRZDQGJLYH
LWDWLWOH
JDPHZLQGRZ S\JDPHGLVSOD\VHWBPRGH
S\JDPHGLVSOD\VHWBFDSWLRQ ´$GYHQWXUH*DPHµ
<RXFDQVHHWKDWDIWHUWKHƬUVWOLQHLVHQWHUHG\RXQHHGWRFOLFNEDFN
LQWRWKH,'/(6KHOOWRFRQWLQXHHQWHULQJFRGHDOVR\RXFDQFKDQJH
WKHWLWOHRIWKHZLQGRZWRDQ\WKLQJ\RXOLNH
76 3\WKRQ &&RGLQJ
3\JDPH0RGXOH
STEP 4 ,IWKH3\JDPHZLQGRZVWLOOZRQoW
FORVHGRQoWZRUU\LWoVMXVWD
GLVFUHSDQF\EHWZHHQWKH,'/( ZKLFKLVZULWWHQ
ZLWK7NLQWHU DQGWKH3\JDPHPRGXOH,I\RX
UXQ\RXUFRGHYLDWKHFRPPDQGOLQHLWFORVHV
SHUIHFWO\ZHOO
ZZZSFOSXEOLFDWLRQVFRP 77
8VLQJ0RGXOHV
STEP 8 &RS\WKHFRGHGRZQDQGXVLQJWKHOHIWDQGULJKWDUURZNH\VRQWKHNH\ERDUG\RXFDQPRYH\RXUVSULWHDFURVVWKHERWWRPRI
WKHVFUHHQ1RZLWORRNVOLNH\RXKDYHWKHPDNLQJVRIDFODVVLFDUFDGH'VFUROOHULQWKHZRUNV
78 3\WKRQ &&RGLQJ
3\JDPH0RGXOH
ZZZSFOSXEOLFDWLRQVFRP 79
8VLQJ0RGXOHV
&UHDWH<RXU2ZQ0RGXOHV
/DUJHSURJUDPVFDQEHPXFKHDVLHUWRPDQDJHLI\RXEUHDNWKHPXSLQWRVPDOOHUSDUWV
DQGLPSRUWWKHSDUWV\RXQHHGDVPRGXOHV/HDUQLQJWREXLOG\RXURZQPRGXOHVDOVR
PDNHVLWHDVLHUWRXQGHUVWDQGKRZWKH\ZRUN
BUILDING MODULES
0RGXOHVDUH3\WKRQƬOHVFRQWDLQLQJFRGHWKDW\RXVDYHXVLQJDS\H[WHQVLRQ7KHVHDUHWKHQLPSRUWHGLQWR3\WKRQXVLQJWKH
now familiar import command.
STEP 5 5HWXUQWRWKH
QHZO\FUHDWHG
ZLQGRZFRQWDLQLQJWKHIXQFWLRQ
GHƬQLWLRQVDQGFOLFN)LOH!6DYH
$V1DPHWKLVminimath.py
DQGVDYHLWLQWKHVDPHORFDWLRQ
DVWKHRULJLQDObasic_math.
pySURJUDP1RZFORVHWKH
PLQLPDWKS\ZLQGRZVRWKH
EDVLFBPDWKS\ZLQGRZLVOHIW
RSHQ
80 3\WKRQ &&RGLQJ
&UHDWH<RXU2ZQ0RGXOHV
STEP 7 <RXFDQQRZXVHWKHFRGHIXUWKHUWRPDNHWKH
SURJUDPDOLWWOHPRUHDGYDQFHGXWLOLVLQJWKHQHZO\
FUHDWHGPRGXOHWRLWVIXOO,QFOXGHVRPHXVHULQWHUDFWLRQ6WDUWE\
FUHDWLQJDEDVLFPHQXWKHXVHUFDQFKRRVHIURP
SULQW ´6HOHFWRSHUDWLRQ?Qµ
SULQW ´7LPHVE\WZRµ
SULQW ´7LPHVE\7KUHHµ
SULQW ´6TXDUHµ
SULQW ´3RZHURIµ
FKRLFH LQSXW ´?Q(QWHUFKRLFH µ
STEP 8 1RZZHFDQDGGWKHXVHULQSXWWRJHWWKHQXPEHU
WKHFRGHZLOOZRUNRQ
QXP LQW LQSXW ´?Q(QWHUQXPEHU´
7KLVZLOOVDYHWKHXVHUHQWHUHGQXPEHUDVWKHYDULDEOHQXP
STEP 10 1RWHWKDWIRUWKHODVWDYDLODEOHRSWLRQVWKH3RZHU
RIFKRLFHZHoYHDGGHGDVHFRQGYDULDEOHQXP
7KLVSDVVHVDVHFRQGQXPEHUWKURXJKWKHIXQFWLRQGHƬQLWLRQFDOOHG
SRZHU6DYHDQGH[HFXWHWKHSURJUDPWRVHHLWLQDFWLRQ
ZZZSFOSXEOLFDWLRQVFRP 81
Index
82 ZZZSFOSXEOLFDWLRQVFRP
Say Hello to C++
84 Why C++?
86 Equipment Needed
88 How to Set Up C++ in Windows
90 How to Set Up C++ on a Mac
92 How to Set Up C++ in Linux
94 Other C++ IDEs to Install
ZZZSFOSXEOLFDWLRQVFRP 83
6D\+HOORWR&
:K\&"
&LVRQHRIWKHPRVWSRSXODUSURJUDPPLQJODQJXDJHVDYDLODEOHWRGD\2ULJLQDOO\
FDOOHG&ZLWK&ODVVHVWKHODQJXDJHZDVUHQDPHG&LQ,WoVDQH[WHQVLRQRIWKH
RULJLQDO&ODQJXDJHDQGLVDJHQHUDOSXUSRVHREMHFWRULHQWHG 223 HQYLURQPHQW
C EVERYTHING
Due to how complex the language can be, and its power and performance, C++ is often used to develop games, programs,
device drivers and even entire operating systems.
'DWLQJEDFNWRWKHVWDUWRIWKHJROGHQHUDRIKRPH FRPSXWLQJODEVDQGE\UHJXODUSHRSOHZKRGLGQoWKDYHDFFHVVWRWKH
FRPSXWLQJ&RUUDWKHU&ZLWK&ODVVHVZDVWKHEUDLQFKLOGRI PDLQIUDPHVDQGODUJHFRPSXWLQJGDWDFHQWUHV
'DQLVKFRPSXWHUVFLHQWLVW%MDUQH6WURXVWUXSZKLOHZRUNLQJRQKLV
3K'WKHVLV6WURXVWUXSoVSODQZDVWRIXUWKHUWKHRULJLQDO&ODQJXDJH &oVLPSDFWLQWKHGLJLWDOZRUOGLVLPPHQVH0DQ\RIWKHSURJUDPV
ZKLFKZDVZLGHO\XVHGVLQFHWKHHDUO\VHYHQWLHV DSSOLFDWLRQVJDPHVDQGHYHQRSHUDWLQJV\VWHPVDUHFRGHGXVLQJ
&)RUH[DPSOHDOORI$GREHoVPDMRUDSSOLFDWLRQVVXFKDV
&SURYHGWREHSRSXODUDPRQJWKHGHYHORSHUVRIWKHnV 3KRWRVKRS,Q'HVLJQDQGVRRQDUHGHYHORSHGLQ&<RXZLOOƬQG
VLQFHLWZDVDPXFKHDVLHUHQYLURQPHQWWRJHWWRJULSVZLWKDQG WKDWWKHEURZVHU\RXVXUIWKH,QWHUQHWZLWKLVZULWWHQLQ&DV
PRUHLPSRUWDQWO\LWZDVFRPSDWLEOHZLWKWKHRULJLQDO& ZHOODV:LQGRZV0LFURVRIW2ƯFHDQGWKHEDFNERQHWR*RRJOHoV
ODQJXDJH7KLVPHDQWWKDWLWFRXOGEHXVHGEH\RQGWKHPDLQVWUHDP VHDUFKHQJLQH$SSOHoVPDF26LVZULWWHQODUJHO\LQ& ZLWKVRPH
84 3\WKRQ &&RGLQJ
:K\&"
RWKHUODQJXDJHVPL[HGLQGHSHQGLQJRQWKHIXQFWLRQ DQGWKHOLNHV
RI1$6$6SDFH;DQGHYHQ&(51XVH&IRUYDULRXVDSSOLFDWLRQV
SURJUDPVFRQWUROVDQGXPSWHHQRWKHUFRPSXWLQJWDVNV
&LVDOVRH[WUHPHO\HƯFLHQWDQGSHUIRUPVZHOODFURVVWKHERDUG
DVZHOODVEHLQJDQHDVLHUDGGLWLRQWRWKHFRUH&ODQJXDJH7KLV
KLJKHUOHYHORISHUIRUPDQFHRYHURWKHUODQJXDJHVVXFKDV3\WKRQ
%$6,&DQGVXFKPDNHVLWDQLGHDOGHYHORSPHQWHQYLURQPHQWIRU
PRGHUQFRPSXWLQJKHQFHWKHDIRUHPHQWLRQHGFRPSDQLHVXVLQJLW
VRZLGHO\
:KLOH3\WKRQLVDJUHDWSURJUDPPLQJODQJXDJHWROHDUQ&SXWV
WKHGHYHORSHULQDPXFKZLGHUZRUOGRIFRGLQJ%\PDVWHULQJ&
\RXFDQƬQG\RXUVHOIGHYHORSLQJFRGHIRUWKHOLNHVRI0LFURVRIW
$SSOHDQGVRRQ*HQHUDOO\&GHYHORSHUVHQMR\DKLJKHUVDODU\
WKDQSURJUDPPHUVRIVRPHRWKHUODQJXDJHVDQGGXHWRLWV Indeed, the operating system
YHUVDWLOLW\WKH&SURJUDPPHUFDQPRYHEHWZHHQMREVDQG you’re using is written in C++.
FRPSDQLHVZLWKRXWWKHQHHGWRUHOHDUQDQ\WKLQJVSHFLƬF
+RZHYHU3\WKRQLVDQHDVLHUODQJXDJHWREHJLQZLWK,I\RXoUH
FRPSOHWHO\QHZWRSURJUDPPLQJWKHQZHZRXOGUHFRPPHQG\RX
EHJLQZLWK3\WKRQDQGVSHQGVRPHWLPHJHWWLQJWRJULSVZLWK
SURJUDPPLQJVWUXFWXUHDQGWKHPDQ\ZD\VDQGPHDQVLQZKLFK\RX
ƬQGDVROXWLRQWRDSUREOHPWKURXJKSURJUDPPLQJ2QFH\RXFDQ
KDSSLO\SRZHUXS\RXUFRPSXWHUDQGZKLSRXWD3\WKRQSURJUDP
ZLWKRQHKDQGWLHGEHKLQG\RXUEDFNWKHQPRYHRQWR&2I
FRXUVHWKHUHoVQRWKLQJVWRSSLQJ\RXIURPMXPSLQJVWUDLJKWLQWR
&LI\RXIHHOXSWRWKHWDVNJRIRULW
*HWWLQJWRXVH&LVDVHDV\DV3\WKRQDOO\RXQHHGLVWKHULJKWVHW
RIWRROVLQZKLFKWRFRPPXQLFDWHZLWKWKHFRPSXWHULQ&DQG
\RXFDQVWDUW\RXUMRXUQH\$&,'(LVIUHHRIFKDUJHHYHQWKH
LPPHQVHO\SRZHUIXO9LVXDO6WXGLRIURP0LFURVRIWLVIUHHO\DYDLODEOH
WRGRZQORDGDQGXVH<RXFDQJHWLQWR&IURPDQ\RSHUDWLQJ
V\VWHPEHLWPDF26/LQX[:LQGRZVRUHYHQPRELOHSODWIRUPV
-XVWOLNH3\WKRQWRDQVZHUWKHTXHVWLRQRI:K\&LVWKHDQVZHU
LVEHFDXVHLWoVIDVWHƯFLHQWDQGGHYHORSHGE\PRVWRIWKH
DSSOLFDWLRQV\RXUHJXODUO\XVH,WoVFXWWLQJHGJHDQGDIDQWDVWLF
ODQJXDJHWRPDVWHU
ZZZSFOSXEOLFDWLRQVFRP 85
6D\+HOORWR&
(TXLSPHQW1HHGHG
<RXGRQoWQHHGWRLQYHVWDKXJHDPRXQWRIPRQH\LQRUGHUWROHDUQ&DQG\RX
GRQoWQHHGDQHQWLUHFRPSXWLQJODEDW\RXUGLVSRVDOHLWKHU3URYLGLQJ\RXKDYHDIDLUO\
PRGHUQFRPSXWHUHYHU\WKLQJHOVHLVIUHHO\DYDLODEOH
C++ SETUPS
Most, if not all, operating systems have C++ in their code, so it stands to reason that you can learn to program in C++ no matter
what OS you’re currently using.
COMPUTER
8QOHVV\RXIDQF\ZULWLQJRXW\RXU&FRGHE\KDQGRQDVKHHWRI
SDSHU ZKLFKLVVRPHWKLQJPDQ\ROGHUFRGHUVXVHGWRGR DFRPSXWHU
LVDQDEVROXWHPXVWKDYHFRPSRQHQW3&XVHUVFDQKDYHDQ\UHFHQW
/LQX[GLVWURRU:LQGRZV260DFXVHUVWKHODWHVWPDF26
AN IDE
-XVWDVZLWK3\WKRQDQ,'(LVXVHGWRHQWHUDQGH[HFXWH\RXU&
FRGH0DQ\,'(VFRPHZLWKH[WHQVLRQVDQGSOXJLQVWKDWKHOSPDNH
LWZRUNEHWWHURUDGGDQH[WUDOHYHORIIXQFWLRQDOLW\2IWHQDQ,'(
SURYLGHVHQKDQFHPHQWVGHSHQGLQJRQWKHFRUH26EHLQJXVHGVXFKDV
EHLQJHQKDQFHGIRU:LQGRZV
COMPILER
$FRPSLOHULVDSURJUDPWKDWFRQYHUWVWKH&ODQJXDJHLQWRELQDU\
VRWKDWWKHFRPSXWHUFDQXQGHUVWDQG:KLOHVRPH,'(VFRPHZLWKD
FRPSLOHUEXLOWLQRWKHUVGRQoW&RGH%ORFNVLVRXUIDYRXULWH,'(WKDW
FRPHVZLWKD&FRPSLOHUDVSDUWRIWKHSDFNDJH0RUHRQWKLVODWHU
TEXT EDITOR
6RPHSURJUDPPHUVPXFKSUHIHUWRXVHDWH[WHGLWRUWRDVVHPEOHWKHLU
&FRGHEHIRUHUXQQLQJLWWKURXJKDFRPSLOHU(VVHQWLDOO\\RXFDQ
XVHDQ\WH[WHGLWRUWRZULWHFRGHMXVWVDYHLWZLWKDFSSH[WHQVLRQ
+RZHYHU1RWHSDGLVRQHRIWKHEHVWFRGHWH[WHGLWRUVDYDLODEOH
INTERNET ACCESS
:KLOHLWoVHQWLUHO\SRVVLEOHWROHDUQKRZWRFRGHRQDFRPSXWHUWKDWoV
QRWDWWDFKHGWRWKH,QWHUQHWLWoVH[WUDRUGLQDULO\GLƯFXOW<RXQHHG
WRLQVWDOOUHOHYDQWVRIWZDUHNHHSLWXSWRGDWHLQVWDOODQ\H[WUDVRU
H[WHQVLRQVDQGORRNIRUKHOSZKHQFRGLQJ$OORIWKHVHUHTXLUHDFFHVV
WRWKH,QWHUQHW
86 3\WKRQ &&RGLQJ
(TXLSPHQW1HHGHG
OS SPECIFIC NEEDS
C++ will work in any operating system but getting all the necessary pieces together can be confusing to a newcomer. Here are
VRPH26VSHFLƬFVIRU&
LINUX WINDOWS
/LQX[XVHUVDUHOXFN\LQWKDWWKH\DOUHDG\KDYHDFRPSLOHUDQG :HKDYHPHQWLRQHGSUHYLRXVO\WKDWDJRRG,'(LV0LFURVRIWoV
WH[WHGLWRUEXLOWLQWRWKHLURSHUDWLQJV\VWHP$Q\WH[WHGLWRU 9LVXDO6WXGLR+RZHYHUDEHWWHU,'(DQGFRPSLOHULV
DOORZV\RXWRW\SHRXW\RXU&FRGHZKHQLWoVVDYHGZLWKD &RGH%ORFNVZKLFKLVUHJXODUO\NHSWXSWRGDWHZLWKDQHZ
FSSH[WHQVLRQXVHJWRFRPSLOHLW UHOHDVHWZLFHD\HDU2WKHUZLVH:LQGRZVXVHUVFDQHQWHU
WKHLUFRGHLQ1RWHSDGWKHQFRPSLOHLWZLWK0LQ*:DVXVHG
E\&RGH%ORFNV
RASPBERRY PI MAC
7KH5DVSEHUU\3LoVRSHUDWLQJ 0DFRZQHUVZLOOQHHGWR
V\VWHPLV5DVSELDQZKLFK GRZQORDGDQGLQVWDOO;FRGH
LV/LQX[EDVHG7KHUHIRUH WREHDEOHWRFRPSLOHWKHLU
\RXoUHDEOHWRZULWH\RXUFRGH &FRGHQDWLYHO\2WKHU
RXWXVLQJDWH[WHGLWRUWKHQ RSWLRQVIRUWKHPDF26
FRPSLOHLWZLWKJDV\RX LQFOXGH1HWEHDQV(FOLSVHRU
ZRXOGLQDQ\RWKHU/LQX[GLVWUR &RGH%ORFNV1RWHWKH
ODWHVW&RGH%ORFNVLVQoW
DYDLODEOHIRU0DFGXHWRDODFN
RI0DFGHYHORSHUV
ZZZSFOSXEOLFDWLRQVFRP 87
6D\+HOORWR&
+RZWR6HW8S
&LQ:LQGRZV
:LQGRZVXVHUVKDYHDZHDOWKRIFKRLFHZKHQLWFRPHVWRSURJUDPPLQJLQ&7KHUH
DUHSOHQW\RI,'(VDQGFRPSLOHUVDYDLODEOHLQFOXGLQJ9LVXDO6WXGLRIURP0LFURVRIW
+RZHYHULQRXURSLQLRQWKHEHVW&,'(WREHJLQZLWKLV&RGH%ORFNV
CODE::BLOCKS
Code::Blocks is a free C++, C and Fortran IDE that’s feature rich and easily extendible with plug-ins. It’s easy to use, comes with
a compiler and has a vibrant community behind it.
88 3\WKRQ &&RGLQJ
+RZWR6HW8S&LQ:LQGRZV
ZZZSFOSXEOLFDWLRQVFRP 89
6D\+HOORWR&
+RZWR6HW8S
&RQD0DF
7REHJLQ&FRGLQJRQD0DF\RXƬUVWQHHGWRLQVWDOO$SSOHoV;FRGH7KLVLVDIUHHIXOO
IHDWXUHG,'(WKDWoVGHVLJQHGWRFUHDWHQDWLYH$SSOHDSSV+RZHYHU\RXFDQDOVRXVHLW
WRFUHDWH&FRGHUHODWLYHO\HDVLO\
XCODE
Apple’s Xcode is primarily designed for users to develop apps for macOS, iOS, tvOS and watchOS applications in Swift or
Objective-C but you can use it for C++ too.
90 3\WKRQ &&RGLQJ
+RZWR6HW8S&RQD0DF
ZZZSFOSXEOLFDWLRQVFRP 91
6D\+HOORWR&
+RZWR6HW8S
&LQ/LQX[
/LQX[LVDJUHDW&FRGLQJHQYLURQPHQW0RVW/LQX[GLVWURVDOUHDG\KDYHWKHHVVHQWLDO
FRPSRQHQWVSUHLQVWDOOHGVXFKDVDFRPSLOHUDQGWKHWH[WHGLWRUVDUHH[FHOOHQWIRU
HQWHULQJFRGHLQWRLQFOXGLQJFRORXUFRGLQJDQGWKHUHoVWRQVRIH[WUDVRIWZDUHDYDLODEOH
WRKHOS\RXRXW
LINUX++
If you’re not familiar with Linux, then we recommend taking a look at one of our Linux titles from the BDM Publications range.
,I\RXKDYHD5DVSEHUU\3LWKHFRPPDQGVXVHGEHORZZRUNMXVWƬQHDQGIRUWKLVH[DPSOHZHoUHXVLQJ/LQX[0LQW
92 3\WKRQ &&RGLQJ
+RZWR6HW8S&LQ/LQX[
ZZZSFOSXEOLFDWLRQVFRP 93
6D\+HOORWR&
2WKHU&,'(VWR,QVWDOO
,I\RXZDQWWRWU\DGLƪHUHQWDSSURDFKWRZRUNLQJZLWK\RXU&FRGHWKHQWKHUHDUH
SOHQW\RIRSWLRQVDYDLODEOHWR\RX:LQGRZVLVWKHPRVWSUROLƬFSODWIRUPIRU&,'(V
EXWWKHUHDUHSOHQW\IRU0DFDQG/LQX[XVHUVWRR
DEVELOPING C++
+HUHDUHWHQJUHDW&,'(VWKDWDUHZRUWKORRNLQJLQWR<RXFDQLQVWDOORQHRUDOORIWKHPLI\RXOLNHEXWƬQGWKHRQHWKDW
works best for you.
94 3\WKRQ &&RGLQJ
2WKHU&,'(VWR,QVWDOO
ZZZSFOSXEOLFDWLRQVFRP 95
Index
96 ZZZSFOSXEOLFDWLRQVFRP
C++ Fundamentals
ZZZSFOSXEOLFDWLRQVFRP 97
&)XQGDPHQWDOV
<RXU)LUVW&3URJUDP
<RXPD\KDYHIROORZHGWKH0DFDQG/LQX[H[DPSOHVSUHYLRXVO\EXW\RXoUHJRLQJWREH
ZRUNLQJH[FOXVLYHO\LQ:LQGRZVDQG&RGH%ORFNVIURPKHUHRQ/HWoVEHJLQE\ZULWLQJ
\RXUƬUVW&SURJUDPDQGWDNLQJWKHƬUVWVPDOOVWHSLQWRDODUJHUFRGLQJZRUOG
HELLO, WORLD!
,WoVWUDGLWLRQDOLQSURJUDPPLQJIRUWKHƬUVWFRGHWREHHQWHUHGWRRXWSXWWKHZRUGVn+HOOR:RUOGoWRWKHVFUHHQ,QWHUHVWLQJO\
this dates back to 1968 using a language called BCPL.
98 3\WKRQ &&RGLQJ
<RXU)LUVW&3URJUDP
ZZZSFOSXEOLFDWLRQVFRP 99
&)XQGDPHQWDOV
6WUXFWXUHRID
&3URJUDP
&KDVDYHU\GHƬQHGVWUXFWXUHDQGZD\RIGRLQJWKLQJV0LVVVRPHWKLQJRXWHYHQ
DVVPDOODVDVHPLFRORQDQG\RXUHQWLUHSURJUDPZLOOIDLOWREHFRPSLOHGDQGH[HFXWHG
0DQ\DSURIHVVLRQDOSURJUDPPHUKDVIDOOHQIRXORIVORSS\VWUXFWXUH
C++ #INCLUDE
7KHVWUXFWXUHRID&SURJUDP
&ZDVLQYHQWHGE\'DQLVK LVTXLWHSUHFLVH(YHU\&FRGH
VWXGHQW%MDUQH6WURXVWUXSLQ EHJLQVZLWKDGLUHFWLYH#include
DVDSDUWRIKLV3K' <>7KHGLUHFWLYHLQVWUXFWVWKH
WKHVLV,QLWLDOO\&ZDVFDOOHG& SUHSURFHVVRUWRLQFOXGHD
ZLWK&ODVVHVZKLFKDGGHG VHFWLRQRIWKHVWDQGDUG&
IHDWXUHVWRWKHDOUHDG\SRSXODU FRGH)RUH[DPSOH#include
&SURJUDPPLQJODQJXDJH <iostream>LQFOXGHVWKH
ZKLOHPDNLQJLWDPRUH LRVWUHDPKHDGHUWRVXSSRUW
XVHUIULHQGO\HQYLURQPHQW LQSXWRXWSXWRSHUDWLRQV
WKURXJKDQHZVWUXFWXUH
BRACES
7KHRSHQEUDFH FXUO\EUDFNHWV LVVRPHWKLQJ
WKDW\RXPD\QRWKDYHFRPHDFURVVEHIRUH
HVSHFLDOO\LI\RXoUHXVHGWR3\WKRQ7KH
RSHQEUDFHLQGLFDWHVWKHEHJLQQLQJRIWKH
PDLQIXQFWLRQDQGFRQWDLQVDOOWKHFRGHWKDW
EHORQJVWRWKDWIXQFWLRQ
COMMENTS <<
/LQHVWKDWEHJLQZLWKDGRXEOHVODVKDUHFRPPHQWV7KLVPHDQVWKH\ 7KHWZRFKHYURQVXVHGKHUHDUHLQVHUWLRQRSHUDWRUV7KLVPHDQV
ZRQoWEHH[HFXWHGLQWKHFRGHDQGDUHLJQRUHGE\WKHFRPSLOHU WKDWZKDWHYHUIROORZVWKHFKHYURQVLVWREHLQVHUWHGLQWRWKH
&RPPHQWVDUHGHVLJQHGWRKHOS\RXRUDQRWKHUSURJUDPPHU VWGFRXWVWDWHPHQW,QWKLVFDVHWKH\oUHWKHZRUGVn+HOORZRUOGo
ORRNLQJDW\RXUFRGHH[SODLQZKDWoVJRLQJRQ7KHUHDUHWZRW\SHV ZKLFKDUHWREHGLVSOD\HGRQWKHVFUHHQZKHQ\RXFRPSLOHDQG
RIFRPPHQW FRYHUVPXOWLSOHOLQHFRPPHQWVDVLQJOHOLQH/LQHV H[HFXWHWKHFRGH
WKDWEHJLQZLWKDGRXEOHVODVKDUHFRPPHQWV7KLVPHDQVWKH\ZRQoW
EHH[HFXWHGLQWKHFRGHDQG
DUHLJQRUHGE\WKHFRPSLOHU
&RPPHQWVDUHGHVLJQHG
WRKHOS\RXRUDQRWKHU
SURJUDPPHUORRNLQJDW
\RXUFRGHH[SODLQZKDWoV
JRLQJRQ7KHUHDUHWZR
W\SHVRIFRPPHQW FRYHUV
PXOWLSOHOLQHFRPPHQWVD
VLQJOHOLQH
STD OUTPUTS
:KLOHstdVWDQGVIRUVRPHWKLQJTXLWHGLƪHUHQWLQ&LWPHDQV /HDGLQJRQWKHp+HOORZRUOGqSDUWLVZKDWZHZDQWWRDSSHDURQ
6WDQGDUG,WoVSDUWRIWKH6WDQGDUG1DPHVSDFHLQ&ZKLFKFRYHUV WKHVFUHHQZKHQWKHFRGHLVH[HFXWHG<RXFDQHQWHUZKDWHYHU\RX
DQXPEHURIGLƪHUHQWVWDWHPHQWVDQGFRPPDQGV<RXFDQOHDYHWKH OLNHDVORQJDVLWoVLQVLGHWKHTXRWDWLRQPDUNV7KHEUDFNHWVDUHQoW
std::SDUWRXWRIWKHFRGHEXWLWPXVWEHGHFODUHGDWWKHVWDUWZLWK QHHGHGEXWVRPHFRPSLOHUVLQVLVWRQWKHP7KH?QSDUWLQGLFDWHVD
using namespace stdQRWERWK)RUH[DPSOH QHZOLQHLVWREHLQVHUWHG
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
COUT $1'ǜ
,QWKLVH[DPSOHZHoUHXVLQJFRXWZKLFKLVDSDUWRIWKH6WDQGDUG )LQDOO\\RXFDQVHHWKDWOLQHVZLWKLQDIXQFWLRQFRGHEORFN H[FHSW
1DPHVSDFHKHQFHZK\LWoVWKHUHDV\RXoUHDVNLQJ&WRXVHLWIURP FRPPHQWV HQGZLWKDVHPLFRORQ7KLVPDUNVWKHHQGRIWKH
WKDWSDUWLFXODUQDPHVSDFH&RXWPHDQV&KDUDFWHU287SXWZKLFK VWDWHPHQWDQGDOOVWDWHPHQWVLQ&PXVWKDYHRQHDWWKHHQGRU
GLVSOD\VRUSULQWVVRPHWKLQJWRWKHVFUHHQ,IZHOHDYHstd::RXWZH WKHFRPSLOHUIDLOVWREXLOGWKHFRGH7KHYHU\ODVWOLQHKDVWKHFORVLQJ
KDYHWRGHFODUHLWDWWKHVWDUWRIWKHFRGHDVPHQWLRQHGSUHYLRXVO\ EUDFHWRLQGLFDWHWKHHQGRIWKHPDLQIXQFWLRQ
ZZZSFOSXEOLFDWLRQVFRP 101
&)XQGDPHQWDOV
&RPSLOHDQG([HFXWH
<RXoYHFUHDWHG\RXUƬUVW&SURJUDPDQG\RXQRZXQGHUVWDQGWKHEDVLFVEHKLQGWKH
VWUXFWXUHRIRQH/HWoVDFWXDOO\JHWWKLQJVPRYLQJDQGFRPSLOHDQGH[HFXWHRUUXQLI
\RXSUHIHUWKHSURJUDPDQGVHHKRZLWORRNV
ZZZSFOSXEOLFDWLRQVFRP 103
&)XQGDPHQWDOV
8VLQJ&RPPHQWV
:KLOHFRPPHQWVPD\VHHPOLNHDPLQRUHOHPHQWWRWKHPDQ\OLQHVRIFRGHWKDW
FRPELQHWRPDNHDJDPHDSSOLFDWLRQRUHYHQDQHQWLUHRSHUDWLQJV\VWHPLQDFWXDOIDFW
WKH\oUHSUREDEO\RQHRIWKHPRVWLPSRUWDQWIDFWRUV
,QDSURIHVVLRQDOHQYLURQPHQWFRPPHQWVDUHYLWDOWRWKHVXFFHVV
RIWKHFRGHDQGXOWLPDWHO\WKHFRPSDQ\,QDQRUJDQLVDWLRQPDQ\
SURJUDPPHUVZRUNLQWHDPVDORQJVLGHHQJLQHHUVRWKHUGHYHORSHUV
KDUGZDUHDQDO\VWVDQGVRRQ,I\RXoUHDSDUWRIWKHWHDPWKDWoV
ZULWLQJDEHVSRNHSLHFHRIVRIWZDUHIRUWKHFRPSDQ\WKHQ\RXU
FRPPHQWVKHOSVDYHDORWRIWLPHVKRXOGVRPHWKLQJJRZURQJDQG
DQRWKHUWHDPPHPEHUKDVWRSLFNXSDQGIROORZWKHWUDLOWRSLQSRLQW
WKHLVVXH
3ODFH\RXUVHOILQWKHVKRHVRIVRPHRQHZKRVHMRELWLVWRƬQGRXW
ZKDWoVZURQJZLWKDSURJUDP7KHSURJUDP
KDVLQH[FHVVRIOLQHVRIFRGH
VSUHDGDFURVVVHYHUDOGLƪHUHQW
PRGXOHV<RXFDQVRRQDSSUHFLDWH
WKHQHHGIRUDOLWWOHKHOSIURPWKH
RULJLQDOSURJUDPPHUVLQWKHIRUPRID
JRRGFRPPHQW
7KHEHVWFRPPHQWVDUHDOZD\VFRQFLVH
DQGOLQNWKHFRGHORJLFDOO\GHWDLOLQJZKDW
KDSSHQVZKHQWKH
SURJUDPKLWVWKLV
OLQHRUVHFWLRQ
<RXGRQoWQHHG
WRFRPPHQW
RQHYHU\OLQH
6RPHWKLQJDORQJ
WKHOLQHVRILI
[ GRHVQoW
UHTXLUH\RXWR
FRPPHQWWKDWLI[
HTXDOV]HURWKHQ
GRVRPHWKLQJ
C++ COMMENTS
Commenting in C++ involves using a double forward slash ‘/’, or a forward slash and an asterisk, ‘/*’. You’ve already seen some
brief examples but this is how they work.
ZZZSFOSXEOLFDWLRQVFRP 105
&)XQGDPHQWDOV
9DULDEOHV
9DULDEOHVGLƪHUVOLJKWO\ZKHQXVLQJ&DVRSSRVHGWR3\WKRQ,Q3\WKRQ\RXFDQ
VLPSO\VWDWHWKDWnDoHTXDOVDQGDYDULDEOHLVDVVLJQHG+RZHYHULQ&DYDULDEOHKDV
WREHGHFODUHGZLWKLWVW\SHEHIRUHLWFDQEHXVHG
STEP 9 7KHPRGHUQ&FRPSLOHULVIDUPRUHLQWHOOLJHQW
WKDQPRVWSURJUDPPHUVJLYHLWFUHGLW:KLOHWKHUH
DUHQXPHURXVGDWDW\SHV\RXFDQGHFODUHIRUYDULDEOHV\RXFDQLQ
IDFWXVHWKHDXWRIHDWXUH
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
DXWRSL
STEP 7 <RXFDQFUHDWHJOREDOYDULDEOHVZKLFKDUHYDULDEOHV
WKDWDUHGHFODUHGRXWVLGHDQ\IXQFWLRQDQGXVHGLQ
DQ\IXQFWLRQZLWKLQWKHHQWLUHFRGH:KDW\RXoYHXVHGVRIDUDUH STEP 10 $FRXSOHRIQHZHOHPHQWVKHUHƬUVWDXWRZRQoW
ZRUNXQOHVV\RXJRWR6HWWLQJV!&RPSLOHUDQG
ORFDOYDULDEOHVYDULDEOHVXVHGLQVLGHWKHIXQFWLRQ)RUH[DPSOH
WLFNWKHER[ODEHOOHGn+DYH*IROORZWKH&,62&/DQJXDJH
LQFOXGHLRVWUHDP! 6WDQGDUG>VWG F@o7KHQWKHQHZGDWDW\SHGRXEOHZKLFK
XVLQJQDPHVSDFHVWG PHDQVGRXEOHSUHFLVLRQƮRDWLQJSRLQWYDOXH(QDEOH&WKHQ
LQW6WDUW/LYHV EXLOGDQGUXQWKHFRGH7KHUHVXOWVKRXOGEH
LQWPDLQ
^
VWDUW/LYHV 6WDUW/LYHV²
FRXW6WDUW/LYHV
`
ZZZSFOSXEOLFDWLRQVFRP 107
&)XQGDPHQWDOV
'DWD7\SHV
9DULDEOHVDVZHoYHVHHQVWRUHLQIRUPDWLRQWKDWWKHSURJUDPPHUFDQWKHQODWHUFDOOXS
DQGPDQLSXODWHLIUHTXLUHG9DULDEOHVDUHVLPSO\UHVHUYHGPHPRU\ORFDWLRQVWKDWVWRUH
WKHYDOXHVWKHSURJUDPPHUDVVLJQVGHSHQGLQJRQWKHGDWDW\SHXVHG
Boolean bool
No Value YRLG
7KHVHEDVLFW\SHVFDQDOVREHH[WHQGHGXVLQJWKHIROORZLQJPRGLƬHUV
/RQJ6KRUW6LJQHGDQG8QVLJQHG%DVLFDOO\WKLVPHDQVWKHPRGLƬHUV
FDQH[SDQGWKHPLQLPXPDQGPD[LPXPUDQJHYDOXHVIRUHDFKGDWD
W\SH)RUH[DPSOHWKHLQWGDWDW\SHKDVDGHIDXOWYDOXHUDQJHRI
WRDIDLUYDOXH\RXZRXOGDJUHH
1RZLI\RXZHUHWRXVHRQHRIWKHPRGLƬHUVWKHUDQJHDOWHUV
8QVLJQHGLQW WR
6LJQHGLQW WR
6KRUWLQW WR
8QVLJQHG6KRUWLQW WR %XLOGDQGUXQWKHFRGHDQGDV\RXFDQVHHWKHRXWSXWLVRQO\
6LJQHG6KRUWLQW WR UHSUHVHQWLQJFRXWoVOLPLWDWLRQVLQWKLVH[DPSOH
/RQJLQW WR
<RXFDQDOWHUWKHFRGHLQFOXGLQJWKHDIRUHPHQWLRQHGFRXWSUHFLVLRQ
6LJQHG/RQJLQW WR
IXQFWLRQIRUJUHDWHUDFFXUDF\7DNHSUHFLVLRQDOOWKHZD\XSWR
8QVLJQHG/RQJLQW WR
GHFLPDOSODFHVZLWKWKHIROORZLQJFRGH
1DWXUDOO\\RXFDQJHWDZD\ZLWKXVLQJWKHEDVLFW\SHZLWKRXWWKH
LQFOXGHLRVWUHDP!
PRGLƬHUDVWKHUHoVSOHQW\RIUDQJHSURYLGHGZLWKHDFKGDWDW\SH
XVLQJQDPHVSDFHVWG
+RZHYHULWoVFRQVLGHUHGJRRG&SURJUDPPLQJSUDFWLVHWRXVHWKH
GRXEOH3,
PRGLƬHUVZKHQSRVVLEOH
LQWPDLQ
7KHUHDUHLVVXHVZKHQXVLQJWKHPRGLƬHUVWKRXJK'RXEOH
^
UHSUHVHQWVDGRXEOHƮRDWLQJSRLQWYDOXHZKLFK\RXFDQXVHIRU
FRXWSUHFLVLRQ 7KLVLVPDLQO\GXHWRWKHFRQYHUVLRQIURPELQDU\LQWKHFRPSLOHU
FRXW3, DQGWKDWWKH,(((GRXEOHSUHFLVLRQVWDQGDUGRFFXSLHVELWV
RIGDWDRIZKLFKELWVDUHGHGLFDWHGWRWKHVLJQLƬFDQW WKH
`
VLJQLƬFDQWGLJLWVLQDƮRDWLQJSRLQWQXPEHU DQGURXJKO\ELWV
DUHWDNHQKROGLQJWKHYDOXHVWR,I\RXGLYLGHE\WKHQ\RX
DUULYHDWUHFXUULQJZKLFKLVGLJLWVRISUHFLVLRQ
7REHKRQHVWLI\RXoUHFUHDWLQJFRGHWKDWQHHGVWREHDFFXUDWHWR
PRUHWKDQƬIWHHQGHFLPDOSODFHVWKHQ\RXZRXOGQoWEHXVLQJ&
\RXZRXOGXVHVRPHVFLHQWLƬFVSHFLƬFODQJXDJHZLWK&DVWKH
FRQQHFWLYHWLVVXHEHWZHHQWKHWZRODQJXDJHV
<RXFDQFUHDWH\RXURZQGDWDW\SHVXVLQJDQDOLDVOLNHV\VWHPFDOOHG
W\SHGHI)RUH[DPSOH
$JDLQEXLOGDQGUXQWKHFRGHDV\RXFDQVHHIURPWKHFRPPDQG
OLQHZLQGRZWKHQXPEHUUHSUHVHQWHGE\WKHYDULDEOH3,LVGLƪHUHQW
WRWKHQXPEHU\RXoYHWROG&WRXVHLQWKHYDULDEOH7KHRXWSXW
UHDGVWKHYDOXHRI3,DVZLWKWKH
QXPEHUVJRLQJDZU\IURPWKHƬIWHHQWKGHFLPDOSODFH
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
W\SHGHILQWPHWUHV
LQWPDLQ
^
PHWUHVGLVWDQFH
GLVWDQFH
FRXW´GLVWDQFHLQPHWUHVLV´GLVWDQFH
`
7KLVFRGHZKHQH[HFXWHGFUHDWHVDQHZLQWGDWDW\SHFDOOHGPHWUHV
7KHQLQWKHPDLQFRGHEORFNWKHUHoVDQHZYDULDEOHFDOOHGGLVWDQFH
ZKLFKLVDQLQWHJHUVR\RXoUHEDVLFDOO\WHOOLQJWKHFRPSLOHUWKDW
WKHUHoVDQRWKHUQDPHIRULQW:HDVVLJQHGWKHYDOXHWRGLVWDQFH
DQGGLVSOD\HGWKHRXWSXWGLVWDQFHLQPHWUHVLV
,WPLJKWVRXQGDOLWWOHFRQIXVLQJWREHJLQZLWKEXWWKHPRUH\RXXVH
&DQGFUHDWH\RXURZQFRGHWKHHDVLHULWEHFRPHV
ZZZSFOSXEOLFDWLRQVFRP 109
&)XQGDPHQWDOV
6WULQJV
6WULQJVDUHREMHFWVWKDWUHSUHVHQWDQGKROGVHTXHQFHVRIFKDUDFWHUV)RUH[DPSOH\RX
FRXOGKDYHDXQLYHUVDOJUHHWLQJLQ\RXUFRGHn:HOFRPHoDQGDVVLJQWKDWDVDVWULQJWREH
FDOOHGXSZKHUHYHU\RXOLNHLQWKHSURJUDP
STRING THEORY
7KHUHDUHGLƪHUHQWZD\VLQZKLFK\RXFDQFUHDWHDVWULQJRIFKDUDFWHUVZKLFKKLVWRULFDOO\DUHDOOFDUULHGRYHUIURPWKHRULJLQDO
C language, and are still supported by C++.
STEP 9 8VLQJWKHDYDLODEOHRSHUDWLRQVWKDWFRPHZLWKWKH
VWULQJIXQFWLRQ\RXFDQPDQLSXODWHWKHFRQWHQWVRID
VWULQJ)RUH[DPSOHWRUHPRYHFKDUDFWHUVIURPDVWULQJ\RXFRXOGXVH
STEP 6 <RXFDQVHHWKDWZHXVHGJUHHWVL]H WRRXWSXWWKH
LQFOXGHLRVWUHDP!
OHQJWKWKHQXPEHURIFKDUDFWHUVWKHUHDUHRIWKH
XVLQJQDPHVSDFHVWG
FRQWHQWVRIWKHVWULQJ1DWXUDOO\LI\RXFDOO\RXUVWULQJVRPHWKLQJ
RWKHUWKDQJUHHWWKHQ\RXQHHGWRFKDQJHWKHFRPPDQGWRUHƮHFW LQWPDLQ
WKLV,WoVDOZD\VVWULQJQDPHRSHUDWLRQ%XLOGDQGUXQWKHFRGHWRVHH
^
WKHUHVXOWV
VWULQJVWUJ ´+HUHLVDORQJVHQWHQFHLQD
VWULQJµ
FRXWVWUJ¶?Q·
VWUJHUDVH
FRXWVWUJ¶?Q·
VWUJHUDVH VWUJEHJLQ
FRXWVWUJ¶?Q·
STEP 7 <RXFDQRIFRXUVHDGGVWULQJVWRJHWKHURUUDWKHU
VWUJHUDVH VWUJEHJLQ VWUJHQG
FRPELQHWKHPWRIRUPORQJHUVWULQJV
FRXWVWUJ¶?Q·
LQFOXGHLRVWUHDP!
`
XVLQJQDPHVSDFHVWG
LQWPDLQ
^ STEP 10 ,WoVZRUWKVSHQGLQJVRPHWLPHSOD\LQJDURXQGZLWK
WKHQXPEHUVZKLFKDUHWKHFKDUDFWHUSRVLWLRQV
VWULQJJUHHW ´+HOORµ
LQWKHVWULQJ2FFDVLRQDOO\LWFDQEHKLWDQGPLVVZKHWKHU\RXJHWLW
VWULQJJUHHW ´ZRUOGµ
ULJKWVRSUDFWLFHPDNHVSHUIHFW7DNHDORRNDWWKHVFUHHQVKRWWRVHH
VWULQJJUHHW JUHHWJUHHW
WKHUHVXOWRIWKHFRGH
FRXWJUHHW´?Qµ
`
ZZZSFOSXEOLFDWLRQVFRP 111
&)XQGDPHQWDOV
&0DWKV
3URJUDPPLQJLVPDWKHPDWLFDOLQQDWXUHDQGDV\RXPLJKWH[SHFWWKHUHoVSOHQW\RI
EXLOWLQVFRSHIRUVRPHTXLWHLQWHQVHPDWKV&KDVDORWWRRƪHUVRPHRQHZKRoV
LPSOHPHQWLQJPDWKHPDWLFDOPRGHOVLQWRWKHLUFRGH,WFDQEHH[WUHPHO\FRPSOH[RU
UHODWLYHO\VLPSOH
C++ = MC2
The basic mathematical symbols apply in C++ as they do in most other programming languages. However, by using the C++
Math Library, you can also calculate square roots, powers, trig and more.
STEP 2 :KLOHVLPSOHLWGRHVJHWWKHROGPDWKVPXVFOH
ZDUPHGXS1RWHWKDWZHXVHGDƮRDWIRUWKH
QXPEHUVYDULDEOH:KLOH\RXFDQKDSSLO\XVHDQLQWHJHULI\RX STEP 4 $JDLQH[HFXWHWKHVLPSOHFRGHDQGVHHWKHUHVXOWV
VXGGHQO\VWDUWHGWRXVHGHFLPDOV\RXZRXOGQHHGWRFKDQJHWRD :KLOHQRWSDUWLFXODUO\LQWHUHVWLQJLWoVDVWDUWLQWR&
ƮRDWRUDGRXEOHGHSHQGLQJRQWKHDFFXUDF\QHHGHG5XQWKHFRGH PDWKV:HXVHGDƮRDWKHUHVR\RXFDQSOD\DURXQGZLWKWKHFRGH
DQGVHHWKHUHVXOWV DQGPXOWLSO\E\GHFLPDOSODFHVDVZHOODVGLYLGHDGGDQGVXEWUDFW
STEP 10 7KHYDOXHRI3LLVDOVRVWRUHGLQWKHFPDWKKHDGHU
OLEUDU\,WFDQEHFDOOHGXSZLWKWKH0B3,IXQFWLRQ
(QWHUFRXW0B3,LQWRWKHFRGHDQG\RXJHWRU\RXFDQ
XVHLWWRFDOFXODWH
LQFOXGHLRVWUHDP!
LQFOXGHFPDWK!
XVLQJQDPHVSDFHVWG
LQWPDLQ
^
GRXEOHDUHDUDGLXV
DUHD 0B3, UDGLXV UDGLXV
STEP 7 +HUHZHFUHDWHGDQHZƮRDWFDOOHGQXPEHUDQG
XVHGWKHVTUW QXPEHU IXQFWLRQWRGLVSOD\WKH FRXWDUHD´?Qµ
VTXDUHURRWRIWKHYDOXHRIWKHYDULDEOHQXPEHU%XLOGDQGUXQ
`
WKHFRGHDQG\RXUDQVZHUUHDGV
ZZZSFOSXEOLFDWLRQVFRP 113
Index
114 ZZZSFOSXEOLFDWLRQVFRP
C++ Input/Output
ZZZSFOSXEOLFDWLRQVFRP 115
&,QSXW2XWSXW
8VHU,QWHUDFWLRQ
7KHUHoVQRWKLQJTXLWHDVVDWLVI\LQJDVFUHDWLQJDSURJUDPWKDWUHVSRQGVWR\RX7KLV
EDVLFXVHULQWHUDFWLRQLVRQHRIWKHPRVWWDXJKWDVSHFWVRIDQ\ODQJXDJHDQGZLWKLW
\RXoUHDEOHWRGRPXFKPRUHWKDQVLPSO\JUHHWWKHXVHUE\QDPH
HELLO, DAVE
You have already used cout, the standard output stream, throughout our code. Now you’re going to be using cin, the standard
input stream, to prompt a user response.
STEP 4 ,I\RXoUHDVNLQJDTXHVWLRQ\RXQHHGWRVWRUHWKH
LQSXWDVDVWULQJWRDVNWKHXVHUWKHLUQDPH\RX
ZRXOGXVH
LQFOXGHLRVWUHDP!
STEP 2 7KHGDWDW\SHRIWKHYDULDEOHPXVWDOVRPDWFKWKH XVLQJQDPHVSDFHVWG
W\SHRILQSXW\RXZDQWIURPWKHXVHU)RUH[DPSOH
LQWPDLQ
WRDVNDXVHUWKHLUDJH\RXZRXOGXVHDQLQWHJHUOLNHWKLV
^
LQFOXGHLRVWUHDP! VWULQJQDPH
XVLQJQDPHVSDFHVWG FRXW´ZKDWLV\RXUQDPH´
FLQ!!QDPH
LQWPDLQ
^ FRXW´?Q+HOOR´QDPH´,KRSH\RX·UH
LQWDJH ZHOOWRGD\"?Qµ
FRXW´ZKDWLV\RXUDJH´
`
FLQ!!DJH
FRXWµ?Q<RXDUH´DJH´\HDUVROG?Qµ
`
STEP 7 /LNHZLVHLQSXWWHGGDWDFDQEHPDQLSXODWHGRQFH
\RXKDYHLWVWRUHGLQDYDULDEOH)RULQVWDQFHDVNWKH STEP 10 *HWOLQHLVXVXDOO\DFRPPDQGWKDWQHZ&
XVHUIRUWZRQXPEHUVDQGGRVRPHPDWKVRQWKHP SURJUDPPHUVIRUJHWWRLQFOXGH7KHWHUPLQDWLQJ
ZKLWHVSDFHLVDQQR\LQJZKHQ\RXFDQoWƬJXUHRXWZK\\RXUFRGH
LQFOXGHLRVWUHDP!
LVQoWZRUNLQJ,QVKRUWLWoVEHVWWRXVHJHWOLQH FLQYDULDEOH LQIXWXUH
XVLQJQDPHVSDFHVWG
LQFOXGHLRVWUHDP!
LQWPDLQ
XVLQJQDPHVSDFHVWG
^
ÁRDWQXPQXP LQWPDLQ
^
FRXW´(QWHUWZRQXPEHUV?Qµ
FLQ!!QXP!!QXP VWULQJQDPH
FRXW´(QWHU\RXUIXOOQDPH?Qµ
FRXWQXP´´QXP´LV´
JHWOLQH FLQQDPH
QXPQXP´?Qµ
FRXW´?Q+HOOR´QDPH´?Qµ
`
`
ZZZSFOSXEOLFDWLRQVFRP 117
&,QSXW2XWSXW
&KDUDFWHU/LWHUDOV
,Q&DOLWHUDOLVDQREMHFWRUYDULDEOHWKDWRQFHGHƬQHGUHPDLQVWKHVDPHWKURXJKRXW
WKHFRGH+RZHYHUDFKDUDFWHUOLWHUDOLVGHƬQHGE\DEDFNVODVKVXFKDVWKH?Q\RXoYH
EHHQXVLQJDWWKHHQGRIDFRXWVWDWHPHQWWRVLJQLI\DQHZOLQH
ESCAPE SEQUENCE
When used in something like a cout statement, character literals are also called Escape Sequence Codes. They allow you to
insert a quote, an alert, new line and much more.
A HANDY CHART
There are numerous character literals, or escape sequence codes, to choose from. We therefore thought it would be good for
you to have a handy chart available, for those times when you need to insert a code.
\’ Single Quote
\? Question Mark
\a Alert/Alarm
\b Backspace
\f Form Feed
\n New Line
\r Carriage Return
\t Horizontal Tab
\v Vertical Tab
\0 Null Character
81,&2'(&+$5$&7(56Ǔ87)Ǖǔ
8QLFRGHFKDUDFWHUVDUHV\PEROVRUFKDUDFWHUVWKDWDUHVWDQGDUGDFURVV
DOOSODWIRUPV)RUH[DPSOHWKHFRS\ULJKWV\PEROWKDWFDQEHHQWHUHG
YLDWKHNH\ERDUGE\HQWHULQJWKH8QLFRGHFRGHIROORZHGE\$/7;,Q
WKHFDVHRIWKHFRS\ULJKWV\PEROHQWHU$$OW;,Q&FRGH\RX
ZRXOGHQWHU
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
LQWPDLQ
^
FRXW´?X$µ
UNICODE
CHARACTER TABLE
$FRPSOHWHOLVWRIWKHDYDLODEOH8QLFRGH
FKDUDFWHUVFDQEHIRXQGDWwww.
unicode-table.com/en/+RYHU\RXU
PRXVHRYHUWKHFKDUDFWHUWRVHHLWV
XQLTXHFRGHWRHQWHULQ&
ZZZSFOSXEOLFDWLRQVFRP 119
&,QSXW2XWSXW
'HƬQLQJ&RQVWDQWV
&RQVWDQWVDUHƬ[HGYDOXHVLQ\RXUFRGH7KH\FDQEHDQ\EDVLFGDWDW\SHEXWDVWKH
QDPHVXJJHVWVWKHLUYDOXHUHPDLQVFRQVWDQWWKURXJKRXWWKHHQWLUHFRGH7KHUHDUHWZR
VHSDUDWHZD\VWRGHƬQHDFRQVWDQWLQ&WKHGHƬQHSUHSURFHVVRUDQGFRQVW
#DEFINE
The pre-processors are instructions to the compiler to pre-process the information before it goes ahead and compiles the
FRGHLQFOXGHLVDSUHSURFHVVRUDVLVGHƬQH
STEP 2 1RZOHWoVDVVXPH\RXUFRGHKDVWKUHHGLƪHUHQW
FRQVWDQWVOHQJWKZLGWKDQGKHLJKW<RXFDQGHƬQH
WKHPZLWK
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
GHÀQH/(1*7+
GHÀQH:,'7+
GHÀQH+(,*+7
LQWPDLQ
^
`
STEP 4 %XLOGDQGUXQWKHFRGH-XVWDVH[SHFWHGLWGLVSOD\V
WKHYDOXHVIRUHDFKRIWKHFRQVWDQWVFUHDWHG,WoV
ZRUWKQRWLQJWKDW\RXGRQoWQHHGDVHPLFRORQZKHQ\RXoUHGHƬQLQJ
DFRQVWDQWZLWKWKHGHƬQHNH\ZRUG
STEP 9 %HFDXVH\RXoUHXVLQJFRQVWZLWKLQWKHPDLQEORFNRI
FRGH\RXQHHGWRƬQLVKWKHOLQHZLWKDVHPLFRORQ
<RXFDQXVHHLWKHUDVORQJDVWKHQDPHVDQGYDOXHVGRQoWFODVKEXW
LWoVZRUWKPHQWLRQLQJWKDWGHƬQHUHTXLUHVQRPHPRU\VRLI\RXoUH
FRGLQJWRDVHWDPRXQWRIPHPRU\GHƬQHLV\RXUEHVWEHW
STEP 6 7KHFRGHZKHQEXLOWDQGH[HFXWHGGRHVH[DFWO\WKH
VDPHDVEHIRUHXVLQJWKHQHZFRQVWDQW1(:/,1(
WRLQVHUWDQHZOLQHLQWKHFRXWVWDWHPHQW,QFLGHQWDOO\FUHDWLQJD
QHZOLQHFRQVWDQWLVQoWDJRRGLGHDXQOHVV\RXoUHPDNLQJLWVPDOOHU
WKDQ?QRUHYHQWKHHQGOFRPPDQG
STEP 10 &RQVWZRUNVLQPXFKWKHVDPHZD\DVGHƬQH
<RXFDQFUHDWHVWDWLFLQWHJHUVDQGHYHQQHZOLQHV
STEP 7 'HƬQLQJDFRQVWDQWLVDJRRGZD\RILQLWLDOLVLQJ\RXU
EDVHYDOXHVDWWKHVWDUWRI\RXUFRGH<RXFDQGHƬQH LQFOXGHLRVWUHDP!
WKDW\RXUJDPHKDVWKUHHOLYHVRUHYHQWKHYDOXHRI3,ZLWKRXW XVLQJQDPHVSDFHVWG
KDYLQJWRFDOOXSWKH&PDWKOLEUDU\
LQWPDLQ
LQFOXGHLRVWUHDP!
^
XVLQJQDPHVSDFHVWG
FRQVWLQW/(1*7+
GHÀQH3, FRQVWLQW:,'7+
FRQVWFKDU1(:/,1( ¶?Q·
LQWPDLQ
LQWDUHD
^
DUHD /(1*7+ :,'7+
FRXW´7KHYDOXHRI3LLV´3,HQGO
FRXW´$UHDLV´DUHD1(:/,1(
`
`
ZZZSFOSXEOLFDWLRQVFRP 121
&,QSXW2XWSXW
)LOH,QSXW2XWSXW
7KHVWDQGDUGLRVWUHDPOLEUDU\SURYLGHV&FRGHUVZLWKWKHFLQDQGFRXWLQSXWDQG
RXWSXWIXQFWLRQDOLW\+RZHYHUWREHDEOHWRUHDGDQGZULWHIURPDƬOH\RXQHHGWR
XWLOLVHDQRWKHU&OLEUDU\FDOOHGIVWUHDP
FSTREAMS
7KHUHDUHWZRPDLQGDWDW\SHVZLWKLQWKHIVWUHDPOLEUDU\WKDWDUHXVHGWRRSHQDƬOHUHDGIURPLWDQGZULWHWRLWRIVWUHDPDQG
ifstream. Here’s how they work.
STEP 4 7RUHDGWKHFRQWHQWVRIDƬOHDQGRXWSXWLWWRWKH
VFUHHQ\RXQHHGWRGRWKLQJVVOLJKWO\GLƪHUHQWO\
)LUVW\RXQHHGWRFUHDWHDVWULQJYDULDEOHWRVWRUHWKHƬOHoVFRQWHQWV
OLQHE\OLQH WKHQRSHQWKHƬOHXVHJHWOLQHWRUHDGWKHƬOHOLQHE\
OLQHDQGRXWSXWWKRVHOLQHVWRWKHVFUHHQ)LQDOO\FORVHWKHƬOH
STEP 6 <RXFDQQR
GRXEWVHHWKDW
ZHoYHLQFOXGHGDZKLOHORRS STEP 9 7KHFRGHIURPVWHSGLƪHUVDJDLQEXWRQO\ZKHUH
ZKLFKZHFRYHULQDIHZSDJHV LWFRPHVWRDGGLQJWKHDJHLQWHJHU1RWLFHWKDW
WLPH,WPHDQVWKDWZKLOHWKHUH ZHXVHGFLQ!!DJHLQVWHDGRIWKHSUHYLRXVJHWOLQH FLQYDULDEOH
DUHOLQHVWREHUHDGIURPWKH 7KHUHDVRQIRUWKLVLVWKDWWKHJHWOLQHIXQFWLRQKDQGOHVVWULQJVQRW
WH[WƬOH&JHWOLQHVWKHP LQWHJHUVVRZKHQ\RXoUHXVLQJDGDWDW\SHRWKHUWKDQDVWULQJXVH
2QFHDOOWKHOLQHVDUHUHDG WKHVWDQGDUGFLQ
WKHRXWSXWLVGLVSOD\HGRQWKH
VFUHHQDQGWKHƬOHLVFORVHG
ZZZSFOSXEOLFDWLRQVFRP 123
Index
Loops and
Decision Making
124 ZZZSFOSXEOLFDWLRQVFRP
Loops and Decision Making
ZZZSFOSXEOLFDWLRQVFRP 125
Loops and Decision Making
:KLOH/RRS
$ZKLOHORRSoVIXQFWLRQLVWRUHSHDWDVWDWHPHQWRUDJURXSRIVWDWHPHQWVZKLOHDFHUWDLQ
FRQGLWLRQUHPDLQVWUXH:KHQWKHZKLOHORRSVWDUWVLWLQLWLDOLVHVLWVHOIE\WHVWLQJWKH
FRQGLWLRQRIWKHORRSDQGWKHVWDWHPHQWVZLWKLQEHIRUHH[HFXWLQJWKHUHVWRIWKHORRS
TRUE OR FALSE?
While loops are one of the most popular form of C++ code looping. They repeatedly run the code contained within the loop
while the condition is true. Once it proves false, the code continues as normal.
STEP 4 :HoUHLQWURGXFLQJDIHZQHZHOHPHQWVKHUH7KH
ƬUVWDUHWKHRSHQLQJDQGFORVLQJEUDFHVIRUWKH
ZKLOHORRS7KLVLVEHFDXVHRXUORRSLVDFRPSRXQGVWDWHPHQW
PHDQLQJDJURXSRIVWDWHPHQWVQRWHDOVRWKHUHoVQRVHPLFRORQ
DIWHUWKHZKLOHVWDWHPHQW<RXQRZDOVRKDYHUHWXUQZKLFKLVD
STEP 2 &UHDWHDVLPSOHZKLOHORRS(QWHUWKHFRGHEHORZ
FOHDQDQGSUHIHUUHGZD\RIHQGLQJWKHFRGH
EXLOGDQGUXQ ZHoYHDGGHGFRPPHQWVWRWKH
VFUHHQVKRW
^
LQWQXP
ZKLOH QXP
^
FRXW´1XPEHU´QXPHQGO
QXP QXP
`
STEP 5 ,I\RXGLGQoWQHHGWRVHHWKHFRQWLQXDOO\LQFUHDVLQJ
UHWXUQ YDOXHRIQXP\RXFRXOGKDYHGRQHDZD\ZLWKWKH
` FRPSRXQGZKLOHVWDWHPHQWDQGLQVWHDGMXVWDGGHGQXPE\LWVHOI
XQWLOLWUHDFKHGDQGWKHQGLVSOD\HGWKHYDOXH
^
LQWQXP
ZKLOH QXP
QXP
FRXW´1XPEHU´QXPHQGO
UHWXUQ
`
ZZZSFOSXEOLFDWLRQVFRP 127
Loops and Decision Making
)RU/RRS
,QVRPHUHVSHFWVDIRUORRSZRUNVLQDYHU\VLPLODUZD\WRWKDWRIDZKLOHORRSDOWKRXJKLWoV
VWUXFWXUHLVGLƪHUHQW$IRUORRSLVVSOLWLQWRWKUHHVWDJHVDQLQLWLDOLVHUDFRQGLWLRQDQGDQ
LQFUHPHQWDOVWHS2QFHVHWXSWKHORRSUHSHDWVLWVHOIXQWLOWKHFRQGLWLRQEHFRPHVIDOVH
LOOPY LOOPS
The initialise stage of a for loop is executed only once and this sets the point reference for the loop. The condition is evaluated
by the loop to see if it’s true or false and then the increment is executed. The loop then repeats the second and third stage.
STEP 2 6WDUWVLPSOHDQGFUHDWHDIRUORRSWKDWFRXQWVIURP
WRGLVSOD\LQJWKHYDOXHWRWKHVFUHHQZLWK
HDFKLQFUHPHQW
STEP 5 $IRUORRSLVTXLWHDQHDWSDFNDJHLQ&DOO
^ FRQWDLQHGZLWKLQLWVRZQEUDFNHWVZKLOHWKHRWKHU
)RU/RRS%HJLQV HOHPHQWVRXWVLGHRIWKHORRSDUHGLVSOD\HGEHORZ,I\RXZDQWWR
IRU LQWQXP QXPQXP QXP FUHDWHDVHFRQGFRXQWGRZQ\RXFRXOGXVH
^
LQFOXGHLRVWUHDP!
FRXW´1XPEHU´QXPHQGO
LQFOXGHZLQGRZVK!
`
XVLQJQDPHVSDFHVWG
UHWXUQ
LQWPDLQ
`
^
)RU/RRS%HJLQV
STEP 3 :RUNLQJWKURXJKWKHSURFHVVRIWKHIRUORRSEHJLQ IRU LQWD D D D
E\FUHDWLQJDQLQWHJHUFDOOHGQXPDQGDVVLJQLQJLWD ^
YDOXHRI1H[WVHWWKHFRQGLWLRQLQWKLVFDVHQXPEHLQJOHVVWKDQ FRXWDHQGO
7KHODVWVWDJHLVZKHUH\RXFUHDWHWKHLQFUHPHQWVKHUHLWoVWKH 6OHHS
YDOXHRIQXPEHLQJDGGHGE\ `
FRXW´?Q%ODVW2IIµHQGO
UHWXUQ
`
STEP 7 1DWXUDOO\\RXFDQLQFOXGHDORWPRUHFRQWHQWLQWRD
IRUORRSLQFOXGLQJVRPHXVHULQSXW
LQWLQIDFW
FRXW´(QWHUDZKROHQXPEHU´
FLQ!!Q
IRU L L QL ^
IDFW L
`
FRXW´?Q)DFWRULDORI´Qµ ´IDFW
HQGO
UHWXUQ
STEP 10 7KHYDOXHRIWKHLQWHJHULFDQEHH[SDQGHGIURP
WRZKDWHYHUQXPEHU\RXZDQWGLVSOD\LQJD
YHU\ODUJHPXOWLSOLFDWLRQWDEOHLQWKHSURFHVV RUDVPDOORQH 2I
FRXUVHWKHGDWDW\SHZLWKLQDIRUORRSGRHVQoWKDYHWREHDQLQWHJHU
DVORQJDVLWoVYDOLGLWZRUNV
IRU ÁRDWL LL
^
FRXWLHQGO
`
UHWXUQ
STEP 8 7KHFRGHIURPVWHSZKHQEXLOWDQGUXQDVNVIRUD
QXPEHUWKHQGLVSOD\VWKHIDFWRULDORIWKDWQXPEHU
WKURXJKWKHIRUORRS7KHXVHUoVQXPEHULVVWRUHGLQWKHLQWHJHU
QIROORZHGE\WKHLQWHJHU,ZKLFKLVXVHGWRFKHFNLIWKHFRQGLWLRQ
LVWUXHRUIDOVHDGGLQJHDFKWLPHDQGFRPSDULQJLWWRWKHXVHUoV
QXPEHUQ
ZZZSFOSXEOLFDWLRQVFRP 129
Loops and Decision Making
'Rf:KLOH/RRS
$GRfZKLOHORRSGLƪHUVVOLJKWO\IURPWKDWRIDIRURUHYHQDZKLOHORRS%RWKIRUDQG
ZKLOHVHWDQGH[DPLQHWKHVWDWHRIWKHFRQGLWLRQDWWKHVWDUWRIWKHORRSRUWKHWRSRI
WKHORRSLI\RXSUHIHU+RZHYHUDGRfZKLOHORRSLVVLPLODUWRDZKLOHORRSEXWLQVWHDG
FKHFNVWKHFRQGLWLRQDWWKHERWWRPRIWKHORRS
DO LOOPS
The good thing about a do… while loop is that it’s guaranteed to run through at least once. It’s structure is: do, followed by
statements, while condition is true. This is how it works.
STEP 2 %HJLQZLWKDVLPSOHQXPEHUFRXQW
^
LQWQXP STEP 4 ,IWKHFRQGLWLRQLVWUXHWKHORRSLVH[HFXWHG7KLV
FRQWLQXHVXQWLOWKHFRQGLWLRQLVIDOVH:KHQWKH
GR FRQGLWLRQKDVEHHQH[SUHVVHGDVIDOVHWKHORRSWHUPLQDWHVDQGWKH
^ FRGHFRQWLQXHV7KLVPHDQV\RXFDQFUHDWHDORRSZKHUHWKHFRGH
FRXW´1XPEHU´QXPHQGO FRQWLQXHVXQWLOWKHXVHUHQWHUVDFHUWDLQFKDUDFWHU
QXP QXP
`
ZKLOH QXP
UHWXUQ
`
FRXW´?Q%ODVW2IIµHQGO
UHWXUQ
`
STEP 6 7KHFRGHIURP6WHSZRUNVDVIROORZVWZRƮRDWLQJ
SRLQWYDULDEOHVDUHDVVLJQHGQXPEHUDQGVXPERWK
ZLWKWKHYDOXHRI7KHUHLVDEULHIVHWRILQVWUXFWLRQVIRUWKHXVHU
WKHQWKHGRfZKLOHORRSEHJLQV
STEP 10 7KHPDLQDGYDQWDJHRIXVLQJDGRfZKLOHORRS
LVEHFDXVHLWoVDQH[LWFRQGLWLRQORRSZKHUHDVD
STEP 7 7KHGRfZKLOHORRSLQWKLVLQVWDQFHDVNVWKHXVHU
ZKLOHORRSLVDQHQWU\FRQWUROORRS7KHUHIRUHLI\RXUFRGHUHTXLUHVD
WRLQSXWDQXPEHUZKLFK\RXDVVLJQHGWRWKHƮRDW
ORRSWKDWQHHGVWREHH[HFXWHGDWOHDVWRQFH IRUH[DPSOHWRFKHFN
YDULDEOHQXPEHU7KHFDOFXODWLRQVWHSXVHVWKHVHFRQGƮRDWLQJ
WKHQXPEHURIOLYHVLQDJDPH WKHQDGRfZKLOHORRSLVSHUIHFW
SRLQWYDULDEOHVXPZKLFKDGGVWKHYDOXHRIQXPEHUHYHU\WLPHWKH
XVHUHQWHUVDQHZYDOXH
ZZZSFOSXEOLFDWLRQVFRP 131
Loops and Decision Making
,I6WDWHPHQW
7KHGHFLVLRQPDNLQJVWDWHPHQWnLIoLVSUREDEO\RQHRIWKHPRVWXVHGVWDWHPHQWVLQDQ\
SURJUDPPLQJODQJXDJHUHJDUGOHVVRIZKHWKHULWoV&3\WKRQ%$6,&RUDQ\WKLQJ
HOVH,WUHSUHVHQWVDMXQFWLRQLQWKHFRGHZKHUH,)RQHFRQGLWLRQLVWUXHGRWKLVRU,)LWoV
IDOVHGRWKDW
IF ONLY
If uses a Boolean expression within its statement. If the Boolean expression is true, the code within the statement is executed.
If not, then the code after the statement is executed instead.
STEP 1 )LUVWFUHDWHDQHZ&ƬOHDQGHQWHUWKHUHOHYDQW
VWDQGDUGKHDGHUVDVXVXDO
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
LQWPDLQ
^
STEP 8 7KHƬUVWLIVWDWHPHQWFKHFNVWRVHHLIWKHXVHUoV
LQSXWWHGYDOXHLVOHVVWKDQRUHTXDOWR]HUR,ILWLV
WKHQWKHRXWSXWLVn%UUUULWoVUHDOO\FROGo2WKHUZLVHLIWKHLQSXWLV
STEP 6 <RXFDQLQFOXGHDQLIVWDWHPHQWZLWKLQDGRfZKLOH
JUHDWHUWKDQ]HURWKHFRGHRXWSXWVn$WOHDVWLWoVQRWIUHH]LQJo
ORRS)RUH[DPSOH
^
ÁRDWWHPS
GR
^
FRXW´?Q(QWHUWKHWHPSHUDWXUH RU
WRH[LW ´HQGO
FLQ!!WHPS
LI WHPS
^
FRXW´?Q%UUUULW·VUHDOO\FROGµ STEP 9 )LQDOO\LIWKHXVHUHQWHUVWKHYDOXHZKLFKLV
HQGO LPSRVVLEO\FROGVRLVWKHUHIRUHDXQUHDOLVWLFYDOXH
` WKHGRfZKLOHORRSLVWHUPLQDWHGDQGDIULHQGO\n*RRGE\HoLV
LI WHPS! GLVSOD\HGWRWKHVFUHHQ
^
FRXW´?Q$WOHDVWLW·VQRW
IUHH]LQJµHQGO
`
`
ZKLOH WHPS
FRXW´?Q*RRGE\H?QµHQGO
UHWXUQ
`
STEP 10 8VLQJLILVTXLWHSRZHUIXOLILWoVXVHGFRUUHFWO\-XVW
UHPHPEHUWKDWLIWKHFRQGLWLRQLVWUXHWKHQWKH
FRGHH[HFXWHVZKDWoVLQWKHEUDFHV,IQRWLWFRQWLQXHVRQLWVPHUU\
ZD\6HHZKDWHOVH\RXFDQFRPHXSZLWKXVLQJLIDQGDFRPELQDWLRQ
RIORRSV
ZZZSFOSXEOLFDWLRQVFRP 133
Loops and Decision Making
,If(OVH6WDWHPHQW
7KHUHLVDPXFKEHWWHUZD\WRXVHDQLIVWDWHPHQWLQ\RXUFRGHZLWKLIfHOVH,IfHOVH
ZRUNVLQPXFKWKHVDPHZD\DVDVWDQGDUGLIVWDWHPHQW,IWKH%RROHDQH[SUHVVLRQ
LVWUXHWKHFRGHZLWKLQWKHEUDFHVLVH[HFXWHG(OVHWKHFRGHZLWKLQWKHQH[WVHWRI
EUDFHVLVXVHGLQVWHDG
IF YES, ELSE NO
There are two sections of code that can be executed depending on the outcome in an if… else statement. It’s quite easy to
visualise once you get used to its structure.
ZZZSFOSXEOLFDWLRQVFRP 135
Index
136 ZZZSFOSXEOLFDWLRQVFRP
Working with Code
ZZZSFOSXEOLFDWLRQVFRP 137
:RUNLQJZLWK&RGH
&RPPRQ&RGLQJ0LVWDNHV
:KHQ\RXVWDUWVRPHWKLQJQHZ\RXoUHLQHYLWDEO\JRLQJWRPDNHPLVWDNHVWKLVLVSXUHO\
GRZQWRLQH[SHULHQFHDQGWKRVHPLVWDNHVDUHJUHDWWHDFKHUVLQWKHPVHOYHV+RZHYHU
HYHQH[SHUWVPDNHWKHRFFDVLRQDOPLVKDS7KLQJLVWROHDUQIURPWKHPDVEHVW\RXFDQ
X=MISTAKE, PRINT Y
There are many pitfalls for the programmer to be aware of, far too many to be listed here. Being able
WRUHFRJQLVHDPLVWDNHDQGƬ[LWLVZKHQ\RXVWDUWWRPRYHLQWRPRUHDGYDQFHGWHUULWRU\
//COMMENTS
8VHFRPPHQWV,WoVDVLPSOHFRQFHSWEXWFRPPHQWLQJRQ
PLAN AHEAD
\RXUFRGHVDYHVVRPDQ\SUREOHPVZKHQ\RXQH[WFRPHWR
ORRNRYHULW,QVHUWLQJFRPPHQWOLQHVKHOSV\RXTXLFNO\VLIW
WKURXJKWKHVHFWLRQVRIFRGHWKDWDUHFDXVLQJSUREOHPV
DOVRXVHIXOLI\RXQHHGWRUHYLHZDQROGHUSLHFHRIFRGH
:KLOHLWoVJUHDWWRZDNHXSRQHPRUQLQJDQGGHFLGHWRFRGH
DFODVVLFWH[WDGYHQWXUHLWoVQRWDOZD\VSUDFWLFDOZLWKRXWD
JRRGSODQ6PDOOVQLSSHWVRIFRGHFDQEHZULWWHQZLWKRXW
WRRPXFKWKRXJKWDQGSODQQLQJEXWORQJHUDQGPRUHLQ
GHSWKFRGHUHTXLUHVDJRRGZRUNLQJSODQWRVWLFNWRDQG
KHOSLURQRXWWKHEXJV
138 ZZZEGPSXEOLFDWLRQVFRP
&RPPRQ&RGLQJ0LVWDNHV
USER ERROR
8VHULQSXWLVRIWHQDSDUDO\VLQJPLVWDNHLQFRGH)RU
H[DPSOHZKHQWKHXVHULVVXSSRVHGWRHQWHUDQXPEHUIRU
BACKUPS
WKHLUDJHDQGLQVWHDGWKH\HQWHULWLQOHWWHUV2IWHQDXVHU
FDQHQWHUVRPXFKLQWRDQLQSXWWKDWLWRYHUƮRZVVRPH
LQWHUQDOEXƪHUWKXVVHQGLQJWKHFRGHFUDVKLQJ:DWFKWKRVH
XVHULQSXWVDQGFOHDUO\VWDWHZKDWoVQHHGHGIURPWKHP
$OZD\VPDNHDEDFNXSRI\RXUZRUNZLWKDVHFRQGDU\
EDFNXSIRUDQ\FKDQJHV\RXoYHPDGH0LVWDNHVFDQEH
UHFWLƬHGLIWKHUHoVDJRRGEDFNXSLQSODFHWRUHYHUWWRIRU
WKRVHWLPHVZKHQVRPHWKLQJJRHVZURQJ,WoVPXFKHDVLHU
WRVWDUWZKHUH\RXOHIWRƪUDWKHUWKDQVWDUWLQJIURPWKH
EHJLQQLQJDJDLQ
RE-INVENTING WHEELS
<RXFDQHDVLO\VSHQGGD\VWU\LQJWRIDWKRPRXWDVHFWLRQ
SECURE DATA
RIFRGHWRDFKLHYHDJLYHQUHVXOWDQGLWoVIUXVWUDWLQJDQG
RIWHQWLPHZDVWLQJ:KLOHLWoVHTXDOO\UHZDUGLQJWRVROYH ,I\RXoUHZULWLQJFRGH
WKHSUREOHP\RXUVHOIRIWHQWKHVDPHFRGHLVRXWWKHUHRQ WRGHDOZLWKXVHUQDPHV
WKH,QWHUQHWVRPHZKHUH'RQoWWU\DQGUHLQYHQWWKHZKHHO DQGSDVVZRUGVRU
ORRNWRVHHLIVRPHHOVHKDVGRQHLWƬUVW RWKHUVXFKVHQVLWLYH
GDWDWKHQHQVXUH
WKDWWKHGDWDLVQoWLQ
FOHDUWH[W/HDUQKRZ
WRFUHDWHDIXQFWLRQ
WRHQFU\SWVHQVLWLYH
GDWDSULRUWRIHHGLQJ
LQWRDURXWLQHWKDWFDQ
WUDQVPLWRUVWRUHLW
ZKHUHVRPHRQHPD\EH
DEOHWRJHWWRYLHZLW
HELP! MATHS
$VNLQJIRUKHOSLVVRPHWKLQJPRVWRIXVKDVVWUXJJOHG ,I\RXUFRGHPDNHVPXOWLSOHFDOFXODWLRQVWKHQ\RXQHHG
ZLWKLQWKHSDVW:LOOWKHSHRSOHZHoUHDVNLQJODXJKDWXV" WRHQVXUHWKDWWKHPDWKVEHKLQGLWLVVRXQG7KHUHDUH
$P,ZDVWLQJHYHU\RQHoVWLPH",WoVDFRPPRQPLVWDNHIRU WKRXVDQGVRILQVWDQFHVZKHUHSURJUDPVKDYHRƪHUHG
VRPHRQHWRVXƪHULQVLOHQFH+RZHYHUDVORQJDV\RXDVN LQFRUUHFWGDWDEDVHGRQSRRUPDWKHPDWLFDOFRGLQJZKLFK
WKHLQWKHFRUUHFWPDQQHUREH\DQ\IRUXPUXOHVDQGEH FDQKDYHGLVDVWURXVHƪHFWVGHSHQGLQJRQZKDWWKHFRGHLV
SROLWHWKHQ\RXUTXHVWLRQLVQoWVLOO\ VHWWRGR,QVKRUWGRXEOHFKHFN\RXUFRGHHTXDWLRQV
ZZZEGPSXEOLFDWLRQVFRP 139
:RUNLQJZLWK&RGH
%HJLQQHU3\WKRQ0LVWDNHV
3\WKRQLVDUHODWLYHO\HDV\ODQJXDJHWRJHWVWDUWHGLQZKHUHWKHUHoVSOHQW\RIURRPIRU
WKHEHJLQQHUWRƬQGWKHLUSURJUDPPLQJIHHW+RZHYHUDVZLWKDQ\RWKHUSURJUDPPLQJ
ODQJXDJHLWFDQEHHDV\WRPDNHFRPPRQPLVWDNHVWKDWoOOVWRS\RXUFRGHIURPUXQQLQJ
'()%(*,11(5Ǔ0,67$.(6 ǔ
+HUHDUHWHQFRPPRQ3\WKRQSURJUDPPLQJPLVWDNHVPRVWEHJLQQHUVƬQGWKHPVHOYHVPDNLQJ%HLQJDEOHWRLGHQWLI\WKHVH
mistakes will save you headaches in the future.
CASE SENSITIVE
3\WKRQLVDFDVHVHQVLWLYHSURJUDPPLQJODQJXDJHVR\RXZLOOQHHG
WRFKHFNDQ\YDULDEOHV\RXDVVLJQ)RUH[DPSOH/LYHV LVD
GLƪHUHQWYDULDEOHWROLYHV FDOOLQJWKHZURQJYDULDEOHLQ\RXUFRGH
FDQKDYHXQH[SHFWHGUHVXOWV
OPERATORS
8VLQJWKHZURQJRSHUDWRULVDOVRDFRPPRQPLVWDNHWRPDNH:KHQ
\RXoUHSHUIRUPLQJDFRPSDULVRQEHWZHHQWZRYDOXHVIRUH[DPSOH
\RXQHHGWRXVHWKHHTXDOLW\RSHUDWRU DGRXEOHHTXDOV 8VLQJ
DVLQJOHHTXDO LVDQDVVLJQPHQWRSHUDWRUWKDWSODFHVDYDOXHWRD
YDULDEOH VXFKDVOLYHV
BRACKETS
(YHU\RQHIRUJHWVWRLQFOXGHWKDWH[WUDEUDFNHWWKH\VKRXOGKDYH
DGGHGWRWKHHQGRIWKHVWDWHPHQW3\WKRQUHOLHVRQWKHURXWLQH OPERATING SYSTEMS
KDYLQJDQHTXDODPRXQWRIFORVHGEUDFNHWVWRRSHQEUDFNHWVVRDQ\
:ULWLQJFRGHIRUPXOWLSOHSODWIRUPVLVGLƯFXOWHVSHFLDOO\ZKHQ\RX
HUURUVLQ\RXUFRGHFRXOGEHGXHWR\RXIRUJHWWLQJWRFRXQW\RXU
VWDUWWRXWLOLVHWKHH[WHUQDOFRPPDQGVRIWKHRSHUDWLQJV\VWHP)RU
EUDFNHWVLQFOXGLQJVTXDUHEUDFNHWV
H[DPSOHLI\RXUFRGHFDOOVIRUWKHVFUHHQWREHFOHDUHGWKHQIRU
:LQGRZV\RXZRXOGXVHcls:KHUHDVIRU/LQX[\RXQHHGWRXVH
FOHDU<RXQHHGWRVROYHWKLVE\FDSWXULQJWKHHUURUDQGLVVXLQJLW
ZLWKDQDOWHUQDWLYHFRPPDQG
ZZZSFOSXEOLFDWLRQVFRP 141
:RUNLQJZLWK&RGH
%HJLQQHU&0LVWDNHV
7KHUHDUHPDQ\SLWIDOOVWKH&GHYHORSHUFDQHQFRXQWHUHVSHFLDOO\DVWKLVLVDPRUH
FRPSOH[DQGRIWHQXQIRUJLYLQJODQJXDJHWRPDVWHU%HJLQQHUVQHHGWRWDNH&DVWHS
DWDWLPHDQGGLJHVWZKDWWKH\oYHOHDUQHGEHIRUHPRYLQJRQ
92,'Ǔ&0,67$.(6ǔ
Admittedly it’s not just C++ beginners that make the kinds of errors we outline on these pages, even hardened coders are
prone to the odd mishap here and there. Here are some common issues to try and avoid.
QUOTES
0LVVLQJTXRWHVLVDFRPPRQPLVWDNHWRPDNHIRUHYHU\OHYHORIXVHU
5HPHPEHUWKDWTXRWHVQHHGWRHQFDVHVWULQJVDQGDQ\WKLQJWKDWoV
JRLQJWREHRXWSXWWHGWRWKHVFUHHQRULQWRDƬOHIRUH[DPSOH0RVW
FRPSLOHUVHUURUVDUHGXHWRPLVVLQJTXRWHVLQWKHFRGH
INITIALISE VARIABLES
,Q&YDULDEOHVDUHQoWLQLWLDOLVHGWR]HURE\GHIDXOW7KLVPHDQVLI
\RXFUHDWHDYDULDEOHFDOOHG[WKHQSRWHQWLDOO\LWLVJLYHQDUDQGRP
QXPEHUIURPWRZKLFKFDQEH
GLƯFXOWWRLQFOXGHLQDQHTXDWLRQ:KHQFUHDWLQJDYDULDEOHJLYHLW
WKHYDOXHRI]HURWREHJLQZLWK[
EXTRA SEMICOLONS
:KLOHLWoVQHFHVVDU\WRKDYHDVHPLFRORQDWWKHHQGRIHYHU\&OLQH
WKHUHDUHVRPHH[FHSWLRQVWRWKHUXOH6HPLFRORQVQHHGWREHDW
WKHHQGRIHYHU\FRPSOHWHVWDWHPHQWEXWVRPHOLQHVRIFRGHDUHQoW
FRPSOHWHVWDWHPHQWV6XFKDV
A.OUT
LQFOXGH
$FRPPRQPLVWDNHZKHQFRPSLOLQJLQ/LQX[LVIRUJHWWLQJWRQDPH
LIOLQHV
\RXU&FRGHSRVWFRPSLOLQJ:KHQ\RXFRPSLOHIURPWKH7HUPLQDO
VZLWFKOLQHV
\RXHQWHU
,ILWVRXQGVFRQIXVLQJGRQoWZRUU\WKHFRPSLOHUOHWV\RXNQRZZKHUH
JFRGHFSS
\RXZHQWZURQJ
7KLVFRPSLOHVWKHFRGHLQWKHƬOHFRGHFSSDQGFUHDWHDQDRXWƬOH
WKDWFDQEHH[HFXWHGZLWKDRXW+RZHYHULI\RXDOUHDG\KDYHFRGH
LQDRXWWKHQLWoVRYHUZULWWHQ8VH
JFRGHFSSRQDPHRISURJUDP
ZZZSFOSXEOLFDWLRQVFRP 143
:RUNLQJZLWK&RGH
:KHUH1H[W"
&RGLQJOLNHPRVWVXEMHFWVLVDFRQWLQXDOOHDUQLQJH[SHULHQFH<RXPD\QRWFODVV\RXUVHOI
DVDEHJLQQHUDQ\PRUHEXW\RXVWLOOQHHGWRWHVW\RXUFRGHOHDUQQHZWULFNVDQGKDFNVWR
PDNHLWPRUHHƯFLHQWDQGHYHQEUDQFKRXWDQGOHDUQDQRWKHUSURJUDPPLQJODQJXDJH
#INCLUDE<KEEP ON LEARNING>
What can you do to further your skills, learn new coding practises, experiment and present your code and even begin to help
others using what you’ve experienced so far?
ZZZSFOSXEOLFDWLRQVFRP 145
ad The Complete
Re Manual Series
Available on