/
http://www.comp.nus.edu.sg/~cs1010/ http://www.comp.nus.edu.sg/~cs1010/

http://www.comp.nus.edu.sg/~cs1010/ - PowerPoint Presentation

alida-meadow
alida-meadow . @alida-meadow
Follow
410 views
Uploaded On 2015-12-06

http://www.comp.nus.edu.sg/~cs1010/ - PPT Presentation

WEEK 4 Class Activities Lecturers slides Week 4 Repetition Statements Tracing while Loop Tracing for Loop Warmup List a Range of Integers Exercise 1 Sum of Multiples of 3 ID: 216177

sum int nus week4 int sum week4 nus cs1010 printf semester ay2014 integers list loop print tracing integer upper

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "http://www.comp.nus.edu.sg/~cs1010/" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

http://www.comp.nus.edu.sg/~cs1010/

WEEK 4

Class Activities

Lecturer’s slidesSlide2

Week 4: Repetition Statements

Tracing

while Loop

Tracing for LoopWarm-up: List a Range of

IntegersExercise #1: Sum of Multiples of 3

Exercise #2: Asterisks

Tracing

Nested LoopExercise #3: Prime NumberTesting and Debugging (running theme)

CS1010 (AY2014/5 Semester 1)

Week4 - 2

© NUSSlide3

Tracing while

Loop (1/4)CS1010 (AY2014/5 Semester 1)

Week4 -

3© NUS

Trace the following codes manually and write out their outputs

int

a

=

1

;

while

(a*a <

100

) {

printf

(

"%d ", a); a *= 2;}printf("\n");

(a)

int

b = 0, c = 9;while (b < c) { printf("b=%d, c=%d\n", b, c); b++; c--;}printf("outside: b=%d, c=%d\n", b, c);

(b)

1 2 4 8

b=0,

c=9

b=1,

c=8

b=2,

c=7

b=3, c=6

b=4, c=5

outside:b

=5, c=4Slide4

Tracing while

Loop (2/4)CS1010 (AY2014/5 Semester 1)

Week4 -

4© NUS

Example: Given a positive integer

n

, print out its digits from least significant to most

significant.

Sample run:

Enter a positive integer:

28943

3

4

9

8

2Slide5

Tracing while

Loop (3/4)CS1010 (AY2014/5 Semester 1)

Week4 -

5© NUS

Example: Given a positive integer

n

, print out its digits from least significant to most

significant.

//

Precond

: n > 0

void

print_digits

