0% found this document useful (0 votes)
16 views57 pages

399 33 Powerpoint-Slides Chapter2

The document provides an overview of the basics of the C programming language, including its structure, keywords, data types, and operators. It outlines the steps for developing C programs, including writing, compiling, and executing them, as well as the importance of header files and the main function. Additionally, it discusses the classification of constants and operators, and the attributes of variables in C.

Uploaded by

nirnika
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views57 pages

399 33 Powerpoint-Slides Chapter2

The document provides an overview of the basics of the C programming language, including its structure, keywords, data types, and operators. It outlines the steps for developing C programs, including writing, compiling, and executing them, as well as the importance of header files and the main function. Additionally, it discusses the classification of constants and operators, and the attributes of variables in C.

Uploaded by

nirnika
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPT, PDF, TXT or read online on Scribd
You are on page 1/ 57

Programming

in C
Pradip Dey & Manas Ghosh

© Oxford University Press 2013. All rights reserved.


CHAPTER
Basics of C
2

© Oxford University Press 2013. All rights reserved.


OBJECTIVE

• Understand the basic structure of a program in C .


• Learn the commands used in UNIX/LINUX and MS-DOS for
compiling and running a program in C.
• Obtain a preliminary idea of the keywords in C.
• Learn the data types, variables, constants, operators, and
expressions in C.
• Understand and grasp the precedence and associativity rules
of operators in C.
• Get acquainted with the rules of type conversions in C.

© Oxford University Press 2013. All rights reserved.


INTRODUCTION

Ken Thompson at Bell Labs, USA, wrote his own


variant over Martin Richards’s Basic Combined
Programming Language and called it B .
Dennis Ritchie, at Bell Labs, is credited for
designing C in the early 1970s.
Today C is a high-level language which also
provides the capabilities that enable the
programmers to ‘get in close’ with the hardware
and allows them to interact with the computer on a
much lower level.

© Oxford University Press 2013. All rights reserved.


KEY WORDS

ASCII : It is a standard code for representing


characters as numbers that is used on most
microcomputers, computer terminals, and
printers. In addition to printable characters, the
ASCII code includes control characters to indicate
carriage return, backspace, etc.
Assembler :The assembler creates the object
code.
Associativity :The associativity of operators
determines the order in which operators of equal
precedence are evaluated when they occur in the
same expression. Most operators have a left-to-
right associativity, but some have right-to-left
associativity.

© Oxford University Press 2013. All rights reserved.


KEY WORDS

Compiler: A system software that translates the source


code to assembly code.
Constant :A constant is an entity that doesn’t change.
Data type: The type, or data type, of a variable
determines a set of values that the variable might take
and a set of operations that can be applied to those
values.
Debugger: A debugger is a program that enables you
to run another program step-by-step and examine the
value of that program’s variables.
Identifier: An identifier is a symbolic name used in a
program and defined by the programmer.

© Oxford University Press 2013. All rights reserved.


KEY WORDS

IDE :An Integrated Development Environment or


IDE is an editor which offers a complete
environment for writing, developing, modifying,
deploying, testing, and debugging the programs.
Identifier: An identifier or name is a sequence of
characters invented by the programmer to identify
or name a specific object.
Keyword: Keywords are explicitly reserved words
that have a strict meaning as individual tokens to
the compiler. They cannot be redefined or used in
other contexts.

© Oxford University Press 2013. All rights reserved.


KEY WORDS

Linker: If a source file references library functions


or functions defined in other source files, the linker
combines these functions to create an executable
file.
Precedence :The precedence of operators
determines the order in which different operators
are evaluated when they occur in the same
expression. Operators of higher precedence are
applied before operators of lower precedence.
Pre processor :The C pre processor is used to
modify the source program before compilation
according to the pre processor directives specified.

© Oxford University Press 2013. All rights reserved.


KEY WORDS

Lvalue: An lvalue is an expression to which a


value can be assigned.
Rvalue :An rvalue can be defined as an expression
that can be assigned to an lvalue.
Token: A token is one or more symbols understood
by the compiler that help it interpret your code.
Word :A word is the natural unit of memory for a
given computer design. The word size is the
computer’s preferred size for moving units of
information around; technically it’s the width of the
processor’s registers.

© Oxford University Press 2013. All rights reserved.


KEY WORDS

Whitespace Space, newline, tab character and


