Intro toprogramming part2

41
Introduction to Programming Part Deux 1

Transcript of Intro toprogramming part2

Page 1: Intro toprogramming part2

Introduction to Programming

Part Deux

1

Page 2: Intro toprogramming part2

“My Bads” from last week

• If I wasn’t clear, this is the Intro. – Not intended to be specific to PHP– Conceptual, so have a base for PHP, JS, MySQL

• Pseudo code, (python), and PHP– Oh, my!

• Using a concept before defining it– Casting: “many helper functions for casting”– Function: A named group or set of functions that perform

a specific task. • Built-in functions: print, echo, round(), floor(), etc.• User defined functions• Functions can take arguments and return values

2

Page 3: Intro toprogramming part2

10 second review

• Technology Stack• Servers• Our test jig• Programming cycle• Variables• Variable assignment• Variable manipulation• Basic Math• Data type conversion

3

Page 4: Intro toprogramming part2

Homework review

• Past Homework: Limited Participation, Late Submissions, Joe Away…

• http://jamesmarcus.net/bwa/introprog/exercise1.php– Note the two approaches to printing variables and

formatting

• http://jamesmarcus.net/bwa/introprog/exercise2.php– Only change the value of one variable and then it’s

basically cut and paste

4

Page 5: Intro toprogramming part2

Decisions, decisions

• In order to build complex programs, we need to be able to control what the program does.

• Program Control– Testing and branching– Execution blocks– More than one condition

5

Page 6: Intro toprogramming part2

Testing, testing• Programs need to be able to do different things based on input or the

value of certain variables during execution. – If Tim got the right answer, (then) add 10 points to his score. – If Jane hit the alien, (then) make an explosion sound. – If the file isn’t there, (then) display an error message.

• To make decisions, programs check (do a test) to see if a certain condition is true or not. – Above, the test is “got the right answer” and is either True or False

6

Page 7: Intro toprogramming part2

Testing, testing

• A programming language can test only a finite number of basic things:– Are two things equal? – Is one thing less than another? – Is one thing greater than another?

• Doing tests and making decisions based on the results is called branching. – The program decides which way to go, or which

branch to follow, based on the result of the test.

7

Page 8: Intro toprogramming part2

Execution Blocks

• Special “comparison” operators are used for testing: ==, !=, <, >, <=, >=

• Some languages use { } to create execution blocks8<6branch1.php>

Page 9: Intro toprogramming part2

Bad bug story

{ …$someVariable == $thisVariable + $thatVariable;

print $someVariable;

} 9

6badbug1.php

<6badbug1.php>

Page 10: Intro toprogramming part2

What happens if the test result is false?

10

Page 11: Intro toprogramming part2

• If the first test comes out false, we can test something else. Most languages have an “else if” keyword. (PHP: elseif; C: elsif; Python: elif)

if ($answer >= 10) {print “You got at least 10!”;

} elseif ($answer >= 5) {print “You got at least 5!”;

} elseif ($answer >= 3) {print “Your got at least 3!”;

}

11

<6branch2.php>

Page 12: Intro toprogramming part2

• If the other tests come out false, we can do something else. Most/all languages have an “else” keyword.

if ($answer >= 10) {print “You got at least 10!”;

} elseif (answer >= 5) {print “You got at least 5!”;

} elseif (answer >= 3) {print “You got at least 3!”;

} else {print “You got less than 3.”;

}

12

<6branch3.php>

Page 13: Intro toprogramming part2

Move on

• If there is no other test or default block after the if, the program will move on. (no else)

13

Page 14: Intro toprogramming part2

Testing for more than one condition

• Scenario: We are coding a game that must check that the user is at least 8 years old and at least in the third grade

• One solution

if ($age >= 8) {if ($grade >= 3) {

print “You can play this game.”;}

} else {print “Sorry, you can’t play the game.”;

}

14

<7compound1.php>

BUT this has a bug!

Page 15: Intro toprogramming part2

Testing for more than one condition

• A better way … Compound testing

