Download presentation
Presentation is loading. Please wait.
Published byHarold Quinn Modified over 9 years ago
1
Dale Roberts Department of Computer and Information Science, School of Science, IUPUI Dale Roberts, Lecturer Computer Science, IUPUI E-mail: droberts@cs.iupui.edu CSCI 230 A First C Program
2
Dale Roberts Try Your First C Program #include /* I/O header file */ main(){ printf(“Hello world ”); printf(“Welcome to CSCI230\n“); printf(“I am John Smith\n”); printf(“I am John Smith\n”);} A C program contains one or more functions main() is the function name of your main (root) program { }: braces (left & right) to construct a block containing the statements of a function Every statement must end with a ; \ is called an escape character \n is an example of an escape sequence which indicates newline Other escape sequences are: \t \r \a \\ \” Exercise: Use any editor to type and then save your first program as main.c % gcc main.c % a.out and observe its result. header file – contains I/O routines pre-processor directive one statement main must be present in each C program statement terminator Indicates a program building block called function comment
3
Dale Roberts Identifiers Variable identifiers Begin with a letter or underscore: A-Z, a-z, _ The rest of the name can be letters, underscore, or digits Guarantee that east least the first 8 characters are significant (those come after the 8th character will be ignored) while most of C compiler allows 32 significant characters. Example : _abcABCTimetime _a1abcdefgh abcdefghi (may be the same as abcdefgh ) Case sensitive Keywords: reserved names (lexical tokens) autodoubleifstaticbreakelseintstruct caseentrylongswitchcharexternregister typedeffloatreturnuniondogosizeofcontinue …
4
Dale Roberts Fundamental Data Type Four Data Types Four Data Types (assume 2’s complement, byte machine) Data TypeAbbreviationSize (byte) Range char 1-128 ~ 127 unsigned char 10 ~ 255 int 2 or 4-2 15 ~ 2 15 -1 or -2 31 ~ 2 31 -1 unsigned intunsigned 2 or 40 ~ 65535 or 0 ~ 2 32 -1 short intshort 2-32768 ~ 32767 unsigned short intunsigned short 20 ~ 65535 long intlong 4-2 31 ~ 2 31 -1 unsigned long intunsigned long 40 ~ 2 32 -1 float4 double8 Note:2 7 = 128, 2 15 =32768, 2 31 = 2147483648 Complex and double complex are not available
5
Dale Roberts Variable Declarations type v 1,v 2,v 3, …, v n Example: int i; int j; float k; char c; short int x; long int y; unsigned int z; int a1, a2, a3, a4, a5;
6
Dale Roberts Numeric, Char, String Literals Literal Numeric literal fixed-point octal O32 (= 24 D ) (covered later) hexadecimal OxFE or Oxfe (=254 D ) (covered later) decimal int 32 long (explicit) 32L or 32l an ordinary integer literal that is too long to fit in an int is also too long for long floating-point No single precision is used; always use double for literal Example: 1.23 123.456e-7 0.12E
7
Dale Roberts Character literal (covered later) American Standard Code for Information Interchange (ASCII) Printable: single space32 ‘0’ - ‘9’48 - 57 ‘A’ - ‘Z’65 - 90 ‘a’ - ‘z’97 - 122 Nonprintable and special meaning chars ‘\n’ new line10 ‘\t’ tab 9 ‘\\’ back slash 9 ‘\’’ single quote39 ‘\0’ null 0 ‘\b’ back space 8 ‘\f’ formfeed12 ’\r’ carriage return13 ‘\”’ double quote34 ‘\ddd’ arbitrary bit pattern using 1-3 octal digits ‘\Xdd’ for Hexadecimal mode ‘\017’ or ‘\17’ Shift-Ins, ^O ‘\04’ or ‘\4’ or ‘\004’ EOT (^D) ‘\033’ or ‘\X1B’ Numeric, Char, String Literals
8
Dale Roberts String Literal will be covered in Array section String is a array of chars but ended by ‘\0’ String literal is allocated in a continuous memory space of Data Segment, so it can not be rewritten Example: “ ABCD ”... A B C D ‘\0’ Ans: 13+1 = 14 bytes Question: “I am a string” takes ? Bytes 4 chars but takes 5 byte spaces in memory Numeric, Char, String Literals
9
Dale Roberts Character literals & ASCII codes: char x; x=‘a’;/* x = 97*/ Notes: –‘a’ and “a” are different; why? ‘a’ is the literal 97 “a” is an array of character literals, { ‘a’, ‘\0’} or {97, 0} –“a” + “b” +”c” is invalid but ‘a’+’b’+’c’ = ? (hint: ‘a’ = 97 in ASCII) –if the code used is not ASCII code, one should check out each value of character Numeric, Char, String Literals 1 38 ‘a’ + ‘b’ + ‘c’ = 97 + 98 + 99 = 294 = 256 + 38 in the memory
10
Dale Roberts Initialization If a variable is not initialized, the value of variable may be either 0 or garbage depending on the storage class of the variable. int i=5; float x=1.23; char c=‘A’; int i=1, j,k=5; char c1 = ‘A’, c2 = 97; float x=1.23, y=0.1;
11
Dale Roberts Memory Concepts Each variable has a name, address, type, and value 1) 1) int x; 2) 2) scanf(“%d”, &x); 3) 3) user inputs 10 4) 4) x = 200; After the execution of (1)x After the execution of (2)x After the execution of (3)x After the execution of (4)x Previous value of x was overwritten 10 200
12
Dale Roberts Sample Problem Write a program to take two numbers as input data and print their sum, their difference, their product and their quotient. Problem Inputs float x, y;/* two items */ problem Output float sum;/* sum of x and y */ float difference;/* difference of x and y */ float product;/* product of x and y */ float quotient;/* quotient of x divided by y */ Pseudo Code: Declare variables of x and y; Prompt user to input the value of x and y; Print the sum of x and y; Print the difference of x and y; Print the product of x and y; If y not equal to zero, print the quotient of x divided by y
13
Dale Roberts Example Program #include int main(void) { float x,y; float sum; printf(“Enter the value of x:”); scanf(“%f”, &x); printf(“\nEnter the value of y:”); scanf(“%f”, &y); sum = x + y; printf(“\nthe sum of x and y is:%f”,sum); printf(“\nthe sum of x and y is:%f”,x+y); printf(“\nthe difference of x and y is:%f”,x-y); printf(“\nthe product of x and y is:%f”,x*y); if (y != 0) printf(“\nthe quotient of x divided by y is:%f”,x/y); else printf(“\nquotient of x divided by y does not exist!\n”); return(0); } function name list of argument along with their types return value and its type Body inequality operator
14
Dale Roberts Data Type Conversion Rule #1 char, short int float double Rule #2 (double ← long ← unsigned ← int) If either operand is double, the other is converted to double, and the result is double Otherwise, if either operand is long, the other is converted to long, and the result is long Otherwise, if either operand is unsigned, the other is converted to unsigned, and the result is unsigned Otherwise, the operand must be int
15
Dale Roberts Examples Example: c: char, u: unsigned, i: int, d: double, f:float, s: short,l: long, Expression Final Data TypeExplanation c – s / i int short int, int/int, char int, int-int u * 3 – i unsigned int(3) unsigned, unsigned*unsigned=unsigned, int unsigned, unsigned-unsigned=unsigned u * 3.0 – i double unsigned double, double*double, int double, double-double=double c + i int char int c + 1.0 double char int (rule 1), int double(rule 2) 3 * s * l long short int, int*int, int long, long*long
16
Dale Roberts Data Type Conversion (cont.) Note: 1. 1. Conversion of int to long preserves sign, so does short 2. 2. Var = expr f = d; /* round off */ i = f; /* truncates fractions part, if the number is too big to fit, the result is undetermined */ i = l; s = i; and c = i; /* may eliminate high order bits */
17
Dale Roberts 5. 5. If a specific type is required, the following syntax may be used, called cast operator. (type) expr Example : float f=2.5; x = (int)f + 1; /* the result is 3, Q: will f value be changed? */ 6. 6. Unsigned int to int: there is not actual conversion between int and unsigned int. Example : (Assuming 2’s complement machine and int is 2 bytes long) unsigned i = 65535; int j; j = i; /* j will be –1 */ j = -2; unsigned i = 1 + j; /* i= 65535 */
18
Dale Roberts Demo 1. Logging onto unix remotely 2. Simple unix commands 3. Editing under unix 4. Compiling 5. Running 6. Editing under Windows 7. Separating editing and compiling under unix 8. How to find an error
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.