0% found this document useful (0 votes)
6 views

Lecture 03 - C Programming Basics

The document provides an introduction to C programming, covering its fundamentals such as variables, data types, constants, and casting. It explains the structure of a C program, including syntax rules, variable declaration, and basic input/output functions. Additionally, it discusses the importance of coding style and the implications of type conversions in programming.

Uploaded by

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

Lecture 03 - C Programming Basics

The document provides an introduction to C programming, covering its fundamentals such as variables, data types, constants, and casting. It explains the structure of a C program, including syntax rules, variable declaration, and basic input/output functions. Additionally, it discusses the importance of coding style and the implications of type conversions in programming.

Uploaded by

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

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

You might also like