Upload
becky-stewart
View
1.192
Download
2
Embed Size (px)
DESCRIPTION
First lecture on introductory programming for MzTEK. It covers basic workflow and primitive data types. It is assumed you are at least a little familiar with Processing and/or Arduino.
Citation preview
WHAT WILL WE COVER?• How computers work and the tools we can use to make them
do what we want
• The core components of a program
• Data types
• Control structures
• Functions
• Understanding code someone else has written
• Look at programming for the Arduino and Processing environments
INTRODUCTIONS
• Describe your experience with programming
•What is something you want to be able to do? a dream project?
PAIRED PROGRAMMING
• Find a partner with similar experience as you
• You will share a computer and take turns typing
• All exercises will be done in pairs
WHAT ARE PROGRAMS AND WHY DO WE NEED THEM?
COMPUTERS ARE STUPID
Code You’ve Written
Instructions for Computer?
Executable Program (e.g. .exe or .app)
Code You’ve Written
Instructions for Computer?
Executable Program (e.g. .exe or .app)
Compiler +
Linker +
Loader
Code You’ve Written
Instructions for Computer?
Executable Program (e.g. .exe or .app)
Interactive Development
Environment (IDE)
Compiler +
Linker +
Loader
Think of idea
Write code
Run program
Think of idea
Break down problem into tiny steps
Write code for one step
Run program
EXERCISEWrite out the steps to either :
• Knit a scarf
•Make mashed potatoes
Identify the variables and break down steps to simplest instructions. What gets repeated?
What would you need to do to increase the length or increase the number of servings?
WHY DO WE NEED TO COMPILE PROGRAMS?
Code You’ve Written
Instructions for Computer?
Executable Program (e.g. .exe or .app)
Interactive Development
Environment (IDE)
Compiler +
Linker +
Loader
An IDE like Processing or Arduino includes
• text editor
•compiler and linker
•other tools to help you
?
Compiler • Translate your text into a language
(symbols) that a computer understands
Linker • Combine the compiled output of
what you’ve written with what other people have written such as libraries
Loader• On the Arduino chip, the program
needs to be moved from your computer to the chip. With Processing, your computer is running the program, so it doesn’t need to be moved.
• Arduino means a piece of hardware, a programming language, and an IDE
• The hardware is a microcontroller plus surrounding circuitry and is completely open - you can build your own board if you want to!
• Language is based on Wiring which is based on Processing and C++ (a very common language)
• IDE is written in Java and derived from Processing IDE and Wiring Project
BRIEF HISTORY OF ARDUINO
BRIEF HISTORY OF PROCESSING
• Processing is a set of libraries and a development environment
• Initially developed to teach programming through visuals
• The Processing Development Environment uses Java (another very common programming language)
• Can use the Processing libraries outside of the Processing Development Environment
EXERCISEHook up Arduino board to computer and open the Arduino IDE.
How do you choose the compiler settings? How do you set up the loader?
Open the blink example and save as a new sketch
Change blink time so the LED stays on for 5 seconds.
/* Blink Turns on an LED on for one second, then off for one second, repeatedly. This example code is in the public domain. */
void setup() { // initialize the digital pin as an output. // Pin 13 has an LED connected on most Arduino boards: pinMode(13, OUTPUT); }
void loop() { digitalWrite(13, HIGH); // set the LED on delay(1000); // wait for a second digitalWrite(13, LOW); // set the LED off delay(1000); // wait for a second}
HOW DO WE STORE DATA?-OR-
WHAT ARE VARIABLES?
Heat the oil in a large, heavy-based saucepan and fry the bacon until golden over a medium heat. Add the onions and garlic, frying until softened. Increase the heat and add the minced beef. Fry it until it has browned, breaking down any chunks of meat with a wooden spoon. Pour in the wine and boil until it has reduced in volume by about a third. Reduce the temperature and stir in the tomatoes, drained mushrooms, bay leaves, oregano, thyme and balsamic vinegar.
1. Either blitz the sun-dried tomatoes in a small blender with a little of the oil to loosen, or just finely chop before adding to the pan. Season well with salt and pepper. Cover with a lid and simmer the Bolognese sauce over a gentle heat for 1-1½ hours until it's rich and thickened, stirring occasionally. At the end of the cooking time, stir in the basil and add any extra seasoning if necessary.
2. Remove from the heat to 'settle' while you cook the spaghetti in plenty of boiling salted water (for the time stated on the packet). Drain and divide between warmed plates. Scatter a little parmesan over the spaghetti before adding a good ladleful of the Bolognese sauce, finishing with a scattering of more cheese and a twist of blackhttp://www.bbc.co.uk/food/recipes/spaghettibolognese_67868
2 tbsp olive oil or sun-dried tomato oil from the jar6 rashers of smoked streaky bacon, chopped2 large onions, chopped3 garlic cloves, crushed1kg/2¼lb lean minced beef2 large glasses of red wine2x400g cans chopped tomatoes1x290g jar antipasti marinated mushrooms, drained2 fresh or dried bay leaves
1 tsp dried oregano or a small handful of fresh leaves, chopped1 tsp dried thyme or a small handful of fresh leaves, choppedDrizzle balsamic vinegar12-14 sun-dried tomato halves, in oilSalt and freshly ground black pepperA good handful of fresh basil leaves, torn into small pieces800g-1kg/1¾-2¼lb dried spaghettiLots of freshly grated parmesan, to serve
Heat the oil in a large, heavy-based saucepan and fry the bacon until golden over a medium heat. Add the onions and garlic, frying until softened. Increase the heat and add the minced beef. Fry it until it has browned, breaking down any chunks of meat with a wooden spoon. Pour in the wine and boil until it has reduced in volume by about a third. Reduce the temperature and stir in the tomatoes, drained mushrooms, bay leaves, oregano, thyme and balsamic vinegar.
1. Either blitz the sun-dried tomatoes in a small blender with a little of the oil to loosen, or just finely chop before adding to the pan. Season well with salt and pepper. Cover with a lid and simmer the Bolognese sauce over a gentle heat for 1-1½ hours until it's rich and thickened, stirring occasionally. At the end of the cooking time, stir in the basil and add any extra seasoning if necessary.
2. Remove from the heat to 'settle' while you cook the spaghetti in plenty of boiling salted water (for the time stated on the packet). Drain and divide between warmed plates. Scatter a little parmesan over the spaghetti before adding a good ladleful of the Bolognese sauce, finishing with a scattering of more cheese and a twist of blackhttp://www.bbc.co.uk/food/recipes/spaghettibolognese_67868
2 tbsp olive oil or sun-dried tomato oil from the jar6 rashers of smoked streaky bacon, chopped2 large onions, chopped3 garlic cloves, crushed1kg/2¼lb lean minced beef2 large glasses of red wine2x400g cans chopped tomatoes1x290g jar antipasti marinated mushrooms, drained2 fresh or dried bay leaves
1 tsp dried oregano or a small handful of fresh leaves, chopped1 tsp dried thyme or a small handful of fresh leaves, choppedDrizzle balsamic vinegar12-14 sun-dried tomato halves, in oilSalt and freshly ground black pepperA good handful of fresh basil leaves, torn into small pieces800g-1kg/1¾-2¼lb dried spaghettiLots of freshly grated parmesan, to serve
Heat the oil in a large, heavy-based saucepan and fry the bacon until golden over a medium heat. Add the onions and garlic, frying until softened. Increase the heat and add the minced beef. Fry it until it has browned, breaking down any chunks of meat with a wooden spoon. Pour in the wine and boil until it has reduced in volume by about a third. Reduce the temperature and stir in the tomatoes, drained mushrooms, bay leaves, oregano, thyme and balsamic vinegar.
1. Either blitz the sun-dried tomatoes in a small blender with a little of the oil to loosen, or just finely chop before adding to the pan. Season well with salt and pepper. Cover with a lid and simmer the Bolognese sauce over a gentle heat for 1-1½ hours until it's rich and thickened, stirring occasionally. At the end of the cooking time, stir in the basil and add any extra seasoning if necessary.
2. Remove from the heat to 'settle' while you cook the spaghetti in plenty of boiling salted water (for the time stated on the packet). Drain and divide between warmed plates. Scatter a little parmesan over the spaghetti before adding a good ladleful of the Bolognese sauce, finishing with a scattering of more cheese and a twist of blackhttp://www.bbc.co.uk/food/recipes/spaghettibolognese_67868
2 tbsp olive oil or sun-dried tomato oil from the jar6 rashers of smoked streaky bacon, chopped2 large onions, chopped3 garlic cloves, crushed1kg/2¼lb lean minced beef2 large glasses of red wine2x400g cans chopped tomatoes1x290g jar antipasti marinated mushrooms, drained2 fresh or dried bay leaves
1 tsp dried oregano or a small handful of fresh leaves, chopped1 tsp dried thyme or a small handful of fresh leaves, choppedDrizzle balsamic vinegar12-14 sun-dried tomato halves, in oilSalt and freshly ground black pepperA good handful of fresh basil leaves, torn into small pieces800g-1kg/1¾-2¼lb dried spaghettiLots of freshly grated parmesan, to serve
Heat the oil in a large, heavy-based saucepan and fry the bacon until golden over a medium heat. Add the onions and garlic, frying until softened. Increase the heat and add the minced beef. Fry it until it has browned, breaking down any chunks of meat with a wooden spoon. Pour in the wine and boil until it has reduced in volume by about a third. Reduce the temperature and stir in the tomatoes, drained mushrooms, bay leaves, oregano, thyme and balsamic vinegar.
1. Either blitz the sun-dried tomatoes in a small blender with a little of the oil to loosen, or just finely chop before adding to the pan. Season well with salt and pepper. Cover with a lid and simmer the Bolognese sauce over a gentle heat for 1-1½ hours until it's rich and thickened, stirring occasionally. At the end of the cooking time, stir in the basil and add any extra seasoning if necessary.
2. Remove from the heat to 'settle' while you cook the spaghetti in plenty of boiling salted water (for the time stated on the packet). Drain and divide between warmed plates. Scatter a little parmesan over the spaghetti before adding a good ladleful of the Bolognese sauce, finishing with a scattering of more cheese and a twist of blackhttp://www.bbc.co.uk/food/recipes/spaghettibolognese_67868
2 tbsp olive oil or sun-dried tomato oil from the jar6 rashers of smoked streaky bacon, chopped2 large onions, chopped3 garlic cloves, crushed1kg/2¼lb lean minced beef2 large glasses of red wine2x400g cans chopped tomatoes1x290g jar antipasti marinated mushrooms, drained2 fresh or dried bay leaves
1 tsp dried oregano or a small handful of fresh leaves, chopped1 tsp dried thyme or a small handful of fresh leaves, choppedDrizzle balsamic vinegar12-14 sun-dried tomato halves, in oilSalt and freshly ground black pepperA good handful of fresh basil leaves, torn into small pieces800g-1kg/1¾-2¼lb dried spaghettiLots of freshly grated parmesan, to serve
We would be very irritated if there was an ingredient needed,
that wasn’t included here.
Heat the oil in a large, heavy-based saucepan and fry the bacon until golden over a medium heat. Add the onions and garlic, frying until softened. Increase the heat and add the minced beef. Fry it until it has browned, breaking down any chunks of meat with a wooden spoon. Pour in the wine and boil until it has reduced in volume by about a third. Reduce the temperature and stir in the tomatoes, drained mushrooms, bay leaves, oregano, thyme and balsamic vinegar.
1. Either blitz the sun-dried tomatoes in a small blender with a little of the oil to loosen, or just finely chop before adding to the pan. Season well with salt and pepper. Cover with a lid and simmer the Bolognese sauce over a gentle heat for 1-1½ hours until it's rich and thickened, stirring occasionally. At the end of the cooking time, stir in the basil and add any extra seasoning if necessary.
2. Remove from the heat to 'settle' while you cook the spaghetti in plenty of boiling salted water (for the time stated on the packet). Drain and divide between warmed plates. Scatter a little parmesan over the spaghetti before adding a good ladleful of the Bolognese sauce, finishing with a scattering of more cheese and a twist of blackhttp://www.bbc.co.uk/food/recipes/spaghettibolognese_67868
2 tbsp olive oil or sun-dried tomato oil from the jar6 rashers of smoked streaky bacon, chopped2 large onions, chopped3 garlic cloves, crushed1kg/2¼lb lean minced beef2 large glasses of red wine2x400g cans chopped tomatoes1x290g jar antipasti marinated mushrooms, drained2 fresh or dried bay leaves
1 tsp dried oregano or a small handful of fresh leaves, chopped1 tsp dried thyme or a small handful of fresh leaves, choppedDrizzle balsamic vinegar12-14 sun-dried tomato halves, in oilSalt and freshly ground black pepperA good handful of fresh basil leaves, torn into small pieces800g-1kg/1¾-2¼lb dried spaghettiLots of freshly grated parmesan, to serve
We would be very irritated if there was an ingredient needed,
that wasn’t included here.
The units used to describe the amount of the ingredients varies according to
the culture of the person cooking.
Heat the oil in a large, heavy-based saucepan and fry the bacon until golden over a medium heat. Add the onions and garlic, frying until softened. Increase the heat and add the minced beef. Fry it until it has browned, breaking down any chunks of meat with a wooden spoon. Pour in the wine and boil until it has reduced in volume by about a third. Reduce the temperature and stir in the tomatoes, drained mushrooms, bay leaves, oregano, thyme and balsamic vinegar.
1. Either blitz the sun-dried tomatoes in a small blender with a little of the oil to loosen, or just finely chop before adding to the pan. Season well with salt and pepper. Cover with a lid and simmer the Bolognese sauce over a gentle heat for 1-1½ hours until it's rich and thickened, stirring occasionally. At the end of the cooking time, stir in the basil and add any extra seasoning if necessary.
2. Remove from the heat to 'settle' while you cook the spaghetti in plenty of boiling salted water (for the time stated on the packet). Drain and divide between warmed plates. Scatter a little parmesan over the spaghetti before adding a good ladleful of the Bolognese sauce, finishing with a scattering of more cheese and a twist of blackhttp://www.bbc.co.uk/food/recipes/spaghettibolognese_67868
2 tbsp olive oil or sun-dried tomato oil from the jar6 rashers of smoked streaky bacon, chopped2 large onions, chopped3 garlic cloves, crushed1kg/2¼lb lean minced beef2 large glasses of red wine2x400g cans chopped tomatoes1x290g jar antipasti marinated mushrooms, drained2 fresh or dried bay leaves
1 tsp dried oregano or a small handful of fresh leaves, chopped1 tsp dried thyme or a small handful of fresh leaves, choppedDrizzle balsamic vinegar12-14 sun-dried tomato halves, in oilSalt and freshly ground black pepperA good handful of fresh basil leaves, torn into small pieces800g-1kg/1¾-2¼lb dried spaghettiLots of freshly grated parmesan, to serve
We would be very irritated if there was an ingredient needed,
that wasn’t included here.
It’s easier to follow the directions when you don’t have to list the amounts of
ingredients within the directions.
The units used to describe the amount of the ingredients varies according to
the culture of the person cooking.
int x;int y;int width;int height;
size(200, 200);
x = 150;y = 100;width = 90;height = 80;
ellipse(x, y, width, height);
int x;int y;int width;int height;
size(200, 200);
x = 150;y = 100;width = 90;height = 80;
ellipse(x, y, width, height);
ingredients or variables
int x;int y;int width;int height;
size(200, 200);
x = 150;y = 100;width = 90;height = 80;
ellipse(x, y, width, height);
ingredients or variables
directions or algorithm
int x;int y;int width;int height;
size(200, 200);
x = 150;y = 100;width = 90;height = 80;
ellipse(x, y, width, height);
ingredients or variables
directions or algorithm
data type
int x;int y;int width;int height;
size(200, 200);
x = 150;y = 100;width = 90;height = 80;
ellipse(x, y, width, height);
ingredients or variables
directions or algorithm
data type variable name
Cooking uses units of weight or volume, computers use bytes.
Cooking uses units of weight or volume, computers use bytes.
A bit is a 0 or a 1.
0 1
Cooking uses units of weight or volume, computers use bytes.
A bit is a 0 or a 1.
0 1
A byte is eight 0s or 1s.
Cooking uses units of weight or volume, computers use bytes.
A bit is a 0 or a 1.
0 1
A byte is eight 0s or 1s.
0s and 1s are used to represent things like numbers.
It’s up to the programming language (and hardware) to determine what kinds of things 0s and 1s can represent.
PRIMITIVE DATA TYPES (FOR BOTH PROCESSING AND ARDUINO UNLESS NOTED OTHERWISE)
In Arduino, byte is an unsigned number (no negative numbers)can be 0 to 255, 8-bits (2^8)B is put in front to indicate numbers are binarybyte b = B10010;
boolean is true or false boolean running = false;
In Processing, byte is a numbercan be 127 to -128, 8-bits (2^8)byte b = -125;
Arduino Only
Processing Only
PRIMITIVE DATA TYPES (FOR BOTH PROCESSING AND ARDUINO UNLESS NOTED OTHERWISE)
int is an integer ranging from -32,768 to 32,767int i = 23456;
long is a large integer ranging from -2,147,483,648 to 2,147,483,647long g = 1239382345L;
PRIMITIVE DATA TYPES (FOR BOTH PROCESSING AND ARDUINO UNLESS NOTED OTHERWISE)
float is a number with a decimal point ranging from -3.40282347E+38 to 3.40282347E+38float f = -234.56;
char is a single letter (or symbol like “.”)char myChar = 'A';
unsigned char is a number 0 to 255, it is better to use the byte data type insteadunsigned char myChar = 240;
PRIMITIVE DATA TYPES (FOR BOTH PROCESSING AND ARDUINO UNLESS NOTED OTHERWISE)
unsigned int is a number without a decimal point ranging from 0 to 65,535 (2^16) - 1)unsigned int ui = 55424;
unsigned long is a large integer ranging from 0 to 4,294,967,295 (2^32 - 1), so no negative numberslong g = 4239382345ul;
Arduino Only
word is the same as unsigned int is a number without a decimal point ranging from 0 to 65,535 (2^16) - 1)word w = 55424;
RULES FOR NAMING VARIABLES
Don’t start with a character besides a letter
RULES FOR NAMING VARIABLES$3%^
Don’t start with a character besides a letter
RULES FOR NAMING VARIABLES$3%^
abc123 Only use numbers and letters and “_”
Don’t start with a character besides a letter
RULES FOR NAMING VARIABLES$3%^
abc123 Only use numbers and letters and “_”
if, for Can’t use words that hold meaning to the compiler
Don’t start with a character besides a letter
RULES FOR NAMING VARIABLES$3%^
abc123 Only use numbers and letters and “_”
if, for Can’t use words that hold meaning to the compiler
rectHeight Be descriptive
Don’t start with a character besides a letter
RULES FOR NAMING VARIABLES$3%^
abc123 Only use numbers and letters and “_”
if, for Can’t use words that hold meaning to the compiler
a A Case is important
rectHeight Be descriptive
EXERCISE
In Processing, create a sketch which draws a green ellipse.
Use the functions listed below. Look up these functions in the Processing documentation for more guidance.
size(width, height)fill(value1, value2, value3)ellipse(x, y, width, height)
DECLARATION VS INITIALISATIONAs in a recipe, ingredients need to be listed at the top so you know what to buy.
In code, it’s so the compiler knows how much memory to reserve. This is called declaring.
DECLARATION VS INITIALISATIONAs in a recipe, ingredients need to be listed at the top so you know what to buy.
In code, it’s so the compiler knows how much memory to reserve. This is called declaring.
int myInt;
Reserve space for an int
DECLARATION VS INITIALISATIONAs in a recipe, ingredients need to be listed at the top so you know what to buy.
In code, it’s so the compiler knows how much memory to reserve. This is called declaring.
We don’t have to know what value will be stored in myInt right away.
We can choose a value later. This is called initialising.
int myInt;
Reserve space for an int
DECLARATION VS INITIALISATIONAs in a recipe, ingredients need to be listed at the top so you know what to buy.
In code, it’s so the compiler knows how much memory to reserve. This is called declaring.
We don’t have to know what value will be stored in myInt right away.
We can choose a value later. This is called initialising.
int myInt;
Reserve space for an int
myInt = 15;
Store the value 15 in the space reserved for myInt
15
Need to declare before or at the same time as initialisation.
Need to declare before or at the same time as initialisation.
myInt = 3;int myInt;
Need to declare before or at the same time as initialisation.
myInt = 3;int myInt;
int myInt; myInt = 3;
Need to declare before or at the same time as initialisation.
myInt = 3;int myInt;
int myInt; myInt = 3;
Can’t use a variable before it is initialised.
Need to declare before or at the same time as initialisation.
myInt = 3;int myInt;
int myInt; myInt = 3;
int myInt;myInt = myInt + 7;
Can’t use a variable before it is initialised.
Need to declare before or at the same time as initialisation.
myInt = 3;int myInt;
int myInt; myInt = 3;
int myInt = 3;myInt = myInt + 7;
int myInt;myInt = myInt + 7;
Can’t use a variable before it is initialised.
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
floatintchar
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
floatintchar
to create a float type
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
floatintchar
to create a float type
to create an int type
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
floatintchar
to create a float type
to create an int type
to create a char type
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
2. Decide on a name for your variable. Remember the rules.
floatintchar
to create a float type
to create an int type
to create a char type
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
2. Decide on a name for your variable. Remember the rules.
floatintchar
to create a float type
to create an int type
to create a char type
float scale;int redValue;char finalMark;
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
2. Decide on a name for your variable. Remember the rules.
floatintchar
to create a float type
to create an int type
to create a char type
float scale;int redValue;char finalMark;
you get to choose the name
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
2. Decide on a name for your variable. Remember the rules.
3. If you already know what the value of that variable is, then go ahead and set the value.
floatintchar
to create a float type
to create an int type
to create a char type
float scale;int redValue;char finalMark;
you get to choose the name
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
2. Decide on a name for your variable. Remember the rules.
3. If you already know what the value of that variable is, then go ahead and set the value.
floatintchar
to create a float type
to create an int type
to create a char type
float scale;int redValue;char finalMark;
float scale = 0.5;int redValue = 199;char finalMark = ‘B’;
you get to choose the name
TO CREATE A VARIABLE1. Decide what the data type should be. Usually the main
decisions are between int, float and char.
2. Decide on a name for your variable. Remember the rules.
3. If you already know what the value of that variable is, then go ahead and set the value.
floatintchar
to create a float type
to create an int type
to create a char type
float scale;int redValue;char finalMark;
float scale = 0.5;int redValue = 199;char finalMark = ‘B’;
if you don’t know the value yet, stop at step 2. but remember to end
each line with a ;
you get to choose the name
EXERCISE
In Processing, return to your sketch which draws a green ellipse.
Replace the numbers you’ve used as arguments in the fill( ) and ellipse( ) functions with variables.
What kind of datatypes do you need to use? What are good descriptive names for those variables?