comment are collectively known as whitespace.
Variable: A variable is a named memory location.
Every variable has a type, which defines the possible
values that the variable can take, and an identifier,
which is the name by which the variable is referred.
Bug:Any type of error in a program is known as bug.
There are three types of errors that may occur:
Compile errors,
Linking errors,
Runtime errors

© Oxford University Press 2013. All rights reserved.


WHY LEARN C?

• There are a large number of programming languages


in the world today even so, there are several reasons
to learn C, some of which are stated as follows:
a . C is quick.
b . C is a core language : In computing, C is a
general purpose, cross-platform, block structured
procedural, imperative computer programming
language.
c . C is a small language: C has only thirty-two
keywords. This makes it relatively easy to learn
compared to bulkier languages.
d . C is portable.

© Oxford University Press 2013. All rights reserved.


DEVELOPING PROGRAMS IN C
• There are mainly three steps:
1. Writing the C program
2. Compiling the program and
3. Executing it.
• For these steps, some software components are
required, namely an operating system, a text
editor(integrated development environment), the C compiler,
assembler, and linker.
• C uses a semicolon as a statement terminator; the
semicolon is required as a signal to the compiler to
indicate that a statement is complete.
• All program instructions, which are also called
statements, have to be written in lower case characters.

© Oxford University Press 2013. All rights reserved.


DEVELOPING PROGRAMS IN C

© Oxford University Press 2013. All rights reserved.


COMPILATION : BORLAND

• 1. Open MS-DOS prompt.


• 2. At the prompt c:\windows>give the following command:
c:\windows> cd c:\borland\bcc55\bin Press <Enter>.
This changes the directory to c:\borland\bcc55\bin and the
following prompt appears: c:\borland\bcc55\bin>
Now, enter bcc32 -If:\borland\bcc55\include-Lf:\borland\
bcc55\Lib c:\cprg\first.c
• 3. Press <Enter>.

© Oxford University Press 2013. All rights reserved.


ILLUSTRATED VERSION OF A PROGRAM

© Oxford University Press 2013. All rights reserved.


BACKSLASH CODE

© Oxford University Press 2013. All rights reserved.


PARTS OF C PROGRAMS
Header File
The header files, usually incorporate data types,
function declarations and macros, resolves this
issue. The file with .h extension is called header
file, because it’s usually included at the head of a
program.
Every C compiler that conforms to the
international standard (ISO/IEC 9899) for the
language will have a set of standard header files
supplied with it.
The header files primarily contain declarations
relating to standard library functions and macros
that are available with C.

© Oxford University Press 2013. All rights reserved.


STANDARD HEADER FILES

During compilation, the compilers perform type


checking to ensure that the calls to the library and
other user-defined functions are correct. This form
of checking helps to ensure the semantic
correctness of the program.

© Oxford University Press 2013. All rights reserved.


PHILOSOPHY : MAIN
• main() is a user defined function. main() is the first
function in the program which gets called when the
program executes. The start up code c calls main()
function. We can’t change the name of the main()
function.
• main() is must.
• According to ANSI/ISO/IEC 9899:1990 International
Standard for C, the function called at program start up is
named main. The implementation declares no prototype
for this function. It can be defined with no parameters:
int main(void) { /* ... */ }
• or with two parameters (referred to here as argc and
argv) :
• int main(int argc, char *argv[ ]) { /* ... */ }

© Oxford University Press 2013. All rights reserved.


STRUCTURE : C PROGRAM

© Oxford University Press 2013. All rights reserved.


DECLARATION & DEFINITION

Declaration means describing the type of a data


object to the compiler but not allocating any
space for it.
A declaration announces the properties of a data object or
a function. If a variable or function is declared and then
later make reference to it with data objects that do not
match the types in the declaration, the compiler will
complain.
data_type variable_name_1,
Definition means declaration of a data object and
also allocating space to hold the data object.
A definition, on the other hand, actually sets aside
storage space (in the case of a data object) or
indicates the sequence of statements to be carried
out (in the case of a function).
© Oxford University Press 2013. All rights reserved.
VARIABLES:ATTRIBUTES

All variables have three important


attributes:
A data type that is established when the variable
is defined, e.g., integer, real, character. Once
defined , the type of a C variable cannot be
changed.
 A name of the variable.
 A value that can be changed by assigning a new
