cc510 beginning of c programming park, kyungmi kmpark@bulsai.kaist.ac.kr
Post on 12-Jan-2016
225 Views
Preview:
TRANSCRIPT
CC510Beginning of C Programming
Park, KyungMikmpark@bulsai.kaist.ac.kr
Contents
• Using Visual C++• Basic C Programming
2
USING VISUAL C++
3
VISUAL C++
4
Microsoft Visual C++ is a commercial integrated development environment (IDE) for the C.
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development.
Wikipedia
Start Page
5
Create Project (1/3)
6
Create Project (2/3)
7
Create Project (3/3)
8
Create Files
9
Programming
10
Compile, Build, Execute
11
Results
12
BASIC C PROGRAMMING
13
Definitions
• Computer programming (often shortened to programming or coding) is the process of writing, testing, debugging/troubleshooting, and maintaining the source code of computer programs.
• Computer programs (also software programs, or just programs) are instructions for a computer.
• C is a general-purpose computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories to implement the Unix operating system.
14
Wikipedia
Program Design
• Five phases in developing a program• Specify the problem• Analyze the problem• Design a method of solution (algorithm)• Coding (using programming lang.)• Test the program
15
C History
• 1970 : K Tompson wrote B for the first UNIX system on the PDP-7
• 1972 : C was designed as an extension of B• 1973 : UNIX OS was written in C over 90%• 1976 - 1977 : UNIX was ported to VAX• BCPL -> B -> C• S/W used in UNIX is almost written in C
16
Genealogy of High-Level Language
1957
1960
1965
1970
1975
1980
1885
1990Ada 95
Ada
Pascal Prolog
ALGOL-W
LISP
ALGOL 58
ALGOL 60
FORTRAN IFORTRAN II
FORTRAN IV
FLOW-MATIC COMTRAN
BASIC
PL/I
ALGOL 68
CPLCOBOL
Smalltalk 80
C++
ANSI C FORTRAN 90
FORTRAN 77
C
BBCPL
17
From Source Code to Executable File
Source Code Source File
Object File Executable FileLibraryLinker
Text Editor
Compiler
18
Sample Program
#include <stdio.h>
#define SCOPE 10
void main(){ int x, y; /* Variables */ int sum; x = 10; y = 200; sum = SCOPE * x + y;
printf(“Sum = %d\n”, sum); /* print function */}
Sum = 300
19
Name, Variables, Declarations
• "identifier" : variable name • letters, digits, _,
• First character : letter or _.• Long name with _ : help readability of program.
(up to 31 characters)• Upper and lower case letters are distinct.• Variable name : lower case • Symbolic constant : upper case• Key words are reserved. (lower case only)
20
Data Types and Sizes
• Char : a single byte, one character• int : integer ( 32 bit long in general )• float : single-precision floating point
precision: 6 digits, range: 10^(-38~+38)
• Double: double-precision floating pointprecision: 12 digits, range: 10^(-
308~+308)
• short, long: specifying the size of integershort int sint; short sint; long int lint; long counter;
int cntr;
21
Unsigned vs. Signed
• unsigned int vs. signed int : range of value• unsigned char vs. signed char
• Signed integer : 1 bit for the sign of the number• the rest for the magnitude of the number
• Unsigned integer use all the bits for the magnitude, non-negative.
unsigned short int x; /* 0 ~ 2^16-1 */ signed int y; /* -2^31 ~ 2^31-1 */signed char zz; /* -128 ~ +127 */
22
Data Types and Values
• Numeric data types : int, float, double ......• Single ASCII character : char (also integer)
Ex) 'A' '7' '+' 'a' '‘
• int • short int e.g. 1234 938 -392• long int : 1234567890123L 29438l /* L or l */• unsigned int: 2132U 332u /* u or U */
• octal representation of integer: begin with 0Ex) 0177 034 02222222222L 09932U
• hexadecimal representation of ingeter: 0X or 0xEx) 0X3ff 0x23 0X2B 0XFUL
23
Data Types and Values II
• float : either an int, a decimal fraction, an exponent part or their combination (but not integer) Ex) -5.3e-3 1.0 1. .023 3.14159 314.159e-2
314158e-5 0.00314158e+3 0.00314158e3
0.00314158e003 0.0 0e0 .0e0
• Special notation for characters : Ex) '\013' /* ascii vertical tab */
'\007' /* ascii bell character */
'\xb' /* ascii vertical tab */
'\0' /* null character */
24
Escape Sequence
Name of character written in C Integer value in decimal
null '\0' 0
backspace '\b' 8
tab '\t' 9
newline '\n' 10
formfeed '\f' 12
carriage return '\r' 13
double quote '\"' 34
single quote '\'' 39
backslash '\\’ 92
25
String Constant (1/2)
• String constant or string literal• A sequence of zero or more characters surrounded by “”
Ex) "This is string" "Thisisstring"
"This is\talso string" "This is string\n"
"" /* empty string */
26
String Constant (2/2)
• String constants can be concatenated at compile timeEx) "hello," " world" --- "hello, world"
• String constant is an array of character terminated with• Null character.
27
Class declaration
• Variables must be declared before use
• class (storage class)• automatic (default within functions)• extern (global)• Static• register
• variable type• short, long, int, float, unsigned char, etc.
• identifier_list• a list of variable names, separated by commas whose values are to be of the
designed type and class.
class type identifier_list;
28
Declaration: examples
• Initialization of variables at the DECLARATION TIME (must be a constant expression)
• qualifier const
float x, sum, av;int n;static unsigned long int real_long, rl;
#define MAXLINE 1000char esc = '\\';int i = 0;int limit = MAXLINE+1 /* constant expression*/float eps = 1.0e-5
const double e = 2.71828182845905;const char msg[] = "warning: ";int strlen(const char[]);
29
Size of Data Types: program
#include <stdio.h>
/* compute the size of the fundamental types */main(){ printf("\n char: %d bytes", sizeof( char)); printf("\n short: %d bytes", sizeof( short)); printf("\n int: %d bytes", sizeof( int)); printf("\n long: %d bytes", sizeof( long)); printf("\nunsigned: %d bytes", sizeof(unsigned)); printf("\n float: %d bytes", sizeof( float)); printf("\n double: %d bytes", sizeof( double)); printf("\n\n");}
30
Arithmetic Operators
• binary arithmetic operators:• + - * / % (modulus operator)
• relational and logical operators: • > >= < <= == !=
int year;if ((year % 4 == 0 && year % 100 != 0) ||
year % 400 == 0) printf(%d is a leap year\n", year);
else printf(%d is not a leap year\n", year);
for (i=0; i<lim-1 && (c!='\n' && c!=EOF; i++) s[i] = c;
31
Arithmetic Conversion Rules
double
long
unsigned
int
float
char, short
32
Conversion Rule: example
char c; double d; float f; int i; long l; short s; unsigned u;
Expression Type
c - s / i Int
u * 3 - i unsigned
u * 3.0 - i Double
f * 3 - i float
c + 1 int
c + 1.0 double
3 * s * l long
33
Increment and Decrement
• ++ (increment: add 1)• -- (decrement: substract 1)
• ++n -> increment n before using its value• n++ -> increment n after its value has been used
• only applied to variables (not to expresson or const)
34
Assignment Operators
• compress form
i = i + 2; i += 2; /* assignment operator */
• expr1 op= expr2 expr1 = (expr1) op (expr2)• op : + - * / % << >> & ^ |
// x *= y + 1 means x = x * (y+1) rather than x = x*y + 1
/* bitcount: count 1 bits in x */ int bitcount(unsigned x) { int b; for (b = 0; x != 0; x >>=1) if (x &01) b++; return b;}
35
Statement and Block
if (x == 0) x = 0; /* expression & statement */ x = 0; i++; printf("%d %d\n", i,j); /*statement */
{ x = 0; i++; printf("%d %d\n", i,j); } /* block */
• Expression: combination of var, const and operators
• statement : expression + semicolon• Block: { series of statement}
36
Ambiguity of If-Then-Else
• Part of if statement is optional : problem with nested if statements
if (n > 0) { if (a > b) z = a; } else z = b;
if (n >= 0) for ( i = 0; i < n; i++) if (s[i] > 0) { printf("..."); return i; } else /* WRONG */ printf("error --n is negative-n");
37
Else-If : multiple choice
/* count blanks, digits, letters, newlines, and others */#include <stdio.h>
main(){ int c, blank_cnt, digit_cnt, letter_cnt, nl_cnt, other_cnt;
blank_cnt=digit_cnt=letter_cnt=nl_cnt=other_cnt = 0;
while ((c = getchar()) != EOF) /* brace not necessary */ if (c == ' ') ++blank_cnt; else if ('0' <= c && c <= '9') ++digit_cnt; else if ('a' <= c && c <= 'z' || 'A' <= c && c <= 'Z') ++letter_cnt; else if ( c == '\n') ++nl_cnt; else ++other_cnt;}
38
Binary Search : example
/* binsearch: find x in v[0]<=v[1]<=....<=v[n-1] */int binsearch(int x, int v[], int n){ int low, high, mid;
low = 0; high = n - 1; while (low <= high) { mid = (low+high) / 2; if (x < v[mid]) high = mid - 1; else if (x > v[mid]) low = mid + 1; else /* found match */ return mid; } return -1; /* no match */}
39
While
• While ( expression ) : While expression is evaluated true(non zero), repeat statement.
while (i++ < n) factorial = factorial * i;
while ((c = getchar()) != EOF) { if ('a' <= c && c <= 'z') ++lower_case_letter_cnt; ++total_cnt;}
while (++i < LIMIT) { j = 2 * i + 3; printf("\n%d", j);}
40
While : continued
1. repeat statement zero or more times.
2. Control is passed to the next statement of while when expression is false (zero).
3. If expression is zero at first, skip while loop.
int n;
printf("\ninput an integer: ");scanf("%d", &n);while (--n) { ........ /* do something */} /* for positive integer OK, but for negative ....*/
while (--n > 0) { /* do something */ }
41
FOR
for ( init_expr; test_expr; update_expr)statementnext_statement...
int i, sum;
sum = 0;for (i = 1; i <= 10; ++i) /* say evaluation seq */ sum += i;
42
FOR : examples
for (i = 1; i <= n; ++i) factorial *= i;
for (j = 2; k % j == 0; ++j) { printf("\n%d is a divisor of %d", j, k); sum += j;}
i = 0; sum = 0;for ( ; i <= 10; ++i) sum += i;
i = 1; sum = 0;for ( ; i <= 10 ; ) sum += i++;
for ( ; ; ) ; /* loop forever */
43
COMMA operator
•expression1, expression2 • evaluate expression1, and then expression2, left to right,
value of operation is value of expression2
• comma operator : extends the flexibility of for loop• allowing you to include initialize, test or update expression in
a for loop
sum = 0, i = 1
for ( sum = 0, i = 1; i <= n; ++i) sum += i;
for ( sum = 0, i = 1; i <= n; sum += i, ++i) ; /* empty statement */
44
COMMA and FOR
#include <stdio.h>main(){int even_sum, odd_sum;int cnt, j, k, n;
scanf("%d", &n); /* get the number */
even_sum = odd_sum = 0;for (cnt = 0, j = 2, k = 1; cnt < n; ++cnt, j +=2, k += 2) { even_sum += j; odd_sum += k;}printf("%7d%7d\n", even_sum, odd_sum);}
45
Do while statement : exit condition loop
•do statement while (expression);• evaluate statement first and then evaluate
expression • If expression is true (nonzero) , repeat
statement.• If expression is false (zero), control passes to
next statement.do { printf("\n\ninput a positive integer: "); scanf("%d", &n);} while (n <= 0);
46
Fibonacci Number: example
#include <stdio.h>/* print fibonacci number and quotients */#define LIMIT 46main(){ int f0 = 1, f1 = 1, n, temp; printf("\n%7d%19d", 0, 1); /* fi(0) = 1 */ printf("\n%7d%19d", 1, 1); /* fi(1) = 1 */
temp = f0; for (n = 2; n <= LIMIT; ++n) {
f1 += temp; temp = f0;f0 = f1;
printf("\n%7d%19d%19.16f",n, f1, (double) f1 / (double) f0); } printf("\n\n");}
47
Prime Number: example
#include <stdio.h>/* print all primes less than LIMIT */#define LIMIT 1000main(){ int cnt = 0, j, k;
for (k = 2; k < LIMIT; ++k) { j = 2; while (k % j != 0) ++j; if (j == k) { ++cnt; /* a prime has been found */ if (cnt % 6 == 1) printf("\n"); printf("%12d", k); } } printf("\n\nthere are %d prime numbers less than %d\n", cnt, LIMIT);}
48
SWITCH statement : multiple choice
switch ( expression ) {case const_expr : statement1case const_expr : statement2default: statement3
}
• switch onst_expr(label): must have integer valued constants (type char is included), expressions formed solely from constants• Evaluate the expression.• Execute the case with label constant matching the value. If no match,
execute the default, or if no default, terminate.• Terminate the switch when a break stmt is encountered, or by "falling
off the end".
49
Switch: example
switch (c) { case 'a': ++a_cnt; break; case 'b': ++b_cnt; break; case 'c': ++c_cnt; /* what happen if no break?*/ case 'd': case 'D': ++dD_cnt; break; default: ++other_cnt; /* break is not necessary */}
50
BREAK and CONTINUE
• break: causes an exit from the innermost loop or switch.• terminate : for, while, do while, and switch
• continue: causes the current iteration of a loop to stop and the next iteration to begin immediately.• effective only in : for, while and do while
51
Break: example
.....while (1) { scanf("%f", &x); if (x < 0.0) break; /* exit loop if the value is negative */ printf("\n%f", sqrt(x));....} /* break jumps to here */
52
Continue: example
for (i = 0; i < TOTAL; ++i) { c = getchar(); if ( '0'<=c && c <='9') continue; ....... /* process other character */
/* continue transfers control to here to begin next iteration */}
53
Goto : unconditional branch
goto label;
………
label : statement
........ /* some program text */{ ........ if (flag != 0 ) goto error; ....... /* process when no error */}......error: printf("\nan error has occurred");.........
54
In general, GOTO should be AVOIDED!!!
printf()
• printf("format", var1, var2,....)• a library function to output various type of values.
• # of % :number of variable_or_constant• what happens if not matched?
printf(" This is a simple text\n");printf("This is an integer %d output\n", i);printf("These are integers: %d %d\n", i, 36);printf("This is a float number %f\n", f_number);printf("How about a char %c?", 'A');
55
I/O conversion specification
%d integer output decimal
%o integer output octal
%x integer output Hexadecimal
%u unsigned integer Decimal
%c character ascii
%s string output print till null char
%f floating float (decimal point)
%e floating float with exponent
56
Conversion Specification Modifier
• %10d : width of output ==10
• %-10d : output is printed beginning at the left of its field width. Normally, item is ending at the right of it’s field
• %9.3f : width = 9, number after decimal pt = 3
• %ld : the corresponding data item is long rather than int
57
FORMAT : example
main(){ printf("/%f/\n", 1234.56); printf("/%e/\n", 1234.56); printf("/%4.2f/\n", 1234.56); printf("/%3.1f/\n", 1234.56); printf("/%10.3f/\n", 1234.56); printf("/%-10.3f/\n", 1234.56); printf("/%10.5f/\n", 1234.5678901); printf("/%10.5e/\n", 1234.5678901);}
58
Scanf()
• scanf("format", &var1, &var2, ...);• input the value for variables as specified in format
• don’t use ‘&’ for string variables
scanf("%d %d", &i, &j);scanf("%c", &char);scanf("%f", &f_number);
scanf(“%s”, string);
59
LAB #4
• Write a credit calculation program. • Input:
• You should input the alphabet score of 3 courses
• Output:• The program calculates average credit by float (limit to 2.2f)
• Note:• don’t use + or – in input(just use A~F)
Ex ) Score: A B A
Ex ) credit:3.66
60
top related