if ($age >= 8 && $grade >= 3) {print “You can play this game.”;

} else {print “Sorry, you can’t play this game.”;

}

• Comparison operators are also called relational operators. A comparison is also called a conditional test or logical test.

• In programming, logical test refers to something where the answer is either true or false.

15

Page 16: Intro toprogramming part2

Testing for more than one condition

• Compound tests are created with logical operators– “and” [PHP: &&]– “or” [PHP:||]– “not” [PHP: !] 16

Page 17: Intro toprogramming part2

Using “or”

if ($color == ”red” || $color == ”blue” || $color ==   ”green”) {

print ”You are allowed to play this game.”;} else {

print "Sorry, you can't play the game.”;}

17

<7compound3.php>

<7compound4.php>

A better way!

Page 18: Intro toprogramming part2

Using “not”

• You can also flip around a comparison to mean the opposite, using not.

if ( !($age < 8) ) {print ”You are allowed to play this game.”;

} else {print ”Sorry, you can't play the game.”;

}

18

Page 19: Intro toprogramming part2

Quiz

• What is the output of the following:$my_number = 7;if ($my_number < 20) {

print ‘Under 20’;

} else {print ‘20 or over’;

}

• What kind of if statement would you use to check if a number was greater than 30 but less than or equal to 40?

19

Page 20: Intro toprogramming part2

Here we go loop de loop, here we go loop de li

• Doing the same thing over and over again, could lead to …– repetitive stress injury, insanity… for humans, – but is what the computer does best

• Programs often repeat the same steps over and over again– looping

• There are two main kinds of loops: – counting loops – repeat a specified number of times– conditional loops - repeat until a some condition is true

20

Page 21: Intro toprogramming part2

Counting loops

• This is often called a “for” loop and uses a for keyword

for ($i = 1; $i < 5; $i = $i + 1) {print “Loop $i”;print “<br>”;

}

• Each time through the loop is called an iteration• If you are not careful, runaway, infinite, or endless

loops will occur!

21

<8loop1.php>

Page 22: Intro toprogramming part2

A matter of style – loop variable names

• A loop variable is no different from any other variable.

• Recall, we want contextual meaning for variables. – What to call loop variables?

• Convention: For loop variables, the names $i, $j, $k, $l, $m, and $n are used.

22

Page 23: Intro toprogramming part2

Conditional loops

• The for loop is great • if you know ahead of time how many times you

want the loop to run. • But sometimes you want a loop to run until

something happens– while loops let you do that

• Figuring out when something happens requires testing for a condition – The while loop keeps asking “Am I done yet? … Am I

done yet? … Am I done yet? …” until its done!

23

Page 24: Intro toprogramming part2

While loop

$i = 1;while ($i <= 10) {

print “Number $i <br>”;$i = $i + 1;

}•Gotchas:–No loop variable initialization–Bad test–Missing increment or decrement

24

<8loop3.php>

Page 25: Intro toprogramming part2

Bailing out of a loopbreak and continue

• There are times when we must get out of a loop before the for loop is finished counting or before a while loop has found its end condition

• Jumping ahead – continue– If you want to stop executing the current loop

iteration and skip to the next iteration, use continue

• Bailing out – break– If we want to jump out of a loop completely, never

finish counting, give up on an end condition, use break

25

Page 26: Intro toprogramming part2

Continue and break

for ($i = 1; $i < 10; $i = $i + 1) {if ($i == 3 || ($i % 2 == 0)) continue;

if ($i == 7) break;

print $i;

print “<br>”;

}

26

<8loop4.php>

Page 27: Intro toprogramming part2

Quiz

• How many times would the following loop run?for ($i=1; $i < 6; $i = $i+1) {

print ‘Hello James’;

}

• What keyword do you use to stop the current iteration of a loop and jump ahead to the next iteration?

27

Page 28: Intro toprogramming part2

Comments

• Use them!• Comments should be treated as part of the

program’s documentation

28

Page 29: Intro toprogramming part2

Comments

• Single line comments// This is comment line in a PHP program.print “This is not a comment line.”;• Multiline comments/* This is a multiline comment.

Look what it can be used for (commenting out)*/

/* $complexStuff = $moreComplexStuff * 2;$print $complexStuff; */$knowThisWorks = 2;print $knowThisWorks;

29

Page 30: Intro toprogramming part2

Collecting things together - Lists

• We’ve seen that the computer can store things in its memory and retrieve them, using names. – So far, we have stored strings and numbers (both integers

and floats).• Sometimes it’s useful to store a bunch of things

together in a kind of “group” or “collection.” – Work with or perform operations on the whole collection

at once. • One kind of collection is a list. – Lists are used often. In fact, information passed to PHP

from a web page and MySQL query responses are returned as a list or a list of lists…

30

Page 31: Intro toprogramming part2

What is a list?

• My family list: Lori, James, Olivia, and Sami• In PHP, this list is created as

$family = array(‘Lori’, ‘James’, ‘Olivia’, ‘Sami’);• Most programming languages have built in support for

arrays–An array variable is a normal variable, but works like a container – you can put other variables in it–Each variable inside an array is called an element. Each element has a key and a value, which itself can be a variable–$family_member = $family[ $index ]–There are many predefined array functions

$size = count($family);

31<9lists1.php>

Page 32: Intro toprogramming part2

Looping through a list

print “This is my family:<br>”;

foreach ($family as $var => $val) {print “$var = $val<br>”;

}

32

Page 33: Intro toprogramming part2

Power user: List processing

$myfamily = array(“Mom”=>”Lori”, “Dad”=>”James”, “Kid1”=>”Olivia”, “Kid2”=>”Sami”);

foreach ($myfamily as $var => $val) {print “$var = $val<br>”;

}

33

Page 34: Intro toprogramming part2

Functions, Objects, & Modules, oh my

• Over time, programs get bigger and more complicated. • We need some organization. • Best practice is to keep “like” pieces together in

relative small groups• There are three main ways to break programs into

smaller parts.– Functions are like building blocks of code that you can use

over and over again. – Objects are a way of describing pieces of your program as

self-contained units. – Modules are just separate files that contain parts of your

program.

34

Page 35: Intro toprogramming part2

Functions – software Lego

• In the simplest of terms, a function is just a chunk of code that does something. – A small piece that you can use to build a bigger program.

• There are built in functions – count(), print(), echo() – or you create or define a custom function.

• Functions can be called with variables, called passing arguments or parameters, and can return information back to the caller, called return values or results

35

Page 36: Intro toprogramming part2

Objects

• Good programming is highlighted by good information organization and collecting things together.

• Lists are a way to collect variables (data) together.• Functions are a way to collect some code together into

a unit that you can use over and over again. • Objects are a way to collect functions and data

together.– In programming terms, we say a programming language is

object oriented. It’s possible (in fact, quite easy) to create and use objects, but you don’t have to.

36

Page 37: Intro toprogramming part2

Modules

• A module is a piece or part of something. – A program is modular if it comes in pieces or you can

easily separate it into pieces.

• Each module, or piece, is a separate file on your hard drive. – You can take a big program and split it up into more

than one module, or file. – Or you can go the other way—start with one small

module and keep adding pieces to make a big program.

37

Page 38: Intro toprogramming part2

And in conclusion

38

Page 39: Intro toprogramming part2

• Exercises

39

Page 40: Intro toprogramming part2

Exercise 1

• A store is having a sale. They are giving 10% off purchases or $10 or lower and 20% off purchases of greater that $10. Write a short program that displays the discount (10% or 20%) and the final price.– Use a variable for the item’s cost, run as many

cases necessary to test the program.

40

Page 41: Intro toprogramming part2

Exercise 2

• Write a short program to print a multiplication or times table. Your program should output something like:– Here is the 5’s table:– 5 x 1 = 5– 5 x 2 = 10– …– 5 x 10 = 50

41