value to the variable. The kind of values a variable
can assume depends on its type. For example, an
integer variable can only take integer values, e.g.,
2, 100, –12.

© Oxford University Press 2013. All rights reserved.


CLASSIFICATION :DATA TYPE

© Oxford University Press 2013. All rights reserved.


BASIC DATA TYPES:SIZE & RANGE

16 bit computer:

32 bit computer:

© Oxford University Press 2013. All rights reserved.


SPECIFIER OR MODIFIERS

In addition, C has four type specifiers or modifiers


and three type qualifiers.
Each of these type modifiers can be applied to
the base type int.
The modifiers signed and unsigned can also be
applied to the base type char.
In addition, long can be applied to double.
When the base type is omitted from a
declaration, int is assumed.
The type void does not have these modifiers.

© Oxford University Press 2013. All rights reserved.


SPECIFIERS : DATA TYPES

The specifiers and qualifiers for the data types


can be broadly classified into three types:
Size specifiers— short and long
Sign specifiers— signed and unsigned
 Type qualifiers— const, volatile and restrict

© Oxford University Press 2013. All rights reserved.


© Oxford University Press 2013. All rights reserved.
PROGRAM STATEMENTS
A statement is a syntactic constructions that
performs an action when a program is executed.
All C program statements are terminated with a
semi-colon (;).

© Oxford University Press 2013. All rights reserved.


CONT.
• Declaration :It is a program statement that serves to
communicate to the language translator information
about the name and type of the data objects needed
during program execution.
• Expression statement: It is the simplest kind of
statement which is no more than an expression
followed by a semicolon. An expression is a sequence
of operators and operands that specifies computation
of a value . Example :x = 4
• Compound statement is a sequence of
statements that may be treated as a single
statement in the construction of larger statements.
• Labelled statements can be used to mark any
statement so that control may be transferred to the
statement by switch statement.

© Oxford University Press 2013. All rights reserved.


CONT.

Control statement is a statement whose


execution results in a choice being made as to
which of two or more paths should be followed. In
other words, the control statements determine the
‘flow of control’ in a program.
Selection statements allow a program to select a
particular execution path from a set of one or more
alternatives. Various forms of the if..else statement belong to
this category.
Iteration statements are used to execute a group of
one or more statements repeatedly. “while, for, and
do..while” statements falls under this group.
Jump statements cause an unconditional jump to some
other place in the program. Goto statement falls in this group

© Oxford University Press 2013. All rights reserved.


HOW THE INTEGERS ARE STORED IN
MEMORY
Storing unsigned integers is a straightforward
process . The number is changed to the corresponding
binary form & the binary representation is stored.

© Oxford University Press 2013. All rights reserved.


HOW THE INTEGERS ARE STORED IN
MEMORY
For signed integer types, the bits of the object
representation shall be divided into three groups:
value bits, padding bits, and the sign bit. There
need not be any padding bits; there shall be
exactly one sign bit (if there are M value bits in the
signed type and N in the unsigned type, then M ≤
N). If the sign bit is zero, it shall not affect the
resulting value. If the sign bit is one, the value shall
be modified in one of the following ways:
 the corresponding value with sign bit 0 is negated(sign and
magnitude);
the sign bit has the value −(2N) (2’s complement);
 the sign bit has the value −(2N − 1) (1’s complement).

© Oxford University Press 2013. All rights reserved.


INTEGER STORING:PROCESS

© Oxford University Press 2013. All rights reserved.


KEY WORDS

Compiler vendors (like Microsoft, Borland ,etc.)


provide their own keywords apart from the ones
mentioned below. These include extended
keywords like near, far, asm, etc.

© Oxford University Press 2013. All rights reserved.


CONSTANT
A constant is an explicit data value written by the
programmer. Thus, it is a value known to the compiler at
compiling time.
In ANSI C, a decimal integer constant is treated as an
unsigned long if its magnitude exceeds that of the
signed long. An octal or hexadecimal integer that
exceeds the limit of int is taken to be unsigned; if it
exceeds this limit, it is taken to be long; and if it
exceeds this limit, it is treated as an unsigned long.
 An integer constant is regarded as unsigned if its value
is followed by the letter ‘u’ or ‘U’, e.g.,0x9999u; it is
regarded as unsigned long if its value is followed by ‘u’
or ‘U’ and ‘l’ or ‘L’, e.g., OxFFFFFFFFul.

