Download as pdf or txt
Download as pdf or txt
You are on page 1of 148

LINUX, PYTHON & C++ CODING


The Complete

Coding Manual
Essential programming guides & projects

OVER

820
GUIDES
&TIPS

www.pclpublications.com 100% INDEPENDENT


Save a whopping

ALL Tech Manuals


with

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!

Simply use the following exclusive code at checkout:

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

6 Say Hello to Python


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 56 Date and Time
58 Opening Files
60 Writing to Files
20 Getting Started with Python 62 Exceptions
64 Python Graphics
22 Starting Python for the First Time
24 Your First Code
26 Saving and Executing Your Code
66 Using Modules
28 Executing Code from the Command Line
30 Numbers and Expressions 68 Calendar Module
32 Using Comments 70 OS Module
34 Working with Variables 72 Random Module
36 User Input 74 Tkinter Module
38 Creating Functions 76 Pygame Module
40 Conditions and Loops 80 Create Your Own Modules
42 Python Modules

86 Say Hello to C++


44 Working with Data
84 Why C++?
46 Lists 86 Equipment Needed
48 Tuples 88 How to Set Up C++ in Windows
50 Dictionaries 90 How to Set Up C++ on a Mac
52 Splitting and Joining Strings 92 How to Set Up C++ in Linux
54 Formatting Strings 94 Other C++ IDEs to Install

4 ZZZSFOSXEOLFDWXLRQVFRP
&RQWHQWV

96 C++ Fundamentals 124 Loops and Decision Making

98 Your First C++ Program 126 While Loop


100 Structure of a C++ Program 128 For Loop
102 Compile and Execute 130 Do… While Loop
104 Using Comments 132 If Statement
106 Variables 134 If… Else Statement
108 Data Types
110 Strings
112 C++ Maths
136 Working with Code

138 Common Coding Mistakes


114 C++ Input/Output
140 Beginner Python Mistakes
116 User Interaction 142 Beginner C++ Mistakes
118 Character Literals 144 Where Next?
120 'HƬQLQJ&RQVWDQWV
122 File Input/Output

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

C++ is usually reserved for more complex


programs, operating systems, games and so on.

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

BASIC was once the starter language that early


8-bit home computer users learned.

Java is a powerful language


that’s used in web pages,
set-top boxes, TVs and
even cars.

Python is a more modern take on BASIC, it’s easy to learn


and makes for an ideal beginner’s programming language.

ZZZSFOSXEOLFDWLRQVFRP 9
6D\+HOORWR3\WKRQ