(

int

n

) { int digit; while (n > 0) { digit = n%10; printf

("

%d\n

", digit); n /= 10; }}Week4_PrintDigits.cSlide6

Tracing while

Loop (4/4)

CS1010 (AY2014/5 Semester 1)Week4 -

6© NUS

//

Precond

: n > 0

void

print_digits(

int n

) {

int

digit;

while

(n >

0) { digit = n%10; printf("%d\n", digit); n /= 10; }}Week4_PrintDigits.cn initially28943

n @ point

28943

28942892820digit @ point***34982What are the values of n and digit after exiting the loop?Slide7

Tracing for

LoopCS1010 (AY2014/5 Semester 1)

Week4 -

7© NUS

int

i, sum

=

0;

for (i=

0; i <=

10

; i+=

2

)

{

sum += i;

}printf("sum = %d\n", sum);(a)int i, sum = 0;for (i=1; sum < 20; i*=2) {

sum += i;

printf(

"i=%d, sum=%d\n", i, sum);}printf("Final i=%d\n", i); printf("Final sum=%d\n", sum); (b)sum = 30i=1, sum=1i=2, sum=3

i=4, sum=7

i=8, sum=15i=16, sum=31F

inal i=32

Final sum=31

Trace the following codes manually and write out their outputsSlide8

Warm-up: List a Range of Integers (1/3)

CS1010 (AY2014/5 Semester 1)

Week4 - 8

© NUS

Ask the user for 2 integers:

a

(the lower limit), and

b

(the upper limit), and print the list of integers from

a

to

b

.

Write a function

list_integers(int lower, int upper)

Main function given:

#

include <stdio.h>void list_integers(int, int);int main(void) { int a, b;

printf(

"Enter 2 integers a and b (a<=b): "

); scanf("%d %d", &a, &b); list_integers(a, b); return 0;}Slide9

Warm-up: List a Range of Integers (2/3)

CS1010 (AY2014/5 Semester 1)

Week4 - 9

© NUS

What should be the pre-condition of

list_integer()

?

// List integers in the range [lower, upper]

// Precond:

void

list_integers(

int

lower,

int

upper) {

...

}lower <= upper

Use a

for

loop to implement the function int num;for (num=lower; num<=upper; num++) { printf("%d ", num);}printf("\n

");Slide10

Warm-up: List a Range of Integers (3/3)

CS1010 (AY2014/5 Semester 1)

Week4 - 10

© NUS

Now, use a

while

loop to implement the function, without using any local variables

// List integers in the range [lower, upper]

// Precond:

void

list_integers(

int

lower,

int

upper) {

...

}lower <= upper

while

(lower <= upper) {

printf("%d ", lower); lower++;}printf("\n");Slide11

Exercise #1: Sum of Multiples of 3 (1/2)

CS1010 (AY2014/5 Semester 1)

Week4 - 11

© NUS

Modify the program

Unit6_OddIntegers_v1.c

to read a positive integer

n

and then compute the sum of all integers which are multiples of 3 between 1 and

n

inclusive using a

for

loop. Write a function called

sum_multiples_of_3(int)

.

This problem can be solved with a formula, but we will use the

for

loop just for exercise.Call this program SumMultiples3.cSample run:Enter a positive integer: 50Sum = 408Slide12

Exercise #1: Sum of Multiples of 3 (2/2)

CS1010 (AY2014/5 Semester 1)

Week4 - 12

© NUS

How about using a

while

loop instead?

Pseudo-code using a

while

loop:

precondition: n

> 0

sum

0

i 

n

while (i > 0) if i is a multiple of 3 sum  sum + i i  i - 1 return sumSlide13

Exercise #2: Asterisks (1/2)

CS1010 (AY2014/5 Semester 1)

Week4 - 13

© NUS

Write a program

Asterisks.c

to read an integer

n

and print a certain number of asterisks on a single line. Write a function

print_asterisks(int)

.

If

n

is non-positive, then no asterisk should be

printed.

Sample runs:

Enter n: 3*****Done!Enter n: 6***********Done!Enter n: 10*******************Done!Enter n: -2Done!

Think! What is the relationship between n

and the number of *?Slide14

Exercise #2: Asterisks (2/2)

CS1010 (AY2014/5 Semester 1)

Week4 - 14

© NUS

Write a program

Asterisks.c

to read an integer

n

and print a certain number of asterisks on a single line. Write a function

print_asterisks(int)

.

Pseudo-code:

read input n;

if n

is non-positive

print “Done!” and end program;

m

compute the number of asterisks given nprint_asterisks(m)end program;Slide15

Tracing Nested Loops (1/5)

CS1010 (AY2014/5 Semester 1)

Week4 - 15

© NUS

Given the following 3 programs, hand trace each of them and write out the output without running the program.Slide16

Tracing Nested Loops (2/5)

CS1010 (AY2014/5 Semester 1)

Week4 - 16

© NUS

#include

<stdio.h

>

int main(

void) {

int

a, b;

a =

1

;

while

(a <=

4) { b = a + 3; while (b <= 10) { printf("a = %d, b = %d\n", a, b); b += 3;

} a++;

} return 0;}Week4_NestedLoop1.ca = 1, b = 4a = 1, b = 7a = 1, b = 10a = 2, b = 5a = 2, b = 8a = 3, b = 6a = 3, b = 9a = 4, b = 7a = 4, b = 10Slide17

Tracing Nested Loops (3/5)

CS1010 (AY2014/5 Semester 1)

Week4 - 17

© NUS

#include

<stdio.h

>

int main(

void) {

int

x, y;

for

(x=

10

; x<

30

; x+=5) for (y=x; y>4; y/=2) printf("x = %d, y = %d\n", x, y); return 0;}

Week4_NestedLoop2.c

x = 10,

y = 10x = 10, y = 5x = 15, y = 15x = 15, y = 7x = 20, y = 20x = 20, y = 10x = 20, y = 5x = 25, y = 25x = 25, y = 12x = 25, y = 6Slide18

Tracing Nested Loops (4/5)

CS1010 (AY2014/5 Semester 1)

Week4 - 18

© NUS

#include

<stdio.h

>

int main(

void

) {

int

p,

q

;

for

(p=0; p<10; p++) { if (p%2 == 0) { for (q=4; q>0; q--) printf("p = %d, q = %d\n"

, p, q); }

else { for (q=p; q<20; q+=5) printf("p = %d, q = %d\n", p, q); } } return 0;}Week4_NestedLoop3.cSlide19

Tracing Nested Loops (5/5)

CS1010 (AY2014/5 Semester 1)

Week4 - 19

© NUS

for (p=

0

;

p<6; p++) {

if (p%

2

==

0

) {

for

(q=

4; q>0; q--) printf("p = %d, q = %d\n", p, q); } else { for (q=p; q<20; q+=5)

printf

(

"p = %d, q = %d\n", p, q); }}Week4_NestedLoop3.cp = 0, q = 4p = 0, q = 3p = 0, q = 2p = 0, q = 1p = 1, q = 1p = 1, q = 6p = 1, q = 11p = 1,

q = 16

p = 2, q = 4p = 2,

q = 3

p =

2,

q = 2

p =

2,

q = 1

p =

3,

q =

3

p =

3,

q =

8

p =

3,

q =

13

p =

3,

q =

18

p = 4, q = 4

p =

4,

q =

3

p =

4,

q =

2

p =

4,

q =

1

p = 5

,

q =

5

p = 5

,

q =

10

p = 5

,

q =

15Slide20

Exercise #3: Prime Number

CS1010 (AY2014/5 Semester 1)

Week4 - 20

© NUS

Primality test is a classic programming problem

Given a positive integer, determine whether it is

a prime

A prime number has two distinct factors (divisors): 1 and itself. Examples: 2, 3, 5, 7, 11, ... (Note: 1 is not a prime!)Write a program

PrimeTest.c. You should include a function is_prime(int)

. (What value should the function return?)This exercise is mounted on CodeCrunch.

Sample runs:

Enter a positive integer:

131

131 is a prime.

Enter a positive integer:

713

713 is not a prime.Slide21

Things-To-Do

CS1010 (AY2014/5 Semester 1)

Week4 - 21

Revise

Chapter 4 Lessons 4.1 – 4.6, Beginning Decision Making

Deadline for Lab #1

Deadline: 6 September 2014, Saturday, 9am

Lab #2 releasedDeadline: 13 September 2014, Saturday, 9am

Preparation for next week

Chapter 6: Numeric Arrays

Continue to do

practice exercises on

CodeCrunch

© NUSSlide22

End of File

CS1010 (AY2014/5 Semester 1)

Week4 - 22

© NUS