Introduction To C: Johra Muhammad Moosa
Introduction To C: Johra Muhammad Moosa
Introduction To C: Johra Muhammad Moosa
Computer Programming
Introduction to C
Prepared by
Johra Muhammad Moosa
Assistant Professor
CSE, BUET
Modified by
Madhusudan Basak
Assistant Professor
CSE, BUET
Class Information
• 3 credit course
• 3 classes/week – Monday, Tuesday and Wednesday
• Can be change based on previous declaration
• 4 Class Tests will be taken and BEST 3 will be counted
Evaluation Criteria
• 3 credit course – Total 300 Marks
• Attendance – 10%
• Class Test – 20%
• Term Final Exam – 70%
Your Responsibilities
• What to do
– Give Concentration
– Ask relevant questions
• What not to do
– Showing off
– Gossiping
– Disturbing teacher and others
Why you need a programming language?
• To communicate with a machine/computer
• Robotics
• microcontrollers: automobiles and airplanes
• Embedded processors: phones, portable electronics, etc.
• DSP (Digital Signal Processing) processors: digital audio and TV systems
About C
• Invented and first implemented by Dennis Ritchie
(1941-2011)
• Middle level language
• Structured and disciplined approach to computer
program
• ANSI (American National Standards Institute)
approved a standard in 1989
A first look at C
function
start of program
statement
parameter
end of program
Library function
A first look at C
# include <stdio.h>
int main(void)
{
printf(“This is a short C program”);
return 0;
}
# include
• # symbol indicates a preprocessor
• It means it has to be done before compilation
• #include to include the contents of the header file
A first look at C
# include<stdio.h>
int main(void)
{
printf(“This is a short C program”);
return 0;
}
<stdio.h>
• Name of the header file
• Header files: constants, functions, other declarations
• You must know which header you need
• Use help and documentation to find out
A first look at C
# include<stdio.h>
int main(void)
{
printf(“This is a short C program”);
return 0;
}
<stdio.h>
• Enclosed in < > (header in default place)
• May be enclosed in “ ” (header is in the same folder as the source)
• stdio.h : standard input/output header file
• Needed for the function: printf()
A first look at C
# include <stdio.h>
int main(void)
{
printf(“This is a short C program”);
return 0;
}
main
• Every C program must have a ‘main’ function
• Program starts from the 1st line in ‘main’
• Parameter type void
• Return type int
• int main()
A first look at C
# include <stdio.h>
int main(void)
{
printf(“This is a short C program”);
return 0;
}
{ } curly braces
• The curly braces are like containers
• The code between two braces are called a block
• Missing either brace will generate compile error
• “Compound Statement missing”
A first look at C
# include <stdio.h>
int main(void)
{
printf(“This is a short C program”);
return 0;
}
{ } curly braces
• Left curly brace {
• Begin the body of function
• Right Curly brace }
• End of the function
A first look at C
# include <stdio.h>
int main(void)
{
printf(“This is a short C program”);
return 0;
}
printf
• A function given in stdio.h
• Prints the text given as the parameter
A first look at C
# include <stdio.h>
int main(void)
{
printf(“This is a short C program”) ;
return 0;
}
; (semicolon)
• Every C statement must end with a ;
• Otherwise compiler will generate an error
• Statement Missing
A first look at C
# include <stdio.h>
int main(void)
{
printf(“This is a short C program”);
return 0;
}
return 0
• Indicate how the program exited
• return 0 means that execution was successful and there was no error.
• abnormal termination is usually signaled by a non-zero return
• but there is no standard for how non-zero codes are interpreted.
• When a program is called by another program
Basic Structure of a C Program
• Function
– Building Block
– Named subroutine
• Can be called by other parts of the program
– A program may contain more than one functions
– One of which must be main()
• Where execution begins
• Standard library
• Provides library functions
• Example: I/O operation, string, math … etc
Basic Structure of a C Program
• Header file
– .h extension
– Add header file using #include (preprocessor directive)
• Statement
– Action performed by the program
– Perform operations
– End with a semicolon (;)
– Two or more statements can be placed on a single line
• Case sensitive
– Main & main are different
• Indentation
– Not a programming decision
Programming Tools
• Editors
• Compiler
• Standard Library
• Help files & documentations
• IDE
Editors
• The file that contains the source code.
– May highlight different parts to help better understand
Compilers
• What does it do?
– Match syntax
– Find Errors
– Prepare object code
• instructions in a computer language, usually a machine code
Standard Library
• What does it do?
– Provide implementations of some basic and important functions
– Usually these functions are very efficient
– Programmers should use library functions to improve performance and
portability
Help Files and Documentation
• Provide details about
– Syntax
– Keywords
– Library functions
– Examples
– Etc.
IDE - Integrated Development Environment
• Helps to Write
– Use different color to highlight different type of code
– Sometimes shows hints
• Helps to Compile
– Set environment variables
– Linking with libraries
• Helps to Run
• Helps to Debug
– Execute step by step
– Use breaks
– Watch the values of variables
Lifecycle of a C Program
Executable
File
Keywords
• C has some words that has a special meaning for the compiler
• These words can not be used to name variables, functions etc.
auto double int struct
break else long switch
case enum register typedef
char extern return union
const float short unsigned
continue for signed void
default goto sizeof volatile
do if static while
Variables
• Variables are placeholders
– They can hold values
• Each variable takes up some memory space
• The values can be assigned, changed, read etc.
• Variables must be defined before using them
Variable Declaration
• First write the keyword for datatype
• Then write the name of the variable
• Example
– int num=10;
– char c=‘a’;
– int i, j, k;
– char esc=‘\\’;
– float exp=3.2e-5;
Variables
• Name of variable
– Case sensitive
• Count, count & COUNT are different
– Can be of any length, but only first 31 characters are important
– Can contain letters, digits and the ‘_’
– But first character must be a letter or ‘_’
– Variable name cannot be same as a keyword
– For example –
correct: abcd, abcd2, abcd_3, Abcd
incorrect: ab cd, 2abcd, abcd…3, ab!cd
Variables
• Name of variable
– Should be clear and meaningful
– If two or more words are needed then either separate them
using a ‘_’ or keep them together, but start each word except
the first one with a capital
– For Example –
student_no average_age
dateOfBirth averageAge
– Second way is recommended
Variables
• Global variables
– Outside all function
– Can be accessed by any function
• Local variables/ automatic variables
– Inside a block/function
– Can be declared at the start of a block
Global Variable
# include <stdio.h>
int a; Global variable
int main(void)
{
a=5;
printf(“This is a short C program”);
return 0;
}
• Global Variable
Outside all function
Can be accessed by any function
Local Variable
# include <stdio.h>
int main(void)
{
int a; Local variable
a=5;
printf(“This is a short C program”);
return 0;
}
int main(void)
{
int num=10;
printf(“The value is=%d", num);
return 0;
}
Conversion Specifiers
• Integer: %d
• Character : %c
• Float : %f
• Double : %lf
• Long Integer: %ld
• Long Long Integer: %lld
Details on printf (sec 8.5)
• %% : prints % sign
• %i or %d : signed decimal integer
• %x : unsigned hexadecimal number
• %e : scientific notation
• %p: displays a pointer
• etc.
Details on printf (sec 2.6)
• \n : newline
• \t: horizontal tab
• \\: backslash
• etc
Format Specifier
• printf ("Preceding with blanks: %10d \n", 1977);
– print as a decimal integer with a width of at least 10 wide with space padded to
left
• printf ("Preceding with zeros: %010d \n", 1977);
– print as a decimal integer with a width of at least 10 wide with zero padded to
left
• printf("%0.2f\n",d);
Homework
• Get acquainted with
– %c, %d, %e, %E, %f, %lf, %o, %u, %x, %X, %% [Look at 8.5 of book]
– %ld, %lld, %lu [Search in internet]
Details on printf (sec 8.5)
#include<stdio.h>
#define AREA length*width
int main(void)
{
printf("%d %o %x %X\n", 90, 90, 90, 90);
printf("%e %E\n", 99.231, 99.231);
return 0;
}
Output:
90 132 5a 5A
9.92310e+01 9.92310E+01
Details on printf (sec 8.5)
#include<stdio.h>
#define AREA length*width
Alphabets in the number representation
int main(void) will be shown in capital letter
{
printf("%d %o %x %X\n", 90, 90, 90, 90);
printf("%e %E\n", 99.231, 99.231);
return 0;
}
Output:
90 132 5a 5A
9.92310e+01 9.92310E+01
Details on printf (sec 8.5)
#include <stdio.h>
int main() {
printf ("Characters: %c %c \n", 'a', 65);
printf ("Decimals: %d %ld\n", 1977, 650000L);
printf ("Preceding with blanks: %10d \n", 1977);
printf ("Preceding with zeros: %010d \n", 1977);
printf ("Some different radices: %d %x %o %#x %#o \n", 100, 100,
100, 100, 100);
printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
printf ("Width trick: %*d \n", 5, 10);
printf ("%s \n", "A string");
return 0;
}
Homework
int main(void)
{
int num1, num2;
scanf("%d %d", &num1, &num2);
printf("num=%d", num1+num2);
return 0;
}
• Input must be seperated by blank, tab or newline
• Common programming error:
– Forgetting address operator (&) before variable name in scanf
– Placing commas (when none are needed) between conversion specifiers
Expressions
++ Increment Unary
-- Decrement Unary
- Unary negation Unary
Example
• count=count*num+88/val-19%count;
• char x,y;
• x=‘a’;
• y=‘b’;
• int z=x+y;
Increment and Decrement Operator
• Postfix operator
– n++, n--
• Prefix operator
– ++n, --n
Bitwise Operators
• These operators are used for bitwise logic operations.
• The operands must be integer values
a b a&b
0 0 0
0 1 0
1 0 0
1 1 1
Bitwise Operator (OR)
a b a|b
0 0 0
0 1 1
1 0 1
1 1 1
Bitwise Operator (XOR)
a b a^b
0 0 0
0 1 1
1 0 1
1 1 0
Bitwise Operator (to be taught later)
#include<stdio.h>
# include<conio.h>
int main(void) Loop Bit pattern
{ counter
char ch;
128 10000000
int i;
64 01000000
ch=getche();
printf("\n"); 32 00100000
• Shortcuts
a += b; means a = a + b;
‘+=’, ‘- =’, ‘*=’, ‘/=’, ‘%=’,
‘&=’, ‘|=’, ‘^=’, ‘<<=’, ‘>>=’
Relational Operators
• These operators are used for comparison. The
result is boolean.
* / %
+ -
<< >>
< <= > >=
== !=
&
^
|
&&
||
= += -= *= /= %= &=
|= ^=
Example
• Stepwise evaluation of the expression x=7/6*4+3/5+3
– x=7/6*4+3/8+3
– x=1*4+3/5+3 operation: /
– x=4+3/5+3 operation: *
– x=4+0+3 operation: /
– x=4+3 operation: +
– x=7 operation: +
• All the operators associate from left to right except for
assignment operators
Example
– Determining difference between two persons’ height
#include<stdio.h>
int main ()
{
int f1, i1, f2, i2, f3, i3, d;
printf("Enter height (feet,inches) of person one: ");
scanf("%d,%d", &f1, &i1);
printf("Enter height (feet,inches) of person two: ");
scanf("%d,%d", &f2, &i2);
d=(f1*12+i1)-(f2*12+i2);
f3=d/12;
i3=d%12;
printf("Difference between height is %d feet, %d inches\n", f3, i3);
return 0;
}
Type Conversion (sec 4.5, 4.6)
• C allows mixing of types
• Integral promotion
– During evaluation of an expression
– ‘A’+2
• Type promotion
– Converts all operands “up” to the type of the largest
Type conversion
• Operands that differ in type may undergo type conversion
• In general the result will be expressed in the highest precision possible
• int i=7;
• float f=5.5;
• i+f : 12.5
Type Conversion (sec 4.5, 4.6)
#include <stdio.h>
int main()
{
int i;
float f;
i=10;
f=23.25;
#include <stdio.h>
int main()
{
int i;
char c;
i=1111; Output:
W, 87
c=i;
printf ("%d, %c \n", c, c);
return 0;
}
Type Conversion (sec 4.5, 4.6)
• Loss of precision
#include <stdio.h>
int main()
{
double f;
f=7/2;
printf ("%lf \n", f);
return 0;
}
Type Cast (sec 4.7)
#include <stdio.h>
int main()
{
double f;
f=7/2.0;
printf ("%lf \n", f);
return 0;
}
Type Cast (sec 4.7)
#include <stdio.h>
int main()
{
double f;
f=7.0/2;
printf ("%lf \n", f);
return 0;
}
Type Cast (sec 4.7)
• Value of an expression can be converted to a different data
type if desired.
• Temporary type change
• (data type) expression
• int i=7;
• float f=5.5;
• (i+f)%2 : error
• ((int)(i+f))%2
Type Cast (sec 4.7)
#include <stdio.h>
int main()
{
double f;
f=(double)7/2;
return 0;
}
Type Cast (sec 4.7)
#include <stdio.h>
int main()
{
double f;
f=7/(double)2;
return 0;
}
Type Cast (sec 4.7)
• Loss of precision
#include <stdio.h>
int main()
{
double f; 7/2=5
f=(double)(7/2); (double)(7/2)=(double)(5)=5.0
return 0;
}
Datatype Modifiers (sec 4.1)
• Modifiers
– long
– short
– unsigned
– signed
– Except type void, the basic data types may have various
modifiers preceding them.
• Multiple modifiers can be used in a declaration
Datatype Modifiers
• Qualifiers (Access Modifier)
– const
• may not be changed by your program.
• can be given an initial value, however.
• compiler is free to place variables of this type into read-
only memory (ROM).
– volatile
• can be changed by your program and also external program
– One or both modifiers can be used in a declaration
Datatypes
• Example
– int
– long double
– unsigned long int
– const unsigned long int
– volatile const char
Comments
• Note for the programmer
• Ignored by the compiler
• Used as documentation
• Can be used anywhere a space character (blank, tab/ newline) can.
• Comment can be used to temporarily remove a chunk of codes.
Comments
• Two types of comments
– Single line
• Starts with //
• Can not be spread over several lines
• Not currently defined by ANSI C
• Created by C++
• Use in C program is technically invalid
• Valid in C99
– Multiline
• Can not be nested
• Starts with /*
• Ends with */
Comments
• Following program is valid
#include <stdio.h>
int main(void)
{
int num1, /*allowed! */num2;
scanf("%d %d", &num1, /*allowed
too!*/&num2);
printf("num=%d", num1+num2);
return 0;
}
Enumeration (sec 11.3)
• List of named integer constants
– enum tag-name { enumeration list } variable-name;
– enum color_type { red, green, blue } color;
• red is 0, green is 1, and blue is 2 by default
– Each constant to the right is one greater than the constant that
precedes it
– Overriding is possible
• enum color_type { red, green=9, blue } color;
– red is 0, green is 9, and blue is 10
• Either tag-name of variable-name is optional
• tag-name can be used to declare enumeration variables
Enumeration (sec 11.3)
#include <stdio.h>
enum computer {keyboard, CPU, monitor,
printer};
int main() {
enum computer comp;
comp=CPU;
printf ("%d \n", comp);
return 0;
}
Comma Operator (sec 11.9)
• Self Study
Home Work
• Given the radius of a circle, write a C program to calculate it’s area.
• Write a C program which convert temperature from Fahrenheit to Celsius.
• Find the values of x & n after each statement of the following code
segment:
x=n++;
x=++n;
Practice
• Examples & Exercises
• Mastery Skill Check
• Review Skill Check
Reference
• TEACH YOURSELF C
– Herbert Schildt
– Source code available in: http://www.osborne.com
• SCHAUM’s Outlines Programming With C
– Byron Gotteried
• The C Programming Language
– Brian W. Kernighan
– Dennis M. Ritchie
Reference
• TEACH YOURSELF C by Herbert Schildt (3rd Edition)
– Chapter 1 (1.1-1.7, 1.10)
– Chapter 2 (2.5-2.7)
– Chapter 4 (Full)
– Chapter 8 (8.4, 8.5)
– Chapter 11 (11.3, 11.5, 11.8-11.10)
Thank You