© Oxford University Press 2013. All rights reserved.


SPECIFICATIONS OF DIFFERENT CONSTANTS

© Oxford University Press 2013. All rights reserved.


CLASSIFICATION:OPERATORS IN C

© Oxford University Press 2013. All rights reserved.


DIFFERENT OPERATORS

© Oxford University Press 2013. All rights reserved.


ARITHMETIC OPERATOR

There are three types of arithmetic operators in


C:binary,unary, and ternary.
Binary operators: C provides five basic
arithmetic binary operators.
Arithmetic binary operators:

© Oxford University Press 2013. All rights reserved.


UNARY OPERATION
Unary operators: The unary ‘–’ operator negates
the value of its operand (clearly, a signed number).
A numeric constant is assumed positive unless it is
preceded by the negative operator. That is, there is
no unary ‘+’. It is implicit. Remember that -x does
not change the value of x at the location where it
permanently resides in memory.
Unary increment and decrement operators ‘+
+’ and ‘--’ operators increment or decrement the
value in a variable by 1.
Basic rules for using ++ and – – operators:
The operand must be a variable but not a constant or an
expression.
 The operator ++ and -- may precede or succeed the
operand. © Oxford University Press 2013. All rights reserved.
POSTFIX

Postfix:
• (a) x = a++;
First action: store value of a in memory location for variable
x.
Second action: increment value of a by 1 and store result in
memory location for variable a.
• (b) y = b––;
First action: put value of b in memory location for variable y.
 Second action: decrement value of b by 1 and put result in
memory location for variable b.

© Oxford University Press 2013. All rights reserved.


PREFIX
Prefix :
• (a) x = ++a;
First action: increment value of a by 1 and store result in
memory location for variable a.
Second action: store value of a in memory location for
variable x.
• (b) y = ––b;
First action: decrement value of b by 1 and put result in
memory location for variable b.
Second action: put value of b in memory location for variable
y.

© Oxford University Press 2013. All rights reserved.


RELATIONAL OPERATORS

C provides six relational operators for comparing


numeric quantities. Relational operators evaluate to 1,
representing the true outcome, or 0, representing the
false outcome.

© Oxford University Press 2013. All rights reserved.


LOGICAL OPERATORS

C provides three logical operators for forming


logical expressions. Like the relational operators,
logical operators evaluate to 1 or 0.
Logical negation is a unary operator that negates the logical
value of its single operand. If its operand is non-zero, it
produces 0, and if it is 0, it produces 1.
Logical AND produces 0 if one or both its operands evaluate
to 0. Otherwise, it produces 1.
Logical OR produces 0 if both its operands evaluate to 0.
Otherwise , it produces 1.

© Oxford University Press 2013. All rights reserved.


BIT WISE OPERATORS
C provides six bitwise operators for manipulating
the individual bits in an integer quantity . Bitwise
operators expect their operands to be integer
quantities and treat them as bit sequences.
Bitwise negation is a unary operator that complements the
bits in its operands.
Bitwise AND compares the corresponding bits of its
operands and produces a 1 when both bits are 1, and 0
otherwise.
 Bitwise OR compares the corresponding bits of its operands
and produces a 0 when both bits are 0, and 1 otherwise.
Bitwise exclusive or compares the corresponding bits of its
operands and produces a 0 when both bits are 1 or both bits
are 0, and 1 otherwise.

© Oxford University Press 2013. All rights reserved.


BIT WISE OPERATORS

© Oxford University Press 2013. All rights reserved.


CONDITIONAL OPERATOR

The conditional operator has three expressions.


 It has the general form expression1 ? expression2 :
expression3
First, expression1 is evaluated; it is treated as a logical
condition.
If the result is non-zero, then expression2 is evaluated
and its value is the final result. Otherwise, expression3 is
evaluated and its value is the final result.
For example,int m = 1, n = 2, min;
min = (m < n ? m : n); /* min is assigned a value
1 */
In the above example, because m is less than n,
m<n expression evaluates to be true, therefore,
min is assigned the value m, i.e., 1.

© Oxford University Press 2013. All rights reserved.


COMMA OPERATOR

This operator allows the evaluation of multiple


