lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100...

62

Upload: doandien

Post on 24-Apr-2018

239 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 2: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 3: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 4: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 5: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

#include<stdio.h>

intmain(void){printf("hello,world\n");}

Page 6: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000010 00000000 00111110 00000000 00000001 00000000 00000000 00000000 10110000 00000101 01000000 00000000 00000000 00000000 00000000 00000000 01000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 11010000 00010011 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000000 00000000 00111000 00000000 00001001 00000000 01000000 00000000 00100100 00000000 00100001 00000000 00000110 00000000 00000000 00000000 00000101 00000000 00000000 00000000 01000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 01000000 00000000 01000000 00000000 00000000 00000000 00000000 00000000 01000000 00000000 01000000 00000000 00000000 00000000 00000000 00000000 11111000 00000001 00000000 00000000 00000000 00000000 00000000 00000000 11111000 00000001 00000000 00000000 00000000 00000000 00000000 00000000 00001000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000011 00000000 00000000 00000000 00000100 00000000 00000000 00000000 00111000 00000010 00000000 00000000 00000000 00000000 00000000 00000000 00111000 00000010 01000000 00000000 00000000 00000000 00000000 00000000 00111000 00000010 01000000 00000000 00000000 00000000 00000000 00000000 00011100 00000000 00000000 00000000 00000000 00000000 00000000 00000000

...

Page 7: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

source code

compiler

machine code

Page 8: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

clanghello.c

./a.out

Page 9: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

clang-ohellohello.c

./hello

Page 10: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

clang-ohellohello.c-lcs50

./hello

Page 11: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

makehello

./hello

Page 12: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

compiling

Page 13: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

preprocessing

compiling

assembling

linking

Page 14: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

#include<stdio.h>

intmain(void){printf("hello,world\n");}

Page 15: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

#include<stdio.h>

intmain(void){printf("hello,world\n");}

Page 16: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

...intprintf(constchar*format,...)...

intmain(void){printf("hello,world\n");}

Page 17: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

...intprintf(constchar*format,...)...

intmain(void){printf("hello,world\n");}

Page 18: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

main:#@main .cfi_startproc#BB#0: pushq %rbp.Ltmp0: .cfi_def_cfa_offset16.Ltmp1: .cfi_offset%rbp,-16 movq%rsp,%rbp.Ltmp2: .cfi_def_cfa_register%rbp subq$16,%rsp movabsq$.L.str,%rdi movb$0,%al callq printf ...

Page 19: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

000000000000000000000000000000000000000000000000000000000000000000000001000000000011111000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000110000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000001000000000000000000101000000000000000010000000001010101010010001000100111100101010010001000001111101100...

Page 20: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

01111111010001010100110001000110000000100000000100000001000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000111110000000000000000100000000000000000000000010110000000001010100000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000110100000001001100000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000111000000000000000100100000000010000000000000000100100000000000010000100000000000001100000000000000000000000000000010100000000000000000000000001000000000000000000000000000000000000000000000000000000000000000100000000000000010000000000000000000000000000000000000000000000010000000000000001000000000000000000000000000000000000000000000011111000000000010000000000000000000000000000000000000000000000001111100000000001000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000011000000000000000000000000000001000000000000000000...

Page 21: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

preprocessing

compiling

assembling

linking

Page 22: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

compiling

Page 23: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

help50

check50

style50

Page 24: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

eprintf

Page 25: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

debug50

Page 26: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 27: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 28: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 29: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 30: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 31: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 32: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 33: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

printf

Page 34: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

get_char

get_double

get_float

get_int

get_long_long

get_string

Page 35: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

bool

char

double

float

int

longlong

string

...

Page 36: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

%c

%f

%i

%lld

%s

...

Page 37: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

string

Z a m y l a

Page 38: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

string

Z a m y l a

Page 39: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

typecasting

Page 40: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

ASCII

A B C D E F G H I ...65 66 67 68 69 70 71 72 73 ...

Page 41: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

ASCII

A B C D E F G H I ...65 66 67 68 69 70 71 72 73 ...

a b c d e f g h i ...97 98 99 100 101 102 103 104 105 ...

Page 42: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

stdio

cs50

string

ctype

...

libraries

Page 43: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

stdio.h

cs50.h

string.h

ctype.h

...

header files

Page 44: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

man

Page 45: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

string

S t e l i o s

Page 46: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

string

S t e l i o s

Page 47: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

amazon.com

Page 48: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

string

S t e l i o s

Page 49: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

string

S t e l i o s \0

Page 50: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

string

S t e l i o s \0

M a r i a \0

Page 51: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

string

S t e l i o s \0

M a r i a \0 Z a

m y l a \0

Page 52: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 53: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

arrays

Page 54: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

intmain(void)

Page 55: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

intmain(intargc,stringargv[])

Page 56: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

cryptography

Page 57: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

inputs → → outputs

Page 58: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

plaintext → → ciphertextkey →

Page 59: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

plaintext ← ← ciphertext← key

Page 60: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000
Page 61: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000

sloppress.com

Page 62: lecture2 - cdn.cs50.netcdn.cs50.net/2017/fall/lectures/2/lecture2.pdf · 01111111 01000101 01001100 01000110 00000010 00000001 00000001 00000000 00000000 00000000 00000000 00000000