A First C Program
Try#include <stdio.h> C/*Program */
Your First
I/O header file
pre-processor directive

header file – contains I/O routines

main()
Indicates a {
program
building
block called
function

comment

main must be present in each C program

one statement

printf(“Hello world ”);

statement terminator

printf(“Welcome to CSCI230n“);
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.



Variable identifiers
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
case entry

long

typedef float

else

switch char

return union

int struct

extern register

do go sizeof continue

…


Fundamental Data Type

Four Data Types (assume 2’s complement, byte machine)
Data Type

Size
(byte)

Range

char

1

-128 ~ 127

unsigned char

char

Abbreviation

1

0 ~ 255

2 or 4

-215 ~ 215-1 or -231 ~ 231-1

2 or 4

0 ~ 65535 or 0 ~ 232-1

int
unsigned int

short int

short

2

-32768 ~ 32767

unsigned short int

unsigned short

2

0 ~ 65535

long int

long

4

-231 ~ 231-1

unsigned long int

int

unsigned

unsigned long

4

0 ~ 232-1

float
double

Note:

4
8

27 = 128, 215 =32768, 231 = 2147483648
Complex and double complex are not available
Variable 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;


Numeric, Char, String Literals

Literal


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
Numeric, Char, String Literals

• Character literal (covered later)

• American Standard Code for Information Interchange (ASCII)

single space

32

‘0’ - ‘9’

48 - 57

‘A’ - ‘Z’

65 - 90

‘a’ - ‘z’

• Printable:

97 - 122

• Nonprintable and special meaning chars
„n‟

new line

„‟ back slash
„0‟ null

9
0

„f‟ formfeed

10

„t‟ tab

„‟‟ single quote 39
„b‟ back space
12

8

‟r‟ carriage return

„”‟ 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‟
„033‟ or „X1B‟

9

<esc>

EOT (^D)

13
Numeric, Char, String Literals


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
A B C D „0‟ ...
Example:

“ABCD”

4 chars but takes 5 byte spaces in memory

Question: “I am a string” takes ? Bytes
Ans: 13+1 = 14 bytes
Numeric,literals & ASCII codes:
• Character Char, String Literals
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)
„a‟ + „b‟ + „c‟ = 97 + 98 + 99 = 294 = 256 + 38
in the memory

1

38

– if the code used is not ASCII code, one should check out each
value of character
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;


Memory Concepts

Each variable has a name, address, type, and value
1)

int x;

2)

scanf(“%d”, &x);

3)

user inputs

4)

x = 200;

10

After the execution of (1)
After the execution of (2)

x

After the execution of (3)

x

After the execution of (4)

x

x

Previous value of x was overwritten

10
200
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;
/*
problem Output
float sum;
/*
float difference;
x and y */
float product; /*
y */
float quotient; /*
divided by y */

two items */
sum of x and y */
/* difference of
product of x and
quotient of x
Sample Problem


(cont.)

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
Example Program
#include <stdio.h>
int main(void)
{
float x,y;
float sum;

function
• name
• list of argument along with their types
• return value and its type
• Body

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);
}

inequality operator

First c program

  • 1.
    A First CProgram
  • 2.
    Try#include <stdio.h> C/*Program*/ Your First I/O header file pre-processor directive header file – contains I/O routines main() Indicates a { program building block called function comment main must be present in each C program one statement printf(“Hello world ”); statement terminator printf(“Welcome to CSCI230n“); 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. 
  • 3.
     Variable identifiers Identifiers  Begin witha 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 case entry long typedef float else switch char return union int struct extern register do go sizeof continue …
  • 4.
     Fundamental Data Type FourData Types (assume 2’s complement, byte machine) Data Type Size (byte) Range char 1 -128 ~ 127 unsigned char char Abbreviation 1 0 ~ 255 2 or 4 -215 ~ 215-1 or -231 ~ 231-1 2 or 4 0 ~ 65535 or 0 ~ 232-1 int unsigned int short int short 2 -32768 ~ 32767 unsigned short int unsigned short 2 0 ~ 65535 long int long 4 -231 ~ 231-1 unsigned long int int unsigned unsigned long 4 0 ~ 232-1 float double Note: 4 8 27 = 128, 215 =32768, 231 = 2147483648 Complex and double complex are not available
  • 5.
    Variable 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;
  • 6.
     Numeric, Char, StringLiterals Literal  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.
    Numeric, Char, StringLiterals • Character literal (covered later) • American Standard Code for Information Interchange (ASCII) single space 32 ‘0’ - ‘9’ 48 - 57 ‘A’ - ‘Z’ 65 - 90 ‘a’ - ‘z’ • Printable: 97 - 122 • Nonprintable and special meaning chars „n‟ new line „‟ back slash „0‟ null 9 0 „f‟ formfeed 10 „t‟ tab „‟‟ single quote 39 „b‟ back space 12 8 ‟r‟ carriage return „”‟ 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‟ „033‟ or „X1B‟ 9 <esc> EOT (^D) 13
  • 8.
    Numeric, Char, StringLiterals  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 A B C D „0‟ ... Example: “ABCD” 4 chars but takes 5 byte spaces in memory Question: “I am a string” takes ? Bytes Ans: 13+1 = 14 bytes
  • 9.
    Numeric,literals & ASCIIcodes: • Character Char, String Literals 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) „a‟ + „b‟ + „c‟ = 97 + 98 + 99 = 294 = 256 + 38 in the memory 1 38 – if the code used is not ASCII code, one should check out each value of character
  • 10.
    Initialization  If a variableis 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.
     Memory Concepts Each variablehas a name, address, type, and value 1) int x; 2) scanf(“%d”, &x); 3) user inputs 4) x = 200; 10 After the execution of (1) After the execution of (2) x After the execution of (3) x After the execution of (4) x x Previous value of x was overwritten 10 200
  • 12.
    Sample Problem  Write aprogram to take two numbers as input data and print their sum, their difference, their product and their quotient. Problem Inputs float x, y; /* problem Output float sum; /* float difference; x and y */ float product; /* y */ float quotient; /* divided by y */ two items */ sum of x and y */ /* difference of product of x and quotient of x
  • 13.
    Sample Problem  (cont.) Pseudo Code: Declarevariables 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.
    Example Program #include <stdio.h> intmain(void) { float x,y; float sum; function • name • list of argument along with their types • return value and its type • Body 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); } inequality operator