《程序设计实践》中文版
《程序设计实践》中文版
C shell
( ) HTML
JavaScript PostScript
Visual Basic
Java
printf
9.1
( )
printf
% printf
printf
%L %P %R 4
C C++
8
8 16 32
ANSI C 8 char 16 short 32 long
2 1 4
( short long )
printf
c 8 s 16
9 171
l 32 ( )
cscl
printf %
pack buf
typedef
unpack
9 173
scanf unpack
ANSI C
short long
pack 32 long
32
unpack
unpack_type2 2
174
9-4 printf
12345.67 12,345.67 .4
_ _ _ _0.40( ) DecimalFormat
9.2
pack unpack
Unix
9 175
( )
.exe
abc
(metacharacter) Unix
^ $ ^x
x x$ x ^x$ x ^$
grep
Regexp
Bob
176
( ) grep
grep
regex regexp grep
grep ^ $ . * *
^
matchhere
do-while ( $
.* 0 )
matchhere
matchhere
^ $
matchhere
9 177
x*
matchstar ( x)
do-while x* 0
grep
match
C 0 0
grep Unix
0 1 2( e p r i n t f)
178
grep match
grep
grep
grep
grep
match grep
( )
aaaaa a*
a match
matchstar
matchstar
9 179
grep
grep
grep
a *a* a*a* a*b
aaaaaaaaac Unix
grep egrep
match [a-zA-Z]
( )
(a b c d e f)
9-7 matchhere
9-8 grep -v -i
-n
9-10 ^ $ *
match
match
9 - 11 match
[a-z]
[^0-9]
9-14
9.3
grep
Perl
Aw k
3 Aw k
$1 $NF NF
Aw k
Awk
fmt
60
9 181
fmt 3 Markov
Aw k
Aw k
Perl Tc l
Perl
Tc l Perl Aw k
Tc l Perl Aw k
9.4
printf
Awk Perl
( )
( )
(parser)
yacc bison ( )
( ) C C++
9 183
( )
2
( Aw k
)
184
pack unpack
eval
( )
9 185
generate code
generate
code
a= max(b,c/2)
186
0 divop generate
goto pc
pc
code
generate
Java Java
(JVM)
9.5
generate
( )
HTML HTML
9 187
JavaScript Perl C (
)
PostScript
57 000 PostScript
C C
( Modula-3 C++) C
C
C C
(wizard)
C C++
Plan 9
188
enum
.c
Perl
/// ( )
C++
shell Aw k
PostScript PostScript
E
9 189
% %%
(bounding box)
Java / ** ** /
(literate programming)
9-15
9.6
C/C++
7 C
Bart Locanthi
bitblt rasterop
Locanthi
190
9.7
(Just In
Time) JIT
c 2 b
divop
2 0
0
m a x ( 3*3 , 4 / 2 )
9
literal x
9 191
code
char int long
int
192
CPU
flushcaches
( v o i d ( *) ( v o i d ) ) c o d e (Cast)
code
popreg
pushreg
addop
( A D D I N S T) (
SHIFT )
cast
9 193
addop
generate
CPU
grep
(
)
C++
9-19
( )
#define TWENTY
1.1
( )
n npoints
numberOfPoints
i j p q
s t
1 3
p
nodep Global
CONSTANTS
pch strTo strFrom
npending
numPending num_pending
C++ Java
Java
items users
( )
4
isoctal
getIndex 0 nTable 1
nTable inTable
1-1
1-2
1-3
1.2
1 5
(& |) ( ==)
6
C C++ Java
bitoff 3 3
0 bitoff bitoff 3 3
subkey
?:
?: 4 if-else 1
1 7
++
C C++
str i
str i
i 3 3 4
I/O
yr
yr profit[yr]
scanf
&profit[yr] yr
1-4
1-5
8
1-6
1.3
strcpy
for
if
if
else(dangling else)
else
if
1 9
C C++ Java n
n 0 n 1
for ++
C
C++ Java
C
10
for
getchar
putchar
do-while
C C++
gets
6 fgets
strlen ‘\ 0’ strcpy
strcpy
C++
+1
Java
Java
C C++ strdup malloc strcpy
strdup ANSI
C
malloc
malloc
realloc strdup
else-if if ... else if ...
else
(condition)
else
else
12
else else if
if
if
( )
else
case break
else-if
case
1-7 C/C++
14
1-8 Java
1.4
C
I/O getchar isdigit
C
( )
C++ Java
C
<ctype.h>
c isupper
A Z
C isupper
ctype
getchar
ROUND_TO_INT
(C++
)
1 15
square
C++
1-9
1.5
(1) 0 1
24 80
20 21 22 23 27
24
80 26
16
3 (80 1)/26 let 26 27 ( (off-by-one)
1 )
0 NLET
( ) draw MAXROW MINCOL
C #define C
C
C++ C++
const
Java final
C const enum C
<ctype.h>
C C
1 17
C C++
Java
0
0
(v o i d *) 0 NULL C ‘\ 0’ 0
0
C++ 0( N U L L)
Java null
s i z e o f (i n t ) 2 4 sizeof(array[0])
sizeof(int)
sizeof
Java length
C C++ .length ( )
18
1-10
1.6
i++ i 1
1 19
result matchfound
ctime
C
1 21
strcmp
(
above )
1-11
22
1.7
Strunk
White (The Elements of Style Allyn & Bacon)
Raymond Fielding
2.1
(Java )
NULL
24
HTML
(
)
1 NELEMS
2 25
htmlchars
1
/2
n 2 l o g 2n
1000 1000 10
1 20
( )
2.2
( )
( )
quicksort
26
( ) ( l a s t)
( i) last=0 i=1 n-1
0 last
2 27
• n n/2
• n/2 n/4 4
• n/4 4 n/8 8
•
log2n n
+2 n/2+4 n/4+8 n/8 (log 2n ) nlog2n
2 nlogn
n2
n2
2.3
C C++
C
qsort qsort
v o i d*
(
)
scmp
strcmp
28
strcmp qsort
&str[i]( char**) str[i]( char*)
str[0] str[N-1]
( ) qsort
icmp
v1 v2
qsort
qsort key
Nameval
nvcmp Nameval strcmp
scmp
bsearch ey qsort
bsearch
bsearch
C++
2-1
(Hoare )
2.4 Java
Java
Java sort Comparable
Java
quicksort
qsort
30
Java C C++
Object
Cmp cmp
Object
Integer
Object
int double
Integer int
C quicksort Java
Cmp left right
Java
2 31
left right ( )
Math.abs Java
sort swap rand rgen Quicksort
Quicksort.sort String
sort
2.5 O
n( )
n l o gn
n 2
nlogn
32
CPU ( )
O
n n O
(order) O( l o gn) l o gn
n O ( f(n) ) n f(n)
O(n )
2
O(nl o gn)
O(n2) n
O(nl o gn) n
O(n2)
O(nlogn) ( O(n2) )
0 (O(nlogn)
O(1)
O(logn)
O(n)
O(nlogn) nlogn
O(n 2)
O(n 3)
O(2 n)
O( 1 )
O( l o gn) strcmp n
O(n) O(n )
3
n
n2
n 2n
O( 2n) n
(
)
2-3
2-4 n
2 33
( n )
2.6
HTML n
n O(2 )n
n
C++ Java
C struct
Nameval
Java C++
34
addname 1
realloc
NULL realloc
realloc
O(2n )2
(NVINIT=1)
realloc C void*
C++ (
) ( )
C C++ C
memmove memmove
ANSI C memcpy
memmove
memmove
memmove
2 35
memmove
memmove
NULL
O( 1 )
2.7
( )
Lisp C++
Java C
C
( )
36
C List HTML
Nameval
newitem
emalloc malloc
4 emalloc
addfront
addfront
O(n)
2 37
addend O(1)
next
O(n)
apply
apply apply
apply
apply void
fn void fn
void fn
Nameval* void* fn
apply
38
listp
listp->next (n e x t)
listp->next free
freeall listp->name Nameval name
newitem freeall
Java
4
2 39
C++
(STL)
O( 1 )
(LIFO) ( )
2-7
2-8 reverse
2-10 6
2.8
40
0
left
right
Nameval
lesser greater
Nameval
ASCII
O(n) O( l o gn)
( )
Nameval
2 41
insert
(c m p = = 0)
O( 1 ) O(n)
weprintf eprintf
warning eprintf
O( l o gn)
right
lookup insert
42
lookup insert
lookup
lookup
goto while
( )
( )
2 43
( 1)
( )
2-12
2-13
2.9
( ) ( )
Internet
IP
44
Java
C C++ ( )
n n/ ( )
O(1)
2.7
( )
/
create lookup
O( 1 )
2 45
O( 1 )
hash
ASCII
31 37
C C++ char
Java
16 8 9
46
( .j a v a .c l a s s ) URL
h t t p : / / w w w. .h t m l
Java
( 37)
( ) (
URL)
(O ( )) (
O(xsize ysize zsize)
Gerand Holzman
Supertrace Supertrace
Supertrace
( )
Supertrace ( 0 Supertrace
) Supertrace
O( 1 )
O(n)
2-14
NHASH
2-15
2-16 lookup x y
2-17
2.10
2 47
( )
O(n)
Brooks
C C++ Aw k Perl
( )
3.1
3 49
( )
w1 w2
w1 w2
w3 w1w2
w3
w1 w2 w2 w3
words words.
( )
50
3.2
n=100 000
100 000 n
( )
3.3 C
(N P R E F ) (N H A S H)
(M A X G E N) NPREF
NHASH=4093 10 000 ( )
S t a t e( )
Suffix( )
52
2
3 53
lookup sp->pref[]
lookup
I/O lookup
sprintf fscanf
fscanf %s fscanf
100 (
) % 9 9 s( ‘\ 0’ )
fscanf 99
( )
sprintf
memmove 1 NPREF-1
54
0 NPREF-2
addsuffix
add
addsuffix add
build addsuffix add
3.4
NONWORD
NONWORD
NONWORD
NONWORD
3 55
generate
9
fmt
NONWORD generate
nmatch
nmatch 1/nmatch
1 1/2 3 1/3
k 1/k
prefix
suffix
lookup prefix
NONWORD
NONWORD memmove
main
56
C C
C
C
3-1
3-2
3.5 Java
Java Java
( )
Java C
Vector Object
Hashtable
Vector
Chain
main Chain
add ( )
58
Prefix
Prefix n
NPREF NONWORD
equals
Hashtable
hashCode equals Java
C Java Java
Vector C
3.6 C++
C++ C++ C C
C markov C++
C++
Java
C++ Standard Template Library( ) STL STL
ISO C++ STL
STL
60
C++ STL
( ) C++
STL vector
vector<int> vector<string> vector
map statetab C
Java equal
main ( C++ i o s t r e a m c i n)
build iostream
3 61
buf
add STL
map ([] )
statetab[prefix] statetab
prefix
vector deque push_back
deque pop_front deque
(Awk Perl)
62
Aw k Perl
Awk Perl 2
Aw k
BEGIN END
Aw k BEGIN
Awk ( ) $1 $NF
NF
nsuffix n s u f f i x [ w 1 , w2]
statetab statetab[w1,
w2, 1] statetab[w1, w2, 2]
END nsuffix
statetab
Perl (
) Perl
$ @ [] {}
3 63
statetab
statetab{$w1}{$w2}
$statetab{$w1}{$w2} $suf->[$r] r
Aw k Perl
C++ STL ( add g e n e r a t e)
3-7 Aw k Perl
3.8
Wi n d o w s STL d e q u e deque
deque ( STL )
Irix ( )h a s h
Wi n d o w s deque
list map hash STL
STL C++
STL Java
3.9
Perl Aw k
3 65
C++ Java
( )
C++
STL
STL
C++
Brooks
Awk Perl
( )
1
Erich Gamma Richard Helm
Ralph Johnson John Vlissides (Design Pattern:
Elements of Reusable Object-Oriented Software Addison-Wesley 1995)
Markov shaney 1989 6
A. K. Dewdney (The Magic Machine W.
H. Freeman 1990)
4
Robert Frost
2
3
4.1
CSV
68
( ) We b
We b
We b
CSV (
)
HTML
& f= printf
s l1
c1
getquotes
4 69
CSV
CSV
CSV
CSV
4.2
Fred Brooks
Brooks
CSV
csvgetline CSV
CSV scanf C
strtok strtok(p, s) p s
strtok
strtok
NULL
strtok
70
unquote
csvgetline
printf
getquotes.tcl
( HTTP )
We b
(\ r)
4 71
•
•
•
•
• ( f i e l d) csvgetline
• csvgetline
csvgetline
72
4.3
csvgetline
3
char *csvgetline(FILE *) CSV
char *csvfield(int n) n
int csvnfield(void)
csvgetline
csvgetline
NULL
csvgetline
NULL C
( ) fgets
CSV
csvgetline
csvgetline
csvfiled(n) n csvnfield
4 73
csv
csvgetline
( ) (
) ( )
csvgetline
csvgetline
csvfield
csvgetline FILE
csvgetline NULL
ferror csvgeterror
csvgetline
74
"..."
" ""
""
"..."
"..." "" "
NULL
csvgetline
int csvnfield(void);
csvgetline
csvgetline
csvfield csvnfiled
csvgetline EOF
csvgetline
csv.h csv.c
csv.h csv.c
split static
C
line sline
line field sline
ab, cd , e f ,, g,h
csvgetline
76
line realloc
2.6 sline line csvgetline
split field
reset
csvgetline
endofline
EOF
strtok
4 77
split
strtok
split
advquoted
strcspn(p,s)
p s
advquoted
"abc"def
Microsoft
78
Excel
csvfield csvnfield
( )
4-1
4 79
4-3 C
NULL
reset
4-4 CSV
printf
9
4.4 C++
C++ CSV C
C C++
C++
Csv
Csv
CSV
Csv
+=
endofline
split
4 81
for fld
find_first_of advplain
strcspn C++
Csv::getfield
82
C 30 000 25
C++ C 40% 4 markov
C++ 20%
4.5
CSV
C I/O
I/O FILE*
( <stdio.h> )
4 83
C++ Java
3
C
I/O
stdout
memcpy memmove
strtok
84
C (
4-8)
C C++
C str...
C I/O FILE*
STL
C mem...
str... I/O fread
fwrite read w r i t e( ) Unix
* ( *.exe )
We b
( _ _ i o b)
4.6
( )
4 85
CSV
reset
C++ Java
Csv
C
csvgetline ( )
(
) csvgetline
csvgetline
C++
Java ( i n t)
Java markov
C
Java
( ) C
C C++ atexit
CSV
86
C++
Java
Java Java
0 C
C++
Java
( strtok C
)
Java
4.7
eprintf estrdup
eprintf fprintf(stderr, ...)
<stdarg.h>
vprintf ... stdarg
va_start va_end 9
4 87
eprintf C strerror
( ) weprintf eprintf
printf
estrdup eprintf
emalloc malloc
eprintf.h
88
C C++ Java
( )
getchar char
char EOF
log IEEE
N a N( not a number)
Perl Tc l
C++ STL
pair
( )
Unix C 1(
) errno strerror
errno errno 0
90
Java
read 1
null C
C++ try I/O
IOException
C setjmp longjmp
CSV reset
4.8
4 91
estrdup
s y n t a xe r r o (r ) estrdup
failed(estrdup )
Abandon ( ) control-Z
92
(bug) bug
I/O
goto
94
6
5.1
( )
5 95
5.2
printf scanf
Sun SPA R C
( )
-o
-f123
0 case
1997 7
5 97
2
icmp qsort
scmp
dbx ( )
strcmp strcmp
badqs.c 13
98
5.3
3 Markov
undo
1023
1024
1024
5 99
c a n ’t get here
got here
g r e p(g r e p 9
) C C++
%x %p
A B
check C abort
check
check
check
check
100
We b
( )
I/O printf
C fflush
C++ Java fflush
I/O
setbuf setvbuf s e t b u f (f p , N U L L) fp
(stderr cerr System.err)
3 C markov x
y x
( 42685 22482 )
31 37 128
15 16 5 6
187 20
31 37 128
5 101
diff
grep
RCS
5.4
& | = =
!=
p
5 103
Unix PC
16 32
ctype.h
isprint
( 40 '' ) (
) getchar
1994 Pentium
1/2 0.5
0.7432
5.5
C
104
C++
( ) 0
printf
msg
malloc static
2
freeall
p->next
malloc free
malloc free
strings
strings
ASCII ( zip )
strings
Unix strings
-a
strings ASCII
strings MINLEN=6
do-whilet EOF
getc printf
106
getc
printf printf
(
)
do-while
strings strings
strings
strings Unix
Windows 95
( ) 8
getchar Wi n d o w s getchar
0x1A control-Z EOF
5 107
Unix
rb sdtin
( fdopen setmode C )
Wi n d o w s Unix Wi n d o w s
5-3 vis
ASCII \Xhh hh strings
vis
5-5 vis
5.7
(
)
grep
( )
108
0 ( ) ( )
C C++
4.0b1
4.0b2
5.4 isprint
5.8
5 109
( )
Norbert Wiener( )
Edsger Dijkstra
SUM(A1:A50)
6.1
6 111
fgets
i 0 i 1
s[-1]
i 0
‘\ 0’ s[0]
i MAX-1
getchar EOF
‘\ n’
( ) ( )
n n
0
112
n 0 avg
avg
n 4
n 0 0
1998 11
0
C C++ <assert.h> /
n 0
avg
(
) avg 0
6 113
( )
( fprintf f w r i t e)
fclose EOF
0
6-1 1
(a)
(b)
(d) s n t
(e)
(f)
(a) 2000
2000 1 1
(b) ctime
ctime
(c)
(d)
6.2
6 115
4 CSV
( )
•
•
•
•
1
116
3 5
(
) ( ) (
)
w c(
) s u m( )
(c m p) (d i f f)
freq
6 117
( )
(Profiler)
6-3 freq
118
6-4 freq 32
6.3
( )
( )
ka
(o l d _ k a) (n e w _ k a)
Unix shell Perl
-s cmp cmp
!cmp cmp
6 119
Aw k
Aw k (n e w a w k) Aw k
echo
Awk 1
( try )
1
yes 7 yes no
Aw k ( ) Aw k
( 9
)
Aw k
120
Awk
6-5 printf
6.4
m e m s e t(C/C++ m e m... )
mem
memset(s, c, n) s n c s
6 121
32 64
memset
n 0 1 2 2
2 16
16
2 memset
c 0 0 x 7 F( 8
) 0x80 0 x F F( )
( )
memset
n c
memset
s0 s1
n
0 16 i n 2i 1 2i 2i 1
memset
3500
memset
122
( )
memset
memset
0x7F c memset
memset
memmove
memset
(tile)
6-6 memset
6-7 mem...
6 123
6-8 math.h sqrt sin
6.5
1420
1594 ( )
255
( )
gets
fgets(buf, sizeof(buf), stdin) scanf( %s , buf)
124
scanf( %20s ,buf)
3.3
gets
10 num 0
gets
if
1998 7
1988 Internet
HTML
1024 gets
6 125
x y z malloc
p[x] int 16 x y z 41
x*y*z 68921 2 16
3385 malloc 3385
1996 7
64 16
7 ASCII (
)
6-10
6.6
( )
2 4 CSV
126
10 NULL
0
0xDEADBEEF
8
7
6.7
)
6 127
Don
Knuth TEX
Beta
Beta
( )
6.8
2
( )
( )
128
Aw k
Java
abc abd c
d freq
Java d
20 c Java
2
c
6 129
6.9
Don Knuth
(Software: Practice and Experience19 7 pp607~685, 1989)
The Errors of TEX TEX
TEX TRIP Perl
( )
( )
2
7.1
performence
7 131
Internet
Internet
( )
(spam)
grep
( )
C strstr
( ) strstr
strstr
( )
strstr
132
strchr
strcmp
strstr
strncmp strlen
strncmp
\0
( strncmp ) \0
strchr
\0 isspam \0
strstr
strstr
strstr
e x
e x
strstr 30%
strstr
7 133
npat
npat strlen(mesg)*npat
j
mesg[j]
52 strlen(mesg)*npat/52
s x
52
isspam
starting[c][] c starting[c]
c nstarting[c] c
0 npat
0 20 patlen[k] strlen (pat[k])
134
b
strstr 5~10
7~15 52
strstr
7-1
isspam
(t r i e)
7 135
7.2
Unix time
real( )
user CPU system (
)CPU
( 20% )
time
C C++ clock
CPU clock
CPU
CLOCKS_PER_SEC clock
getTime
136
Unix -p prof
217
10 000 250MHz MIPS R10 000
strstr
(217 ) (10 000)
( )
7 137
strchr strncmp( strstr )
Knuth
50%
isspam
spamtest memcmp
isspam isspam strstr
strlen strchr memcmp
strncmp memcmp
Aw k
50%
MAXFLD 200 Aw k
2 3
25%
C markov
( 42 685 22 482 ) 2
138
2 16 384 2
( )
1000
2
7.3
spam
O(n2)
O(nlogn) 2
s n strlen n
n
C C++
( )
7 139
8.1 5.9
25% strstr
strstr
(
)
7.1 isspam
6.6
(n s t a r t i n g [ c ])
5.9 10%
starting[c]
140
memcmp
3%
50%
isspam
( )
10%( ) 10%
7.4
1 sqrt
7 141
2
C C++
sqrt(dx*dx+dy*dy)
grep
142
We b
Internet
/2
1
drawchar show(lookup(c))
malloc free
malloc
C
alloca
alloca
C printf
7 143
Inferno
draw
( )
strlen(pat[i]) patlen[i]
360 ( )
isdigit
float double
IEEE
0
sin cos
C++ Java C
memset memmove
6
memset
7-4 memset
4 8
144
memset
7-5 C smalloc
malloc struct
smalloc malloc
7.5
19
(
)
C C++
C++
7 145
5%
m[i][j] m(i,j)
PPM
GIF 50K
GIF
GIF 500 PPM
10 GIF PPM
GIF
7.6
146
C C++
malloc free
I/O
CPU
CPU
400 MHz
200 MHz 100 MHz
7-6
7-7 C++
iostream STL
7-8 Java
7.7
148
Aw k
20
10 2
6
( )
Knuth F O RT R A N (An Empirical Study of
FORTRAN Programs) (Software: Practice and Experience 1
2 pp105~133 1971)
Robert Venturi
8.1
(
)
150
C C++ char
8
C C++
x char
( x
)
C C++
C // complex
near far
C C++
C
C++
C
8 151
C sqrt
ANSI C
ANSI C
func func
func 3 C
C++
STL
C C++
64
PC
152
PC
far near
sdtdef.h
size_t sizeof (
strlen) ( malloc)
Java byte
8 char short 16 int 32 long 64
IEEE
C C++
getchar
count ptr
( )
errno log
&& ||
( )
?: ( )
Java
char EOF
0xFF EOF
char getchar int
EOF
>> (
) ( 0) C
C++ Java >> >>>
short int long
i 2 4 8 int
n n double
8 8
154
struct X
s i z e o f(s t r u c tX)
sizeof(char)+sizeof(int)
C++ C
C
(Unix Plan 9 Wi n d o w s ) C C++
8.2
C stdio
C++ iostream Java java.io
C
8 155
ANSI C strdup
strdup
( )
ANSI C strdup
weprintf wprintf C
stdio.h
wprintf stdio_wprintf
wprintf
wprintf
156
wprintf
#ifdef
weprintf
ANSI C
6 signal POSIX 19 Unix 32
ANSI
POSIX Microsoft
Windows API
8.3
stdlib.h
stdlib
malloc realloc
free u n s i g n e d int s i z e _ t( malloc realloc )
STDC_HEADERS _LIBC
8 157
#ifdef
#ifdef
#endif #endif
#ifdef
( #ifdef )
158
#ifdef
DEBUG 0
#ifdef #ifdef
#ifdef
#ifdef
#ifdef
#ifdef
#ifdef
_MAC
8 159
( )
make
#ifdef
8-1
8.4
Sam
(
X Window Sam )
160
I/O
/
Sam
Java
Java
Java
Java (
)
8.5
Aw k Perl
grep
PostScript
PC ‘\ r’ ‘\ n’
Unix
8 161
(CR)
(LF)
PC
( CRLF c u r l i ff )
PC
HTTP CRLF
CRLF ( PC
) \r ( Unix )
8-2
8.6
( 16 ) ( )
( )
0
4 0x11223344
0x44332211
162
32
P D P - 11 (
)
64 long
( )
/
i n t( short l o n g)
x x 0x1000
0x0010
short
8 163
I/O
X Window
X Wi n d o w
Plan 9 ( )
I/O
Java C C++ Java
Serializable
C C++
#ifdef 8
( CRLF
)
printf scanf
I/O
b Unix Wi n d o w s
164
control-Z ( 032 1 A)
( 5 strings )
\r
8.7
( ) Unix
echo
echo shell
echo printf
shell
echo
echo
( DOS Wi n d o w s ) ec h o
printf(str) p r i n t f ( " % s " ,str)
str
echo
echo
Unix sum
8 165
sum sum
sum
sum
sum
sum
sum
( )
8.8
ASCII $
24
166
ASCII ASCII ctype.h
a z
isalpha
ASCII 0x7F (7 )
Latin-1 ASCII
80 FF E7 Ç
boy ASCII( Latin-1) 62 6F 79 garÇon
Latin-1 67 61 72 E7 6F 6E
ASCII 128
80 FF
8
16
Unicode
Unicode ISO 10646 16 16
00FF Latin-1 garÇon 16 0067 0061
0072 00E7 006F 006E 0401 04FF
3000 Unicode
C C++ 16
Unicode L ". . ."
UTF-8 C
mm/dd/yy
8.9
168
Brian Kernighan Dennis Ritchie C
(The C Programming Language Prentice Hall 1988)
Sam Harbison Guy Steele C (C: A Reference Manual
Prentice Hall 1994) 4
C C++ ISO( ) Java James
Gosling Bill Joy Guy Steele Java (Java Language Specification Addison
Wesley 1996)
Rich Stevens Unix (Advanced Programming in the Unix Evironment
Addison We s l e y 1992) Unix Unix
I/O IEEE
1726 Jonathan Swift Danny Cohen
(On holy wars and a plea for peace IEEE Computer 1981 10 )
Plan 9
#ifdef Unicode Sam
sam (The Text Editor sam) (Software Practice
and Experience) 17 11 pp813~845 Unicode
Rob Pike Ken Thompson Hello World or Kαληµ έρακοσµε or
(Proceedings of the Winter 1993 USENIX Conference 1993 USENIX
1993 pp43~50 ) 16 Unicode UTF-8
Plan 9 Sam
else-if
198
199
ASCII
Samuel Taylor Coleridge
196