week 3 friday n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
CS222 PowerPoint Presentation
Download Presentation
CS222

Loading in 2 Seconds...

play fullscreen
1 / 36

CS222 - PowerPoint PPT Presentation


  • 117 Views
  • Uploaded on

Week 3 - Friday. CS222. Last time. What did we talk about last time? Bitwise practice Precedence. Questions?. Project 1. Quiz. Quotes. Unix is simple. It just takes a genius to understand its simplicity. Dennis Ritchie. Control flow.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'CS222' - becka


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
last time
Last time
  • What did we talk about last time?
  • Bitwise practice
  • Precedence
quotes
Quotes

Unix is simple. It just takes a genius to understand its simplicity.

Dennis Ritchie

control flow
Control flow
  • Sequences of statements surrounded by braces are treated like a single statement with no value
    • Braces can be thrown in whenever you want
    • We used to say that "braces were optional" for one-line blocks, but this is the more accurate way to look at it
  • An expression can always become a statement

inta = 150;

a; //legal in C, illegal in Java

if statements
if statements
  • Like Java, the body of an if statement will only execute if the condition is true
    • The condition is evaluated to an int
    • True means not zero
  • An else is used to mark code executed if the condition is false

Sometimes this is natural and clear; at other times it can be cryptic.

anatomy of an if
Anatomy of an if

Any expression that has a value

The if part

if( condition )

statement

Any single statement ending in a semicolon or a block in braces

anatomy of an if else
Anatomy of an if-else

if( condition )

statement1

else

statement2

Two different outcomes

nesting
Nesting
  • We can nest if statements inside of other if statements, arbitrarily deep
  • Just like Java, there is no such thing as an elseif statement
  • But, we can pretend there is because the entire if statement and the statement beneath it (and optionally a trailing else) is treated like a single statement
switch statements
switch statements
  • switch statements allow us to choose between many listed possibilities
  • Execution will jump to the matching label or to default (if present) if none match
    • Labels must be constant (either literal values or #define constants)
  • Execution will continue to fall through the labels until it reaches the end of the switch or hits a break
    • Don't leave out break statements unless you really mean to!
anatomy of a switch statement
Anatomy of a switch statement

switch( data )

{

case constant1:

statements1

case constant2:

statements2

case constantn:

statementsn

default:

default statements

}

duff s device
Duff's device
  • C has relatively relaxed syntax rules
  • What the hell is that?!

int n = (count + 7) / 8;

switch(count % 8)

{

case0: do { *to++ = *from++;

case7: *to++ = *from++;

case6: *to++ = *from++;

case5: *to++ = *from++;

case4: *to++ = *from++;

case3: *to++ = *from++;

case2: *to++ = *from++;

case1: *to++ = *from++;

} while(--n > 0);

}

three loops
Three loops
  • C has three loops, just like Java
    • while loop
      • You don't know how many times you want to run
    • for loop
      • You know how many times you want to run
    • do-while loop
      • You want to run at least once
  • Like if statements, the condition for them will be evaluated to an int, which is true as long as it is non-zero
    • All loops execute as long as the condition is true
while loop
while loop
  • A while loop is the keyword while followed by a pair of parentheses
  • Within the parentheses is a condition
  • If the condition is true, the body of the loop will be executed
  • At the end of the loop, the condition is checked again
anatomy of a while loop
Anatomy of a while loop

while( condition )

statement

for loop
for loop
  • A for loop consists of three parts:
    • Initialization
    • Condition
    • Increment
  • The initialization is run when the loop is reached
  • If the condition is true, the body of the loop will be executed
  • At the end of the loop, the increment will be executed and the condition checked again
    • If the condition is empty (nothing in it), it is considered true
anatomy of a for loop
Anatomy of a for loop

Starting Point

Way to Progress

for ( initialization ; condition ; increment )

statement

Ending Point

the comma operator
The comma operator
  • C has a comma operator
  • Expressions can be written and separated by commas
  • Each will be evaluated, and the last one will give the value for the entire expression

int a = 10;

int b = 5;

intc = a, b, ++a, a + b; //16

adding the comma to for
Adding the comma to for
  • Sometimes you want to do multiple things on each iteration
  • Consider this code to reverse an array
  • You can even use a comma in the condition part, but it doesn't usually make sense

intstart;

intend;

int temp;

for( start = 0, end = length - 1; start < end; start++, end-- )

{

temp = array[start];

array[start] = array[end];

array[end] = temp;

}

do while loops
do-while loops
  • As in Java, there are do-while loops which are useful only occasionally
  • They work just like while loops except that that they are guaranteed to execute at least once
  • Unlike a while loop, the condition isn’t checked the first time you go into the loop
  • Sometimes this is useful for getting input from the user
  • Don't forget the semicolon at the end!
anatomy of a do while loop
Anatomy of a do-while loop

do

statement

while( condition );

infinite loops
Infinite loops
  • Loops can go on forever if you aren’t careful

int n = 40;

inti = 1;

while( i <= 40 )

{

printf("%d", i);

//supposed to print all the numbers

//less than 40, but i never increases

}

infinite for loops
Infinite for loops
  • Infinite for loops are unusual, but possible:
  • This situation is more likely:

for( ; ; )

printf("Hey!");

inti;

for(i = 0; i < 10; i++ )

{

  • printf("%d", i);
  • //lots of other code

i--; //whoops, maybe changed from while?

}

almost infinite loops
(Almost) infinite loops
  • Overflow and underflow will make some badly written loops eventually terminate

inti;

for( i = 1; i <= 40; i-- )

  • //whoops, should have been i++
  • printf("%d", i);
fencepost errors
Fencepost errors
  • Being off by one is a very common loop error

inti;

for( i = 1; i < 40; i++ )

//runs 39 times

  • printf("%d", i);
skipping loops entirely
Skipping loops entirely
  • If the condition isn’t true to begin with, the loop will just be skipped
  • inti;

for( i = 1; i >= 40; i++ )

//oops, should be <=

  • printf("%d", i);
misplaced semicolon
Misplaced semicolon
  • A misplaced semicolon can cause an empty loop body to be executed
  • Everything looks good, loop even terminates
  • But, only one number will be printed: 41
  • Misplaced semicolon usually makes a while loop infinite

inti;

for( i = 1; i <= 40; i++ );

//semicolon is wrong

{

  • printf("%d", i);

}

next time
Next time…
  • Systems programming concepts
  • Functions and prototypes
reminders
Reminders
  • Read LPI chapter 3 and K&R chapter 4
  • Project 1 due tonight by midnight!