expressions, separated by the comma, from left to
right in order and the evaluated value of the
rightmost expression is accepted as the final result.
The general form of an expression using a comma
operator is
Expression M = (expression1, expression2,
…,expression N);
where the expressions are evaluated strictly from
left to right and their values discarded, except for
the last one, whose type and value determine the
result of the overall expression.

© Oxford University Press 2013. All rights reserved.


SIZEOF OPERATOR
• C provides a useful operator, sizeof, for calculating the size
of any data item or type. It takes a single operand that may
be a type name (e.g., int) or an expression (e.g.,100) and
returns the size of the specified entity in bytes .The
outcome is totally machine-dependent.
For example:

© Oxford University Press 2013. All rights reserved.


EXPRESSION EVOLUATION: PRECEDENCE &
ASSOCIATIVITY
• Evaluation of an
expression in C is very
important to understand.
Unfortunately there is no
‘BODMAS’ rule in C
language as found in
algebra.
• The precedence of
operators determines the
order in which different
operators are evaluated
when they occur in the
same expression.
Operators of higher
precedence are applied
before operators of lower
precedence.

© Oxford University Press 2013. All rights reserved.


EXAMPLE : OPERATOR PRECEDENCE

© Oxford University Press 2013. All rights reserved.


LVALUES AND RVALUES
An lvalue is an expression to which a value can be
assigned .
An rvalue can be defined as an expression that can be
assigned to an lvalue.
The lvalue expression is located on the left side of an
assignment statement, whereas an rvalue is located on
the right side of an assignment statement.
The address associated with a program variable in C is
called its lvalue; the contents of that location are its
rvalue, the quantity that is supposed to be the value of
the variable.
The rvalue of a variable may change as program
execution proceeds; but never its lvalue. The
distinction between lvalues and rvalues becomes
sharper if one considers the assignment operation with
variables a and b.

© Oxford University Press 2013. All rights reserved.


LVALUES AND RVALUES
 For example :
a = b;
b, on the right-hand side
of the assignment
operator, is the quantity
to be found at the address
associated with b, i.e., an
rvalue. a is assigned the
value stored in the
address associated with b.
a, on the left-hand side, is
the address at which the
contents are altered as a
result of the assignment.
a is an lvalue. The
assignment operation
deposits b’s rvalue at a’s
lvalue.
© Oxford University Press 2013. All rights reserved.
TYPE CONVERSION
• Though the C compiler performs automatic type
conversions, the programmer should be aware of what
is going on so as to understand how C evaluates
expressions.
When a C expression is evaluated, the resulting value has a
particular data type. If all the variables in the expression are
of the same type, the resulting type is of the same type as
well. For example, if x and y are both of int type , the
expression x +y is of int type as well.
The smallest to the largest data types conversion with
respect to size is along the arrow as shown below:

© Oxford University Press 2013. All rights reserved.


RULE:TYPE CONVERSION
float operands are converted to
double.
 char or short (signed or unsigned)
are converted to int (signed or
unsigned).
 If any one operand is double, the
other operand is also converted to
double, and that is the type of the
result; or
If any one operand is long, the other
operand is treated as long, and that
is the type of the result;
 If any one operand is of type
unsigned, the other operand is
converted to unsigned, or the only
remaining possibility is that Both
operands must be int, and that is
also the type of the result.
© Oxford University Press 2013. All rights reserved.
COMPLEX NUMBERS
A complex number is a number with a real part and an
imaginary part. It is of the form a + bi where i is the
square root of minus one, and a and b are real
numbers. a is the real part, and bi is the imaginary part
of the complex number. A complex number can also be
regarded as an ordered pair of real numbers (a, b).
According to C99, three complex types are supported:
float complex
double complex
long double complex
C99 implementations support three imaginary types
also :
float imaginary
double imaginary
long double imaginary

© Oxford University Press 2013. All rights reserved.


COMPLEX NUMBERS
To use the complex types, the complex.h header
file must be included. The complex.h header file
defines some macros and several functions that
accept complex numbers and return complex
numbers.
To use the complex types, the complex.h header
file must be included. The complex.h header file
defines some macros and several functions that
accept complex numbers and return complex
numbers. In particular, the macro I represents the
square root of –1. It enables to do the following:
double complex c1 = 3.2 + 2.0 * I;
fl oat imaginary c2= -5.0 * I;

© Oxford University Press 2013. All rights reserved.

You might also like