Beginner's Step-By-Step Coding Course Learn Computer Programming The Easy Way, UK Edition
Beginner's Step-By-Step Coding Course Learn Computer Programming The Easy Way, UK Edition
Beginner's Step-By-Step Coding Course Learn Computer Programming The Easy Way, UK Edition
STEP-BY-STEP
CODING
COURSE
LEARN COMPUTER PROGRAMMING THE EASY WAY
DK DELHI
Senior editor Suefa Lee
Project art editor Sanjay Chauhan
Project editor Tina Jindal
Art editors Rabia Ahmad, Simar Dhamija,
Sonakshi Singh
Assistant editor Sonali Jindal
Jacket designer Tanya Mehrotra
DTP designer Jaypal Chauhan
Pre-production manager Balwant Singh
Senior managing editor Rohan Sinha
Managing art editor Sudakshina Basu
DK LONDON
Project editor Miezan van Zyl
Project art editor Francis Wong
Managing editor Angeles Gavira Guerrero
Managing art editor Michael Duffy
Associate publishing director Liz Wheeler
Publishing director Jonathan Metcalf
Art director Karen Self
Jacket design development manager Sophia MTT
Producer (pre-production) Gillian Reid
Senior producer Meskerem Berhane
ISBN: 978–0–2413–5873–3
Printed in China
A WORLD OF IDEAS:
SEE ALL THERE IS TO KNOW
www.dk.com
CONTRIBUTORS
Clif Kussmaul is Principal Consultant at Green Mango Dr Tammy Pirmann is a computer science professor
Associates, LLC, where he designs and implements at the College of Computing and Informatics at Drexel
research projects, faculty development workshops, and University in Philadelphia, Pennsylvania. She is an
classroom activities. Formerly, he taught for 20 years at award-winning educator, recognized for her focus on
college level and worked full and part time in software equity in computer science education and for promoting
development and consulting. Craig was a Fulbright guided inquiry in secondary computing education. She
Specialist at Ashesi University and a Fulbright-Nehru was the co-chair of the Computer Science Teachers
Scholar at the University of Kerala. He has received Association’s Standards Committee and an advisor on
multiple grants from the US National Science Foundation, the K12 CS Framework.
Google, and other sources to support his work with
Process Oriented Guided Inquiry Learning (POGIL), Dr Martin Goodfellow is a Lecturer in the
Free and Open Source Software (FOSS), and other topics Computer and Information Sciences department
in computer science education. at the University of Strathclyde. He has also developed
educational computer science content and workshops
Sean McManus writes and co-writes inspiring coding for other organizations worldwide, including Google,
books, including Mission Python, Scratch Programming Oracle, CoderDojo Scotland, Glasgow Life, Makeblock,
in Easy Steps, Cool Scratch Projects in Easy Steps, and the BBC.
and Raspberry Pi For Dummies.
Jonathan Hogg is an audiovisual artist who has
Craig Steele is a specialist in computer science spent the last decade constructing works out of
education who helps people develop digital skills in combinations of software, electronics, sound,
a fun and creative environment. He runs Digital Skills light, wood, plastic, and metal. He often works
Education, and is a founder of CoderDojo in Scotland, with young people, running creative and technical
which runs free coding clubs for young people. Craig workshops. Prior to art, Jonathan designed and
has run digital workshops with the Raspberry Pi developed software in the London finance industry.
Foundation, Glasgow Science Centre, Glasgow School He began his career researching and teaching
of Art, and the BBC micro:bit project. Computing at the University of Glasgow. The
only constant in all of this has been Python.
Dr Claire Quigley studied Computing Science at
Glasgow University, where she obtained a BSc and David Krowitz learnt to program in the early
PhD. She has worked in the Computer Laboratory at 1980’s on a Commodore VIC-20 plugged into a
Cambridge University and at Glasgow Science Centre. portable black-and-white TV set. He has been studying
She is currently STEM Co-ordinator with Glasgow Life, and practising computer programming ever since.
and lectures part-time at the Royal Conservatoire of Nowadays, Dave spends his time building microservice
Scotland, working with BEd Music students. Claire architecture for businesses, whilst expounding his love
has been involved in running CoderDojo Scotland since for object-oriented design patterns and software
its initial session in 2012. architecture. See dotpusher.com for more info.
CONTENTS FOREWORD
INTRODUCTION
10
12
What is programming? 16
Programming languages 22
SCRATCH
What is Scratch? 28 Logic and decisions 44
Manipulating data 42
PYTHON
What is Python? 94 Libraries 116
Functions 112
WEB TECHNOLOGIES
How the Web works 206 JavaScript debugging 280
Build a better website 214 PROJECT: Animating the web page 288
Foreword
If you’ve ever asked a teenager for help with your Starting at the absolute beginning, this guide will
computer, you’ll probably have felt the crushing introduce the jargon and tools you’ll need to get
weight of self-doubt as you realize you understood programming in the most popular and versatile
less than half of what they just said. That same software languages. The pages are also peppered
“helpful teen” would most likely scoff at the idea of a with interesting facts about coding and careers,
book – made out of honest-to-goodness old-fashioned together with step-by-step projects to get you going.
paper – on the subject of learning to code. “Just Even if you decide not to become the next Mark
Google it, there are loads of tutorials on Youtube!” Zuckerberg, the skills you’ll learn will be a great
they might say. asset when talking to technology professionals
But not everyone is high-bandwidth, multi-screen and will also help develop your own logic and
ready. Plus, when you are carefully stepping through problem-solving abilities.
the creation of your first lines of code, a physical page It was an ancient Greek philosopher who first noted
with your fingertip planted firmly on the next step can the irony “the only constant in life is change”, and
act as a valuable lifeline to the tangible world. this has never been more true than in the world of
If you’re reading this as a teenager yourself, computing. Maybe you’re looking for a different career
congratulations on discovering life beyond YouTube! or want to learn a new skill to support a hobby or
You’re about to find out that the creators of this guide passion project? Or perhaps you just want to be able
are exactly the kind of industry-defining professionals to talk to your tech-obsessed teenager in a language
whose content channels, blogs, and social media posts that will impress them!
you’d end up on if you did decide to Google “learning For those curious about coding, this guide is full of
to code”. straightforward information, in easily digestible bites,
As a life-long gamer and computing enthusiast written by some of the leading educators and experts
I’ve been reporting on technology for almost a quarter in their field. There is jargon, but it’s jargon you’ll
of a century. In that time, I’ve witnessed seismic understand as you get to it. Is learning about coding
changes in the way we interact with the world. A.I., essential? No. Will it help you understand and feel
big data, automation, e-commerce – all now intrinsic more comfortable in the world we now live? I think so.
parts of our daily routines even if we aren’t always Could it lead to a new and amazing career direction?
aware of them. Definitely, if that’s what you want.
Technology is no longer a niche topic. In fact, There is still a desperate shortage of technology
today, every industry could be considered a tech professionals in the workforce. Opportunities exist,
industry, which leads to a simple choice: get with but they are not going to come looking for you unless
it or get left behind. you speak at least a bit of their language.
Kate Russell
Technology reporter,
author, and gamer
About this book
How this book works grouped under Web Technologies. The book defines
Divided into three chapters, this book teaches the the basic concepts of each programming language and
fundamentals of five programming languages: Scratch, builds on them with the help of detailed projects that
Python, HTML, CSS, and JavaScript; the last three are you can try on your own.
Concepts
Each chapter contains the basic
programming concepts of the language.
These are explained with the help of
practical code examples that you can try
out to understand the concept better.
Illustrations help
you understand
and learn concepts
Projects
The projects in this book teach you how to YOU WILL LEARN
create games, planners, apps, and websites. Indicates the estimated
Each project starts with a brief overview of Time: time it will take to create
what you will learn in the project, how to 1 hour a project
plan the project, and what you will need to
create it. Simple step-by-step instructions Lines of code: 58 Indicates the estimated lines
guide you through the project and explain of code in a project. This
Difficulty level may vary depending on the
every aspect of the code, with the help of
detailed annotations. code editor being used
1.2
Projects are broken down into 1.1
smaller sections with clear steps
to make learning easier
available = 2500.00
budgets = {}
STEP-BY-STEP
These chevrons appear only in Every indent (spaces at the start of a line)
the shell window. Type in the equals four empty grid blocks. All subsequent
code at the >>> prompt indents will be in multiples of four
In this book, ellipses are used at the Grey code indicates an CODE WINDOW FOR The placement of the arrow
start of a line of code to indicate an existing line of code in WEB LANGUAGES indicates if a space needs to
extended indent, usually more than the program. It is used be added before it. In instances
eight grid blocks to identify the line below where there will be no space,
or above which the new no empty grid blocks are left
code must be added between the arrow and the code
Data centre
A data centre is similar to an
industrial-scale computing facility.
Its many servers may be accessed
over the Internet to store data or
run software “in the cloud”. The
“cloud” is a global network of Desktop computer
remote servers that can provide Computers are widely used in
services through the Internet. offices and homes for managing
administrative and creative activities,
such as music, design, writing,
Car banking, and many more.
Software can be used to Washing machine
monitor a car’s systems and Many household appliances run
performance, including its embedded programs to perform
speed, temperature, and a function. Inside the casing of a
fuel. The global positioning washing machine, software runs
system (GPS) used to manage its wash cycles, water
for navigation also temperature, and timings.
requires programs.
INTRODUCTION
What is programming? 16 17
What is a computer program? Thinking like a computer
A program is a set of instructions that a computer To write a program it is necessary to
follows to perform a task. Programs can be extremely understand how a computer processes
complex, and there can be several different layers of instructions. This means that tasks need to
programs working together. Microsoft Windows, for be broken down into smaller chunks so that
example, is made up of millions of lines of instructions. the computer can understand the instructions.
For example, a robot cannot simply be asked to
Applications software, “make some toast”. It is necessary to program
such as word processors,
run on top of the
precise and detailed instructions for each step.
operating system
Instead of repeating
Operating systems, such 1. Open breadbin the same instruction
as Microsoft Windows 2. Remove loaf twice, it will be
and macOS manage the 3. Open bag shorter and clearer
hardware and software to say “Do this twice:
4. Remove slice
remove slice, insert in
5. Insert in toaster toaster” in a program
Firmware is software that
6. Remove slice
is coded into the hardware,
including the Basic Input/ 7. Insert in toaster
Output System (BIOS) 8. Push down plunger
9. Wait until toast
Hardware includes the physical pops up
elements of a computer, such
as the monitor
Games console
Consoles such as the Sony
PlayStation, Microsoft Xbox,
and Nintendo Switch are Camera
computers designed to offer Modern cameras use
a great gaming experience. software to change settings,
capture images digitally,
and enable users to review
and delete photographs.
Factory equipment
Factories can be highly automated. Assembly
line robots, planning and control systems,
and quality-control cameras all require
programs to operate.
Managers and office workers
Many businesses create and use specialized software.
Software engineers develop complex software systems,
but managers and office workers often write short
programs to solve problems or automate tasks that
might take hours or days by hand. For example,
they might write code to query databases,
format information, analyse data, control
equipment, customize websites, or add features
to word processors and spreadsheets. Some
programming languages are specifically
designed for these purposes (see pp.344–47).
Coding in
the real world
Coding is used in nearly every aspect of modern life
and work. Basic knowledge of coding helps people to
use software more effectively, create simple programs,
and communicate with other software developers.
INTRODUCTION
Coding in the real world 18 19
Software engineers and web developers
Software developers work for many different businesses
and organizations. Businesses require software to
track inventory and place orders with suppliers,
to schedule employees and track work hours,
and to send mailings to customers. Insurance
companies use software to set pricing based
on the number and cost of events, and to
review and approve policies. Websites
often combine existing programs with
custom coding for special features.
Software engineers play key roles
in developing systems that suit
a client’s needs.
25,000,000
WORKERS ACROSS
THE WORLD ARE
SOFTWARE DEVELOPERS
Working as a
software developer
Writing a simple program might seem straightforward, but it can be
surprisingly difficult. Developing large, reliable software systems is
even more complex, and requires teams of software developers with
a variety of specialized skills and roles.
Analyse
In this phase, developers decide what the
software must do. They might study existing
systems, design new processes, or interview
people to understand how they will use the
system. This also defines other constraints
or requirements. For example, how much
data must the system handle, how quickly
must it respond, and what should it do when
problems occur? The resulting documents could
range from a few pages to hundreds or more.
Test
Developers check whether the
software works correctly, and fix
any problems they find during
the testing phase. This is often the
longest and least predictable phase,
and a common reason for delays
and extra costs. There are many
types of tests – unit tests check if
individual functions are correct,
functional tests check individual
components, integration tests
check if components work together,
and system tests check the
entire system.
INTRODUCTION
Working as a software developer 20 21
Overview
Software development involves four phases: analyse, design and
plan, build, and test. These phases, however, can be structured in
a variety of ways. A waterfall model steps through each phase once,
which seems simple, but often leads to problems. An iterative model
cycles through the phases several times, building part of the system
in each cycle. An agile model cycles through each phase many times,
adding different features in each cycle.
Design and plan pieces, and specifying the files and even the individual
In this phase, developers decide how the software functions to be created. Developers also need to
will work and how it will be created. This can include estimate the time, effort, materials, and cost to create
deciding on which language to use, sketching user the system, and a schedule for who will do which tasks
interfaces, designing databases, subdividing it into at what time.
Build
In the build phase developers
create the software, including
user interfaces, databases, code,
and documentation for users and
programmers. This means that
coding is just one part of one
phase of software development,
and in some ways the easiest and
most predictable. As each piece is
built, developers might inspect or
review the code to see how well
it is written, and then integrate it
into the larger system.
Programming
languages
A programming language is a set of words and symbols that
allows people to write instructions for a computer. There is
sometimes a compromise between how easy the language
is to use and how powerful it is.
High- and low-level languages program can run on different hardware if it is written
High-level programming languages are designed to be in a high-level language. By contrast, low-level
easy to use without needing a detailed understanding languages give programmers granular control over
of the computer hardware. They often use words that the computer, but also require a deeper understanding
are similar to human language, and manage some of how it works. Programs written in a low-level
aspects of the computer automatically. Often, the same language might not work on other hardware.
Instruction to
HIGH-LEVEL LANGUAGES display some text
• Relatively fast to write
• Relatively easy to understand
• Usually fast enough in execution print("Hello!")
• Programs can be used on different
hardware Python
• No need to understand hardware A popular high-level language,
Python is easy to read and write.
This instruction puts the message
“Hello!” on the screen.
This is hexadecimal,
a common counting
system in computing
LOW-LEVEL LANGUAGES
• Direct control of hardware features
• Can increase speed of highly MOV AX, 66H
performance-sensitive code
• Requires an understanding of Assembly language
the hardware Assembly language more
• Program only works on the closely reflects the processor's
same or similar processor machine code. This example
takes a number and places it
into the part of the processor
called the accumulator.
INTRODUCTION
Programming languages 22 23
Machine code How the computer understands
Low-level code that represents how the computer a programming language
hardware and processor understand instructions Ultimately, all programs end up as machine
is called machine code. It is a collection of binary code. Most programs are written in more
digits – 1s and 0s – that the processor reads and human-friendly languages and need to be
interprets. Machine code instructions are comprised translated into raw bits so that they can
of an opcode and one or more operands. The opcode be executed by a processor. An interpreter
tells the computer what to do and the operand tells translates and executes the instructions as
the computer what data to use. the program is running, while compilers
translate the program in one go before it runs.
Microprocessor
The microprocessor is the “brain”
of a computer and controls most
of the machine’s operations. It
carries out commands and runs
01101000
the machine code instructions. 01101001
00001101
00001010
HUMAN- CONVERT TO RUN
FRIENDLY COMPUTER INSTRUCTIONS
CODE INSTRUCTIONS
EVENT-DRIVEN PROGRAMMING
The event-driven programming concept is
Creates a
one where the program listens for certain
web page button
things to happen, and then starts the
appropriate program sequence when they
do. For example, a program might react <input type="button" value="Click me!"
to user actions, sensor input, or messages
from other computer systems. JavaScript
(see pp.264–65) and Scratch (see pp.28–29),
onClick="showMessage();">
among others, can be used to write
event-driven programs.
Runs the showMessage() This icon has been used in
JavaScript instructions when the book to indicate code
the button is clicked being split into two lines
INTRODUCTION
Programming languages 24 25
CHOOSING A LANGUAGE
Sometimes, programmers’ choice PYTHON SCRATCH
of language may be dictated by the
A flexible language, it emphasizes A great first programming language,
hardware they are using, the team ease of understanding in the code. Scratch is perfect for simple games.
they are programming with, or the
kind of application they want to
JAVA JAVASCRIPT
create. Often, they will have a choice.
Here are some popular languages Widely used in financial services, The language used by web
that can be considered. small devices, and Android phones. pages for interactivity.
MAIN PROGRAM
Data for this object
FUNCTION 1
FUNCTION 3
Features
Scratch has a number of features that
make it an ideal programming language
for beginners. The use of ready-made
blocks of code sets it apart from most
Com
other programming languages. Scra munity
t
othe ch allow
com rs throu s users t
m g o
prog unit y. h a buil conne
U t c
mod rams for sers ca -in Scrat t with
n
learn if y, and others t share t ch
by st remix o pla
y
heir
ud y i .
ng o They can with,
t h er
s’ pr also
ojec
t s.
drop
Drag and cks can be
h b lo
Scratc ped in
and drop
dragged rea to build
A
the Code here is very
T
programs. , so users are
g
little typin make errors.
to
less likely
uage
Power ful lang use,
h is ea sy to
Scratc
core concepts
but includes
sional
used in profes s. It
ng la ng ua ge
codi
ides a good
therefore prov uction
in trod
all-round
ing.
to programm
Jigsaw de
sig
Instruction n
b
like jigsaw locks snap together
pie
cannot con ces, so users
nect them
ways. Non in wrong
sensical co
are typical mbination
ly s
errors in lo impossible, so
gic are min
imized.
SCRATCH
What is Scratch? 28 29
Learning to program with Scratch used in education. Scratch has a highly
Scratch was created by the Lifelong Kindergarten visual interface with coloured blocks of
group at the Massachusetts Institute of Technology code that join together to form scripts,
(MIT) in the US. It was first launched in 2007. which can include images and sounds
Scratch was designed to be fun and easy to use to create action on screen. Scratch provides
for beginners, and to help them understand basic a powerful platform (see pp.30–31) for
concepts and avoid errors. It is therefore widely exploring programming.
Hardware support
The latest version of Scratch works on computers
with Windows, macOS, and Linux. It can even
Built-in assets be used on tablets. Scratch projects can use
th a pre-installed
Scratch comes wi d extensions to interact with hardware devices.
so un ds and images (calle
librar y of 3) th at ma kes it
.32–3
sprites – see pp r
g right away. Othe
easy to start codin es lac k in this
guag Raspberry Pi
programming lan d
need to be create . Scratch can use a Raspberry Pi to connect
regard as images itin g a program
be for e wr to other sensors or motors.
or uploaded
micro:bit
Scratch can be used with a BBC micro:bit,
which has a built-in LED display, buttons,
and tilt sensors.
Lego®
Scratch can connect to Lego® WeDo and
Lego® Mindstorms™ to work with motors,
sensors, and robots.
Webcam
Scratch can access a webcam to layer images on
a live video feed to create simple augmented
reality applications.
GETTING SCRATCH
The Scratch developer environment is required
Colou
Instru r coding
for using Scratch. It can be accessed both online
c
move tion blocks and offline.
m
and se ent, sound for
are co nsing (amo , control, In your browser
lo n
be ea ur coded, g others) Visit the Scratch website at
s s
when ily identifie o they can https://scratch.mit.edu/ and click
creatin da
g a p r nd re ad Join Scratch to create an account.
og r a m
.
Offline
Scratch can be downloaded and used
without an Internet connection at
https://scratch.mit.edu/download.
Scratch interface
The screen layout, or interface, in Scratch can be used to build
programs, edit them, and view the output in the same screen. The
interface is divided into several sections, each serving a particular
purpose. This book uses Scratch 3.0 – the latest version of Scratch.
Create new projects, Use the Sounds tab to
Understanding the screen layout Change upload or save work Edit existing add music and sound
The Scratch interface is divided into the language to the computer projects effects to sprites
following sections:
• Blocks Palette: This contains the instructions,
SCRATCH File Edit Tutorials
or code blocks, required to build a program
• Code Area: The instruction blocks are Code Costumes Sounds
assembled here to create a script
• Stage: Allows the user to interact with Use the Costumes
Motion tab to change
the program Motion the appearance of
• Sprite List: Displays and manages all the move 10 steps a sprite
images, or sprites, used in a program
• Stage Info: Manages the background images Looks
turn 15 degrees
Events
go to random position
STAGE
BLOCKS CODE
Control go to x: 0 y: 0
PALETTE AREA
glide 1 secs to random position
SPRITE Sensing
LIST
glide 1 secs to x: 0 y: 0
Operators
STAGE INFO
point in direction 90
Variables
VERSIONS OF SCRATCH
point towards mouse-pointer
My Blocks
There have been three versions of Scratch so far,
Select instruction blocks and
each with a different screen layout. New features drag them into the Code Area
and instruction blocks were added at each update to build a program
of the interface. These features may not work on
earlier versions. Contains the instruction
• Scratch 1.4: The interface was similar to Scratch blocks that can be used
3.0, but the Code Area was called Scripts Area.
• Scratch 2.0: The Stage was on the left of the
screen. Introduced sprite cloning and reorganized
some blocks into the Events category. Backpack
• Scratch 3.0: Introduced Blocks Palette
extensions, and moved the Pen blocks into them. Use the “Add Extension” Store useful code, sprites, costumes,
button to add new categories and sounds in the Backpack so that
of blocks to the Blocks Palette they can be used in other projects
SCRATCH
Scratch interface 30 31
when clicked
forever
glide 3 secs to x: 0 y: –150
glide 3 secs to x: 200 y: 100
glide 3 secs to x: –200 y: 100
Stage
Sprite Sprite1 x -90 y -10
Sprite 1 Cactus
Drag instruction blocks into the A blue box This panel shows the sprites used Add new sprites Change the
Code Area and join them together highlights the in a program. Select one to see to the project backdrop
to build a script for a sprite selected sprite its code in the Code Area
Sprites
Sprites are the basic components of Scratch. Similar to characters
in a video game, they can move around the Stage, change their
appearance, and interact with other sprites. Each sprite uses one
or more images and is controlled by scripts.
Creating a sprite
Scratch allows its users to add or create their own images. The Choose
a Sprite button on the bottom right of the Sprite List reveals options to
add, create, or upload sprites in a project.
Upload Surprise
Users can include their own Scratch also has an option
images and upload them to the to add a random sprite from
Scratch interface to be used as the Sprite library. It can be a
sprites. This includes images, such quick way to add sprites to
as photographs, which may be experiment with, or to generate
required to create or new game ideas.
personalize games.
1 Costume Costume1
Group Ungroup Forward Backward Front Back
Fill Outline 2
costume1 Copy Paste Delete Flip horizontal Flip vertical
239 x 315
Choose which
costume to edit Select an Line thickness Flip selected
Select a
outline colour elements
fill colour
horizontally
2 or vertically
Select tool
Convert to Bitmap
wait until
Control blocks
Control blocks are used to make decisions
about what to do next. They also dictate how
often a set of blocks should repeat, and when
the script should pause.
Events blocks
These blocks detect when the green
flag is clicked, a key is pressed, or a
sprite is clicked.
SCRATCH
Coloured blocks and scripts 34 35
Using the Blocks Palette Select this tab to begin
Output blocks
+ move 10 steps
Sound blocks
Sound blocks are used to add sound
effects to a program. They provide audio
output by replaying recorded sounds.
Output using
movement
Scratch is an ideal language for programming simple games and
applications that move images around the screen. It has a set of
blue Motion blocks that can be used to control a sprite’s movement.
x axis
–240 0 240
Coordinates 180 x and y grid
The Stage here has
In Scratch, any position on the Stage can be been marked with grid
(x=180, y=120)
pinpointed using the x and y coordinates. The x lines every 60 steps. Try
axis runs from -240 on the left to 240 on the right, (x=–120, y=60) these positions in the
y axis
0 Motion blocks (below)
and the y axis runs from -180 at the bottom to 180 for moving a
at the top. When writing a program, coordinates sprite using
(x=–180, y=60) coordinates.
can be used to place a sprite in a particular position.
(x=60 y=-120)
–180
go to x: 0 y: 0 set x to 0 x position
MUSIC BLOCKS
The Music blocks in Scratch are an extension,
set tempo to 120
and need to be added using the Add
Extension button on the bottom left of the set instrument to (20) Synth Lead
Blocks Palette. They make it possible for
programmers to use blocks to play musical play note 60 for 0.25 beats
notes. It is not necessary to know the number
for each note, since clicking the hole for the play note 62 for 0.25 beats
note number will display a piano keyboard to
help enter the required music. play note 64 for 0.25 beats
Playing sounds play sound Meow until done change pitch effect by 10
Sounds are a great way to
provide feedback in a game Pause script to play sound Alter pitch
Sets a sound to play, and then pauses Changes the pitch of a sound effect. Positive
or as an alert in a program. the script until it is finished. The menu numbers make the pitch higher and negative
Before a sound can be used, in the block can be used to choose a ones make it lower. The stereo setting can
it has to be added to the different sound. be adjusted as well.
sprite from the Choose
a Sound button under the start sound Meow set pitch effect to 100
Sounds tab. Programmers
Play sound in background Reset pitch
can either use a sound from Starts playing a sound, but does not Resets the pitch or changes it to a value
the Scratch Sound library, pause the script. The sound plays in specified by the programmer. It can also be
the background while the script runs. used to adjust the stereo left/right setting.
or can record or upload a
sound of their own.
stop all sounds clear sound effects
Event-driven programming
In event-driven programming, the program’s actions are started by events,
such as user input, sensor input (see pp.46–47), or messages sent by other when clicked
programs or parts of the program. The Events section of the Blocks Palette
contains blocks that can start scripts when something happens. Also Use green flag to start
Provides an easy way for users to start the
called hat blocks due to their shape, these Events blocks provide many program. Copies of this block can be used to
more ways to start scripts than simply clicking on them. start multiple scripts simultaneously.
when this sprite clicked when loudness > 10 when I receive message1
Use mouse click to start Use sounds to start Use message to start
This block starts the attached script when When the microphone detects a volume Scripts can send messages to each other
the sprite is clicked. It is ideal for creating more than 10 (on a scale of 0 to 100), the (see pp.48–49). This block starts a script
on-screen buttons for users to click on. script can be activated. when a particular message is received.
This costume
The blue highlight indicates indicates that the
this is the selected sprite Drum Kit is playing
when this sprite clicked
INTRODUCING DELAY
It is not always desirable to have
a program run as fast as possible.
In many cases, a program may when clicked
need to be slowed down so that
when clicked move 10 steps
users can easily see what is going
on and have time to respond. move 10 steps wait 1 seconds
Games are often artificially
slowed down in order to ensure move –10 steps move –10 steps
that players can keep up.
Normal movement Delayed movement
In this example, the program runs so Introducing a wait block makes
fast that the sprite’s movements are it possible to see the sprite move
not visible. Nothing seems to happen. from right to left and back again.
Manipulating data
Programs are often used to manage and process data. This data
is either provided by the user or collected from other computer
systems. In Scratch, the Operator blocks are used to manipulate
numbers and text stored in variables.
Variables
Many programming languages use variables Strings
to store information. A variable can store one Programmers often call a piece of text in a
piece of information, either text or a number. program a “string”. For example, a string can
In a game, for example, two variables might be a name, an answer to a question, or an entire
be used to store the player’s name and score. sentence. In Scratch, any variable can store a
number or a string, and it can store different
Make a variable
1 To create a variable in Scratch, select Variables in the Blocks values at different times.
Palette and click on the Make a Variable button. Give the new
variable a meaningful name, such as score, so that the code is easy banana
join apple
to understand. Usually, variables need to be created for all sprites,
which means that all sprites can see and change the variable. Join strings
This block can be used to join two strings. The strings are
joined without a space, so the result for this example will be
“applebanana”. Variable blocks can also be used in place of
Make a Variable words typed into the block.
Check strings
This block checks whether the second string input is in the first
one, and gives the answer as true or false. It is also possible to
check for more than one letter: apple contains app?
SCRATCH
Manipulating data 42 43
LISTS
A list is used to store similar pieces of information,
such as a list of names. In Scratch, a list can be created
from the Variables section of the Blocks Palette. List
positions are used for inserting and deleting items. For
example, the delete 2 of [list name] block can be used
to remove the second item from a list.
say You didn’t beat the high score this time! for 2 seconds
Logic and
decisions
Programs can be made more flexible and useful
if they are coded to make decisions about what to
do next. They can use variables to control which
instruction to run, and when to run them.
SCRATCH
Logic and decisions 44 45
Combining expressions
Boolean expressions can be combined to make decisions
based on more than one factor. Here are some examples
using the current year Sensing block. It has a menu in it
to change the year to other time periods.
USING BOOLEANS
Boolean expressions can Using Booleans with loops
be used in other ways as The repeat until block repeats repeat until lives left = 0
well. Clicking on them in one or more instructions until
the Code Area allows users an expression is true. In this case,
the loop will keep going until the
to see their results while player has no lives left.
programming. They can also
be combined with repeat
Waiting using a Boolean
and wait blocks to make a Using a wait until block will pause wait until score = 50
program repeat or pause a script until an expression is true.
until something changes. However, it is often better to use a The program takes no
broadcast (see pp.48–49). action till the score is 50
Input
Sometimes programs need to receive information in order
to deliver a result, or output. Scratch has several ways
of getting input, including through key presses,
by sensing on-screen interactions, and by
asking users to type in information.
User interactions
Users can type information into
the computer, or use the keyboard
Types of input or mouse to provide movement or
There are a lot of different ways in which positioning instructions.
information can be entered into a computer
system for processing. In Scratch, input to a script
External information
is usually in the shape of a rounded block that Scratch can detect the username of the
contains some information, or a pointed block logged-in user, the current date and time,
that contains a Boolean expression (see p.44). and can get translations from Google
Translate using an extension.
change x by -10
Movement script
This script illustrates
how to move a sprite if key right arrow pressed ? then
under keyboard control,
using the arrow keys. It change x by 10
uses the pen to draw a
line as it goes, so it can
also be used as a simple
art program.
SCRATCH
Input 46 47
Collision detection
touching mouse-pointer ?
Video games often need to detect when two
objects touch each other, which can require tricky This block can be
calculations. However, Scratch has this capability mouse-pointer found under Sensing
in the Blocks Palette
built in. The touching mouse-pointer block has a
edge
drop-down menu that can be used to detect if a
sprite is touching the mouse-pointer, the edge of Sprite1 The drop-down menu lists
the screen, or another sprite. the available options
broadcast ouch
Adds a random delay
when clicked before moving
forever
Moves the
when I receive music on Butterfly
Ballerina Butterfly 2 Speaker sprite to the
glide 3 secs to Speaker Speaker
SCRATCH
Sending messages 48 49
2. When one sprite sends a
broadcast, it is picked up by
any sprite that may be
listening for that message
SENSIBLE MESSAGES
The default name for a broadcast message
in Scratch is message1, but this can be
renamed by the user. To make a program
easier to understand, it is advisable to change
the message to something relevant. The menu
in the broadcast blocks can be used to choose
a new message name.
MAIN SCRIPT
RUNS
OTHER SCRIPTS
CAN ALSO USE
THE FUNCTION
AT ANY TIME
SCRIPT
CALLS THE
FUNCTION
THE
FUNCTION
BLOCKS RUN
WHEN THE
FUNCTION ENDS,
THE MAIN SCRIPT
PICKS UP AT ITS
NEXT BLOCK
SCRATCH
Using functions 50 51
Define your own blocks instructions. The example below illustrates how to
To avoid repeating chunks of code multiple times, create a function to draw a triangle, and then use it to
Scratch allows users to create their own blocks. draw triangles of three different sizes, stacked on top
Each new block can be made up of several of each other. The end result looks like a fir tree.
My Blocks
draw a triangle of size length
Make a Block Button to make
a new block
erase all
pen down Pen blocks can be found
under the Add Extension set pen color to Select a green
repeat 3 section of the Blocks Palette colour here
go to x: -75 y: -140
move length steps
draw a triangle of size 150
turn 120 degrees
go to x: -50 y: -10 100 goes into
the function’s
Turns at the
draw a triangle of size 100 length variable
Program design
Programmers often use flowcharts – a graphical
START
representation of an algorithm – to structure their
programs and to show how they work. Each step
is shown in a box, with an arrow leading to the
next step. Sometimes, a step could have multiple
arrows leading onwards, depending on the
answer to that step. Wait for user to
select language
FRENCH RUSSIAN
BUTTON GERMAN BUTTON BUTTON
PRESSED PRESSED PRESSED
Get phrase
to translate
Translate phrase to
chosen language
Display translation
SPRITE LIBRARY
This menu is at
the bottom right Show Size 100 Direction 90
of the interface
Devin
Choose a Sprite
SPRITE LIST
SCRATCH
Travel translator 54 55
1.4 CHANGE THE BACKDROP
It is now time to set the stage. Scratch uses
backdrops to set the scene for each project. Like the Sprite
library, the Backdrop library comes with a collection of
backdrops you can use. You can even create backdrops if Create your own
you like. Click the Choose a Backdrop icon at the bottom backdrop using
right of the screen. Type “Theater2” to search for the the Paint Editor
backdrop, and then select it to add it to the project.
Testing, testing
Adding a language
2 At the moment Devin can only speak in English – the
default language. To proceed with the program, you need to
add another language that Devin can translate the text into.
The next few steps will help you create a button for the language,
and will then add the Translate blocks to begin translating.
Costume button2-a
1 Group Ungroup Forward
Text tool
button2-b
121 x 54
French
All the
costumes of
a sprite are
listed here
Convert to Bitmap
Events
This block translates one
language into another
Control
Sensing
Operators
Variables
Translate
Click here to open the
Scratch extensions
SCRATCH
Travel translator 58 59
EXTENSION BLOCKS
Scratch’s extension blocks allow projects to communicate Makey Makey
with hardware or software outside of the Scratch This lets you connect everyday objects to
your computer. These blocks allow you to
environment. Selecting an extension will add more use connected objects to control your games.
blocks to the Palette for you to use.
Music micro:bit
Use these extension blocks to make The micro:bit is a palm-sized gadget that
music using a variety of instruments you can control with the code blocks in
and drum sound effects. this extension.
delete
SCRATCH
Travel translator 60 61
3.2 EDIT THE NEW BUTTONS
You now need to make some
changes to the code for each of these
new sprites. Edit the code for the when this sprite clicked
German and Russian buttons to look
like this. set chosen language to German
when clicked
AHOJ
SCRATCH
Travel translator 62 63
Common phrases
“Hello”, “How are you?”, “How
much is this?” – these common when this sprite clicked
phrases are useful all over the
world. Can you adapt your code
and use the Translate blocks to see say translate hello to chosen language
the translations for these useful
phrases without having to type
them in? You might want to add
some dedicated buttons to do this. Add the phrase to
be translated here
Speak it
There is another Scratch extension called “Text to Text to Speech
Speech” that can be used to read text out loud. Tweak
your code so that the phrases are read out loud. You
can then listen and learn how to pronounce the words.
speak hello
Click on a sprite
to make it sit in
the boat
Program design
The program waits for the user to select a sprite. START
Once the selection has been made, the user
attempts to move the sprite across the river. The
program then checks to see if any of the rules
have been broken using one continuous loop. If
a rule is broken then it is game over. If the user
gets all the sprites across the river correctly, then
the puzzle is solved. Place all the sprites on the
left side of the river
SPRITE
IS MOVED
ACROSS RIVER
YES
Have any of the puzzle
Game over
rules been broken?
NO
YES NO
Puzzle solved. Are all the sprites on the
User wins! right side of the river?
GETTING STARTED
Getting started
1 Starting a project usually involves picking
sprites and backdrops from the Scratch library. In
this project, however, you will create your own
backdrop and even a sprite using the Paint Editor.
You will then add some code to make the sprite
move across the screen.
Costume backdrop1
1 Group Ungroup
Fill Outline 4
Copy Paste
backdrop1
Backdrops 2x2
1
Costume backdrop1
1
Increase or decrease
this value to adjust the
10 thickness of the brush
Fill
backdrop1
239 x 360
Select black from the
colour palette
The Brush tool
is used to draw
lines freehand
Convert to Vector
1.4 FILL IT IN
Next, use the Fill tool to
colour each section of the backdrop.
Select the Fill icon (it looks like a paint
pot), then choose a colour from the
Fill menu at the top left of the Paint FILL TOOL
Editor. Just click on a section to fill it.
Costume costume1
Fill
Choose a colour of
your choice from
the colour palette
Convert to Vector
else
boat moving
boat side
This will be true if the
Make sure these lion onboard lion is on the boat
boxes are unchecked
go to x: -180 y: 140
If the boat ends up on the
left, this moves the lion
set lion side to left to the grassy area on the
left-hand side of the river
and updates the variables
go to Boat
go to front layer
go to Boat
go to front layer
go to Boat
go to front layer
go to x: -180 y: 140
go to Boat
go to front layer
go to Boat
go to front layer
go to x: 165 y: -100
else
go to x: -195 y: -100
Update these blocks
for the rooster
set rooster side to left
If the rooster has been say Lose: The rooster eats the donut
left alone with the donut
on the right-hand side, it
will be against the rules
go to x: -60 y: 0
forever
Click here to
run the project
Blaster 3
Score 0
Warp Speed 5
Press the
space-bar to make
the rocketship
fire lasers and
destroy asteroids
Choose from
a selection of
space themed
backdrops in
the library
SCRATCH
Asteroid dodge 80 81
YOU WILL LEARN WHERE THIS IS USED
❯ How to create a side-scrolling game Time: In this game, the background and other objects
20–25 mins move across the screen to make it seem like the
❯ How to use loops to create
continuous game play Difficulty level player is moving. This popular approach is called
a side-scrolling game, and can be adapted for racing
❯ How to create a game that increases
or shooting games.
in difficulty as it progresses
Program design
The program uses one main loop to check which key is being
pressed to move the rocket up or down the screen. It fires a
laser to destroy asteroids if the space-bar is pressed. Using
this main loop, the code continually checks if any rocks have START
touched the rocket to end the game.
NO
NO
NO
Space
480 x 360
Click here to Fill tool
make Space the
default backdrop
Convert to Vector
SCRATCH
Asteroid dodge 82 83
1.4 CREATE VARIABLES
Use the Make a Variable button Variables
in the Variables section to create all the
This variable counts
variables required for this project. Make Make a Variable the number of asteroids
sure the check-boxes for the variables
that have been
Blaster, Score, and Warp Speed are
successfully dodged
ticked so that they show on screen. Avoided
Blaster
Score
set Avoided to 0
There are three
set Score to 0
shots in the laser
This block will make blaster, but you can
the asteroids appear
set Gap Time to 2 change this number
every two seconds to make the game
set Blaster to 3 easier or harder
CODE THE ROCKETSHIP
set Avoided to 0
set Score to 0
set Blaster to 3
forever
3
if touching Rocks ? then
rocketship-d
131 x 181 You can also
2.6 PREPARE THE BLASTER GUN
Now you will write the code that controls the blaster gun.
delete a costume When the space key is pressed, if there are shots left in the blaster
by clicking on the then the laser fires. To achieve this effect, the background quickly
5 small blue cross flashes to the red backdrop, which makes it look like the laser has
been shot. Add this code to the Rocketship sprite and test the code.
if Gap Time > 0.5 then The Gap Time is only reduced
if it is currently more than 0.5
seconds. This means the game
set Gap Time to 0.90 * Gap Time
never gets so difficult that it
cannot be played
Rocks will be of
random sizes
CODE THE ASTEROIDS
Sprite Explosion x 36 y 28
when I receive Blaster Fired
Show Size 100 Direction 90
delete this clone
Costume costume1
Group Ungroup Forward Backward Front Back
Convert to Bitmap
SCRATCH
Asteroid dodge 88 89
3.6 HIDE EXPLOSION
When the game starts, you do
not want the explosion to be visible on
the screen. Add this code to the Explosion when clicked
sprite to hide it.
hide Hides the explosion
when the game starts
slider
Blaster 3
Score 0
Warp Speed 5
forever
show
forever
1 turn 15 degrees
change Avoided by 1
2
broadcast Update Score
Features of Python
Python is a simple and minimalistic
programming language. It has a Free and open source
number of features that make it An example of a free/libre and
a popular choice for new as well open source software (FLOSS),
as experienced programmers. Python can be freely distributed.
Its source code can be read and
changed, and pieces of its code
can also be used in new programs.
Extensive libraries
One of Python’s greatest
strength are its libraries,
which contain code for
performing specialized
tasks. They make building
programs easier and quicker.
Portable
Python is extremely
flexible, and can be run
on a variety of different
platforms, such as macOS,
Windows, and PlayStation.
PYTHON
What is Python? 94 95
How it works
A Python program, usually called a script, is a text APPLICATIONS
file containing words, numbers, and punctuation that
correspond to instructions. These instructions are Python is a general-purpose programming
language that can be used to create systems
formed of certain fixed patterns of words and symbols,
for a variety of purposes. This, along with
which the programmer types in. IDLE (Integrated its many specialist libraries, makes it useful
Development and Learning Environment) is a free app in fields as diverse as business, medicine,
that is installed with Python. Designed for beginners, science, and media.
it includes a basic text editor that allows the user to
write, edit, and save code before running a program. Game development
Python has various modules
and libraries that support
game development.
These include pygame,
for 2D games, and
PySoy, a cloud-based
3D game engine.
Web development
Python is used by
Great support software developers for
Python has well-written automated tasks, such as
documentation, including build control and testing.
guides for getting started, It can also be used to
a reference section, and create web applications.
lots of example code.
Installing Python
It is important to download the right version of Python.
This book uses the current version: Python 3. It is free and
can be easily downloaded from the Python website. Follow
the instructions that match your operating system.
Python on Windows
Before you install Python, you need to find out if FLYING CIRCUS
your system has a 32-bit or 64-bit architecture. To
do that, click the Start menu, right-click This PC, Python is not named after the snake, as many people
think, but after the British television series Monty
and choose Properties. A computer’s architecture
Python’s Flying Circus. Guido van Rossum, who created
indicates how its microprocessor handles data the language, was a big fan of the programme, and
at the lowest level. A 64-bit processor provides Python was a title that stuck. There are numerous
higher performance, as it can handle more data references to Monty Python’s sketches in Python’s
at once than a 32-bit processor. official documentation.
2 Download an installer
Find the most recent Python 3 installer that matches
your operating system and select it. The Python.pkg file
will download to your system automatically.
3 Run the installer
Choose this installer Once downloaded, double-click the .pkg file
for 64-bit machines and follow the instructions that appear. The installation
process on a Mac computer is very straightforward.
It will only ask you to agree to the licencing requirements
Python 3.7.3 - 2019-03-25 and confirm the installation location (usually the
Download macOS 64-bit installer Macintosh Hard Disk).
Download macOS 64-bit/32-bit installer
Install Python
Choose this installer
Welcome to the Python Installer
for 32-bit machines
Go Back Continue
Editor window
The editor window can be opened COLOURS IN THE CODE
by selecting New File or Open from
IDLE’s File menu. This window allows To make code easier to read and errors easier to spot, IDLE
displays the text in the editor and shell windows using
programmers to type in much longer and
different colours. The colour used for each word depends
more complex series of instructions and save on its role in the code.
them in files. Python file names are easy to
identify as they end with .py.
COLOURS IN THE CODE
Code Colour Example
Using IDLE
Python’s Integrated Development and Learning Environment (IDLE)
interface has two windows for carrying out different tasks. The shell
evaluates short commands immediately, while the editor window
allows programmers to enter and save longer programs in files.
Running a program using IDLE
To run a program from IDLE, the file containing it must first be
opened in the editor window. If it runs successfully, the shell
window displays the output of the code, otherwise the relevant error
message appears.
Common errors
num = 4 Here “num” has
As well as being case-sensitive, accidentally been
Python is also very strict about if (nut == 5): typed as “nut”
the layout and spelling of code.
It requires sections of code to print("Hello world!") The mistake in code results
in this error message
be indented by four spaces from
the line above, in order to
make the code more readable. Traceback (most recent call last):
These features often trip up
new programmers. IDLE helps File "/Users/tinajind/Desktop/helloworld.py",
spot and fix errors with pop-up line 2, in <module>
information boxes and error
messages (see pp.130–33) in if (nut == 5):
the shell window. NameError: name 'nut' is not defined
>>>
Variables in Python
Variables are one of the most basic programming tools used
for storing and manipulating data. Similar to a box, they are
a storage mechanism that can hold values used in a program.
Assign a string
In this example, a new variable, box_name,
is declared and the value "Milk" is stored
in it. The quotes around the word “milk”
indicate that the value is a string.
LENTILS COOKIES
SPICES
Assign a number
Here the command is declaring a variable
called water and storing the integer value
8 in it. In Python, this is also described as
assigning 8 to water.
>>> water = 8
WATER
Type in code at
the >>> prompt
PYTHON
Variables in Python 100 101
DECLARING VARIABLES
DIFFERENT Creating a new variable is also called “declaring” it. In some
PROGRAMMING programming languages, a special keyword is used to show that
a new variable is being created. In Python, however, a variable
LANGUAGES HAVE is created as soon as a value is assigned to it. There is no need
to state what sort of data will be stored in the variable. Python
DIFFERENT WAYS OF will work this out from the value being assigned to it. Using a
CREATING variable without assigning a value to it is a common error.
VARIABLES
INSIDE A
PROGRAM Using variables
Once a variable holds a value it can be used in various ways.
The variable’s current value can be used in a calculation, or
the value stored can be changed to a new value.
Simple calculation
This code carries out simple >>> input = 2
multiplication. It stores the
integer 2 in variable input, >>> score = input * 3
then retrieves that value
MILK and multiplies it by 3. >>> print(score)
The result is stored in the
variable score and then 6
displayed on screen.
PYTHON USES
THE SAME
RULES OF
ARITHMETIC
Integers and floats
Numbers in Python programs can be one of AS HUMANS TO CARRY
two data types: integer or float. An integer OUT CALCULATIONS
is a whole number with no decimal point,
while a float – short for floating point – has
a decimal point and numbers after it. Floats
are often used for measurements or as the Arithmetic oper
ators
result of a calculation. Numbers and va
riables containin
addition, subtract g numbers can be
ion, multiplicatio combined using
these processes ar n, and division. Th
pets is an integer variable e called arithmet e symbols for
subtraction use fa ic operators. Whi
and contains the value 2 miliar symbols, m le addition and
slightly different ul
and are shown as tiplication and division are
* and / respectively
.
>>> pets = 2
ARITHMETIC OP
ERATORS
>>> print(pets) Symbol
Meaning
2 + Addition
>>> print(temperature)
/ Division
37.5
This variable co
ntains
FLOAT price as a float The result will be
The variable temperature stored
Calculations in the variable ta
contains a float x
These Py thon
commands >>> price =
8.00
use arithmetic
operators to >>> tax = pr
ice * (20/10
calculate the ta x 0)
owed on an item >>> print(ta
costing £ 8.00.
x)
1.6 The output is th
e value
stored in the va
riable tax
PYTHON
Data in Python 102 103
Characters and strings
The data type Python uses for text is known as THE LEN() FUNCTION
string. Made up of individual letters, numbers,
or symbols called characters, strings must always In a lot of programs it can be very useful
to know the length of a string or a list.
have quotation marks at the beginning and the
Python has a built in len() function that
end. Python allows both single and double quotation can be used for both tasks. Remember that
marks in its code. the length of a string will also count spaces
and punctuation.
Strings
The variable forename >>> forename = "Alan" >>> len("Hello Alan")
contains a string made up
of the characters of the >>> forename 10
word Alan.
'Alan'
Combining strings
Combining two or more strings to make a new one is
called concatenation. Python uses the + symbol to do Lists
this. It is important to change any values with different It is often useful to be able to group items
data types into strings before concatenating them.
together in a program. Python provides the list
data type for this. A list can contain items that
have the same data type or a variety of data
>>> happy = "happy birthday to you "
types. To create a list, the values are enclosed in
>>> name = "Emma " square brackets and are separated by commas.
Change integer
to string >>> my_list[0] First item in the
list my_list
>>> age = 25 1
>>> print ("Your age is " + str(age)) >>> my_list[2]
Your age is 25 3
Logical operators = AND ==
Not equal
Logical operators also work with variables. This
!= Not equal value example stores values in two variables then checks
for the stored values being unequal.
Boolean operators
Boolean expressions can be combined
>>> (oranges < 10) and (apples > 2)
using the Boolean operators “and”, “or”, True For this to be True, both
expressions must be True
and “not”. They allow programmers to
build more complex expressions that can >>> (oranges < 10) or (apples == 3)
deal with several different variables. True Only one expression has to be
True for this statement to be True
>>> not(apples == 7)
Putting “not” in front of a
True expression results in False
the value False
PYTHON
Logical operators and branching 104 105
This comparison is If the first condition is
the first condition True this is printed
More than
two branches quiz_score = 9
When there are more
than two possible paths if quiz_score > 8:
through the code, the
elif command – short print("You're a quiz champion!") This is the
for else-if – is used. second
It is possible to have elif quiz_score > 5: condition
several elif branches
between the if branch If the second
print("Could do better!") condition is
and the else branch.
True this line
else: is printed
If both conditions
are False this line
is the output
One branch
The most straightforward branching command has
only a single branch that the computer takes if the
condition is True. This is called an if statement. Two branches
A situation where a program should
temperature = 25 do one thing if a condition is True, and
This comparison another if it is False needs a command with
if temperature > 20: is the condition two branches. This is an if-else statement.
Input and
output
There is no point writing a program
unless it produces an output that can
be read and understood. In Python,
programs often require some input,
either from a user interacting with
the program as it runs, or from a file.
Input from file
Python has the ability to input data directly from a file.
This is especially useful in programs that require a lot of
data, and where it would not be feasible to have a user
type in the required information every time the program
runs. In Python, opening a file creates a file object. This
file object can be saved in a variable and used to carry
out various operations on the file’s contents.
Opens the file and saves the
file object in the variable file
Prints a float
stored in a variable >>> file = open("/Desktop/List.txt")
>>> metres = 4.3 >>> file.readline()
>>> print(metres) 'High Street\n' Opens the file and reads
one line at a time
4.3 >>> file.readline()
'Castle Street\n'
>>> cats = ["Coco", "Hops"]
>>> print(cats) Prints a list
Output to file
['Coco', 'Hops']
In Python, it is also possible to output data to a file. This is
useful if a program produces a lot of data, or if it is updating
or adding to an existing input file. When opening the file, the
programmer must indicate that data will be added to it, and
whether it should be written before or after existing data.
Loop variable
This is like a list
This example loop counts from one to three, for counter in range(1,4):
that has the
printing each number on a new line, followed by
values 1, 2, 3
a line saying “Go!”. The loop variable keeps track print(counter)
of loop iterations. It takes the value of each item
in range(1,4) in a set order, starting with the print("Go!") This statement
first value for the first iteration. is the loop body
Infinite loops
While loops are also used in situations where the loop
is supposed to run as long as the program is running.
This is called an infinite loop and is commonly used
in programs for games. To create an infinite loop, the
user needs to set the loop condition to True.
while True:
print("There’s no stopping me now!")
Getting stuck
Unintentional infinite loops are Prints the line repeatedly
the coding equivalent of a black
hole. Program execution gets stuck,
making the computer unresponsive.
Emergency escape
Sometimes programmers create infinite loops by
INDENT THE BODY accident. This can happen if the loop condition
never becomes False in any iteration. An infinite
Similar to a for loop, the body of a while loop loop can be easily stopped from Python’s shell
is also indented four spaces from the while window by holding down the
keyword. If this indentation is missing, Python “Control” key and pressing “C”.
produces an error message saying “expected
an indented block”.
Variable value
The loop condition will number = 1
expected an indented block always be True if there
is no instruction to while number < 10:
increase the value of
OK the variable number print(number)
in the loop body.
Nested loops
The body of a loop can contain another loop within itself. This loop
inside a loop is called a nested loop. In Python, any type of loop can
be contained inside any other type of loop – so a while loop can
contain another while loop or a for loop, and vice versa. In this
example, every time the body of the outer loop runs, the body of the
nested loop is executed 10 times, printing out a countdown to launch.
Selects a team
for team in teams: to process
for name in team:
print(name)
print("\n")
POST OFFICE
A METHOD IS A
FUNCTION THAT
CONTAINS SOME
CODE TO CARRY
OUT A TASK
PYTHON
Functions 112 113
Built-in functions
Python includes a range of built-in functions that enable the
completion of basic tasks. These include getting input from
the user, displaying output on screen, simple arithmetic, and
determining the length of a string or list. The examples below
can all be tried in IDLE’s shell window.
Number to be rounded
input() function’s parameter is a
question that prompts the user for input >>> pi = 22/7
>>> name = input("What is your name? ") >>> pi
What is your name? Tina User inputs 3.142857142857143
response
>>> print("Hello " + name) >>> round(pi, 2)
Hello Tina 3.14 Decimal places
Object name
upper() method
This method transforms all >>> city = "London"
the lowercase letters in a
string to uppercase letters. >>> city.upper() The bracket
The upper() method can may take a
only be used with strings. 'LONDON' parameter
Method name
Adding to a list
The list method append() >>> mylist = [1,2,3,4]
adds a value to the end of a
list. It has one parameter – >>> mylist.append(5)
the value that needs to be
appended to the list. >>> print(mylist) The new value
is added to the
[1, 2, 3, 4, 5] end of the list
Creating functions
Python has a Standard Library that contains a lot of ready-made Defines a function that
functions. Most programs, however, include functions that have takes a temperature in This formula
Celsius and prints it converts Celsius
to be specifically made for them. In Python, creating a function in Fahrenheit to Fahrenheit
is known as “defining” it.
def print_temperature_in_Fahrenheit(temperature_in_Celsius):
temperature_in_Fahrenheit = temperature_in_Celsius * 1.8 + 32
print(temperature_in_Fahrenheit)
Top-down coding
In Python, functions are normally defined at NAMING FUNCTIONS
the top of the program, before the main code.
This is because it is important to define a Similar to the rules for naming variables, Python
also has a number of rules for naming functions.
function before it is called, either by another
Just as it is important for a function to have a
function or by the main part of the code. clear task or purpose, it is also important for the
function to have a name that clearly describes
what it does. So get_number() is not as good
def function_a(): a name as get_number_of_winners() for a
function that returns the value of the number of
return 25 function_a is people who have won in a competition. If there
called from inside
function_b
are several words in a name, they should be
typed in lowercase and separated by underscores.
def function_b():
answer = 2 * function_a()
return answer This runs because both
function_a and function_b Order of definition
have already been defined Since the main part of the code calls
both function_a and function_b,
number = function_a() + function_b() they must be defined at the start of the
program. As function_a relies on
print(number) function_b, function_a must be
defined before function_b.
def count_letter_e(word): Defines a function that counts and
returns the number of times the letter
total_e = 0 “e” appears in a particular word
total_letter_e = total_letter_e + 1
return total_letter_e
Asks users to enter their
name, and then stores it in
user_name = input("Enter your name: ") the variable user_name
total_es_in_name = count_letter_e(user_name)
print("There are " + str(total_es_in_name) + "E's in your name")
Local and global variables visible to other people in that submarine. Global
A global variable is declared in the main part of variables can be read by other functions in the
the code and is visible everywhere. A local variable, code, but local variables cannot. The code will
on the other hand, is declared inside a function and return an error message if a local variable is
is only visible there. For example, global variables used outside of its function. A function must
are like divers, visible to everyone under the sea, declare the global variable it intends to use
including people in submarines. Local variables, or else Python will create a new local variable
however, are like people in the submarines: only with the same name.
def reset_game():
global score, charms, skills
score = 0
charms = 0
skills = 0
Built-in modules
The library that comes with every installation of
Python is called the Python Standard Library. It turtle
This Python module recreates the turtle-shaped
contains modules, such as Tkinter and turtle,
robot from the programming language Logo.
which are available without the need to download The robot draws on the screen as it moves around.
or install any additional code.
random
This module enables programs to
include calculations or outputs based
on random numbers. This can be useful socket
when a programmer wants to create an The socket module allows programs to communicate
element of chance. across networks and the Internet. This module allows
programs to create their own sockets.
datetime
The datetime module allows a program to time
work with calendar dates and functions that The functions in this module deal with time, such as
can calculate the time between dates. those relating to time measured by the computer’s
processor and time zones for different countries.
webbrowser Tkinter
The webbrowser module allows a Python The Tkinter module allows programmers to create a
program to open a browser on the user’s graphical user interface (GUI) for their code, including
computer and display links. elements such as buttons and menus.
PYTHON
Libraries 116 117
Importing and using modules
The process of adding a module to a program so that its functions and
definitions can be used is called “importing”. In Python, it is possible
to import either an entire module or just certain functions of a module.
The method used for carrying out the import depends on the requirement
of the program. The examples below illustrate the different methods
for importing and the required syntax in each case.
import ...
The keyword import followed by the import time
module’s name makes all of the module’s
code available to the program. To access
the module’s functions, it is necessary Calls the timezone function
to type the imported module’s name offset = time.timezone of the time module
followed by a dot before the function
name in order to call that function. print("Your offset in hours from \
Prints the value in
UTC time is: ", offset) the variable offset
from … import …
If a program only needs to use one or two from random import randint
functions from a module it is considered The randint()
better just to import these, and not the function produces a
whole module. When functions are random integer
imported in this way it is not necessary dice_roll = randint(1,6) between 1 and 6
to include the name of the module
before the function name. print("You threw a", dice_roll)
from … import … as …
If the name of a function in the module from webbrowser import open as show_me
is too long or is similar to other names
in the code it can be useful to rename
it. Just as in “from ... import ...”, this
allows the programmer to refer to the url = input("enter a URL: ")
function simply by its new name, without Displays the user's
preceding it with the name of the module. show_me(url) choice of web page
PYGAME
The pygame library contains a huge number of useful
modules for coding games. Since pygame is not part of
the Standard Library, programmers have to download
and install it before they can import it to their code.
pygame is very powerful, but can be challenging for
new programmers. One solution to this is the Pygame
Zero tool (see pp.176–77), which makes the functions in
pygame easier to use.
Team allocator
When playing team sports, the first thing you have to do is to pick
the teams. One way of doing this is to choose team captains and let
them choose the players for their teams. However, it might be fairer
to pick people randomly. In this project, you’ll automate this process
by building a tool in Python that picks teams randomly.
Program design
The program begins by shuffling the player list. team. The steps are then repeated for the
It then allocates the first half as Team 1, randomly second half of the list – forming Team 2. If you
selects a captain, and displays the name of the want to pick the teams again, the program
captain along with the names of the rest of the repeats the steps, otherwise, the program ends.
START
Shuffle players
YES
Pick again?
NO
END
CREATE A TEAM
Create a team
1 This program will simplify the process of picking,
or allocating, teams. In this section, you will create the
file that will contain the code, import a module, and then
make a list of players.
5
1
element of chance to a program. You can
6
5
1.4 MAKE A NAME LIST
You will need names for all the players to generate your
teams randomly. In Python, you can keep groups of related items
together in a list (see p.103). First, create the variable players to
store the list by typing this new block of code below the import
statement. Put the list contents in square brackets, and separate
each item in the list with a comma.
import random
The list is assigned to
players = ["Martin", "Craig", "Sue", the variable players
Pick teams
2 Now that the list of players is SPLITTING LISTS
ready, you can split the players into
two teams. You will then assign In Python, when splitting or taking subsets of a list you need to provide two
arguments: the start index (position) and the index after the last item in the
the team captains. The teams
new list. Remember, indexes start from 0 in Python (see p.103). For example,
and the names of their captains will players[1:3] would take the players from index 1 up to index 2. The
be displayed on screen when the first index is inclusive (it is included in the new list) and the second index
program is executed. is exclusive (it is included up to the item before it in the new list). If you are
splitting the list from the first position up to the last position, then you can
leave those indexes blank as Python will understand this. For example,
players[:3] will take the first three players from the list and players[4:]
will take the players from index 4 up to the end of the list.
print("Team 1:")
for player in team1:
print(player)
C >>>
2.5 SELECT THE SECOND TEAM Assigns the second half of the
Now you can allocate players for the list to the variable team2.
second team by repeating steps 2.1–2.3. Type The players in this list will
the following code at the end of the file. be part of the second team
team2 = players[len(players)//2:]
print("\nTeam 2 captain: " + random.choice(team2)) “\n” prints
the name
of the team
print("Team 2:")
captain for
Team 2 on
for player in team2: a new line
print(player)
SAVE
PICK NEW TEAMS
Ada
James
Claire
Martin
Harry
Alice
Craig
Rose TEAM 2
Sonakshi
More teams
Different sports have different numbers of players in their teams. the user for the number of players they want in each
The code in this project assumes that there will be two teams. team. You can then split the number of players into the
However, if you have a longer list of players, you can even have number of teams they can equally be split into. If a team
three or more teams. Update the code in the program to ask is short of players, make sure to inform the user of this.
while True:
random.shuffle(players)
Splits the
team1 = players[:len(players)//3] number of
players into
print("Team 1 captain: " + random.choice(team1)) three equal
parts and
print("Team 1:") assigns the
first part of
for player in team1: the players
list to team1
print(player)
team2 = players[len(players)//3:(len(players)//3)*2] Assigns the
second part
of the
print("\nTeam 2 captain: " + random.choice(team2)) players list
to team2
print("Team 2:")
for player in team2:
print(player)
team3 = players[(len(players)//3)*2:]
print("\nTeam 3 captain: " + random.choice(team2))
print("Team 3:") Assigns the
third team
with its
for player in team3: own list of
players and
print(player) the team
captain
HACKS AND TWEAKS
Team or tournament
Currently the program assumes that the code is for a sport. If you pick team, the code should run as you have
team sport. If you want to create a program for individual already tested. However, if you pick “individual”, the code
sports, change the code as shown below. This will ask the will split the players into random pairs to play against
user if the players need to be split for an individual or team each other.
Who starts?
For both team and print(players[i] + " vs " + players[i+1])
individual sports there
is usually a method to start = random.randrange(i, i+2)
determine who will go
first. Add this extra code
to the program from the
print(players[start] + " starts")
previous hack to do this
for individual sports.
Number of players
Instead of having to change the size of the list each time you have more
or fewer players, you can update the code to ask the user for the total
number of players. This will create the number list, as well as create two
equal teams. Update the program as shown here.
import random
players = []
print("Welcome to Team Allocator!")
number_of_players = int(input("How many players \
Displays a message for
are there? ")) the user to enter the
number of players
for i in range(1, number_of_players + 1):
players.append(i)
team1 = players[:len(players)//2]
print("Team 1 captain: " + str(random.choice(team1)))
print("Team 1:") Updates code for team1
team2 = players[len(players)//2:]
print("\nTeam 2 captain: " + str(random.choice(team2)))
print("Team 2:") Updates code for team2
Debugging
The process of finding and fixing errors in a program is called
debugging. Also known as bugs, errors can range from simple
mistakes in spellings to problems with the logic of the code.
Python has various tools that highlight and help fix these errors.
Syntax errors
Syntax is the term used to describe the arrangement
temperature = 25
and spelling of words and symbols that make up
the code. Syntax errors are the most common and
easily fixed errors. They are equivalent to the sort
of spelling and grammar mistakes that most word- if temperature > 20: This line in the
code should
processing programs highlight. IDLE displays syntax print("Weather is warm") be indented
errors in code in a pop-up window.
Runtime errors
These errors affect the fundamental features of a program. They can
include accessing a nonexistent file, using an identifier that has not
been defined, or performing an operation on incompatible types of
values. Runtime errors cannot be found by checking a program’s syntax.
The Python interpreter discovers them while running the code and
displays an error message called a “traceback” in the shell window.
Type errors
These errors occur when a function or operator is used
with the wrong type of value. The “+” operator can either
concatenate two strings, or add two numbers. It cannot,
however, concatenate a string and a number, which is
what causes the error in this example.
>>> "temperature" + 5
Traceback (most recent call last):
pyshell refers to
File "<pyshell#3", line 1, in <module> the shell window
"temperature" + 5
TypeError: can only concatenate str (not "int") to str
PYTHON
Debugging 130 131
CHECK MODULE
IDLE’s “Check Module” command can be
Run Options Window
found in the Run menu. It checks a program
Select this
file for syntax errors, allowing programmers Python Shell option from
to identify and eliminate them before the Check Module the Run menu
program is run. This tool does not display Run Module
any message unless it finds an error.
Name errors
Misspelling the name of a variable or >>> pront ("Hello world")
function can cause a name error. It can
also be a result of using a variable before Traceback (most recent call last):
a value is assigned to it, or calling a
function before it is defined. In this File "<pyshell#0>", line 1, in module>
example, the typographical error is
only found at run time, so the message pront("Hello world") The command that
is displayed in the shell window. caused the error
NameError: name 'pront' is not defined
Text colouring “if” are orange and strings are green (see p.98). A part
Like most other IDEs (see pp.208–209) and dedicated of the code not appearing in the correct colour can be a
code editing programs, IDLE colours the text of a sign that there is a syntax error. And several lines of code
Python program. This makes it easier to spot errors. suddenly being coloured green is usually the sign of a
For example, keywords such as “for”, “while”, and missing closing quotation mark on a string.
Missing a quotation
mark at the start
Wrong colour
There are four errors in this example. The keyword answer = input(Pick a number")
The missing quotation marks and “while” has been
misspelling of the keyword “while” spelled incorrectly whle answer != 7:
mean that the code will not be
coloured correctly. Misspelling of pritn(Not the right number")
keyword and missing
quote mark answer = input("Pick a number")
PYTHON
Debugging 132 133
Debugger
CHECK THE ERROR IDLE also contains a tool called a debugger. This allows
programmers to “step through” the execution of their
A common issue when debugging is program, running one line at a time. It also shows the
that the actual error may be located just
contents of variables at each step in the program. The
before the place indicated by the error
message. It is therefore worth checking debugger can be started from the shell window, which
for the error earlier in the indicated line, includes a Debug menu. Selecting Debugger from this
or on the line above it. menu will start the debugging process the next time
a program is run. Choosing it again will turn it off.
print(hello " + "world")
Click the shell
Debug Options Window
to produce the
Produces an “Invalid Go to File/Line screen-top
syntax” error due to Debug menu
Debugger
a missing quote
Stack Viewer
Auto-open Stack Viewer
Locals
_annotations_ {}
_builtins_ <module 'builtins' (built-in)>
Everything is spelled correctly _doc_ None
_file_ '/Users/code/debug4.py'
Upper- and lowercase letters are
_loader_ <class '_frozen_improtlib.Builtinimporter'>
not used interchangeably
_name_ '_main_'
Strings have a quotation mark _package_ None
at the beginning and end
_spec_ None
An opening bracket has a count 1
matching closing one
The code has been saved since
changes were last made
No letters are confused with
numbers, e.g. O and 0, or I and 1
There are no unnecessary spaces
at the start of a line
Variables and functions are
declared before they are used
IDLE debugger
When a program is run, the debugger will
display information about it, including current
values of variables. Clicking on the option “Step”
will expose the code running behind the scenes,
which is normally hidden from programmers.
Project planner
Time management tools can be very useful, both at home and
at work. There are several applications that help in tracking
the progress of daily chores and activities. This project will
use Python’s tuples, sets, and graphical modules to create a
planner for developing a small gaming app.
How it works
This planner will create a schedule to help users plan their work. The
program will display a window with a button that a user can press Gantt chart
A Gantt chart is a type of bar chart that is
to choose a project file. It will then read a list of tasks from the file used to illustrate the schedule of a project.
and sort them in the order of their starting time, based on certain The tasks to be performed are listed on the
prerequisites. The resulting data will be converted into a chart that y axis and the time periods are listed on
the x axis. Horizontal bars on the graph
will display when each task starts and ends. display the duration of each activity.
Weekly distribution
of tasks
Project Planner
Open project...
The width of this bar gives
the duration of an activity
Week 1 Week 2 Week 3 Week 4 Week 5
Implement advanced
functionality
Program design
START
This project uses one continuous loop to
check if users have pressed the Open
project... button. If they have, the program
opens a CSV file to read and order its
contents before they are displayed as a Show
chart. The chart will display the amount window
of work to be done in the allotted time.
YES
Show file open Open project...
dialogue to user button pressed?
NO
Order tasks by
start day
NO
Draw Gantt chart Window closed?
CSV file
The tasks in this project are stored as a file of YES
comma-separated values, known as a CSV file.
Using this file is a common way of representing
tabular data, as it can be read and modified by END
spreadsheet applications.
CREATING AND READING THE CSV FILE
6 1
4 5 7
2
PLANNER.PY PROJECT.CSV
You have used the extension “.csv” at the end
of the name. The standard extension is “.py”.
You can choose to use the standard extension instead.
The first column The second column The third column value
value represents the value gives a title to gives the number of days
task number the task the task is expected to take
The values in each
column are separated
1,Design game functionality,2, by commas
PYTHON TUPLE
A tuple is a data structure like a list, but its length
cannot be changed after it has been created and the >>> numbers = (1, 2, 3, 4, 5)
items inside it cannot be updated. Lists are mostly
used to store a sequence of values of the same kind, >>> print(numbers[3]) numbers is
such as a list of numbers representing the height of a tuple with
a group of people. Tuples, on the other hand, are 4 five values
used when the values are related, but of different
kinds, such as one person’s name, age, and height. The value at index Index numbers are enclosed
position 3 in the tuple within square brackets
The function returns the The values are stored as a tuple in the
complete dictionary tasks dictionary by task number SAVE
>>> read_tasks("project.csv")
{'1': ('Design game functionality', '2', ''), '2': ('Draw
Numbers are also
basic images', '1', '1'), '3': ('Break functionality into read as strings
def read_tasks(filename):
tasks = {}
for row in csv.reader(open(filename)):
number = int(row[0]) Converts the task
number from a string
title = row[1] into an integer number
>>> read_tasks("project.csv")
{1: ('Design game functionality', 2.0, ''), 2: ('Draw basic
Task numbers
images', 1.0, '1'), 3: ('Break functionality into steps', 2.0, are read as
integer values
'1'), 4: ('Implement basic functionality', 5.0, '2 3'), 5:
('Test and review', 2.0, '4'), 6: ('Draw better images', 3.0,
Task duration
'5'), 7: ('Implement advanced functionality', 7.0, '5'), 8: is read as
a floating
('Test and review', 4.0, '6 7'), 9: ('Release onto app store', point value
1.0, '8')}
PYTHON SETS
A Python set is another data type that is similar to a
list, but it can only contain unique values. This makes Adds the number
“4” to the set
it similar to the keys of a dictionary. The syntax for
writing a set is similar to that of a dictionary. A set
can be assigned to a variable in several ways. Try >>> numbers.add(4)
these examples in the shell window.
>>> numbers
import csv
def read_tasks(filename):
tasks = {}
for row in csv.reader(open(filename)):
number = int(row[0])
title = row[1]
duration = float(row[2])
prerequisites = set(map(int, row[3].split()))
tasks[number] = (title, duration, prerequisites)
return tasks
SAVE
>>> read_tasks("project.csv")
{1: ('Design game functionality', 2.0, set()),
2: ('Draw basic images', 1.0, {1}), 3: ('Break
functionality into steps', 2.0, {1}), 4:
('Implement basic functionality', 5.0, {2, 3}),
5: ('Test and review', 2.0, {4}), 6: ('Draw All numeric values are
now converted into
better images', 3.0, {5}), 7: ('Implement the correct data type
import csv
Imports the namedtuple() function
from collections import namedtuple from the collections module
PREREQUISITES
TASK
NAMED TUPLE
DURATION TITLE
PYTHON
Project planner 142 143
1.11 CALL THE NAMED TUPLE TYPE
The named tuple type created in the previous step is stored in the
variable Task. You can create new values of this type by calling Task like a
function. Update the read_task() function in your code to call Task instead
of creating a tuple in the normal way. Then, run the module and switch to the shell The named tuple
window to test the code. First, you will display the values in the shell (output 1), Task is stored in
and then you will try to extract one of these values by using its name (output 2). the tasks dictionary
def read_tasks(filename):
tasks = {}
for row in csv.reader(open(filename)):
number = int(row[0])
title = row[1]
duration = float(row[2])
prerequisites = set(map(int, row[3].split()))
tasks[number] = Task(title, duration, prerequisites)
return tasks
SAVE
OUTPUT 1
>>> tasks[4].prerequisites
{2, 3}
OUTPUT 2
Extracts the
prerequisites of
task[4] by name
ORDERING THE TASKS
NO
Are there any
incomplete tasks left? END
YES
YES
return tasks
def order_tasks(tasks):
Gets the task and checks
incomplete = set(tasks) Starts with all the
tasks incomplete if its prerequisites have
been completed
completed = set() and no start days
Design game
Release onto functionality
app store
return start_days
root = tkinter.Tk()
Gives the
root.title("Project Planner") window a title
canvas.pack(side="bottom")
tkinter.mainloop()
Calls the function to open a Specifies the “.” is a special directory name for
file dialogue for choosing a CSV file dialogue title the “current” directory
return start_days
def open_project():
filename = askopenfilename(title="Open Project", initialdir=".", \
filetypes=[("CSV Document", "*.csv")])
tasks = read_tasks(filename)
draw_chart(tasks, canvas)
Draws a chart of the tasks Reads the tasks from the .csv Specifies the
in the canvas widget file returned by the dialogue acceptable file format
PYTHON
Project planner 148 149
3.5 DRAW THE CHART
It is time to draw the project as a Gantt chart. function and gives default values to some of its
Before drawing the chart, you will first need to decide what arguments. Only the first two arguments (tasks and
you want it to look like and what visual elements you need canvas) are actually required to call the function. The
to draw it. Add this code below the code from step 2.1 (above arguments with default values are optional and will
the open_project() function) to draw the headers and take the values that you have specified, creating some
dividers of the chart. This will define a draw_chart() local “constants” in the function.
TASK 1
Column
divider
TASK 2
Task start/
TASK 3 duration bar
week_width = 5 * day_width
canvas.create_line(0, row_height, width, li ne_height, \
fill="grey")
Loops through the number
Sets x to the width of the title
for week_number in range(5): of weeks from 0 to 4
plus the week width times the
number of the week
x = title_width + week_number * week_width
canvas.create_line(x, 0, x, height, fill="grey")
canvas.create_text(x + week_width / 2, row_height / 2, \
Draws a vertical line text=f"Week {week_number+1}", \
at x down the entire
height of the chart font=("Helvetica", font_size, "bold"))
def open_project():
CANVAS[“HEIGHT”]
one or more coordinates as arguments, followed by
a number of optional keyword arguments that allow
the user to specify styling information, such as colours, CANVAS
line thicknesses, or fonts (see tables, below). Canvas
coordinates are specified in pixels from the top-left Y
corner of the drawing area. Colours can be specified
either by their names, such as “red” or “yellow”, or by
their hex code, such as “#FF0000”. Text is drawn centred
on the given coordinates by default. The anchor CANVAS[“WIDTH”]
keyword argument can be set to a “compass point”
constant (tkinter.N, tkinter.NE and tkinter.E) to draw
the text with a corner or edge at the coordinates instead.
y = row_height Begins with y, one row down Loops over the task numbers
from the top of the canvas in the order that they occur in
for task_number in start_days: the start_days dictionary
task = tasks[task_number]
canvas.create_text(title_indent, y + row_height / 2, \
text=task.title, anchor=tkinter.W, \
font=("Helvetica", font_size))
bar_x = title_width + start_days[task_number] \
* day_width
Calculates
bar_y = y + (row_height - bar_height) / 2 the coordinates
of the top-left
corner of the bar
bar_width = task.duration * day_width and its width
canvas.create_rectangle(bar_x, bar_y, bar_x + \
bar_width, bar_y + \
bar_height, fill="red")
y += row_height
Design game
functionality
Implement
basic Draw basic images
functionalit
y
Hacks and tweaks
Stop the window from resizing
At the moment the user can manually resize the window of the Gantt chart.
However, this causes the contents to move around or be cut off. Drawing the Prevents the root
window properly when it is resized is quite complicated, but you can stop it from window from resizing
being resized instead. Add this line of code to the program to make this change. in any direction
root.title("Project Planner")
root.resizable(width=False, height=False)
open_button = tkinter.Button(root, text="Open project...", \
command=open_project)
Project Planner
Open project...
Implement advanced
functionality
root = tkinter.Tk()
root.title("Project Planner")
root.resizable(width=False, height=False)
button_frame = tkinter.Frame(root, padx=5, pady=5) Places the frame at the
top of the window, filling
button_frame.pack(side="top", fill="x") the entire width of x
Open project...
HACKS AND TWEAKS
def open_project():
filename = askopenfilename(title="Open Project", initialdir=".", \
filetypes=[("CSV Document","*.csv")])
tasks = read_tasks(filename)
draw_chart(tasks, canvas)
filename_label.config(text=filename) Updates the text
attribute of the label
root = tkinter.Tk() with the name of the file
root.title("Project Planner")
root.resizable(width=False, height=False)
button_frame = tkinter.Frame(root, padx=5, pady=5)
button_frame.pack(side=”top”, fill=”x”)
open_button = tkinter.Button(button_frame, text="Open project...", \
command=open_project)
open_button.pack(side="left")
Creates a new label
filename_label = tkinter.Label(button_frame) inside button_frame
Project Planner
draw_chart(tasks, canvas)
filename_label.config(text=filename)
def clear_canvas():
filename_label.config(text="")
Creates a new button inside
canvas.delete(tkinter.ALL) Deletes all the the window that will call the
existing items on clear_canvas() function
root = tkinter.Tk() the drawing canvas when pressed
root.title("Project Planner")
open_button = tkinter.Button(root, text="Open project...", \
command=open_project)
open_button.pack(side="left")
clear_button = tkinter.Button(button_frame, text="Clear", \
command=clear_canvas)
clear_button.pack(side="left") Places the new
button on the left
side of the window
filename_label = tkinter.Label(button_frame)
canvas = tkinter.Canvas(root, width=800, height=400, bg="white")
canvas.pack(side="bottom")
SELECT
Class
Programmers use classes to classify related
things together. This is done using the
keyword “class”, which is a grouping of
object-oriented constructs. Here, the class
Car defines the form the objects below
should have.
CAR BICYCLE
Object
An object is an instance of a class, just like
a real car is an instance of the concept of a
car. A car object’s fields and methods would
contain data and code for a particular instance
of the class Car. So the object named “sports”
would have a higher “max_speed” than the
“sedan” object. SEDAN SPORTS
Fields current_speed
Fields contain data about an object.
In this example, fields are likely
to include values that might feature max_speed
in a car simulator program, such
as current_speed, max_speed, and
fuel_level.
fuel_level
PYTHON
Objects and classes 156 157
What are objects and classes?
An object is a data type that is modelled after a real-world item, such
as a car, allowing programmers to create a computer representation
of it. Objects usually consists of two parts: fields, containing data, and
methods, containing code. A class, on the other hand, defines the form a
particular object should have. It is like the “idea” of an object and lays out
the types of field that object would have, and what its methods would do.
Describes the
attributes common Fields of the
to any car class Car
class Car:
current_speed = 0
max_speed = 0
TRUCK
fuel_level = 0
def accelerate(self):
print("speeding up")
def break(self):
print("slowing down")
Methods of
the class Car
SUV my_car = Car()
my_car.current_speed = 4.5
my_car.max_speed = 8.5
my_car.fuel_level = 4.5
Methods
Accelerate
Methods define an
object’s behaviour, so
Sets the fields of the my_car
a car object’s methods
object to specific values
would be likely to include Brake
actions that could be
done to, or with, a car. Instantiating a class
For example, accelerate, A program that allows users to model the functioning
Turn of a car might include the class Car, with attributes
brake, and turn.
common to all cars. A user’s car (here, a sports model)
would then be an object, with fields containing values
related to that particular car, and methods defining
the actions done with the car.
Budget manager
Managing money can be a tedious task, which can be made
easier with a computer. There are various apps for tracking
what you spend, based on setting budgets for different
kinds of expenses. This project will create a simple budget
manager using Python dictionaries and classes.
1100.00
>>> spend("Groceries", 35)
Returns the
budget left
465.00
>>> spend("Groceries", 15)
450.00
>>> print_summary()
Budget Budgeted Spent Remaining
--------------- ---------- ---------- ----------
Groceries 500.00 50.00 450.00
Rent 900.00 0.00 900.00
--------------- ---------- ---------- ----------
Total 1400.00 50.00 1350.00
LIBRARY BUDGET
USER LIBRARY START
add_budget
("Groceries", 500)
Add budget
2000
add_budget
("Rent", 900)
Add expenditure
1100
spend
("Groceries", 35) Print summary
465
Convert the
code to a class
spend
("Groceries", 15)
450
END
SETTING UP
Setting up
1 To create this budget manager, you will need a new
Python file. You can then add some basic code to the file and
build on it later. The use of Python dictionaries will allow you
to save the amount budgeted and spent.
DICTIONARIES
When deciding what Python data structure to use, another, such as an amount of money. In the table
think about how you would write the information to be below, the first column contains the keys of the
stored. Often, the obvious way to write something down dictionary and the second contains the values. If
is similar to the table shown below. If the information in the table has multiple value columns, then these
the first column is unique (the items in it are not repeated), can be stored in separate dictionaries using the
then using Python dictionaries might be the answer. same keys. You can, therefore, have one dictionary
A dictionary is a data structure that consists of multiple for budgets and another for expenditure.
key:value pairs. It maps one value, such as a name, to
DICTIONARY FORMAT
Budget name Budget amount
Groceries 500
Bills 200
Entertainment 50
1100.0
>>> add_budget("Rent", 400)
The available amount
700.0 is deducted twice
>>> budgets
{'Groceries': 500, 'Rent': 400}
EXCEPTIONS
In Python, errors are indicated by raising exceptions. There are a number of standard exception types in
These exceptions interrupt the normal execution of Python. Each of these accept a string value giving an error
code. Unless the exception is caught, the program message that can be displayed to the user to explain what
will immediately exit and display the exception that has gone wrong. The table below lists a few standard
has been raised and the line of code it occurred at. exception types and when they should be used.
TYPES OF EXCEPTIONS
Name Use when
TypeError A value is not of the expected type: for example, using a string where
a number was expected
ValueError A value is invalid in some way: for example, too large or too small
>>> budgets
{'Groceries': 500, 'Rent': 900}
The variables will
not be updated >>> available
with wrong values
1100.0
if name in budgets:
raise ValueError("Budget exists") Checks if the amount being
budgeted is more than the
if amount > available: amount available
Raises an
raise ValueError("Insufficient funds") exception and
leaves the function
budgets[name] = amount immediately
SAVE
ADDING A BUDGET
Tracking expenditure
3 Next, you need to add a way to track
all the expenditure. To do this, you will first
add a function that allows you to enter
the money that has been spent,
and then add another function to
display the summary. This will
indicate the total money spent
and the amount remaining. RENT CLOTHES
GROCERIES MONEY LEFT
def print_summary():
Loops through all the keys
for name in budgets: in the budgets dictionary
Gets the budgeted amount
budgeted = budgets[name] for the name key
Gets the amount spent
spent = expenditure[name] for the name key
Calculates the remaining amount
remaining = budgeted - spent by deducting budgeted from spent
FORMAT STRINGS
In Python, formatted strings can be created from values EXAMPLES OF FORMAT STRINGS
with special format strings. These are written like normal
Example Result
strings, but have an “f” character before the opening
quotation mark. Inside the string, you can place code f'{greeting} World!' 'Hello World!'
expressions within curly brackets. These will be executed
and replaced with their values. The most common f'{greeting:10s}' 'Hello '
expressions used are variable names, but arithmetic
f'{cost:5.2f}' ' 3.47'
calculations can also be used. Any part of the string outside
the brackets is used without change. Detailed formatting f'{cost:5.1f}' ' 3.5'
instructions can be added after a colon. This includes
a letter specifying how to format the value. Placing a f'The answer is {a * b}' 'The answer is 42'
number before this letter allows a width to be specified.
PYTHON
Budget manager 166 167
3.5 ADD A TABLE HEADER
Now, add a header to the
table so that the numbers within each
category can be easily distinguished.
Add two print statements in the BUDGETED SPENT REMAINING
print_summary() function. It may
be easier to type the line with dashes
-------------- --------- ------------------
first – 15 dashes followed by three lots
of 10 dashes, with spaces in between. 500.00 50.00 450.00
You can then line up the titles against
the dashes. 900.00 0.00 900.00
def print_summary():
print("Budget Budgeted Spent Remaining")
print("--------------- ---------- ---------- ----------")
for name in budgets:
The titles have been aligned
budgeted = budgets[name] against the dashes
spent = expenditure[name]
def print_summary():
print("Budget Budgeted Spent Remaining")
print("--------------- ---------- ---------- ----------")
total_budgeted = 0
total_spent = 0 Sets the total
variables to 0
total_remaining = 0
for name in budgets:
TRACKING EXPENDITURE
budgeted = budgets[name]
spent = expenditure[name]
remaining = budgeted - spent
print(f'{name:15s} {budgeted:10.2f} {spent :10.2f} '
f'{remaining:10.2f}')
total_budgeted += budgeted
total_spent += spent Adds the amount
to the totals
total_remaining += remaining
print("--------------- ---------- ---------- ----------")
print(f'{"Total":15s} {total_budgeted:10.2f} {total_spent:10.2f} '
f'{total_budgeted - total_spent:10.2f}')
Prints another
separator line
and the summary
>>> add_budget("Groceries", 500) with the totals
below it
2000.0
>>> add_budget("Rent", 900)
1100.0
>>> spend("Groceries", 35)
465
>>> spend("Groceries", 15)
450
>>> print_summary()
Budget Budgeted Spent Remaining
--------------- ---------- ---------- ----------
Groceries 500.00 50.00 450.00
Final summary
Rent 900.00 0.00 900.00 table printed with
a header and footer
--------------- ---------- ---------- ----------
Total 1400.00 50.00 1350.00
PYTHON
Budget manager 168 169
Converting the
4 code into a class
In this section, you will take all the
code written so far and turn it into
a Python class (see pp.156–57).
This will allow the user to track
multiple budgets simultaneously.
class BudgetManager:
Arguments
within the
def __init__(self, amount): initializer
available = 2500
budgets = {}
expenditure = {}
CONVERTING THE CODE INTO A CLASS
>>> outgoings.print_summary()
PYTHON
Budget manager 172 173
750
>>> holiday.add_budget("Hotel", 300)
450
>>> holiday.spend("Flights", 240)
10
>>> holiday.print_summary()
Budget Budgeted Spent Remaining
--------------- ---------- ---------- ----------
Flights 250.00 240.00 10.00
Hotel 300.00 0.00 300.00
--------------- ---------- ---------- ----------
Total 550.00 240.00 310.00
Reduces available by
the difference between the
old and the new amounts
Stores an
return self.available
empty list
PYTHON
Budget manager 174 175
FOOD
EL
ELECTRIC
IT Y TRAV
Pygame Zero
Pygame Zero is a tool that enables programmers to
build games using Python. It provides a simplified
way to create programs using the powerful functions
and data types in the pygame library.
Install Pygame
3 Once the “pip” package manager is Install Pygame Zero
installed, type the command shown below 4 Finally, type the following
and then press Enter. This will use “pip” to command and then press Enter. This
install the pygame library. will install Pygame Zero.
FINISH
Install extra tools
3 To install some extra tools that the system requires Install Pygame Zero
to run Pygame Zero, use “Homebrew” and type this
5 Finally, this last command
command into the Terminal window followed by Enter. will install Pygame Zero.
Install pygame
4 Now type this
command to install the pip3 install pygame
pygame library and
press Enter.
Knight’s quest
This fast-paced, two-dimensional game will put your reflexes
to the test. It uses coordinates to create a two-dimensional
playing area, and Pygame Zero’s Actor class to introduce the
characters and collectable items in the game. An event loop
program makes the game run smoothly.
Chequered
tiles are
created and
used as the
background
Cracks make
the dungeon
look more
realistic
Create the
door anywhere
along the
circumference
of the dungeon
PYTHON
Knight’s quest 178 179
YOU WILL LEARN WHERE THIS IS USED
❯ How to use lists Time: The concepts in this project are applicable to all kinds
2 hours of 2D computer games, especially ones that are played
❯ How to index strings
Lines of code: on mobile phones. Apart from in dungeon-crawl
❯ How to use nested loops 151 games, image tile grids are also used in colour- and
❯ How to use Pygame Zero Difficulty level shape-matching games. The logic applied in this game
to make a simple game could also be adapted to simple robotics projects.
START
The scenery
The game is based on a simple grid
on which square images called
“tiles” are placed. The scenery of the
game consists of a background of Set up game
floor tiles, with additional tiles Top-level statements in the Python file will be
executed first and can be used to initialize the Set up game
representing the walls and the door.
game state and configure Pygame Zero itself.
Pygame Zero will then open a window and
repeat the event loop continuously.
Setting up
1 To get started with this project, you will
first need to create the folders to hold all the files.
The next step will be to write some code to draw
the background and the players on screen.
1.1 CREATE THE GAME FILE 1.2 SET UP THE IMAGES FOLDER
First, create a new folder on your desktop and You now need a folder to hold the images
name it “KnightsQuest”. Then, open IDLE and create a new required for this project. Go to the KnightsQuest
file by choosing the New File option from the File menu. folder and create a new folder inside it called “images”.
Save this file in the KnightsQuest folder by choosing Save Go to www.dk.com/coding-course and download the
As… from the same menu. Name the file “quest.py”. resource pack for this book. Then copy the image files
for this project into the new “images” folder.
IDLE
ELOPING ELOPING
DE V DE V
DESCRIBING
DESCRIBING
TING
G
ITERATION 1 ITERATION 2
TIN
TES
TES
This function
HEIGHT = GRID_HEIGHT * GRID_SIZE converts a grid
position to screen
def screen_coords(x, y): coordinates
D is the
OUTPUT ON THE SCREEN door
PYTHON
Knight’s quest 182 183
1.6 ADD A FUNCTION TO DRAW THE SCENERY
Next, add a new draw_scenery() function above the y (counting from 0). Subscripting this string with [x] selects
draw() function. This will draw the background of each square on the character representing the square in the column
the map. Since the map is a list of strings, subscripting it as MAP[y] specified by x (also counting from 0). The second subscript
selects the string representing the row of the grid specified by is written immediately after the first as MAP[y][x].
screen.blit("floor1", screen_coords(x, y)
Loops over each
def draw_scenery(): grid position
for y in range(GRID_HEIGHT):
Extracts the
for x in range(GRID_WIDTH): character from the
map represented
square = MAP[y][x] by this grid position
YES
Is square a wall?
NO
YES
Is square the door?
NO
(0, 1)
Defines keys_to_collect
as a global variable
def setup_game():
global player, keys_to_collect
player = Actor("player", anchor=("left", "top"))
keys_to_collect = [] Sets keys_to_collect
to an empty list initially
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH):
square = MAP[y][x]
if square == "P":
player.pos = screen_coords(x, y)
Creates a key if
elif square == "K": the square is K
Creates the key
key = Actor("key", anchor=("left", "top"), \ actor with an
image, anchor,
and position
pos=screen_coords(x, y))
Adds this actor
keys_to_collect.append(key) to the list of keys
created above
ADD THE KEYS
Checks if the
keys_to_collect
list is not empty
def setup_game():
global game_over, player, keys_to_collect
game_over = False Sets the
variable to
player = Actor("player", anchor=("left", "top")) False initially
keys_to_collect = []
for y in range(GRID_HEIGHT):
The colour for the outline (in the same format as color),
ocolor
defaults to “black” if not specified
def setup_game():
global game_over, player, keys_to_collect, guards
game_over = False
player = Actor("player", anchor=("left", "top"))
keys_to_collect = []
Sets guards to an
guards = [] empty list initially
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH):
square = MAP[y][x]
if square == "P":
player.pos = screen_coords(x, y)
elif square == "K":
key = Actor("key", anchor=("left", "top"), \
pos=screen_coords(x, y))
keys_to_collect.append(key) Creates the
guard actor
elif square == "G":
guard = Actor("guard", anchor=("left", "top"), \
pos=screen_coords(x, y))
guards.append(guard)
YES
Is game over?
NO
YES
Is guard in same
position as player?
END
PYTHON
Knight’s quest 192 193
4.1 ADD A FUNCTION TO MOVE A GUARD
Start by adding a new function, move_guard(), to Checks if the player is
move a single guard. The code will work for any guard actor, Gets the grid to the right of the guard,
so pass an argument for the guard you want to move. Add the position of the and whether the square
following code immediately after the move_player() function. player actor to the right is a wall
break
player.pos = screen_coords(x, y)
def move_guard(guard):
Defines game_over
global game_over as a global variable
this interval.
setup_game()
clock.schedule_interval(move_guards, GUARD_MOVE_INTERVAL)
pgzrun.go()
clock.schedule_unique(function, delay) Similar to clock.schedule(), except that multiple calls to this will
cancel any previously scheduled calls that have not yet happened
def setup_game():
global game_over, player_won, player, keys_to_collect, guards
game_over = False
player_won = False Sets the variable to
False initially
player = Actor("player", anchor=("left", "top"))
SAVE
if game_over:
draw_game_over()
Checks if the space-bar
def on_key_up(key):
has been pressed once
the game is over
if key == keys.SPACE and game_over:
setup_game() Calls setup_game()
to reset the game
PYTHON
Knight’s quest 196 197
5.4 ADD ANOTHER MESSAGE
It will be useful to tell the player that they
can press the space-bar to restart. To do this, add a new
message at the end of the draw_game_over() function.
You need to use midtop anchoring again to position the
text GRID_SIZE pixels below the centre of the screen.
Run the game. You should be able to replay it now. GAME OVER
YOU LOST!
Press SPACE to play again
else:
screen.draw.text("You lost!", midtop=screen_middle, \
fontsize=GRID_SIZE, color="red", owidth=1)
screen.draw.text("Press SPACE to play again", midtop=(WIDTH / 2, \
HEIGHT / 2 + GRID_SIZE), fontsize=GRID_SIZE / 2, \
Draws the new
message on screen color="cyan", owidth=1)
ANIMATIONS
The animate() function can take two other allows you to specify the name of a function you
optional keyword arguments – tween, which want to call after the animation is complete.
specifies how to animate the in-between values The value of tween should be one of the
of the property, and on_finished, which strings mentioned below.
GUARD_MOVE_INTERVAL = 0.5
PLAYER_MOVE_INTERVAL = 0.1 Time it takes for the player
actor to move from one
position to another
keys_to_collect.remove(key)
break
animate(player, pos=screen_coords(x, y), \ Updates the
player’s position
duration=PLAYER_MOVE_INTERVAL) after 0.1 seconds
SAVE
PYTHON
Knight’s quest 198 199
Make a chequerboard background
7 Now return to some of the earlier graphical
elements and see if you can make the game look a little
more interesting. At the moment, the background is just
a single tile repeated across the entire floor. Add a
chequerboard pattern to break things up a little and
make the floor look more “tiled”.
def draw_background():
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH): Checks if the x and y Draws the floor1 tile
values are either both at this position if the
if x % 2 == y % 2: odd or both even above condition is true
def draw_background():
random.seed(BACKGROUND_SEED)
for y in range(GRID_HEIGHT):
for x in range(GRID_WIDTH):
if x % 2 == y % 2:
screen.blit("floor1", screen_coords(x, y))
else:
screen.blit("floor2", screen_coords(x, y)) Picks a random
number between
n = random.randint(0, 99) 0 and 99
Checks if n is
if n < 5: less than 5
SAVE
Hacks and tweaks
Opening the door
While users may immediately realize that they need to collect is to only draw the door when there are no keys
the keys, it may not be obvious when they can leave the dungeon. left to be collected. In the draw_scenery()
If you can visually open the door when the last key has been function, change the logic for deciding when
collected, it will be obvious what to do. The easiest way to do this to draw the door as shown here.
Keep moving
It would help if the player could move continuously in one repeat_player_move() function below the move_player()
direction by holding down an arrow key instead of repeatedly function. It uses members of Pygame Zero’s keyboard object to
pressing it. To do this, you can use the on_finished argument of check if a particular key is pressed. You might find that the game is
animate() function. This allows the user to specify a function to now too easy. You can change the PLAYER_MOVE_INTERVAL
be called when the actor has finished moving. Make a change in constant at the top of the file to slow the player down and make
the move_player() function, as shown here. Then add a new the game more challenging.
move_player(1, 0)
The player will now
elif keyboard.down: move continuously in
the chosen direction
move_player(0, 1)
PYTHON
Knight’s quest 202 203
billions of devices.
Code editor tools that simplify and accelerate the process of editing.
Simple text editors, such as Notepad, can be used to These elements automate common repetitive tasks
write code, but they cannot enhance or ease the process and assist the programmer to write better software
of code editing. The code editors available online have by identifying problems and debugging code. Some
specialized functionalities, or certain built-in features, of the most useful code editor tools are listed here.
Sublime Text A small but powerful code editor that works with
several languages and has many tools and shortcuts
to aid coding. (https://www.sublimetext.com/)
Lightweight editors
These editors are used to open and edit a file Visual Studio Code Smaller and simpler than the Community edition
instantly. They have basic features and are fast (see right), Code is a very popular editor that can work
and simple to use. Lightweight editors can with many languages and has advanced features.
only be used when working on a single file. (https://visualstudio.microsoft.com/)
This table lists some of the most commonly
used lightweight editors.
WEB TECHNOLOGIES
Code editors 208 209
CLIENT-SIDE AND SERVER-SIDE SCRIPTING
In client-side scripting, processing takes
place in a web browser. The code is Client-side code
transferred from a web server to the runs in the browser
user’s browser over the Internet.
In server-side scripting, processing
takes place on a web server. The user INTERNET
sends a request to the web server over
the Internet, which is fulfilled when the Server-side code runs
server generates dynamic HTML pages on the web server
in response and sends them to the user’s
browser through the same channel. CLIENT SIDE SERVER SIDE
Tabs Zoom
Tabs provide an easy way to arrange Zooming in makes a part of the
and manage multiple open files in text larger and easier to read,
a code editor. Each tab displays the while zooming out offers a quick
name of a file, and clicking the name way to view the entire document
displays the file in a code window. on the screen in one go.
CodePen An online code editor that can be used for testing and sharing
HTML, CSS, and JavaScript code snippets. It is very useful for
finding important components to use on websites. IDEs
(https://codepen.io/) IDEs are powerful editors that work
with many languages and have
Visual Studio Community Used to create web and desktop applications for Microsoft, advanced features that enable a
Apple, and Linux environments. It helps programmers build programmer to integrate several
large-scale systems using multiple languages and frameworks. languages into a single solution.
(https://visualstudio.microsoft.com/) IDEs are used when working on the
entire project. This table lists a few
commonly used IDEs.
Exploring basic HTML
HTML is the most basic building block of the Web. An HTML file
contains all the text, images, and data that is displayed on the
browser. It also includes a list of any other files, such as fonts, styles,
and scripts that are required to render the HTML elements correctly.
HTML tags set of brackets, but some tags do not require a closing
An HTML tag is a keyword, or a set of characters, that tag and include a closing slash to indicate that they
defines the format of a web page and determines how are single tags.
its content is displayed on screen. The combination Element
and order of the HTML tags determine the structure
and design of the HTML document. A client browser <div> Parent tag
uses the information in each tag to understand the
nature of the tags’ content and how to display them
<span>content</span> Indented
child tag
correctly. The combination of a tag and its content is </div>
known as an element. Some tags, called parent tags,
can contain other tags, called children tags. Most
tags must have an opening and closing tag, like a Opening tag Content Closing tag
<img/>
is used to
The <img/> tag
</div> ag e on the page.
<body></b <div> > tag describe an im
The <body> dy>
o <p></p> contains the url
This tag contains the d iv
The < er for all Its “src” at tribute location of
tag ain int s to th e
contains al t that po
l th text that should appear
is a c o n ments the image file.
data, and im e text, ML ele nd
that are dis ages
as a paragraph on the HT be st yled a p.
played screen. The browser at c a n a g ro u
when the th n ed as lays
starts a new line sit io
document HTML po g disp
is open and adds margins This ta ents on
in a browse ed for spacing around elem line.
r.
the paragraph. a ne w
l>
<html></htm apply to
e ar e ou te r tags that
Thes The
L document.
<a></a> the entire HTM cates the markup
g indi
The <a> (anchor) tag describes a first <html> ta for the document,
hyperlink, which is used to link one language used tag marks the end
ml>
page to another. This tag contains and the </ht web page.
of the
the “href” attribute (see p.211), which
holds the link’s destination.
<h1></h1>
The <h1/h2/h3/h4/h <br/>
tags indicate that the 5/h6>
tex t is a header. The <br/> tag tells the
<h1> is usually used
for
of the page, while the the title browser to start a new line. It
others are is a single tag, with the closing
used to style smalle
r headings slash included before the closing
on the document. greater-than sign.
WEB TECHNOLOGIES
Exploring basic HTML 210 211
Attributes
INDENTING TAGS Most HTML tags have attributes that
provide additional information about the
Good programming includes using visual aids to make HTML element. An attribute describes a
code more readable. One of the easiest ways to improve
property or characteristic of the element.
the readability of code is to indent child tags inside their
parent tags. To help with the indentation, a “Tidy HTML” It always appears inside the element’s
or “Format HTML” tool can be used to format the code opening tag in a key=“value” format. Some
and indent the children tags. attributes may be required by the tag
type to render correctly, while other
attributes may be optional.
“class” attribute
<body> The <body> tag
The “class” attribute describes the
name of a group that the element
<p></p> is a part of. Many elements on the
same page can be members of
</body> the same class.
The outer
</html> </html> tag
“style” attribute
HTML document structure The “style” attribute describes the
Every HTML document requires a minimum number visual characteristics of an element.
of tags. Recognizing the importance of tags in code, It defines a list of key-value pairs.
most code editors today automatically add these to Each key-value style definition is
a blank HTML document. separated by a semicolon (see p.234).
HTML forms
and hyperlinks
Web pages are connected by hyperlinks and forms. While hyperlinks
send requests for a specific url, forms send a request that includes
data from the current web page. This data is then used by the server
to process the request.
HTML forms server. Every input field must have a “name” attribute.
An HTML <form> tag contains input elements that This identifier is used as the key for the data value. A
allow the user to enter data to be sent to the server. form can include various elements for inputting data,
When a user clicks the submit button, the browser will including text fields, text areas, labels, checkboxes,
send the values of all the input fields in the form to the radio buttons, select drop-down lists, and hidden fields.
Labels
The <label> tag adds a text label to an <label for="Name">Name:</label>
input control. When the label is clicked,
the cursor jumps to the input control. <input type="text" id="Name" name="Name"
The “for” attribute in the <label> tag must
point to the “id” attribute (see p.211) of placeholder="Enter name" />
the input control.
Checkboxes
This is used for indicating a true or <input type="checkbox" name="hasDrivingLicense"
false value. If the checkbox is ticked,
the browser submits the value in the value="true"> Do you have a driving license?
“value” attribute.
Radio buttons
Radio buttons are used to select one <input type="radio" name"gender" value="male"
of a group of possible values. Each
radio button’s “name” attribute will checked/> Male<br/>
contain the same value. This indicates
that they are possible answers for the <input type="radio" name"gender" value="female"
same field.
/> Female
WEB TECHNOLOGIES
HTML forms and hyperlinks 212 213
Hyperlinks and URLs simply scroll to the required area. In HTML,
Hyperlinks are text hotspots that, when clicked, hyperlinks are indicated by an anchor <a> tag.
navigate the browser to a new HTML document. This tag contains an “href” attribute (see p.211)
They can also refer to another element on the that stores a url. This url is the address to the
same web page, in which case the browser will new HTML document.
External hyperlink
These are hyperlinks to an <a href="http://www.dkp.com/otherPage.html">link</a>
HTML document on another
website. It requires a complete External hyperlinks begin with
url to navigate. the “http://” prefix
65%
Keyboard alternatives
Some users may prefer using a keyboard
rather than a mouse, so websites should
provide for keyboard alternatives for actions,
such as scrolling, that usually rely on a mouse.
Text alternatives
Non-browser clients require text alternatives for non-text items.
Include an “alt” attribute in an <img/> tag to ensure that such Describes the
clients can display a text value if they cannot display images. image in text
Responsive layout
Hosting considerations
In the past, when the Web was primarily Web hosting is a service that makes websites
viewed in a browser running on a desktop, accessible over the World Wide Web. Although
the width of HTML documents was
commonly defined by a fixed number
it is possible to host a website from a personal
of pixels. Since many users today view computer, it is better to do so from a server
websites on a range of devices, such as that is designed to be online 24/7 and can
smartphones and tablets, it is necessary
to code the HTML so that the website can
provide backup and security to protect the site.
fit on any size screen. The ability to stretch
and shape the HTML to fit different screens
is known as being “responsive”. Shared hosting
In shared hosting, the web server hosts
many different websites and databases.
Each user can rent enough disk space,
bandwidth, and database access to
provide hosting for a single website.
Travel
Virtual Private Server (VPS) hosting
This involves a single server being divided
into multiple virtual machines. Each
Travel website being hosted rents a machine,
which is managed as a standalone server,
but actually shares resources with all other
Tourist virtual machines on that server.
spots
Dedicated server
TABLET PHONE A single server is used to host the website,
and there is no sharing of resources.
The user is responsible for installing and
configuring all software and security
Compliance with guidelines on the server.
All the code should comply with the
Web Content Accessibility Guidelines to
ensure that users with disabilities are able Elastic cloud computing
to enjoy the website. More information This system can adapt so that the needs of
can be found at https://www.w3.org/WAI/ the system match the resources available
standards-guidelines/wcag/ to it. It provides the most functionality and
flexibility, but comes at a higher cost than
other hosting options.
Build a web page
A modern website is built using more than one programming
language. In this project you will learn to create a basic web page,
in this instance a pet store. You will need to combine HTML, CSS,
and JavaScript, but the project is made up of three parts. First you
will learn how to build an HTML framework.
file:///PetShop/index.html file:///PetShop/index.html
Free shipping
Free shipping
PET SHOP Home About Shop Contact
• Home
• About
• Shop
• Contact
Create the
HTML document, PET SHOP
PET SHOP
which will PET SHOP
include all text,
images, and data SHOP NOW
SHOP NOW
LOVE FISH
Development environment
The IDE (see pp.208–209) 1.1 DOWNLOAD VISUAL STUDIO
“Microsoft Visual Studio Open a browser, go to the website mentioned below and
Community 2019” will be used in download the Community edition of Visual Studio. The browser
this project. It is a free software will download a .dmg file to the Downloads folder on a Mac. If
available for both Windows and it does not run automatically, go to the folder and double-click
macOS, and supports various the file to run it. On a Windows computer, save the installation
programming languages. .exe file to your hard drive and then run it.
www.visualstudio.com/downloads
Browser
This project uses the
Google Chrome browser
to run and debug the code. 1.2 INSTALL COMPONENTS
The Visual Studio Installer will display a list of languages
You are welcome to use a
you can program in. This project only requires languages for web
different browser if you are
development, so make sure to select the component .Net Core or
more comfortable with it.
ASP.net and web development. The installer will then download
and install the necessary components.
WINDOWS
INSTALLING AN IDE
Getting started
2 After installing an IDE, it is important to get
2.1 CREATE ROOT FOLDER
You will need a folder to hold
the basic elements required for coding the website. all the files for the website. Use Finder
to navigate to the “Users/[user account
The next few steps will teach you how to create the name]” folder on a Mac, or use File
root folder for the website, as well as the solution explorer to navigate to the “C“ drive on
and index file required for writing the HTML code. a Windows computer. Then right-click
and choose New Folder to create the PETSHOP
website folder. Name it “PetShop”.
IMAGE
PROJECT
PETSHOP
WEB TECHNOLOGIES
Build a web page 218 219
2.3 OPEN A NEW PROJECT
The next step is to open a website project in Visual and then Blank Solution. In Windows, open the File menu,
Studio. On a Mac, open Visual Studio, go to the File menu, and select Open, and then select Web Site. Choose the PetShop
select New Solution. In the Other section, select Miscellaneous folder that was created in the previous step.
Click here to open Select this option to Click here to open a new
a new project create the project project on Windows
MAC WINDOWS
Run Item
Start Debugging Item
LOOK FOR THE Add
Add New Project...
“VIEW” MENU Add Existing Project...
TO DISPLAY THE Add Solution Folder
“SOLUTION EXPLORER” IF IT This will add a new file
inside the website folder
New File...
Add Files...
IS NOT VISIBLE
SOLUTIONS
</body>
Outer tag for the </html>
HTML document
Structure the
3 home page
Pet Shop
COPYRIGHT
WEB TECHNOLOGIES
Build a web page 220 221
3.1 ADD THE WEBSITE NAME
Before adding the text,
images, and data to the page, add
<head> This text will appear
the website name into the <head> as the tab title in
tag by adding the page title definition <meta charset="utf-8" /> the browser
into the <title> tag.
This tag will contain the elements Child tags are indented under The promotional
that can be styled as a group the parent “promo” <div> tag messages
<body>
<div id="promo" >
<div>Free shipping</div>
<div style="display:none;">New toys for puppies</div>
<div style="display:none;">Buy 5 toys and save 30%</div>
<div style="display:none;">Same day dispatch</div>
</div>
</body>
STRUCTURE THE HOME PAGE
<div class="wrap">
<div id="topLinks">
</div> The “id” attribute describes the identity
of the element, and can be used to select
</div> the element in CSS and JavaScript
</div>
Closing tag for Closing tag for Closing tag for the
the “topMenu” div the “wrap” div “topLinks” div
WEB TECHNOLOGIES
Build a web page 222 223
3.6 ADD THE
HYPERLINK LIST ...<div id="topLinks">
Inside the “topLinks” div, add
an unordered list that will Tag for unordered list
contain the actual hyperlinks in
<ul>
the Top Menu for the HTML The <a> anchor tag is used
pages: Home, About, Shop,
<li>
to describe a hyperlink
and Contact. Then add a small
link, which appears as <a href="/">Home</a>
the company name, back
to the home page. Just below </li> The <li> tag is placed inside
a <ul> tag to represent each
the “topLinks” div, add another
anchor tag to contain the <li> individual item within a list
name of the website. This will
hyperlink to the home page. <a href="/">About</a>
</li> The “href” attribute contains the url that
points to the hyperlink destination
<li>
<a href="/">Shop</a>
</li> The <li> tag represents a
list item in an ordered or
<li> unordered list
<a href="/">Contact</a>
</li>
</ul>
</div>
<a class="logo" href="/">PET SHOP</a>
Pet Shop
SAVE
file:///C:/PetShop/index.html
The Top Menu Free shipping
list appears as
• Home
hyperlinks • About
• Shop
• Contact
PET SHOP
HEADING
SUBHEADING
HORIZONTAL RULE
Feature box structure
The left half of the feature box will contain DESCRIPTION
a heading, subheading, a text description,
and a link to the category on the website. LINK IMAGE
The right half will hold an image.
WEB TECHNOLOGIES
Build a web page 224 225
4.1 USING THE CLASS ATTRIBUTE
Add this code below the “spacer” div to define the left and
right columns of the feature box for the fish department. The “class”
attribute is used instead of the “id” attribute to style the HTML tag
because the feature box will be used multiple times on the same page.
<div class="leftColumn">
<div class="text">
This tag contains the <h2>LOVE FISH</h2>
feature box heading
<div class="subHeading">THE WIDEST RANGE OF
FISHES</div>
Adds a <hr />
horizontal rule
<p>Indoor and outdoor, we’ve
got them all!</p>
<div class="spacer v40"></div>
<a href="">CLICK FOR FISH</a>
</div>
</div>
<div class="rightColumn">
The <a> tag
<a class="featureImage" src="/Fish">
describes a
hyperlink
<img src="images/fish_feature_1.jpg" />
</a>
The “src” attribute contains
</div> the url to the image file
ON SALE
$4 $4
$15 $10 $10
WEB TECHNOLOGIES
Build a web page 226 227
Advertising the dog category
5 It is now time to add a second category to
the website to advertise the dog department. This
feature box will appear below the fish department,
and will have the image on the left and all the text
elements on the right.
The “href” attribute contains This text will appear Description text for
the url that points to the as a hyperlink for the the dog department
hyperlink’s destination dog department
ADVERTISING THE DOG CATEGORY
Advertising the
6 bird category
The next feature box to be included is
for the bird department. Similar to the
fish feature box, this department will
have the text elements on the left and
the image on the right. The bird category
will appear below the dog category on
the website.
<div class="rightColumn">
<a class="featureImage" src="/Bird">
<img src="images/bird_feature.jpg" />
</a>
</div>
</div>
</div>
<div class="clear"></div>
<div id="birdImage" class="middleImage">
<img src="images/bird_feeder.jpg" /> File name of the
middle image
</div>
IMAGES
SCROLL TO THE TOP
<hr />
The <p> tag makes the <p>
information appear
as a paragraph TEL : 012-345-6789
</p>
<p>
EMAIL : <a href="mailto:[email protected]"
class="emailLink">[email protected]</a>
</p>
<p>
The <br /> tag tells
PET SHOP<br />
the browser to start
a new line
80 Strand<br />
This text will appear
as the address of London<br />
the Pet Shop
WC2R 0RL
</p>
</div>
</div>
<div class="rightColumn">
</div>
</div>
<div class="rightColumn">
<iframe src="https://www.google.com/maps/embed?p
b=!1m18!1m12!1m3!1d2483.1688989591494!2d-0.12403078438577886!3d51.510
117279635615!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x4876
04c97bf47a1d%3A0xaf65b3d1a31e2229!2s80+Strand%2C+London+WC2R+0BP%2C+U
K!5e0!3m2!1sen!2sza!4v1539340576969" frameborder="0" style="border:0"
allowfullscreen class="contactMap"></iframe>
</div>
</div> Closing tag for the “contactUs” div
<div id="subscribe">
Header for the
<h2>SUBSCRIBE TO OUR MAILING LIST</h2> Subscribe section
</div>
<div id="footer">
<ul>
<li>
<a href="/storeFinder">Store Finder</a>
</li>
<li>
<a href="/shipping">Shipping</a> The second
hyperlink
</li>
<li>
<a href="/FAQ">FAQ</a>
</li>
</ul> The <ul> tag is a block element used
to designate an unordered list
</div>
WEB TECHNOLOGIES
Build a web page 232 233
11 ADD THE COPYRIGHT NOTICE
Then add a copyright notice at the bottom of the page.
This will contain the copyright message and the company logo.
Notice that in the code below, the company logo is contained
in a <span> tag so that it can be styled later in Styling the web
page (see pp.242–63). An HTML entity has also been used for the
copyright symbol. You have now created the basic framework
for your web page. Additional pages can also be created to build
a fully functioning website (see p.303).
<div id="copyright">
<div>© 2020 <span class="logo">PET SHOP</span>
</div>
HTML entity for the
</div> copyright symbol
</body>
The company logo
ENTITIES
Some characters are not allowed in HTML COMMON ENTITIES
because they are reserved by HTML, CSS, or Symbol Meaning HTML entity
JavaScript. So when you want these restricted
characters to appear on screen, they must be
coded with an HTML entity so that they will render
correctly in the browser.
" Quotation Marks "
Whitespace/spacebar
This HTML entity will
display a © symbol
& Ampersand &
<p>
© DK Books 2020 % Percent &percent;
</p>
$ Dollar $
Why CSS? way to define the style of single elements, and to share
Website styling, until 1996, was done inside individual the same styles across multiple elements in an HTML
HTML tags, making code extremely long and cluttered. document. The client web browser reads the CSS files
CSS simplified this by separating style from content. and applies the style definition to each element in the
A CSS file contains a list of rules that provide an easy HTML document.
“display” property will have padding: 10px 12px 15px 30px; Specifies the spacing settings (see p.245)
the value “none”. margin 40px;
CSS instructions
A CSS instruction contains a body {
property and a value that defines
how that property should be padding: 20px; The “padding” property
styled. These instructions are has the value “20px”
grouped together in a style margin: 0;
definition. In this example, the
selector is “body”. The style background-color: gray;
definition is the set of style
instructions contained in the curly font-family: "Open Sans", sans-serif;
brackets. Each style instruction
has a semicolon at the end. font-size: 16px;
}
Basic selectors
A CSS selector is a pattern used to identify which HTML GROUPING
elements qualify to have the style applied to them. CSS SELECTORS
selectors allow programmers to target specific HTML
elements with style sheets. There are three basic selectors
MINIMIZES CODE
in CSS: the element selector, id selector, and class selector. IN A STYLE SHEET
Element selector
This is used to target all the HTML <p>This text to be in red</p>
elements of a certain type. For
example, all elements inside the HTML
<p> tag will be coloured red. This text will
implement the style
definition applied to
p {
the <p> tag
Selects all
paragraph
color: red;
elements
}
CSS
Class selector
The dot (.) prefix indicates a class selector. Multiple elements
in an HTML document can share the same class. A class
selector is used to target a group of HTML elements that
all have a certain “class” attribute value. For example, all
elements that have the class “roundedCorners” will be styled.
<div class="roundedCorners"></div>
HTML This div will implement the
“roundedCorner” style definition
.roundedCorners{
border-radius: 20px; Selects all elements
with the class
“roundedCorners”
}
CSS
WEB TECHNOLOGIES
CSS selectors 236 237
Complex selectors
GROUPING SELECTORS Selectors can also be combined to
provide more specific definitions
If multiple elements are to have the same style, it is not based on the relationships between
necessary to define them separately. Selectors can be
the elements. You can combine the
grouped together using a comma. All grouped selectors
will have the same style applied to them. id, class, or tag type into a complex
selector definition.
<h1>, <h2>,
h1, h2, h3{ and <h3> tags Child selector
are grouped This selector includes all the
font-size: 24px; and will all elements that are children of a
have a font particular element (see p.210). Use
} size of 24px the greater than (>) symbol between
the elements to indicate this selector.
For example, div > p
Descendant selector
Indicated by a space, this defines all
elements that are descendants of a
particular element. This is similar to
the child selector, but will include
children of the child element.
For example, div p
Styling colour
CSS allows programmers to define the colour of elements
on a website, including background colours, borders,
and text. The most common colours can be set with a
text value of the colour name. For example, white, red,
or blue. All modern browsers support 140 HTML colour
names. Any other colour value can be described in Hex,
RGB, or RGBA format.
color:rgba(0,0,255, 0.5);
RGBA format’s alpha channel parameter
add text
describes the transparency of a colour
Origin
Browsers have built-in default styles
Border styling that they apply to HTML tags. These are
known as user-agent styles. However,
The CSS border properties styles defined by the programmer,
called author styles, will override these
allow programmers to specify user-agent styles.
the style, width, and colour
of an element’s border. These Importance
border styles can be defined A style instruction that is marked with
in several different ways. the “!important” declaration will be
given priority over other instructions.
• Define border settings It will always be applied to an element,
in one line regardless of the placement of the
border: 1px solid black; instruction in the CSS hierarchy.
• Define border settings
in separate lines Specificity
A style that has a more detailed selector
border-width: 1px; will be applied before a style that is
border-style: solid; less specific. This means that the greater
border-color: black; the number of elements in the selector,
the higher the priority that the style
• Define different vertical will receive.
and horizontal borders
border-width: 1px 0px; Instruction order
• Define different width for A style that is defined earlier in a CSS
each side of the border file will be overridden by a style that is
defined later, and a style that is defined
border-width: 1px 0px
in the CSS file will be overridden by
3px 2px; the styles defined inline by a “style”
attribute in an HTML tag.
Animation
!IMPORTANT
The “transition” instruction in CSS
allows programmers to create simple The !important declaration is an easy
way of instructing the browser to prioritize
animations in modern browsers, such
a style definition, but it should only be
as a button changing size or colour used as a last resort. It is preferable to
when a mouse hovers over it. To do this, make the selector more specific, by
the property to be animated and the including additional classes or id values
duration of the animation should be in the selection criteria. CSS will apply
specified in the CSS file (see p.250). the definition with the most specific
selector, avoiding the need to use the
!important declaration.
Responsive layouts
A responsive website has a design that can adapt to display
correctly on any size screen, from desktop monitors and
laptops to smartphones and tablets. This is achieved by
a clever combination of HTML, CSS, and JavaScript.
Viewport
The “viewport” declaration tells a browser that a website has
a responsive layout. The declaration is placed alongside other
metadata. The “content” attribute instructs the browser to set
the page width the same as the screen width. It also sets the
initial zoom level. These meta instructions allow the page
elements to adjust to the maximum width of the screen and MULTIPLE CSS FILES CAN
improves the user experience by displaying the correct styling BE LINKED TO AN HTML
and layout for any screen size. Without these instructions, the
browser will zoom out to show the whole page, rather than
DOCUMENT TO MAKE A
allowing the page elements to reshape to the width of the screen. RESPONSIVE WEB PAGE
<head>
<meta name="viewport" content="width=device-width, The “content”
attribute sets
the page width
initial-scale=1.0"> The “viewport”
declaration is placed and the initial
inside the <head> tag zoom level to 1
</head>
Flexible layouts
Including the
“viewport” declaration
in a responsive design
allows the page HEADER
HEADER
elements to adjust
to fit the screen size.
FEATURE BOX IMAGE
FEATURE BOX IMAGE
FOOTER
FOOTER
WEB TECHNOLOGIES
Responsive layouts 240 241
Why responsive? with narrow screens forced programmers to
When the Web was first created, almost all users maintain multiple versions of their sites, each
viewed websites on a desktop monitor. Early designed to display correctly on a different size
websites were programmed to be viewed at a fixed of screen. Today, there are many different
width of 800px. This width was gradually increased device sizes that can display web pages. The
over the years as the average user’s screen size solution to this is to have a single flexible
increased. The arrival of browsers on smartphones layout that can adjust to any screen size.
SPECIALS CONTACT
CONTACT
FOOTER
FOOTER
Styling the web page
In this part of the project, styling will be applied to the framework created
in HTML. CSS allows programmers to have much better control over the
layout of their website. The look of the site can be kept consistent by using
a single style sheet, which makes the maintenance of a website more
efficient. This also saves time and makes it easy to update the design.
file:///PetShop/index.html
Free shipping
HTML FILE
Add visual styles
and layout
definitions for
the HTML
elements
PET SHOP
SHOP NOW
DEVELOPMENT
ENVIRONMENT
Styled website
The long vertical web page from the HTML
END part of this project will now appear styled,
with clearly defined sections and formatted
text and images. Adding CSS makes the web
PROGRAM DESIGN page more visual and individual.
WEB TECHNOLOGIES
Styling the web page 242 243
YOU WILL LEARN WHERE THIS IS USED
❯ How to use CSS style sheets Time: CSS is used in all modern websites where visual
2–3 hours appearance is important. Using CSS, it is possible
❯ How to create buttons
with rollovers Lines of code: 315
to give every element of a website a distinct style.
A well-presented web page will encourage interaction
❯ How to add CSS animations Difficulty level with the user and will be easier to navigate as well.
and transitions
Setting up
1 Before you can start styling the website, it is necessary
to create a special CSS file to contain the code and link it to the
HTML file previously created. The following steps will create
a dedicated “styles” folder and the CSS file inside it.
<head>
<meta charset="utf-8" />
Title to be displayed
<title>Pet Shop</title> in the browser tab
</head>
Page elements
Every website is made up
of various elements serving
different purposes. CSS
can add unique styles to
every element.
PET SHOP
FONT TYPE
FONT FAMILY
FONT WEIGHT
clear: both;
}
#promo, IMAGE
text-align: center;
color: #fff; Hex code for the SUBSCRIBE
colour white
min-width: 1000px;
} FOOTER
3.2 BACKGROUND COLOUR FOR PROMO 3.3 ADD PADDING TO THE PROMO DIV
Next, you will add a background colour to the Add padding around the text in the Promotional
Promotional Messages section to make it more visible on Messages to introduce some space from the border. The
the web page. This style only applies to the promo section. style will be applied to all the promotional messages
contained within the “promo” div.
Pet Shop
file:///PetShop/index.html
color: #333;
}
.wrap { Add this after the
code from step 2.4
margin: 0 auto; Aligns the
“wrap” element
padding: 0; to the centre
of the page
width: 1000px;
}
HOME ABOUT SHOP CONTACT
WEB TECHNOLOGIES
Styling the web page 248 249
3.6 DEFINE THE TOP MENU 3.7 DEFINE HORIZONTAL MENU LISTS
Now add the style definitions for the The menu lists in both Top Menu and the Footer are
Top Menu section. This panel will run across horizontal, so you can give them the same style definitions. The
the full screen and will contain the menu items menu items should align left within their container lists, so that
and logo. Set a fixed height for the menu they appear in a horizontal line with the first item on the left.
and add padding in all directions for the list
of menu items contained in the panel. The two selectors share the No bullet points will be
same style definition added to the list items
#topLinks li a {
color: #333;
text-align: center; Centre aligns the
hyperlink contents
padding: 16px;
No underline beneath
text-decoration: none; the hyperlink Transition effect
when a mouse moves
-webkit-transition: all 250ms ease-out; off the hyperlink
#topLinks li a:hover {
Hex code for
color: #4392F1; the colour blue Transition effect
when a mouse moves
-webkit-transition: all 250ms ease-out; over the hyperlink
#topMenu .logo:hover {
This will make the logo
color: #4392F1; appear blue when the
mouse hovers over it
YLES }
LOGO ST
.logo {
font-family: "Anton", cursive;
PET SHOP
PET SHOP }
The default font
for the logo SAVE
WEB TECHNOLOGIES
Styling the web page 250 251
3.10 VIEW THE WEBSITE
Save the code and then refresh the page in the The favicon (see p.221)
browser. The Top Menu section will now be laid out with and page title appear
the small logo on the left and the hyperlinks on the right. in the browser tab
Pet Shop
file:///PetShop/index.html
The Top Menu
Free shipping appears as a
horizontal list
Styled logo in the Top
Menu section now PET SHOP Home About Shop Contact of hyperlinks
has a transition effect
#banner {
background-image: url("../images/banner.jpg");
background-repeat: no-repeat; The background
image should not
background-position: center top; repeat vertically
or horizontally
width: 100%;
Centre aligns the
text-align: center; contents of the banner
padding-top: 300px;
color: #333;
}
#banner #action {
font-weight: bold;
width: 200px; Style definitions
for the div that
margin: 20px auto 0 auto; contains the hyperlink
#banner #action a {
-webkit-transition: all 250ms ease-out;
Three versions of the
-ms-transition: all 250ms ease-out; transition instruction
Transition effect
#banner #action a:hover { when a mouse
moves over
-webkit-transition: all 250ms ease-out; the hyperlink
Free shipping
PET SHOP
The banner SHOP NOW
call-to-action button
with transition effect
Feature box styling are defined as classes and are applied to multiple
4 This section will add styles for the “feature elements on the web page. The class definitions
box” control, which splits the page into a left also allow alternating the position of the images
column and a right column. The styles for the control on the page.
4.1 DEFINE THE LEFT COLUMN 4.2 DEFINE THE RIGHT COLUMN
First, you will define the left column of the feature Add the code below to define the right
box. This will take up half of the space available. By default, column. This definition instructs the browser to
every new div occupies a new line. However, since this include a margin on the left of the space available,
element must float left, the next element (the right column) where the left column will sit.
will appear on the same line.
Selects all the elements that
Selects all the elements that have both the “feature” and
have both the “feature” and “rightColumn” classes
“leftColumn” classes
padding: 20px;
background-color: #4392F1;
color: white;
text-decoration: none;
border-radius: 30px; Sets rounded corners
for the border of
} the hyperlink
background-color: #F46036;
text-decoration: none; The text is not
underlined when
padding: 20px 40px; the mouse hovers
over the hyperlink
}
WEB TECHNOLOGIES
Styling the web page 254 255
4.5 DEFINE THE HORIZONTAL RULE
You will also need to add a style definition .feature hr {
for the horizontal rule appearing in the feature box.
This rule will separate the heading of the column background-color: #333;
from the text below it.
height: 1px;
Sets the colour for the
horizontal rule to dark grey border: 0;
Sets the width of width: 50px;
the horizontal rule
}
SAVE
file:///PetShop/index.html file:///PetShop/index.html
line-height: 48px;
STYLING THE REMAINING ELEMENTS
position: fixed;
The button stays in right: 10px;
a fixed position in
the bottom-right bottom: 10px;
corner of the page
border: 1px solid white; A white border
around the orange
border-radius: 30px; button makes it
easier to see
}
The hover state is #scrollToTop:hover {
active when a
mouse moves opacity: 1;
over the button
-webkit-transition: all 250ms linear;
-ms-transition: all 250ms linear;
transition: all 250ms linear;
cursor: pointer; The cursor is
displayed as
} a pointer
Pet Shop
file:///PetShop/index.html
CONTACT US
TEL: 012-345-6789
#subscribe {
Hex code for light blue.
background-color: #4392F1;
Sets the background colour
of the Subscribe section
height: 160px;
padding-top: 40px; Distance between the
text and the top border
} of the Subscribe panel
#subscribe h2 {
margin: 15px 0 20px 0;
color: white; Sets the text
to white
font-size: 24px;
font-family: "Open Sans", sans-serif; Specifies the font used
for the “h2” headers
font-weight: bold;
}
#subscribe input[type=text] {
border: 0; No border around
SUBSCRIBE TO OUR
the email address
MAILING LIST
width: 250px; text input box
}
STYLING THE REMAINING ELEMENTS
#subscribe input[type=submit] {
border: 0;
width: 80px; Sets the button
width to 80px
height: 30px;
font-size: 14px;
background-color: #345995; Hex code for the
colour dark blue
color: white;
border-radius: 30px;
-webkit-transition: all 500ms ease-out;
-ms-transition: all 500ms ease-out; Transition
instructions
transition: all 500ms ease-out;
cursor: pointer; The cursor will be
displayed as a pointer
} when the mouse is
over the button
#subscribe input[type=submit]:hover {
background-color: #F46036; Hex code for orange
in the colour scheme
-webkit-transition: all 250ms ease-out;
-ms-transition: all 250ms ease-out;
transition: all 250ms ease-out;
}
Pet Shop
The text is
aligned to the file:///PetShop/index.html
centre of the
left column CONTACT US
TEL: 012-345-6789
EMAIL: [email protected]
Pet Shop
80 Strand
London
WC2R 0RL The button with
A placeholder rounded borders
text hint inside and transition
SUBSCRIBE TO OUR MAILING LIST
the email text effect will be
input box Enter your email address Join Now displayed
#footer li {
Places the list items float: left;
next to one another
from the left }
STYLING THE REMAINING ELEMENTS
#footer li a {
color: white; The footer
hyperlink text will
text-align: center; appear in white
padding: 20px;
text-decoration: none; The hyperlink text will
not be underlined
font-size: 18px;
-webkit-transition: all 250ms linear;
-ms-transition: all 250ms linear;
transition: all 250ms linear;
}
#footer li a:hover {
color: #333; The text colour
of the footer
-webkit-transition: all 250ms linear; hyperlink will
change to
-ms-transition: all 250ms linear; dark grey
Pet Shop
file:///PetShop/index.html
On an HTML page
To use JavaScript on an HTML page, simply <script type="text/javascript"> The JavaScript
enclose the script in a <script> tag. This tag instruction
must be inside
can be placed either within the <head> tag or var x = "hello world"; a <script> tag
the <body> tag, depending on when the script
is run – before, during, or after the HTML. </script>
On an external file
JavaScript can also be placed in an external file <script src="customScript.js"></script>
and referenced with an “src” attribute in the
<script> tag. The external JavaScript file does
not need to include the <script> tag as this The “src” attribute
has already been declared in the calling file. points to an external
JavaScript file
GOLD SILVER
$25 $15
0 0
Booleans
Similar to Scratch and Python, Boolean variables
Numbers in JavaScript also contain only two possible
Unlike other programming languages, JavaScript does values – true or false. As the result of every
not distinguish between integers (whole numbers logical operation is a Boolean value, these
without a decimal) and floating point numbers variables determine the flow of a program.
(numbers with a decimal). All numbers in JavaScript
are treated as floating point numbers.
var isThisGold = true
var price = 250;
Boolean values do
not have quotation
Number values do marks around them
not have quotation
marks around them
WEB TECHNOLOGIES
Variables and data types 266 267
Declaring variables Declares the variable lastName
var lastName = "Smith";
It is important to declare and and sets its value to Smith
initialize a variable before var fullName = firstName + " " + lastName;
it can be used in a script.
Initialization means to assign var firstName = "John";
a value to the variable. It allows console.log(fullName);
JavaScript to determine the data
type that the variable contains Incorrect declaration The variable
In this example, the variable firstName is firstName is used
and access its value. A variable
used before it is declared in the code. Since its before it is declared
should only be declared once value is unclear at the time of use, the output
in a program. displayed will be “undefined Smith”.
string.slice() string.split()
string.length Extracts part of a
Returns the number Divides a string into
string. It takes two an array of substrings.
of characters in parameters, the start
a string, starting from For example, if “a” is the
and end index positions input parameter, new
1. It can be used (beginning at 0), and
by adding .length substrings will be formed
returns the string at every instance of
after the name segment between
of the string. string. string. the letter “a”.
indexOf() them. substr()
Finds the position of Returns a string
a string segment within segment where the
another string. It gives the first input parameter is
index position of the first the start position and the
character of the second is the length of
segment, starting the segment.
from 0.
Strings
Strings are data types that can store a series of characters var myString = "Hello world";
or numbers. They have a number of useful properties and
methods that are described above. String values always have
quotation marks around them
Concatenating strings
As in other programming var myBook = {
languages, strings in
JavaScript can be joined title: "Great Expectations", title is a
together by using the string value
plus (+) symbol. However, format: "paperback", Template literals are enclosed
a better way to join, or within back-tick characters
concatenate, strings is by }; instead of quotation marks
using the template literal
notation ( ` ). This format var myBookDetails = `Title: ${myBook.title}
is easier to read and
maintain than using Format: ${myBook.format}`;
the plus symbol. Template literals can contain
placeholders, indicated by the
console.log(myBookDetails); dollar sign and curly brackets
NON-PRIMITIVE DATA TYPES
1 2 3
Array length
The length of an array returns the
number of items in the array. As in
strings, the length of an array also
starts from 1, and not from 0.
1 2 3
JavaScript objects
A JavaScript object is a variable that has a set of properties
made up of primitive data types. This way of packaging data
is known as the Json data format. This format has become
the primary format for packaging and transmitting data in
web applications as it is easy to use and process. Each property is
separated by a comma
hasDrivingLicense: true,
Boolean values
A Boolean data type only has two Logical operators
possible values: true or false. This Logical operators combine multiple boolean values into a
single Boolean result. The most common logical operators are
means that a logical statement will “And”, “Or”, and “Not”. The “And” operator (&&) demands that
always return one of the two Boolean both Boolean values are true. The “Or” operator (||) demands
values. These values allow an algorithm that any of the Boolean values are true. The “Not” operator (!)
swaps the Boolean value, so true becomes false and false
to execute a particular branch of code to becomes true. For example, “variable1 && !variable2” means,
produce a desired outcome. “Is variable1 true And variable2 false? If so return true.”
COMPARING VALUES
Comparison operators are used in
conditional statements. They compare
different values to decide if a statement
is true or false.
COMPARISON OPERATORS
Symbol Meaning
== is equal value
is greater than
>= or equal to
SWITCH
A better way to express complex conditional logic
is to use the switch statement. A single switch
statement can replace multiple else-if statements.
Each possible state is represented by a case, and if
NOT none of the cases match the condition statement,
Burger and NOT onion or then a default code block will execute. Each code
tomato. Reverses the logical block is separated by a break statement.
state, so true becomes false
and false becomes true.
Input and output
One of the best features of the Web is that it is interactive.
Using JavaScript, it is possible to program a web page to
output information to the user in different forms, as well
as to accept input from the user in various ways.
Show a modal alert box Insert data into the HTML output
An alert box is a modal window that opens above the This allows programmers to execute JavaScript and
normal browser window with a message. Users cannot output some data into the HTML at the exact location
continue until they dismiss the alert box. where they want the output to appear on screen.
User input
There are several ways to capture user input and work with the data
in JavaScript. The choice of input method depends on the degree
of urgency involved in entering the data, whether the input fields
need to conform to the visual style of the page, or whether the user
must answer the questions in a specific order.
Prompt
A prompt is a modal message
box that asks the user for a
single line of input. The user
must answer the question This page says
before doing anything else Please enter your first name
in the browser. Prompts are
helpful in cases where the
user must answer questions
urgently or in a specific order. Cancel OK
WEB TECHNOLOGIES
Input and output 272 273
Output data on screen alert or question should be displayed in
There are four different ways for JavaScript to a modal window because users must
display data back to the screen. The choice of method acknowledge it before they can proceed.
to employ is based on the type of information being Debugging information, on the other hand,
displayed and whether the output is meant for the is intended for the developer and should be
developer or the end user. For example, an urgent displayed in the JavaScript console log.
Confirmation box
A confirmation box is a modal
dialogue box that is used to
verify a user’s intention. This page says
Users are forced to interact
with the confirmation box Are you enjoying JavaScript?
before they can return to
the main page.
Cancel OK
HTML Input
An HTML <form> tag
(see p.212) is usually used
to send information entered First Name: John
into the input fields back Last Name: Smith
to the server. However, it
is also possible to use this Click me This page says
data in JavaScript code. For
example, using HTML input Hello John Smith
controls to get a user’s first
name and last name. Cancel OK
For loop
for (let loopCounter = 0; loopCounter < 5;
A for loop will repeat a
block of code and each loopCounter++) {
time increment a counter The logical
until the counter no longer console.log(loopCounter); condition appears
before the loop
satisfies a given condition. }
With each increment, the
counter can increase or For loop with positive increments
decrease, allowing the The loopCounter is increased by Displays the value of the
1 each time the loop repeats the block loopCounter variable
loop to run from top to of code. The loop will stop when in the console log
bottom, or vice versa. loopCounter equals 5.
While loop
A while loop will repeat a block of code until a condition Using while loops
returns false. This is similar to the do while loop, This loop is ideal when an instruction
must repeat an unknown number of times.
except that the condition runs before the block of code, However, depending on the condition, the
so it might not run the first time. loop may not qualify to execute even once.
var numberOfDaysCounter = 0;
var numberOfDays = 3;
var daysOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday", "Sunday"];
while (numberOfDaysCounter < numberOfDays) { The logical condition
defines when the loop is
console.log(daysOfWeek[numberOfDaysCounter]); executed. Here it will run
if the counter is smaller
numberOfDaysCounter++; than the number of days
Loops in JavaScript
In programming, instructions may often need to be repeated a
certain number of times or until a condition has been met. Loops
allow us to control how many times a set of instructions should
be repeated. There are several different kinds of loops, and each
loop has it own way of knowing when to stop.
For in loop
A for in loop repeats a block of code for each property Looping through arrays
of an object. Inside the loop instruction, a variable is This loop is perfect for processing
arrays of data. The code block will
declared that will hold the value of the property as it process each item in the array and
is being processed by the loop. stop when there are no more items.
numberOfPages: 250,
The format property has
format: "paperback" a string value “paperback”
}
The property variable
for (let property in myBook) { represents the current property
being processed by the loop
console.log(` ${property} ${myBook[property]}`)
}
Do while loop
Similar to a while loop, a do while loop will also repeat a Using do while loops
block of code until a condition returns false. However, the This loop is used when the block
of code must repeat an unknown
condition appears after the block of code and will only be number of times, but it must be
checked after the code block has run the first time. executed at least once.
var numberOfDaysCounter = 0;
The condition may depend
var numberOfDays = 3; on the state of variables
outside of the loop
var daysOfWeek = ["Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday", "Sunday"];
do {
console.log(daysOfWeek[numberOfDaysCounter]);
The block of code
numberOfDaysCounter++; will run before the
condition is checked
} while (numberOfDaysCounter < numberOfDays)
NESTED LOOPS
var daysAndTemperature = [
["Monday", 26,21,24],
Each array has a different
["Tuesday", 24], number of items
["Wednesday", 28,21],
The outerCounter loop
]; iterates through each day
var maxTemperature = 0;
for (let outerCounter = 0; outerCounter < daysAndTemperature.
length; outerCounter++) {
for (let innerCounter = 0; innerCounter < daysAndTemperature
[outerCounter].length; innerCounter++) {
var innerValue = daysAndTemperature[outerCounter]
[innerCounter];
innerValue will represent each array item inside
if (isNaN(innerValue)) { daysAndTemperature[outerCounter]
Break
The break statement var days = ["Monday", "Tuesday", "Wednesday", "Thursday"];
tells the JavaScript
Engine to stop running var whenIsWednesday = function (days) { This function will return
the loop and jump the index of the array item that
matches the string Wednesday
to the next instruction let result = null;
after the loop. This
is useful as once the for (let i = 0; i < 7; i++) { Each time the loop iterates, the
loop has found what i counter will increase by 1
it is looking for, it can if (days[i] === "Wednesday") {
move on with the rest Checks if the value of the
of the program.
result = i + 1; array item is equivalent to
the string Wednesday
break; Array indexes always start from
0, so often you need to add 1 to
} get a “human friendly” result
};
console.log(`Wednesday is day ${whenIsWednesday(days)}`);
Continue
This statement tells for (let i = 0; i < 7; i++) {
a loop to stop the
current iteration and if (days[i] !== "Wednesday") {
start running the next The whenIsWednesday
iteration. This is useful continue; function using continue
when you know that rather than break
the current iteration }
does not need to be
executed, and you result = i + 1;
can carry on with the
next iteration through
the loop.
Functions in
JavaScript
A function is a block of instructions that performs a task. The
code inside the function usually only executes when the function
is called. To use a function, it must first be defined somewhere
in the scope (local or global) from which it needs to be called. Input parameters
are declared
in parentheses.
There are none
in this example
Declaring functions
var firstName = "John";
A function is declared by providing a
name, a list of input parameters, and a function getFirstName() {
block of code enclosed in curly brackets. Name of the
A value can be returned by the function
function return firstName;
by using the “return” statement. } Code to be
executed
Outputs the result of console.log(getFirstName());
the getFirstName()
function to the console log
Simple function definition
Once a function has been defined,
it can be called many times from
elsewhere in the code.
Function statement
A function statement function getFullName(firstName, lastName) {
begins with the word
“function” followed by return `${firstName} ${lastName}`;
the function name, the
input parameters, and } The template literal notation
then the code block in `${variable}` returns a
curly brackets. console.log(getFullName("John","Smith")); string with the variable value
embedded in place
Function expression
A function expression var fullName = function getFullName(firstName, lastName) {
begins with a variable
declaration and then return `${firstName} ${lastName}`;
assigns a function to
the variable. } Variable declaration
console.log(fullName("John","Smith"));
WEB TECHNOLOGIES
Functions in JavaScript 278 279
Nested functions A function expression A nested function expression
declaration declared inside the car function
It is also possible to nest a
function within another function.
The inner function, however,
var car = function (carName) {
can only be called by its outer var getCarName = function () {
function. The inner function can
use variables from the outer return carName;
function, but the outer function }
cannot use the variables of the
inner function. return getCarName();
}
Why use nested functions?
Nested functions are only accessible from console.log(car("Toyota"));
inside the parent function. This means
that the inner function contains the scope The nested function getCarName() can access the
of the outer function. variable carName from the parent car function
Self-executing functions
Normally a function needs to be called in order
to execute its code. However, a function that is
surrounded by a self-executing function will
run as soon as it is declared. Self-executing
functions are often used to initialize the
JavaScript application by declaring a global
scope variable counter.
(function getFullName() {
var firstName = "John";
These variables are only
var lastName = "Smith"; accessible within the
self-executing function
function fullName() {
return firstName + " " + lastName;
}
console.log(fullName());
})();
Errors in JavaScript inside the Console tab. Every Error object has
In JavaScript an error is detected or thrown when a two properties, a “name” and a “message”.
program tries to perform an unexpected or forbidden The name indicates the type of error, while the
action. JavaScript uses an Error object to provide message provides further details about the error,
information about the unexpected event. JavaScript such as the location in the JavaScript file where
errors can be viewed in a browser’s Developer Tools, the error was thrown.
SyntaxError
An error in the way the
code is written causes a RangeError
syntax error. This error occurs TypeError When the code attempts
while the JavaScript Engine This error occurs when the to use a number that is
is interpreting the code wrong data type is used. outside the range of possible
at run time. For example, applying the values, JavaScript detects
string.substring method to a RangeError.
a variable that is a number.
URIError
Some alphanumeric
characters are not allowed
to be used in a url. EvalError
A URIError is thrown This error occurs when
when there is a problem there is a problem with
encoding or decoding a URI the eval() function. Newer
because of the use of a versions of JavaScript do
reserved character. not throw this error.
ReferenceError
This error occurs when
the code refers to a
variable that either does
not exist or is not in scope
(see p.269) for the
executing code.
WEB TECHNOLOGIES
JavaScript debugging 280 281
Developer tools
All modern browsers contain a set of Developer Tools elements in the browser. To open the Developer
to help programmers work with HTML, CSS, and Tools for the Google Chrome browser, press
JavaScript. The Developer Tools contain functionality Command+Option+I (Mac) or Control+Shift+I
to debug JavaScript and view the state of HTML (Windows, Linux).
Console Sources
Breakpoints
The JavaScript Engine pauses the execution of code when
it hits a breakpoint. This allows programmers to examine it.
The execution can proceed in one of the following ways:
• Resume Script Execution: Resumes execution until the
program hits another breakpoint or the program ends.
• Step over: Executes the next line of code in a single step and
then pauses on the following line. It steps over a function
without debugging the individual steps of the function.
• Step into: Executes the next line of code and then pauses
on the following line. It will step into a function line by line. Scope
• Step out: Executes the remaining code in the current Breakpoints
function, and pauses when run time returns to the line
of code, after the function was called.
GOOGLE CHROME DEVELOPER TOOLS
Error handling
try {
In JavaScript, the try...catch statement
allows programmers to handle errors in noSuchCommand(); This function
the code. Normally program execution does not exist
JavaScript
Methods
Sense()
Move()
ROBOT CLASS
Prototypes
let parentObject = function() {
Every JavaScript object Creates a new
comes with a built-in this.title = "123"; parent object
variable called a prototype. Creates a new child object as an
Any properties or functions } instance of the parent object
added to the prototype let childObject = new parentObject();
object will be accessible to Sets the child object’s
a child object. A child object childObject.title = "ABC"; title property
is created as an instance of
parentObject.prototype.getTitle = function(){
the parent object using the
keyword “new”. return this.title;
Adds a new method to the
} parent object’s prototype
Calls the method in the parent console.log(childObject.getTitle());
object’s prototype from the
child object, and returns the child
object’s “title” property, ABC
Functions
function Book(title, numberOfPages) {
Just as in prototypes, an
object can be declared this.title = title;
as an instance of a function
with the new command. this.numberOfPages = numberOfPages;
This command acts as a };
constructor (a method used
for initializing the properties let JaneEyre = new Book("Jane Eyre", 200)
of the class). The child object
console.log(JaneEyre.title); Instantiates
inherits all the properties the new book
and methods defined in Properties and methods
the function. of the function
WEB TECHNOLOGIES
Object-oriented JavaScript 282 283
Defining objects
in JavaScript
JavaScript is a prototype-based
language, which means that
properties and methods can be
inherited via the “prototype”
property of the object. This differs
to the way that other object-oriented
languages, such as Python,
construct classes (see pp.156–57).
CHILD OBJECT CHILD OBJECT
There are three ways to define and
Properties Methods Properties Methods
instantiate a JavaScript object in
Type: Humanoid Sense() Type: Industrial Sense()
an object-oriented way: prototypes, Sensor: Temperature Move() Sensor: Light Move()
functions, and classes.
Class declaration
A class can be class Book {
declared with the
“class” keyword. constructor(title, numberOfPages, format) {
The constructor
method takes the this.title = title;
input parameters Defines the
necessary to initialize this.numberOfPages = numberOfPages; properties and
the object properties. methods of
the class Book
this.format = format;
}
}
Calls the “title” let JaneEyre = new Book("Jane Eyre", 200, "Paperback")
property of
the object console.log(JaneEyre.title);
Class assigned to
the variable Book
Class expression
A class can also be let Book = class {
assigned to a variable
that can be passed constructor(title, numberOfPages, format) {
around and returned
by a function. this.title = title;
Libraries and
frameworks
JavaScript makes extensive use of libraries of prewritten
functionality that can be called in the code to make
programming easier and faster. Frameworks on the
other hand provide a standard way of programming,
by calling and using the code as needed.
JQuery
JQuery is a framework that
contains many useful tools, such
as animation, event handling, and
AJAX (see p.265). It takes complex
JavaScript code and wraps it into
simpler methods that can be
called with a single line of code.
NODE.JS AND NPM
Node.js is a run time environment that is used
to create web server and API applications in
JavaScript. It has a large library of JavaScript files
that perform all the common tasks on a web
server, such as sending requests to a computer’s
file system and returning the content to a client ReactJS
once the file system has read and processed the This library is used for building interactive
user interfaces (UIs). It allows programmers
requests. The JavaScript files that define the to create complex UIs from small pieces of
Node.js environment are interpreted by the code, called “components”. ReactJS uses this
Google JavaScript Engine outside of the browser. component model to maintain state and
Node Package Manager (NPM) is a package data binding in single-page apps.
manager for programs written in JavaScript. It
contains a database of both free and paid-for
applications. You need to install Node.js before
using NPM.
WEB TECHNOLOGIES
Libraries and frameworks 284 285
RequireJS
This library manages the
loading of JavaScript files and
TypeScript modules. It ensures that the
TypeScript is a scripting language that scripts are loaded in the correct
is used to export simple JavaScript order and are available to other
files that can be run inside the modules that depend on them.
browser. It offers support for the
latest and evolving JavaScript features
to help build powerful components.
Angular Moment.js
This framework is used for building This library makes it easy to work with
dynamic single-page apps. It can dates and time in JavaScript. It helps parse,
implement complex requirements of an manipulate, validate, and display date and
app, such as data binding and navigating time on screen. Moment.js works both in
through “views” and animations. Angular the browser and in Node.js (see opposite).
provides specific guidelines on how to
structure and build apps.
MathJS Bootstrap
MathJS is a library that features extensive This library contains many useful graphical
tools for working with maths. It supports elements and grid layout tools, which are
fractions, matrices, complex numbers, used to create visually appealing websites that
calculus, etc. It is compatible with can scale to fit screens of any size. Bootstrap is
JavaScript’s built-in Math library, a combination of HTML, CSS, and JavaScript.
and runs on any JavaScript engine. When applied to a page, it creates an
attractive graphic user interface.
Graphic user
interfaces
A web page is a graphic user interface (GUI) through which a user
navigates a website. HTML and CSS provide the basis for the graphic
design, while JavaScript adds custom logic and business rules to the
elements on the page to improve the quality of the interaction.
Working with graphics in JavaScript user interaction. The <canvas> HTML element
In an HTML document, <img/> tags are used to allows JavaScript to draw graphics directly to the
display image files and <svg> tags are used to display screen. JavaScript also has an extensive library of
vector images. JavaScript can be used to modify the frameworks (see pp.284–85) that can be imported and
properties of these graphic elements in response to employed to produce complex graphic applications.
Graphics libraries
JavaScript has several built-in graphic libraries that make
it easier to work with complex graphics on the Web. Each
library has a specific purpose, such as converting numeric
data into graphs, representing statistical data as infographics,
or mapping a virtual world in a computer game.
2018 2019
A220
PEOPLE
A300
A318
A B C A330
CARRIER AIRBUS
D3.js Chart.js
Data-Driven Documents or D3.js is used to This library allows the programmer to add graphs
create colourful, animated, and interactive and charts to a Web document. It is an open-source
representations of data. It is brilliant for library that works well on tablets and mobile phones.
drawing graphs and organizing data in a Bar charts, Doughnut, Line charts, and Area charts
structural manner. are some of the core charts in Chart.js.
Animating the web page
JavaScript is used to extend the functionality of a website
and make it more dynamic. Here it will allow you to add
intelligent and interactive behaviours to the existing
HTML framework, completing the web page project.
START
Pet Shop
file:///PetShop/index.html
PET SHOP
SHOP NOW
Check that the
web page is
interactive
LOVE FISH
THE WIDEST RANGE OF FISHES
PROGRAM DESIGN
WEB TECHNOLOGIES
Animating the web page 288 289
YOU WILL LEARN WHERE THIS IS USED
❯ How to create JavaScript files Time: JavaScript is used in almost all websites. It helps web
1 hour developers make web pages more attractive and
❯ How to use JQuery
Lines of code: 89
interactive by implementing custom client-side scripts.
❯ How to animate HTML
It even allows the use of cross-platform run time
elements Difficulty level engines, such as Node.js, to write server-side code.
HTML FILE
Solution
PetShop Build PetShop
Rebuild PetShop
Clean PetShop Adds the
Unload new scripts
folder inside the
View Archive solution folder
Run Item
Start Debugging Item
CSS FILE Add Add New Project...
Add Existing Project...
MAC
WINDOWS
GETTING STARTED
<link href="https://fonts.googleapis.com/css?family=Anton|
Open+Sans" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.3.1.min.js">
</script>
</head>
APP.JS
HOME.JS
WEB TECHNOLOGIES
Animating the web page 290 291
2.1 ADD NEW FILE
The first custom script you Solution
need to add is called “app.js”. This
will add an “app” class/function that PetShop
you can instantiate to hold all the Solution items
global scope variables. Right-click Scripts Build PetShop
on the scripts folder, select Add
Rebuild PetShop
and choose New File to create a
JavaScript file. Name this file “app.js”. Clean PetShop
Unload
View Archive
Run Item
Start Debugging Item
<script src="https://code.jquery.com/jquery-3.3.1.min.js">
</script> Adds a new <script>
tag that points to the
<script src="scripts/app.js"></script> new JavaScript file
function HomeIndex() {
Makes a function
The dollar sign denotes
} the JQuery function
available after the
document is loaded
$(document).ready(function () {
Comments are ignored,
/* Instantiate new Home class */ and will not be executed
$(document).ready(function () {
/* Instantiate new Home class */
app.homeIndex = new HomeIndex();
/* Initialize the Scroll To Top button */
app.homeIndex.initialiseScrollToTopButton(); Initializes the
Scroll to top
}); button
MANAGING THE SCROLL TO TOP BUTTON
/* Methods */
This instruction
this.initialiseScrollToTopButton = function () { tells JQuery to
run the code
/* Window Scroll Event Handler */ block every
time the user
$(window).scroll(function () { scrolls the page
$("#scrollToTop").fadeOut();
}
});
This code runs
/* Scroll to Top Click Event Handler */ every time
the button
$("#scrollToTop").click(function () { is clicked
Pet Shop
file:///PetShop/index.html
CONTACT US
TEL: 012-345-6789
EMAIL: [email protected]
Pet Shop
80 Strand
London
WC2R 0RL
Buy 5 toys
and save 30%
<script src="scripts/home.js"></script>
<script src="scripts/common.js"></script> Links the JavaScript
file to the HTML file SAVE
function Common() {
}
$(document).ready(function () {
/* Instantiate new Common class */ Instantiates the “Common”
class as a property
app.common = new Common();
});
WEB TECHNOLOGIES
Animating the web page 296 297
4.4 ADD PROPERTIES
Next, inside the Common()
function, add a property called
function Common() {
“promoBar”. This is a JavaScript object Creates a reference
(see p.269) that contains all the variables let self = this; to the object that
used by the Promotional Messages can be used later in
section to manage itself. /* Properties */ its methods
this.promoBar =
{ null indicates
This is the list of <div> that the variable
tags with messages promoItems: null, has no value
numberOfItems: 0,
};
/* Methods */
this.initialisePromo = function () {
/* Get all items in promo bar */
let promoItems = $("#promo > div"); This JQuery selector returns
an array of all the divs inside
/* Set values */ an element with id=“promo”
this.promoBar.promoItems = promoItems;
this.promoBar.numberOfItems = promoItems.length;
/* Initiate promo loop to show next item */
this.startDelay();
}
this.startDelay = function () {
/* Wait 4 seconds then show the next message */
setTimeout(function () { This function instructs
JavaScript to repeat the call
self.showNextPromoItem() every 4,000 milliseconds
}, 4000);
}
/* Increase counter by 1 */
self.promoBar.currentItem++; Cycles through the
promotional messages
}
/* Fade in the next item */
WEB TECHNOLOGIES
Animating the web page 298 299
$(self.promoBar.promoItems).eq(self.promoBar.currentItem).
fadeIn("slow", function () {
/* Delay before showing next item */
self.startDelay();
});
}); Displays the next promotional
message in the list
}
}
$(document).ready(function () {
/* Instantiate new Common class */
app.common = new Common();
/* Initialize the Promo bar */
app.common.initialisePromo();
});
SAVE
Pet Shop
file:///PetShop/index.html
Pet Shop
file:///PetShop/index.html
LOVE FISH
You can change the THE WIDEST RANGE OF FISHES
font of any text element
on your web page, from
the body text to the Indoor and outdoor, we’ve got them all!
headings on the website
<link href="https://fonts.googleapis.com/css?
Link to the
family=Anton|Oswald" rel="stylesheet"> Google Material
Icons website HTML
The font “Open Sans” has been
replaced with “Oswald”
WEB TECHNOLOGIES
Animating the web page 300 301
2 APPLY NEW FONTS
Now, go to the “global.css” body {
file. Try changing the font of the body
elements, as shown here. You will margin: 0; Font changed from
have to edit the “font-family” style “Open Sans” to “Oswald” CSS
definitions within the body selector padding: 0;
to do this. Then, save both the files
and test the program. Your text for font-family: "Oswald", sans-serif;
the body elements will appear in the
new font (see opposite).
font-size: 15px;
The other elements background-color: white;
remain the same
color: #333;
}
SAVE
<script src="scripts/app.js"></script>
<script src="scripts/common.js"></script>
<script async src="https://platform.twitter.com/widgets.js"
charset="utf-8"></script>
HACKS AND TWEAKS
2 ADD BUTTON
Now add the Twitter button to the Top Menu. Inside the “topLinks”
div unordered list, add a new list item that contains a hyperlink to the
Twitter page. If you refresh the browser and view the page on screen, you
will see a new social media button in the Top Menu.
...<div id="topLinks">
<ul>
<li>
<a href="/">Home</a>
</li>
<li>
<a href="/">About</a>
</li>
<li>
<a href="/">Shop</a>
</li>
Link to the
<li> Twitter page
<a href="/">Contact</a>
</li>
<li>
<a href="https://twitter.com/PetShop"
class="twitter-follow-button" data-show
-count="false"> Follow @PetShop</a>
</li>
</ul>
</div>
Pet Shop
file:///PetShop/index.html
PET SHOP Home About Shop Contact Follow @PetShop The button appears
next to the menu items
WEB TECHNOLOGIES
Animating the web page 302 303
Page template
This project only includes code for the website contains all the elements that are common
home page. However, other pages, such as About, to every page of the website. This template
Shop, and Contact in the Top Menu, are required will include the meta links to the CSS
to make a fully functioning website. In order to and JavaScript files, along with all the
create these pages you will need a template, which common HTML code.
Hamburger button
How it works
TRAVEL-NOW
The focus of this project is to build a responsive website
using JQuery and Bootstrap (see pp.284–85). Each element file:///Travel-now/index.html
of the website will be programmed using HTML, CSS, and
TRAVEL-NOW
JavaScript at the same time, to see how they work together
to achieve a visual effect. You will use JQuery in the custom
scripts to target HTML elements, and then use Bootstrap to
add responsiveness to the website.
Final website
The website created in this project will be
divided into several sections, many of which We all dream of a great holiday.
will contain hyperlinks to other pages of the Contact us to make your dream come true!
Build a responsive website. All the elements will be programmed
home page using to make them fit any size of screen. NARROW SCREEN
HTML, CSS,
and JavaScript
TRAVEL-NOW
file:///Travel-now/index.html
Create a
master-page
template and then
duplicate it to
produce the other
pages of the website TRAVEL NOW
Text files
You will need HTML, CSS,
and JavaScript files to
build this website. You can TRAVEL-NOW
either use a simple text
file:///Travel-now/index.html
editor to create them
or a dedicated IDE like the
one used in this project.
NAVIGATION BAR This layer will
contain a company
logo and the Top
Development Menu links to other
environment FEATURE IMAGE AND TITLE pages on the site
The IDE (see pp.208–209)
“Microsoft Visual Studio
Community 2019” is
used in this project. It
PRIMARY MESSAGE
supports a large variety of
programming languages
and paradigms.
This layer will display
QUOTE
a sentence about
Browser travelling that will
The Google Chrome change every
browser is used to run the five seconds
code in this project. Its POPULAR DESTINATIONS
“Developer Tools” can be
used to better understand
what you see in the
browser. However, you can LAST MINUTE DEALS This layer will be
use any browser you are a carousel with
comfortable with. images that will link
to other pages on
the site
COPYRIGHT
Images
Get a copy of the images
folder for this project from
www.dk.com/coding-course. Home page design
These images will be used The elements of a home page can be understood as a series
to build the website. You of horizontal layers that sit one above the other. This home
can also use your own page will have seven layers. Some of its common elements
images if you like. will be repeated on every page of the website.
GETTING STARTED
MAC
C:/Travel-now
WINDOWS INDEX.HTML
/*
font-family: "Merriweather", serif;
Font used for normal
font-family: "Open Sans", sans-serif; paragraph text
.spacer.v40 { h2 {
height: 40px; font-size: 30px; Only “h2” headers
will have the font
} } size 30px
.spacer.v20 { h3 {
height: 20px; font-size: 20px;
} }
return {
getWebsiteName: function () {
return websiteName;
Round brackets around
the function instruct the }
JavaScript Engine to run that
function immediately }
})();
WEB TECHNOLOGIES
Responsive website 308 309
Creating the navigation bar
2 The first element to be created is the navigation bar
on the home page. This bar will appear on all the pages of the
website. In this section, you will program the navigation bar
and then add some hyperlinks to it that will connect to all the
other pages of the website.
ORDER OF TAGS
The order in which you declare the
JavaScript files is important. This is JQUERY
because JavaScript functions must be
loaded into the JavaScript Engine before
they can be called. For example, JQuery BOOTSTRAP
must be loaded before Bootstrap because
Bootstrap uses JQuery to execute its
functions. This is also true for your custom APP.JS
JavaScript files. They must be added to the
HTML after the JQuery and Bootstrap files
in order to call their functions. OTHER CUSTOM JAVASCRIPT FILES
Home
TRAVEL-NOW Deals
file:///Travel-now/index.html
Contact Us
TRAVEL-NOW Home Deals Contact Us
<div class="container">
<div class="featureImage roundCorners homeIndex">
<div class="text"> The “featureImage” div The “homeIndex” class specifies
will appear on every page the background image to be
<h1> used for the home page
Text that appears TRAVEL-NOW
in front of the image
TRAVEL-NOW TRAVEL-NOW
file:///Travel-now/index.html file:///Travel-now/index.html
TRAVEL-NOW TRAVEL-NOW
Adding a message
4 The next step is to manage the “primary message”
section of the website. This message is a paragraph of text that
will display the main intention of the page in a prominent font.
TRAVEL-NOW TRAVEL-NOW
file:///Travel-now/index.html file:///Travel-now/index.html
We all dream of
We all dream of a great holiday. a great holiday.
Contact us to make your dream come true! Contact us to make your
dream come true!
Adding a quote
5 The next element to be added is a Quote section. You
will structure the section using HTML, and then add style
definitions in CSS to specify the basic layout properties and
colours. Finally, using JavaScript, you will make this section
cycle through the quotes, making them appear one at a time.
</div>
The second
<div class="quoteItem" style="display:none;"> “quoteItem”
will not be
<p> visible when
the page
Jobs fill your pocket, but adventures appears
primary message.
background-color: #4392F1;
color: white; Hex code for
light-blue colour
Defines the vertical height: 180px;
space occupied by
the quote section position: relative;
}
WEB TECHNOLOGIES
Responsive website 318 319
5.4 ADD RESPONSIVENESS
The quote section needs to be
displayed at a different size, depending
position: relative;
on the width of the screen. Add a style
definition for the “quote” div that will }
CSS
only apply when the screen width is
more than 766px wide. @media screen and (min-width: 767px) {
.quote {
Adjusts the vertical height: 220px;
space occupied by
the quote section
}
}
.quoteItem p:after {
Adjusts the vertical vertical-align: -17px;
alignment of the
“close-quote” character }
}
WEB TECHNOLOGIES
Responsive website 320 321
.quoteItem span {
color: #EAC435; Font size of the <span>
text when the width of the
font-size: 18px; screen is more than 766px
}
SAVE
this.initialiseQuoteControl = function () {
The variable quoteItems
/* Get all items in quote bar */ is defined as the array of
all the <divs> that have
let quoteItems = $(".quoteItem"); the class “quoteItem”
/* Set values */
this.quoteControl.quoteItems = quoteItems;
this.quoteControl.numberOfItems = quoteItems.length;
/* Initiate quote loop to show next item */ The variable self retains
the reference to the instance
let self = this; of the “Home” class
this.quoteControl.interval = setInterval(function () {
self.showNextQuoteItem(self);
Instructs the JavaScript function
to repeat the call to the
}, this.quoteControl.repeatPeriod); showNextQuoteItem()
function every 5,000 milliseconds
}
$(self.quoteControl.quoteItems).eq(self.quoteControl.
currentItem).fadeOut("slow", function () {
/* Increment current quote item counter*/ Determines the
index of the next
if (self.quoteControl.currentItem >= (self. quote item
quoteControl.numberOfItems - 1)) {
/* Reset counter to zero */
WEB TECHNOLOGIES
Responsive website 322 323
</div>
Closing tag for
</div> the “row” div
.popularDestinations .image {
Displays the image at width: 100%;
100% of the width
available to it }
SAVE
TRAVEL-NOW France
file:///Travel-now/index.html
POPULAR DESTINATIONS
Egypt
Africa
...</ol>
<div class="carousel-inner">
<div class="carousel-item active">
Instructs the browser
<a href="deals.html"> to display the image
as a “block” element
<img class="d-block w-100 roundCorners"
src="images/Serengeti_Safari.jpg"
Provides alt="Serengeti Safari">
alternate text for
an image if the <div class="carousel-caption d-block">
image cannot
be displayed
<h3>SERENGETI SAFARI</h3> Defines the header
of the first slide
</div>
</a>
</div>
Contains the second
<div class="carousel-item"> slide of the carousel
<a href="deals.html">
Instructs the browser to
<img class="d-block w-100 roundCorners" scale the image to 100%
of the width available to
it. The size of the slide
src="images/Taj_Mahal.jpg" increases according to
the width of the screen
alt="Taj Mahal">
<div class="carousel-caption d-block"> Adds a caption
to the slide
<h3>TAJ MAHAL</h3>
</div>
</a>
</div>
</div>
</a>
<a class="carousel-control-next" href="#dealsCarousel"
role="button" data-slide="next">
<span class="carousel-control-next-icon" This <span>
element will not
aria-hidden="true"></span> be visible if the
client is a normal
<span class="sr-only">Next</span> web browser
</a>
</a>
Closing tag for the
</div> “dealsCarousel” div
<div class="link">
<a href="deals.html">VIEW ALL LAST
MINUTE DEALS</a>
</div>
Closing tag for the
</div> “featureDeals” div Adds a vertical space
of 60px between this
<div class="spacer v60"></div> element and the next
SAVE
ADDING LAST MINUTE DEALS
TRAVEL-NOW TRAVEL-NOW
file:///Travel-now/index.html file:///Travel-now/index.html
SERENGETI SAFARI
SERENGETI SAFARI
NARROW SCREEN
VIEW ALL LAST MINUTE DEALS
Click this button to move
WIDE SCREEN through the slideshow
TRAVEL-NOW
TRAVEL-NOW
file:///Travel-now/index.html SERENGETI SAFARI
VIEW ALL LAST MINUTE DEALS VIEW ALL LAST MINUTE DEALS
<script src="scripts/app.js"></script>
Delete this entire line of code
<script src="scripts/home.js"></script> from the “template.html” file
***** *****
file:///Travel-now/template.html file:///Travel-now/template.html
*****
*****
...<div class="lastMinuteDeals">
<div class="deal"> This outer <div> acts as a
container for the hyperlink that
surrounds the row contents of
<a href="deals.html">
the first “deal” item
<div class="row">
There are four Bootstrap
columns in each row
<div class="col-sm name">
Taj Mahal Content in the first
Bootstrap column –
name of the destination
</div>
<div class="col-sm depart"> Content in the second
Bootstrap column –
21 July 2020 date of departure
</div>
Content in the third
<div class="col-sm length">
Bootstrap column –
duration of the trip
10 days
</div>
<div class="col-sm price"> Content in the fourth
Bootstrap column –
$1000 price of the deal
</div>
</div>
</a>
</div>
WEB TECHNOLOGIES
Responsive website 336 337
10.6 ADD THE SECOND DEAL
Below the first “deal” </div> closing tag, add the second
“deal” item. You can add as many “deal” items to this page as you like,
but make sure to add an equivalent number of “carousel-items” to
the “featuredDeals” div in the “index.html” file (see pp.327–29). HTML
Closing tag for the
first “deal” div
... </div>
Container for the
<div class="deal">
hyperlink that surrounds
the row contents of the
<a href="deals.html"> second “deal” item
<div class="row last">
<div class="col-sm name">
Serengeti Safari
</div>
<div class="col-sm depart">
27 July 2020
Contents of the
</div>
second “deal” item
placed in individual
<div class="col-sm length"> Bootstrap columns
7 days
</div>
<div class="col-sm price">
$800
</div>
</div>
</a>
</div>
Closing tag for the Add a vertical
</div> “lastMinuteDeals” div space between
this item and
<div class="spacer v60"></div> the next
SAVE
color: white;
}
@media screen and (min-width: 1px) and (max-width: 575px) {
.lastMinuteDeals .row {
padding: 0px 15px 20px 15px;
}
}
}
Defines .lastMinuteDeals a:hover {
“hover” state
text-decoration: none;
color: white;
}
.lastMinuteDeals .col-sm {
padding: 15px 0px 0px 15px; Defines a different padding for
the column when the width of
margin: 0; the screen is less than 575px
}
@media screen and (min-width: 1px) and (max-width:575px) {
CREATING A NEW PAGE
.lastMinuteDeals .col-sm {
padding: 15px 15px 0px 15px;
}
}
.lastMinuteDeals .name { The “name” column text
displays in bold font
font-weight: bold;
}
SAVE
TRAVEL-NOW TRAVEL-NOW
file:///Travel-now/deals.html file:///Travel-now/deals.html
Taj Mahal
21 July 2020
10 days
LAST MINUTE DEALS $1000
<link href="https://fonts.googleapis.com/css?family=
Suez+One|Oswald|Niconne" rel="stylesheet">
INDEX.HTML
GLOBAL.CSS
TRAVEL-NOW
file:///Travel-now/index.html
Bootstrap SASS
This project points to a Content Delivery Network (CDN) version https://getbootstrap.com/
of the CSS file, which contains all the default styles used by Bootstrap. docs/4.0/getting-started/theming/
While programming, you will need to override these default styles
with your own style definitions. To avoid doing this every time, you
can simply modify the default Bootstrap files so that they produce
your custom styles without the need to override them. This can be
achieved by downloading the Bootstrap source files, editing the SASS https://sass-lang.com/
variables (variables that define a value and can be used in multiple
places), and compiling the final CSS file.
HACKS AND TWEAKS
Clicking this input button submits This class defines the shape
the form data to the PayPal url of the “Buy Now” button
WEB TECHNOLOGIES
Responsive website 342 343
TRAVEL-NOW
file:///Travel-now/deals.html
© 2020 TRAVEL-NOW
ADDRESS
https://www.djangoproject.com
© 2020 TRAVEL-NOW
Other programming
languages
Every profession has its own vocabulary and ways to
describe common problems and solutions. Programming
languages were developed to help humans communicate
with computers. Most languages are designed for a specific
task or domain, but are often adapted for other purposes.
Grouping programming languages Programming languages are also grouped into families,
Human languages are grouped into families (such and often borrow words and structures from each
as Germanic or Dravidian) that use similar alphabets, other. For example, C, C++, Objective-C, Java, C#, Go,
vocabulary, and structures. If you know one language and Swift are all related, so developers who know one
in a family, it is easier to learn others. of them can learn the other languages more easily.
101100011010101
010011001010110
OPERATING
SYSTEM 101100011010101
010011001010110
DISK PACKAGE
DEFRAGMENTER MANAGER
REFERENCE
Other programming languages 344 345
Languages for data
Some languages are designed to work with MATLAB/ APL FOR
large sets of data. The data might come OCTAVE FOR DATA
NUMERICAL HANDLING
from experiments, monitoring systems, COMPUTATION
sales, simulations, and other sources in
science, engineering, business, education,
or other areas. People may want to process
this data to reduce noise, analyse trends
or patterns, and compute statistics.
Languages to manipulate and
analyse data include APL,
MATLAB, and R.
/CSS, POSTSC
ML R
HT OR GR APHIC IPT
F S
ABASE
DAT
OR PLE, MATH
MA SYMBO EMA
LF
O R LIC T
F M
SQ
IC TH
A
A
LISP/SCH
PRO
EM
LO
G
FO
EF
R LOGIC
OR
AI
EARLY PROGRAMMING LANGUAGES
Early programming
languages
There are other widely used
languages, some with a long
history. Fortran was created
in the 1950s for scientific and
engineering applications. COBOL
was created around 1960 for
business applications. BASIC was
an easy language created in the
mid-1960s for students. Pascal was
FORTRAN FOR SCIENCE COBOL FOR BUSINESS
created around 1970 to encourage
structured programming practices,
and was widely used in education.
Ada was created around 1980 to
reduce the number of different
languages used across the US
Department of Defense (DoD).
BLOCKLY SCRATCH
REFERENCE
Other programming languages 346 347
Other programming languages their careers. The table below lists some of these
There are hundreds of programming languages, and programming languages, with information on
most developers are proficient in a few, familiar with when they were first developed, the lead creator,
more, and expect to learn new languages throughout and a brief summary of key ideas and major uses.
C++ (1983) Designed to add object-oriented features to C (in C, “C++” adds 1 to the
Bjarne Stroustrup variable c). Widely used for operating systems, compilers, interpreters,
and large applications.
Java (1995) Designed to be an object-oriented language based on C and C++. Java was
James Gosling meant to be a “write once, run anywhere” programming language – code written
on one type of computer can be run on other types. Widely used for desktop
applications and browser-server applications.
Python (1991) Designed for readability, and to support multiple programming styles. Uses
Guido van Rossum a small core language with libraries that add more specialized functions.
Widely used in web applications, scientific computing, and for scripting in
other software products.
PHP (1994) Designed for web development (“PHP” originally meant “Personal Home
Rasmus Lerdorf Page”), where it is widely used.
JavaScript (1995) Designed to create interactive web pages and applications, where is it widely
Brenden Eich used. JavaScript is also used in some web servers, so that a web application
can use the same language in the browser and server.
Fortran (1950s) Designed at IBM (International Business Machines Corporation) for scientific
John Backus and engineering applications, which often involve many numeric calculations.
Named from “FORmula TRANslation”.
COBOL (1959) Designed for data processing, COBOL was based on the earlier work of Grace
Hopper. It was supported by the US Department of Defense, which led to its
wider adoption. Named from “COmmon Business-Oriented Language”.
BASIC (1964) Designed to be easy to use for students in many fields, not just science and
John Kemeny and Thomas Kurtz mathematics. It expanded into Microsoft Basic (1975) and Visual Basic (1991).
Named from “Beginner’s All-purpose Symbolic Instruction Code”.
Ada (1980s) Designed for embedded and real-time systems and to reduce the number
Jean Ichbiah of languages used across the US Department of Defense (DoD). Named after
Ada Lovelace, often described as the first computer programmer.
SQL (1970s) Designed to edit and search databases, especially “relational databases” (when
Donald Chamberlin and Raymond Boyce data is stored in tables that are related to each other in various ways). SQL is
short for “Structured Query Language”.
Glossary
algorithm branching statement phone, and email address, and provide
A sequence of steps or instructions that A program statement that chooses one functions to set or display them. (2) In
complete a task or solve a problem. In of several possible paths or sets of steps, CSS, a style definition that can be added
programming, an algorithm often includes usually based on the value of an expression. to any number of elements.
repeated steps, decisions between two For example, an “if-then-else” statement
or subsequences of steps, and steps that takes the “then” path if an expression is true, cloud
refer to other algorithms to do subtasks and the “else” path if an expression is false. A set of Internet servers that
or solve subproblems. Also called a conditional statement. can be used instead of a local
computer. Cloud storage stores
API (Application Programming Interface) Boolean files and other data, and cloud
A set of definitions that programmers A value that can be either true or false. computing does computation.
can use to access another system without Named after George Boole, who defined
having to understand all of its details. The a logic system based on such values. compiler
definitions might include functions, classes, A program that analyses a computer
data structures, and data values. Originally bug program and converts (compiles) it
named because it defines an interface for A defect, or an error, in a program or into machine code so it runs faster.
programmers to develop applications using other system that prevents it from See also interpreter.
an underlying system. See also library. working correctly. The term was used in
engineering long before computers, but composite data
array is often associated with a story told by Data that is created by combining other
A collection of items stored in adjacent Grace Hopper about a moth stuck in an simpler data. For example, a string of
locations in the system’s memory, using early computer, causing wrong results. characters, an array of numbers, or an
a single name and a numeric index. object. See also primitive data.
The index usually starts at 0. Often, call
all elements in the array have the same A program statement that causes the concatenate
type. For example, all integers, or all computer to run another function, and To combine items, usually character
strings of characters. An array is one return to the original function when done. strings, one after another. For example,
way to store a list. See also list. concatenate “snow” and “ball” to
carousel get “snowball”.
attribute A software component in Bootstrap
A specific piece of information associated that cycles through a set of elements, conditional statement
with a data object. For example, an image like a slideshow. See branching statement
would have attributes for height and width,
and a sound would have attributes for CDN (Content Delivery Network) constructor
length and sampling rate. A network of servers spread across different A special function used to
places that can deliver the same content create new objects of a class.
binary (data or services). For example, when a web Typically, the constructor
A numbering system, used by computers, browser loads content for a page, the CDN allocates memory, initializes
that has only two digits (0 and 1), not the can deliver content from nearby servers, variables, and does other setup.
usual decimal system with ten digits (0 to 9). which reduces the wait time and the
In binary, each position is two times the network traffic. data
position to its right, rather than ten times in Any information stored in
decimal. For example, 101101 = 1*32 + 0*16 + child object or used by a computer.
1*8 + 1*4 + 0*2 + 1*1 = 45. An object created from a prototype in a
parent object. The child shares (inherits) data binding
bit all functions and properties of the parent, Connecting (binding) the
Shortened from “binary digit”, it is the basic but can override them. For example, data values in two or more objects
unit for information or communication. the parent might define functions and or systems so that changing one
The value of a bit can be either 0 or 1. Thus, properties for any book, and each child also changes the others. For example,
an eight bit device mostly uses storage would define the author, title, publisher, binding a GUI element to a data object
elements with 8 bits, which can store and date for a specific book. ensures that changes to the object
2⁸ = (256) different values. appear in the GUI, and GUI changes
class also change the object.
block element (1) A definition or description of a
An HTML element that breaks the flow category, which usually includes data debug
of text and changes the layout of the and functions, and is used to create To remove bugs in a program.
page. For example, paragraphs (<p>), lists (instantiate) objects in that category. For This might involve running the
(<ul>, <ul>, <li>), and tables are all block example, the class for employees might program with different inputs, adding
elements. See also inline element. specify that every employee has a name, statements to print or store values
348 349
as the program runs, or watching parameters to give information to the index number
memory values and how they change. function, and a result for the code that A number indicating the position (index) of
See also bug. called the function. Also called procedures, an element in an array. Many programming
subroutines, and methods (especially in languages use square brackets with arrays,
directory object-oriented languages). so “myArr[3]” means the element in position
(1) Also called a folder; a structure to “3” of array “myArr”.
store files, and sub-directories with git
other files. (2) A list of resources and A popular version control system, used inline element
how to access them. to track changes in a set of files, so that An HTML element that does not break
users can easily collaborate and access the flow of text or change the layout
ECMAScript different versions of the same file. of the page. See also block element.
The official definition for the scripting See also version control system.
language used in browsers and servers, input control
to provide a standard that could be used global variable A part of a user interface, such as
by JavaScript, JScript, ActionScript, and A variable that can be used anywhere in a a button, checkbox, or text field,
other Web languages. program. See also local variable, variable. that allows a user to provide input
to a program.
element GUI (Graphical User Interface)
(1) A single value in a larger set, such as Often pronounced “gooey”, a user instantiate
an array. (2) In HTML, a part of a document, interface is the name for graphical To create a new object, usually
often with a start tag, content, and a stop elements, such as buttons, menus, using its class definition.
tag. For example, “<em>DANGER</em>” text fields, and checkboxes that make
is an element that shows “DANGER” as up the part of the program that a user integer
emphasized text. can see and interact with. It is different A number without a fractional part,
from a command line interface where also called a whole number. Usually,
event everything is displayed as text. a computer can represent a large, but
A description of something that has not infinite, set of integer values.
happened, often used as a signal to hardware
trigger responses in a program. For The physical parts of a computer interface
example, a mouse-click event could such as the processor, memory, network A boundary between two parts of
submit a form or display a menu. connectors, and display. See also software. a system. Thus, a user interface (UI) is
how a user interacts with the system,
execute hack and an API (Application Programming
Also called run; the command (1) An ingenious change to code Interface) is a set of definitions to help
to start a program. that makes it do something new or programmers develop applications
simplifies it. (2) To break into other using an underlying system.
file object computer systems.
An object that describes or gives access Internet
to a file stored in the system’s memory. hosting The global computer network,
Also called web hosting; providing which is actually a network of
float server and Internet access to clients networks. Shortened from
A number with a decimal point in it. for their own websites. In dedicated “interconnected network”.
It allows a computer to store very large hosting, each client gets their own
and very small numbers more efficiently. server; in shared hosting, many clients interpreter
Also called a floating point number. share a single server. A program that executes computer
programs one statement at a time,
flowchart hover state without first converting (or compiling)
A graphical way to show the steps, The appearance of a GUI element the program to machine code.
branches, and loops in an algorithm. when the cursor or pointer hovers
above it. For example, a button or iterate
framework text field might have a different colour To execute a task or set of statements
A collection of software elements that or border when the mouse hovers repeatedly. Most programming languages
can be combined and customized in above it, to indicate that it is active or have special syntax to make it easier for
various ways, usually to create user ready to use. Also called “mouseover” programs to iterate, either a set number
applications. For example, Angular, state. See also normal state. of times, or until some condition is met.
Django, Express, jQuery, React, and For example, a program might iterate
Ruby on Rails are all frameworks used hyperlink through an array to perform the same
for websites and web applications. A text or graphical element that actions on each element.
can be clicked, tapped, or otherwise
function selected to access other information, iteration
Code that carries out a specific task, often using a url. The other information can The general process of iterating, or the
working like a program within a program. be in the same document, another process of repeatedly going through
Often, a function has a name, a set of input document, or on another website. a set of statements in the code.
GLOSSARY
drawing (Scratch) 67 Events blocks (Scratch) 40, 46 fonts continued Gantt charts 134, 135, 149, 151, 152
draw interface 179 exceptions (Python) 162 setting/defining 235, 244, 259, Gap Time 86
draw_scenery() function expenditure, tracking 159–75 319, 325 general sibling selector 237
(Pygame Zero) 183, 202 explosions, painting 88 size 190, 238, 315 getters 283
drop-down lists 212 Extension blocks (Scratch) 35, 37, footer section 220, 232, 247, 249, Gimp 286
vertical 311 39, 58–59 331, 333 Github Gist 265
dungeon crawl games 178, 179 external files 264 styling 261–62 global positioning system see GPS
duplication CSS 234 footers, table 167–68 global variables
code 62 external hyperlinks 213 forever blocks (Scratch) 41, 84, 86 JavaScript 290, 291, 308
sprites 60 external information 46 forever loops 79, 86 Python 115, 160, 163, 189, 195
for loops Go 344
JavaScript 268, 274 GoDirect Force & Acceleration 59
E F Python 108, 110, 122, 145 Google Chrome 217, 222, 281,
ECMA Script 264 factories, automation 17 for in loops (JavaScript) 275 305, 313
Edge 222 false value 270–71 Format menu (Python) 169 Google Fonts 244, 300, 341
editing, code 208–9 favicon 221 format strings (Python) 159, 166 Google Maps 258
editor window (IDLE) 98, 99 definition 221, 309 forms, HTML 212–13 Google Material Icons 341
education, programming languages images 300 Fortran 346, 347 Google Translate API 52
346 feature boxes 220, 224–29 frame container widget 147 Gosling, James 347
Eich, Brenden 347 styling 253–57 frameworks (JavaScript) 284–85, GPS 16
elastic cloud computing 215 feature images 305, 313–15 286, 289 graphics
element selector (CSS) 236 banner 314 FTP (File Transfer Protocol) 207 graphical modules (Python) 134,
elements (HTML tags) 210, 211, fields (objects) 156, 157 functions 51 146–51
234, 235 File Explorer 243 functions (JavaScript) 269, 278–79, graphic user interfaces (GUI)
elif see else-if filename labels 154 282, 283, 291 147, 286–87
else branch (Python) 105 file objects 107 creating 296, 308 programming languages for
else-if branch files declaring 278 345
JavaScript 271 input from 107 function statement vs function graphs and charts 287
Python 105 output to 107 expression 278 grid
email File Transfer Protocol see FTP nested 279 coordinates 182, 185–87
hyperlink 256 Fill tool (Scratch) 57, 68, 82, 88 self-executing 279, 291 HTML Canvas 287
id 259 financial planning 158–75 functions (Python) 112–15, 161, moving on the 187, 192
embeddable scripts 95 Fintech (financial technology) 164–65 width and height 203
engineering, programming 95 built-in 113 GUI see graphic user interfaces
languages 346 firmware 17 calling 112, 113, 117, 159 guidelines, compliance with
entities 233 floats (floating point numbers) creating 114–15 website 215
equality 104 102, 139, 266 defining 112, 114–15
equals signs (Python) 104 FLOSS (free/libre and open importing 117
error messages source software) 94 methods 169, 170 H
code editors 209 flowcharts 53, 144 methods for scheduling calls 194 hamburger menu button 310, 311
Python 99, 132–33, 162, 163–64 folders naming 114, 117 hard-coding 100
errors creating 160, 180, 218, 243, 289, functions (Scratch) 50–51 hardware 17
in JavaScript 280 306, 308 machine and assembly languages
in Python 130–31, 162, 163–64 locating 243 344
see also debugging fonts G headers
escaping loops (Python) 109, canvas widget 150 Game Over message 89, 190, 195, 196 carousels 327
110–11 changing 57, 300, 301 Game_over variable 189 defining 245, 249
EvalError (JavaScript) 280 colour 247, 307 games 23 styling 307
event-driven programming 24, 40 company logo 313 Asteroid dodge (Scratch) 80–91 tables 167–68
event-handler function (Python) default 307 consoles 17 hex code 150
185, 186 Google Fonts 244, 300, 341 development 80, 95 hidden fields (web pages) 213
event handlers (JavaScript) 294 list of website 244 gaming apps 134, 137 high-level programming languages
event loop programs 178, 179 prominent 316 Knight’s quest (Python) 178–203 22
354 355
hobbyists 18 HTML continued images continued J
home automation 23 template file 303 middle 256, 257 Java 25, 264, 344, 347
Homebrew package manager templates 333–34 styling 257 JavaScript 23, 24, 25, 264–87, 347
176–77 HTML Canvas 287 image tile grids 178, 179 animating the web page
Home() function (home.js) 321 HTTP (Hypertext Transfer Protocol) imperative programming 24 288–303
Home hyperlink 312 206, 207 importing (Python) 117 building a web page 216, 218,
Homeindex() function (home.js) hyperlinks 212–13 indentation 221, 233
292, 293 adding to navigation bar 312 errors 130 debugging 280–81
home.js 290, 292, 317, 321 call-to-action 329, 330 Python 99, 108, 109, 130, 169 features of 265
Home Menu 300 copyright section 332 tags 211 functions in 278–79, 310
home page email 256 indexes (Python) 122 graphic user interfaces 286–87
copyright section 331–32 footer 262 index file 218, 219, 306 input and output 272–73
design 305 home page 220, 304, 309 indexing (search engines) 214 interactive functionality 289
feature image 313–15 list 223, 232 index strings 179 libraries and frameworks
navigation bar 309–13 styling 249–50, 252, 254, 256, infinite loops (Python) 109 284–85, 289
primary message 316–17 330, 339 infographics 287 logic and branching 270–71
quote 317–23 Top Menu 250 information processing 46 loops in 274–77
responsive 304 initialisers (Python) 169 object-oriented 282–83
slideshow 327–31 inline CSS 234 order of tags 310
Hopper, Grace 347 I input responsive layouts 240, 304, 308,
horizontal borders 239 IBM 347 JavaScript 272–73 321–23
horizontal layers 220, 247, 305 Ichbiah, Jean 347 Python 106–7 using online 264
horizontal margins 248, 316 icons 300, 341 Scratch 34, 46–47 variables and data types 266–69
horizontal menu lists 249, 251 IDEs (Integrated Development types of 46 what it is 264–65
horizontal rule 225, 255, 336 Environment) 23, 132, 208, 209, input blocks (Scratch) 34 JavaScript Engine 264, 277, 284,
hosting, web 215 289, 305 input events 179 291, 293, 308, 310, 321, 328
household appliances 16 installing 217–18 input fields 212 JQuery 265, 284, 289, 294, 298, 305
hover state 249, 252, 254, 258, 260, IDLE (Integrated Development styling 259 adding 290
262, 313, 326, 330, 332, 338, 339 and Learning Environment) input() function (Python) 106, 113 order of tags 310
HTML (Hypertext Markup 95, 96, 97, 113, 120, 121, 136, input validation (web pages) 213 responsive layouts 304, 309
Language) 23, 206, 207, 160, 180, 182 instance variables 170 JSFiddle 265
209, 345 Check Module 131 instructions, computer Json data format 269
animating the web page 288, 289, colours in the code 98, 132 programs as 17
290–92, 296, 300–303 creating a CSV file in 136 integers 102, 139, 140, 141, 266
building a better website 214–15 debugging 130, 131, 133 Integrated Development K
building a web page 216–33 editor window 98 Environment see IDEs Kemeny, John 347
colour codes 238 shell window 98 Integrated Development keyboard control 46, 186, 214
common entities 233 using 98–99 and Learning Environment keys 187, 188
and CSS 234–39 id selector (CSS) 237 see IDLE dictionary 138, 140, 160
debugging 281 if branch (Python) 105, 118 integrity attribute (Bootstrap) 309 keywords 210
document structure 211 if-then block (Scratch) 44, 59, 62, interactive behaviours 216, 272, class 156, 283
exploring basic 210–11 63, 72, 73, 74, 75, 77–79, 84–87 273, 288 Pygame Zero keyword arguments
forms and hyperlinks 212–13 if-then branch (JavaScript) 271 Internet 206 198
and graphics design 286, 287 if-then-else block (Scratch) 44, 73, Internet Explorer 217, 222 Knight’s quest 178–203
and JavaScript 264, 265, 272–73, 75, 77 interpreters 23 adding the keys 187–88
286, 288 if-then-else branch (JavaScript) 271 int function (Python) 140 adding messages 196–97
responsive layouts 240, 304, 305, images IP (Internet Protocol) 207 animating the actors 197–98
309–14, 316–18, 324–25, 327–29, adding to web page 221, 228, IP address 207 creating the guard actors 191
331, 333–37 229, 305 IP routing 206 creating the player 184
styling the web page 242, 246, background 227, 251 issubset set method 145 hacks and tweaks 202–3
247–53, 254 centring 314 iterations 108–11, 118, 181, 182, 197, how to play 178–79
tags and attributes 210–11, 214, feature 255, 257, 305, 313–15 276–77 moving the guards 192–94
215, 234, 239 folder 180, 217, 218, 242, 306 iterative model 21 moving the player 185–87
INDEX
Knight’s quest continued logic map() function (Python) 140 move_guard() function
setting up 180–84 errors 131 Maple 345 (Pygame Zero) 193, 194, 197
tracking the result 194–97 JavaScript 270 maps movement
Kurtz, Thomas 347 Python 104–5, 140 Contact Us section 258 illusion of 81, 87
Kyma 346 Scratch 44–45 virtual worlds 287 logic 185
task ordering 144–45 margins 245 move_player() function
logical operators 104, 270–71 setting 247, 307, 311, 319 (Pygame Zero) 186, 188, 189,
L logic programming 345 Mathematica 345 193, 195, 198, 202
labels 212 logic puzzle (Scratch) 64–79 mathematics, symbolic 345 multimedia 206
label widget 154 adding more sprites 74–77 MathJS 285 multiple classes selector 237
labyrinthine environments 178 adding a new sprite 71–73 MATLAB 345 multiview function 208
languages adding the rules 78–79 Max 346 Music blocks (Scratch) 39, 59
foreign 52–63 getting started 66–70 media queries 241 music, programming languages
programming see programming hacks and tweaks 78–79 messages 346
languages program design 65 displaying (Scratch) 38
laptops 240 the puzzle 64 naming 49
layers, horizontal 247, 305 logo primary (websites) 309, 316–17 N
layout styles, different 241 company 220, 223, 224, 286, sending (Scratch) 48–49 named tuples (Python) 135,
left column elements 225 305, 311, 313 metadata 221, 240 142–43
LEGO BOOST 59 styling banner 251 meta links 303 name errors 131
LEGO Education WeDo 2.0 59 styling Top Menu 250, 313 methods NASA, Mission Control Centre
LEGO Mindstorms EV3 59 loops calling (Python) 113 95
len() function (Python) 103, 113 continuous 135, 144, 145 JavaScript 282, 293, 297, 298 navigation bar 305
Lerdorf, Rasmus 347 do while loops 275 Python 113, 157, 169, 170, 174 creating 309–13
less than 104 escaping 109, 110–11, 277 micro:bit 59 templates 333
libraries infinite 109 microprocessors 23 nested functions (JavaScript)
Google fonts and icons 341 JavaScript 274–77 Microsoft Basic 347 279
graphics 287 with a list 108 Microsoft Visual Studio nested loops
JavaScript 265, 284–85, 286, 287 loop conditions 108 Community 2019 see Visual JavaScript 276
Python 94, 95, 114, 116–17, for loops 108, 110, 122, 145, 268, Studio Community 2019 Python 110–11, 179
136, 138, 139, 146, 159, 173 274 Microsoft Windows 17 NetBeans 209
Scratch 39, 54 loop variables 108, 111 locating folders 243 network protocols 207
Lifelong Kindergarten group (MIT) nested 110–11, 179, 276 Pygame Zero 176–77 new projects (Scratch) 54, 66
29 Pygame Zero game loop 179 Python on 96 next sibling selector 237
lightweight editors 208 Python 108–11, 118, 119, 122, 125 Scratch on 29 Node.js 264, 284, 285, 289
line charts 287 Scratch 41, 45, 65, 73, 75, 79, 81 military, programming languages Node Package Manager
link layer protocol 207 while loops 108, 109, 110, 125, 274 for 346 see NPM
Linux 29 Lovelace, Ada 347 modal windows 272, 273 noise reduction 345
LISP 345 low-level programming languages modules non-primitive data types
lists 22 adding 309–10 268
of lists 111 built-in 116 normal state 254
loops with 108 importing and using 117 not (logical operator) 271
Python 103, 111, 113, 118, 119, M Python 116–17 not block (Scratch) 45
121, 122, 129 Mac computers modulo (remainder) operator not equal 104
Scratch 43 locating folders 243 (Python) 199 Notepad 208, 218
sets compared with 140 Pygame Zero 176–77 Moment.js 285 NPM 284
shuffling 121 Python on 97 money, Budget manager project numbers
splitting 122 Scratch on 29 158–75 computation 345
tuples compared with 137 machine code 23, 264, 347 Monty Python’s Flying Circus 96 in JavaScript 266
within lists 111 machine languages 344 Motion blocks (Scratch) 36–37 list of 129
list widget 147 main loop function 147 mouse 214 in Python 102, 129, 139
local variables 115, 269 Makey Makey blocks (Scratch) 59 mouse-over state 230, 249, 252, random 43, 121, 201
location (Contact Us section) 258 managers 18 254, 258, 260, 262 in Scratch 43
356 357
O Perl 344 Prolog 345 Python continued
Objective-C 344 pet shop website project promo bar 247–48, 287, 288, 296, using IDLE 98–99
object-oriented programming animating the web page 288–303 299 variables 100–101, 115, 121, 125,
25, 156–57, 264, 347 Build a web page 216–33 promotional messages 220, 221, 160, 163, 169, 170, 189, 195
JavaScript 282–83 styling the web page 242–63 296–99 versions 96
objects PHP 209, 344, 347 cycling through 298–99 on Windows 96
JavaScript 269, 282–83, 297 pip package managers 176–77 initializing 297–98 Python Django 303, 343
Python 156–57, 188 pixels 150, 182, 215, 238 styling 247–48 Python Standard Library 116
office applications, programming placeholder text 261 prompts 272
languages 344 place markers 327 protocols 207
office workers 18 planning (software development) prototype-based languages 283 Q
on document ready() function 20 prototypes (JavaScript) 282, 283 quotation marks 103, 320–21
(home.js) 292, 321, 323 plugins 209 push() method (JavaScript) 268 quotes 305, 317–23
on_key_down() function (Python) pos property (Python) 193 puzzles 64–79 animating 322–23
186 PostScript 345 PyBrain 95 applying properties to 321
opcode 23 prerequisites Pygame 117 initializing 322
Opera 222 as sets of numbers 140 Pygame Zero 95, 117, 176–77
operands 23 tasks 134, 141, 144, 145 Actor class 178, 183
operating systems 17 preview windows 208 animations 198 R
installing Python 96–97 primary messages 305, 316–17 drawing text with 190 R 345
programming languages 344 primitive data types 266–67, 268, game loop 179 radio buttons 212
updates 177 269 initializing 180 randint() function (Python) 201
Operator blocks (Scratch) 42–43, print() function (Python) 106, 113 library 117 random allocation 118, 119
44, 64 printing (code editing) 208 updates 177 random blocks (Scratch) 87
or (logical operator) 270 probability 201 PySoy 95 random module (Python) 116, 118,
or block (Scratch) 45 problem-solving 65 Python 22, 24, 25, 92–203, 347 119, 120, 121, 200
outline colour (Pygame Zero) 190 procedural programming 25 applications 95 random numbers 43, 121, 201
output processing blocks (Scratch) 34–35 Budget manager project 158–75 RangeError (JavaScript) 280
JavaScript 272–73 program flow 34–35, 50 common errors 99 range function (Python) 108
Python 106–7 managing 40–41 data in 102–3 Raspberry Pi 23
Scratch 35 programming 16–17 debugging 130–33 ReactJS 284
output blocks (Scratch) 35 programming languages 16, 22–25, dictionaries 160, 174 readability, code 94
344–47 exceptions 162 readable content (websites) 214
choosing 25 features 94–95 read_tasks() function (Python)
P for data 345 format strings 166 141, 143
package managers 176–77 early 346 functions 112–15, 159, 161, ReferenceError (JavaScript) 280
packets 206–7 families of 344 164–65 reference variables 268
packet sequence 207 popular 347 how it works 95 repeat blocks (Scratch) 41, 45, 75
packet switched networks 206 for specific purposes 345 input and output 106–7 repeat until blocks (Scratch) 45
padding 235, 245, 245, 247, 248, types of 24–25 installing 96–97 RequireJS 285
249, 252, 307, 311 visual 346 Knight’s quest project 178–203 researchers 19
page elements, styling 244–53 website construction 216 libraries 94, 95, 114, 116–17, 136, response variable 125
Paint Editor (Scratch) 33, 57, 61, 64, see also JavaScript; Python; 138, 139, 146, 159, 173 responsive layouts (websites) 215,
66–68, 78, 88 Scratch logical operators and branching 240–41, 304
pandas 95 programs 17 104–5 responsive website 304–43
parent elements 237, 238 Project planner 134–55 loops in 108–9 adding the copyright 331–32
parent function 279 creating and reading the CSV file on a Mac 97 adding a feature image 313–15
parent objects 282 136–43 objects and classes 156–57 adding last minute details 327–31
parent tags 210, 211, 239 drawing the chart 146–51 Project planner project 134–55 adding a message 316–17
parent widgets 147 hacks and tweaks 152–55 Pygame Zero 176–77 adding the modules 309–10
Pascal 346 how it works 134 sets 140 adding popular destinations
PayPal 342 ordering the tasks 144–46 Team allocator project 118–29 324–25
pen blocks (Scratch) 37, 59 program design 135 tuples 137 adding a quote 317–23
INDEX
visual programming languages web hosting 215 websites continued Windows see Microsoft Windows
25, 348 web pages 215 payments on 342–43 windows, resizing 152
Visual Studio Code 208 animating the web page project responsive website project Wolfram Language 24
Visual Studio Community 2019 288–303 304–43 work schedules 134
209, 217–20, 242, 243, 289, building 216–33 social media 301–2 World Wide Web, working of
305, 306, 333 creating new 335–40 styling 242–63 206–7
voice, choice of (Scratch) 63 hyperlinks and forms 212–13 WebStorm 209 wrap class 248
VPS (Virtual Private Server) hosting responsive 240, 241 welcome message 120
215 styling the web page project when I receive block (Scratch) 48,
242–63 73, 75, 77, 86, 88 XYZ
templates 303, 333–34, 335, 343 while loops x coordinates 182
W web protocol 207 JavaScript 274 XML 265
wait blocks (Scratch) 41, 45 web server 206, 207, 208, 209 Python 108, 109, 110, 125 y coordinates 182
wait until blocks (Scratch) 45 websites 23 widgets zoom function 209
warp speed slider 80, 89 accessibility 214–15 frame container 147
washing machines 16 animating 288–303 label 154
waterfall model 21 basic HTML 210–11 list 147
web apps 23 building better 214–15 parent 147
webbrowser module (Python) 116 building a web page 216–33 root window 147
web browsers 206, 207, 208, 209, connecting to 206–7 Tk canvas widget 147, 150
214, 234, 250, 255, 265 HTML forms and hyperlinks Tk Frame 153
Web Content Accessibility 212–13 Tk GUI 147
Guidelines 215 icons 300 top-level window 147
web development 19, 95 interactive 288 Twitter 301