Top Banner
Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld
21

Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Dec 21, 2015

Download

Documents

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Introduction to Computers and Programming

Class 9

Introduction to C

Professor Avi Rosenfeld

Page 2: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Loop Structures

• Event Controlled– While Loops– Do While Loops

• Counter Controlled– Counter while loops– For loops (next time)

Page 3: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

3

Parts of a while Loop

• Every while loop will always contain three main elements:– Priming: initialize your variables– Testing: test against some known condition– Updating: update the variable that is tested

Page 4: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

4

Infinite Loop• Infinite Loop: A loop that never ends

– Generally, you want to avoid these!– There are special cases, however, when you do

want to create infinite loops on purpose

• Common Exam Questions:– Given a piece of code, identify the bug in the

code– You may need to identify infinite loops

Page 5: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

5

Infinite Loop Example #1

#include <stdio.h> main (){int index =1;

  while (index <= 10) {

printf ("Index: %d\n", index);}

} Here, I have deleted part 3: the index = index + 1 statement.

Index: 1

Index: 1

Index: 1

Index: 1

Index: 1

… [forever]

Page 6: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

#include <stdio.h>void main(){

int number,EvenNumbers = 0, OddNumbers = 0;printf("\nEnter a number between 0 & 9 inclusive (999 to end program): ");scanf("%d", &number); /* why is this scanf needed? */while (number != 999){

switch (number){case 0: case 2: case 4: case 6: case 8:

EvenNumbers++; /*what is the ++ ? */printf("You entered a valid EVEN #");break;

case 1: case 3: case 5: case 7: case 9:OddNumbers++;printf("You entered a valid ODD #");break;

default:printf("\n*** You did not enter a # between 0 & 9");break;

} /* end of switch */printf("\nEnter a number between 0 & 9 inclusive (999 to end program): ");scanf("%d", &number);

} /* end of while loop */printf("\n\nYou entered a total of %d EVEN #s and %d ODD #s\n", EvenNumbers, OddNumbers);

}

Page 7: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

#include <stdio.h>void main(){

int number,EvenNumbers = 0, OddNumbers = 0;do{printf("\nEnter a number between 0 & 9 inclusive (999 to end program): ");scanf("%d", &number);switch (number){case 0: case 2: case 4: case 6: case 8:EvenNumbers++;printf("You entered a valid EVEN #");break;case 1: case 3: case 5: case 7: case 9:OddNumbers++;printf("You entered a valid ODD #");break;default:printf("\n*** You did not enter a # between 0 & 9");break;} /* end of switch */}while (number != 999); /* end of while loop */printf("\n\nYou entered a total of %d EVEN #s and %d ODD #s\n", EvenNumbers, OddNumbers);

}

Page 8: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Shortcuts

• C provides abbreviations for some common operations

• Assignment operators

• Increment/Decrement operators

Page 9: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Assignment Operators

• Abbreviations are provided for the basic binary operations– Addition– Subtraction– Multiplication– Division– Modulus (%)

Page 10: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Shortcut Heaven (or Hell?)#include <stdio.h>void main(){

int x = 2, y = 3;x *= 3; /* same as x = x * 3; x is 6 */printf("X is now %d\n", x);y /= 2; /* same as y = y / 2; y is 1 */printf("Y is now %d\n", y);y += 2; /* same as y = y + 2; y is 3 */printf("Y is now %d\n", y);x -= 2; /* same as x = x - 2; x is 4 */printf("X is now %d\n", x);x %= y; /* same as x = x % y; x is 1 */printf("X is now %d\n", x);

}

Page 11: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

SamplesAssume variable int c = 10

Operator

Initial Value Sample Meaning Assigns

+= 10 c += 7; c = c + 7; 17 to c

-= 10 c -= 3; c = c – 3; 7 to c

*= 10 c *= 6; c = c * 6; 60 to c

/= 10 c /= 5; c = c / 5; 2 to c

%= 10 c %= 6; c = c % 7; 3 to c

Page 12: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Increment and Decrement Operators

• C provides unary increment operators ++ and decrement operators –- (no spaces between them)

• Increment operators add 1

• Decrement operators subtract 1

• Not for other assignment operators (*, /, %)

• Guess where C++ comes from???

Page 13: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Postincrement

• The ++ operator is after the variable

• Causes the initial value of the variable to be used in the expression where it appears AND THEN adds the 1 to the variable

• For example,int iCount = 5;printf( “%d\n”, iCount++ );

Would print 5… but iCount is worth 6 after the statement

Page 14: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Preincrement

• The ++ operator is before the variable

• Adds 1 to the initial value of the variable BEFORE it is used in the expression where it appears

• For example,int iCount = 5;printf( “%d\n”, ++iCount);

Would print 6… and iCount is worth 6 after the statement

Page 15: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

More examples ++postincrement vs. preincrementint iTotal = 0;int iCount = 5;

iTotal = iCount++ * 2;printf( “%d\n”, iTotal);printf( “%d\n”, iCount);

Would print 10 for iTotal and then 6 for iCount

iTotal = ++iCount * 2;printf( “%d\n”, iTotal);printf( “%d\n”, iCount);

Would print 12 for iTotal and then 6 for iCount

Page 16: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Decrement Operator --

• Similar to increment in syntax/operation• Instead of writing iCount = iCount - 1; or

iCount -= 1;

• You can write

iCount-- ; or --iCount ;• Subtle difference between the two new options

call postdecrement and predecrement

Page 17: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Postdecrement

• The -- operator is after the variable• Causes the initial value of the variable to be used

in the expression where it appears AND THEN subtracts the 1 from the variable

• For example,int iCount = 5;printf( “%d\n”, iCount-- );

Would print 5… but iCount is worth 4 after the statement

Page 18: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Predecrement

• The -- operator is before the variable• Subtracts 1 from the initial value of the variable

BEFORE it is used in the expression where it appears

• For example,int iCount = 5;printf( “%d\n”, --iCount);

Would print 4… and iCount is worth 4 after the statement

Page 19: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

For our last trick…

#include <stdio.h>

void main()

{

int x = 2, y = 3;

printf("What is this number %d\n", x++ + ++y);

printf("But x is still %d and y is %d\n", x, y);

printf(“What # %d ???\n", y / x-- * ++x % y);

/* 0 */

printf("But x is still %d and y is %d\n", x, y);

}

Page 20: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Summary TableOperator Sample Explanation

++ c++ Use value of c in expression THEN add 1 to c

++ ++c Add 1 to c THEN use the new value of c in expression

-- c-- Use value of c in expression THEN subtract 1 from c

-- --c Subtract 1 from c THEN use new value of c in

expression

Page 21: Introduction to Computers and Programming Class 9 Introduction to C Professor Avi Rosenfeld.

Introducing for loops

#include <stdio.h>

void main()

{

int counter = 100;

while (counter--> 0)

printf("The counter is at %d ", counter);

}