1
C PROGRAMMING
LECTURE
by
Mubiru Abubakari
[email protected] | 0700615681
C Course, Programming ,
Recap
2
C is a high-level language.
Writing a C code. {editors like gedit, vi}
Compiling a C code. {gcc –c test.c –o test}
Executing the object code. {./test}
C Course, Programming
Some more basics
3
Keywords
char, static, if , while, return ..................... Total= about 32
Data Types
int , char, float ...………..….. Some more later
Arithmetic Operators
+ (Plus), - (Minus), * (Multiplication), /(Division)
……….……….
Some more later
C Course, Programming
My first C program!
4
#include <stdio.h>
// program prints hello world
int main() {
printf ("Hello world!");
return 0;
}
Output: Hello world!
C Course, Programming
Example 1
5
#include <stdio.h>
// program prints a number of type int
int main() {
int number = 4;
printf (“Number is %d”, number);
return 0;
}
Output: Number is 4
C Course, Programming
Example 2
6
#include <stdio.h>
// program reads and prints the same thing
int main() {
int number ;
printf (“ Enter a Number: ”);
scanf (“%d”, &number);
printf (“Number is %d\n”, number);
return 0;
}
Output : Enter a number: 4
Number is 4
C Course, Programming
more and more
7
#include <stdio.h>
int main() {
/* this program adds
two numbers */
int a = 4; //first number
int b = 5; //second number
int answer = 0; //result
answer = a + b;
}
C Course, Programming
Note
8
Errors
Compilation
Compiler generally gives the line
number at which the error is present.
Run time
C programs are sequential making
the debugging easier.
C Course, Programming
Some more Data Types
9
Primary : int, float, char
int (signed/unsigned)(2,4Bytes): used to store integers.
char (signed/unsigned)(1Byte): used to store
characters
float, double(4,8Bytes): used to store a decimal number.
User Defined:
typedef: used to rename a data type
typedef int integer; can use integer to declare an int.
enum, struct, union
C Course, Programming
Some more Arithmetic Operators
10
Prefix Increment : ++a
example:
int a=5;
b=++a; // value of b=6; a=6;
Postfix Increment: a++
example
int a=5;
b=a++; //value of b=5; a=6;
C Course, Programming
Contd…
11
Modulus (remainder): %
example:
12%5 = 2;
Assignment by addition: +=
example:
int a=4;
a+=1; //(means a=a+1) value of a becomes 5
Can use -, /, *, % also
C Course, Programming
Contd…
12
Comparision Operators: <, > , <=, >= , !=, ==, !,
&&, || .
example:
int a=4, b=5;
a<b returns a true(non zero number) value.
Bitwise Operators: <<, >>, ~, &, | ,^ .
example
int a=8;
a= a>>1; // value of a becomes 4
C Course, Programming
Operator Precedence
13
Meaning of a + b * c ?
is it a+(b*c) or (a+b)*c ?
All operators have precedence over each other
*, / have more precedence over +, - .
If both *, / are used, associativity comes into
picture. (more on this later)
example :
5+4*3 = 5+12= 17.
C Course, Programming
Precedence Table
14
Highest on top
++ -- (Postfix)
++ -- (Prefix)
* / %
+ -
<< >>
< >
&
|
&&
||
C Course, Programming
Input / Output
15
printf (); //used to print to console(screen)
scanf (); //used to take an input from console(user).
example: printf(“%c”, ’a’); scanf(“%d”, &a);
More format specifiers
%c The character format specifier.
%d The integer format specifier.
%i The integer format specifier (same as %d).
%f The floating-point format specifier.
%o The unsigned octal format specifier.
%s The string format specifier.
%u The unsigned integer format specifier.
%x The unsigned hexadecimal format specifier.
%% Outputs a percent sign.
C Course, Programming
Some more geek stuff
16
& in scanf.
It is used to access the address of the variable used.
example:
scanf(%d,&a);
we are reading into the address of a.
Data Hierarchy.
example:
int value can be assigned to float not vice-versa.
Type casting.
C Course, Programming club, Fall 2008
Home Work
17
Meaning of
Syntax
Semantics of a programming language
Find the Output:
value=value++ + value++;
Value=++value + ++value;
value=value++ + ++value;
C Course, Programming
2.2 A Simple C Program:
Printing a Line of Text
Welcome to C!
1 /* Fig. 2.1: fig02_01.c
2 A first program in C */
3 #include <stdio.h>
4
5 int main()
6 {
7 printf( "Welcome to C!\n" );
8
Comments 9
10 }
return 0;
Text surrounded by /* and */ is ignored by computer
Used to describe program
#include <stdio.h>
Preprocessor directive
Tells computer to load contents of a certain file
<stdio.h> allows standard input/output
18
operations
2.2 A Simple C Program:
Printing a Line of Text
int main()
C++ programs contain one or more functions,
exactly one of which must be main
Parenthesis used to indicate a function
int means that main "returns" an integer value
Braces ({ and }) indicate a block
The bodies of all functions must be contained in braces
19
2.2 A Simple C Program:
Printing a Line of Text
printf( "Welcome to C!\n" );
Instructs computer to perform an action
Specifically, prints the string of characters within quotes
(“ ”)
Entire line called a statement
All statements must end with a semicolon (;)
Escape character (\)
Indicates that printf should do something out of the
ordinary
\n is the newline character
20
2.2 A Simple C Program:
Printing a Line of Text
return 0;
A way to exit a function
return 0, in this case, means that the program terminated
normally
Right brace }
Indicates end of main has been reached
Linker
When a function is called, linker locates it in the library
Inserts it into object program
If function name is misspelled, the linker will produce an error
because it will not be able to find function in the library
21
1 /* Fig. 2.5: fig02_05.c
2 Addition program */ Outline
3 #include <stdio.h>
4 1. Initialize
5 int main() variables
22
6 {
7 int integer1, integer2, sum; /* declaration */ 2. Input
8
9 printf( "Enter first integer\n" ); /* prompt */
2.1 Sum
10 scanf( "%d", &integer1 ); /* read an integer */
11 printf( "Enter second integer\n" ); /* prompt */
12 scanf( "%d", &integer2 ); /* read an integer */ 3. Print
13 sum = integer1 + integer2; /* assignment of sum */
14 printf( "Sum is %d\n", sum ); /* print sum */
15
16 return 0; /* indicate that program ended successfully */
17 }
Enter first integer
45 Program Output
Enter second integer
72
2000
Sumis 117 Prentice Hall, Inc. All
2.3 Another Simple C Program:
Adding Two Integers
As before
Comments, #include <stdio.h> and main
int integer1, integer2, sum;
Declaration of variables
Variables: locations in memory where a value can be stored
int means the variables can hold integers (-1, 3, 0, 47)
Variable names (identifiers)
integer1, integer2, sum
Identifiers: consist of letters, digits (cannot begin with a digit) and underscores( _ )
Case sensitive
Declarations appear before executable statements
If an executable statement references and undeclared variable it will produce a
syntax (compiler) error
23
2.3 Another Simple C Program:
Adding Two Integers
scanf( "%d", &integer1 );
Obtains a value from the user
scanf uses standard input (usually keyboard)
This scanf statement has two arguments
%d - indicates data should be a decimal integer
&integer1 - location in memory to store variable
& is confusing in beginning – for now, just remember to
include it with the variable name in scanf statements
When executing the program the user responds to
the scanf statement by typing in a number, then
pressing the enter (return) key
24
2.3 Another Simple C Program:
Adding Two Integers
= (assignment operator)
Assigns a value to a variable
Is a binary operator (has two operands)
sum = variable1 + variable2;
sum gets variable1 + variable2;
Variable receiving value on left
printf( "Sum is %d\n", sum );
Similar to scanf
%d means decimal integer will be printed
sum specifies what integer will be printed
Calculations can be performed inside printf
25
statements
printf( "Sum is %d\n", integer1 + integer2 );
2.4 Memory Concepts
Variables
Variable names correspond to locations in the
computer's memory
Every variable has a name, a type, a size and a value
Whenever a new value is placed into a variable
(through scanf, for example), it replaces (and
destroys) the previous value
Reading variables from memory does not change
them integer1 45
A visual representation
26
2.5 Arithmetic
Arithmetic calculations
Use * for multiplication and / for division
Integer division truncates remainder
7 / 5 evaluates to 1
Modulus operator(%) returns the remainder
7 % 5 evaluates to 2
Operator precedence
Some arithmetic operators act before others (i.e., multiplication before
addition)
Use parenthesis when needed
Example: Find the average of three variables a, b and c
Do not use: a + b + c / 3
Use: (a + b + c ) / 3
27
2.5 Arithmetic
Arithmetic operators:
C operation Arithmetic Algebraic C expression
operator expression
Addition + f+7 f + 7
Subtraction - p–c p - c
Multiplication * bm b * m
Division / x/y x / y
Modulus % r mod s r % s
Rules of operator precedence:
Operator(s) Operation(s) Order of evaluation (precedence)
() Parentheses Evaluated first. If the parentheses are nested, the
expression in the innermost pair is evaluated first. If there
are several pairs of parentheses “on the same level” (i.e.,
not nested), they are evaluated left to right.
*, /, or % Multiplication,Divi Evaluated second. If there are several, they are
sion, Modulus evaluated left to right.
+ or - Addition Evaluated last. If there are several, they are
Subtraction evaluated left to right.
28
2.6 Decision Making: Equality and
Relational Operators
Executable statements
Perform actions (calculations, input/output of data)
Perform decisions
May want to print "pass" or "fail" given the value of a test grade
if control structure
Simple version in this section, more detail later
If a condition is true, then the body of the if statement executed
0 is false, non-zero is true
Control always resumes after the if structure
Keywords
Special words reserved for C
Cannot be used as identifiers or variable names
29
2.6 Decision Making: Equality and
Relational Operators
Standard algebraic C equality or Example of C Meaning of C
equality operator or relational condition condition
relational operator operator
Equality Operators
= == x == y x is equal to y
not = != x != y x is not equal to y
Relational Operators
> > x > y x is greater than y
< < x < y x is less than y
>= >= x >= y x is greater than or
equal to y
<= <= x <= y x is less than or
equal to y
30
2.6 Decision Making: Equality and
Relational Operators
Keywords
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
31
1 /* Fig. 2.13: fig02_13.c
2 Using if statements, relational Outline
3 operators, and equality operators */
4 #include <stdio.h> 1. Declare
5 variables
632 int main()
7 {
8 int num1, num2; 2. Input
9
10 printf( "Enter two integers, and I will tell you\n" );
2.1 if statements
11 printf( "the relationships they satisfy: " );
12 scanf( "%d%d", &num1, &num2 ); /* read two integers */
13 3. Print
14 if ( num1 == num2 )
15 printf( "%d is equal to %d\n", num1, num2 );
16
17 if ( num1 != num2 )
18 printf( "%d is not equal to %d\n", num1, num2 );
19
20 if ( num1 < num2 )
21 printf( "%d is less than %d\n", num1, num2 );
22
23 if ( num1 > num2 )
24 printf( "%d is greater than %d\n", num1, num2 );
25
26 if ( num1 <= num2 )
27 2000printf(
Prentice
"%d Hall, Inc.
is less Allor
than equal to %d\n",
29
30 if ( num1 >= num2 ) Outline
31 printf( "%d is greater than or equal to %d\n",
3.1 Exit main
32 num1, num2 );
33
33
34 return 0; /* indicate program ended successfully */
35 }
Enter two integers, and I will tell you
the relationships they satisfy: 3 7 Program Output
3 is not equal to 7
3 is less than 7
3 is less than or equal to 7
Enter two integers, and I will tell you
the relationships they satisfy: 22 12
22 is not equal to 12
is2000
22 Prentice
greater than 12Hall, Inc. All
End of Today’s Lecture
34
Doubts && Queries?
C Course, Programming
35
THANK YOU
C Course, Programming