C Programming Basics
Fundamentals of Computer and Programming
Hossein Zeinali
Slides by Dr. Bahador Bakhshi
CE Department, Amirkabir University of Technology
What We Will Learn
What is the C
Variables
Types
Values
Casting
Constants & Definition
2
3
The C Language
C is a general-purpose programming
language
C is developed by Dennis Ritchie at Bell
Laboratories
C is one of the widely used languages
Application development
System programs, most operating systems are
developed in C: Unix, Linux
Many other languages are based on it
4
Programming in C Language
C programming language
A set of notations for representing programs
C standard libraries
A set of developed programs (functions)
C programming environment
A set of tools to aid program development
5
The First Example
Write a program that prints
“Hello the CE juniors :-)”
6
The First C Program
#include <stdio.h>
int main(void){
printf("Hello the CE juniors :-) \n");
return 0;
}
7
General Rules
C is case sensitive: main is not MaIn
A “;” is required after each statement
Each program should have a main function
int main(void){…
void main(void){…
main(){…
int main(int argc, char ** argv){…
Program starts running from the main
You should follow coding style (beautiful code)
8
General Rules: Spaces
Equal Statements
int main(void){ int main (
void) {
printf("abc"); printf ( "abc"
); return 0;
return 0;
return 0; return
0;
9
General Rules: Spaces
Not Equal Statements
int main(void){ intmain(void) {
printf("abc def"); printf("abcdef");
10
Comments
/* Our first
C program */
#include <stdio.h>
int main(void){
//This program prints a simple message
printf("Hello the CE juniors :-) \n");
return 0;
}
11
The First C Program
You should
Develop the source code of program
Compile
Run
Debug
All of them can be done in IDE
Code::Blocks
CLion
VS Code
12
What We Will Learn
What is the C
Variables
Types
Values
Casting
Constants & Definition
13
Variables
“write a program to calculate the sum of two
numbers given by user”
Solving problems
Input data Algorithm Output date
What we need
Implementing the algorithm
Named Functions
We will discuss later
Storing the input/output data
Variables
14
Variables (cont’d)
Data is stored in the main memory
Variables
Are the name of locations in the main memory
We use names instead of physical addresses
Specify the coding of the location
What do the “01”s means?
What is the type of data?
15
Variables
Variables in the C
<Qualifier> <Type> <Identifier>;
<Qualifier>
Is optional
We will discuss later
<Type>
Specifies the coding
<Identifier>
Is the name
16
Types: Integers
Integer numbers
Different types, different sizes, different ranges
Type Size Unsigned Signed
short 16Bits [0,216 - 1] [- 215,215 - 1]
int 32Bits [0,232 - 1] [- 231,231 - 1]
long or 32/64
long int [0,232|64 - 1] [- 231|63,232|63- 1]
Bits
long long or 64
long long int Bits [0,264 - 1] [- 263,263 - 1]
17
Types: Float & Double
Floating point number
float 32 bits
double 64 bits
long double 96 bits
Limited precision
float: 8 digits precision
1.0 == 1.00000001
double: 16 digits precision
1.0 == 1.0000000000000001
18
Overflow & Underflow
All types have limited number of bits
Limited range of number are supported
Limited precision
Overflow
Assign a very big number to a variable that is
larger than the limit of the variable
Underflow
Assign a very small number to a variable that is
smaller than the limit of the variable Example
19
Types: Char
Character
Type: char
Single letters of the alphabet, punctuation
symbols
Should be single quotation
‘a’, ‘^’, ‘z’, ‘0’, ‘1’, ‘\n’, ‘\’’, ‘\0’
20
Types: Booleans
#include <stdbool.h>
Logics (Boolean): bool
Only two values: false , true
21
Variables: Identifier
The name of variables: identifier
Identifier is string (single word) of
Alphabet
Numbers
“_”
But
Cannot start with digits
Cannot be the key-words (reserved words)
Cannot be duplicated
Should not be library function names: printf
22
Variables: Identifier
Use readable identifiers:
Do not use memorystartaddress
Use memory_start_address
Do not use xyz, abc, z, x, t
Use counter, sum, average, result,
parameter, …
Do not be lazy
Use meaningful names
23
C reserved words (cannot use for identifiers)
24
C++ reserved words (cannot use for identifiers)
25
Variable Identifiers
Valid identifiers
student grade sum
all_students average_grade_1
Invalid identifiers
if 32_test wrong* $sds$
26
Variables: Declaration ()اعالن
Reserve memory for variable: declaration
<type> <identifier>;
A variable must be declared before use
char test_char;
int sample_int;
long my_long;
double sum, average, total;
int id, counter, value;
27
Variable Type Effect (in complied Lang.)
Important note: the type of variable is NOT
stored in the main memory
After compiling the program NO type is
associated to memory locations!!!
So, what does do the type?!
It determines the “operations” that work with the
memory location Integer + and =
Performed by ALU
E.g. Float + and =
int x, y, z; z = x + y; Performed by FPU
float a, b, c; c = a + b;
28
Variables: Initial Values
What is the initial value of a variable?
In C: we do not know.
In C: it is not 0.
We need to assign a value to each
variable before use it.
29
What We Will Learn
What is the C
Variables
Types
Values
Casting
Constants & Definition
30
Constants in C
Values
Numeric
Integer numbers
Float numbers
Char
Strings
Symbolic constant
Constant variables
31
Values
Variables
Save/restore data (value) to/from memory
Declaration specifies the type and name
(identifier) of variable
Assigning value to the variable: assignment
<identifier> = <value>;
Compute the <value> and save result in memory
location specified by <identifier>
32
Values: Examples
int i, j;
long l;
float f;
double d;
i = 10;
j = 20;
f = 20.0;
l = 218;
d = 19.9;
33
Value Types
Where are the values stored?!
int x = 20;
x = 30 + 40;
In main memory
There is a logical section for these constant values
So, we need to specify the type of the value
The coding of 01s of the value
The type of value is determined from the
value itself
34
Values: Integers
Valid integer values
10; -20; +400; 0x12A; 011; 5000L
Invalid integer values
10.0; -+20; -40 0; 600,000; 5000 L
35
Values: Float & Double
Valid numbers:
0.2; .5; -.67; 20.0; 60e10; 7e-2
Invalid numbers:
0. 2; 20. 0; 20 .0; 7 e; 6e; e12
36
Values: Chars
Char values
Should be enclosed in single quotation
‘a’, ‘^’, ‘z’, ‘0’, ‘1’, ‘\n’, ‘\’’, ‘\0’
Each character has a code: ASCII code
‘A’: 65; ‘a’: 97; ‘1’: 49; ‘2’: 50; ‘\0’ : 0
Character vs. Integer
‘1’ != 1 ; ‘2’ != 2
‘1’ == 49 But 1 == 1
37
Effect of Value Types
The type of values have the same effect
of the type of variables
It determines the “operations” that work on
the values Integer + and =
Performed by ALU
E.g.
int z; z = 10 + 20;
float c; c = 1.1 + 2.2;
Float + and =
Performed by FPU
39
Values: Initialization
int i = 20;
int j = 0x20FE, k = 90;
int i, j = 40;
char c1 = 'a', c2 = '0';
bool b1 = true;
float f1 = 50e4;
double d = 50e-8;
40
Values: From memory to memory
int i, j = 20;
i = j; // i = 20
double d = 65536; // d = 65536.0
double b = d; // b = 65536.0
d = b = i = j = 0;
// j = 0, i = 0, b = 0.0, d = 0.0
41
Basic Input Output
To read something: scanf
Integer: scanf("%d", &int_variable);
Float: scanf("%f", &float_variable);
Double: scanf("%lf", &double_variable);
To print something: printf
Integer: printf("%d", int_variable);
Float: printf("%f", float_variable);
Message: printf("message");
42
What We Will Learn
What is the C
Variables
Types
Values
Casting
Constants & Definition
43
Casting
What is the casting?
When the type of variable and value are not the
same
Example: Assigning double value to integer
variable
It is not a syntax error in C (only warning)
But can cause runtime errors
It is useful (in special situations)
But we should be very very careful
44
Implicit casting
Implicit ()ضمني
We don’t say it
But we do it
char f2 = 50e6; /* cast from double to char */
int i = 98.01; /* cast from double to int */
45
Explicit casting
Explicit ()صريح
We say it
And we do it
int i = (int) 98.1; /* cast from double to int */
char c = (char) 90; /* cast from int to char */
46
Casting effects
Casting from small types to large types
There is not any problem
No loss of data
int i;
short s;
float f;
double d;
s = 'A'; // s = 65
i = 'B'; // i = 66
f = 4566; // f = 4566.0
d = 5666; // d = 5666.0
47
Casting effects (cont’d)
Casting from large types to small types
Data loss is possible
Depends on the values
float f = 65536; // 65536.0
double d = 65536; // 65536.0
short s = 720; // 720
char c = (char) 65536; // c = 0
short s = (short) 65536; // s = 0
int i = 1.22; // i = 1
int j = 1e23; // j = ???
48
Casting effects (cont’d)
Casting to Boolean
If value is zero false
If values is not zero true
bool b2 = 'a', b3 = -9, b4 = 4.5; //true
bool b5 = 0, b6 = false; b7 = '\0'; //false
49
What We Will Learn
What is the C
Variables
Types
Values
Casting
Constants & Definition
50
Constant Variables!!!
Constants
Do not want to change the value
Example: pi = 3.14
We can only initialize a constant variable
We MUST initialize the constant variables (why?!)
const is a qualifier
const int STUDENTS = 38;
const long int MAX_GRADE = 20;
int i;
i = MAX_GRADE;
STUDENTS = 39; //ERROR
51
Definitions
Another tool to define constants
Definition is not variable
We define definition, don’t declare them
Pre-processor replaces them by their values
before compiling
#define STUDENTS 38
int main(void){
int i;
i = STUDENTS;
STUDENTS = 90; //ERROR! What compiler sees: 38 = 90
52
Definitions
#define NAME “Test”
#define AGE (20 / 2)
#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))
#define MYLIB
53
Summary
Simple programs in C
Two basics
Variables
Types
Values
Types
Casting
The type mismatch
Constant variables & definitions
54
Reference
Reading Assignment: Chapter 2 of “C How
to Program”
55