Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint -...

17
0 Computer Science 50 Introduction to Computer Science I Harvard College David J. Malan [email protected] Week 5

Transcript of Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint -...

Page 1: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

0

Computer Science 50Introduction to Computer Science I

Harvard College

David J. [email protected]

Week 5

Page 2: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

1

“iPhone / iPod touch v1.1.1 jailbreak code posted”

Image from http://www.engadget.com/2007/10/21/iphone-ipod-touch-v1-1-1-jailbreak-code-posted/.

Page 3: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

2

Hexadecimal

0xdeadbeef

Page 4: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

3

Passing by Value

void

swap(int a, int b)

{

int tmp;

tmp = a;

a = b;

b = tmp;

}see

buggy3.c

Page 5: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

4

Passing by Reference

void

swap(int *a, int *b)

{

int tmp;

tmp = *a;

*a = *b;

*b = tmp;

}see

swap.c

Page 6: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

5

The StackRevisited

Page 7: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

6

Pointers

int i, j;

int *p;

Image from http://computer.howstuffworks.com/c22.htm.

Page 8: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

7

Pointers

p = &i;

Image from http://computer.howstuffworks.com/c22.htm.

Page 9: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

8

Pointers

*p = 5;

Image from http://computer.howstuffworks.com/c22.htm.

Page 10: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

9

Arrays as Pointersint i;

int a[5];

int *p = a;

Image from http://computer.howstuffworks.com/c22.htm.

seecompare{1,2}.c, pointers{1,2}.c

Page 11: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

10

Dynamic Memory Allocationmalloc

// instantiate memo

memo = (long long *) malloc((n+1) * sizeof(long long));

if (memo == NULL)

{

printf("Out of memory!\n");

return 2;

}

[...]

// free up memory

free(memo); seefs4.c, copy.c

Page 12: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

11

Memory ManagementRevisited

Page 13: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

12

CS 50’s LibraryRevisited

seescanf{1,2,3}.c, ~cs50/pub/releases/cs50/cs50.{c,h}

bool

string

char GetChar();

double GetDouble();

float GetFloat();

int GetInt();

long long GetLongLong();

string GetString();

Page 14: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

13

struct(and header files)

seestructs1.c

typedef struct

{

int id;

char * name;

char * house;

}

student;

Page 15: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

14

File I/O

seestructs2.c

fopen/fclose

fscanf/fprintf

fread/fwrite

feof

...

Page 16: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

15

Page 17: Week 5 - CS50cdn.cs50.net/2007/fall/lectures/5/week5.pdf · 2012. 8. 22. · Microsoft PowerPoint - week5.ppt Created Date: 10/23/2007 6:32:04 PM ...

16

Computer Science 50Introduction to Computer Science I

Harvard College

David J. [email protected]

Week 5