(TXLSPHQW<RX
:LOO1HHG
<RXFDQOHDUQ3\WKRQZLWKYHU\OLWWOHKDUGZDUHRULQLWLDOƬQDQFLDOLQYHVWPHQW<RX
GRQoWQHHGDQLQFUHGLEO\SRZHUIXOFRPSXWHUDQGDQ\VRIWZDUHWKDWoVUHTXLUHGLV
IUHHO\{DYDLODEOH

WHAT WE’RE USING


Thankfully, Python is a multi-platform programming language available for Windows, macOS, Linux, Raspberry Pi and more. If
you have one of those systems, then you can easily start using Python.

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

TIME AND PATIENCE


'HVSLWHZKDWRWKHUERRNVPD\OHDG\RXWREHOLHYH\RXZRQoWEHFRPHDSURJUDPPHU
LQKRXUV/HDUQLQJWRFRGHLQ3\WKRQWDNHVWLPHDQGSDWLHQFH<RXPD\EHFRPH
VWXFNDWWLPHVDQGRWKHUWLPHVWKHFRGHZLOOƮRZOLNHZDWHU8QGHUVWDQG\RXoUHOHDUQLQJ
VRPHWKLQJHQWLUHO\QHZDQG\RXZLOOJHWWKHUH

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.

PYTHON PROGRAMMING RECIPES


3URJUDPVDUHOLNHUHFLSHVIRUFRPSXWHUV$
$SURJUDPPLQJODQJXDJH UHFLSHWREDNHDFDNHFRXOGJROLNHWKLV
LVDOLVWRILQVWUXFWLRQVWKDW
DFRPSXWHUIROORZV7KHVH 3XWJUDPVRIVHOIUDLVLQJƮRXULQDERZO
LQVWUXFWLRQVFDQEHDVVLPSOH $GGJUDPVRIEXWWHUWRWKHERZO
DVGLVSOD\LQJ\RXUQDPH $GGPLOOLOLWUHVRIPLON
RUSOD\LQJDPXVLFƬOHRU %DNHIRUKDOIDQKRXU
DVFRPSOH[DVEXLOGLQJD
ZKROHYLUWXDOZRUOG3\WKRQ
LVDSURJUDPPLQJODQJXDJH CODE
FRQFHLYHGLQWKHODWHV
-XVWOLNHDUHFLSHDSURJUDPFRQVLVWVRILQVWUXFWLRQVWKDW\RXIROORZ
E\*XLGRYDQ5RVVXP
LQRUGHU$SURJUDPWKDWGHVFULEHVDFDNHPLJKWUXQOLNHWKLV
DW&HQWUXP:LVNXQGH 
,QIRUPDWLFD &:, LQWKH bowl = []
1HWKHUODQGVDVDVXFFHVVRUWR ÁRXU 
WKH$%&ODQJXDJH EXWWHU 
PLON 
Guido van Rossum, the ERZODSSHQG >ÁRXUEXWWHUPLON@ 
father of Python. FDNHFRRN ERZO 

PROGRAM COMMANDS
<RXPLJKWQRWXQGHUVWDQGVRPHRIWKH3\WKRQFRPPDQGVOLNHERZODSSHQGDQGFDNHFRRN ERZO 
7KHƬUVWLVDOLVWWKHVHFRQGDQREMHFWZHoOOORRNDWERWKLQWKLVERRN7KHPDLQWKLQJWRNQRZLV
WKDWLWoVHDV\WRUHDGFRPPDQGVLQ3\WKRQ2QFH\RXOHDUQZKDWWKHFRPPDQGVGRLWoVHDV\WR
ƬJXUHRXWKRZDSURJUDPZRUNV

12 3\WKRQ &&RGLQJ
*HWWLQJWR.QRZ3\WKRQ

+,*+Ǖ/(9(//$1*8$*(6 ZEN OF PYTHON


&RPSXWHUODQJXDJHVWKDWDUHHDV\WRUHDGDUHNQRZQDVpKLJKOHYHOq 3\WKRQOHWV\RXDFFHVVDOOWKHSRZHURIDFRPSXWHULQDODQJXDJH
7KLVLVEHFDXVHWKH\Ʈ\KLJKDERYHWKHKDUGZDUH DOVRUHIHUUHGWRDV WKDWKXPDQVFDQXQGHUVWDQG%HKLQGDOOWKLVLVDQHWKRVFDOOHGp7KH
pWKHPHWDOq /DQJXDJHVWKDWpƮ\FORVHWRWKHPHWDOqOLNH$VVHPEO\ =HQRI3\WKRQq7KLVLVDFROOHFWLRQRIVRIWZDUHSULQFLSOHVWKDW
DUHNQRZQDVpORZOHYHOq/RZOHYHOODQJXDJHVFRPPDQGVUHDGDELW LQƮXHQFHVWKHGHVLJQRIWKHODQJXDJH3ULQFLSOHVLQFOXGHp%HDXWLIXO
OLNHWKLVPVJGE[DOHQHTXPVJ LVEHWWHUWKDQXJO\qDQGp6LPSOHLVEHWWHUWKDQFRPSOH[q7\SH
LPSRUWWKLVLQWR3\WKRQDQGLWZLOOGLVSOD\DOOWKHSULQFLSOHV

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.

WORLD OF PYTHON :KHQ\RXYLVLWWKH3\WKRQ PYTHON 3.X ,Q3\WKRQDUULYHGZLWKVHYHUDOQHZ


'RZQORDGSDJH\RXoOOQRWLFHWKDW DQGHQKDQFHGIHDWXUHV7KHVHIHDWXUHV
WKHUHDUHWZREXWWRQVDYDLODEOHRQHIRU3\WKRQDQGWKHRWKHU SURYLGHDPRUHVWDEOHHƪHFWLYHDQGHƯFLHQWSURJUDPPLQJ
IRU3\WKRQFRUUHFWDWWKHWLPHRIZULWLQJ UHPHPEHU3\WKRQLV HQYLURQPHQWEXWVDGO\PRVW LIQRWDOO RIWKHVHQHZIHDWXUHVDUH
IUHTXHQWO\XSGDWHGVR\RXPD\VHHGLƪHUHQWYHUVLRQQXPEHUV  QRWFRPSDWLEOHZLWK3\WKRQVFULSWVPRGXOHVDQGWXWRULDOV:KLOVW
QRWSRSXODUDWƬUVW3\WKRQKDVVLQFHEHFRPHWKHFXWWLQJHGJHRI
3\WKRQSURJUDPPLQJ

PYTHON 2.X 6RZK\WZR":HOO3\WKRQZDVRULJLQDOO\ 3.X WINS 3\WKRQoVJURZLQJSRSXODULW\KDVPHDQWWKDW


ODXQFKHGLQDQGKDVVLQFHWKHQ LWoVQRZSUXGHQWWRVWDUWOHDUQLQJWRGHYHORS
DGRSWHGTXLWHDODUJHFROOHFWLRQRIPRGXOHVVFULSWVXVHUVWXWRULDOV ZLWKWKHQHZIHDWXUHVDQGEHJLQWRSKDVHRXWWKHSUHYLRXVYHUVLRQ
DQGVRRQ2YHUWKH\HDUV3\WKRQKDVIDVWEHFRPHRQHRIWKHƬUVW 0DQ\GHYHORSPHQWFRPSDQLHVVXFKDV6SDFH;DQG1$6$XVH
JRWRSURJUDPPLQJODQJXDJHVIRUEHJLQQHUVDQGH[SHUWVWRFRGH 3\WKRQIRUVQLSSHWVRILPSRUWDQWFRGH
LQZKLFKPDNHVLWDQH[WUHPHO\YDOXDEOHUHVRXUFH

ZZZSFOSXEOLFDWLRQVFRP 13
6D\+HOORWR3\WKRQ

+RZWR6HW8S
3\WKRQLQ:LQGRZV
:LQGRZVXVHUVFDQHDVLO\LQVWDOOWKHODWHVWYHUVLRQRI3\WKRQYLDWKHPDLQ3\WKRQ
'RZQORDGVSDJH:KLOVWPRVWVHDVRQHG3\WKRQGHYHORSHUVPD\VKXQ:LQGRZVDVWKH
SODWIRUPRIFKRLFHIRUEXLOGLQJWKHLUFRGHLWoVVWLOODQLGHDOVWDUWLQJSRLQWIRUEHJLQQHUV

INSTALLING PYTHON 3.X


Microsoft Windows doesn’t come with Python preinstalled as standard, so you’re going to have to install it yourself manually.
Thankfully, it’s an easy process to follow.

STEP 1 6WDUWE\RSHQLQJ\RXUZHEEURZVHUWRwww.python. STEP 3 &KRRVLQJWKH&XVWRPLVHRSWLRQDOORZV\RXWR


org/downloads//RRNIRUWKHEXWWRQGHWDLOLQJWKH VSHFLI\FHUWDLQSDUDPHWHUVDQGZKLOVW\RXPD\
GRZQORDGOLQNIRU3\WKRQ[[ LQRXUFDVHWKLVLV3\WKRQEXWDV VWD\ZLWKWKHGHIDXOWVLWoVDJRRGKDELWWRDGRSWDVVRPHWLPHV QRW
PHQWLRQHG\RXPD\VHHODWHUYHUVLRQVRI  ZLWK3\WKRQWKDQNIXOO\ LQVWDOOHUVFDQLQFOXGHXQZDQWHGDGGLWLRQDO
IHDWXUHV2QWKHƬUVWVFUHHQDYDLODEOHHQVXUHDOOER[HVDUHWLFNHG
DQGFOLFNWKH1H[WEXWWRQ

STEP 2 &OLFNWKHGRZQORDGEXWWRQIRUYHUVLRQ[DQG STEP 4 7KHQH[WSDJHRIRSWLRQVLQFOXGHVRPHLQWHUHVWLQJ


VDYHWKHƬOHWR\RXU'RZQORDGVIROGHU:KHQWKH DGGLWLRQVWR3\WKRQ(QVXUHWKH$VVRFLDWHƬOHZLWK
ƬOHLVGRZQORDGHGGRXEOHFOLFNWKHH[HFXWDEOHDQGWKH3\WKRQ 3\WKRQ&UHDWH6KRUWFXWV$GG3\WKRQWR(QYLURQPHQW9DULDEOHV
LQVWDOODWLRQZL]DUGZLOOODXQFK)URPKHUH\RXKDYHWZRFKRLFHV 3UHFRPSLOH6WDQGDUG/LEUDU\DQG,QVWDOOIRU$OO8VHUVRSWLRQVDUH
,QVWDOO1RZDQG&XVWRPLVH,QVWDOODWLRQ:HUHFRPPHQGRSWLQJIRU WLFNHG7KHVHPDNHXVLQJ3\WKRQODWHUPXFKHDVLHU&OLFN,QVWDOOZKHQ
WKH&XVWRPLVH,QVWDOODWLRQOLQN \RXoUHUHDG\WRFRQWLQXH

14 3\WKRQ &&RGLQJ
+RZWR6HW8S3\WKRQLQ:LQGRZV

STEP 5 <RXPD\QHHGWRFRQƬUPWKHLQVWDOODWLRQZLWKWKH STEP 8 &OLFNLQJRQWKH,'/( 3\WKRQELW OLQNZLOO


:LQGRZVDXWKHQWLFDWLRQQRWLƬFDWLRQ6LPSO\FOLFN ODXQFKWKH3\WKRQ6KHOOZKHUH\RXFDQEHJLQ
<HVDQG3\WKRQZLOOEHJLQWRLQVWDOO2QFHWKHLQVWDOODWLRQLVFRPSOHWH \RXU3\WKRQSURJUDPPLQJMRXUQH\'RQoWZRUU\LI\RXUYHUVLRQ
WKHƬQDO3\WKRQZL]DUGSDJHZLOODOORZ\RXWRYLHZWKHODWHVWUHOHDVH LVQHZHUDVORQJDVLWoV3\WKRQ[RXUFRGHZLOOZRUNLQVLGH\RXU
QRWHVDQGIROORZVRPHRQOLQHWXWRULDOV 3\WKRQLQWHUIDFH

STEP 6 %HIRUH\RXFORVHWKHLQVWDOOZL]DUGZLQGRZ STEP 9 ,I\RXQRZFOLFNRQWKH:LQGRZV6WDUWEXWWRQDJDLQ


KRZHYHULWoVEHVWWRFOLFNRQWKHOLQNQH[WWRWKH DQGWKLVWLPHW\SHCMD\RXoOOEHSUHVHQWHGZLWKWKH
VKLHOGGHWDLOHG'LVDEOH3DWK/HQJWK/LPLW7KLVZLOODOORZ3\WKRQ &RPPDQG3URPSWOLQN&OLFNLWWRJHWWRWKH:LQGRZVFRPPDQGOLQH
WRE\SDVVWKH:LQGRZVFKDUDFWHUOLPLWDWLRQHQDEOLQJ\RXWR HQYLURQPHQW7RHQWHU3\WKRQZLWKLQWKHFRPPDQGOLQH\RXQHHG
H[HFXWH3\WKRQSURJUDPVVWRUHGLQGHHSIROGHUVDUUDQJHPHQWV WRW\SHS\WKRQDQGSUHVV(QWHU
$JDLQFOLFN<HVWRDXWKHQWLFDWHWKHSURFHVVWKHQ\RXFDQ&ORVHWKH
LQVWDOODWLRQZLQGRZ

STEP 7 STEP 10 7KHFRPPDQGOLQHYHUVLRQRI3\WKRQZRUNVLQ


PXFKWKHVDPHZD\DVWKH6KHOO\RXRSHQHGLQ
:LQGRZVXVHUVZLOOQRZ 6WHSQRWHWKHWKUHHOHIWIDFLQJDUURZV !!! :KLOVWLWoVDSHUIHFWO\
ƬQGWKHLQVWDOOHG3\WKRQ ƬQHHQYLURQPHQWLWoVQRWWRRXVHUIULHQGO\VROHDYHWKHFRPPDQG
[ZLWKLQWKH6WDUWEXWWRQ OLQHIRUQRZ(QWHUH[LW WROHDYHDQGFORVHWKH&RPPDQG
5HFHQWO\$GGHGVHFWLRQ7KH 3URPSWZLQGRZ
ƬUVWOLQN3\WKRQ ELW 
ZLOOODXQFKWKHFRPPDQG
OLQHYHUVLRQRI3\WKRQZKHQ
FOLFNHG PRUHRQWKDWLQD
PRPHQW 7RRSHQWKH,'/(
W\SH,'/(LQWR:LQGRZVVWDUW

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

STEP 1 2SHQDQHZ7HUPLQDOZLQGRZE\FOLFNLQJ*R! STEP 3 &OLFNRQWKHODWHVWYHUVLRQRI3\WKRQ[LQRXU


8WLOLWLHVWKHQGRXEOHFOLFNWKH7HUPLQDOLFRQ1RZ FDVHWKLVLVWKHGRZQORDGEXWWRQIRU3\WKRQ
HQWHUS\WKRQYHUVLRQ<RXVKRXOGVHHp3\WKRQqDQG 7KLVZLOODXWRPDWLFDOO\GRZQORDGWKHODWHVWYHUVLRQRI3\WKRQDQG
HYHQODWHULI$SSOHKDVXSGDWHGWKH26DQG3\WKRQLQVWDOODWLRQ GHSHQGLQJRQKRZ\RXoYHJRW\RXU0DFFRQƬJXUHGLWDXWRPDWLFDOO\
(LWKHUZD\LWoVEHVWWRFKHFNIRUWKHODWHVWYHUVLRQ VWDUWVWKHLQVWDOODWLRQZL]DUG

STEP 2 2SHQ6DIDULDQGKHDGRYHUWRwww.python.org/ STEP 4 :LWKWKH3\WKRQLQVWDOODWLRQZL]DUGRSHQFOLFNRQ


downloads-XVWDVZLWKWKH:LQGRZVVHWXS WKH&RQWLQXHEXWWRQWREHJLQWKHLQVWDOODWLRQ,WoV
SURFHGXUHRQWKHSUHYLRXVSDJHV\RXFDQVHHWZR\HOORZGRZQORDG ZRUWKWDNLQJDPRPHQWWRUHDGWKURXJKWKH,PSRUWDQW,QIRUPDWLRQ
EXWWRQVRQHIRU3\WKRQDQGWKHRWKHUIRU3\WKRQ VHFWLRQLQFDVHLWUHIHUHQFHVVRPHWKLQJWKDWDSSOLHVWR\RXUYHUVLRQ
1RWHWKDWYHUVLRQQXPEHUVPD\EHGLƪHUHQWGXHWRWKHIUHTXHQW RIPDF26:KHQUHDG\FOLFN&RQWLQXHDJDLQ
UHOHDVHVRI3\WKRQ

16 3\WKRQ &&RGLQJ
+RZWR6HW8S3\WKRQRQD0DF

STEP 5 7KHQH[WVHFWLRQGHWDLOVWKH6RIWZDUH/LFHQVH STEP 8 7KHUHoVQRWKLQJPXFKHOVHOHIWWRGRLQWKH3\WKRQ


$JUHHPHQWDQGZKLOVWQRWSDUWLFXODUO\LQWHUHVWLQJ LQVWDOODWLRQZL]DUGVR\RXFDQFOLFNWKH&ORVHEXWWRQ
WRPRVWIRONVLWoVSUREDEO\ZRUWKDUHDG:KHQ\RXoUHUHDG\FOLFNRQ ,I\RXQRZGURSEDFNLQWRD7HUPLQDOVHVVLRQDQGUHHQWHUWKH
WKH&RQWLQXHEXWWRQRQFHDJDLQ FRPPDQGS\WKRQYHUVLRQ\RXFDQVHHWKHQHZYHUVLRQLV
QRZOLVWHG7RHQWHUWKHFRPPDQGOLQHYHUVLRQRI3\WKRQ\RXQHHG
WRHQWHUS\WKRQ7RH[LWLWoVH[LW 

STEP 6 )LQDOO\\RXoUHEHSUHVHQWHGZLWKWKHDPRXQWRI STEP 9 <RXQHHGWRVHDUFKLQ)LQGHUIRUWKH3\WKRQ,'/(


VSDFH3\WKRQZLOOWDNHXSRQ\RXUV\VWHPDQGDQ ZKHQ\RXoYHIRXQGLWFOLFNLWWRODXQFKDQGLW
,QVWDOOEXWWRQZKLFK\RXQHHGWRFOLFNWRVWDUWWKHDFWXDOLQVWDOODWLRQ VKRXOGORRNVLPLODUWRWKDWRIWKH:LQGRZV,'/(YHUVLRQVKRZQRQ
RI3\WKRQ[RQWR\RXU0DF<RXPD\QHHGWRHQWHU\RXUSDVVZRUG WKHSUHYLRXVSDJH7KHRQO\GLƪHUHQFHEHLQJWKH0DFGHWHFWHG
WRDXWKHQWLFDWHWKHLQVWDOODWLRQSURFHVV KDUGZDUHSODWIRUPLWoVUXQQLQJRQ

STEP 7 7KHLQVWDOODWLRQVKRXOGQoWWDNHWRRORQJWKHROGHU STEP 10 2OGHU0DFYHUVLRQVPD\KDYHWURXEOHZLWKWKH


0DF0LQLZHXVHGLQWKLVVHFWLRQLVDOLWWOHVORZHU QHZHUYHUVLRQVRI3\WKRQLQZKLFKFDVH\RXZLOO
WKDQPRUHPRGHUQ0DFPDFKLQHVDQGLWRQO\WRRNDURXQGWKLUW\ QHHGWRUHYHUWWRDSUHYLRXV3\WKRQ[EXLOGDVORQJDV\RXoUHXVLQJ
VHFRQGVIRUWKH,QVWDOODWLRQ6XFFHVVIXOSURPSWWREHGLVSOD\HG 3\WKRQ[WKHFRGHLQWKLVERRNZLOOZRUNIRU\RX

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

STEP 1 )LUVW\RXQHHGWRDVFHUWDLQZKLFKYHUVLRQRI3\WKRQ STEP 3 6RPH/LQX[GLVWURVZLOODXWRPDWLFDOO\XSGDWH


LVFXUUHQWO\LQVWDOOHGLQ\RXU/LQX[V\VWHPDVZH WKHLQVWDOODWLRQRI3\WKRQWRWKHODWHVWYHUVLRQV
PHQWLRQHGZHoUHJRLQJWREHXVLQJ/LQX[0LQWIRUWKLVVHFWLRQ ZKHQHYHUWKHV\VWHPLVXSGDWHG7RFKHFNƬUVWGRDV\VWHPXSGDWH
$VZLWKPDF26GURSLQWRD7HUPLQDOE\SUHVVLQJ&WUO$WO7 DQGXSJUDGHZLWK
VXGRDSWJHWXSGDWH VXGRDSWJHWXSJUDGH
(QWHU\RXUSDVVZRUGDQGOHWWKHV\VWHPGRDQ\XSGDWHV

STEP 2 1H[WHQWHUS\WKRQYHUVLRQLQWRWKH7HUPLQDO STEP 4 2QFHWKHXSGDWHDQGXSJUDGHLVFRPSOHWH\RX


VFUHHQ<RXVKRXOGKDYHWKHRXWSXWUHODWLQJWR PD\QHHGWRDQVZHUn<oWRDXWKRULVHDQ\XSJUDGHV
YHUVLRQ[RI3\WKRQLQWKHGLVSOD\2XUVLQWKLVSDUWLFXODUFDVHLV HQWHUS\WKRQYHUVLRQWRVHHLI3\WKRQ[LVXSGDWHGRUHYHQ
3\WKRQ LQVWDOOHG,QWKHFDVHRI/LQX[0LQWWKHYHUVLRQZHKDYHLV3\WKRQ
ZKLFKLVƬQHIRURXUSXUSRVHV

18 3\WKRQ &&RGLQJ
+RZWR6HW8S3\WKRQLQ/LQX[

STEP 5 +RZHYHULI\RXZDQWWKHODWHVWYHUVLRQDVSHU STEP 8 :LWKLQWKH3\WKRQIROGHUHQWHU


WKH3\WKRQZHEVLWHDWWKHWLPHRIZULWLQJ\RXQHHG
FRQÀJXUH
WREXLOG3\WKRQIURPVRXUFH6WDUWE\HQWHULQJWKHVHFRPPDQGVLQWR
VXGRPDNHDOWLQVWDOO
WKH7HUPLQDO
7KLVFRXOGDOLWWOHZKLOHGHSHQGLQJRQWKHVSHHGRI\RXUFRPSXWHU
VXGRDSWJHWLQVWDOOEXLOGHVVHQWLDOFKHFNLQVWDOO
2QFHƬQLVKHGHQWHUS\WKRQYHUVLRQWRFKHFNWKH
VXGRDSWJHWLQVWDOOOLEUHDGOLQHJSOYGHY
LQVWDOOHGODWHVWYHUVLRQ
OLEQFXUVHVZGHYOLEVVOGHYOLEVTOLWHGHYWNGHY
OLEJGEPGHYOLEFGHYOLEE]GHY

STEP 6 2SHQXS\RXU/LQX[ZHEEURZVHUDQGJRWR STEP 9 )RUWKH*8,,'/(\RXQHHGWRHQWHUWKHIROORZLQJ


WKH3\WKRQGRZQORDGSDJHwww.python.org/ FRPPDQGLQWRWKH7HUPLQDO
downloads&OLFNRQWKH'RZQORDG3\WKRQ RUZKLFKHYHU
VXGRDSWJHWLQVWDOOLGOH
YHUVLRQLWoVRQZKHQ\RXORRN WRGRZQORDGWKHVRXUFH3\WKRQ
WDU[]ƬOH 7KH,'/(FDQWKHQEHVWDUWHGZLWKWKHFRPPDQGLGOH1RWHWKDW
,'/(UXQVDGLƪHUHQWYHUVLRQIURPWKHRQH\RXLQVWDOOHGIURPVRXUFH

STEP 7 ,QWKH7HUPLQDOJRWKH'RZQORDGVIROGHUE\ STEP 10 <RXDOVRQHHG3,3 3LS,QVWDOOV3DFNDJHV ZKLFKLVD


HQWHULQJFG'RZQORDGV7KHQXQ]LSWKH WRROWRKHOS\RXLQVWDOOPRUHPRGXOHVDQGH[WUDV
FRQWHQWVRIWKHGRZQORDGHG3\WKRQVRXUFHFRGHZLWKWDU[YI (QWHUVXGRDSWJHWLQVWDOOS\WKRQSLS
3\WKRQWDU[]1RZHQWHUWKHQHZO\XQ]LSSHGIROGHU
3,3LVWKHQLQVWDOOHGFKHFNIRUWKHODWHVWXSGDWHZLWK
ZLWKFG3\WKRQ
SLSLQVWDOOXSJUDGHSLS
:KHQFRPSOHWHFORVHWKH7HUPLQDODQG3\WKRQ[ZLOOEHDYDLODEOH
YLDWKH3URJUDPPLQJVHFWLRQLQ\RXUGLVWURoVPHQX

ZZZSFOSXEOLFDWLRQVFRP 19
Index

20 ZZZSFOSXEOLFDWLRQVFRP
Getting Started with Python

Getting started with Python may seem a


OLWWOHGDXQWLQJDWƬUVWEXWWKHODQJXDJH
KDVEHHQGHVLJQHGZLWKVLPSOLFLW\LQPLQG
Like most things, you need to start slowly,
learn how to get a result and how to get
ZKDW\RXZDQWIURPWKHFRGH
,QWKLVVHFWLRQZHFRYHUYDULDEOHV
QXPEHUVDQGH[SUHVVLRQVXVHULQSXW
FRQGLWLRQVDQGORRSVDQGWKHW\SHVRI
HUURUV\RXPD\ZHOOFRPHDFURVVLQ\RXU
WLPHZLWK3\WKRQ

22 Starting Python for the First Time


24 Your First Code
26 Saving and Executing Your Code
28 Executing Code from the Command Line
30 Numbers and Expressions
32 Using Comments
34 Working with Variables
36 User Input
38 Creating Functions
40 Conditions and Loops
42 Python Modules

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

STEP 1 :LWKWKH5DVSELDQGHVNWRSORDGHGFOLFNRQWKH STEP 3 )RUH[DPSOHLQWKH6KHOOHQWHU


0HQXEXWWRQIROORZHGE\3URJUDPPLQJ!3\WKRQ $IWHUSUHVVLQJ(QWHUWKHQH[WOLQHGLVSOD\VWKH
 ,'/( 7KLVRSHQVWKH3\WKRQ6KHOO:LQGRZVDQG0DFXVHUVFDQ DQVZHU%DVLFDOO\3\WKRQKDVWDNHQWKHnFRGHoDQGSURGXFHGWKH
ƬQGWKH3\WKRQ,'/(6KHOOIURPZLWKLQWKH:LQGRZV6WDUWEXWWRQ UHOHYDQWRXWSXW
PHQXDQGYLD)LQGHU

STEP 2 7KH6KHOOLVZKHUH\RXFDQHQWHUFRGHDQGVHHWKH STEP 4 7KH3\WKRQ6KHOODFWVYHU\PXFKOLNHDFDOFXODWRU


UHVSRQVHVDQGRXWSXWRIFRGH\RXoYHSURJUDPPHG VLQFHFRGHLVEDVLFDOO\DVHULHVRIPDWKHPDWLFDO
LQWR3\WKRQ7KLVLVDNLQGRIVDQGER[ZKHUH\RXoUHDEOHWRWU\RXW LQWHUDFWLRQVZLWKWKHV\VWHP,QWHJHUVZKLFKDUHWKHLQƬQLWH
VRPHVLPSOHFRGHDQGSURFHVVHV VHTXHQFHRIZKROHQXPEHUVFDQHDVLO\EHDGGHGVXEWUDFWHG
PXOWLSOLHGDQGVRRQ

22 3\WKRQ &&RGLQJ
6WDUWLQJ3\WKRQIRUWKH)LUVW7LPH

STEP 5 :KLOHWKDWoVYHU\LQWHUHVWLQJLWoVQRWSDUWLFXODUO\ STEP 8 7KH3\WKRQ,'/(LVDFRQƬJXUDEOHHQYLURQPHQW,I


H[FLWLQJ,QVWHDGWU\WKLV \RXGRQoWOLNHWKHZD\WKHFRORXUVDUHUHSUHVHQWHG
WKHQ\RXFDQDOZD\VFKDQJHWKHPYLD2SWLRQV!&RQƬJXUH,'/(DQG
SULQW ´+HOORHYHU\RQHµ
FOLFNLQJRQWKH+LJKOLJKWLQJWDE+RZHYHUZHGRQoWUHFRPPHQG
-XVWOLNHWKHFRGHZHHQWHUHGLQ6XEOLPHLQWKH,QVWDOOLQJD7H[W WKDWDV\RXZRQoWEHVHHLQJWKHVDPHDVRXUVFUHHQVKRWV
(GLWRUVHFWLRQRIWKLVERRN

STEP 6 7KLVLVDOLWWOHPRUHOLNHLWVLQFH\RXoYHMXVWSURGXFHG STEP 9 -XVWOLNHPRVWSURJUDPVDYDLODEOHUHJDUGOHVVRIWKH


\RXUƬUVWELWRIFRGH7KH3ULQWFRPPDQGLVIDLUO\ RSHUDWLQJV\VWHPWKHUHDUHQXPHURXVVKRUWFXW
VHOIH[SODQDWRU\LWSULQWVWKLQJV3\WKRQUHTXLUHVWKHEUDFNHWVDV NH\VDYDLODEOH:HGRQoWKDYHURRPIRUWKHPDOOKHUHEXWZLWKLQWKH
ZHOODVTXRWHPDUNVLQRUGHUWRRXWSXWFRQWHQWWRWKHVFUHHQLQWKLV 2SWLRQV!&RQƬJXUH,'/(DQGXQGHUWKH.H\VWDE\RXFDQVHHDOLVW
FDVHWKHn+HOORHYHU\RQHoELW RIWKHFXUUHQWELQGLQJV

STEP 7 <RXPD\KDYHQRWLFHGWKHFRORXUFRGLQJZLWKLQ STEP 10 7KH3\WKRQ,'/(LVDSRZHULQWHUIDFHDQGRQH


WKH3\WKRQ,'/(7KHFRORXUVUHSUHVHQWGLƪHUHQW WKDWoVDFWXDOO\EHHQZULWWHQLQ3\WKRQXVLQJRQH
HOHPHQWVRI3\WKRQFRGH7KH\DUH RIWKHDYDLODEOH*8,WRRONLWV,I\RXZDQWWRNQRZWKHPDQ\LQVDQG
RXWVRIWKH6KHOOZHUHFRPPHQG\RXWDNHDIHZPRPHQWVWRYLHZ
%ODFNs'DWDDQG9DULDEOHV %OXHs8VHU)XQFWLRQV
www.docs.python.org/3/library/idle.htmlZKLFKGHWDLOVPDQ\RI
*UHHQs6WULQJV 'DUN5HGs&RPPHQWV
WKH,'/(oVIHDWXUHV
3XUSOHs)XQFWLRQV /LJKW5HGs(UURU0HVVDJHV
2UDQJHs&RPPDQGV

ZZZSFOSXEOLFDWLRQVFRP 23
*HWWLQJ6WDUWHGZLWK3\WKRQ

<RXU)LUVW&RGH
(VVHQWLDOO\\RXoYHDOUHDG\ZULWWHQ\RXUƬUVWSLHFHRIFRGHZLWKWKHnSULQW p+HOOR
HYHU\RQHq oIXQFWLRQIURPWKHSUHYLRXVWXWRULDO+RZHYHUOHWoVH[SDQGWKDWDQGORRNDW
HQWHULQJ\RXUFRGHDQGSOD\LQJDURXQGZLWKVRPHRWKHU3\WKRQH[DPSOHV

PLAYING WITH PYTHON


With most languages, computer or human, it’s all about remembering and applying the right words to the right situation.
You’re not born knowing these words, so you need to learn them.

STEP 1 ,I\RXoYHFORVHG3\WKRQ,'/(UHRSHQLWLQ STEP 3 <RXFDQVHHWKDWLQVWHDGRIWKHQXPEHUWKH


ZKLFKHYHURSHUDWLQJV\VWHPYHUVLRQ\RXSUHIHU,Q RXWSXWLVWKH\RXDVNHGWREHSULQWHGWRWKH
WKH6KHOOHQWHUWKHIDPLOLDUIROORZLQJ VFUHHQ7KHTXRWDWLRQPDUNVDUHGHƬQLQJZKDWoVEHLQJRXWSXWWHG
WRWKH,'/(6KHOOWRSULQWWKHWRWDORI\RXQHHGWRUHPRYH
SULQW ´+HOORµ
WKHTXRWHV
SULQW 

STEP 2 -XVWDVSUHGLFWHGWKHZRUG+HOORDSSHDUVLQWKH STEP 4 <RXFDQFRQWLQXHDVVXFKSULQWLQJ


6KHOODVEOXHWH[WLQGLFDWLQJRXWSXWIURPDVWULQJ DQGVRRQWRWKH6KHOO$QHDVLHUZD\LVWRXVHD
,WoVIDLUO\VWUDLJKWIRUZDUGDQGGRHVQoWUHTXLUHWRRPXFKH[SODQDWLRQ YDULDEOHZKLFKLVVRPHWKLQJZHZLOOFRYHULQPRUHGHSWKODWHU)RU
1RZWU\ QRZHQWHU
SULQW ´µ D 
E 

24 3\WKRQ &&RGLQJ
<RXU)LUVW&RGH

STEP 5 :KDW\RXKDYHGRQHKHUHLVDVVLJQWKHOHWWHUVD STEP 8 1RZOHWoVDGGDVXUQDPH


DQGEWZRYDOXHVDQG7KHVHDUHQRZYDULDEOHV
VXUQDPH µ+D\ZDUGµ
ZKLFKFDQEHFDOOHGXSRQE\3\WKRQWRRXWSXWDGGVXEWUDFWGLYLGH
SULQW VXUQDPH
DQGVRRQIRUDVORQJDVWKHLUQXPEHUVVWD\WKHVDPH7U\WKLV
<RXQRZKDYHWZRYDULDEOHVFRQWDLQLQJDƬUVWQDPHDQGDVXUQDPH
SULQW D
DQG\RXFDQSULQWWKHPLQGHSHQGHQWO\
SULQW E 

STEP 6 7KHRXWSXWRIWKHODVWVWHSGLVSOD\VWKHFXUUHQW STEP 9 ,IZHZHUHWRDSSO\WKHVDPHURXWLQHDVEHIRUH


YDOXHVRIERWKDDQGELQGLYLGXDOO\DV\RXoYHDVNHG XVLQJWKHV\PEROWKHQDPHZRXOGQoWDSSHDU
WKHPWREHSULQWHGVHSDUDWHO\,I\RXZDQWWRDGGWKHPXS\RXFDQ FRUUHFWO\LQWKHRXWSXWLQWKH6KHOO7U\LW
XVHWKHIROORZLQJ
SULQW QDPHVXUQDPH 
SULQW DE 
<RXQHHGDVSDFHEHWZHHQWKHWZRGHƬQLQJWKHPDVWZRVHSDUDWH
7KLVFRGHVLPSO\WDNHVWKHYDOXHVRIDDQGEDGGVWKHPWRJHWKHU YDOXHVDQGQRWVRPHWKLQJ\RXPDWKHPDWLFDOO\SOD\DURXQGZLWK
DQGRXWSXWVWKHUHVXOW

STEP 7 <RXFDQSOD\DURXQGZLWKGLƪHUHQWNLQGVRIYDULDEOHV STEP 10 ,Q3\WKRQ\RXFDQVHSDUDWHWKHWZRYDULDEOHV


DQGWKH3ULQWIXQFWLRQ)RUH[DPSOH\RXFRXOG ZLWKDVSDFHXVLQJDFRPPD
DVVLJQYDULDEOHVIRUVRPHRQHoVQDPH
SULQW QDPHVXUQDPH 
QDPH µ'DYLGµ
$OWHUQDWLYHO\\RXFDQDGGWKHVSDFH\RXUVHOI
SULQW QDPH
SULQW QDPHµ´VXUQDPH
7KHXVHRIWKHFRPPDLVPXFKQHDWHUDV\RXFDQVHH
&RQJUDWXODWLRQV\RXoYHMXVWWDNHQ\RXUƬUVWVWHSVLQWRWKHZLGH
ZRUOGRI3\WKRQ

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.

STEP 1 )LUVWRSHQWKH3\WKRQ,'/(6KHOODQGZKHQLWoVXS STEP 3 <RXFDQVHHWKDWWKHVDPHFRORXUFRGLQJLVLQSODFH


FOLFNRQ)LOH!1HZ)LOH7KLVZLOORSHQDQHZZLQGRZ LQWKH,'/((GLWRUDVLWLVLQWKH6KHOOHQDEOLQJ\RX
ZLWK8QWLWOHGDVLWVQDPH7KLVLVWKH3\WKRQ,'/((GLWRUDQGZLWKLQLW WREHWWHUXQGHUVWDQGZKDWoVJRLQJRQZLWK\RXUFRGH+RZHYHUWR
\RXFDQHQWHUWKHFRGHQHHGHGWRFUHDWH\RXUIXWXUHSURJUDPV H[HFXWHWKHFRGH\RXQHHGWRƬUVWVDYHLW3UHVV)DQG\RXJHWD
6DYHf&KHFNER[RSHQ

STEP 2 7KH,'/((GLWRULVIRUDOOLQWHQWVDQGSXUSRVHVD STEP 4 &OLFNRQWKH2.EXWWRQLQWKH6DYHER[DQGVHOHFWD


VLPSOHWH[WHGLWRUZLWK3\WKRQIHDWXUHVFRORXU GHVWLQDWLRQZKHUH\RXoOOVDYHDOO\RXU3\WKRQFRGH
FRGLQJDQGVRRQPXFKLQWKHVDPHYHLQDV6XEOLPH<RXHQWHU 7KHGHVWLQDWLRQFDQEHDGHGLFDWHGIROGHUFDOOHG3\WKRQRU\RX
FRGHDV\RXZRXOGZLWKLQWKH6KHOOVRWDNLQJDQH[DPSOHIURPWKH FDQMXVWGXPSLWZKHUHYHU\RXOLNH5HPHPEHUWRNHHSDWLG\GULYH
SUHYLRXVWXWRULDOHQWHU WKRXJKWRKHOS\RXRXWLQWKHIXWXUH
SULQW ´+HOORHYHU\RQHµ

26 3\WKRQ &&RGLQJ
6DYLQJDQG([HFXWLQJ<RXU&RGH

STEP 5 (QWHUDQDPHIRU\RXUFRGHnSULQWKHOORoIRU STEP 8 /HWoVH[WHQGWKHFRGHDQGHQWHUDIHZH[DPSOHV


H[DPSOHDQGFOLFNRQWKH6DYHEXWWRQ2QFHWKH IURPWKHSUHYLRXVWXWRULDO
3\WKRQFRGHLVVDYHGLWoVH[HFXWHGDQGWKHRXWSXWZLOOEHGHWDLOHGLQ
D 
WKH,'/(6KHOO,QWKLVFDVHWKHZRUGVn+HOORHYHU\RQHo
E 
QDPH µ'DYLGµ
VXUQDPH µ+D\ZDUGµ
SULQW QDPHVXUQDPH
SULQW DE
,I\RXSUHVV)QRZ\RXoOOEHDVNHGWRVDYHWKHƬOHDJDLQDVLWoVEHHQ
PRGLƬHGIURPEHIRUH

STEP 6 7KLVLVKRZWKHYDVWPDMRULW\RI\RXU3\WKRQFRGH STEP 9 ,I\RXFOLFNWKH2.EXWWRQWKHƬOHZLOOEH


ZLOOEHFRQGXFWHG(QWHULWLQWRWKH(GLWRUKLW) RYHUZULWWHQZLWKWKHQHZFRGHHQWULHVDQG
VDYHWKHFRGHDQGORRNDWWKHRXWSXWLQWKH6KHOO6RPHWLPHVWKLQJV H[HFXWHGZLWKWKHRXWSXWLQWKH6KHOO,WoVQRWDSUREOHPZLWKMXVW
ZLOOGLƪHUGHSHQGLQJRQZKHWKHU\RXoYHUHTXHVWHGDVHSDUDWH WKHVHIHZOLQHVEXWLI\RXZHUHWRHGLWDODUJHUƬOHRYHUZULWLQJFDQ
ZLQGRZEXWHVVHQWLDOO\WKDWoVWKHSURFHVV,WoVWKHSURFHVVZHZLOO EHFRPHDQLVVXH,QVWHDGXVH)LOH!6DYH$VIURPZLWKLQWKH(GLWRU
XVHWKURXJKRXWWKLVERRNXQOHVVRWKHUZLVHVWDWHG WRFUHDWHDEDFNXS

STEP 7 ,I\RXRSHQWKHƬOHORFDWLRQRIWKHVDYHG3\WKRQ STEP 10 1RZFUHDWHDQHZƬOH&ORVHWKH(GLWRUDQGRSHQ


FRGH\RXFDQVHHWKDWLWHQGVLQDS\H[WHQVLRQ DQHZLQVWDQFH )LOH!1HZ)LOHIURPWKH6KHOO 
7KLVLVWKHGHIDXOW3\WKRQƬOHQDPH$Q\FRGH\RXFUHDWHZLOOEH (QWHUWKHIROORZLQJDQGVDYHLWDVKHOORS\
ZKDWHYHUS\DQGDQ\FRGHGRZQORDGHGIURPWKHPDQ\,QWHUQHW
D µ3\WKRQµ
3\WKRQUHVRXUFHVLWHVZLOOEHS\-XVWHQVXUHWKDWWKHFRGHLVZULWWHQ
E µLVµ
IRU3\WKRQ
F µFRROµ
SULQW DEF
<RXZLOOXVHWKLVFRGHLQWKHQH[WWXWRULDO

ZZZSFOSXEOLFDWLRQVFRP 27
*HWWLQJ6WDUWHGZLWK3\WKRQ

([HFXWLQJ&RGHIURP
WKH&RPPDQG/LQH
$OWKRXJKZHoUHZRUNLQJIURPWKH*8,,'/(WKURXJKRXWWKLVERRNLWoVZRUWKWDNLQJ
DORRNDW3\WKRQoVFRPPDQGOLQHKDQGOLQJ:HDOUHDG\NQRZWKHUHoVDFRPPDQGOLQH
YHUVLRQRI3\WKRQEXWLWoVDOVRXVHGWRH[HFXWHFRGH

COMMAND THE CODE


Using the code we created in the previous tutorial, the one we named hello.py, let’s see how you can run code that was made
in the GUI at the command line level.

STEP 1 3\WKRQLQ/LQX[FRPHVZLWKWZRSRVVLEOHZD\VRI STEP 3 1RZ\RXoUHDWWKHFRPPDQGOLQHZHFDQVWDUW


H[HFXWLQJFRGHYLDWKHFRPPDQGOLQH2QHRIWKH 3\WKRQ)RU3\WKRQ\RXQHHGWRHQWHUWKH
ZD\VLVZLWK3\WKRQZKLOVWWKHRWKHUXVHVWKH3\WKRQOLEUDULHV FRPPDQGpython3DQGSUHVV(QWHU7KLVZLOOSXW\RXLQWRWKH
DQGVRRQ)LUVWWKRXJKGURSLQWRWKHFRPPDQGOLQHRU7HUPLQDORQ FRPPDQGOLQHYHUVLRQRIWKH6KHOOZLWKWKHIDPLOLDUWKUHHULJKW
\RXURSHUDWLQJV\VWHP IDFLQJDUURZVDVWKHFXUVRU !!! 

STEP 2 -XVWDVEHIRUH STEP 4 )URPKHUH\RXoUHDEOHWRHQWHUWKHFRGH\RXoYH


ZHoUHXVLQJD ORRNHGDWSUHYLRXVO\VXFKDV
5DVSEHUU\3L:LQGRZVXVHUVZLOO
D 
QHHGWRFOLFNWKH6WDUWEXWWRQDQG
SULQW D 
VHDUFKIRU&0'WKHQFOLFNWKH
&RPPDQG/LQHUHWXUQHGVHDUFK <RXFDQVHHWKDWLWZRUNVH[DFWO\WKHVDPH
DQGPDF26XVHUVFDQJHWDFFHVV
WRWKHLUFRPPDQGOLQHE\FOLFNLQJ
*R!8WLOLWLHV!7HUPLQDO

28 3\WKRQ &&RGLQJ
([HFXWLQJ&RGHIURPWKH&RPPDQG/LQH

STEP 5 1RZHQWHUexit()WROHDYHWKHFRPPDQGOLQH3\WKRQ STEP 8 7KHUHVXOWRIUXQQLQJ3\WKRQFRGHIURPWKH


VHVVLRQDQGUHWXUQ\RXEDFNWRWKHFRPPDQG 3\WKRQFRPPDQGOLQHLVTXLWHREYLRXV:KLOVWLW
SURPSW(QWHUWKHIROGHUZKHUH\RXVDYHGWKHFRGHIURPWKH GRHVQoWHUURURXWLQDQ\ZD\GXHWRWKHGLƪHUHQFHVEHWZHHQWKH
SUHYLRXVWXWRULDODQGOLVWWKHDYDLODEOHƬOHVZLWKLQKRSHIXOO\\RX ZD\3\WKRQKDQGOHVWKH3ULQWFRPPDQGRYHU3\WKRQWKHUHVXOW
VKRXOGVHHWKHKHOORS\ƬOH LVQoWDVZHH[SHFWHG8VLQJ6XEOLPHIRUWKHPRPHQWRSHQWKH
KHOORS\ƬOH

STEP 6 )URPZLWKLQWKHVDPHIROGHUDVWKHFRGH\RXoUH STEP 9 6LQFH6XEOLPH7H[WLVQoWDYDLODEOHIRUWKH5DVSEHUU\


JRLQJWRUXQHQWHUWKHIROORZLQJLQWRWKH 3L\RXoUHJRLQJWRWHPSRUDULO\OHDYHWKH3LIRUWKH
FRPPDQGOLQH PRPHQWDQGXVH6XEOLPHDVDQH[DPSOHWKDW\RXGRQoWQHFHVVDULO\
QHHGWRXVHWKH3\WKRQ,'/(:LWKWKHKHOORS\ƬOHRSHQDOWHULWWR
S\WKRQKHOORS\
LQFOXGHWKHIROORZLQJ
7KLVZLOOH[HFXWHWKHFRGHZHFUHDWHGZKLFKWRUHPLQG\RXLV
QDPH LQSXW ´:KDWLV\RXUQDPH"´
D µ3\WKRQµ SULQW ´+HOORµQDPH
E µLVµ
F µFRROµ
SULQW DEF

STEP 7 1DWXUDOO\VLQFHWKLVLV3\WKRQFRGHXVLQJWKH STEP 10 6DYHWKHKHOORS\ƬOHDQGGURSEDFNWRWKH


V\QWD[DQGOD\RXWWKDWoVXQLTXHWR3\WKRQLWRQO\ FRPPDQGOLQH1RZH[HFXWHWKHQHZO\VDYHG
ZRUNVZKHQ\RXXVHWKHS\WKRQFRPPDQG,I\RXOLNHWU\WKHVDPH FRGHZLWK
ZLWK3\WKRQE\HQWHULQJ
S\WKRQKHOORS\
S\WKRQKHOORS\
7KHUHVXOWZLOOEHWKHRULJLQDO3\WKRQLVFRROVWDWHPHQWWRJHWKHU
ZLWKWKHDGGHGLQSXWFRPPDQGDVNLQJ\RXIRU\RXUQDPHDQG
GLVSOD\LQJLWLQWKHFRPPDQGZLQGRZ

ZZZSFOSXEOLFDWLRQVFRP 29
*HWWLQJ6WDUWHGZLWK3\WKRQ

1XPEHUVDQG([SUHVVLRQV
:HoYHVHHQVRPHEDVLFPDWKHPDWLFDOH[SUHVVLRQVZLWK3\WKRQVLPSOHDGGLWLRQDQGWKH
OLNH/HWoVH[SDQGRQWKDWQRZDQGVHHMXVWKRZSRZHUIXO3\WKRQLVDVDFDOFXODWRU<RX
FDQZRUNZLWKLQWKH,'/(6KHOORULQWKH(GLWRUZKLFKHYHU\RXOLNH

IT’S ALL MATHS, MAN


You can get some really impressive results with the mathematical powers of Python; as with most, if not all, programming
languages, maths is the driving force behind the code.

STEP 1 2SHQXSWKH*8,YHUVLRQRI3\WKRQDVPHQWLRQHG STEP 3 <RXFDQXVHDOOWKHXVXDOPDWKHPDWLFDORSHUDWLRQV


\RXFDQXVHHLWKHUWKH6KHOORUWKH(GLWRU)RUWKH GLYLGHPXOWLSO\EUDFNHWVDQGVRRQ3UDFWLVHZLWKD
WLPHEHLQJ\RXoUHJRLQJWRXVHWKH6KHOOMXVWWRZDUPRXUPDWKV IHZIRUH[DPSOH
PXVFOHZKLFKZHEHOLHYHLVDVPDOOJODQGORFDWHGDWWKHEDFNRIWKH

EUDLQ RUQRW 

 
   

STEP 2 ,QWKH6KHOOHQWHUWKHIROORZLQJ STEP 4 <RXoYHQRGRXEWQRWLFHGGLYLVLRQSURGXFHVD


GHFLPDOQXPEHU,Q3\WKRQWKHVHDUHFDOOHGƮRDWV

RUƮRDWLQJSRLQWDULWKPHWLF+RZHYHULI\RXQHHGDQLQWHJHUDV

RSSRVHGWRDGHFLPDODQVZHUWKHQ\RXFDQXVHDGRXEOHVODVK
 

<RXFDQVHHWKDW3\WKRQFDQKDQGOHVRPHTXLWHODUJHQXPEHUV

$QGVRRQ

30 3\WKRQ &&RGLQJ
1XPEHUVDQG([SUHVVLRQV

STEP 5 <RXFDQDOVRXVHDQRSHUDWLRQWRVHHWKHUHPDLQGHU STEP 8 7KLVZLOOEHGLVSOD\HGDVnEoFRQYHUWLQJWKH


OHIWRYHUIURPGLYLVLRQ)RUH[DPSOH LQWHJHULQWRELQDU\DQGDGGLQJWKHSUHƬ[EWRWKH
IURQW,I\RXZDQWWRUHPRYHWKHESUHƬ[WKHQ\RXFDQXVH

IRUPDW ¶E·
:LOOGLVSOD\ZKLFKLVRIFRXUVHUHFXUULQJ,I\RX
QRZHQWHU 7KH)RUPDWFRPPDQGFRQYHUWVDYDOXHWKHQXPEHUWRD
IRUPDWWHGUHSUHVHQWDWLRQDVFRQWUROOHGE\WKHIRUPDWVSHFLƬFDWLRQ

WKHnEoSDUW
7KLVZLOOGLVSOD\ZKLFKLVWKHUHPDLQGHUOHIWRYHUIURPGLYLGLQJ
LQWR

STEP 6 1H[WXSZHKDYHWKHSRZHURSHUDWRURU STEP 9 $%RROHDQ([SUHVVLRQLVDORJLFDOVWDWHPHQWWKDWZLOO


H[SRQHQWLDWLRQLI\RXZDQWWREHWHFKQLFDO7RZRUN HLWKHUEHWUXHRUIDOVH:HFDQXVHWKHVHWRFRPSDUH
RXWWKHSRZHURIVRPHWKLQJ\RXFDQXVHDGRXEOHPXOWLSOLFDWLRQ GDWDDQGWHVWWRVHHLILWoVHTXDOWROHVVWKDQRUJUHDWHUWKDQ7U\WKLV
V\PERORUGRXEOHVWDURQWKHNH\ERDUG LQD1HZ)LOH
  D 
  E 
SULQW D 
(VVHQWLDOO\LWoV[[EXWZHoUHVXUH\RXDOUHDG\NQRZWKHEDVLFV
SULQW D 
EHKLQGPDWKVRSHUDWRUV7KLVLVKRZ\RXZRXOGZRUNLWRXWLQ3\WKRQ
SULQW D DQGE 
SULQW D DQGE 
SULQW QRWD DQGE 
SULQW D RUE 
SULQW D RUE 
SULQW QRW D DQGE 
SULQW QRWD DQGE 

STEP 7 1XPEHUVDQGH[SUHVVLRQVGRQoWVWRSWKHUH3\WKRQ STEP 10 ([HFXWHWKHFRGHIURP6WHSDQG\RXFDQVHHD


KDVQXPHURXVEXLOWLQIXQFWLRQVWRZRUNRXWVHWV VHULHVRI7UXHRU)DOVHVWDWHPHQWVGHSHQGLQJRQ
RIQXPEHUVDEVROXWHYDOXHVFRPSOH[QXPEHUVDQGDKRVWRI WKHUHVXOWRIWKHWZRGHƬQLQJYDOXHVDQG,WoVDQH[WHQVLRQRI
PDWKHPDWLFDOH[SUHVVLRQVDQG3\WKDJRUHDQWRQJXHWZLVWHUV)RU ZKDW\RXoYHORRNHGDWDQGDQLPSRUWDQWSDUWRISURJUDPPLQJ
H[DPSOHWRFRQYHUWDQXPEHUWRELQDU\XVH
ELQ  

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.

STEP 1 6WDUWE\FUHDWLQJDQHZLQVWDQFHRIWKH,'/((GLWRU STEP 3 5HVDYHWKHFRGHDQGH[HFXWHLW<RXFDQVHHWKDWWKH


)LOH!1HZ)LOH DQGFUHDWHDVLPSOHYDULDEOHDQG RXWSXWLQWKH,'/(6KHOOLVVWLOOWKHVDPHDVEHIRUH
SULQWFRPPDQG GHVSLWHWKHH[WUDOLQHVEHLQJDGGHG6LPSO\SXWWKHKDVKV\PERO  
GHQRWHVDOLQHRIWH[WWKHSURJUDPPHUFDQLQVHUWWRLQIRUPWKHP
D 
DQGRWKHUVRIZKDWoVJRLQJRQZLWKRXWWKHXVHUEHLQJDZDUH
SULQW ´7KHYDOXHRI$LVµD
6DYHWKHƬOHDQGH[HFXWHWKHFRGH

STEP 2 5XQQLQJWKHFRGHZLOOUHWXUQWKHOLQH7KHYDOXHRI$ STEP 4 /HWoVDVVXPHWKDWWKHYDULDEOH$WKDWZHoYHFUHDWHG


LVLQWRWKH,'/(6KHOOZLQGRZZKLFKLVZKDWZH LVWKHQXPEHURIOLYHVLQDJDPH(YHU\WLPHWKH
H[SHFWHG1RZDGGVRPHRIWKHW\SHVRIFRPPHQWV\RXoGQRUPDOO\ SOD\HUGLHVWKHYDOXHLVGHFUHDVHGE\7KHSURJUDPPHUFRXOG
VHHZLWKLQFRGH LQVHUWDURXWLQHDORQJWKHOLQHVRI
6HWWKHVWDUWYDOXHRI$WR D D
D  SULQW ´<RX·YHMXVWORVWDOLIHµ
3ULQWWKHFXUUHQWYDOXHRI$ SULQW ´<RXQRZKDYHµD´OLYHVOHIWµ
SULQW ´7KHYDOXHRI$LVµD

32 3\WKRQ &&RGLQJ
8VLQJ&RPPHQWV

STEP 5 :KLOVWZHNQRZWKDWWKHYDULDEOH$LVOLYHVDQG STEP 8 ,QOLQHFRPPHQWVDUHFRPPHQWVWKDWIROORZDVHFWLRQ


WKDWWKHSOD\HUKDVMXVWORVWRQHDFDVXDOYLHZHURU RIFRGH7DNHRXUH[DPSOHVIURPDERYHLQVWHDGRI
VRPHRQHFKHFNLQJWKHFRGHPD\QRWNQRZ,PDJLQHIRUDPRPHQW LQVHUWLQJWKHFRGHRQDVHSDUDWHOLQHZHFRXOGXVH
WKDWWKHFRGHLVWZHQW\WKRXVDQGOLQHVORQJLQVWHDGRIMXVWRXU
D 6HWWKHVWDUWYDOXHRI$WR
VHYHQ<RXFDQVHHKRZKDQG\FRPPHQWVDUH
SULQW ´7KHYDOXHRI$LVµD 3ULQWWKHFXUUHQW
YDOXHRI$
D D3OD\HUORVWDOLIH
SULQW ´<RX·YHMXVWORVWDOLIHµ
SULQW ´<RXQRZKDYHµD´OLYHVOHIWµ ,QIRUP
SOD\HUDQGGLVSOD\FXUUHQWYDOXHRI$ OLYHV

STEP 6 (VVHQWLDOO\WKHQHZFRGHWRJHWKHUZLWKFRPPHQWV STEP 9 7KHFRPPHQWWKHKDVKV\PEROFDQDOVREHXVHGWR


FRXOGORRNOLNH FRPPHQWRXWVHFWLRQVRIFRGH\RXGRQoWZDQWWREH
H[HFXWHGLQ\RXUSURJUDP)RULQVWDQFHLI\RXZDQWHGWRUHPRYH
6HWWKHVWDUWYDOXHRI$WR
WKHƬUVWSULQWVWDWHPHQW\RXZRXOGXVH
D 
3ULQWWKHFXUUHQWYDOXHRI$ SULQW ´7KHYDOXHRI$LVµD
SULQW ´7KHYDOXHRI$LVµD
3OD\HUORVWDOLIH
D D
,QIRUPSOD\HUDQGGLVSOD\FXUUHQWYDOXHRI$
OLYHV
SULQW ´<RX·YHMXVWORVWDOLIHµ
SULQW ´<RXQRZKDYHµD´OLYHVOHIWµ

STEP 7 <RXFDQXVHFRPPHQWVLQGLƪHUHQWZD\V)RU STEP 10 <RXDOVRXVHWKUHHVLQJOHTXRWHVWRFRPPHQW


H[DPSOH%ORFN&RPPHQWVDUHDODUJHVHFWLRQRI RXWD%ORFN&RPPHQWRUPXOWLOLQHVHFWLRQRI
WH[WWKDWGHWDLOVZKDWoVJRLQJRQLQWKHFRGHVXFKDVWHOOLQJWKHFRGH FRPPHQWV3ODFHWKHPEHIRUHDQGDIWHUWKHDUHDV\RXZDQWWR
UHDGHUZKDWYDULDEOHV\RXoUHSODQQLQJRQXVLQJ FRPPHQWIRUWKHPWRZRUN
7KLVLVWKHEHVWJDPHHYHUDQGKDVEHHQ ¶··
GHYHORSHGE\DFUDFNVTXDGRI3\WKRQH[SHUWV 7KLVLVWKHEHVWJDPHHYHUDQGKDVEHHQGHYHORSHG
ZKRKDYHQ·WVOHSWRUZDVKHGLQZHHNV'HVSLWH E\DFUDFNVTXDGRI3\WKRQH[SHUWVZKRKDYHQ·W
EHLQJYHU\VPHOO\WKHFRGHDWOHDVW VOHSWRUZDVKHGLQZHHNV'HVSLWHEHLQJYHU\
ZRUNVUHDOO\ZHOO VPHOO\WKHFRGHDWOHDVWZRUNVUHDOO\ZHOO
···

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.

STEP 1 ,QVRPHSURJUDPPLQJODQJXDJHV\RXoUHUHTXLUHG STEP 3 <RXoYHVHHQSUHYLRXVO\WKDWYDULDEOHVFDQEH


WRXVHDGROODUVLJQWRGHQRWHDVWULQJZKLFKLVD FRQFDWHQDWHGXVLQJWKHSOXVV\PEROEHWZHHQWKH
YDULDEOHPDGHXSRIPXOWLSOHFKDUDFWHUVVXFKDVDQDPHRIDSHUVRQ YDULDEOHQDPHV,QRXUH[DPSOHZHFDQXVHSULQW QDPH´
,Q3\WKRQWKLVLVQoWQHFHVVDU\)RUH[DPSOHLQWKH6KHOOHQWHU ´WLWOH 7KHPLGGOHSDUWEHWZHHQWKHTXRWDWLRQVDOORZVXVWR
QDPH µ'DYLG+D\ZDUGµ RUXVH\RXURZQQDPHXQOHVV\RXoUH DGGDFRORQDQGDVSDFHDVYDULDEOHVDUHFRQQHFWHGZLWKRXWVSDFHV
DOVRFDOOHG'DYLG+D\ZDUG  VRZHQHHGWRDGGWKHPPDQXDOO\

STEP 2 <RXFDQFKHFNWKHW\SHRIYDULDEOHLQXVHE\ STEP 4 <RXFDQDOVR


LVVXLQJWKHtype ()FRPPDQGSODFLQJWKHQDPHRI FRPELQHYDULDEOHV
WKHYDULDEOHLQVLGHWKHEUDFNHWV,QRXUH[DPSOHWKLVZRXOGEH ZLWKLQDQRWKHUYDULDEOH)RU
W\SH QDPH $GGDQHZVWULQJYDULDEOHWLWOH µ'HVFHQGHG H[DPSOHWRFRPELQHERWKQDPH
IURP9LNLQJVµ DQGWLWOHYDULDEOHVLQWRDQHZ
YDULDEOHZHXVH
FKDUDFWHU QDPH´´
WLWOH
7KHQRXWSXWWKHFRQWHQWRIWKH
QHZYDULDEOHDV
SULQW FKDUDFWHU
1XPEHUVDUHVWRUHGDVGLƪHUHQW
YDULDEOHV
DJH 
7\SH DJH
:KLFKDVZHNQRZDUHLQWHJHUV

34 3\WKRQ &&RGLQJ
:RUNLQJZLWK9DULDEOHV

STEP 5 +RZHYHU\RXFDQoWFRPELQHERWKVWULQJVDQG STEP 8 7KLVSUHVHQWVDELWRIDSUREOHPZKHQ\RXZDQWWR


LQWHJHUW\SHYDULDEOHVLQWKHVDPHFRPPDQGDV\RX ZRUNZLWKDQXPEHUWKDWoVEHHQLQSXWWHGE\WKH
ZRXOGDVHWRIVLPLODUYDULDEOHV<RXQHHGWRHLWKHUWXUQRQHLQWRWKH XVHUDVDJHZRQoWZRUNGXHWREHLQJDVWULQJYDULDEOHDQGDQ
RWKHURUYLFHYHUVD:KHQ\RXGRWU\WRFRPELQHERWK\RXJHWDQ LQWHJHU,QVWHDG\RXQHHGWRHQWHU
HUURUPHVVDJH
LQW DJH 
SULQW QDPHDJH 
7KLVZLOO7\SH&DVWWKHDJHVWULQJLQWRDQLQWHJHUWKDWFDQEH
ZRUNHGZLWK

STEP 6 7KLVLVDSURFHVVNQRZQDV7\SH&DVWLQJ7KH3\WKRQ STEP 9 7KHXVHRI7\SH&DVWLQJLVDOVRLPSRUWDQWZKHQ


FRGHLV GHDOLQJZLWKƮRDWLQJSRLQWDULWKPHWLFUHPHPEHU
QXPEHUVWKDWKDYHDGHFLPDOSRLQWLQWKHP)RUH[DPSOHHQWHU
SULQW FKDUDFWHU´LV´VWU DJH ´\HDUV
ROGµ VKLUW 
RU\RXFDQXVH 1RZHQWHUW\SH VKLUW DQG\RXoOOVHHWKDW3\WKRQKDVDOORFDWHG
WKHQXPEHUDVDnƮRDWoEHFDXVHWKHYDOXHFRQWDLQVDGHFLPDOSRLQW
SULQW FKDUDFWHU´LV´DJH´\HDUVROGµ
1RWLFHDJDLQWKDWLQWKHODVWH[DPSOH\RXGRQoWQHHGWKHVSDFHV
EHWZHHQWKHZRUGVLQTXRWHVDVWKHFRPPDVWUHDWHDFKDUJXPHQW
WRSULQWVHSDUDWHO\

STEP 7 $QRWKHUH[DPSOHRI7\SH&DVWLQJLVZKHQ\RXDVNIRU STEP 10 :KHQFRPELQLQJLQWHJHUVDQGƮRDWV3\WKRQ


LQSXWIURPWKHXVHUVXFKDVDQDPHIRUH[DPSOH XVXDOO\FRQYHUWVWKHLQWHJHUWRDƮRDWEXWVKRXOG
HQWHU WKHUHYHUVHHYHUEHDSSOLHGLWoVZRUWKUHPHPEHULQJWKDW3\WKRQ
GRHVQoWUHWXUQWKHH[DFWYDOXH:KHQFRQYHUWLQJDƮRDWWRDQ
DJH LQSXW ´+RZROGDUH\RX"´
LQWHJHU3\WKRQZLOODOZD\VURXQGGRZQWRWKHQHDUHVWLQWHJHU
$OOGDWDVWRUHGIURPWKH,QSXWFRPPDQGLVVWRUHGDVDVWULQJYDULDEOH FDOOHGWUXQFDWLQJLQRXUFDVHLQVWHDGRILWEHFRPHV

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.

STEP 1 ,ILWoVQRWDOUHDG\RSHQWKH3\WKRQ,'/(6KHOO STEP 3 1RZWKDWZHKDYHWKHXVHUoVQDPHVWRUHGLQD


DQGVWDUWD1HZ)LOHLQWKH(GLWRU/HWoVEHJLQZLWK FRXSOHRIYDULDEOHVZHFDQFDOOWKHPXSZKHQHYHU
VRPHWKLQJUHDOO\VLPSOHHQWHU ZHZDQW
SULQW ´+HOORµ SULQW ´:HOFRPHµÀUVWQDPHVXUQDPH´,KRSH
ÀUVWQDPH LQSXW ´:KDWLV\RXUÀUVWQDPH"´ \RX·UHZHOOWRGD\µ
SULQW ´7KDQNVµ
VXUQDPH LQSXW ´$QGZKDWLV\RXUVXUQDPH"´ 

STEP 2 6DYHDQGH[HFXWHWKHFRGHDQGDV\RXDOUHDG\QR STEP 4 5XQWKHFRGHDQG\RXFDQVHHDVOLJKWLVVXHWKH


GRXEWVXVSHFWHGLQWKH,'/(6KHOOWKHSURJUDPZLOO IXOOVWRSDIWHUWKHVXUQDPHIROORZVDEODQNVSDFH
DVNIRU\RXUƬUVWQDPHVWRULQJLWDVWKHYDULDEOHƬUVWQDPHIROORZHG 7RHOLPLQDWHWKDWZHFDQDGGDSOXVVLJQLQVWHDGRIWKHFRPPDLQ
E\\RXUVXUQDPHDOVRVWRUHGLQLWVRZQYDULDEOH VXUQDPH  WKHFRGH
SULQW ´:HOFRPHµÀUVWQDPHVXUQDPH´,KRSH
\RX·UHZHOOWRGD\µ

36 3\WKRQ &&RGLQJ
8VHU,QSXW

STEP 5 <RXGRQoWDOZD\VKDYHWRLQFOXGHTXRWHGWH[WZLWKLQ STEP 8 :KDW\RXoYHFUHDWHGKHUHLVDFRQGLWLRQZKLFKZH


WKHLQSXWFRPPDQG)RUH[DPSOH\RXFDQDVNWKH ZLOOFRYHUVRRQ,QVKRUWZHoUHXVLQJWKHLQSXWIURP
XVHUWKHLUQDPHDQGKDYHWKHLQSXWLQWKHOLQHEHORZ WKHXVHUDQGPHDVXULQJLWDJDLQVWDFRQGLWLRQ6RLIWKHXVHUHQWHUV
'DYLGDVWKHLUQDPHWKHJXDUGZLOODOORZWKHPWRSDVVXQKLQGHUHG
SULQW ´+HOOR:KDW·V\RXUQDPH"µ
(OVHLIWKH\HQWHUDQDPHRWKHUWKDQ'DYLGWKHJXDUGFKDOOHQJHV
QDPH LQSXW 
WKHPWRDƬJKW

STEP 6 7KHFRGHIURPWKHSUHYLRXVVWHSLVRIWHQUHJDUGHG STEP 9 -XVWDV\RXOHDUQHGSUHYLRXVO\DQ\LQSXWIURPD


DVEHLQJDOLWWOHQHDWHUWKDQKDYLQJDOHQJWK\ XVHULVDXWRPDWLFDOO\DVWULQJVR\RXQHHGWRDSSO\D
DPRXQWRIWH[WLQWKHLQSXWFRPPDQGEXWLWoVQRWDUXOHWKDWoVVHWLQ 7\SH&DVWLQRUGHUWRWXUQLWLQWRVRPHWKLQJHOVH7KLVFUHDWHVVRPH
VWRQHVRGRDV\RXOLNHLQWKHVHVLWXDWLRQV([SDQGLQJRQWKHFRGH LQWHUHVWLQJDGGLWLRQVWRWKHLQSXWFRPPDQG)RUH[DPSOH
WU\WKLV
&RGHWRFDOFXODWHUDWHDQGGLVWDQFH
SULQW ´+DOW:KRJRHVWKHUH"µ SULQW ´,QSXWDUDWHDQGDGLVWDQFHµ
QDPH LQSXW  UDWH ÁRDW LQSXW ´5DWH´

STEP 7 ,WoVDJRRGVWDUWWRDWH[WDGYHQWXUHJDPHSHUKDSV" STEP 10 7RƬQDOLVHWKHUDWHDQGGLVWDQFHFRGHZHFDQDGG


1RZ\RXFDQH[SDQGRQLWDQGXVHWKHUDZLQSXW
GLVWDQFH ÁRDW LQSXW ´'LVWDQFH´
IURPWKHXVHUWRƮHVKRXWWKHJDPHDOLWWOH
SULQW ´7LPHµ GLVWDQFHUDWH
LIQDPH µ'DYLGµ
6DYHDQGH[HFXWHWKHFRGHDQGHQWHUVRPHQXPEHUV8VLQJWKH
SULQW ´:HOFRPHJRRGVLU<RXPD\SDVVµ
ƮRDW LQSXWHOHPHQWZHoYHWROG3\WKRQWKDWDQ\WKLQJHQWHUHGLVD
HOVH
ƮRDWLQJSRLQWQXPEHUUDWKHUWKDQDVWULQJ
SULQW ´,NQRZ\RXQRW3UHSDUHIRUEDWWOHµ 

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.

STEP 1 ,WoVQRWMXVWGDWDWKDWDIXQFWLRQZRUNVRQ7KH\FDQ STEP 3 <RXFDQSDVVYDULDEOHVWKURXJKIXQFWLRQVLQPXFK


GRDOOPDQQHURIXVHIXOWKLQJVLQ3\WKRQVXFKDV WKHVDPHPDQQHU/HWoVDVVXPH\RXZDQWWKH
VRUWGDWDFKDQJHLWHPVIURPRQHIRUPDWWRDQRWKHUDQGFKHFNWKH QXPEHURIOHWWHUVLQDSHUVRQoVVXUQDPH\RXFRXOGXVHWKHIROORZLQJ
OHQJWKRUW\SHRILWHPV%DVLFDOO\DIXQFWLRQLVDVKRUWZRUGWKDWoV FRGH HQWHUWKHWH[WHGLWRUIRUWKLVH[DPSOH 
IROORZHGE\EUDFNHWV)RUH[DPSOHlen()list()RUtype()
QDPH LQSXW ´(QWHU\RXUVXUQDPH´
FRXQW OHQ QDPH
SULQW ´<RXUVXUQDPHKDV´FRXQW´OHWWHUVLQ
LWµ
3UHVV)DQGVDYHWKHFRGHWRH[HFXWHLW

STEP 2 $IXQFWLRQWDNHVGDWDXVXDOO\DYDULDEOHZRUNVRQ STEP 4 3\WKRQKDVWHQVRIIXQFWLRQVEXLOWLQWRLWIDUWRR


LWGHSHQGLQJRQZKDWWKHIXQFWLRQLVSURJUDPPHG PDQ\WRJHWLQWRLQWKHOLPLWHGVSDFHDYDLODEOHKHUH
WRGRDQGUHWXUQVWKHHQGYDOXH7KHGDWDEHLQJZRUNHGRQJRHV +RZHYHUWRYLHZWKHOLVWRIEXLOWLQIXQFWLRQVDYDLODEOHWR3\WKRQ
LQVLGHWKHEUDFNHWVVRLI\RXZDQWHGWRNQRZKRZPDQ\OHWWHUV QDYLJDWHWRwww.docs.python.org/3/library/functions.html7KHVH
DUHLQWKHZRUGDQWLGLVHVWDEOLVKPHQWDULDQLVPWKHQ\RXoGHQWHU DUHWKHSUHGHƬQHGIXQFWLRQVEXWVLQFHXVHUVKDYHFUHDWHGPDQ\
OHQ ´DQWLGLVHVWDEOLVKPHQWDULDQLVPµ DQGWKHQXPEHU PRUHWKH\oUHQRWWKHRQO\RQHVDYDLODEOH
ZRXOGUHWXUQ

38 3\WKRQ &&RGLQJ
&UHDWLQJ)XQFWLRQV

STEP 5 $GGLWLRQDOIXQFWLRQVFDQEHDGGHGWR3\WKRQ STEP 6 7RXVHDIXQFWLRQIURPDPRGXOHHQWHUWKHQDPHRI


WKURXJKPRGXOHV3\WKRQKDVDYDVWUDQJHRI WKHPRGXOHIROORZHGE\DIXOOVWRSWKHQWKHQDPH
PRGXOHVDYDLODEOHWKDWFDQFRYHUQXPHURXVSURJUDPPLQJGXWLHV RIWKHIXQFWLRQ)RULQVWDQFHXVLQJWKHPDWKPRGXOHVLQFH\RXoYH
7KH\DGGIXQFWLRQVDQGFDQEHLPSRUWHGDVDQGZKHQUHTXLUHG)RU MXVWLPSRUWHGLWLQWR3\WKRQ\RXFDQXWLOLVHWKHVTXDUHURRWIXQFWLRQ
H[DPSOHWRXVHDGYDQFHGPDWKHPDWLFVIXQFWLRQVHQWHU 7RGRVRHQWHU
LPSRUWPDWK PDWKVTUW 
2QFHHQWHUHG\RXKDYHDFFHVVWRDOOWKHPDWKPRGXOHIXQFWLRQV <RXFDQVHHWKDWWKHFRGHLVSUHVHQWHGDVPRGXOHIXQFWLRQ GDWD 

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.

STEP 1 &KRRVH)LOH!1HZ)LOHWRHQWHUWKHHGLWRUOHWoV STEP 3 7RPRGLI\LWIXUWKHUGHOHWHWKH+HOOR p'DYLGq OLQH


FUHDWHDIXQFWLRQFDOOHG+HOORWKDWJUHHWVDXVHU WKHODVWOLQHLQWKHVFULSWDQGSUHVV&WUO6WRVDYH
(QWHU WKHQHZVFULSW&ORVHWKH(GLWRUDQGFUHDWHDQHZƬOH )LOH!1HZ
)LOH (QWHUWKHIROORZLQJ
GHI+HOOR 
SULQW ´+HOORµ IURP+HOORLPSRUW+HOOR
+HOOR +HOOR ´'DYLGµ
3UHVV)WRVDYHDQGUXQWKHVFULSW<RXFDQVHH+HOORLQWKH6KHOO 3UHVV)WRVDYHDQGH[HFXWHWKHFRGH
W\SHLQ+HOOR DQGLWUHWXUQVWKHQHZIXQFWLRQ

STEP 2 /HWoVQRZH[SDQGWKHIXQFWLRQWRDFFHSWD STEP 4 :KDW\RXoYHMXVWGRQHLVLPSRUWWKH+HOORIXQFWLRQ


YDULDEOHWKHXVHUoVQDPHIRUH[DPSOH(GLW\RXU IURPWKHVDYHG+HOORS\SURJUDPDQGWKHQXVHGLW
VFULSWWRUHDG WRVD\KHOORWR'DYLG7KLVLVKRZPRGXOHVDQGIXQFWLRQVZRUN\RX
LPSRUWWKHPRGXOHWKHQXVHWKHIXQFWLRQ7U\WKLVRQHDQGPRGLI\
GHI+HOOR QDPH 
LWIRUH[WUDFUHGLW
SULQW ´+HOORµQDPH
GHIDGG DE 
+HOOR ´'DYLGµ
UHVXOW DE
7KLVZLOOQRZDFFHSWWKHYDULDEOHQDPHRWKHUZLVHLWSULQWV+HOOR
UHWXUQUHVXOW
'DYLG,QWKH6KHOOHQWHUQDPH p%REq WKHQ+HOOR QDPH <RXU
IXQFWLRQFDQQRZSDVVYDULDEOHVWKURXJKLW

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.

STEP 1 /HWoVFUHDWHDQHZ3\WKRQSURJUDPWKDWZLOODVN STEP 3 1RZ\RXFDQXVHDQLIVWDWHPHQWWRFKHFNLIWKH


WKHXVHUWRLQSXWDZRUGWKHQFKHFNLWWRVHHLILWoV ZRUGBOHQJWKYDULDEOHLVHTXDOWRIRXUDQGSULQWD
DIRXUOHWWHUZRUGRUQRW6WDUWZLWK)LOH!1HZ)LOHDQGEHJLQZLWK IULHQGO\FRQIRUPDWLRQLILWDSSOLHVWRWKHUXOH
WKHLQSXWYDULDEOH
ZRUG LQSXW ´3OHDVHHQWHUDIRXUOHWWHUZRUG´
ZRUG LQSXW ´3OHDVHHQWHUDIRXUOHWWHUZRUG´ ZRUGBOHQJWK OHQ ZRUG
LIZRUGBOHQJWK 
SULQW ZRUG´LVDIRXUOHWWHUZRUG:HOOGRQHµ
7KHGRXEOHHTXDOVLJQ PHDQVFKHFNLIVRPHWKLQJLVHTXDOWR
VRPHWKLQJHOVH

STEP 2 1RZZHFDQFUHDWHDQHZYDULDEOHWKHQXVHWKHOHQ STEP 4 7KHFRORQDWWKHHQGRI,)WHOOV3\WKRQWKDWLIWKLV


IXQFWLRQDQGSDVVWKHZRUGYDULDEOHWKURXJKLWWR VWDWHPHQWLVWUXHGRHYHU\WKLQJDIWHUWKHFRORQ
JHWWKHWRWDOQXPEHURIOHWWHUVWKHXVHUKDVMXVWHQWHUHG WKDWoVLQGHQWHG1H[WPRYHWKHFXUVRUEDFNWRWKHEHJLQQLQJRI
WKH(GLWRU
ZRUG LQSXW ´3OHDVHHQWHUDIRXUOHWWHUZRUG´
ZRUGBOHQJWK OHQ ZRUG  ZRUG LQSXW ´3OHDVHHQWHUDIRXUOHWWHUZRUG´
ZRUGBOHQJWK OHQ ZRUG
LIZRUGBOHQJWK 
SULQW ZRUG´LVDIRXUOHWWHUZRUG:HOO
GRQHµ
HOVH
SULQW ZRUG´LVQRWDIRXUOHWWHUZRUGµ 

40 3\WKRQ &&RGLQJ
&RQGLWLRQVDQG/RRSV

STEP 5 3UHVV)DQGVDYHWKHFRGHWRH[HFXWHLW(QWHU STEP 6 1RZH[SDQGWKHFRGHWRLQFOXGHDQRWKHUFRQGLWLRQV


DIRXUOHWWHUZRUGLQWKH6KHOOWREHJLQZLWK\RX (YHQWXDOO\LWFRXOGEHFRPHTXLWHFRPSOH[:HoYH
VKRXOGKDYHWKHUHWXUQHGPHVVDJHWKDWLWoVWKHZRUGLVIRXUOHWWHUV DGGHGDFRQGLWLRQIRUWKUHHOHWWHUZRUGV
1RZSUHVV)DJDLQDQGUHUXQWKHSURJUDPEXWWKLVWLPHHQWHUD
ZRUG LQSXW ´3OHDVHHQWHUDIRXUOHWWHUZRUG´
ƬYHOHWWHUZRUG7KH6KHOOZLOOGLVSOD\WKDWLWoVQRWDIRXUOHWWHUZRUG
ZRUGBOHQJWK OHQ ZRUG
LIZRUGBOHQJWK 
SULQW ZRUG´LVDIRXUOHWWHUZRUG:HOO
GRQHµ
HOLIZRUGBOHQJWK 
SULQW ZRUG´LVDWKUHHOHWWHUZRUG7U\DJDLQµ
HOVH
SULQW ZRUG´LVQRWDIRXUOHWWHUZRUGµ 

LOOPS
$ORRSORRNVTXLWHVLPLODUWRDFRQGLWLRQEXWWKH\DUHVRPHZKDWGLƪHUHQWLQWKHLURSHUDWLRQ$ORRSZLOOUXQWKURXJKWKHVDPH
block of code a number of times, usually with the support of a condition.

STEP 1 /HWoVVWDUWZLWKDVLPSOH:KLOHVWDWHPHQW/LNH,) STEP 3 7KH)RUORRSLVDQRWKHUH[DPSOH)RULVXVHGWR


WKLVZLOOFKHFNWRVHHLIVRPHWKLQJLV758(WKHQUXQ ORRSRYHUDUDQJHRIGDWDXVXDOO\DOLVWVWRUHGDV
WKHLQGHQWHGFRGH YDULDEOHVLQVLGHVTXDUHEUDFNHWV)RUH[DPSOH
[  ZRUGV >´&DWµ´'RJµ´8QLFRUQµ@
ZKLOH[
IRUZRUGLQZRUGV
SULQW [
SULQW ZRUG
[ [

STEP 2 7KHGLƪHUHQFHEHWZHHQLIDQGZKLOHLVZKHQZKLOH STEP 4 7KH)RUORRSFDQDOVREHXVHGLQWKHFRXQWGRZQ


JHWVWRWKHHQGRIWKHLQGHQWHGFRGHLWJRHVEDFN H[DPSOHE\XVLQJWKHUDQJHIXQFWLRQ
DQGFKHFNVWKHVWDWHPHQWLVVWLOOWUXH,QRXUH[DPSOH[LVOHVVWKDQ
IRU[LQUDQJH  
:LWKHDFKORRSLWSULQWVWKHFXUUHQWYDOXHRI[WKHQDGGVRQHWR
SULQW [
WKDWYDOXH:KHQ[GRHVHYHQWXDOO\HTXDOLWVWRSV
7KH[ [SDUWLVQoWQHHGHGKHUHEHFDXVHWKHUDQJHIXQFWLRQ
FUHDWHVDOLVWEHWZHHQWKHƬUVWDQGODVWQXPEHUVXVHG

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.

STEP 1 $OWKRXJKJRRGWKHEXLOWLQIXQFWLRQVZLWKLQ3\WKRQ STEP 3 7KHUHVXOWLVDQHUURULQWKH,'/(6KHOODVWKH


DUHOLPLWHG7KHXVHRIPRGXOHVKRZHYHUDOORZVXV S\JDPHPRGXOHLVQoWUHFRJQLVHGRULQVWDOOHGLQ
WRPDNHPRUHVRSKLVWLFDWHGSURJUDPV$V\RXDUHDZDUHPRGXOHV 3\WKRQ7RLQVWDOODPRGXOHZHFDQXVH3,3 3LS,QVWDOOV3DFNDJHV 
DUH3\WKRQVFULSWVWKDWDUHLPSRUWHGVXFKDVLPSRUWPDWK &ORVHGRZQWKH,'/(6KHOODQGGURSLQWRDFRPPDQGSURPSWRU
7HUPLQDOVHVVLRQ$WDQHOHYDWHGDGPLQFRPPDQGSURPSWHQWHU
SLSLQVWDOOS\JDPH

STEP 2 6RPHPRGXOHVHVSHFLDOO\RQWKH5DVSEHUU\3L STEP 4 7KH3,3LQVWDOODWLRQUHTXLUHVDQHOHYDWHGVWDWXV


DUHLQFOXGHGE\GHIDXOWWKHPDWKPRGXOHEHLQJD GXHLWLQVWDOOLQJFRPSRQHQWVDWGLƪHUHQWORFDWLRQV
SULPHH[DPSOH6DGO\RWKHUPRGXOHVDUHQoWDOZD\VDYDLODEOH$JRRG :LQGRZVXVHUVFDQVHDUFKIRU&0'YLDWKH6WDUWEXWWRQDQGULJKW
H[DPSOHRQQRQ3LSODWIRUPVLVWKHS\JDPHPRGXOHZKLFKFRQWDLQV FOLFNWKHUHVXOWWKHQFOLFN5XQDV$GPLQLVWUDWRU/LQX[DQG0DFXVHUV
PDQ\IXQFWLRQVWRKHOSFUHDWHJDPHV7U\import pygame FDQXVHWKH6XGRFRPPDQGZLWKVXGRSLSLQVWDOOSDFNDJH

42 3\WKRQ &&RGLQJ
3\WKRQ0RGXOHV

STEP 5 &ORVHWKHFRPPDQGSURPSWRU7HUPLQDODQG STEP 8 0XOWLSOHPRGXOHVFDQEHLPSRUWHGZLWKLQ\RXUFRGH


UHODXQFKWKH,'/(6KHOO:KHQ\RXQRZHQWHU 7RH[WHQGRXUH[DPSOHXVH
LPSRUWS\JDPHWKHPRGXOHZLOOEHLPSRUWHGLQWRWKHFRGH
LPSRUWUDQGRP
ZLWKRXWDQ\SUREOHPV<RXoOOƬQGWKDWPRVWFRGHGRZQORDGHGRU
LPSRUWPDWK
FRSLHGIURPWKH,QWHUQHWZLOOFRQWDLQDPRGXOHPDLQVWUHDPRI
XQLTXHWKHVHDUHXVXDOO\WKHVRXUFHRIHUURUVLQH[HFXWLRQGXHWR IRU,LQUDQJH  
WKHPEHLQJPLVVLQJ SULQW UDQGRPUDQGLQW 
SULQW PDWKSL

STEP 6 7KHPRGXOHVFRQWDLQWKHH[WUDFRGHQHHGHGWR STEP 9 7KHUHVXOWLVDVWULQJRIUDQGRPQXPEHUVIROORZHG


DFKLHYHDFHUWDLQUHVXOWZLWKLQ\RXURZQFRGHDV E\WKHYDOXHRI3LDVSXOOHGIURPWKHPDWKPRGXOH
ZHoYHSUHYLRXVO\H[SHULPHQWHGZLWK)RUH[DPSOH XVLQJWKHSULQW PDWKSL IXQFWLRQ<RXFDQDOVRSXOOLQFHUWDLQ
IXQFWLRQVIURPDPRGXOHE\XVLQJWKHIURPDQGLPSRUWFRPPDQGV
LPSRUWUDQGRP
VXFKDV
%ULQJVLQWKHFRGHIURPWKHUDQGRPQXPEHUJHQHUDWRUPRGXOH<RX
IURPUDQGRPLPSRUWUDQGLQW
FDQWKHQXVHWKLVPRGXOHWRFUHDWHVRPHWKLQJOLNH
IRULLQUDQJH  
IRULLQUDQJH  
SULQW UDQGLQW 
SULQW UDQGRPUDQGLQW 

STEP 7 7KLVFRGHZKHQVDYHGDQGH[HFXWHGZLOOGLVSOD\WHQ STEP 10 7KLVKHOSVFUHDWHDPRUHVWUHDPOLQHGDSSURDFKWR


UDQGRPQXPEHUVIURPWR<RXFDQSOD\DURXQG SURJUDPPLQJ<RXFDQDOVRXVHLPSRUWPRGXOH 
ZLWKWKHFRGHWRGLVSOD\PRUHRUOHVVDQGIURPDJUHDWRUOHVVHU ZKLFKZLOOLPSRUWHYHU\WKLQJGHƬQHGZLWKLQWKHQDPHGPRGXOH
UDQJH)RUH[DPSOH +RZHYHULWoVRIWHQUHJDUGHGDVDZDVWHRIUHVRXUFHVEXWLWZRUNV
QRQHWKHOHVV)LQDOO\PRGXOHVFDQEHLPSRUWHGDVDOLDVHV
LPSRUWUDQGRP
LPSRUWPDWKDVP
IRULLQUDQJH  
SULQW UDQGRPUDQGLQW  SULQW PSL
2IFRXUVHDGGLQJFRPPHQWVKHOSVWRWHOORWKHUVZKDWoVJRLQJRQ

ZZZSFOSXEOLFDWLRQVFRP 43
Index

44 ZZZSFOSXEOLFDWLRQVFRP
Working with Data

Data is everything. With it you can


display, control, add, remove, create
and manipulate Python to your every
demand. Over these coming pages we
look at how you can create lists, tuples,
dictionaries and multi-dimensional lists;
and see how to use them to forge exciting
and useful programs.
Then, you can learn how to use date
DQGWLPHIXQFWLRQVZULWHWRƬOHVLQ\RXU
system and even create graphical user
interfaces that take your coding skills to
new levels and into new project ideas.

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

WORKING WITH LISTS


Lists are extremely handy in Python. A list can be strings, integers and also variables. You can even include functions in lists,
and lists within lists.

STEP 1 $OLVWLVDVHTXHQFHRIGDWDYDOXHVFDOOHGLWHPV<RX STEP 3 <RXFDQDOVRDFFHVVRULQGH[WKHODVWLWHPLQDOLVWE\


FUHDWHWKHQDPHRI\RXUOLVWIROORZHGE\DQHTXDOV XVLQJWKHPLQXVVLJQEHIRUHWKHLWHPQXPEHU>@
VLJQWKHQVTXDUHEUDFNHWVDQGWKHLWHPVVHSDUDWHGE\FRPPDV RUWKHVHFRQGWRODVWLWHPZLWK>@DQGVRRQ7U\LQJWRUHIHUHQFHDQ
QRWHWKDWVWULQJVXVHTXRWHV LWHPWKDWLVQoWLQWKHOLVWVXFKDV>@ZLOOUHWXUQDQHUURU
QXPEHUV >@ QXPEHUV>@
P\WKLFDOBFUHDWXUHV²>´8QLFRUQµ´%DOURJµ P\WKLFDOBFUHDWXUHV>@
´9DPSLUHµ´'UDJRQµ´0LQRWDXUµ@

STEP 2 2QFH\RXoYHGHƬQHG\RXUOLVW\RXFDQFDOOHDFK STEP 4 6OLFLQJLVVLPLODUWRLQGH[LQJEXW\RXFDQUHWULHYH


E\UHIHUHQFLQJLWVQDPHIROORZHGE\DQXPEHU/LVWV PXOWLSOHLWHPVLQDOLVWE\VHSDUDWLQJLWHPQXPEHUV
VWDUWWKHƬUVWLWHPHQWU\DVIROORZHGE\DQGVRRQ ZLWKDFRORQ)RUH[DPSOH
)RUH[DPSOH
QXPEHUV>@
QXPEHUV
:LOORXWSXWWKHDQGEHLQJLWHPQXPEHUVDQG1RWHWKDWWKH
7RFDOOXSWKHHQWLUHFRQWHQWVRIWKHOLVW UHWXUQHGYDOXHVGRQoWLQFOXGHWKHVHFRQGLQGH[SRVLWLRQ DV\RX
ZRXOGQXPEHUV>@WRUHWXUQDQG 
QXPEHUV>@
7RFDOOWKHWKLUGIURP]HURLWHPLQWKHOLVW LQWKLVFDVH 

46 3\WKRQ &&RGLQJ
/LVWV

STEP 5 <RXFDQXSGDWHLWHPVZLWKLQDQH[LVWLQJOLVWUHPRYH STEP 8 <RXFDQYLHZZKDWFDQEHGRQHZLWKOLVWVE\HQWHULQJ


LWHPVDQGHYHQMRLQOLVWVWRJHWKHU)RUH[DPSOHWR GLU OLVW LQWRWKH6KHOO7KHRXWSXWLVWKHDYDLODEOH
MRLQWZROLVWV\RXFDQXVH IXQFWLRQVIRUH[DPSOHLQVHUWDQGSRSDUHXVHGWRDGGDQGUHPRYH
LWHPVDWFHUWDLQSRVLWLRQV7RLQVHUWWKHQXPEHUDWLWHPLQGH[
HYHU\WKLQJ QXPEHUVP\WKLFDOBFUHDWXUHV
QXPEHUVLQVHUW 
7KHQYLHZWKHFRPELQHGOLVWZLWK
7RUHPRYHLW
HYHU\WKLQJ
QXPEHUVSRS 

STEP 6 ,WHPVFDQEHDGGHGWRDOLVWE\HQWHULQJ STEP 9 <RXDOVRXVHWKHOLVWIXQFWLRQWREUHDNDVWULQJGRZQ


LQWRLWVFRPSRQHQWV)RUH[DPSOH
QXPEHUV QXPEHUV>@
OLVW ´'DYLGµ
2UIRUVWULQJV
%UHDNVWKHQDPH'DYLGLQWRn'onDonYonLonGo7KLVFDQWKHQEHSDVVHG
P\WKLFDOBFUHDWUHV P\WKLFDOBFUHDWXUHV>´*ULIÀQµ@
WRDQHZOLVW
2UE\XVLQJWKHDSSHQGIXQFWLRQ
QDPH OLVW ´'DYLG+D\ZDUGµ
P\WKLFDOBFUHDWXUHVDSSHQG ´1HVVLHµ QDPH
QXPEHUVDSSHQG   DJH >@
XVHU QDPHDJH
XVHU

STEP 7 5HPRYDORILWHPVFDQEHGRQHLQWZRZD\V7KHƬUVW STEP 10 %DVHGRQWKDW\RXFDQFUHDWHDSURJUDPWRVWRUH


LVE\WKHLWHPQXPEHU VRPHRQHoVQDPHDQGDJHDVDOLVW
GHOQXPEHUV>@ QDPH LQSXW ´:KDW·V\RXUQDPH"´
OQDPH OLVW QDPH
$OWHUQDWLYHO\E\LWHPQDPH
DJH LQW LQSXW ´+RZROGDUH\RX´
P\WKLFDOBFUHDWXUHVUHPRYH ´1HVVLHµ  ODJH >DJH@
XVHU OQDPHODJH
7KHFRPELQHGQDPHDQGDJHOLVWLVFDOOHGXVHUZKLFKFDQEHFDOOHG
E\HQWHULQJXVHULQWRWKH6KHOO([SHULPHQWDQGVHHZKDW\RXFDQGR

ZZZSFOSXEOLFDWLRQVFRP 47
:RUNLQJZLWK'DWD

7XSOHV
7XSOHVDUHYHU\PXFKLGHQWLFDOWROLVWV+RZHYHUZKHUHOLVWVFDQEHXSGDWHGGHOHWHGRU
FKDQJHGLQVRPHZD\DWXSOHUHPDLQVDFRQVWDQW7KLVLVFDOOHGLPPXWDEOHDQGWKH\oUH
SHUIHFWIRUVWRULQJƬ[HGGDWDLWHPV

THE IMMUTABLE TUPLE


Reasons for having tuples vary depending on what the program is intended to do. Normally, a tuple is reserved for something
special but they’re also used for example, in an adventure game, where non-playing character names are stored.

STEP 1 $WXSOHLVFUHDWHGWKHVDPHZD\DVDOLVWEXWLQWKLV STEP 3 <RXFDQFUHDWHJURXSHGWXSOHVLQWROLVWVWKDWFRQWDLQ


LQVWDQFH\RXXVHFXUYHGEUDFNHWVLQVWHDGRIVTXDUH PXOWLSOHVHWVRIGDWD)RULQVWDQFHKHUHLVDWXSOH
EUDFNHWV)RUH[DPSOH FDOOHG13& 1RQ3OD\DEOH&KDUDFWHUV FRQWDLQLQJWKHFKDUDFWHUQDPH
DQGWKHLUFRPEDWUDWLQJIRUDQDGYHQWXUHJDPH
PRQWKV ´-DQXDU\µ´)HEUXDU\µ´0DUFKµ´$SULOµ
´0D\µ´-XQHµ 13& > ´&RQDQµ  ´%HOLWµ  ´9DOHULDµ
PRQWKV  @

STEP 2 -XVWDVZLWKOLVWVWKHLWHPVZLWKLQDQDPHGWXSOHFDQ STEP 4 (DFKRIWKHVHGDWDLWHPVFDQEHDFFHVVHGDVD


EHLQGH[HGDFFRUGLQJWRWKHLUSRVLWLRQLQWKHGDWD ZKROHE\HQWHULQJ13&LQWRWKH6KHOORUWKH\FDQEH
UDQJHLH LQGH[HGDFFRUGLQJWRWKHLUSRVLWLRQ13&>@<RXFDQDOVRLQGH[WKH
LQGLYLGXDOWXSOHVZLWKLQWKH13&OLVW
PRQWKV>@
PRQWKV>@ 13&>@>@
+RZHYHUDQ\DWWHPSWDWGHOHWLQJRUDGGLQJWRWKHWXSOHZLOOUHVXOW :LOOGLVSOD\
LQDQHUURULQWKH6KHOO

48 3\WKRQ &&RGLQJ
7XSOHV

STEP 5 ,WoVZRUWKQRWLQJWKDWZKHQUHIHUHQFLQJPXOWLSOH STEP 8 1RZXQSDFNWKHWXSOHLQWRWZR


WXSOHVZLWKLQDOLVWWKHLQGH[LQJLVVOLJKWO\GLƪHUHQW FRUUHVSRQGLQJYDULDEOHV
IURPWKHQRUP<RXZRXOGH[SHFWWKHFRPEDWUDWLQJRIWKH
QDPHFRPEDWBUDWLQJ 13&
FKDUDFWHU9DOHULDWREH13&>@>@EXWLWoVQRW,WoVDFWXDOO\
<RXFDQQRZFKHFNWKHYDOXHVE\HQWHULQJQDPHDQGFRPEDWBUDWLQJ
13&>@>@

STEP 6 7KLVPHDQVRIFRXUVHWKDWWKHLQGH[LQJIROORZVWKXV STEP 9 5HPHPEHUDVZLWKOLVWV\RXFDQDOVRLQGH[WXSOHV


XVLQJQHJDWLYHQXPEHUVZKLFKFRXQWEDFNZDUGV
 
IURPWKHHQGRIWKHGDWDOLVW)RURXUH[DPSOHXVLQJWKHWXSOHZLWK
 
PXOWLSOHGDWDLWHPV\RXZRXOGUHIHUHQFHWKH9DOHULDFKDUDFWHUZLWK
 
  13&>@>@

:KLFKDV\RXFDQLPDJLQHJHWVDOLWWOHFRQIXVLQJZKHQ\RXoYHJRWD
ORWRIWXSOHGDWDWRGHDOZLWK

STEP 7 7XSOHVWKRXJKXWLOLVHDIHDWXUHFDOOHGXQSDFNLQJ STEP 10 <RXFDQXVHWKHPD[DQGPLQIXQFWLRQVWRƬQGWKH


ZKHUHWKHGDWDLWHPVVWRUHGZLWKLQDWXSOHDUH KLJKHVWDQGORZHVWYDOXHVRIDWXSOHFRPSRVHGRI
DVVLJQHGYDULDEOHV)LUVWFUHDWHWKHWXSOHZLWKWZRLWHPV QDPHDQG QXPEHUV)RUH[DPSOH
FRPEDWUDWLQJ 
QXPEHUV 
13& ´&RQDQµ
7KHQXPEHUVFDQEHLQWHJHUVDQGƮRDWV7RRXWSXWWKHKLJKHVWDQG
ORZHVWXVH
SULQW PD[ QXPEHUV
SULQW PLQ QXPEHUV

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.

STEP 1 /HWoVVD\\RXZDQWWRFUHDWHDSKRQHERRNLQ3\WKRQ STEP 3 $VZLWKOLVWVDQGWXSOHV\RXFDQFKHFNWKHFRQWHQWV


<RXZRXOGFUHDWHWKHGLFWLRQDU\QDPHDQGHQWHU RIDGLFWLRQDU\E\JLYLQJWKHGLFWLRQDU\DQDPH
WKHGDWDLQFXUO\EUDFNHWVVHSDUDWLQJWKHNH\DQGYDOXHE\DFRORQ SKRQHERRNLQWKLVH[DPSOH7KLVZLOOGLVSOD\WKHGDWDLWHPV\RXoYH
.H\9DOXH)RUH[DPSOH HQWHUHGLQDVLPLODUIDVKLRQWRDOLVWZKLFK\RXoUHQRGRXEWIDPLOLDU
ZLWKE\QRZ
SKRQHERRN ^´(PPDµ´'DQLHOµ´+DQQDKµ
`

STEP 2 -XVWDVZLWKPRVWOLVWVWXSOHVDQGVRRQVWULQJV STEP 4 7KHEHQHƬWRIXVLQJDGLFWLRQDU\LVWKDW\RX


QHHGEHHQFORVHGLQTXRWHV VLQJOHRUGRXEOH  FDQHQWHUWKHNH\WRLQGH[WKHYDOXH8VLQJWKH
ZKLOVWLQWHJHUVFDQEHOHIWRSHQ5HPHPEHUWKDWWKHYDOXHFDQEH SKRQHERRNH[DPSOHIURPWKHSUHYLRXVVWHSV\RXFDQHQWHU
HLWKHUDVWULQJRUDQLQWHJHU\RXMXVWQHHGWRHQFORVHWKHUHOHYDQW
SKRQHERRN>´(PPDµ@
RQHLQTXRWHV
SKRQHERRN>´+DQQDKµ@
SKRQHERRN ^´'DYLGµ´µ`

50 3\WKRQ &&RGLQJ
'LFWLRQDULHV

STEP 5 $GGLQJWRDGLFWLRQDU\LVHDV\WRR<RXFDQLQFOXGH STEP 8 1H[W\RXQHHGWRGHƬQHWKHXVHULQSXWVDQG


DQHZGDWDLWHPHQWU\E\DGGLQJWKHQHZNH\DQG YDULDEOHVRQHIRUWKHSHUVRQoVQDPHWKHRWKHU
YDOXHLWHPVOLNH IRUWKHLUSKRQHQXPEHU OHWoVNHHSLWVLPSOHWRDYRLGOHQJWK\
3\WKRQFRGH 
SKRQHERRN>´'DYLGµ@ ´µ
SKRQHERRN QDPH LQSXW ´(QWHUQDPH´
QXPEHU LQW LQSXW ´(QWHUSKRQHQXPEHU´

STEP 6 <RXFDQDOVRUHPRYHLWHPVIURPDGLFWLRQDU\E\ STEP 9 1RWHZHoYHNHSWWKHQXPEHUDVDQLQWHJHULQVWHDG


LVVXLQJWKHGHOFRPPDQGIROORZHGE\WKHLWHPoV RIDVWULQJHYHQWKRXJKWKHYDOXHFDQEHERWK
NH\WKHYDOXHZLOOEHUHPRYHGDVZHOOVLQFHERWKZRUNDVDSDLURI DQLQWHJHURUDVWULQJ1RZ\RXQHHGWRDGGWKHXVHUoVLQSXWWHG
GDWDLWHPV YDULDEOHVWRWKHQHZO\FUHDWHGEODQNGLFWLRQDU\8VLQJWKHVDPH
SURFHVVDVLQ6WHS\RXFDQHQWHU
GHOSKRQHERRN>´'DYLGµ@
SKRQHERRN>QDPH@ QXPEHU

STEP 7 7DNLQJWKLVDVWHSIXUWKHUKRZDERXWFUHDWLQJD STEP 10 1RZZKHQ\RXVDYHDQGH[HFXWHWKHFRGH3\WKRQ


SLHFHRIFRGHWKDWZLOODVNWKHXVHUIRUWKHGLFWLRQDU\ ZLOODVNIRUDQDPHDQGDQXPEHU,WZLOOWKHQLQVHUW
NH\DQGYDOXHLWHPV"&UHDWHDQHZ(GLWRULQVWDQFHDQGVWDUWE\ WKRVHHQWULHVLQWRWKHSKRQHERRNGLFWLRQDU\ZKLFK\RXFDQWHVWE\
FRGLQJLQDQHZEODQNGLFWLRQDU\ HQWHULQJLQWRWKH6KHOO
SKRQHERRN ^` SKRQHERRN
SKRQHERRN>´'DYLGµ@
,IWKHQXPEHUQHHGVWRFRQWDLQVSDFHV\RXQHHGWRPDNHLWDVWULQJ
VRUHPRYHWKHLQWSDUWRIWKHLQSXW

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.

STEP 1 7KHPDLQWRROLQWKHVWULQJIXQFWLRQDUVHQDOLVVSOLW  STEP 3 1RWHWKDWWKHWH[WVSOLWSDUWKDVWKHEUDFNHWV


:LWKLW\RXoUHDEOHWRVSOLWDSDUWDVWULQJRIGDWD TXRWHVWKHQDVSDFHIROORZHGE\FORVLQJTXRWHV
EDVHGRQWKHDUJXPHQWZLWKLQWKHEUDFNHWV)RUH[DPSOHKHUHoVD DQGEUDFNHWV7KHVSDFHLVWKHVHSDUDWRULQGLFDWLQJWKDWHDFKOLVW
VWULQJZLWKWKUHHLWHPVHDFKVHSDUDWHGE\DVSDFH LWHPHQWU\LVVHSDUDWHGE\DVSDFH/LNHZLVH&69 &RPPD6HSDUDWHG
9DOXH FRQWHQWKDVDFRPPDVR\RXoGXVH
WH[W µ'DQLHO+DQQDK(PPDµ
WH[W µ-DQXDU\)HEUXDU\0DUFK$SULO0D\-XQHµ
PRQWKV WH[WVSOLW ´µ
PRQWKV

STEP 2 1RZOHWoVWXUQWKHVWULQJLQWRDOLVWDQGVSOLWWKH STEP 4 <RXoYHSUHYLRXVO\VHHQKRZ\RXFDQVSOLWDVWULQJ


FRQWHQWDFFRUGLQJO\ LQWRLQGLYLGXDOOHWWHUVDVDOLVWXVLQJDQDPH
QDPHV WH[WVSOLW ´´ QDPH OLVW ´'DYLGµ
QDPH
7KHQHQWHUWKHQDPHRIWKHQHZOLVWQDPHVWRVHHWKHWKUHHLWHPV
7KHUHWXUQHGYDOXHLVn'onDonYonLonGo:KLOVWLWPD\VHHPDOLWWOH
XVHOHVVXQGHURUGLQDU\FLUFXPVWDQFHVLWFRXOGEHKDQG\IRUFUHDWLQJ
DVSHOOLQJJDPHIRUH[DPSOH

52 3\WKRQ &&RGLQJ
6SOLWWLQJDQG-RLQLQJ6WULQJV

STEP 5 7KHRSSRVLWHRIWKHVSOLWIXQFWLRQLVMRLQZKHUH STEP 8 $VZLWKWKHVSOLWIXQFWLRQWKHVHSDUDWRUGRHVQoW


\RXZLOOKDYHVHSDUDWHLWHPVLQDVWULQJDQGFDQMRLQ KDYHWREHDVSDFHLWFDQDOVREHDFRPPDDIXOO
WKHPDOOWRJHWKHUWRIRUPDZRUGRUMXVWDFRPELQDWLRQRILWHPV VWRSDK\SKHQRUZKDWHYHU\RXOLNH
GHSHQGLQJRQWKHSURJUDP\RXoUHZULWLQJ)RULQVWDQFH
FRORXUV >´5HGµ´*UHHQµ´%OXHµ@
DOSKDEHW µµMRLQ >´DµµEµµFµµGµµHµ@ FRO µµMRLQ FRORXUV
DOSKDEHW col
7KLVZLOOGLVSOD\nDEFGHoLQWKH6KHOO

STEP 6 <RXFDQWKHUHIRUHDSSO\MRLQWRWKHVHSDUDWHGQDPH STEP 9 7KHUHoVVRPHLQWHUHVWLQJIXQFWLRQV\RXDSSO\WRD


\RXPDGHLQ6WHSFRPELQLQJWKHOHWWHUVDJDLQWR VWULQJVXFKDVFDSLWDOL]HDQGWLWOH)RUH[DPSOH
IRUPWKHQDPH
WLWOH µFRQDQWKHFLPPHULDQµ
QDPH µµMRLQ QDPH WLWOHFDSLWDOL]H
QDPH WLWOHWLWOH
:HoYHMRLQHGWKHVWULQJEDFNWRJHWKHUDQGUHWDLQHGWKHOLVWFDOOHG
QDPHSDVVLQJLWWKURXJKWKHMRLQIXQFWLRQ

STEP 7 $JRRGH[DPSOHRIXVLQJWKHMRLQIXQFWLRQLVZKHQ STEP 10 <RXFDQDOVRXVHORJLFRSHUDWRUVRQVWULQJV


\RXKDYHDOLVWRIZRUGV\RXZDQWWRFRPELQHLQWR ZLWKWKHnLQoDQGnQRWLQoIXQFWLRQV7KHVHHQDEOH
DVHQWHQFH \RXWRFKHFNLIDVWULQJFRQWDLQV RUGRHVQRWFRQWDLQ DVHTXHQFH
RIFKDUDFWHUV
OLVW >´&RQDQµ´UDLVHGµ´KLVµ´PLJKW\µ´VZRUGµ
´DQGµ´VWUXFNµ´WKHµ´GHPRQµ@ PHVVDJH µ+DYHDQLFHGD\µ
WH[W µ´MRLQ OLVW ´QLFHµLQPHVVDJH
WH[W
µEDGµQRWLQPHVVDJH
1RWHWKHVSDFHEHWZHHQWKHTXRWHVEHIRUHWKHMRLQIXQFWLRQ ZKHUH ´GD\µQRWLQPHVVDJH
WKHUHZHUHQRVSDFHVLQWKH6WHSoVMRLQ  ´QLJKWµLQPHVVDJH

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.

STEP 1 7KHEDVLFIRUPDWWLQJLQ3\WKRQLVWRFDOOHDFK STEP 3 <RXFDQRIFRXUVHDOVRLQFOXGHLQWHJHUVLQWRWKHPL[


YDULDEOHLQWRWKHVWULQJXVLQJWKHFXUO\EUDFNHWV
QXPEHU 
QDPH µ&RQDQµ SULQW ´^`RI^`ZDVDVNLOOHGPHUFHQDU\
SULQW ´7KHEDUEDULDQKHURRIWKH+\ERULDQ$JHLV DQGWKLHIWRR+HRQFHVWROH^`JROGIURPD
^`µIRUPDW QDPH PHUFKDQWµIRUPDW QDPHSODFHQXPEHU

STEP 2 5HPHPEHUWRFORVHWKHSULQWIXQFWLRQZLWKWZRVHWV STEP 4 7KHUHDUHPDQ\GLƪHUHQWZD\VWRDSSO\VWULQJ


RIEUDFNHWVDV\RXoYHHQFDVHGWKHYDULDEOHLQRQH IRUPDWWLQJVRPHDUHTXLWHVLPSOHDVZHoYHVKRZQ
DQGWKHSULQWIXQFWLRQLQDQRWKHU<RXFDQLQFOXGHPXOWLSOHFDVHVRI \RXKHUHRWKHUVFDQEHVLJQLƬFDQWO\PRUHFRPSOH[,WDOOGHSHQGV
VWULQJIRUPDWWLQJLQDVLQJOHSULQWIXQFWLRQ RQZKDW\RXZDQWIURP\RXUSURJUDP$JRRGSODFHWRUHIHUHQFH
IUHTXHQWO\UHJDUGLQJVWULQJIRUPDWWLQJLVWKH3\WKRQ'RFVZHESDJH
QDPH µ&RQDQµ
IRXQGDWwww.docs.python.org/3.1/library/string.html+HUH\RX
SODFH µ&LPPHULDµ
ZLOOƬQGWRQVRIKHOS
SULQW ´^`KDLOHGIURPWKH1RUWKLQDFROGODQG
NQRZQDV^`µIRUPDW QDPHSODFH 

54 3\WKRQ &&RGLQJ
)RUPDWWLQJ6WULQJV

STEP 5 ,QWHUHVWLQJO\\RXFDQUHIHUHQFHDOLVWXVLQJWKHVWULQJ STEP 8 <RXFDQDOVRSULQWRXWWKHFRQWHQWRIDXVHUoVLQSXW


IRUPDWWLQJIXQFWLRQ<RXQHHGWRSODFHDQDVWHULVNLQ LQWKHVDPHIDVKLRQ
IURQWRIWKHOLVWQDPH
QDPH LQSXW ´:KDW·V\RXUQDPH"´
QXPEHUV  SULQW ´+HOOR^`µIRUPDW QDPH
SULQW ´6RPHQXPEHUV^`^`^`^`^`µ
IRUPDW QXPEHUV

STEP 6 :LWKLQGH[LQJLQOLVWVWKHVDPHDSSOLHVWRFDOOLQJD STEP 9 <RXFDQH[WHQGWKLVVLPSOHFRGHH[DPSOHWRGLVSOD\


OLVWXVLQJVWULQJIRUPDWWLQJ<RXFDQLQGH[HDFKLWHP WKHƬUVWOHWWHULQDSHUVRQoVHQWHUHGQDPH
DFFRUGLQJWRLWVSRVLWLRQ IURPWRKRZHYHUPDQ\DUHSUHVHQW 
QDPH LQSXW ´:KDW·V\RXUQDPH"´
QXPEHUV  SULQW ´+HOOR^`µIRUPDW QDPH
SULQW ´0RUHQXPEHUV^`^`^` OQDPH OLVW QDPH
^`µIRUPDW QXPEHUV  SULQW ´7KHÀUVWOHWWHURI\RXUQDPHLVD^`µ
IRUPDW OQDPH

STEP 7 $QGDV\RXSUREDEO\VXVSHFW\RXFDQPL[VWULQJV STEP 10 <RXFDQDOVRFDOOXSRQDSDLURIOLVWVDQGUHIHUHQFH


DQGLQWHJHUVLQDVLQJOHOLVWWREHFDOOHGLQWKH WKHPLQGLYLGXDOO\ZLWKLQWKHVDPHSULQWIXQFWLRQ
IRUPDWIXQFWLRQ /RRNLQJEDFNWKHFRGHIURP6WHS\RXFDQDOWHULWZLWK
FKDUDFWHUV >´&RQDQµ´%HOLWµ´9DOHULDµ QDPHV >´&RQDQµ´%HOLWµ´9DOHULDµ@
@ DJHV >@
SULQW ´^`LV^`\HDUVROG:KHUHDV^`LV^`
&UHDWLQJWZROLVWV1RZ\RXFDQFDOOHDFKOLVWDQGLQGLYLGXDOLWHPV
\HDUVROGµIRUPDW FKDUDFWHUV 
SULQW ´^>@`LV^>@`\HDUVROG:KHUHDV^>@`
LV^>@`\HDUVROGµIRUPDW QDPHVDJHV

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.

STEP 1 )LUVW\RXQHHGWRLPSRUWWKHWLPHPRGXOH,WoVRQH STEP 3 <RXFDQVHHWKHVWUXFWXUHRIKRZWLPHLVSUHVHQWHG


WKDWoVEXLOWLQWR3\WKRQVR\RXVKRXOGQoWQHHGWR E\HQWHULQJ
GURSLQWRDFRPPDQGSURPSWDQGSLSLQVWDOOLW2QFHLWoVLPSRUWHG
WLPHORFDOWLPH
\RXFDQFDOOWKHFXUUHQWWLPHDQGGDWHZLWKDVLPSOHFRPPDQG
7KHRXWSXWLVGLVSOD\HGDVVXFK¶WLPHVWUXFWBWLPH WPB
LPSRUWWLPH
\HDU WPBPRQ WPBPGD\ WPBKRXU 
WLPHDVFWLPH
WPBPLQ WPBVHF WPBZGD\ WPB\GD\ WPB
LVGVW  ·REYLRXVO\GHSHQGHQWRQ\RXUFXUUHQWWLPHDVRSSRVHG
WRWKHWLPHVKRZQDERYH

STEP 2 7KHWLPHIXQFWLRQLVVSOLWLQWRQLQHWXSOHVWKHVHDUH STEP 4 7KHUHDUHQXPHURXVIXQFWLRQVEXLOWLQWRWKHWLPH


GLYLGHGXSLQWRLQGH[HGLWHPVDVZLWKDQ\RWKHU PRGXOH2QHRIWKHPRVWFRPPRQRIWKHVHLV
WXSOHDQGVKRZQLQWKHVFUHHQVKRWEHORZ VWUIWLPH :LWKLW\RXoUHDEOHWRSUHVHQWDZLGHUDQJHRIDUJXPHQWV
DVLWFRQYHUWVWKHWLPHWXSOHLQWRDVWULQJ)RUH[DPSOHWRGLVSOD\WKH
FXUUHQWGD\RIWKHZHHN\RXFDQXVH
WLPHVWUIWLPH ¶$·

56 3\WKRQ &&RGLQJ
'DWHDQG7LPH

STEP 5 7KLVQDWXUDOO\PHDQV\RXFDQLQFRUSRUDWHYDULRXV STEP 8 <RXVDZDWWKHHQGRIWKHSUHYLRXVVHFWLRQLQWKH


IXQFWLRQVLQWR\RXURZQFRGHVXFKDV FRGHWRFDOFXODWH3LWRKRZHYHUPDQ\GHFLPDOSODFHV
WKHXVHUVZDQWHG\RXFDQWLPHDSDUWLFXODUHYHQWLQ3\WKRQ7DNH
WLPHVWUIWLPH ´Dµ
WKHFRGHIURPDERYHDQGDOWHULWVOLJKWO\E\LQFOXGLQJ
WLPHVWUIWLPH ´%µ
WLPHVWUIWLPH ´Eµ VWDUWBWLPH WLPHWLPH
WLPHVWUIWLPH ´+µ
7KHQWKHUHoV
WLPHVWUIWLPH ´+0µ
HQGWLPH WLPHWLPH VWDUWBWLPH

STEP 6 1RWHWKHODVWWZRHQWULHVZLWK+DQG+0DV STEP 9 7KHRXWSXWZLOOORRNVLPLODUWRWKHVFUHHQVKRWEHORZ


\RXFDQVHHWKHVHDUHWKHKRXUVDQGPLQXWHVDQGDV 7KHWLPHUIXQFWLRQQHHGVWREHHLWKHUVLGHRIWKH
WKHODVWHQWU\LQGLFDWHVHQWHULQJWKHPDV+0GRHVQoWGLVSOD\WKH LQSXWVWDWHPHQWDVWKDWoVZKHQWKHYDULDEOHQDPHLVEHLQJFUHDWHG
WLPHFRUUHFWO\LQWKH6KHOO<RXFDQHDVLO\UHFWLI\WKLVZLWK GHSHQGLQJRQKRZORQJWKHXVHUWRRNWRORJLQ7KHOHQJWKRIWLPHLV
WKHQGLVSOD\HGRQWKHODVWOLQHRIWKHFRGHDVWKHHQGWLPHYDULDEOH
WLPHVWUIWLPH ´+0µ 

STEP 7 7KLVPHDQV\RXoUHJRLQJWREHDEOHWRGLVSOD\ STEP 10 7KHUHoVDORWWKDWFDQEHGRQHZLWKWKHWLPH


HLWKHUWKHFXUUHQWWLPHRUWKHWLPHZKHQ PRGXOHVRPHRILWLVTXLWHFRPSOH[WRRVXFKDV
VRPHWKLQJRFFXUUHGVXFKDVDXVHUHQWHULQJWKHLUQDPH7U\WKLV GLVSOD\LQJWKHQXPEHURIVHFRQGVVLQFH-DQXDU\VW,I\RX
FRGHLQWKH(GLWRU ZDQWWRGULOOGRZQIXUWKHULQWRWKHWLPHPRGXOHWKHQLQWKH6KHOO
HQWHUKHOS WLPH WRGLVSOD\WKHFXUUHQW3\WKRQYHUVLRQKHOSƬOH
LPSRUWWLPH
IRUWKHWLPHPRGXOH
QDPH LQSXW ´(QWHUORJLQQDPH´
SULQW ´:HOFRPHµQDPH´?Gµ
SULQW ´8VHUµQDPH´ORJJHGLQDWµWLPH
VWUIWLPH ´+0µ
7U\WRH[WHQGLWIXUWKHUWRLQFOXGHGD\PRQWK\HDUDQGVRRQ

ZZZSFOSXEOLFDWLRQVFRP 57
:RUNLQJZLWK'DWD

2SHQLQJ)LOHV
,Q3\WKRQ\RXFDQUHDGWH[WDQGELQDU\ƬOHVLQ\RXUSURJUDPV<RXFDQDOVRZULWHWRƬOH
ZKLFKLVVRPHWKLQJZHZLOOORRNDWQH[W5HDGLQJDQGZULWLQJWRƬOHVHQDEOHV\RXWR
RXWSXWDQGVWRUHGDWDIURP\RXUSURJUDPV

OPEN, READ AND WRITE


,Q3\WKRQ\RXFUHDWHDƬOHREMHFWVLPLODUWRFUHDWLQJDYDULDEOHRQO\SDVVLQWKHƬOHXVLQJWKHRSHQ IXQFWLRQ)LOHVDUHXVXDOO\
categorised as text or binary.

STEP 1 6WDUWE\HQWHULQJVRPHWH[WLQWR\RXUV\VWHPoVWH[W STEP 3 ,I\RXQRZHQWHUSRHPLQWRWKH6KHOO\RXZLOOJHW


HGLWRU7KHWH[WHGLWRULVEHVWQRWDZRUGSURFHVVRU VRPHLQIRUPDWLRQUHJDUGLQJWKHWH[WƬOH\RXoYHMXVW
DVZRUGSURFHVVRUVLQFOXGHEDFNJURXQGIRUPDWWLQJDQGRWKHU DVNHGWREHRSHQHG<RXFDQQRZXVHWKHSRHPYDULDEOHWRUHDGWKH
HOHPHQWV,QRXUH[DPSOHZHKDYHWKHSRHP7KH&LPPHULDQE\ FRQWHQWVRIWKHƬOH
5REHUW(+RZDUG<RXQHHGWRVDYHWKHƬOHDVSRHPW[W
SRHPUHDG 
1RWHWKDQDQHQWU\LQWKHWH[WUHSUHVHQWVDQHZOLQHDV\RX
XVHGSUHYLRXVO\

STEP 2 <RXXVHWKHRSHQ IXQFWLRQWRSDVVWKHƬOHLQWRD STEP 4 ,I\RXHQWHUSRHPUHDG DVHFRQGWLPH\RXZLOO


YDULDEOHDVDQREMHFW<RXFDQQDPHWKHƬOHREMHFW QRWLFHWKDWWKHWH[WKDVEHHQUHPRYHGIURPWKHƬOH
DQ\WKLQJ\RXOLNHEXW\RXZLOOQHHGWRWHOO3\WKRQWKHQDPHDQG <RXZLOOQHHGWRHQWHUSRHP RSHQ ´KRPHSL'RFXPHQWV
ORFDWLRQRIWKHWH[WƬOH\RXoUHRSHQLQJ 3RHPW[Wµ DJDLQWRUHFUHDWHWKHƬOH7KLVWLPHKRZHYHUHQWHU
SRHP RSHQ ´KRPHSL'RFXPHQWV3RHPW[Wµ  SULQW SRHPUHDG 
7KLVWLPHWKHQHQWULHVDUHUHPRYHGLQIDYRXURIQHZOLQHVDQG
UHDGDEOHWH[W

58 3\WKRQ &&RGLQJ
2SHQLQJ)LOHV

STEP 5 -XVWDVZLWKOLVWVWXSOHVGLFWLRQDULHVDQGVRRQ STEP 8 ([WHQGLQJWKLVIXUWKHU\RXFDQXVHUHDGOLQHV WR


\RXoUHDEOHWRLQGH[LQGLYLGXDOFKDUDFWHUVRIWKH JUDEDOOWKHOLQHVRIWKHWH[WDQGVWRUHWKHPDV
WH[W)RUH[DPSOH PXOWLSOHOLVWV7KHVHFDQWKHQEHVWRUHGDVDYDULDEOH
SRHPUHDG  SRHP RSHQ ´KRPHSL'RFXPHQWV3RHPW[Wµ
OLQHV SRHPUHDGOLQHV
'LVSOD\VWKHƬUVWƬYHFKDUDFWHUVZKLOVWDJDLQHQWHULQJ
OLQHV>@
SRHPUHDG  OLQHV>@
OLQHV>@
:LOOGLVSOD\WKHQH[WƬYH(QWHULQJ  ZLOOGLVSOD\RQHFKDUDFWHUDW
DWLPH

STEP 6 6LPLODUO\\RXFDQGLVSOD\RQHOLQHRIWH[WDWDWLPHE\ STEP 9 <RXFDQDOVRXVHWKHIRUVWDWHPHQWWRUHDGWKHOLQHV


XVLQJWKHUHDGOLQH IXQFWLRQ)RUH[DPSOH RIWH[WEDFNWRXV
SRHP RSHQ ´KRPHSL'RFXPHQWV3RHPW[Wµ IRUOLQHVLQOLQHV
SRHPUHDGOLQH SULQW OLQHV
:LOOGLVSOD\WKHƬUVWOLQHRIWKHWH[WZLWK 6LQFHWKLVLV3\WKRQWKHUHDUHRWKHUZD\VWRSURGXFHWKHVDPHRXWSXW
SRHPUHDGOLQH SRHP RSHQ ´KRPHSL'RFXPHQWV3RHPW[Wµ
IRUOLQHVLQSRHP
'LVSOD\LQJWKHQH[WOLQHRIWH[WRQFHPRUH
SULQW OLQHV

STEP 7 <RXPD\KDYHJXHVVHGWKDW\RXFDQSDVVWKH STEP 10 /HWoVLPDJLQHWKDW\RXZDQWWRSULQWWKHWH[WRQH


UHDGOLQH IXQFWLRQLQWRDYDULDEOHWKXVDOORZLQJ\RX FKDUDFWHUDWDWLPHOLNHDQROGGRWPDWUL[SULQWHU
WRFDOOLWDJDLQZKHQQHHGHG ZRXOG<RXFDQXVHWKHWLPHPRGXOHPL[HGZLWKZKDW\RXoYHORRNHG
DWKHUH7U\WKLV
SRHP RSHQ ´KRPHSL'RFXPHQWV3RHPW[Wµ
OLQH SRHPUHDGOLQH LPSRUWWLPH
OLQH SRHP RSHQ ´KRPHSL'RFXPHQWV3RHPW[Wµ
OLQHV SRHPUHDG
IRUOLQHVLQOLQHV
SULQW OLQHVHQG µµ
WLPHVOHHS 
7KHRXWSXWLVIXQWRYLHZDQGHDVLO\LQFRUSRUDWHGLQWR\RXURZQFRGH

ZZZSFOSXEOLFDWLRQVFRP 59
:RUNLQJZLWK'DWD

:ULWLQJWR)LOHV
7KHDELOLW\WRUHDGH[WHUQDOƬOHVZLWKLQ3\WKRQLVFHUWDLQO\KDQG\EXWZULWLQJWRDƬOHLV
EHWWHUVWLOO8VLQJWKHZULWH IXQFWLRQ\RXoUHDEOHWRRXWSXWWKHUHVXOWVRIDSURJUDPWR
DƬOHWKDW\RXFDQWKHQUHDG EDFNLQWR3\WKRQ

WRITE AND CLOSE


7KHZULWH IXQFWLRQLVVOLJKWO\PRUHFRPSOH[WKDQUHDG $ORQJZLWKWKHƬOHQDPH\RXPXVWDOVRLQFOXGHDQDFFHVVPRGHZKLFK
GHWHUPLQHVZKHWKHUWKHƬOHLQTXHVWLRQLVLQUHDGRUZULWHPRGH

STEP 1 6WDUWE\RSHQLQJ,'/(DQGHQWHUWKHIROORZLQJ STEP 3 +RZHYHUWKHDFWXDOWH[WƬOHLVVWLOOEODQN \RXFDQ


FKHFNE\RSHQLQJLWXS 7KLVLVEHFDXVH\RXoYH
W RSHQ ´KRPHSL'RFXPHQWVWH[W
ZULWWHQWKHOLQHRIWH[WWRWKHƬOHREMHFWEXWQRWFRPPLWWHGLWWRWKH
W[WµµZµ
ƬOHLWVHOI3DUWRIWKHZULWH IXQFWLRQLVWKDW\RXQHHGWRFRPPLWWKH
&KDQJHWKHGHVWLQDWLRQIURPKRPHSL'RFXPHQWVWR\RXURZQ FKDQJHVWRWKHƬOH\RXFDQGRWKLVE\HQWHULQJ
V\VWHP7KLVFRGHZLOOFUHDWHDWH[WƬOHFDOOHGWH[WW[WLQZULWHPRGH
WFORVH
XVLQJWKHYDULDEOHnWo,IWKHUHoVQRƬOHRIWKDWQDPHLQWKHORFDWLRQLW
ZLOOFUHDWHRQH,IRQHDOUHDG\H[LWVLWZLOORYHUZULWHLWVREHFDUHIXO

STEP 2 <RXFDQQRZZULWHWRWKHWH[WƬOHXVLQJWKHZULWH  STEP 4 ,I\RXQRZRSHQWKHWH[WƬOHZLWKDWH[WHGLWRU


IXQFWLRQ7KLVZRUNVRSSRVLWHWRUHDG ZULWLQJOLQHV \RXFDQVHHWKDWWKHOLQH\RXFUHDWHGKDVEHHQ
LQVWHDGRIUHDGLQJWKHP7U\WKLV ZULWWHQWRWKHƬOH7KLVJLYHVXVWKHIRXQGDWLRQIRUVRPHLQWHUHVWLQJ
SRVVLELOLWLHVSHUKDSVWKHFUHDWLRQRI\RXURZQORJƬOHRUHYHQWKH
WZULWH ´<RXDZDNHLQDVPDOOVTXDUHURRP$
EHJLQQLQJRIDQDGYHQWXUHJDPH
VLQJOHWDEOHVWDQGVWRRQHVLGHWKHUHLVDORFNHG
GRRULQIURQWRI\RXµ
1RWHWKH,WoVWKHQXPEHURIFKDUDFWHUV\RXoYHHQWHUHG

60 3\WKRQ &&RGLQJ
:ULWLQJWR)LOHV

STEP 5 7RH[SDQGWKLVFRGH\RXFDQUHRSHQWKHƬOHXVLQJ STEP 8 <RXFDQSDVVYDULDEOHVWRDƬOHWKDW\RXoYHFUHDWHG


nDoIRUDFFHVVRUDSSHQGPRGH7KLVZLOODGGDQ\WH[W LQ3\WKRQ3HUKDSV\RXZDQWWKHYDOXHRI3LWREH
DWWKHHQGRIWKHRULJLQDOOLQHLQVWHDGRIZLSLQJWKHƬOHDQGFUHDWLQJ ZULWWHQWRDƬOH<RXFDQFDOO3LIURPWKHPDWKPRGXOHFUHDWHDQHZ
DQHZRQH)RUH[DPSOH ƬOHDQGSDVVWKHRXWSXWRI3LLQWRWKHQHZƬOH
W RSHQ ´KRPHSL'RFXPHQWVWH[WW[WµµDµ LPSRUWPDWK
WZULWH ´?Qµ SULQW ´9DOXHRI3LLV´PDWKSL
WZULWH ´<RXVWDQGDQGVXUYH\\RXUVXUURXQGLQJV SULQW ´?Q:ULWLQJWRDÀOHQRZ«µ
2QWRSRIWKHWDEOHLVVRPHPHDWDQGDFXSRI
ZDWHU?Qµ

STEP 6 <RXFDQNHHSH[WHQGLQJWKHWH[WOLQHE\OLQH STEP 9 1RZOHWoVFUHDWHDYDULDEOHFDOOHGSLDQGDVVLJQLWWKH


HQGLQJHDFKZLWKDQHZOLQH ?Q :KHQ\RXoUH YDOXHRI3L
GRQHƬQLVKWKHFRGHZLWKWFORVH DQGRSHQWKHƬOHLQDWH[W
SL PDWKSL
HGLWRUWRVHHWKHUHVXOWV
<RXDOVRQHHGWRFUHDWHDQHZƬOHLQZKLFKWRZULWH3LWR
WZULWH ´7KHGRRULVPDGHRIVROLGRDNZLWKLURQ
VWULSV,W·VEROWHGIURPWKHRXWVLGHORFNLQJ\RX W RSHQ ´KRPHSL'RFXPHQWVSLW[WµµZµ
LQ<RXDUHDSULVRQHU?Qµ
5HPHPEHUWRFKDQJH\RXUƬOHORFDWLRQWR\RXURZQSDUWLFXODU
WFORVH
V\VWHPVHWXS

STEP 7 7KHUHDUHYDULRXVW\SHVRIƬOHDFFHVVWRFRQVLGHU STEP 10 7RƬQLVK\RXFDQXVHVWULQJIRUPDWWLQJWRFDOOWKH


XVLQJWKHRSHQ IXQFWLRQ(DFKGHSHQGVRQKRZWKH YDULDEOHDQGZULWHLWWRWKHƬOHWKHQFRPPLWWKH
ƬOHLVDFFHVVHGDQGHYHQWKHSRVLWLRQRIWKHFXUVRU)RUH[DPSOHU FKDQJHVDQGFORVHWKHƬOH
RSHQVDƬOHLQUHDGDQGZULWHDQGSODFHVWKHFXUVRUDWWKHVWDUWRI
WZULWH ´9DOXHRI3LLV^`µIRUPDW SL
WKHƬOH
WFORVH
<RXFDQVHHIURPWKHUHVXOWVWKDW\RXoUHDEOHWRSDVVDQ\YDULDEOHWR
DƬOH

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.

STEP 1 <RXFDQFUHDWHDQH[FHSWLRQHUURUE\VLPSO\WU\LQJ STEP 3 <RXFDQXVHWKHIXQFWLRQVUDLVHH[FHSWLRQWRFUHDWH


WRGLYLGHDQXPEHUE\]HUR7KLVZLOOUHSRUWEDFN RXURZQHUURUKDQGOLQJFRGHZLWKLQ3\WKRQ/HWoV
ZLWKWKH=HUR'LYLVLRQ(UURU'LYLVLRQE\]HURPHVVDJHDVVHHQLQWKH DVVXPH\RXUFRGHKDV\RXZDUSLQJDURXQGWKHFRVPRVWRRPXFK
VFUHHQVKRW7KH=HUR'LYLVLRQ(UURUSDUWLVWKHH[FHSWLRQFODVVRI KRZHYHUUHVXOWVLQDZDUSFRUHEUHDFK7RVWRSWKHJDPHIURP
ZKLFKWKHUHDUHPDQ\ H[LWLQJGXHWRWKHZDUSFRUHJRLQJVXSHUQRYD\RXFDQFUHDWHD
FXVWRPH[FHSWLRQ
UDLVH([FHSWLRQ ´ZDUSFRUHEUHDFKµ

STEP 2 0RVWH[FHSWLRQV STEP 4 7RWUDSDQ\HUURUVLQWKHFRGH\RXFDQHQFDVHWKH


DUHUDLVHG SRWHQWLDOHUURUZLWKLQDWU\EORFN7KLVEORFNFRQVLVWV
DXWRPDWLFDOO\ZKHQ3\WKRQ RIWU\H[FHSWHOVHZKHUHWKHFRGHLVKHOGZLWKLQWU\WKHQLIWKHUHoV
FRPHVDFURVVVRPHWKLQJWKDWoV DQH[FHSWLRQGRVRPHWKLQJHOVHGRVRPHWKLQJHOVH
LQKHUHQWO\ZURQJZLWKWKHFRGH
+RZHYHU\RXFDQFUHDWH\RXU
RZQH[FHSWLRQVWKDWDUHGHVLJQHG
WRFRQWDLQWKHSRWHQWLDOHUURUDQG
UHDFWWRLWDVRSSRVHGWROHWWLQJ
WKHFRGHIDLO

62 3\WKRQ &&RGLQJ
([FHSWLRQV

STEP 5 )RUH[DPSOHXVHWKHGLYLGHE\]HURHUURU<RXFDQ STEP 8 1DWXUDOO\\RXFDQTXLFNO\Ƭ[WKHLVVXHE\FKDQJLQJ


FUHDWHDQH[FHSWLRQZKHUHWKHFRGHFDQKDQGOHWKH WKHpUqUHDGRQO\LQVWDQFHZLWKDpZqIRUZULWH7KLV
HUURUZLWKRXW3\WKRQTXLWWLQJGXHWRWKHSUREOHP DV\RXDOUHDG\NQRZZLOOFUHDWHWKHƬOHDQGZULWHWKHFRQWHQWWKHQ
FRPPLWWKHFKDQJHVWRWKHƬOH7KHHQGUHVXOWZLOOUHSRUWDGLƪHUHQW
WU\
VHWRIFLUFXPVWDQFHVLQWKLVFDVHDVXFFHVVIXOH[HFXWLRQRIWKHFRGH
D LQW LQSXW ´(QWHUWKHÀUVWQXPEHU´
E LQW LQSXW ´(QWHUWKHVHFRQGQXPEHU´
SULQW DE
H[FHSW=HUR'LYLVLRQ(UURU
SULQW ´<RXKDYHWULHGWRGLYLGHE\]HURµ
HOVH
SULQW ´<RXGLGQ·WGLYLGHE\]HUR:HOOGRQHµ

STEP 6 <RXFDQXVHH[FHSWLRQVWRKDQGOHDYDULHW\RIXVHIXO STEP 9 <RXFDQDOVRXVHDƬQDOO\EORFNZKLFKZRUNVLQD


WDVNV8VLQJDQH[DPSOHIURPRXUSUHYLRXVWXWRULDOV VLPLODUIDVKLRQEXW\RXFDQoWXVHHOVHZLWKLW7RXVH
OHWoVDVVXPH\RXZDQWWRRSHQDƬOHDQGZULWHWRLW RXUH[DPSOHIURP6WHS
WU\ WU\
W[W RSHQ ´KRPHSL'RFXPHQWVWH[WÀOHW[Wµ´Uµ W[W RSHQ ´KRPHSL'RFXPHQWVWH[WÀOHW[Wµ´Uµ
W[WZULWH ´7KLVLVDWHVW1RUPDOVHUYLFHZLOO WU\
VKRUWO\UHVXPHµ W[WZULWH ´7KLVLVDWHVW1RUPDOVHUYLFHZLOO
H[FHSW,2(UURU VKRUWO\UHVXPHµ
SULQW ´(UURUXQDEOHWRZULWHWKHÀOH&KHFN ÀQDOO\
SHUPLVVLRQVµ SULQW ´&RQWHQWZULWWHQWRÀOHVXFFHVVIXOO\
HOVH +DYHDQLFHGD\µ
SULQW ´&RQWHQWZULWWHQWRÀOHVXFFHVVIXOO\+DYH W[WFORVH
DQLFHGD\µ H[FHSW,2(UURU
W[WFORVH  SULQW ´(UURUXQDEOHWRZULWHWKHÀOH&KHFN
SHUPLVVLRQVµ

STEP 7 2EYLRXVO\WKLVZRQoWZRUNGXHWRWKHƬOHWH[WƬOHW[W STEP 10 $VEHIRUHDQHUURUZLOORFFXUDV\RXoYHXVHGWKH


EHLQJRSHQHGDVUHDGRQO\ WKHpUqSDUW 6RLQWKLV pUqUHDGRQO\SHUPLVVLRQ,I\RXFKDQJHLWWRDpZq
FDVHUDWKHUWKDQ3\WKRQWHOOLQJ\RXWKDW\RXoUHGRLQJVRPHWKLQJ WKHQWKHFRGHZLOOH[HFXWHZLWKRXWWKHHUURUEHLQJGLVSOD\HGLQWKH
ZURQJ\RXoYHFUHDWHGDQH[FHSWLRQXVLQJWKH,2(UURUFODVV ,'/(6KHOO1HHGOHVVWRVD\LWFDQEHDWULFN\JHWWLQJWKHH[FHSWLRQ
LQIRUPLQJWKHXVHUWKDWWKHSHUPLVVLRQVDUHLQFRUUHFW FRGHULJKWWKHƬUVWWLPH3UDFWLVHWKRXJKDQG\RXZLOOJHWWKHKDQJ
RILW

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

STEP 1 2QHRIWKHEHVWJUDSKLFDOPRGXOHVWREHJLQOHDUQLQJ STEP 3 7KHFRPPDQGWXUWOHFLUFOH  LVZKDWGUDZVWKH


3\WKRQJUDSKLFVLV7XUWOH7KH7XUWOHPRGXOHLVDV FLUFOHRQWKHVFUHHQZLWKEHLQJWKHVL]H<RX
WKHQDPHVXJJHVWVEDVHGRQWKHWXUWOHURERWVXVHGLQPDQ\VFKRROV FDQSOD\DURXQGZLWKWKHVL]HVLI\RXOLNHJRLQJXSWRDQG
WKDWFDQEHSURJUDPPHGWRGUDZVRPHWKLQJRQDODUJHSLHFH EH\RQG\RXFDQGUDZDQDUFE\HQWHULQJWXUWOHFLUFOH 
RISDSHURQWKHƮRRU7KH7XUWOHPRGXOHFDQEHLPSRUWHGZLWK  ZKHUHWKHVL]HLVEXW\RXoUHWHOOLQJ3\WKRQWRRQO\GUDZ
LPSRUWWXUWOH ‹RIWKHFLUFOH

STEP 2 /HWoVEHJLQE\GUDZLQJDVLPSOHFLUFOH6WDUWD1HZ STEP 4 7KHODVWSDUWRIWKHFLUFOHFRGHWHOOV3\WKRQWRNHHS


)LOHWKHQHQWHUWKHIROORZLQJFRGH WKHZLQGRZZKHUHWKHGUDZLQJLVWDNLQJSODFHWR
UHPDLQRSHQVRWKHXVHUFDQFOLFNWRFORVHLW1RZOHWoVPDNHDVTXDUH
LPSRUWWXUWOH
LPSRUWWXUWOH
WXUWOHFLUFOH 
WXUWOHJHWVFUHHQ BURRWPDLQORRS SULQW ´'UDZLQJDVTXDUH«µ
$VXVXDOSUHVV)WRVDYHWKHFRGHDQGH[HFXWHLW$QHZZLQGRZZLOO IRUWLQUDQJH  
QRZRSHQXSDQGWKHn7XUWOHoZLOOGUDZDFLUFOH WXUWOHIRUZDUG 
WXUWOHOHIW 
WXUWOHJHWVFUHHQ BURRWPDLQORRS
<RXFDQVHHWKDWZHoYHLQVHUWHGDORRSWRGUDZWKHVLGHVRIWKHVTXDUH

64 3\WKRQ &&RGLQJ
3\WKRQ*UDSKLFV

STEP 5 <RXFDQDGGDQHZOLQHWRWKHVTXDUHFRGHWRDGG STEP 8 1RZOHWoVJHWWKHFRGHE\LPSRUWLQJWKHS\JDPHPRGXOH


VRPHFRORXU
LPSRUWS\JDPH
WXUWOHFRORU ´5HGµ  S\JDPHLQLW
7KHQ\RXFDQHYHQFKDQJHWKHFKDUDFWHUWRDQDFWXDOWXUWOHE\HQWHULQJ LPJ S\JDPHLPDJHORDG ´53LSQJµ
WXUWOHVKDSH ´WXUWOHµ ZKLWH  
Z 
<RXFDQDOVRXVHWKHFRPPDQGWXUWOHEHJLQBÀOO DQG
K 
WXUWOHHQGBÀOO WRƬOOLQWKHVTXDUHZLWKWKHFKRVHQFRORXUV
VFUHHQ S\JDPHGLVSOD\
UHGRXWOLQH\HOORZƬOOLQWKLVFDVH
VHWBPRGH ZK
VFUHHQÀOO ZKLWH
VFUHHQÀOO ZKLWH
VFUHHQEOLW LPJ 
S\JDPHGLVSOD\ÁLS
ZKLOH7UXH
IRUHYHQWLQS\JDPHHYHQWJHW 
LIHYHQWW\SH S\JDPH48,7
S\JDPHTXLW

STEP 6 <RXFDQVHHWKDWWKH7XUWOHPRGXOHFDQGUDZRXW STEP 9 ,QWKHSUHYLRXVVWHS\RXLPSRUWHGS\JDPHLQLWLDWHG


VRPHSUHWW\JRRGVKDSHVDQGEHFRPHDOLWWOH WKHS\JDPHHQJLQHDQGDVNHGLWWRLPSRUWRXUVDYHG
PRUHFRPSOH[DV\RXEHJLQWRPDVWHUWKHZD\LWZRUNV(QWHUWKLV 5DVSEHUU\3LORJRLPDJHVDYHGDV53LSQJ1H[W\RXGHƬQHGWKH
H[DPSOH EDFNJURXQGFRORXURIWKHZLQGRZWRGLVSOD\WKHLPDJHDQGWKH
ZLQGRZVL]HDVSHUWKHDFWXDOLPDJHGLPHQVLRQV)LQDOO\\RXKDYHD
IURPWXUWOHLPSRUW
ORRSWRFORVHWKHZLQGRZ
FRORU ¶UHG·¶\HOORZ·
EHJLQBÀOO
ZKLOH7UXH
IRUZDUG 
OHIW 
LIDEV SRV 
EUHDN
HQGBÀOO
GRQH
,WoVDGLƪHUHQWPHWKRG
EXWYHU\HƪHFWLYH

STEP 7 $QRWKHUZD\LQZKLFK\RXFDQGLVSOD\JUDSKLFVLV STEP 10 3UHVV)WRVDYHDQGH[HFXWHWKHFRGHDQG\RXU


E\XVLQJWKH3\JDPHPRGXOH7KHUHDUHQXPHURXV LPDJHZLOOEHGLVSOD\HGLQDQHZZLQGRZ+DYHD
ZD\VLQZKLFKS\JDPHFDQKHOS\RXRXWSXWJUDSKLFVWRWKHVFUHHQ SOD\DURXQGZLWKWKHFRORXUVVL]HVDQGVRRQDQGWDNHWLPHWRORRN
EXWIRUQRZOHWoVORRNDWGLVSOD\LQJDSUHGHƬQHGLPDJH6WDUWE\ XSWKHPDQ\IXQFWLRQVZLWKLQWKHS\JDPHPRGXOHWRR
RSHQLQJDEURZVHUDQGƬQGLQJDQLPDJHWKHQVDYHLWWRWKHIROGHU
ZKHUH\RXVDYH\RXU3\WKRQFRGH

ZZZSFOSXEOLFDWLRQVFRP 65
Index

66 ZZZSFOSXEOLFDWLRQVFRP
Using Modules

A Python module is simply a Python-


FUHDWHGVRXUFHƬOHZKLFKFRQWDLQVWKH
necessary code for classes, functions
and global variables. You can bind
and reference modules to extend
functionality and create even more
spectacular Python programs.
:DQWWRVHHKRZWRLPSURYHWKHVH
modules to add a little something
extra to your code? Then read on and
OHDUQKRZWKH\FDQEHXVHGWRIDVKLRQ
fantastic code.

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\

WORKING WITH DATES


The calendar module is built into Python 3. However, if for some reason it’s not installed you can add it using pip install
calendar as a Windows administrator or sudo pip install calendar for Linux and macOS.

STEP 1 /DXQFK3\WKRQDQGHQWHULPSRUWFDOHQGDUWR STEP 3 7KHUHDUHQXPHURXVIXQFWLRQVZLWKLQWKHFDOHQGDU


FDOOXSWKHPRGXOHDQGLWVLQKHUHQWIXQFWLRQV2QFH PRGXOHWKDWPD\EHRILQWHUHVWWR\RXZKHQ
LWoVORDGHGLQWRPHPRU\VWDUWE\HQWHULQJ IRUPLQJ\RXURZQFRGH)RUH[DPSOH\RXFDQGLVSOD\WKHQXPEHURI
OHDS\HDUVEHWZHHQWZRVSHFLƬF\HDUV
VHS FDOHQGDU7H[W&DOHQGDU FDOHQGDU681'$<
VHSSUPRQWK  OHDSV FDOHQGDUOHDSGD\V 
SULQW OHDSV
7KHUHVXOWLVVWDUWLQJIURPRQZDUG

STEP 2 <RXFDQVHHWKDWWKHGD\VRI6HSWHPEHUDUH STEP 4 <RXFRXOGHYHQIDVKLRQWKDWSDUWLFXODUH[DPSOHLQWR


GLVSOD\HGLQDZDOOFDOHQGDUIDVKLRQ1DWXUDOO\\RX DSLHFHRIZRUNLQJXVHULQWHUDFWLYH3\WKRQFRGH
FDQFKDQJHWKHSDUWRIWKHVHFRQGOLQHWRDQ\\HDUDQG
LPSRUWFDOHQGDU
PRQWK\RXZDQWDELUWKGD\IRUH[DPSOH  7KHƬUVWOLQH
SULQW ´!!!!!!!!!!/HDS<HDU
FRQƬJXUHV7H[W&DOHQGDUWRVWDUWLWVZHHNVRQD6XQGD\\RXFDQRSW
&DOFXODWRU?Qµ \ LQW LQSXW ´(QWHUWKH
IRU0RQGD\LI\RXSUHIHU
ÀUVW\HDU´
\ LQW LQSXW ´(QWHUWKHVHFRQG\HDU´
OHDSV FDOHQGDUOHDSGD\V \\
SULQW ´1XPEHURIOHDS\HDUVEHWZHHQµ\´DQGµ
\´LVµOHDSV 

68 3\WKRQ &&RGLQJ
&DOHQGDU0RGXOH

STEP 5 <RXFDQDOVRFUHDWHDSURJUDPWKDWZLOOGLVSOD\DOO STEP 8 <RXoUHDOVRDEOHWRSULQWWKHLQGLYLGXDOPRQWKVRU


WKHGD\VZHHNVDQGPRQWKVZLWKLQDJLYHQ\HDU GD\VRIWKHZHHN
LPSRUWFDOHQGDU LPSRUWFDOHQGDU
\HDU LQW LQSXW ´(QWHUWKH\HDUWRGLVSOD\´ IRUQDPHLQFDOHQGDUPRQWKBQDPH
SULQW FDOHQGDUSUFDO \HDU SULQW QDPH
:HoUHVXUH\RXoOODJUHHWKDWoVTXLWHDKDQG\ELWRIFRGHWRKDYH LPSRUWFDOHQGDU
WRKDQG IRUQDPHLQFDOHQGDUGD\BQDPH
SULQW QDPH

STEP 6 ,QWHUHVWLQJO\ZHFDQDOVROLVWWKHQXPEHURIGD\VLQD STEP 9 7KHFDOHQGDUPRGXOHDOVRDOORZVXVWRZULWHWKH


PRQWKE\XVLQJDVLPSOHIRUORRS IXQFWLRQVLQ+70/VRWKDW\RXFDQGLVSOD\LWRQD
ZHEVLWH/HWoVVWDUWE\FUHDWLQJDQHZƬOH
LPSRUWFDOHQGDU
FDO FDOHQGDU7H[W&DOHQGDU FDOHQGDU681'$< LPSRUWFDOHQGDU
IRULLQFDOLWHUPRQWKGD\V   FDO RSHQ ´KRPHSL'RFXPHQWVFDOKWPOµ´Zµ
SULQW L F FDOHQGDU+70/&DOHQGDU FDOHQGDU681'$<
FDOZULWH FIRUPDWPRQWK 
FDOFORVH
7KLVFRGHZLOOFUHDWHDQ+70/ƬOHFDOOHGFDORSHQLWZLWKDEURZVHU
DQGLWGLVSOD\VWKHFDOHQGDUIRU-DQXDU\

STEP 7 <RXFDQVHHWKDWFRGHSURGXFHGVRPH]HURVDWWKH STEP 10 2IFRXUVH\RXFDQPRGLI\WKDWWRGLVSOD\DJLYHQ


EHJLQQLQJWKLVLVGXHWRWKHVWDUWLQJGD\RIWKH \HDUDVDZHESDJHFDOHQGDU
ZHHN6XQGD\LQWKLVFDVHDQGRYHUODSSLQJGD\VIURPWKHSUHYLRXV
LPSRUWFDOHQGDU
PRQWK6RWKHFRXQWLQJRIWKHGD\VZLOOVWDUWRQ)ULGD\VW-XQH
DQGZLOOWRWDODVWKHRXWSXWFRUUHFWO\GLVSOD\V \HDU LQW LQSXW ´(QWHUWKH\HDUWRGLVSOD\DVD
ZHESDJH´
FDO RSHQ ´KRPHSL'RFXPHQWVFDOKWPOµ´Zµ
FDOZULWH FDOHQGDU+70/&DOHQGDU FDOHQGDU021'$< 
IRUPDW\HDU \HDU
FDOFORVH
7KLVFRGHDVNVWKHXVHUIRUD\HDUWKHQFUHDWHVWKHQHFHVVDU\
ZHESDJH5HPHPEHUWRFKDQJH\RXUƬOHGHVWLQDWLRQ

ZZZSFOSXEOLFDWLRQVFRP 69
8VLQJ0RGXOHV

260RGXOH
7KH26PRGXOHDOORZV\RXWRLQWHUDFWGLUHFWO\ZLWKWKHEXLOWLQFRPPDQGVIRXQGLQ\RXU
RSHUDWLQJV\VWHP&RPPDQGVYDU\GHSHQGLQJRQWKH26\RXoUHUXQQLQJDVVRPHZLOO
ZRUNZLWK:LQGRZVZKHUHDVRWKHUVZLOOZRUNZLWK/LQX[DQGPDF26

INTO THE SYSTEM


2QHRIWKHSULPDU\IHDWXUHVRIWKH26PRGXOHLVWKHDELOLW\WROLVWPRYHFUHDWHGHOHWHDQGRWKHUZLVHLQWHUDFWZLWKƬOHV
stored on the system, making it the perfect module for backup code.

STEP 1 <RXFDQVWDUWWKH26PRGXOHZLWKVRPHVLPSOH STEP 3 7KH:LQGRZVRXWSXWLVGLƪHUHQWDVWKDWoVWKH


IXQFWLRQVWRVHHKRZLWLQWHUDFWVZLWKWKHRSHUDWLQJ FXUUHQWZRUNLQJGLUHFWRU\RI3\WKRQDVGHWHUPLQHG
V\VWHPHQYLURQPHQWWKDW3\WKRQLVUXQQLQJRQ,I\RXoUHXVLQJ/LQX[ E\WKHV\VWHPDV\RXPLJKWVXVSHFWWKHRVJHWFZG IXQFWLRQLV
RUWKH5DVSEHUU\3LWU\WKLV DVNLQJ3\WKRQWRUHWULHYHWKH&XUUHQW:RUNLQJ'LUHFWRU\/LQX[XVHUV
ZLOOVHHVRPHWKLQJDORQJWKHVDPHOLQHVDVWKH5DVSEHUU\3LDVZLOO
LPSRUWRV
PDF26XVHUV
KRPH RVJHWFZG
SULQW KRPH

STEP 2 7KHUHWXUQHGUHVXOWIURPSULQWLQJWKHYDULDEOHKRPH STEP 4 <HWDQRWKHULQWHUHVWLQJHOHPHQWWRWKH26PRGXOH


LVWKHFXUUHQWXVHUoVKRPHIROGHURQWKHV\VWHP LVLWVDELOLW\WRODXQFKSURJUDPVWKDWDUHLQVWDOOHG
,QRXUH[DPSOHWKDWoVKRPHSLLWZLOOEHGLƪHUHQWGHSHQGLQJRQ LQWKHKRVWV\VWHP)RULQVWDQFHLI\RXZDQWHGWRODXQFKWKH
WKHXVHUQDPH\RXORJLQDVDQGWKHRSHUDWLQJV\VWHP\RXXVH &KURPLXPEURZVHUIURPZLWKLQD3\WKRQSURJUDP\RXFDQXVH
)RUH[DPSOH:LQGRZVZLOORXWSXW&?3URJUDP)LOHV [ ? WKHFRPPDQG
3\WKRQ
LPSRUWRV
EURZVHU RVV\VWHP ´XVUELQFKURPLXPEURZVHUµ 

70 3\WKRQ &&RGLQJ
260RGXOH

STEP 5 7KHRVV\VWHP IXQFWLRQLVZKDWDOORZVLQWHUDFWLRQ STEP 8 7KHDELOLW\WRPDQLSXODWHGLUHFWRULHVRUIROGHUVLI


ZLWKH[WHUQDOSURJUDPV\RXFDQHYHQFDOOXS \RXSUHIHULVRQHRIWKH26PRGXOHoVEHVWIHDWXUHV
SUHYLRXV3\WKRQSURJUDPVXVLQJWKLVPHWKRG<RXZLOOREYLRXVO\ )RUH[DPSOHWRFUHDWHDQHZGLUHFWRU\\RXFDQXVH
QHHGWRNQRZWKHIXOOSDWKDQGSURJUDPƬOHQDPHIRULWWRZRUN
LPSRUWRV
VXFFHVVIXOO\+RZHYHU\RXFDQXVHWKHIROORZLQJ
RVPNGLU ´1(:µ
LPSRUWRV
7KLVFUHDWHVDQHZGLUHFWRU\ZLWKLQWKH&XUUHQW:RUNLQJ'LUHFWRU\
RVV\VWHP ¶VWDUWFKURPH´KWWSVZZZ\RXWXEHFRP
QDPHGDFFRUGLQJWRWKHREMHFWLQWKHPNGLUIXQFWLRQ
IHHGPXVLFµ·

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 1 -XVWDVZLWKRWKHUPRGXOHV\RXQHHGWRLPSRUW STEP 4 +RZHYHUWKHUDQGRPPRGXOHLVQoWXVHGH[FOXVLYHO\


UDQGRPEHIRUH\RXFDQXVHDQ\RIWKHIXQFWLRQV IRUQXPEHUV<RXFDQXVHLWWRVHOHFWDQHQWU\IURPD
ZHoUHJRLQJWRORRNDWLQWKLVWXWRULDO/HWoVEHJLQE\VLPSO\SULQWLQJD OLVWIURPUDQGRPDQGWKHOLVWFDQFRQWDLQDQ\WKLQJ
UDQGRPQXPEHUIURPWR
LPSRUWUDQGRP
LPSRUWUDQGRP UDQGRPFKRLFH >´&RQDQµ´9DOHULDµ´%HOLWµ@ 
SULQW UDQGRPLQW 
7KLVZLOOGLVSOD\RQHRIWKHQDPHVRIRXUDGYHQWXUHUVDWUDQGRP
ZKLFKLVDJUHDWDGGLWLRQWRDWH[WDGYHQWXUHJDPH

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 6 ,QWHUHVWLQJO\\RXFDQDOVRXVHDIXQFWLRQZLWKLQWKH STEP 9 /HWoVXVHDQH[DPSOHSLHFHRIFRGHZKLFKƮLSVD


UDQGRPPRGXOHWRVKXưHWKHLWHPVLQWKHOLVWWKXV YLUWXDOFRLQWHQWKRXVDQGWLPHVDQGFRXQWVKRZ
DGGLQJDOLWWOHPRUHUDQGRPQHVVLQWRWKHHTXDWLRQ PDQ\WLPHVLWZLOOODQGRQKHDGVRUWDLOV
UDQGRPVKXIÁH OVW LPSRUWUDQGRP
SULQW OVW  RXWSXW ^´+HDGVµ´7DLOVµ`
FRLQ OLVW RXWSXWNH\V
7KLVZD\\RXFDQNHHSVKXưLQJWKHOLVWEHIRUHGLVSOD\LQJDUDQGRP
LWHPIURPLW IRULLQUDQJH  
RXWSXW>UDQGRPFKRLFH FRLQ @ 
SULQW ´+HDGVµRXWSXW>´+HDGVµ@
SULQW ´7DLOVµRXWSXW>´7DLOVµ@ 

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@

STEP 8 <RXFDQDOVRVHOHFWDUDQGRPQXPEHUIURPDJLYHQ SULQW ´µ


UDQJHLQVWHSVXVLQJWKHVWDUWVWRSVWHSORRS
IRUZLQUDQGRPVDPSOH ZRUGVZGV 
LPSRUWUDQGRP SULQW Z
IRULLQUDQJH  
SULQW ´µ
SULQW UDQGRPUDQGUDQJH 
5HVXOWVZLOOYDU\EXW\RXJHWWKHJHQHUDOLGHDDVWRKRZLWZRUNV

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.

STEP 1 7NLQWHULVXVXDOO\EXLOWLQWR3\WKRQ+RZHYHULILWoV STEP 3 7KHLGHDODSSURDFKLVWRDGGPDLQORRS LQWRWKH


DYDLODEOHZKHQ\RXHQWHULPSRUWWNLQWHUWKHQ FRGHWRFRQWUROWKH7NLQWHUHYHQWORRSEXWZHoOO
\RXQHHGWRSLSLQVWDOOWNLQWHUIURPWKHFRPPDQGSURPSW JHWWRWKDWVRRQ<RXoYHMXVWFUHDWHGD7NLQWHUZLGJHWDQGWKHUHDUH
:HFDQVWDUWWRLPSRUWPRGXOHVGLƪHUHQWO\WKDQEHIRUHWRVDYHRQ VHYHUDOPRUHZHFDQSOD\DURXQGZLWK
W\SLQJDQGE\LPSRUWLQJDOOWKHLUFRQWHQWV
EWQ %XWWRQ
LPSRUWWNLQWHUDVWN EWQSDFN
IURPWNLQWHULPSRUW EWQ>´WH[Wµ@ µ+HOORHYHU\RQHµ
7KHƬUVWOLQHIRFXVHVRQWKHQHZO\FUHDWHGZLQGRZ&OLFNEDFNLQWR
WKH6KHOODQGFRQWLQXHWKHRWKHUOLQHV

STEP 2 ,WoVQRWUHFRPPHQGHGWRLPSRUWHYHU\WKLQJIURPD STEP 4 <RXFDQFRPELQHWKHDERYHLQWRD1HZ)LOH


PRGXOHXVLQJWKHDVWHULVNEXWLWZRQoWGRDQ\KDUP
LPSRUWWNLQWHUDVWN
QRUPDOO\/HWoVEHJLQE\FUHDWLQJDEDVLF*8,ZLQGRZHQWHU
IURPWNLQWHULPSRUW
ZLQG 7N EWQ %XWWRQ
EWQSDFN
7KLVFUHDWHVDVPDOOEDVLFZLQGRZ7KHUHoVQRWPXFKHOVHWRGRDW
EWQ>´WH[Wµ@ µ+HOORHYHU\RQHµ
WKLVSRLQWEXWFOLFNWKH;LQWKHFRUQHUWRFORVHWKHZLQGRZ
7KHQDGGVRPHEXWWRQLQWHUDFWLRQV
GHIFOLFN 
SULQW ´<RXMXVWFOLFNHGPHµ
EWQ>´FRPPDQGµ@ FOLFN

74 3\WKRQ &&RGLQJ
7NLQWHU0RGXOH

STEP 5 6DYHDQGH[HFXWHWKHFRGHIURP6WHSDQGD STEP 8 <RXFDQFUHDWHUDGLREXWWRQVWRR7U\


ZLQGRZDSSHDUVZLWKn+HOORHYHU\RQHoLQVLGH,I\RX
IURPWNLQWHULPSRUW
FOLFNWKH+HOORHYHU\RQHEXWWRQWKH6KHOOZLOORXWSXWWKHWH[Wn<RX
MXVWFOLFNHGPHo,WoVVLPSOHEXWVKRZV\RXZKDWFDQEHDFKLHYHG URRW 7N
ZLWKDIHZOLQHVRIFRGH
Y ,QW9DU
/DEHO URRWURRWWLWOH ´2SWLRQVµ WH[W µµµ&KRRVH
DSUHIHUUHGODQJXDJHµµµ
MXVWLI\ /()7SDG[  SDFN
5DGLREXWWRQ URRW
WH[W µ3\WKRQµ
SDG[ 
YDULDEOH Y
YDOXH  SDFN DQFKRU :
5DGLREXWWRQ URRW
WH[W µ&µ
SDG[ 
YDULDEOH Y
STEP 6 <RXFDQDOVRGLVSOD\ERWKWH[WDQGLPDJHVZLWKLQ YDOXH  SDFN DQFKRU :
D7NLQWHUZLQGRZ+RZHYHURQO\*,)3*0RU330
PDLQORRS
IRUPDWVDUHVXSSRUWHG6RƬQGDQLPDJHDQGFRQYHUWLWEHIRUHXVLQJ
WKHFRGH+HUHoVDQH[DPSOHXVLQJWKH%'03XEOLVKLQJORJR
IURPWNLQWHULPSRUW STEP 9 <RXFDQDOVRFUHDWHFKHFNER[HVZLWKEXWWRQVDQG
RXWSXWWRWKH6KHOO
URRW 7N
IURPWNLQWHULPSRUW
ORJR 3KRWR,PDJH ÀOH µKRPHSL'RZQORDGV%'0BORJR
URRW 7N
JLIµ
Z /DEHO URRWURRWWLWOH ´%'03XEOLFDWLRQVµ  GHIYDUBVWDWHV 
LPDJH ORJR SDFN VLGH µULJKWµ SULQW ´:DUULRUG?Q0DJHGµ YDUJHW 
FRQWHQW ´µµ)URPLWVKXPEOHEHJLQQLQJVLQ YDUJHW
WKH%'0EUDQGTXLFNO\JUHZIURPDVLQJOHSXEOLFDWLRQ
/DEHO URRWURRWWLWOH ´$GYHQWXUH*DPHµ 
SURGXFHGE\DWHDPRIMXVWWZRWRRQHRIWKHELJJHVW
WH[W µ!!!!!!!!!!<RXUDGYHQWXUHUROHµ 
QDPHVLQJOREDOERRND]LQHSXEOLVKLQJIRUWZRVLPSOH
JULG URZ VWLFN\ 1
UHDVRQV2XUSDVVLRQDQGFRPPLWPHQWWRGHOLYHUWKH
YDU ,QW9DU
YHU\EHVWSURGXFWHDFKDQGHYHU\YROXPH:KLOH
&KHFNEXWWRQ URRWWH[W µ:DUULRUµYDULDEOH YDU 
WKHFRPSDQ\KDVJURZQZLWKDSRUWIROLRRIRYHU
JULG URZ VWLFN\ :
SXEOLFDWLRQVGHOLYHUHGE\RXULQWHUQDWLRQDOVWDII
YDU ,QW9DU
WKHIRXQGDWLRQWKDWLWKDVEHHQEXLOWXSRQUHPDLQV
&KHFNEXWWRQ URRWWH[W µ0DJHµYDULDEOH YDU 
WKHVDPHZKLFKLVZK\ZHEHOLHYH%'0LVQ·WMXVW
JULG URZ VWLFN\ :
WKHÀUVWFKRLFHLW·VWKHRQO\FKRLFHIRUWKHVPDUW
%XWWRQ URRWWH[W ·4XLW·FRPPDQG URRWGHVWUR\ 
FRQVXPHU´µµ
JULG URZ VWLFN\ :SDG\ 
Z /DEHO URRW
%XWWRQ URRWWH[W ·6KRZ·FRPPDQG YDUBVWDWHV 
MXVWLI\ /()7
JULG URZ VWLFN\ (SDG\ 
SDG[ 
WH[W FRQWHQW SDFN VLGH µOHIWµ PDLQORRS
URRWPDLQORRS

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 1 1DWXUDOO\\RXQHHGWRORDGXSWKH3\JDPHPRGXOHV STEP 3 6DGO\\RXFDQoWFORVHWKHQHZO\FUHDWHG3\JDPH


LQWRPHPRU\EHIRUH\RXoUHDEOHWRXWLOLVHWKHP ZLQGRZZLWKRXWFORVLQJWKH3\WKRQ,'/(6KHOO
2QFHWKDWoVGRQH3\JDPHUHTXLUHVWKHXVHUWRLQLWLDOLVHLWSULRUWR ZKLFKLVQoWYHU\SUDFWLFDO)RUWKLVUHDVRQ\RXQHHGWRZRUNLQWKH
DQ\RIWKHIXQFWLRQVEHLQJXVHG HGLWRU 1HZ!)LOH DQGFUHDWHD7UXH)DOVHZKLOHORRS
LPSRUWS\JDPH LPSRUWS\JDPH
S\JDPHLQLW IURPS\JDPHORFDOVLPSRUW
S\JDPHLQLW
JDPHZLQGRZ S\JDPHGLVSOD\VHWBPRGH 
S\JDPHGLVSOD\VHWBFDSWLRQ ´$GYHQWXUH*DPHµ
UXQQLQJ 7UXH
ZKLOHUXQQLQJ
IRUHYHQWLQS\JDPHHYHQWJHW 
LIHYHQWW\SH 48,7
UXQQLQJ )DOVH
S\JDPHTXLW

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

STEP 5 <RXoUHJRLQJWRVKLIWWKHFRGHDURXQGDELWQRZ LPJ S\JDPHLPDJHORDG ´KRPHSL'RZQORDGV


UXQQLQJWKHPDLQ3\JDPHFRGHZLWKLQDZKLOHORRS VSULWHSQJµ
LWPDNHVLWQHDWHUDQGHDVLHUWRIROORZ:HoYHGRZQORDGHGDJUDSKLF
GHIVSULWH [\ 
WRXVHDQGZHQHHGWRVHWVRPHSDUDPHWHUVIRUS\JDPH
JDPHZLQGRZEOLW LPJ [\
LPSRUWS\JDPH
[  
S\JDPHLQLW
\  
UXQQLQJ 7UXH
JDPHZLQGRZÀOO ZKLWH
ZKLOHUXQQLQJ VSULWH [\
S\JDPHGLVSOD\XSGDWH
JDPHZLQGRZ S\JDPHGLVSOD\VHWBPRGH 
S\JDPHGLVSOD\VHWBFDSWLRQ ´$GYHQWXUH*DPHµ IRUHYHQWLQS\JDPHHYHQWJHW 
EODFN  LIHYHQWW\SH S\JDPH48,7
ZKLWH  UXQQLQJ )DOVH

STEP 6 /HWoVTXLFNO\JRWKURXJKWKHFRGHFKDQJHV:HoYH GRZQORDGHGLPDJHFDOOHGVSULWHSQJDQGDOORFDWHGLWWRWKH


GHƬQHGWZRFRORXUVEODFNDQGZKLWHWRJHWKHU YDULDEOHLPJDQGDOVRGHƬQHGDVSULWHIXQFWLRQDQGWKH%OLWIXQFWLRQ
ZLWKWKHLUUHVSHFWLYH5*%FRORXUYDOXHV1H[WZHoYHORDGHGWKH ZLOODOORZXVWRHYHQWXDOO\PRYHWKHLPDJH

ZZZSFOSXEOLFDWLRQVFRP 77
8VLQJ0RGXOHV

STEP 7 1RZZHFDQFKDQJHWKHFRGHDURXQGDJDLQWKLV LPJVSHHG 


WLPHFRQWDLQLQJDPRYHPHQWRSWLRQZLWKLQWKH
ZKLOHUXQQLQJ
ZKLOHORRSDQGDGGLQJWKHYDULDEOHVQHHGHGWRPRYHWKHVSULWH
IRUHYHQWLQS\JDPHHYHQWJHW 
DURXQGWKHVFUHHQ
LIHYHQWW\SH 48,7
LPSRUWS\JDPH UXQQLQJ )DOVH
IURPS\JDPHORFDOVLPSRUW
LIHYHQWW\SH S\JDPH.(<'2:1
S\JDPHLQLW
LIHYHQWNH\ S\JDPH.B/()7
UXQQLQJ 7UXH [FKDQJH 
HOLIHYHQWNH\ S\JDPH.B5,*+7
JDPHZLQGRZ S\JDPHGLVSOD\VHWBPRGH 
[FKDQJH 
S\JDPHGLVSOD\VHWBFDSWLRQ ´$GYHQWXUH*DPHµ
LIHYHQWW\SH S\JDPH.(<83
EODFN 
LIHYHQWNH\ S\JDPH.B/()7RUHYHQW
ZKLWH 
NH\ S\JDPH.B5,*+7
LPJ S\JDPHLPDJHORDG ´KRPHSL'RZQORDGVVSULWH
[FKDQJH 
SQJµ
[ [FKDQJH
GHIVSULWH [\ 
JDPHZLQGRZEOLW LPJ [\ JDPHZLQGRZÀOO ZKLWH
VSULWH [\
[  
S\JDPHGLVSOD\XSGDWH
\  
S\JDPHTXLW
[FKDQJH 

STEP 8 &RS\WKHFRGHGRZQDQGXVLQJWKHOHIWDQGULJKWDUURZNH\VRQWKHNH\ERDUG\RXFDQPRYH\RXUVSULWHDFURVVWKHERWWRPRI
WKHVFUHHQ1RZLWORRNVOLNH\RXKDYHWKHPDNLQJVRIDFODVVLFDUFDGH'VFUROOHULQWKHZRUNV

78 3\WKRQ &&RGLQJ
3\JDPH0RGXOH

STEP 9 <RXFDQQRZLPSOHPHQWDIHZDGGLWLRQVDQGXWLOLVH S\JDPHGLVSOD\ÁLS


VRPHSUHYLRXVWXWRULDOFRGH7KHQHZHOHPHQWVDUH FORFNWLFN 
WKHVXESURFHVVPRGXOHRIZKLFKRQHIXQFWLRQDOORZVXVWRODXQFKD FRQWLQXH
VHFRQG3\WKRQVFULSWIURPZLWKLQDQRWKHUDQGZHoUHJRLQJWRFUHDWHD EUHDN
1HZ)LOHFDOOHGS\JDPHW[WS\
S\JDPHTXLW
LPSRUWS\JDPH
LPSRUWWLPH
LPSRUWVXESURFHVV
S\JDPHLQLW
VFUHHQ S\JDPHGLVSOD\VHWBPRGH 
FORFN S\JDPHWLPH&ORFN
IRQW S\JDPHIRQW)RQW 1RQH
S\JDPHWLPHVHWBWLPHU S\JDPH86(5(9(17
GHIWH[WBJHQHUDWRU WH[W 
WPS ¶·
IRUOHWWHULQWH[W
WPS OHWWHU
LIOHWWHU ¶¶
\LHOGWPS
FODVV'\QDPLF7H[W REMHFW 
GHIBBLQLWBB VHOIIRQWWH[WSRV
DXWRUHVHW )DOVH 
VHOIGRQH )DOVH
VHOIIRQW IRQW
VHOIWH[W WH[W
VHOIBJHQ WH[WBJHQHUDWRU VHOIWH[W
VHOISRV SRV
VHOIDXWRUHVHW DXWRUHVHW
VHOIXSGDWH
GHIUHVHW VHOI 
VHOIBJHQ WH[WBJHQHUDWRU VHOIWH[W
VHOIGRQH )DOVH
VHOIXSGDWH
GHIXSGDWH VHOI 
LIQRWVHOIGRQH
WU\VHOIUHQGHUHG VHOIIRQW STEP 10 :KHQ\RXUXQWKLVFRGHLWZLOOGLVSOD\DORQJ
UHQGHU QH[W VHOIBJHQ 7UXH  QDUURZ3\JDPHZLQGRZZLWKWKHLQWURWH[W
H[FHSW6WRS,WHUDWLRQ VFUROOLQJWRWKHULJKW$IWHUDSDXVHRIWHQVHFRQGVLWWKHQODXQFKHV
VHOIGRQH 7UXH WKHPDLQJDPH3\WKRQVFULSWZKHUH\RXFDQPRYHWKHZDUULRUVSULWH
WLPHVOHHS  DURXQG2YHUDOOWKHHƪHFWLVTXLWHJRRGEXWWKHUHoVDOZD\VURRP
VXESURFHVV3RSHQ ´S\WKRQKRPHSL'RFXPHQWV IRULPSURYHPHQW
3\WKRQ?&RGHS\JDPHS\µVKHOO 7UXH
GHIGUDZ VHOIVFUHHQ 
VFUHHQEOLW VHOIUHQGHUHGVHOISRV
WH[W ´$ORQJWLPHDJRDEDUEDULDQVWURGHIURPWKH
IUR]HQQRUWK6ZRUGLQKDQGµ
PHVVDJH '\QDPLF7H[W IRQWWH[W  
DXWRUHVHW 7UXH
ZKLOH7UXH
IRUHYHQWLQS\JDPHHYHQWJHW 
LIHYHQWW\SH S\JDPH48,7EUHDN
LIHYHQWW\SH S\JDPH86(5(9(17PHVVDJH
XSGDWH
HOVH
VFUHHQÀOO S\JDPHFRORU&RORU ¶EODFN·
PHVVDJHGUDZ VFUHHQ

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 1 /HWoVVWDUWE\FUHDWLQJDVHWRIEDVLFPDWKHPDWLFV STEP 3 1RZ\RXoUHJRLQJWRWDNHWKHIXQFWLRQGHƬQLWLRQV


IXQFWLRQV0XOWLSO\DQXPEHUE\WZRWKUHHDQG RXWRIWKHSURJUDPDQGLQWRDVHSDUDWHƬOH
VTXDUHRUUDLVHDQXPEHUWRDQH[SRQHQW SRZHU &UHDWHD1HZ)LOH +LJKOLJKWWKHIXQFWLRQGHƬQLWLRQVDQGFKRRVH(GLW!&XW&KRRVH)LOH
LQWKH,'/(DQGHQWHU !1HZ)LOHDQGXVH(GLW!3DVWHLQWKHQHZZLQGRZ<RXQRZKDYH
WZRVHSDUDWHƬOHVRQHZLWKWKHIXQFWLRQGHƬQLWLRQVWKHRWKHUZLWK
GHIWLPHVWZR [ 
WKHIXQFWLRQFDOOV
UHWXUQ[ 
GHIWLPHVWKUHH [ 
UHWXUQ[ 
GHIVTXDUH [ 
UHWXUQ[ [
GHISRZHU [\ 
UHWXUQ[ \

STEP 2 8QGHUWKHDERYHFRGHHQWHUIXQFWLRQVWRFDOOWKH STEP 4 ,I\RXQRZWU\DQGH[HFXWHWKHEDVLFBPDWKS\FRGH


FRGH DJDLQWKHHUURU‘NameError: name ‘timestwo’ is
QRWGHƬQHGoZLOOEHGLVSOD\HG7KLVLVGXHWRWKHFRGHQRORQJHU
SULQW WLPHVWZR 
KDYLQJDFFHVVWRWKHIXQFWLRQGHƬQLWLRQV
SULQW WLPHVWKUHH 
SULQW VTXDUH 
SULQW SRZHU 
6DYHWKHSURJUDPDVEDVLFBPDWKS\DQGH[HFXWHLWWRJHWWKHUHVXOWV

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 6 %DFNWRWKHEDVLFBPDWKS\ZLQGRZDWWKHWRSRIWKH STEP 9 )LQDOO\\RXFDQQRZFUHDWHDUDQJHRILIVWDWHPHQWV


FRGHHQWHU WRGHWHUPLQHZKDWWRGRZLWKWKHQXPEHUDQG
XWLOLVHWKHQHZO\FUHDWHGIXQFWLRQGHƬQLWLRQV
IURPPLQLPDWKLPSRUW 
LIFKRLFH ¶·
7KLVZLOOLPSRUWWKHIXQFWLRQGHƬQLWLRQVDVDPRGXOH3UHVV)WR
SULQW WLPHVWZR QXP
VDYHDQGH[HFXWHWKHSURJUDPWRVHHLWLQDFWLRQ
HOLIFKRLFH ¶·
SULQW WLPHVWKUHH QXP
HOLIFKRLFH ¶·
SULQW VTXDUH QXP
HOLIFKRLFH ¶·
QXP LQW LQSXW ´(QWHUVHFRQGQXPEHU´
SULQW SRZHU QXPQXP
HOVH
SULQW ´,QYDOLGLQSXWµ

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++

C++ is a high level programming language


that’s used in a multitude of technologies.
Everything from your favourite mobile
app, console and PC game to entire
operating systems, all are developed
using C++ and a collection of software
development kits and custom libraries.
C++ is the driving force behind most
of what you use on a daily basis, which
makes it a complex and extraordinarily
powerful language to get to grips with.
In this section, we look at how to install a
C++ IDE and compiler on your computer.

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

C++ code is much faster than that of Python.

84 3\WKRQ &&RGLQJ
:K\&"

Microsoft’s Visual Studio is a great,


free environment to learn C++ in.

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

TIME AND PATIENCE


<HVDVZLWK3\WKRQ\RXoUHJRLQJWRQHHGWRVHWDVLGHVLJQLƬFDQWWLPH
WRVSHQGRQOHDUQLQJKRZWRFRGHLQ&6DGO\XQOHVV\RXoUHDJHQLXV
LWoVQRWJRLQJWRKDSSHQRYHUQLJKWRUHYHQDZHHN$JRRG&FRGHU
KDVVSHQWPDQ\\HDUVKRQLQJWKHLUFUDIWVREHSDWLHQWVWDUWVPDOODQG
NHHSOHDUQLQJ

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.

STEP 1 6WDUWE\YLVLWLQJWKH&RGH%ORFNVGRZQORDGVLWHDW STEP 3 :KHQ\RXoYHORFDWHGWKHƬOHFOLFNRQWKH


www.codeblocks.org/downloads)URPWKHUHFOLFN 6RXUFHIRUJHQHWOLQNDWWKHHQGRIWKHOLQHDQGD
RQWKHn'RZQORDGWKHELQDU\UHOHDVHVoOLQNWREHWDNHQWRWKHODWHVW GRZQORDGQRWLƬFDWLRQZLQGRZDSSHDUVFOLFNRQ6DYH)LOHWRVWDUW
GRZQORDGDEOHYHUVLRQIRU:LQGRZV WKHGRZQORDGDQGVDYHWKHH[HFXWDEOHWR\RXU3&/RFDWHWKH
GRZQORDGHG&RGH%ORFNVLQVWDOOHUDQGGRXEOHFOLFNWRVWDUW)ROORZ
WKHRQVFUHHQLQVWUXFWLRQVWREHJLQWKHLQVWDOODWLRQ

STEP 2 <RXFDQVHHWKDWWKHUHDUHVHYHUDO:LQGRZVYHUVLRQV STEP 4 2QFH\RXoYHDJUHHGWRWKHOLFHQFLQJWHUPVWKHUHLVD


DYDLODEOH7KHRQH\RXZDQWWRGRZQORDGKDV FKRLFHRILQVWDOODWLRQRSWLRQVDYDLODEOH<RXFDQRSW
nPLQJZVHWXSH[HoDWWKHHQGRIWKHFXUUHQWYHUVLRQQXPEHU$W IRUDVPDOOHULQVWDOOPLVVLQJRXWRQVRPHRIWKHFRPSRQHQWVEXWZH
WKHWLPHRIZULWLQJWKLVLVFRGHEORFNVPLQJZVHWXSH[H7KH ZRXOGUHFRPPHQG\RXRSWIRUWKH)XOORSWLRQDVGHIDXOW
GLƪHUHQFHLVWKDWWKHPLQJZVHWXSYHUVLRQLQFOXGHVD&FRPSLOHU
DQGGHEXJJHUIURP7'0*&& DFRPSLOHUVXLWH 

88 3\WKRQ &&RGLQJ
+RZWR6HW8S&LQ:LQGRZV

STEP 5 1H[WFKRRVHDQLQVWDOOORFDWLRQIRUWKH&RGH%ORFNV STEP 8 %HIRUH\RXVWDUWXVLQJ&RGH%ORFNVLWoVZRUWK


ƬOHV,WoV\RXUFKRLFHEXWWKHGHIDXOWZLOOJHQHUDOO\ H[SODLQLQJH[DFWO\ZK\\RXQHHGWKHDGGHG
VXƯFHXQOHVVRIFRXUVH\RXKDYHDQ\VSHFLDOUHTXLUHPHQWV:KHQ FRPSLOHU)LUVWDFRPSLOHULVDVHSDUDWHSURJUDPWKDWUHDGV
\RXFOLFN1H[WWKHLQVWDOOEHJLQVZKHQLWoVƬQLVKHGDQRWLƬFDWLRQ WKURXJK\RXU&FRGHDQGFKHFNVLWDJDLQVWWKHODWHVWDFFHSWDEOH
SRSVXSDVNLQJ\RXLI\RXZDQWWRVWDUW&RGH%ORFNVQRZVRFOLFN<HV SURJUDPPLQJVWDQGDUGVWKLVLVZK\\RXQHHGWKHPRVWUHFHQWO\
DYDLODEOHFRPSLOHU7KLVLVFXUUHQWO\&ZLWK&XQGHUZD\

STEP 6 7KHƬUVWWLPH&RGH%ORFNVORDGVLWUXQVDQ STEP 9 (VVHQWLDOO\FRPSXWHUVZRUNDQGXQGHUVWDQGRQO\


DXWRGHWHFWIRUDQ\&FRPSLOHUV\RXPD\DOUHDG\ ELQDU\RQHVDQG]HURVRU0DFKLQH/DQJXDJH
KDYHLQVWDOOHGRQ\RXV\VWHP,I\RXGRQoWKDYHDQ\FOLFNRQWKH 3URJUDPPLQJLQELQDU\LVQoWHƪHFWLYHIRUKXPDQEHLQJV)RU
ƬUVWGHWHFWHGRSWLRQ*18*&&&RPSLOHUDQGFOLFNWKH'HIDXOW H[DPSOHWRRXWSXWWKHZRUGVp+HOOR:RUOGqWRWKHVFUHHQLQ&
EXWWRQWRVHWLWDVWKHV\VWHPoV&FRPSLOHU&OLFN2.ZKHQ\RXoUH ZRXOGDSSHDULQELQDU\DV
UHDG\WRFRQWLQXH






STEP 7 :KHQWKHSURJUDPVWDUWVDQRWKHUPHVVDJHDSSHDUV STEP 10 7KHFRPSLOHUWKHUHIRUHWDNHVZKDW\RXoYH


LQIRUPLQJ\RXWKDW&RGH%ORFNVLVFXUUHQWO\QRWWKH HQWHUHGDV&FRGHDQGWUDQVODWHVWKDWWR
GHIDXOWDSSOLFDWLRQIRU&ƬOHV<RXDFRXSOHRIRSWLRQVWROHDYH 0DFKLQH/DQJXDJH7RH[HFXWH&FRGHWKH,'(nEXLOGVoWKHFRGH
HYHU\WKLQJDVLWLVRUDOORZ&RGH%ORFNVWRDVVRFLDWHDOO&ƬOH FKHFNLQJIRUHUURUVWKHQSDVVLWWKURXJKWKHFRPSLOHUWRFKHFN
W\SHV$JDLQZHZRXOGUHFRPPHQG\RXRSWIRUWKHODVWFKRLFHWR VWDQGDUGLVDWLRQDQGFRQYHUWLWWRRQHVDQG]HURVIRUWKHFRPSXWHU
DVVRFLDWH&RGH%ORFNVZLWKHYHU\VXSSRUWHGƬOHW\SH WRDFWXSRQ,WoVUDWKHUFOHYHUVWXƪZKHQ\RXVWRSWRWKLQNDERXWLW

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.

STEP 1 6WDUWE\RSHQLQJWKH$SS6WRUHRQ\RXU0DF$SSOH STEP 3 :KHQ\RXoUHUHDG\FOLFNRQWKH*HWEXWWRQZKLFK


0HQX!$SS6WRUH,QWKH6HDUFKER[HQWHUn;FRGHo WKHQWXUQVLQWR,QVWDOO$SS(QWHU\RXU$SSOH,'
DQGSUHVV5HWXUQ7KHUHDUHPDQ\VXJJHVWLRQVƬOOLQJWKH$SS6WRUH DQG;FRGHEHJLQVWRGRZQORDGDQGLQVWDOO,WPD\WDNHVRPHWLPH
ZLQGRZEXWLWoVWKHƬUVWRSWLRQ;FRGHWKDW\RXQHHGWRFOLFNRQ GHSHQGLQJRQWKHVSHHGRI\RXU,QWHUQHWFRQQHFWLRQ

STEP 2 7DNHDPRPHQWWREURZVHWKURXJKWKHDSSoV STEP 4 :KHQWKHLQVWDOODWLRQLVFRPSOHWHFOLFNRQWKH


LQIRUPDWLRQLQFOXGLQJWKHFRPSDWLELOLW\WRHQVXUH 2SHQEXWWRQWRODXQFK;FRGH&OLFN$JUHHWRWKH
\RXKDYHWKHFRUUHFWYHUVLRQRIPDF26;FRGHUHTXLUHVPDF26 OLFHQFHWHUPVDQGHQWHU\RXUSDVVZRUGWRDOORZ;FRGHWRPDNH
RUODWHUWRLQVWDOODQGZRUN FKDQJHVWRWKHV\VWHP:KHQWKDWLVGRQH;FRGHEHJLQVWRLQVWDOO
DGGLWLRQDOFRPSRQHQWV

90 3\WKRQ &&RGLQJ
+RZWR6HW8S&RQD0DF

STEP 5 :LWKHYHU\WKLQJQRZLQVWDOOHGLQFOXGLQJWKH STEP 8 7KHQH[WVWHSDVNVZKHUHWRFUHDWHD*LW5HSRVLWRU\


DGGLWLRQDOFRPSRQHQWV;FRGHODXQFKHVGLVSOD\LQJ IRUDOO\RXUIXWXUHFRGH&KRRVHDORFDWLRQRQ\RXU
WKHYHUVLRQQXPEHUDORQJZLWKWKUHHFKRLFHVDQGDQ\UHFHQWSURMHFWV 0DFRUDQHWZRUNORFDWLRQDQGFOLFNWKH&UHDWHEXWWRQ:KHQ
WKDW\RXoYHZRUNHGRQZLWKDIUHVKLQVWDOOWKRXJKWKLVLVEODQN \RXoYHGRQHDOOWKDW\RXFDQVWDUWWRFRGH7KHOHIWKDQGSDQH
GHWDLOVWKHƬOHVXVHGLQWKH&SURJUDP\RXoUHFRGLQJ&OLFNRQWKH
PDLQFSSƬOHLQWKHOLVW

STEP 6 6WDUWE\FOLFNLQJRQ&UHDWH1HZ;FRGH3URMHFWWKLV STEP 9 <RXFDQVHHWKDW;FRGHKDVDXWRPDWLFDOO\


RSHQVDWHPSODWHZLQGRZWRFKRRVHZKLFKSODWIRUP FRPSOHWHGDEDVLF+HOOR:RUOGSURJUDPIRU\RX
\RXoUHGHYHORSLQJFRGHIRU&OLFNWKHPDF26WDEWKHQFOLFNWKH :KLOHLWPD\QRWPDNHPXFKVHQVHDWSUHVHQW\RXZLOOGLVFRYHU
&RPPDQG/LQH7RRORSWLRQ&OLFN1H[WWRFRQWLQXH PRUHDV\RXSURJUHVVWKHFRQWHQWLVMXVW;FRGHXWLOLVLQJZKDWoV
DYDLODEOHRQWKH0DF

STEP 7 )LOOLQWKHYDULRXVƬHOGVEXWHQVXUHWKDWWKH STEP 10 :KHQ\RXZDQWWRUXQWKHFRGHFOLFNRQ3URGXFW!


/DQJXDJHRSWLRQDWWKHERWWRPLVVHWWR&VLPSO\ 5XQ<RXPD\EHDVNHGWRHQDEOH'HYHORSHU0RGH
FKRRVHLWIURPWKHGURSGRZQOLVW:KHQ\RXoYHƬOOHGLQWKHƬHOGV RQWKH0DFWKLVLVWRDXWKRULVH;FRGHWRSHUIRUPIXQFWLRQVZLWKRXW
DQGPDGHVXUHWKDW&LVWKHFKRVHQODQJXDJHFOLFNRQWKH1H[W QHHGLQJ\RXUSDVVZRUGHYHU\VHVVLRQ:KHQWKHSURJUDPH[HFXWHV
EXWWRQWRFRQWLQXH WKHRXWSXWLVGLVSOD\HGDWWKHERWWRPRIWKH;FRGHZLQGRZ

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

STEP 1 7KHƬUVWVWHSLVWRHQVXUH/LQX[LVUHDG\IRU\RXU& STEP 3 $PD]LQJO\WKDWoVLW(YHU\WKLQJLVDOUHDG\IRU\RX


FRGHVRFKHFNWKHV\VWHPDQGVRIWZDUHDUHXSWR WRVWDUWFRGLQJ+HUHoVKRZWRJHW\RXUƬUVW&
GDWH2SHQD7HUPLQDODQGHQWHUsudo apt-get update && sudo apt- SURJUDPXSDQGUXQQLQJ,Q/LQX[0LQWWKHPDLQWH[WHGLWRULV;HG
get upgrade7KHQSUHVV5HWXUQDQGHQWHU\RXUSDVVZRUG7KHVH ZKLFK\RXFDQODXQFKE\FOLFNLQJRQWKH0HQXDQGW\SLQJ;HGLQWR
FRPPDQGVXSGDWHWKHHQWLUHV\VWHPDQGDQ\LQVWDOOHGVRIWZDUH WKHVHDUFKEDU&OLFNRQWKH7H[W(GLWRUEXWWRQLQWKHULJKWKDQGSDQH
WRRSHQLW

STEP 2 0RVW/LQX[GLVWURVFRPHSUHLQVWDOOHGZLWKDOO STEP 4 ,Q;HGRUDQ\RWKHUWH[WHGLWRU\RXPD\EHXVLQJ


WKHQHFHVVDU\FRPSRQHQWVWRVWDUWFRGLQJLQ HQWHUWKHOLQHVRIFRGHWKDWPDNHXS\RXU&+HOOR
&KRZHYHULWoVDOZD\VZRUWKFKHFNLQJWRVHHLIHYHU\WKLQJ :RUOGSURJUDP,WoVDOLWWOHGLƪHUHQWWRZKDWWKH0DFSURGXFHG
LVSUHVHQW6WLOOZLWKLQWKH7HUPLQDOHQWHUVudo apt-get
LQFOXGHLRVWUHDP!
install build-essentialDQGSUHVV5HWXUQ,I\RXKDYHWKHULJKW
FRPSRQHQWVQRWKLQJLVLQVWDOOHGLI\RXoUHPLVVLQJVRPHWKHQWKH\ LQWPDLQ
DUHLQVWDOOHGE\WKHFRPPDQG ^
0\ÀUVW&SURJUDP
VWGFRXW´+HOOR:RUOG?Qµ
`

92 3\WKRQ &&RGLQJ
+RZWR6HW8S&LQ/LQX[

STEP 5 :KHQ\RXoYHHQWHUHG\RXUFRGHFOLFN)LOH!6DYH$V STEP 8 %HIRUH\RXFDQH[HFXWHWKH&ƬOH\RXQHHGWR


DQGFKRRVHDIROGHULQZKLFKWRVDYH\RXUSURJUDP FRPSLOHLW,Q/LQX[LWoVFRPPRQWRXVHJDQRSHQ
1DPHWKHƬOHDVKHOORZRUOGFSS LWFDQEHDQ\QDPHDVORQJDVLWKDV VRXUFH&FRPSLOHUDV\RXoUHQRZLQWKHVDPHIROGHUDVWKH&
FSSDVWKHH[WHQVLRQ &OLFN6DYHWRFRQWLQXH ƬOHHQWHUg++ helloworld.cppLQWKH7HUPLQDODQGSUHVV5HWXUQ

STEP 6 7KHƬUVWWKLQJWRQRWLFHLVWKDW;HGKDV STEP 9 ,WWDNHVDVKRUWWLPHZKLOHWKHFRGHLVFRPSLOHGE\


DXWRPDWLFDOO\UHFRJQLVHGWKLVDVD&ƬOHVLQFHWKH JEXWSURYLGLQJWKHUHDUHQRPLVWDNHVRUHUURUVLQ
ƬOHH[WHQVLRQLVQRZVHWWRFSS7KHFRORXUFRGLQJLVSUHVHQWLQWKH WKHFRGH\RXDUHUHWXUQHGWRWKHFRPPDQGSURPSW7KHFRPSLOLQJ
FRGHDQGLI\RXRSHQXSWKHƬOHPDQDJHU\RXFDQDOVRVHHWKDWƬOHoV RIWKHFRGHKDVFUHDWHGDQHZƬOH,I\RXHQWHUOVLQWRWKH7HUPLQDO
LFRQKDV&VWDPSHGRQLW \RXFDQVHHWKDWDORQJVLGH\RXU&ƬOHLVDRXW

STEP 7 :LWK\RXUFRGHQRZVDYHGGURSLQWRWKH7HUPLQDO STEP 10 7KHDRXWƬOHLVWKHFRPSLOHG&FRGH7RUXQ


DJDLQ<RXQHHGWRQDYLJDWHWRWKHORFDWLRQRI WKHFRGHHQWHU./a.outDQGSUHVV5HWXUQ7KH
WKH&ƬOH\RXoYHMXVWVDYHG2XUH[DPSOHLVLQWKH'RFXPHQWV ZRUGVn+HOOR:RUOGoDSSHDURQWKHVFUHHQ+RZHYHUDRXWLVQoW
IROGHUVRZHFDQQDYLJDWHWRLWE\HQWHULQJcd Documents YHU\IULHQGO\7RQDPHLWVRPHWKLQJHOVHSRVWFRPSLOLQJ\RXFDQ
5HPHPEHUWKH/LQX[7HUPLQDOLVFDVHVHQVLWLYHVRDQ\FDSLWDOV UHFRPSLOHZLWKg++ helloworld.cpp -o helloworld7KLVFUHDWHVDQ
PXVWEHHQWHUHGFRUUHFWO\ RXWSXWƬOHFDOOHGKHOORZRUOGZKLFKFDQEHUXQZLWK./helloworld

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.

ECLIPSE (FOLSVHLVDKXJHO\SRSXODU&,'(WKDWRƪHUV CODELITE &RGH/LWHLVDIUHHDQGRSHQVRXUFH,'(WKDWoV


WKHSURJUDPPHUDZHDOWKRIIHDWXUHV,WKDVD UHJXODUO\XSGDWHGDQGDYDLODEOHIRU:LQGRZV
JUHDWFOHDQLQWHUIDFHLVHDV\WRXVHDQGDYDLODEOHIRU:LQGRZV /LQX[DQGPDF26,WoVOLJKWZHLJKWXQFRPSOLFDWHGDQGH[WUHPHO\
/LQX[DQG0DF+HDGRYHUWRwww.eclipse.org/downloads/WR SRZHUIXO<RXFDQƬQGRXWPRUHLQIRUPDWLRQDVZHOODVKRZWR
GRZQORDGWKHODWHVWYHUVLRQ,I\RXoUHVWXFNFOLFNWKH1HHG+HOSOLQN GRZQORDGDQGLQVWDOOLWDWwww.codelite.org/
IRUPRUHLQIRUPDWLRQ

GNAT 7KH*1$73URJUDPPLQJ6WXGLR *36 LVDSRZHUIXO NETBEANS $QRWKHUSRSXODUFKRLFHLV1HW%HDQV7KLV


DQGLQWXLWLYH,'(WKDWVXSSRUWVWHVWLQJGHEXJJLQJ LVDQRWKHUH[FHOOHQW,'(WKDWoVSDFNHGZLWK
DQGFRGHDQDO\VLV7KH&RPPXQLW\(GLWLRQLVIUHHZKHUHDVWKH IHDWXUHVDQGDSOHDVXUHWRXVH1HW%HDQV,'(LQFOXGHVSURMHFWEDVHG
3URYHUVLRQFRVWVKRZHYHUWKH&RPPXQLW\(GLWLRQLVDYDLODEOHIRU WHPSODWHVIRU&WKDWJLYH\RXWKHDELOLW\WREXLOGDSSOLFDWLRQVZLWK
:LQGRZV0DF/LQX[DQGHYHQWKH5DVSEHUU\3L<RXFDQƬQGLWDW G\QDPLFDQGVWDWLFOLEUDULHV)LQGRXWPRUHDWwww.netbeans.org/
www.adacore.com/download features/cpp/index.html.

94 3\WKRQ &&RGLQJ
2WKHU&,'(VWR,QVWDOO

VISUAL STUDIO 0LFURVRIWoV9LVXDO6WXGLRLVD ANJUTA 7KH$QMXWD'HY6WXGLRLVD/LQX[RQO\,'(WKDW


PDPPRWK&,'(WKDWDOORZV\RX IHDWXUHVVRPHRIWKHPRUHDGYDQFHGIHDWXUHV\RX
WRFUHDWHDSSOLFDWLRQVIRU:LQGRZV$QGURLGL26DQGWKHZHE7KH ZRXOGQRUPDOO\ƬQGLQDSDLGVRIWZDUHGHYHORSPHQWVWXGLR7KHUHoV
&RPPXQLW\YHUVLRQLVIUHHWRGRZQORDGDQGLQVWDOOEXWWKHRWKHU D*8,GHVLJQHUVRXUFHHGLWRUDSSZL]DUGLQWHUDFWLYHGHEXJJHUDQG
YHUVLRQVDOORZDIUHHWULDOSHULRG*RWRwww.visualstudio.com/WR PXFKPRUH*RWRwww.anjuta.org/IRUPRUHLQIRUPDWLRQ
VHHZKDWLWFDQGRIRU\RX

QT CREATOR 7KLVFURVVSODWIRUP,'(LVGHVLJQHGWR MONODEVELOP 7KLVH[FHOOHQW,'(DOORZVGHYHORSHUV


FUHDWH&DSSOLFDWLRQVIRUGHVNWRSDQG WRZULWH&FRGHIRUGHVNWRSDQG
PRELOHHQYLURQPHQWV,WFRPHVZLWKDFRGHHGLWRUDQGLQWHJUDWHG ZHEDSSOLFDWLRQVDFURVVDOOWKHPDMRUSODWIRUPV7KHUHoVDQDGYDQFHG
WRROVIRUWHVWLQJDQGGHEXJJLQJDVZHOODVGHSOR\LQJWR\RXFKRVHQ WH[WHGLWRULQWHJUDWHGGHEXJJHUDQGDFRQƬJXUDEOHZRUNEHQFKWR
SODWIRUP,WoVQRWIUHHEXWWKHUHLVDWULDOSHULRGRQRƪHUEHIRUH KHOS\RXFUHDWH\RXUFRGH,WoVDYDLODEOHIRU:LQGRZV0DFDQG/LQX[
UHTXLULQJSXUFKDVLQJwww.qt.io/qt-features-libraries-apis-tools- DQGLVIUHHWRGRZQORDGDQGXVHwww.monodevelop.com/
and-ide/

DEV C++ %ORRGVKHG'HY&GHVSLWHLWVFRORXUIXOQDPH U++ 8OWLPDWHLVDFURVVSODWIRUP&,'(WKDWERDWVDUDSLG


LVDQROGHU,'(WKDWLVIRU:LQGRZVV\VWHPVRQO\ GHYHORSPHQWRIFRGHWKURXJKWKHVPDUWDQGDJJUHVVLYH
+RZHYHUPDQ\XVHUVSUDLVHLWVFOHDQLQWHUIDFHDQGXQFRPSOLFDWHG XVHRI&)RUWKHQRYLFHLWoVDEHDVWRIDQ,'(EXWEHKLQGLWV
ZD\RIFRGLQJDQGFRPSLOLQJ$OWKRXJKWKHUHoVQRWEHHQPXFK FRPSOH[LW\LVDEHDXW\WKDWZRXOGPDNHDGHYHORSHUoVNQHHVJR
XSGDWLQJIRUVRPHWLPHLWoVFHUWDLQO\RQHWRFRQVLGHULI\RXZDQW ZREEO\)LQGRXWPRUHDWwww.ultimatepp.org/index.html
VRPHWKLQJGLƪHUHQWwww.bloodshed.net/devcpp.html

ZZZSFOSXEOLFDWLRQVFRP 95
Index

96 ZZZSFOSXEOLFDWLRQVFRP
C++ Fundamentals

Within this section you can begin to


understand the structure of C++ code
and how to compile and execute that
code. These are the fundamentals of C++,
which teach you the basics such as using
comments, variables, data types, strings
and how to use C++ mathematics.
These are the building blocks of a C++
program. With them, you can form your
own code, produce an output to the
screen and store and retrieve data.

98 Your First C++ Program


100 Structure of a C++ Program
102 Compile and Execute
104 Using Comments
106 Variables
108 Data Types
110 Strings
112 C++ Maths

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.

STEP 1 $VPHQWLRQHGZHoUHXVLQJ:LQGRZVDQGWKH STEP 3 $WWKHPRPHQWLWGRHVQoWORRNOLNHPXFKDQG


ODWHVWYHUVLRQRI&RGH%ORFNVIRUWKHUHVWRIWKH& LWPDNHVHYHQOHVVVHQVHEXWZHoOOJHWWRWKDW
FRGHLQWKLVERRN%HJLQE\ODXQFKLQJ&RGH%ORFNV:KHQRSHQFOLFN LQGXHFRXUVH1RZFOLFNRQ)LOH!6DYH)LOH$V&UHDWHRUƬQGD
RQ)LOH!1HZ!(PSW\)LOHRUSUHVV&WUO6KLIW1RQWKHNH\ERDUG VXLWDEOHORFDWLRQRQ\RXUKDUGGULYHDQGLQWKH)LOH1DPHER[FDOO
LWKHOORZRUOGFSS&OLFNWKH6DYHDVW\SHER[DQGVHOHFW&&ƬOHV
&OLFNWKH6DYHEXWWRQ

STEP 2 1RZ\RXFDQVHHDEODQNVFUHHQZLWKWKHWDE STEP 4 <RXFDQVHHWKDW&RGH%ORFNVKDVQRZFKDQJHG


ODEHOOHG 8QWLWOHGDQGWKHQXPEHURQHLQWKHWRS WKHFRORXUFRGLQJUHFRJQLVLQJWKDWWKHƬOHLVQRZ
OHIWRIWKHPDLQ&RGH%ORFNVZLQGRZ%HJLQE\FOLFNLQJLQWKHPDLQ &FRGH7KLVPHDQVWKDWFRGHFDQEHDXWRVHOHFWHGIURPWKH
ZLQGRZVRWKHFXUVRULVQH[WWRWKHQXPEHURQHDQGHQWHULQJ &RGH%ORFNVUHSRVLWRU\'HOHWHWKHLQFOXGHLRVWUHDP!OLQHDQG
UHHQWHULW<RXFDQVHHWKHDXWRVHOHFWER[HVDSSHDULQJ
LQFOXGHLRVWUHDP!

98 3\WKRQ &&RGLQJ
<RXU)LUVW&3URJUDP

STEP 5 $XWRVHOHFWLRQRIFRPPDQGVLVH[WUHPHO\KDQG\DQG STEP 8 1RWHDJDLQWKHFRORXUFRGLQJFKDQJH3UHVV5HWXUQDW


FXWVRXWSRWHQWLDOPLVW\SLQJ3UHVV5HWXUQWRJHWWR WKHHQGRIWKHSUHYLRXVVWHSoVOLQHDQGWKHQHQWHU
OLQHWKHQHQWHU
VWGFRXW´+HOORZRUOG?Qµ
LQWPDLQ
1RWHWKHUHoVQRVSDFHEHWZHHQWKHEUDFNHWV

STEP 6 2QWKHQH[WOLQHEHORZLQWPDLQ HQWHUDFXUO\EUDFNHW STEP 9 -XVWDVEHIRUH&RGH%ORFNVDXWRFRPSOHWHVWKH


FRGH\RXoUHHQWHULQJLQFOXGLQJSODFLQJDFORVLQJ
^
VSHHFKPDUNDVVRRQDV\RXHQWHUWKHƬUVW'RQoWIRUJHWWKH
7KLVFDQEHGRQHE\SUHVVLQJ6KLIWDQGWKHNH\WRWKHULJKWRI3RQDQ VHPLFRORQDWWKHHQGRIWKHOLQHWKLVLVRQHRIWKHPRVWLPSRUWDQW
(QJOLVK8.NH\ERDUGOD\RXW HOHPHQWVWRD&SURJUDPDQGZHoOOWHOO\RXZK\LQWKHQH[W
VHFWLRQ)RUQRZPRYHWKHFXUVRUGRZQWRWKHFORVLQJFXUO\EUDFNHW
DQGSUHVV5HWXUQ

STEP 7 1RWLFHWKDW&RGH%ORFNVKDVDXWRPDWLFDOO\FUHDWHG STEP 10 7KDWoVDOO\RXQHHGWRGRIRUWKHPRPHQW,WPD\


DFRUUHVSRQGLQJFORVLQJFXUO\EUDFNHWDFRXSOHRI QRWORRNWHUULEO\DPD]LQJEXW&LVEHVWDEVRUEHG
OLQHVEHORZOLQNLQJWKHSDLUDVZHOODVDVOLJKWLQGHQW7KLVLVGXHWR LQVPDOOFKXQNV'RQoWH[HFXWHWKHFRGHDWWKHPRPHQWDV\RXQHHG
WKHVWUXFWXUHRI&DQGLWoVZKHUHWKHPHDWRIWKHFRGHLVHQWHUHG WRORRNDWKRZD&SURJUDPLVVWUXFWXUHGƬUVWWKHQ\RXFDQEXLOG
1RZHQWHU DQGUXQWKHFRGH)RUQRZFOLFNRQ6DYHWKHVLQJOHƮRSS\GLVFLFRQ
0\ÀUVW&SURJUDP

ZZZSFOSXEOLFDWLRQVFRP 99
&)XQGDPHQWDOV

6WUXFWXUHRID
&3URJUDP
&KDVDYHU\GHƬQHGVWUXFWXUHDQGZD\RIGRLQJWKLQJV0LVVVRPHWKLQJRXWHYHQ
DVVPDOODVDVHPLFRORQDQG\RXUHQWLUHSURJUDPZLOOIDLOWREHFRPSLOHGDQGH[HFXWHG
0DQ\DSURIHVVLRQDOSURJUDPPHUKDVIDOOHQIRXORIVORSS\VWUXFWXUH

#INCLUDE <C++ STRUCTURE>


/HDUQLQJWKHEDVLFVRISURJUDPPLQJ\RXEHJLQWRXQGHUVWDQGWKHVWUXFWXUHRIDSURJUDP7KHFRPPDQGVPD\EHGLƪHUHQW
from one language to the next, but you will start to see how the code works.

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

Bjarne Stroustrup, inventor


of C++.
,170$,1Ǔǔ
int main()LQLWLDWHVWKH
GHFODUDWLRQRIDIXQFWLRQZKLFK
LVDJURXSRIFRGHVWDWHPHQWV
XQGHUWKHQDPHnPDLQo$OO
&FRGHEHJLQVDWWKHPDLQ
IXQFWLRQUHJDUGOHVVRIZKHUHLW
DFWXDOO\OLHVZLWKLQWKHFRGH

BRACES
7KHRSHQEUDFH FXUO\EUDFNHWV LVVRPHWKLQJ
WKDW\RXPD\QRWKDYHFRPHDFURVVEHIRUH
HVSHFLDOO\LI\RXoUHXVHGWR3\WKRQ7KH
RSHQEUDFHLQGLFDWHVWKHEHJLQQLQJRIWKH
PDLQIXQFWLRQDQGFRQWDLQVDOOWKHFRGHWKDW
EHORQJVWRWKDWIXQFWLRQ

100 3\WKRQ &&RGLQJ


6WUXFWXUHRID&3URJUDP

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

GREETINGS FROM C++


Compiling and executing C++ code from Code::Blocks is extraordinarily easy; just a matter of clicking an icon and seeing the
result. Here’s how it’s done.

STEP 1 2SHQ&RGH%ORFNVLI\RXKDYHQoWDOUHDG\DQG STEP 3 6WDUWE\FOLFNLQJRQWKH%XLOGLFRQWKH\HOORZFRJ


ORDGXSWKHSUHYLRXVO\VDYHG+HOOR:RUOGFRGH\RX $WWKLVSRLQW\RXUFRGHKDVQRZEHHQUXQWKURXJK
FUHDWHG(QVXUHWKDWWKHUHDUHQRYLVLEOHHUURUVVXFKDVPLVVLQJ WKH&RGH%ORFNVFRPSLOHUDQGFKHFNHGIRUDQ\HUURUV<RXFDQVHH
VHPLFRORQVDWWKHHQGRIWKHVWGFRXWOLQH WKHUHVXOWVRIWKH%XLOGE\ORRNLQJWRWKHERWWRPZLQGRZSDQH$Q\
PHVVDJHVUHJDUGLQJWKHTXDOLW\RIWKHFRGHDUHGLVSOD\HGKHUH

STEP 2 ,I\RXUFRGHLVORRNLQJVLPLODUWRWKHRQHLQRXU STEP 4 1RZFOLFNRQWKH5XQLFRQWKHJUHHQSOD\EXWWRQ


VFUHHQVKRWWKHQORRNWRWKHPHQXEDUDORQJWKHWRS $FRPPDQGOLQHER[DSSHDUVRQ\RXUVFUHHQ
RIWKHVFUHHQ8QGHUWKH)RUWUDQHQWU\LQWKHWRSPRVWPHQX\RXFDQ GLVSOD\LQJWKHZRUGV+HOORZRUOGIROORZHGE\WKHWLPHLWoVWDNHQ
VHHDJURXSRILFRQVD\HOORZFRJJUHHQSOD\EXWWRQDQGDFRJSOD\ WRH[HFXWHWKHFRGHDQGDVNLQJ\RXSUHVVDNH\WRFRQWLQXH:HOO
EXWWRQWRJHWKHU7KHVHDUH%XLOG5XQ%XLOGDQG5XQIXQFWLRQV GRQH\RXMXVWFRPSLOHGDQGH[HFXWHG\RXUƬUVW&SURJUDP

102 3\WKRQ &&RGLQJ


&RPSLOHDQG([HFXWH

STEP 5 3UHVVLQJDQ\NH\LQWKHFRPPDQGOLQHER[FORVHVLW STEP 8 &UHDWHDGHOLEHUDWHHUURULQWKHFRGH5HPRYHWKH


UHWXUQLQJ\RXWR&RGH%ORFNV/HWoVDOWHUWKHFRGH VHPLFRORQIURPWKHFRXWOLQHVRLWUHDGV
VOLJKWO\8QGHUWKHLQFOXGHOLQHHQWHU
FRXW´+HOORZRUOG?Qµ
XVLQJQDPHVSDFHVWG
7KHQGHOHWHWKHVWGSDUWRIWKH&RXWOLQHOLNHVR
FRXW´+HOORZRUOG?Qµ

STEP 6 ,QRUGHUWRDSSO\WKHQHZFKDQJHVWRWKHFRGH\RX STEP 9 1RZFOLFNWKH%XLOGDQG5XQLFRQDJDLQWRDSSO\WKH


QHHGWRUHFRPSLOHEXLOGDQGUXQLWDJDLQ7KLVWLPH FKDQJHVWRWKHFRGH7KLVWLPH&RGH%ORFNVUHIXVHV
KRZHYHU\RXFDQVLPSO\FOLFNWKH%XLOG5XQLFRQWKHFRPELQHG WRH[HFXWHWKHFRGHGXHWRWKHHUURU\RXSXWLQ,QWKH/RJSDQHDW
\HOORZFRJDQGJUHHQSOD\EXWWRQ WKHERWWRPRIWKHVFUHHQ\RXDUHLQIRUPHGRIWKHHUURULQWKLVFDVH
([SHFWHGnoEHIRUHn`oWRNHQLQGLFDWLQJWKHPLVVLQJVHPLFRORQ

STEP 7 -XVWDVZHPHQWLRQHGLQWKHSUHYLRXVSDJHV\RX STEP 10 5HSODFHWKHVHPLFRORQDQGXQGHUWKHFRXWOLQH


GRQoWQHHGWRKDYHVWGFRXWLI\RXDOUHDG\GHFODUH HQWHUDQHZOLQHWR\RXUFRGH
XVLQJQDPHVSDFHVWGDWWKHEHJLQQLQJRIWKHFRGH:HFRXOGKDYH
FRXW´$QGJUHHWLQJVIURP&?Qµ
HDVLO\FOLFNHGWKH%XLOG5XQLFRQWREHJLQZLWKEXWLWoVZRUWKJRLQJ
WKURXJKWKHDYDLODEOHRSWLRQV<RXFDQDOVRVHHWKDWE\EXLOGLQJDQG 7KH?QVLPSO\DGGVDQHZOLQHXQGHUWKHODVWOLQHRIRXWSXWWHGWH[W
UXQQLQJWKHƬOHKDVEHHQVDYHG %XLOGDQG5XQWKHFRGHWRGLVSOD\\RXUKDQGLZRUN

ZZZSFOSXEOLFDWLRQVFRP 103
&)XQGDPHQWDOV

8VLQJ&RPPHQWV
:KLOHFRPPHQWVPD\VHHPOLNHDPLQRUHOHPHQWWRWKHPDQ\OLQHVRIFRGHWKDW
FRPELQHWRPDNHDJDPHDSSOLFDWLRQRUHYHQDQHQWLUHRSHUDWLQJV\VWHPLQDFWXDOIDFW
WKH\oUHSUREDEO\RQHRIWKHPRVWLPSRUWDQWIDFWRUV

THE IMPORTANCE OF COMMENTING


&RPPHQWVLQVLGHFRGHDUHEDVLFDOO\KXPDQUHDGDEOHGHVFULSWLRQV WKDWoVJRLQJWREHREYLRXVWRWKHUHDGHU+RZHYHULI[HTXDOOLQJ]HUR
WKDWGHWDLOZKDWWKHFRGHLVGRLQJDWWKDWSDUWLFXODUSRLQW7KH\GRQoW LVVRPHWKLQJWKDWGUDVWLFDOO\FKDQJHVWKHSURJUDPIRUWKHXVHUVXFK
VRXQGHVSHFLDOO\LPSRUWDQWEXWFRGHZLWKRXWFRPPHQWVLVRQHRI DVWKH\oYHUXQRXWRIOLYHVWKHQLWFHUWDLQO\QHHGVWRFRPPHQWHGRQ
WKHPDQ\IUXVWUDWLQJDUHDVRISURJUDPPLQJUHJDUGOHVVRIZKHWKHU
\RXoUHDSURIHVVLRQDORUMXVWVWDUWLQJRXW (YHQLIWKHFRGHLV\RXURZQ\RXVKRXOGZULWHFRPPHQWVDVLI\RX
ZHUHJRLQJWRSXEOLFO\VKDUHLWZLWKRWKHUV7KLVZD\\RXFDQUHWXUQ
,QVKRUWDOOFRGHVKRXOGEHFRPPHQWHGLQVXFKDPDQQHUDVWR WRWKDWFRGHDQGDOZD\VXQGHUVWDQGZKDWLWZDV\RXGLGRUZKHUHLW
HƪHFWLYHO\GHVFULEHWKHSXUSRVHRIDOLQHVHFWLRQRULQGLYLGXDO ZDV\RXZHQWZURQJRUZKDWZRUNHGEULOOLDQWO\
HOHPHQWV<RXVKRXOGJHWLQWRWKHKDELWRIFRPPHQWLQJDVPXFKDV
SRVVLEOHE\LPDJLQLQJWKDWVRPHRQHZKRGRHVQoWNQRZDQ\WKLQJ &RPPHQWVDUHJRRGSUDFWLVHDQGRQFH\RXXQGHUVWDQGKRZWRDGGD
DERXWSURJUDPPLQJFDQSLFNXS\RXUFRGHDQGXQGHUVWDQGZKDWLWoV FRPPHQWZKHUHQHHGHG\RXVRRQGRLWDVLILWoVVHFRQGQDWXUH
JRLQJWRGRVLPSO\E\UHDGLQJ\RXUFRPPHQWV

,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

104 3\WKRQ &&RGLQJ


8VLQJ&RPPHQWV

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.

STEP 1 8VLQJWKH+HOOR:RUOGFRGHDVDQH[DPSOH\RXFDQ STEP 4 %HFDUHIXOZKHQFRPPHQWLQJHVSHFLDOO\ZLWKEORFN


HDVLO\FRPPHQWRQGLƪHUHQWVHFWLRQVRIWKHFRGH FRPPHQWV,WoVYHU\HDV\WRIRUJHWWRDGGWKHFORVLQJ
XVLQJWKHGRXEOHIRUZDUGVODVK DVWHULVNDQGIRUZDUGVODVKDQGWKXVQHJDWHDQ\FRGHWKDWIDOOVLQVLGH
WKHFRPPHQWEORFN
0\ÀUVW&SURJUDP
FRXW´+HOORZRUOG?Qµ

STEP 2 +RZHYHU\RXFDQDOVRDGGFRPPHQWVWRWKHHQG STEP 5 2EYLRXVO\LI\RXWU\DQGEXLOGDQGH[HFXWHWKH


RIDOLQHRIFRGHWRGHVFULEHLQDEHWWHUZD\ZKDWoV FRGHLWHUURUVRXWFRPSODLQLQJRIDPLVVLQJFXUO\
JRLQJRQ EUDFNHWn`oWRƬQLVKRƪWKHEORFNRIFRGH,I\RXoYHPDGHWKH
HUURUDIHZWLPHVWKHQLWFDQEHWLPHFRQVXPLQJWRJREDFNDQG
FRXW´+HOORZRUOG?Qµ7KLVOLQHRXWSXWVWKH
UHFWLI\7KDQNIXOO\WKHFRORXUFRGLQJLQ&RGH%ORFNVKHOSVLGHQWLI\
ZRUGV¶+HOORZRUOG·7KH?QGHQRWHVDQHZOLQH
FRPPHQWVIURPFRGH
1RWH\RXGRQoWKDYHWRSXWDVHPLFRORQDWWKHHQGRIDFRPPHQW
7KLVLVEHFDXVHLWoVDOLQHLQWKHFRGHWKDWoVLJQRUHGE\WKHFRPSLOHU

STEP 3 <RXFDQFRPPHQWRXWVHYHUDOOLQHVE\XVLQJWKH STEP 6 ,I\RXoUHXVLQJEORFNFRPPHQWVLWoVJRRGSUDFWLVH


IRUZDUGVODVKDQGDVWHULVN LQ&WRDGGDQDVWHULVNWRHDFKQHZOLQHRIWKH
FRPPHQWEORFN7KLVDOVRKHOSV\RXWRUHPHPEHUWRFORVHWKH
 7KLVFRPPHQWFDQ
FRPPHQWEORFNRƪEHIRUHFRQWLQXLQJZLWKWKHFRGH
FRYHUVHYHUDOOLQHV
ZLWKRXWWKHQHHGWRDGGPRUHVODVKHV   7KLVFRPPHQWFDQ
FRYHUVHYHUDOOLQHV
-XVWUHPHPEHUWRƬQLVKWKHEORFNFRPPHQWZLWKWKHRSSRVLWH
ZLWKRXWWKHQHHGWRDGGPRUHVODVKHV 
DVWHULVNDQGIRUZDUGVODVK

ZZZSFOSXEOLFDWLRQVFRP 105
&)XQGDPHQWDOV

9DULDEOHV
9DULDEOHVGLƪHUVOLJKWO\ZKHQXVLQJ&DVRSSRVHGWR3\WKRQ,Q3\WKRQ\RXFDQ
VLPSO\VWDWHWKDWnDoHTXDOVDQGDYDULDEOHLVDVVLJQHG+RZHYHULQ&DYDULDEOHKDV
WREHGHFODUHGZLWKLWVW\SHEHIRUHLWFDQEHXVHG

THE DECLARATION OF VARIABLES


You can declare a C++ variable by using statements within the code. There are several distinct types of variables you can
declare. Here’s how it works.

STEP 1 2SHQXSDQHZEODQN&ƬOHDQGHQWHUWKHXVXDO STEP 3 <RXFDQEXLOGDQGUXQWKHFRGHEXWLWZRQoWGR


FRGHKHDGHUV PXFKRWKHUWKDQVWRUHWKHYDOXHVDQGWRWKH
LQWHJHUVDDQGE7RRXWSXWWKHFRQWHQWVRIWKHYDULDEOHVDGG
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG FRXWD
FRXWµ?Qµ
LQWPDLQ
FRXWE
^
7KHFRXWp?QqSDUW
`
VLPSO\SODFHVDQHZOLQH
EHWZHHQWKHRXWSXWRI
DQG

STEP 2 6WDUWVLPSOHE\FUHDWLQJWZRYDULDEOHVDDQGEZLWK STEP 4 1DWXUDOO\\RXFDQGHFODUHDQHZYDULDEOHFDOOLW


RQHKDYLQJDYDOXHRIDQGWKHRWKHU<RXFDQ UHVXOWDQGRXWSXWVRPHVLPSOHDULWKPHWLF
XVHWKHGDWDW\SHLQWWRGHFODUHWKHVHYDULDEOHV:LWKLQWKHFXUO\
LQWUHVXOW
EUDFNHWVHQWHU
UHVXOW DE
LQWD
FRXWUHVXOW
LQWE
,QVHUWWKHDERYHLQWRWKHFRGHDVSHUWKHVFUHHQVKRW
D 
E 

106 3\WKRQ &&RGLQJ


9DULDEOHV

STEP 5 <RXFDQDVVLJQDYDOXHWRDYDULDEOHDVVRRQDV\RX STEP 8 7KHSUHYLRXVVWHSFUHDWHVWKHYDULDEOH6WDUW/LYHV


GHFODUHLW7KHFRGH\RXoYHW\SHGLQFRXOGORRNOLNH ZKLFKLVDJOREDOYDULDEOH,QDJDPHIRUH[DPSOH
WKLVLQVWHDG DSOD\HUoVOLYHVJRXSRUGRZQGHSHQGLQJRQKRZZHOORUKRZEDG
WKH\oUHGRLQJ:KHQWKHSOD\HUUHVWDUWVWKHJDPHWKH6WDUW/LYHV
LQWD 
UHWXUQVWRLWVGHIDXOWVWDWH+HUHZHoYHDVVLJQHGOLYHVWKHQ
LQWE 
VXEWUDFWHGOHDYLQJOLYHVOHIW
LQWUHVXOW DE
FRXWUHVXOW

STEP 9 7KHPRGHUQ&FRPSLOHULVIDUPRUHLQWHOOLJHQW
WKDQPRVWSURJUDPPHUVJLYHLWFUHGLW:KLOHWKHUH
DUHQXPHURXVGDWDW\SHV\RXFDQGHFODUHIRUYDULDEOHV\RXFDQLQ
IDFWXVHWKHDXWRIHDWXUH
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
DXWRSL 

STEP 6 6SHFLƬFWR&\RXFDQDOVRXVHWKHIROORZLQJ LQWPDLQ


WRDVVLJQYDOXHVWRDYDULDEOHDVVRRQDV\RX
^
GHFODUHWKHP
GRXEOHDUHDUDGLXV 
LQWD  
DUHD SL UDGLXV UDGLXV
LQWE  
FRXWDUHD
7KHQIURPWKH&VWDQGDUGXVLQJFXUO\EUDFNHWV
`
LQWUHVXOW^DE`

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

THE VALUE OF DATA


7KHUHDUHPDQ\GLƪHUHQWGDWDW\SHVDYDLODEOHIRUWKHSURJUDPPHU LQFUHGLEO\DFFXUDWHQXPEHUVEXWWKRVHQXPEHUVDUHRQO\DFFXUDWH
LQ&VXFKDVDQLQWHJHUƮRDWLQJSRLQW%RROHDQFKDUDFWHUDQGVR XSWRWKHƬIWHHQWKGHFLPDOSODFH7KHUHoVDOVRWKHSUREOHPZKHQ
RQ,WoVZLGHO\DFFHSWHGWKDWWKHUHDUHVHYHQEDVLFGDWDW\SHVRIWHQ GLVSOD\LQJVXFKQXPEHUVLQ&XVLQJWKHFRXWIXQFWLRQLQWKDWFRXW
FDOOHG3ULPLWLYH%XLOWLQ7\SHVKRZHYHU\RXFDQFUHDWH\RXURZQ E\GHIDXOWRQO\RXWSXWVWKHƬUVWƬYHGHFLPDOSODFHV<RXFDQFRPEDW
GDWDW\SHVVKRXOGWKHQHHGHYHUDULVHZLWKLQ\RXUFRGH WKDWE\DGGLQJDFRXWSUHFLVLRQ IXQFWLRQDQGDGGLQJDYDOXHLQVLGH
WKHEUDFNHWVEXWHYHQWKHQ\RXoUHVWLOOOLPLWHGE\WKHDFFXUDF\RIWKH
7KHVHYHQEDVLFGDWDW\SHVDUH
GRXEOHGDWDW\SH)RUH[DPSOHWU\WKLVFRGH

TYPE COMMAND LQFOXGHLRVWUHDP!


XVLQJQDPHVSDFHVWG
Integer ,QWHJHU GRXEOH3, 
LQWPDLQ
Floating Point ÁRDW ^
FRXW3,
Character FKDU `

Boolean bool

Double Floating Point GRXEOH

Wide Character ZFKDUBW

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

108 3\WKRQ &&RGLQJ


'DWD7\SHV

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 1 7RFUHDWHDVWULQJ\RXXVHWKHFKDUIXQFWLRQ2SHQD STEP 3 %XLOGDQGUXQWKHFRGHDQGn:HOFRPHoDSSHDUV


QHZ&ƬOHDQGEHJLQZLWKWKHXVXDOKHDGHU RQWKHVFUHHQ:KLOHWKLVLVSHUIHFWO\ƬQHLWoV
QRWDVWULQJ$VWULQJLVDFODVVZKLFKGHƬQHVREMHFWVWKDWFDQEH
LQFOXGHLRVWUHDP!
UHSUHVHQWHGDVDVWUHDPRIFKDUDFWHUVDQGGRHVQoWQHHGWREH
XVLQJQDPHVSDFHVWG
WHUPLQDWHGOLNHDQDUUD\7KHFRGHFDQWKHUHIRUHEHUHSUHVHQWHGDV
LQWPDLQ
LQFOXGHLRVWUHDP!
^ XVLQJQDPHVSDFHVWG
` LQWPDLQ
^
FKDUJUHHW>@ ´:HOFRPHµ
FRXWJUHHW´?Qµ
`

STEP 2 ,WoVHDV\WRFRQIXVHDVWULQJZLWKDQDUUD\+HUHoVDQ STEP 4 ,Q&WKHUHoVDOVRDVWULQJIXQFWLRQZKLFKZRUNVLQ


DUUD\ZKLFKFDQEHWHUPLQDWHGZLWKDQXOOFKDUDFWHU PXFKWKHVDPHZD\8VLQJWKHJUHHWLQJFRGHDJDLQ
\RXFDQHQWHU
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
LQWPDLQ
LQWPDLQ
^
FKDUJUHHW>@ ^¶:·¶H·¶O·¶F·¶R·¶P· ^
¶H·¶?·` VWULQJJUHHW ´:HOFRPHµ
FRXWJUHHW´?Qµ FRXWJUHHW´?Qµ
` `

110 3\WKRQ &&RGLQJ


6WULQJV

STEP 5 7KHUHDUHDOVRPDQ\GLƪHUHQWRSHUDWLRQVWKDW\RX STEP 8 -XVWDV\RXPLJKWH[SHFW\RXFDQPL[LQDQLQWHJHU


FDQDSSO\ZLWKWKHVWULQJIXQFWLRQ)RULQVWDQFHWR DQGVWRUHVRPHWKLQJWRGRZLWKWKHVWULQJ,QWKLV
JHWWKHOHQJWKRIDVWULQJ\RXFDQXVH H[DPSOHZHFUHDWHGLQWOHQJWKZKLFKVWRUHVWKHUHVXOWRIVWULQJ
VL]H DQGRXWSXWVLWWRWKHXVHU
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
LQWPDLQ
LQWPDLQ
^
VWULQJJUHHW ´:HOFRPHµ ^
FRXW´7KHOHQJWKRIWKHVWULQJLV´ LQWOHQJWK
FRXWJUHHWVL]H ´?Qµ VWULQJJUHHW ´+HOORµ
VWULQJJUHHW ´ZRUOGµ
`
VWULQJJUHHW JUHHWJUHHW
OHQJWK JUHHWVL]H 
FRXW´7KHOHQJWKRIWKHFRPELQHGVWULQJV
LV´OHQJWK´?Qµ
`

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 1 &oVPDWKHPDWLFDORSHUDWLRQVIROORZWKH STEP 3 0XOWLSOLFDWLRQDQGGLYLVLRQFDQEHDSSOLHGDVVXFK


VDPHSDWWHUQVDVWKRVHWDXJKWLQVFKRROLQWKDW
LQFOXGHLRVWUHDP!
PXOWLSOLFDWLRQDQGGLYLVLRQWDNHSUHFHGHQFHRYHUDGGLWLRQDQG
XVLQJQDPHVSDFHVWG
VXEWUDFWLRQ<RXFDQDOWHUWKDWWKRXJK)RUQRZFUHDWHDQHZƬOH
DQGHQWHU LQWPDLQ
^
LQFOXGHLRVWUHDP!
ÁRDWQXPEHUV 
XVLQJQDPHVSDFHVWG
QXPEHUV QXPEHUV 7KLVPXOWLSOLHV
LQWPDLQ
E\
^
ÁRDWQXPEHUV  FRXWQXPEHUV´?Qµ
QXPEHUV QXPEHUV7KLVDGGVWRWKH QXPEHUV QXPEHUV$QGWKLVGLYLGHV
LQLWLDO E\
FRXWQXPEHUV´?Qµ FRXWQXPEHUV´?Qµ
QXPEHUV QXPEHUV7KLVVXEWUDFWV `
IURPWKHQHZ
FRXWQXPEHUV´?Qµ
`

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

112 3\WKRQ &&RGLQJ


&0DWKV

STEP 5 7KHLQWHUHVWLQJPDWKVFRQWHQWFRPHVZKHQ\RXFDOO STEP 8 &DOFXODWLQJSRZHUVRIQXPEHUVFDQEHGRQHZLWK


XSRQWKH&0DWK/LEUDU\:LWKLQWKLVKHDGHUDUH
GR]HQVRIPDWKHPDWLFDOIXQFWLRQVDORQJZLWKIXUWKHURSHUDWLRQV LQFOXGHLRVWUHDP!
(YHU\WKLQJIURPFRPSXWLQJFRVLQHWRDUFWDQJHQWZLWKWZR LQFOXGHFPDWK!
SDUDPHWHUVWRWKHYDOXHRI3,<RXFDQFDOOWKHKHDGHUZLWK XVLQJQDPHVSDFHVWG
LQFOXGHLRVWUHDP! LQWPDLQ
LQFOXGHFPDWK! ^
XVLQJQDPHVSDFHVWG ÁRDWQXPEHU 
LQWPDLQ FRXWQXPEHU´WRWKHSRZHURILV´
^ SRZ QXPEHU ´?Qµ
FRXWQXPEHU´WRWKHSRZHURILV´
`
SRZ QXPEHU ´?Qµ
FRXWQXPEHU´WRWKHSRZHURILV´
SRZ QXPEHU ´?Qµ
`

STEP 6 6WDUWE\JHWWLQJWKHVTXDUHURRWRIDQXPEHU STEP 9 +HUHZHFUHDWHGDƮRDWFDOOHGQXPEHUZLWKWKH


YDOXHRIDQGWKHSRZ YDULDEOHSRZHU LVZKHUH
WKHFDOFXODWLRQKDSSHQV2IFRXUVH\RXFDQFDOFXODWHSRZHUVDQG
LQFOXGHLRVWUHDP!
VTXDUHURRWVZLWKRXWXVLQJYDULDEOHV)RUH[DPSOHSRZ  
LQFOXGHFPDWK!
RXWSXWVWKHVDPHYDOXHDVWKHƬUVWFRXWOLQHLQWKHFRGH
XVLQJQDPHVSDFHVWG
LQWPDLQ
^
ÁRDWQXPEHU 
FRXW´7KHVTXDUHURRWRI´QXPEHU´
LV´VTUW QXPEHU ´?Qµ
`

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

There’s a satisfying feeling when you


program code that asks the user for
input, then uses that input to produce
something that the user can see. Even if
it’s simply asking for someone’s name,
and displaying a personal welcome
message, it’s a big leap forward.
User interaction, character literals,
GHƬQLQJFRQVWDQWVDQGƬOHLQSXWDQG
output are all covered in the following
pages. All of which help you to understand
how a C++ program works better.

116 User Interaction


118 Character Literals
120 'HƬQLQJ&RQVWDQWV
122 File 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 1 $Q\WKLQJWKDW\RXZDQWWKHXVHUWRLQSXWLQWRWKH STEP 3 7KHFLQFRPPDQGZRUNVLQWKHRSSRVLWHZD\IURP


SURJUDPQHHGVWREHVWRUHGVRPHZKHUHLQWKH WKHFRXWFRPPDQG:LWKWKHƬUVWFRXWOLQH\RXoUH
V\VWHPPHPRU\VRLWFDQEHUHWULHYHGDQGXVHG7KHUHIRUHDQ\ RXWSXWWLQJn:KDWLV\RXUDJHoWRWKHVFUHHQDVLQGLFDWHGZLWKWKH
LQSXWPXVWƬUVWEHGHFODUHGDVDYDULDEOHVRLWoVUHDG\WREHXVHGE\ FKHYURQV&LQXVHVRSSRVLWHIDFLQJFKHYURQVLQGLFDWLQJDQLQSXW7KH
WKHXVHU6WDUWE\FUHDWLQJDEODQN&ƬOHZLWKKHDGHUV LQSXWLVSXWLQWRWKHLQWHJHUDJHDQGFDOOHGXSLQWKHVHFRQGFRXW
FRPPDQG%XLOGDQGUXQWKHFRGH

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µ
`

116 3\WKRQ &&RGLQJ


8VHU,QWHUDFWLRQ

STEP 5 7KHSULQFLSDOZRUNVWKHVDPHDVWKHSUHYLRXVFRGH STEP 8 :KLOHFLQZRUNVZHOOIRUPRVWLQSXWWDVNVLWGRHV


7KHXVHUoVLQSXWWKHLUQDPHLVVWRUHGLQDVWULQJ KDYHDOLPLWDWLRQ&LQDOZD\VFRQVLGHUVVSDFHVDVD
EHFDXVHLWFRQWDLQVPXOWLSOHFKDUDFWHUVDQGUHWULHYHGLQWKHVHFRQG WHUPLQDWRUVRLWoVGHVLJQHGIRUMXVWVLQJOHZRUGVQRWPXOWLSOHZRUGV
FRXWOLQH$VORQJDVWKHYDULDEOHnQDPHoGRHVQoWFKDQJHWKHQ\RX +RZHYHUJHWOLQHWDNHVFLQDVWKHƬUVWDUJXPHQWDQGWKHYDULDEOHDV
FDQUHFDOOLWZKHUHYHU\RXOLNHLQ\RXUFRGH WKHVHFRQG
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
LQWPDLQ
^
VWULQJP\VWU
FRXW´(QWHUDVHQWHQFH?Qµ
STEP 6 <RXFDQFKDLQLQSXWUHTXHVWVWRWKHXVHUEXWMXVW
JHWOLQH FLQP\VWU 
PDNHVXUH\RXKDYHDYDOLGYDULDEOHWRVWRUHWKH
LQSXWWREHJLQZLWK/HWoVDVVXPH\RXZDQWWKHXVHUWRHQWHUWZR FRXW´<RXUVHQWHQFHLV´P\VWUVL]H 
ZKROHQXPEHUV ´FKDUDFWHUVORQJ?Qµ
LQFOXGHLRVWUHDP! `
XVLQJQDPHVSDFHVWG
LQWPDLQ
^
LQWQXPQXP
FRXW´(QWHUWZRZKROHQXPEHUV´
FLQ!!QXP!!QXP
FRXW´\RXHQWHUHG´QXP´DQG´
QXP´?Qµ STEP 9 %XLOGDQGH[HFXWHWKHFRGHWKHQHQWHUDVHQWHQFH
ZLWKVSDFHV:KHQ\RXoUHGRQHWKHFRGHUHDGVWKH
`
QXPEHURIFKDUDFWHUV,I\RXUHPRYHWKHJHWOLQHOLQHDQGUHSODFHLW
ZLWKFLQ!!P\VWUDQGWU\DJDLQWKHUHVXOWGLVSOD\VWKHQXPEHURI
FKDUDFWHUVXSWRWKHƬUVWVSDFH

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.

STEP 1 &UHDWHDQHZ&ƬOHDQGHQWHUWKHUHOHYDQWKHDGHUV STEP 3 ,I\RXZDQWHGWRLQVHUWVSHHFKTXRWHVLQVLGHDFRXW


VWDWHPHQW\RXZRXOGKDYHWRXVHDEDFNVODVKDVLW
LQFOXGHLRVWUHDP! DOUHDG\XVHVTXRWHV
XVLQJQDPHVSDFHVWG
LQFOXGHLRVWUHDP!
LQWPDLQ XVLQJQDPHVSDFHVWG
^
LQWPDLQ
^
` FRXW´+HOORXVHU7KLVLVKRZWRXVH
?µTXRWHV?µµ
`

STEP 2 <RXoYHDOUHDG\H[SHULHQFHGWKH?QFKDUDFWHUOLWHUDO STEP 4 7KHUHoVHYHQDFKDUDFWHUOLWHUDOWKDWFDQWULJJHUDQ


SODFLQJDQHZOLQHZKHUHYHULWoVFDOOHG7KHOLQHcout DODUP,Q:LQGRZVLWoVWKHQRWLƬFDWLRQVRXQG
<< “Hello\n” << “I’m a C++\n” << “Program\n”; RXWSXWVWKUHHOLQHV WKDWFKLPHVZKHQ\RXXVH?D7U\WKLVFRGHDQGWXUQXS\RXUVRXQG
RIWH[WHDFKVWDUWLQJDIWHUWKHODVW?Q
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
LQWPDLQ
^
FRXW´$/$50?Dµ
`

118 3\WKRQ &&RGLQJ


&KDUDFWHU/LWHUDOV

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.

ESCAPE SEQUENCE CODE CHARACTER


\\ Backslash

\’ Single Quote

\” Double Quote (Speech Marks)

\? 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

\uxxxx Unicode (UTF-8)

\Uxxxxxxxx Unicode (UTF-16)

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 1 <RXFDQXVHWKHGHƬQHSUHSURFHVVRUWRGHƬQHDQ\ STEP 3 1RWHWKHFDSLWDOVIRUGHƬQHGFRQVWDQWVLWoV


FRQVWDQWV\RXZDQWLQRXUFRGH6WDUWE\FUHDWLQJD FRQVLGHUHGJRRGSURJUDPPLQJSUDFWLVHWRGHƬQHDOO
QHZ&ƬOHFRPSOHWHZLWKWKHXVXDOKHDGHUV FRQVWDQWVLQFDSLWDOV+HUHWKHDVVLJQHGYDOXHVDUHDQGVR
OHWoVFDOOWKHPXS
LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG
LQWPDLQ
GHÀQH/(1*7+
^
GHÀQH:,'7+
` GHÀQH+(,*+7
LQWPDLQ
^
FRXW´/HQJWKLV´/(1*7+´?Qµ
FRXW´:LGWKLV´:,'7+´?Qµ
FRXW´+HLJKWLV´+(,*+7´?Qµ
`

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

120 3\WKRQ &&RGLQJ


'HƬQLQJ&RQVWDQWV

STEP 5 <RXFDQDOVRGHƬQHRWKHUHOHPHQWVDVDFRQVWDQW STEP 8 $QRWKHUPHWKRGRIGHƬQLQJDFRQVWDQWLVZLWKWKH


)RUH[DPSOHLQVWHDGRIXVLQJ?QIRUDQHZOLQHLQWKH FRQVWNH\ZRUG8VHFRQVWWRJHWKHUZLWKDGDWDW\SH
FRXWVWDWHPHQW\RXFDQGHƬQHLWDWWKHVWDUWRIWKHFRGH YDULDEOHDQGYDOXHFRQVWW\SHYDULDEOH YDOXH8VLQJ3LDVDQH[DPSOH
LQFOXGHLRVWUHDP! LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG XVLQJQDPHVSDFHVWG
GHÀQH/(1*7+ LQWPDLQ
GHÀQH:,'7+
^
GHÀQH+(,*+7
FRQVWGRXEOH3, 
GHÀQH1(:/,1(¶?Q·
FRXW´7KHYDOXHRI3LLV´3,HQGO
LQWPDLQ `
^
FRXW´/HQJWKLV´/(1*7+1(:/,1(
FRXW´:LGWKLV´:,'7+1(:/,1(
FRXW´+HLJKWLV´+(,*+71(:/,1(
`

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 1 7KHƬUVWWDVNLVWRFUHDWHDQHZ&ƬOHDQGDORQJ STEP 3 :HoYHLQFOXGHGFRPPHQWVLQWKHVFUHHQVKRWRIVWHS


ZLWKWKHXVXDOKHDGHUV\RXQHHGWRLQFOXGHWKHQHZ WRKHOS\RXXQGHUVWDQGWKHSURFHVV<RXFUHDWHG
IVWUHDPKHDGHU DVWULQJFDOOHGQDPHWRVWRUHWKHXVHUoVLQSXWWHGQDPH<RXDOVR
FUHDWHGDWH[WƬOHFDOOHGQDPHW[W ZLWKWKHRIVWUHDPQHZƬOHDQG
LQFOXGHLRVWUHDP!
QHZƬOHRSHQOLQHV DVNHGWKHXVHUIRUWKHLUQDPHDQGVWRUHGLWDQG
LQFOXGHIVWUHDP!
WKHQZULWWHQWKHGDWDWRWKHƬOH
8VLQJQDPHVSDFHVWG
LQWPDLQ
^

STEP 4 7RUHDGWKHFRQWHQWVRIDƬOHDQGRXWSXWLWWRWKH
VFUHHQ\RXQHHGWRGRWKLQJVVOLJKWO\GLƪHUHQWO\
)LUVW\RXQHHGWRFUHDWHDVWULQJYDULDEOHWRVWRUHWKHƬOHoVFRQWHQWV
OLQHE\OLQH WKHQRSHQWKHƬOHXVHJHWOLQHWRUHDGWKHƬOHOLQHE\
OLQHDQGRXWSXWWKRVHOLQHVWRWKHVFUHHQ)LQDOO\FORVHWKHƬOH

STEP 2 %HJLQE\DVNLQJDXVHUIRUWKHLUQDPHDQGZULWLQJ VWULQJOLQH


WKDWLQIRUPDWLRQWRDƬOH<RXQHHGWKHXVXDOVWULQJ LIVWUHDPQHZÀOH ´QDPHW[Wµ 
WRVWRUHWKHQDPHDQGJHWOLQHWRDFFHSWWKHLQSXWIURPWKHXVHU
FRXW´&RQWHQWVRIWKHÀOH´HQGO
LQFOXGHLRVWUHDP!
JHWOLQH QHZÀOHOLQH 
LQFOXGHIVWUHDP!
FRXWOLQHHQGO
XVLQJQDPHVSDFHVWG
QHZÀOHFORVH 
LQWPDLQ
^
VWULQJQDPH
RIVWUHDPQHZÀOH
QHZÀOHRSHQ ´QDPHW[Wµ 
FRXW´(QWHU\RXUQDPH´HQGO
JHWOLQH FLQQDPH 
QHZÀOHQDPHHQGO
QHZÀOHFORVH 
`

122 3\WKRQ &&RGLQJ


)LOH,QSXW2XWSXW

STEP 5 7KHFRGHDERYHLVJUHDWIRURSHQLQJDƬOHZLWKRQH STEP 8 -XVWDV\RXPLJKWH[SHFW\RXFDQZULWHDOPRVW


RUWZROLQHVEXWZKDWLIWKHUHDUHPXOWLSOHOLQHV"+HUH DQ\WKLQJ\RXOLNHWRDƬOHIRUUHDGLQJHLWKHULQ
ZHRSHQHGDWH[WƬOHRIWKHSRHP&LPPHULDE\5REHUW(+RZDUG 1RWHSDGRUYLDWKHFRQVROHWKURXJKWKH&FRGH
VWULQJOLQH VWULQJQDPH
LIVWUHDPQHZÀOH ´F??XVHUV??GDYLG?? LQWDJH
'RFXPHQWV??&LPPHULDW[Wµ 
RIVWUHDPQHZÀOH
FRXW´&LPPHULDE\5REHUW(+RZDUG?Qµ QHZÀOHRSHQ ´QDPHW[Wµ 
HQGO
FRXW´(QWHU\RXUQDPH´HQGO
ZKLOH JHWOLQH QHZÀOHOLQH JHWOLQH FLQQDPH 
FRXWOLQHHQGO
QHZÀOHQDPHHQGO
QHZÀOHFORVH 
FRXW´?Q+RZROGDUH\RX´HQGO
FLQ!!DJH
QHZÀOHDJHHQGO
QHZÀOHFORVH 

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

STEP 7 <RXFDQDOVRVHHWKDWWKHORFDWLRQRIWKHWH[WƬOH STEP 10 +HUHoVDQH[HUFLVHVHHLI\RXFDQFUHDWHFRGHWR


&LPPHULDW[WLVQoWLQWKHVDPHIROGHUDVWKH& ZULWHVHYHUDOGLƪHUHQWHOHPHQWVWRDWH[WƬOH<RX
SURJUDP:KHQZHFUHDWHGWKHƬUVWQDPHW[WƬOHLWZDVZULWWHQWR FDQKDYHDXVHUoVQDPHDJHSKRQHQXPEHUHWF0D\EHHYHQWKH
WKHVDPHIROGHUZKHUHWKHFRGHZDVORFDWHGWKLVLVGRQHE\GHIDXOW YDOXHRI3LDQGYDULRXVPDWKHPDWLFDOHOHPHQWV,WoVDOOJRRGSUDFWLFH
7RVSHFLI\DQRWKHUIROGHU\RXQHHGWRXVHGRXEOHEDFNVODVKHVDV
SHUWKHFKDUDFWHUOLWHUDOVHVFDSHVHTXHQFHFRGH

ZZZSFOSXEOLFDWLRQVFRP 123
Index

Loops and
Decision Making

124 ZZZSFOSXEOLFDWLRQVFRP
Loops and Decision Making

Loops and repetition are one of the most


important factors of any programming
language. Good use of a loop creates a
program that does exactly what you want
it to and delivers the desired outcome
without issues or errors.
Without loops and decision making
events within the code, your program will
QHYHUEHDEOHWRRƪHUWKHXVHUDQ\FKRLFH
It’s this understanding of choice that
elevates your skills as a programmer and
makes for much better code.

126 While Loop


128 For Loop
130 Do… While Loop
132 If Statement
134 If… Else Statement

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 1 &OHDUZKDW\RXoYHGRQHVRIDUDQGFUHDWHDQHZ& STEP 3 )LUVW\RX


ƬOH7KHUHoVQRQHHGIRUDQ\H[WUDKHDGHUVDWWKH QHHGWR
PRPHQWVRDGGWKHVWDQGDUGKHDGHUVDVSHUXVXDO FUHDWHDFRQGLWLRQVRXVHD
YDULDEOHFDOOHGQXPDQGJLYH
LQFOXGHLRVWUHDP!
LWWKHYDOXH1RZFUHDWH
XVLQJQDPHVSDFHVWG
WKHZKLOHORRSVWDWLQJWKDW
LQWPDLQ DVORQJDVQXPLVOHVVWKDQ
WKHORRSLVWUXH:LWKLQ
^
WKHORRSWKHYDOXHRIQXP
` LVGLVSOD\HGDQGDGGVXQWLO
LWoVPRUHWKDQ

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
`

126 3\WKRQ &&RGLQJ


:KLOH/RRS

STEP 6 ,WoVLPSRUWDQWWRUHPHPEHUQRWWRDGGDVHPLFRORQ STEP 9 <RXFDQIXUWKHUH[SDQGWKHFRGHWRHQDEOHHDFK


DWWKHHQGRIDZKLOHVWDWHPHQW:K\":HOODV\RX ZRUGRIWKHSRHPWRDSSHDUHYHU\VHFRQG7RGR
NQRZWKHVHPLFRORQUHSUHVHQWVWKHHQGRID&OLQHRIFRGH,I VR\RXQHHGWRSXOOLQDQHZOLEUDU\ZLQGRZVK!7KLVLVD:LQGRZV
\RXSODFHRQHDWWKHHQGRIDZKLOHVWDWHPHQW\RXUORRSZLOOEH RQO\OLEUDU\DQGZLWKLQLW\RXFDQXVHWKH6OHHS IXQFWLRQ
SHUPDQHQWO\VWXFNXQWLO\RXFORVHWKHSURJUDP
LQFOXGHLRVWUHDP!
LQFOXGHIVWUHDP!
LQFOXGHZLQGRZVK!
XVLQJQDPHVSDFHVWG
LQWPDLQ
^
VWULQJZRUG
LIVWUHDPQHZÀOH ´&??XVHUV??GDYLG??
'RFXPHQWV??&LPPHULDW[Wµ 
FRXW´&LPPHULDE\5REHUW(+RZDUG?Qµ
HQGO
ZKLOH QHZÀOH!!ZRUG
STEP 7 ,QRXUH[DPSOHLIZHZHUHWRH[HFXWHWKHFRGH ^
WKHYDOXHRIQXPZRXOGEHDVVHWE\WKHLQW FRXWZRUGHQGO
VWDWHPHQW:KHQWKHFRGHKLWVWKHZKLOHVWDWHPHQWLWUHDGV 6OHHS  
WKDWZKLOHWKHFRQGLWLRQRIEHLQJOHVVWKDQLVWUXHORRS7KH `
VHPLFRORQFORVHVWKHOLQHVRWKHORRSUHSHDWVEXWLWQHYHUDGGVWR
UHWXUQ
QXPDVLWZRQoWFRQWLQXHWKURXJKWKHFRPSRXQGVWDWHPHQW
`

STEP 8 <RXFDQPDQLSXODWHWKHZKLOHVWDWHPHQWWRGLVSOD\ STEP 10 6OHHS ZRUNVLQPLOOLVHFRQGVVR6OHHS  LV


GLƪHUHQWUHVXOWVGHSHQGLQJRQZKDWFRGHOLHVZLWKLQ RQHVHFRQG6OHHS  LVWHQVHFRQGVDQGVR
WKHORRS)RUH[DPSOHWRUHDGWKHSRHP&LPPHULDZRUGE\ZRUG RQ&RPELQLQJWKHVOHHSIXQFWLRQ DORQJZLWKWKHKHDGHULWQHHGV 
\RXZRXOGHQWHU DQGDZKLOHORRSHQDEOHV\RXWRFRPHXSZLWKVRPHLQWHUHVWLQJ
FRXQWGRZQFRGH
LQFOXGHLRVWUHDP!
LQFOXGHIVWUHDP! LQFOXGHLRVWUHDP!
XVLQJQDPHVSDFHVWG LQFOXGHZLQGRZVK!
XVLQJQDPHVSDFHVWG
LQWPDLQ
LQWPDLQ
^
VWULQJZRUG ^
LIVWUHDPQHZÀOH ´&??XVHUV??GDYLG?? LQWD 
'RFXPHQWV??&LPPHULDW[Wµ 
ZKLOH D 
FRXW´&LPPHULDE\5REHUW(+RZDUG?Qµ ^
HQGO FRXWDHQGO
D D
ZKLOH QHZÀOH!!ZRUG
6OHHS  
^
`
FRXWZRUGHQGO
` FRXW´?Q%ODVW2IIµHQGO
UHWXUQ 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 1 &UHDWHDQHZ&ƬOHZLWKWKHVWDQGDUGKHDGHUV STEP 4 $IWHUWKHORRS\RXFUHDWHGDFRPSRXQGVWDWHPHQW


LQEUDFHV FXUO\EUDFNHWV WKDWGLVSOD\VWKHFXUUHQW
LQFOXGHLRVWUHDP! YDOXHRIWKHLQWHJHUQXP(YHU\WLPHWKHIRUORRSUHSHDWVLWVHOIWKH
XVLQJQDPHVSDFHVWG VHFRQGDQGWKLUGVWDJHVRIWKHORRSLWDGGVXQWLOWKHFRQGLWLRQ
LVIDOVH7KHORRSWKHQHQGVDQGWKHFRGHFRQWLQXHVHQGLQJQHDWO\
LQWPDLQ
ZLWKUHWXUQ
^

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
`

128 3\WKRQ &&RGLQJ


)RU/RRS

STEP 6 :LWKWKHFRXQWGRZQFRGHGRQoWIRUJHWWRLQFOXGH STEP 9 +HUHoVDQH[DPSOHRIDIRUORRSGLVSOD\LQJWKH


WKHZLQGRZVKOLEUDU\VR\RXFDQXVHWKH6OHHS PXOWLSOLFDWLRQWDEOHVRIDXVHULQSXWWHGQXPEHU
FRPPDQG%XLOGDQGUXQWKHFRGHLQWKHFRPPDQGFRQVROH\RXFDQ +DQG\IRUVWXGHQWV
VHHWKHQXPEHUVWRFRXQWGRZQLQRQHVHFRQGLQFUHPHQWVXQWLO
^
LWUHDFKHV]HURDQG%ODVW2ƪDSSHDUV
LQWQ
FRXW´(QWHUDQXPEHUWRYLHZLWVWLPHV
WDEOH´
FLQ!!Q
IRU LQWL L L ^
FRXWQ´[´L´ ´Q L
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 1 %HJLQZLWKDQHZEODQN&ƬOHDQGHQWHUWKH STEP 3 1RZKHUHoVDORRNDWWKHVWUXFWXUHRIDGRfZKLOH


VWDQGDUGKHDGHUV ORRS)LUVW\RXFUHDWHDQLQWHJHUFDOOHGQXPZLWK
WKHYDOXHRI1RZWKHGRfZKLOHORRSVEHJLQV7KHFRGHLQVLGH
LQFOXGHLRVWUHDP!
WKHERG\RIWKHORRSLVH[HFXWHGDWOHDVWRQFHWKHQWKHFRQGLWLRQLV
XVLQJQDPHVSDFHVWG
FKHFNHGIRUHLWKHUWUXHRUIDOVH
LQWPDLQ
^

STEP 2 %HJLQZLWKDVLPSOHQXPEHUFRXQW

^
LQWQXP  STEP 4 ,IWKHFRQGLWLRQLVWUXHWKHORRSLVH[HFXWHG7KLV
FRQWLQXHVXQWLOWKHFRQGLWLRQLVIDOVH:KHQWKH
GR FRQGLWLRQKDVEHHQH[SUHVVHGDVIDOVHWKHORRSWHUPLQDWHVDQGWKH
^ FRGHFRQWLQXHV7KLVPHDQV\RXFDQFUHDWHDORRSZKHUHWKHFRGH
FRXW´1XPEHU´QXPHQGO FRQWLQXHVXQWLOWKHXVHUHQWHUVDFHUWDLQFKDUDFWHU
QXP QXP
`
ZKLOH QXP 
UHWXUQ
`

130 3\WKRQ &&RGLQJ


'Rf:KLOH/RRS

STEP 5 ,I\RXZDQWFRGHWRDGGXSXVHULQSXWWHGQXPEHUV STEP 8 )LQDOO\WKHZKLOHVWDWHPHQWFKHFNVWKHFRQGLWLRQ


XQWLOWKHXVHUHQWHUV]HUR RIWKHYDULDEOHQXPEHU,IWKHXVHUKDVHQWHUHG
]HURWKHQWKHORRSLVWHUPLQDWHGLIQRWWKHQLWFRQWLQXHV
^
LQGHƬQLWHO\:KHQWKHXVHUƬQDOO\HQWHUV]HURWKHYDOXHRIVXP
ÁRDWQXPEHUVXP 
WKHWRWDOYDOXHRIDOOWKHXVHUoVLQSXWLVGLVSOD\HG7KHORRSDQG
FRXW´ 3URJUDPWRH[HFXWHD'R
WKHSURJUDPWKHQHQGV
:KLOHORRSFRQWLQXRXVO\ µHQGO
FRXW´?Q(QWHUWRVWRSDQGGLVSOD\WKH
VXPRIDOOWKHQXPEHUVHQWHUHG?QµHQGO
FRXW´?Q
?QµHQGO
GR^
FRXWµ?Q3OHDVHHQWHUDQXPEHU´
FLQ!!QXPEHU
VXP QXPEHU
`
ZKLOH QXPEHU  
STEP 9 8VLQJWKHFRXQWGRZQDQG%ODVW2ƪFRGHXVHG
FRXWµ7RWDOVXPRIDOOQXPEHUV´VXP SUHYLRXVO\DGRfZKLOHORRSZRXOGORRNOLNH
UHWXUQ ^
LQWD 
`
GR
^
FRXWDHQGO
D D
`
ZKLOH D  

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 2 ,ILVEHVWH[SODLQHGZKHQ\RXXVHDQXPEHU STEP 3 :KDWoVJRLQJRQKHUH"7REHJLQDQLQWHJHUFDOOHG


EDVHGFRQGLWLRQ QXPZDVFUHDWHGDQGDVVLJQHGZLWKWKHYDOXHRI
7KHLIVWDWHPHQWFRPHVQH[WDQGLQWKLVFDVHZHoYHLQVWUXFWHGWKH
^
FRGHWKDWLIWKHFRQGLWLRQWKHYDOXHRIQXPLVOHVVWKDQWKHQWKH
LQWQXP 
FRGHZLWKLQWKHEUDFHVVKRXOGEHH[HFXWHG
LI QXP
^
FRXW´7KHQXPEHULVOHVVWKDQµ
HQGO
`
FRXW´9DOXHRIQXPEHULV´QXPHQGO
STEP 4 7KHVHFRQGFRXWVWDWHPHQWGLVSOD\VWKHFXUUHQW
UHWXUQ YDOXHRIQXPDQGWKHSURJUDPWHUPLQDWHVVDIHO\,WoV
HDV\WRVHHKRZWKHLIVWDWHPHQWZRUNVLI\RXZHUHWRFKDQJHWKH
`
LQLWLDOYDOXHRIQXPIURPWR

132 3\WKRQ &&RGLQJ


,I6WDWHPHQW

STEP 5 :KHQ\RXFKDQJHWKHYDOXHWRDQ\WKLQJDERYH STEP 7 7KHFRGHLQ6WHSLVVLPSOLVWLFEXWHƪHFWLYH)LUVWZH


WKHQEXLOGDQGUXQWKHFRGH\RXFDQVHHWKDW FUHDWHGDƮRDWLQJSRLQWLQWHJHUFDOOHGWHPSWKHQD
WKHRQO\OLQHWREHRXWSXWWHGWRWKHVFUHHQLVWKHVHFRQGFRXW GRfZKLOHORRSWKDWDVNVWKHXVHUWRHQWHUWKHFXUUHQWWHPSHUDWXUH
VWDWHPHQWGLVSOD\LQJWKHFXUUHQWYDOXHRIQXP7KLVLVEHFDXVHWKH
LQLWLDOLIVWDWHPHQWLVIDOVHVRLWLJQRUHVWKHFRGHZLWKLQWKHEUDFHV

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.

STEP 1 %HJLQZLWKDQHZ&ƬOHDQGWKHVWDQGDUGKHDGHUV STEP 3 7KHƬUVWOLQHLQWKHFRGHFUHDWHVWKHLQWHJHUFDOOHG


QXPDQGJLYHVLWDYDOXHRI7KHLIVWDWHPHQW
LQFOXGHLRVWUHDP! FKHFNVWRVHHLIWKHYDOXHRIQXPLVOHVVWKDQWKLUW\DQGLILWLVLW
XVLQJQDPHVSDFHVWG RXWSXWVp7KHQXPEHULVOHVVWKDQqWRWKHFRQVROH
LQWPDLQ
^
`

STEP 2 /HWoVH[SDQGWKHFRGHIURPWKH,I6WDWHPHQWRQWKH STEP 4 7KHHOVHFRPSDQLRQWRLIFKHFNVLIWKHQXPEHULV


JUHDWHUWKDQDQGLIVRWKHQGLVSOD\Vp7KHQXPEHU
SUHYLRXVSDJH
LVJUHDWHUWKDQqWRWKHFRQVROHDQGƬQDOO\WKH
^ FRGHLVWHUPLQDWHGVDWLVIDFWRULO\
LQWQXP 
LI QXP
^
FRXW´7KHQXPEHULVOHVVWKDQµ
HQGO
`
HOVH
^ STEP 5 <RXFDQFKDQJHWKHYDOXHRIQXPLQWKHFRGHRU
\RXFDQLPSURYHWKHFRGHE\DVNLQJWKHXVHUWR
FRXW´7KHQXPEHULVJUHDWHUWKDQµ
HQWHUDYDOXH
HQGO
` ^
LQWQXP
UHWXUQ
FRXW´(QWHUDQXPEHU´
`
FLQ!!QXP
LI QXP
^
FRXW´7KHQXPEHULVOHVVWKDQµ
HQGO
`
HOVH
^
FRXW´7KHQXPEHULVJUHDWHUWKDQµ
HQGO
`
UHWXUQ
`

134 3\WKRQ &&RGLQJ


,If(OVH6WDWHPHQW

STEP 6 7KHFRGHZRUNVWKHVDPHZD\DV\RXZRXOGH[SHFW STEP 8 <RXFDQWDNHWKLVXSDQRWFKDQGFUHDWHDWZRSOD\HU


EXWZKDWLI\RXZDQWHGWRGLVSOD\VRPHWKLQJLIWKH QXPEHUJXHVVLQJJDPH%HJLQE\FUHDWLQJWKHYDULDEOHV
XVHUHQWHUHGWKHQXPEHU"7U\WKLV
LQWQXPJXHVVWULHV 
^
LQWQXP FRXW´ 7ZRSOD\HUQXPEHUJXHVVLQJJDPH
µHQGO
FRXW´(QWHUDQXPEHU´
FRXW´?Q3OD\HU2QHHQWHUDQXPEHUIRU
FLQ!!QXP
3OD\HU7ZRWRJXHVV´HQGO
LI QXP FLQ!!QXP
^ FRXWVWULQJ ¶?Q· 
FRXW´7KHQXPEHULVOHVVWKDQµ
HQGO
` STEP 9 7KHFRXWVWULQJ n?Qo OLQHFOHDUVWKHVFUHHQVR
3OD\HU7ZRGRHVQoWVHHWKHHQWHUHGQXPEHU1RZ
HOVHLI QXP!
\RXFDQFUHDWHDGRfZKLOHORRSWRJHWKHUZLWKLIfHOVH
^
FRXW´7KHQXPEHULVJUHDWHUWKDQµ GR
HQGO ^
` FRXW´?Q3OD\HU7ZRHQWHU\RXUJXHVV´
HOVHLI QXP  FLQ!!JXHVV
^ WULHV
FRXW´7KHQXPEHULVH[DFWO\µ LI JXHVV!QXP
HQGO ^
` FRXW´?Q7RR+LJK?QµHQGO
`
UHWXUQ
HOVHLI JXHVVQXP
` ^
FRXW´?Q7RR/RZ?QµHQGO
`
HOVHLI JXHVV QXP
^
FRXW´:HOOGRQH<RXJRWLWLQ´
WULHV´JXHVVHVµHQGO
`
`ZKLOH JXHVV QXP 
UHWXUQ

STEP 7 7KHQHZDGGLWLRQWRWKHFRGHLVZKDWoVNQRZQDVD STEP 10


QHVWHGLIfHOVHVWDWHPHQW7KLVDOORZV\RXWRFKHFN
*UDEDVHFRQGSOD\HUWKHQ
IRUPXOWLSOHFRQGLWLRQV,QWKLVFDVHLIWKHXVHUHQWHUVDQXPEHUOHVV
EXLOGDQGUXQWKHFRGH
WKDQJUHDWHUWKDQRUDFWXDOO\LWVHOIDGLƪHUHQWRXWFRPHLV
3OD\HU2QHHQWHUVWKH
SUHVHQWHGWRWKHP
QXPEHUWREHJXHVVHG
WKHQ3OD\HU7ZRFDQWDNH
DVPDQ\JXHVVHVDVWKH\
QHHGWRJHWWKHULJKW
QXPEHU:DQWWRPDNH
LWKDUGHU"0D\EHXVH
GHFLPDOQXPEHUV

ZZZSFOSXEOLFDWLRQVFRP 135
Index

136 ZZZSFOSXEOLFDWLRQVFRP
Working with Code

By now you should have the essential


building blocks of how to program in both
Python and C++. You can create code,
VWRUHGDWDDVNWKHXVHUTXHVWLRQVRƪHU
them a choice and repeat functions until
they prove true and provide the correct
output. What next then?
7KLVƬQDOVHFWLRQORRNVDWVRPHRIWKH
more common coding mistakes that
Python and C++ beginners make and
where you can turn to next to continue
your programming adventure.

138 Common Coding Mistakes


140 Beginner Python Mistakes
142 Beginner C++ Mistakes
144 Where Next?

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\

SMALL CHUNKS EASY VARIABLES


,WZRXOGEHZRQGHUIXOWREHDEOHWR 0HDQLQJIXOQDPLQJIRUYDULDEOHVLVDPXVWWRHOLPLQDWH
ZRUNOLNH1HRIURP7KH0DWUL[PRYLHV FRPPRQFRGLQJPLVWDNHV+DYLQJOHWWHUVRIWKHDOSKDEHW
6LPSO\DVN\RXURSHUDWRUORDGVLWLQWR LVƬQHEXWZKDWKDSSHQVZKHQWKHFRGHVWDWHVWKHUHoV
\RXUPHPRU\DQG\RXLQVWDQWO\NQRZ DSUREOHPZLWK[YDULDEOH,WoVQRWWRRGLƯFXOWWRQDPH
HYHU\WKLQJDERXWWKHVXEMHFW6DGO\ YDULDEOHVOLYHVPRQH\SOD\HUDQGVRRQ
WKRXJKZHFDQoWGRWKDW7KHƬUVW
PDMRUSLWIDOOLVVRPHRQHWU\LQJWROHDUQ
WRRPXFKWRRTXLFNO\6RWDNHFRGLQJLQ
VPDOOSLHFHVDQGWDNH\RXUWLPH

//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.

VERSIONS INDENTS, TABS AND SPACES


7RDGGWRWKHFRQIXVLRQWKDWPRVWEHJLQQHUVDOUHDG\IDFHZKHQ 3\WKRQXVHVSUHFLVHLQGHQWDWLRQVZKHQGLVSOD\LQJLWVFRGH7KH
FRPLQJLQWRSURJUDPPLQJ3\WKRQKDVWZROLYHYHUVLRQVRILWV LQGHQWVPHDQWKDWWKHFRGHLQWKDWVHFWLRQLVDSDUWRIWKHSUHYLRXV
ODQJXDJHDYDLODEOHWRGRZQORDGDQGXVH7KHUHLV3\WKRQYHUVLRQ VWDWHPHQWDQGQRWVRPHWKLQJOLQNHGZLWKDQRWKHUSDUWRIWKHFRGH
[DQG3\WKRQ[7KH[YHUVLRQLVWKHPRVWUHFHQWDQG 8VHIRXUVSDFHVWRFUHDWHDQLQGHQWQRWWKH7DENH\
WKHRQHZHoGUHFRPPHQGVWDUWLQJ%XWYHUVLRQ[FRGHGRHVQoW
DOZD\VZRUNZLWK[FRGHDQGYLFHYHUVD

THE INTERNET COMMENTING


(YHU\SURJUDPPHUKDVDQGGRHVDWVRPHSRLQWJRRQWKH,QWHUQHW $JDLQZHPHQWLRQFRPPHQWLQJ,WoVDKXJHO\LPSRUWDQWIDFWRULQ
DQGFRS\VRPHFRGHWRLQVHUWLQWRWKHLURZQURXWLQHV7KHUHoV SURJUDPPLQJHYHQLI\RXoUHWKHRQO\RQHZKRLVHYHUJRLQJWRYLHZ
QRWKLQJZURQJZLWKXVLQJRWKHUVoFRGHEXW\RXQHHGWRNQRZKRZ WKHFRGH\RXQHHGWRDGGFRPPHQWVDVWRZKDWoVJRLQJRQ,VWKLV
WKHFRGHZRUNVDQGZKDWLWGRHVEHIRUH\RXJREOLQGO\UXQQLQJLWRQ IXQFWLRQZKHUH\RXORVHDOLIH":ULWHDFRPPHQWDQGKHOS\RXRU
\RXURZQFRPSXWHU DQ\RQHHOVHVHHZKDWoVJRLQJRQ

140 3\WKRQ &&RGLQJ


%HJLQQHU3\WKRQ0LVWDNHV

COUNTING LOOPS COLONS


5HPHPEHUWKDWLQ3\WKRQDORRSGRHVQoWFRXQWWKHODVWQXPEHU\RX ,WoVFRPPRQIRUEHJLQQHUVWRIRUJHWWRDGGDFRORQWRWKHHQGRID
VSHFLI\LQDUDQJH6RLI\RXZDQWHGWKHORRSWRFRXQWIURPWR VWUXFWXUDOVWDWHPHQWVXFKDV
WKHQ\RXZLOOQHHGWRXVH
FODVV+DQJPDQ
Q OLVW UDQJH   GHIJXHVV VHOIOHWWHU 
:KLFKZLOOUHWXUQWR $QGVRRQ7KHFRORQLVZKDWVHSDUDWHVWKHFRGHDQGFUHDWHVWKH
LQGHQWVWRZKLFKWKHIROORZLQJFRGHEHORQJVWR

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.

UNDECLARED IDENTIFIERS STD NAMESPACE


$FRPPRQ&PLVWDNHDQGWREHKRQHVWDFRPPRQPLVWDNHZLWK 5HIHUHQFLQJWKH6WDQGDUG/LEUDU\LVFRPPRQIRUEHJLQQHUV
PRVWSURJUDPPLQJODQJXDJHVLVZKHQ\RXWU\DQGRXWSXWDYDULDEOH WKURXJKRXWWKHLUFRGHEXWLI\RXPLVVWKHVWGHOHPHQWRID
WKDWGRHVQoWH[LVW'LVSOD\LQJWKHYDOXHRI[RQVFUHHQLVƬQHEXWQRW VWDWHPHQW\RXUFRGHHUURUVRXWZKHQFRPSLOLQJ<RXFDQFRPEDW
LI\RXKDYHQoWWROGWKHFRPSLOHUZKDWWKHYDOXHRI[LVWREHJLQZLWK WKLVE\DGGLQJ
XVLQJQDPHVSDFHVWG
8QGHUWKHLQFOXGHSDUWDQGVLPSO\XVLQJFRXWFLQDQGVRRQIURP
WKHQRQ

SEMICOLONS GCC OR G++


5HPHPEHUWKDWHDFKOLQHRID&SURJUDPPXVWHQGZLWKD ,I\RXoUHFRPSLOLQJLQ/LQX[WKHQ\RXZLOOQRGRXEWFRPHDFURVV
VHPLFRORQ,ILWGRHVQoWWKHQWKHFRPSLOHUWUHDWVWKHOLQHZLWKWKH JFFDQGJ,QVKRUWJFFLVWKH*QX&RPSLOHU&ROOHFWLRQ RU*QX
PLVVLQJVHPLFRORQDVWKHVDPHOLQHZLWKWKHQH[WVHPLFRORQRQ7KLV &&RPSLOHUDVLWXVHGWREHFDOOHG DQGJLVWKH*QX WKH&
FUHDWHVDOOPDQQHURISUREOHPVZKHQWU\LQJWRFRPSLOHVRGRQoW YHUVLRQ RIWKHFRPSLOHU,I\RXoUHFRPSLOLQJ&WKHQ\RXQHHGWR
IRUJHWWKRVHVHPLFRORQV XVHJDVWKHLQFRUUHFWFRPSLOHUGULYHUVZLOOEHXVHG

142 3\WKRQ &&RGLQJ


%HJLQQHU&0LVWDNHV

&200(176Ǔ$*$,1ǔ TOO MANY BRACES


,QGHHGWKHPLVWDNHRIQHYHUPDNLQJDQ\FRPPHQWVRQFRGHLVEDFN 7KHEUDFHVRUFXUO\EUDFNHWVDUHEHJLQQLQJDQGHQGLQJPDUNHUV
RQFHPRUH$VZHoYHSUHYLRXVO\EHPRDQHGWKHODFNRIUHDGDEOH DURXQGEORFNVRIFRGH6RIRUHYHU\^\RXPXVWKDYHD`2IWHQLWoV
LGHQWLƬHUVWKURXJKRXWWKHFRGHPDNHVLWYHU\GLƯFXOWWRORRNEDFNDW HDV\WRLQFOXGHRUPLVVRXWRQHRUWKHRWKHUIDFLQJEUDFHZKHQ
KRZLWZRUNHGIRUERWK\RXDQGVRPHRQHHOVH8VHPRUHFRPPHQWV ZULWLQJFRGHXVXDOO\ZKHQZULWLQJLQDWH[WHGLWRUDVDQ,'(DGGV
WKHPIRU\RX

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?

TWITTER OPEN PROJECTS


7ZLWWHULVQoWDOOWUROOVDQGDQWDJRQLVWVDPRQJWKHZHOOSXEOLFLVHG /RRNIRURSHQVRXUFHSURMHFWVWKDW\RXOLNHWKHVRXQGRIDQGRƪHU
YLWULRODUHVRPHJHQXLQHSHRSOHZKRDUHPRUHWKDQZLOOLQJWRVSUHDG WRFRQWULEXWHWRWKHFRGHWRNHHSLWDOLYHDQGXSWRGDWH7KHUHDUH
WKHLUFRGLQJNQRZOHGJH:HUHFRPPHQG\RXƬQGDIHZZKR\RXFDQ PLOOLRQVRISURMHFWVWRFKRRVHIURPVRFRQWDFWDIHZDQGVHHZKHUH
UHODWHWRDQGIROORZWKHP2IWHQWKH\SRVWJUHDWWLSVKDFNVDQGƬ[HV WKH\QHHGKHOS,WPD\RQO\EHDPLQRUFRGHXSGDWHEXWLWoVDQREOH
IRUFRPPRQFRGLQJSUREOHPV RFFXSDWLRQIRUFRGHUVWRJHWLQWR

KEEP CODING SHARE SKILLS


,I\RXoYHPDVWHUHG3\WKRQIDLUO\ZHOOWKHQWXUQ\RXUDWWHQWLRQWR %HFRPHPRUHDFWLYHRQFRGLQJDQGGHYHORSPHQWNQRZOHGJHVLWHV
&RUHYHQ&6WLOONHHS\RXU3\WKRQVNLOOVJRLQJEXWOHDUQLQJDQHZ VXFKDV6WDFN([FKDQJH,I\RXKDYHWKHVNLOOVWRVWDUWDQGKHOSRWKHUV
FRGLQJODQJXDJHNHHSVWKHROGEUDLQWLFNLQJRYHUQLFHO\DQGJLYH\RXD RXWQRWRQO\ZLOO\RXIHHOUHDOO\JRRGIRUGRLQJVREXW\RXFDQDOVR
YLHZLQWRDQRWKHUFRPPXQLW\DQGKRZWKH\GRWKLQJVGLƪHUHQWO\ OHDUQDORW\RXUVHOIE\LQWHUDFWLQJZLWKRWKHUPHPEHUV

144 3\WKRQ &&RGLQJ


:KHUH1H[W"

GOING MOBILE PORTFOLIOS


7KHPRELOHPDUNHWLVDJUHDWSODFHWRWHVW\RXUFRGLQJVNLOOVDQG ,I\RXoYHOHDUQHGKRZWRFRGHZLWKDQH\HIRUDGHYHORSHUMRELQ
SUHVHQWDQ\JDPHVRUDSSV\RXoYHFUHDWHG,I\RXUDSSLVJRRGWKHQ WKHIXWXUHWKHQLWoVZRUWKVWDUWLQJWREXLOGXSDQRQOLQHSRUWIROLR
ZKRNQRZVLWFRXOGEHWKHQH[WJUHDWWKLQJWRDSSHDURQWKHDSS RIFRGH/RRNDWMRESRVWLQJVDQGVHHZKDWVNLOOVWKH\UHTXLUH
VWRUHV,WoVDJRRGOHDUQLQJH[SHULHQFHQHYHUWKHOHVVDQGVRPHWKLQJ WKHQOHDUQDQGFRGHVRPHWKLQJZLWKWKRVHVNLOOVDQGDGGLWWRWKH
ZRUWKFRQVLGHULQJ SRUWIROLR:KHQLWFRPHVWRDSSO\LQJLQFOXGHDOLQNWRWKHSRUWIROLR

ONLINE LEARNING TEACH CODE


2QOLQHFRXUVHVDUHJRRGH[DPSOHVRIZKHUHWRWDNH\RXUFRGLQJ &DQ\RXWHDFK",I\RXUFRGLQJVNLOOVDUHVSRWRQFRQVLGHU
VNLOOVQH[WHYHQLI\RXVWDUWIURPWKHEHJLQQHUOHYHODJDLQ2IWHQ DSSURDFKLQJDFROOHJHRUXQLYHUVLW\WRVHHLIWKH\KDYHQHHGIRUD
DQRQOLQHFRXUVHIROORZVDVWULFWFRGLQJFRQYHQWLRQVRLI\RXoUHVHOI SURJUDPPLQJODQJXDJHWHDFKHUSHUKDSVDSDUWWLPHRUHYHQLQJ
WDXJKWWKHQLWPLJKWEHZRUWKVHHLQJKRZRWKHUGHYHORSHUVOD\RXW FRXUVH,IQRWWHDFKLQJWKHQFRQVLGHUFUHDWLQJ\RXURZQ<RX7XEH
WKHLUFRGHDQGZKDWoVFRQVLGHUHGDFFHSWDEOH KRZWRFRGHFKDQQHO

SHARE CODE HARDWARE PROJECTS


*HWVKDULQJHYHQLI\RXWKLQN\RXUFRGHLVQoWYHU\JRRG7KH &RQWULEXWLQJWRKDUGZDUHSURMHFWVLVDJUHDWUHVRXUFHIRUSURYLQJ\RXU
FULWLFLVPDGYLFHDQGFRPPHQWV\RXUHFHLYHEDFNKHOS\RXLURQRXW FRGHZLWKRWKHUVDQGOHDUQLQJIURPRWKHUFRQWULEXWRUV0DQ\RIWKH
DQ\LVVXHVZLWK\RXUFRGHDQG\RXDGGWKHPDOOWR\RXUFKHFNOLVW GHYHORSHUERDUGVKDYHSRVWLQJVIRUFRGHUVWRDSSO\WRIRUKDUGZDUH
$OWHUQDWLYHO\\RXUFRGHPLJKWEHXWWHUO\DPD]LQJEXW\RXZRQoW SURMHFWVXVLQJXQLTXHFRGHWRJHWWKHPRVWIURPWKHKDUGZDUHWKDWoV
NQRZXQOHVV\RXVKDUHLW EHLQJGHVLJQHG

ZZZSFOSXEOLFDWLRQVFRP 145
ad The Complete
Re Manual Series
Available on

For a full list of titles available please visit:


www.pclpublications.com
Get Your Exclusive
FREE Gift Worth
£9.99 Here!
Download
Your FREE
Copy of
Tech Shopper
Magazine
Head over to your web
browser and follow these
simple instructions...

1/ Enter the following URL: www.pclpublications.com/exclusives


2/ Sign up/in and from the listings of our exclusive customer
downloads, highlight the Tech Shopper Magazine option.
3/ Enter your unique download code (Listed below) in the “Enter
download code” bar.
4/ Click the Download Now! Button and your file will automatically
download.
5/ Your file is a high resolution PDF file, which is compatible with
the majority of customer devices/platforms.

Exclusive Download Code: PCL37862RE


ˁ˂ˇʸʭˇ˛˜˦˜˦˔˟˜ˠ˜˧˘˗˥˘˔˗˘˥ˢ˙˙˘˥˥˨ˡˡ˜ˡ˚˙˥ˢˠʤ˦˧ʷ˘˖˘ˠ˕˘˥ʥʣʥʦ˧ˢʤ˦˧ʽ˨˟ˬʥʣʥʧʡ
ˇ˘˥ˠ˦˔ˡ˗˖ˢˡ˗˜˧˜ˢˡ˦˔ˣˣ˟ˬ˔ˡ˗˖˔ˡ˕˘˙ˢ˨ˡ˗˔˧˪˪˪ʡˣ˖˟ˣ˨˕˟˜˖˔˧˜ˢˡ˦ʡ˖ˢˠ
Want to master your Coding?
Then don’t miss our NEW Programming
magazine on digital platforms NOW!

Visit us at: www.pclpublications.com


$5BC?47:B@BC>=6>:C%B<AB;" 8B-A9B,C!@C<B4>A=;C@5BC76<95>;B<;C;?:BC<B;7?=;A2A:A@1C@?C8B@B<4A=B >9+=?0:B8.B8,C B:B->=@C.<>75A9CA4>.B<1C<B7<?869B8C0A@5C
@5BC;6A@>2A:A@1C?3C@5A;C2??+C>=8CA@;C9?=@B=@C3?<C05>@B-B<C76<7?;B, 9?6<@B;1C?3C)B=?-?/CB0:B@@'C(>9+><8/CB::/CA9<?;?3@/C%>4;6=./
 *=1CA4>.B;C<B7<?869B8C?=C@5BC3<?=@C>=8C2>9+C9?-B<C><BC;?:B:1C3?< )A=6CA=@/C&*%*/C>=8C*77:B,C*88A@A?=>:CA4>.B;C9?=@>A=B8C0A@5A=
#CC!% &"C '' ###'##' 8B;A.=C76<7?;B;C>=8C><BC=?@C<B7<B;B=@>@A-BC?3C9?=@B=@, @5A;C762:A9>@A?=C><BC<B7<?869B8C6=8B<C:A9B=9BC3<?4C%56@@B<;@?9+,
(62:A;5B8C21"C(>7B<96@C)A4A@B8C BC>8-A;BC>::C7?@B=@A>:C261B<;C@?C95B9+C:A;@A=.C7<A?<C@?C76<95>;B (<A9B;/CA=@B<=>@A?=>:C>->A:>2A:A@1/C<>@A=.;/C@A@:B;C>=8C9?=@B=@C><BC
A.A@>:C8A;@<A26@A?=C21"C(?9+B@4>.;CCA=A? 3?<C9?=3A<4>@A?=C?3C>9@6>:C9?=@B=@,C*::CB8A@?<A>:C?7A=A?=C5B<BA=CA; ;62B9@C@?C95>=.B,
C'#C(>7B<96@C)A4A@B8C*::C<A.5@;C<B;B<-B8,C&?C7><@C?3C@5A;C @5>@C?3C@5BC<B-AB0B<C'C>;C>=CA=8A-A86>:C'C>=8CA;C=?@C<B7<B;B=@>@A-BC?3 *::CA=3?<4>@A?=C0>;C9?<<B9@C>@C@A4BC?3C762:A9>@A?=,C%?4BC9?=@B=@
762:A9>@A?=C4>1C2BC<B7<?869B8CA=C>=1C3?<4/C;@?<B8CA=C>C<B@<AB->: @5BC762:A;5B<C?<C>=1C?3CA@;C>33A:A>@B;,C$5B<B3?<BC@5BC762:A;5B<C5?:8; 4>1C5>-BC2BB=C7<B-A?6;:1C762:A;5B8CA=C?@5B<C-?:64B;C?<C@A@:B;,
;1;@B4C?<CA=@B.<>@B8CA=@?C>=1C?@5B<C762:A9>@A?=/C8>@>2>;BC?<C =?C<B;7?=;A2A:A@1CA=C<B.><8C@?CB8A@?<A>:C?7A=A?=C>=8C9?=@B=@,
9?44B<9A>:C7<?.<>4;C0A@5?6@C@5BCB7<B;;C0<A@@B=C7B<4A;;A?=C?3 $5A;CA;C>=CA=8B7B=8B=@C762:A9>@A?=C>=8C>;C;695C8?B;C=?@C    
@5BC762:A;5B<,C=8B<C=?C9A<964;@>=9B;C;5?6:8C@5A;C762:A9>@A?=C>=8 =B9B;;><A:1C<B3:B9@C@5BC-AB0;C?<C?7A=A?=;C?3C@5BC4>=63>9@6<B<;C?< B.A;@B<B8CA=C=.:>=8CC>:B;C&?"C#
A@;C9?=@B=@;C2BC<B;?:8/C:?>=B8C?6@C?<C6;B8CA=C>=1C3?<4C21C0>1C?3 5><80><BC>=8C;?3@0><B/C>77:A9>@A?=;C?<C7<?869@;C9?=@>A=B8C0A@5A=,
@<>8BC0A@5?6@C@5BC762:A;5B<;C0<A@@B=C7B<4A;;A?=,C5A:BC0BC7<A8BC $5A;C762:A9>@A?=CA;C=?@CB=8?<;B8C?<C>;;?9A>@B8CA=C>=1C0>1C0A@5C * $!%!& CCC?<C?6<C:>@B;@C4B8A>C7>9+;C7:B>;BC9?=@>9@"C
?6<;B:-B;C?=C@5BC6>:A@1C?3C@5BCA=3?<4>@A?=C0BC7<?-A8B/C(>7B<96@ (1@5?=/C/C$5BC)A=6C?6=8>@A?=/C$5BC >;72B<<1C(AC?6=8>@A?=/ <>8C<>=9A;C'CB4>A:"C2<>8 7>7B<96@:@8,9?,6+
)A4A@B8C<B;B<-B;C@5BC<A.5@C=?@C@?C2BC5B:8C<B;7?=;A2:BC3?<C>=1C * C?:8A=./C>=?=A9>:C)@8/CB2A>=C(<?B9@/C)A=6CA=@/CA9<?;?3@/ B2C'C000,79:762:A9>@A?=;,9?4
4A;@>+B;C?<CA=>996<>9AB;C3?6=8C0A@5A=C@5BC@B@C?3C@5A;C762:A9>@A?=, )B=?-?/CB::/CB0:B@@'(>9+><8/C*77:BC>=8C%>4;6=.C?<C>=1C !&$ &*$!&*)C)!&%!& CC(>7B<96@C)A4A@B8C5>;C4>=1C.<B>@
6BC@?C@5BC=>@6<BC?3C@5BC@B95CA=86;@<1/C@5BC762:A;5B<C9>==?@C >;;?9A>@BC?<C>33A:A>@BC9?47>=1,C*::C9?71<A.5@;/C@<>8B4><+;C>=8C 762:A9>@A?=;C>=8C>::C><BC>->A:>2:BC3?<C:A9B=;A=.C0?<:80A8B,C
.6><>=@BBC@5>@C>::C>77;C>=8C;?3@0><BC0A::C0?<+C?=CB-B<1C-B<;A?=C?3 <B.A;@B<B8C@<>8B4><+;C3?<C@5BC<B;7B9@A-BC9?47>=AB;C><BC ?<C4?<BCA=3?<4>@A?=CB4>A:"C.>:B 79:762:A9>@A?=;,9?4

You might also like