Вы находитесь на странице: 1из 14

Department of Computer and Information Science,

School of Science, IUPUI

A First C Program

Dale Roberts, Lecturer


Computer Science, IUPUI
E-mail: droberts@cs.iupui.edu

Dale Roberts

Try Your First C Program


#include <stdio.h>
pre-processor directive

main()
Indicates a
{
program
building
block called
function

/* I/O header file */

comment

header file contains I/O routines

main must be present in each C program

one statement

printf(Hello world );
printf(Welcome to CSCI230\n);
printf(I am John Smith\n);

statement terminator

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.

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:

_abc
ABC
Time
time
_a1
abcdefghi (may be the same as abcdefgh)

abcdefgh

Case sensitive
Keywords: reserved names (lexical tokens)
auto
double if
static break
case
entry long
switch char
typedef float return union do

else
int
struct
extern register
go
sizeof continue

Dale Roberts

Fundamental Data Type


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

char

Abbreviation

Size
(byte)

Range

char

-128 ~ 127

unsigned char

0 ~ 255

2 or 4

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

2 or 4

0 ~ 65535 or 0 ~ 232-1

int

int

Note:

unsigned int

unsigned

short int

short

-32768 ~ 32767

unsigned short int

unsigned short

0 ~ 65535

long int

long

-231 ~ 231-1

unsigned long int

unsigned long

0 ~ 232-1

float

double

27 = 128, 215 =32768, 231 = 2147483648


Complex and double complex are not available

Dale Roberts

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;
Dale Roberts

Numeric, Char, String Literals


Literal
Numeric literal
fixed-point
octal

O32 (= 24D) (covered later)

hexadecimal

OxFE or Oxfe (=254D) (covered later)

decimal int
long (explicit)

32
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

Numeric, Char, String Literals


Character literal (covered later)

American Standard Code for Information Interchange (ASCII)


Printable:
single space
32
0 - 9
A - Z
a - z

48 - 57
65 - 90
97 - 122

Nonprintable and special meaning chars


\n
\\
\0
\f
\

new line
back slash
null
formfeed
double quote

10
9
0
12
34

\t
\
\b
\r

tab
single quote
back space
carriage return

9
39
8
13

\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>

Dale Roberts

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

ABCD

Example:
A

\0

...

4 chars but takes 5 byte spaces in memory

Question: I am a string takes ? Bytes


Ans: 13+1 = 14 bytes

Dale Roberts

Numeric, Char, String Literals


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)
a + b + c = 97 + 98 + 99 = 294 = 256 + 38
in the memory

38

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

Dale Roberts

Memory Concepts
Each variable has a name, address, type, and
value
int x;
2) scanf(%d, &x);
1)

3)

user inputs 10

4)

x = 200;
After
After
After
After

the
the
the
the

execution
execution
execution
execution

of
of
of
of

(1)
(2)
(3)
(4)

x
x
x
x

10
200

Previous value of x was overwritten


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;
problem Output
float sum;
float difference;
float product;
float quotient;

/* two items */
/*
/*
/*
/*

sum of x and y */
difference of x and y */
product of x and y */
quotient of x divided by y */

Dale Roberts

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

Dale Roberts

Example Program
#include <stdio.h>
function
int main(void)
name
list of argument along with their types
{
return value and its type
float x,y;
Body
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)
inequality operator
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);
}

Dale Roberts

Вам также может понравиться