Dale Roberts
Department of Computer and Information Science,
School of Science, IUPUI
Dale Roberts, Lecturer
Computer Science, IUPUI
E-mail: droberts@cs.iupui.edu
A First C Program
Dale Roberts
Try Your First C ProgramTry Your First C Program
#include <stdio.h> /* I/O header file */#include <stdio.h> /* I/O header file */
main()main()
{{
printf(“Hello world ”);printf(“Hello world ”);
printf(“Welcome to CSCI230n“);printf(“Welcome to CSCI230n“);
printf(“I am John Smithn”);printf(“I am John Smithn”);
}}
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
Dale Roberts
IdentifiersIdentifiers
Variable identifiersVariable 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:
_abc ABC Time time _a1 abcdefgh
abcdefghi (may be the same as abcdefgh)
Case sensitive
Keywords: reserved names (lexical tokens)
auto double if static break else int struct
case entry long switch char extern register
typedef float return union do go sizeof continue
…
Dale Roberts
Fundamental Data TypeFundamental Data Type
Four Data TypesFour Data Types (assume 2’s complement, byte machine)
Data Type Abbreviation Size
(byte)
Range
char char 1 -128 ~ 127
unsigned char 1 0 ~ 255
int
int 2 or 4 -215
~ 215
-1 or -231
~ 231
-1
unsigned int unsigned 2 or 4 0 ~ 65535 or 0 ~ 232
-1
short int short 2 -32768 ~ 32767
unsigned short int unsigned short 2 0 ~ 65535
long int long 4 -231
~ 231
-1
unsigned long int unsigned long 4 0 ~ 232
-1
float 4
double 8
Note: 27
= 128, 215
=32768, 231
= 2147483648
Complex and double complex are not available
Dale Roberts
Variable DeclarationsVariable Declarations
type v1,v2,v3, …, vn
Example:
int i;
int j;
float k;
char c;
short int x;
long int y;
unsigned int z;
int a1, a2, a3, a4, a5;
Dale Roberts
Numeric, Char, String LiteralsNumeric, Char, String Literals
LiteralLiteral
Numeric literal
fixed-point
octal O32 (= 24D) (covered later)
hexadecimal OxFE or Oxfe (=254D) (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
Dale Roberts
• Character literal (covered later)
• American Standard Code for Information Interchange (ASCII)
• Printable: single space 32
‘0’ - ‘9’ 48 - 57
‘A’ - ‘Z’ 65 - 90
‘a’ - ‘z’ 97 - 122
• Nonprintable and special meaning chars
‘n’ new line 10 ‘t’ tab 9
‘’ back slash 9 ‘’’ single quote 39
‘0’ null 0 ‘b’ back space 8
‘f’ formfeed 12 ’r’ carriage return 13
‘”’ double quote 34
‘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’ <esc>
Numeric, Char, String LiteralsNumeric, Char, String Literals
Dale Roberts
String LiteralString 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 LiteralsNumeric, Char, String Literals
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 LiteralsNumeric, Char, String Literals
1 38
‘a’ + ‘b’ + ‘c’ = 97 + 98 + 99 = 294 = 256 + 38
in the memory
Dale Roberts
InitializationInitialization
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;
Dale Roberts
Memory ConceptsMemory Concepts
Each variable has a name, address, type, andEach variable has a name, address, type, and
valuevalue
1) int x;
2) scanf(“%d”, &x);
3) user inputs 10
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
Dale Roberts
Sample ProblemSample Problem
Write a program to take two numbers as input data andWrite a program to take two numbers as input data and
print their sum, their difference, their product and theirprint their sum, their difference, their product and their
quotient.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 */
Dale Roberts
Sample ProblemSample Problem (cont.)(cont.)
Pseudo Code: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
Dale Roberts
Example ProgramExample Program
#include <stdio.h>
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

C language first program

  • 1.
    Dale Roberts Department ofComputer and Information Science, School of Science, IUPUI Dale Roberts, Lecturer Computer Science, IUPUI E-mail: droberts@cs.iupui.edu A First C Program
  • 2.
    Dale Roberts Try YourFirst C ProgramTry Your First C Program #include <stdio.h> /* I/O header file */#include <stdio.h> /* I/O header file */ main()main() {{ printf(“Hello world ”);printf(“Hello world ”); printf(“Welcome to CSCI230n“);printf(“Welcome to CSCI230n“); printf(“I am John Smithn”);printf(“I am John Smithn”); }} 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 IdentifiersIdentifiers Variable identifiersVariableidentifiers 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: _abc ABC Time time _a1 abcdefgh abcdefghi (may be the same as abcdefgh) Case sensitive Keywords: reserved names (lexical tokens) auto double if static break else int struct case entry long switch char extern register typedef float return union do go sizeof continue …
  • 4.
    Dale Roberts Fundamental DataTypeFundamental Data Type Four Data TypesFour Data Types (assume 2’s complement, byte machine) Data Type Abbreviation Size (byte) Range char char 1 -128 ~ 127 unsigned char 1 0 ~ 255 int int 2 or 4 -215 ~ 215 -1 or -231 ~ 231 -1 unsigned int unsigned 2 or 4 0 ~ 65535 or 0 ~ 232 -1 short int short 2 -32768 ~ 32767 unsigned short int unsigned short 2 0 ~ 65535 long int long 4 -231 ~ 231 -1 unsigned long int unsigned long 4 0 ~ 232 -1 float 4 double 8 Note: 27 = 128, 215 =32768, 231 = 2147483648 Complex and double complex are not available
  • 5.
    Dale Roberts Variable DeclarationsVariableDeclarations type v1,v2,v3, …, vn 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 LiteralsNumeric, Char, String Literals LiteralLiteral Numeric literal fixed-point octal O32 (= 24D) (covered later) hexadecimal OxFE or Oxfe (=254D) (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 • Characterliteral (covered later) • American Standard Code for Information Interchange (ASCII) • Printable: single space 32 ‘0’ - ‘9’ 48 - 57 ‘A’ - ‘Z’ 65 - 90 ‘a’ - ‘z’ 97 - 122 • Nonprintable and special meaning chars ‘n’ new line 10 ‘t’ tab 9 ‘’ back slash 9 ‘’’ single quote 39 ‘0’ null 0 ‘b’ back space 8 ‘f’ formfeed 12 ’r’ carriage return 13 ‘”’ double quote 34 ‘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’ <esc> Numeric, Char, String LiteralsNumeric, Char, String Literals
  • 8.
    Dale Roberts String LiteralStringLiteral 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 LiteralsNumeric, Char, String Literals
  • 9.
    Dale Roberts • Characterliterals & 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 LiteralsNumeric, Char, String Literals 1 38 ‘a’ + ‘b’ + ‘c’ = 97 + 98 + 99 = 294 = 256 + 38 in the memory
  • 10.
    Dale Roberts InitializationInitialization If avariable 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 ConceptsMemoryConcepts Each variable has a name, address, type, andEach variable has a name, address, type, and valuevalue 1) int x; 2) scanf(“%d”, &x); 3) user inputs 10 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 ProblemSampleProblem Write a program to take two numbers as input data andWrite a program to take two numbers as input data and print their sum, their difference, their product and theirprint their sum, their difference, their product and their quotient.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 */
  • 13.
    Dale Roberts Sample ProblemSampleProblem (cont.)(cont.) Pseudo Code: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
  • 14.
    Dale Roberts Example ProgramExampleProgram #include <stdio.h> 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