C programming

advertisement
C programming
•
•
•
•
•
•
•
•
•
•
Introduction
The basics of algorithms
Structure of a C code, compilation step
Constant, variable type, variable scope
Expression and operators: assignment,
arithmetic operators, comparison, type
conversion
Control statement: conditional and loops
Tabular data
Functions
Structures, strings and pointers
Input/Output
Sources:
• On the Web:
– http://www.cs.cf.ac.uk/Dave/C/
– http://www.imada.sdu.dk/~svalle/courses/dm142005/mirror/c/
– http://www.exforsys.com/tutorials/c-language/
• Slides will be available on:
– http://astro.ustrasbg.fr/~siebert/pages/teaching.html
Computers and programs
• A computer is a processing unit:
– performs a suite of operations
– stores the results in its memory
• The suite of operation is user defined and is
called a program
– it is the duty of the user to design the proper
algorithm which must be efficient and “possibly”
error free
• A computer does not think for you!
Programming language
• Two main types of languages:
– iterative (C,Pascal,Fortran,PERL...)
– object oriented (C++,ADA,COBOL,Java...)
• We will use C in this lecture
– standard and widely used (Linux/Unix are written
in C for example)
– well adapted to scientific computing
– structure of a C code follows the standard problem
solving logic
Algorithm
• Definition: an algorithm is a finite sequence of
instructions, a logic and explicit step-by-step
procedure for solving a problem starting from
a known beginning.
– the number of instructions must be finite
– to write the algorithm you first must know how to
solve the problem!
– the solution must follow a logical path: the order of
the instructions IS important
Here is a real life
example of an algorithm.
The only missing part
is the known beginning:
“in case of fire”
A simple algorithm
-Defines the logical order of the operation
-Identifies the variable that are needed to solve the problem
-Free from programming language syntax = general, can be
transposed in any language that follows the iterative scheme
Algorithm and flowchart
A flowchart is a graphical
representation of an algorithm.
Usually, we start with drawing
the flowchart and then proceed
to the algorithm
Algorithm and flowchart
This flowchart handles a line of
characters and counts the
numbers (numeric characters)
in the line:
-start from the beginning of the
line
-loop over all characters in the
line
-tests if a number
-update counter if yes
-tests eol character
Algorithm and flowchart
This is the algorithm associated to the previous flowchart
Algorithm and flowchart
Algorithm and flowchart
declaring a function:
how is it used?
main program and its
instructions
defining a function:
what is it doing?
Structure of a C code
load library, define constants...
Structure of a C code (2)
• It is important to keep a proper organization
of your code: as long as you are not
experienced keep the scheme presented
before.
• Keep a good logic: a computer does not think
for you, it just computes whatever you ask
him to compute!
• ALWAYS declare what you are using
(functions, variables etc.)!
A simple C code
-first step: load a library that allows
to interact with the screen or keyboard
-second step: start the main program block
-third step: use the printf function
(from the stdio.h library) to print Hello
-fourth step: exit the program with a given
error code
-last step: close the main program block
Another example (a bit more
complicated)
reading from and writing to
• C provides 2 methods that enable you
to read from the keyboard and write to
the standard output (screen). Both are
part of stdio:
– scanf(“%i”,&x) to read from the keyboard
– printf(“%i”,x) to write to the screen
• %i for integers, %f for floats
• Functions return 1 is everything is OK
Going from C code to the
actual program (under
Unix/Linux)
1)
2)
3)
A C program needs to be
compiled (using gcc for ex.)
before it can be run on the
computer
Variables in C
• Variables contain values that must be kept
during the completion of a program (storage)
for future use.
• In C, a variable MUST be declared before it
can be used.
• Variables can be declared at the start of any
block code, but most are found at the start of
each function (main inclusive)
• Local variables are created when the function
is called and destroyed on return from that
function (see scope and range later)
How to declare a variable?
• a declaration begins with the type,
followed by the name of the variable:
int x; //declares an integer variable x
• More than one variable can be assigned
and a starting value can be given:
float x,y=-2.5,tab[20];
Types in C (32 bits machine):
•
•
•
•
•
•
•
int= integer value 4bits
float= real value 4bits
char= single character
short= integer value 2 bits
long int= integer value 4 bits
unsigned= only positive values
double= high precision real value 8 bits
Types in C
Variable names
• Each variable has a value and a name.
• There is a limitation on what the name of a
variable can be: it must start with a letter or
underscore (counter, _counter)
• no space or special character
• length < 8 character
• Also, it is forbidden to use one of C’s keyword
as a variable name as main, switch,
while...but this is common sense
C language keywords
Special character
Local and global variables
• Local variables are declared within the
body of a function and can only be used
within that same function.
• Usually, for an external variable to be
known for a function, it must be passed
as argument
• A variable can also be declared globally
and so it is available to all functions
Examples
Another example
Static variables
A static can only be accessed from the function
in which it was declared, like a local variable.
The static variable is not destroyed on exit from
the function, instead its value is preserved,
and becomes available again when the
function is next called.
Static variables are declared as local variables,
but the declaration is preceded by the word
static.
Example
static int counter;
• Static variables can be initialized as
normal, the initialization is performed
once only, when the program starts up.
External variable
• Where a global variable is declared in one
file, but used by functions from another, then
the variable is called an external variable in
these functions, and must be declared as
such.
• The declaration must be preceded by the
word extern. The declaration is required so
the compiler can find the type of the variable
without having to search through several
source files for the declaration.
Constants
• A constant value is the one which does not
change during the execution of a program. C
supports several types of constants.
•
•
•
•
1. Integer Constants
2. Real Constants
3. Single Character Constants
4. String Constants
Constants
• The const keyword is to declare a constant,
as shown below:
int const a = 1;
const int a =2;
Note:
• You can declare the const before or after the
type. Choose one an stick to it.
• It is usual to initialize a const with a value as it
cannot get a value any other way.
Working with variables
• Variables are useful to store information
• The next step is to use this information in
order to compute a required quantity,
compare values or manipulate a string or a
file
• There are many operators in C to permit it
• However the user must be careful!
– operators have precedence
– some work from left to right, some from right to left
Relational instructions and
logical representation
• the relation operation returns a TRUEFALSE answer
• This answer is translated into a numeric
value
• 0 represents FALSE
• 1 or any value besides 0 represents
TRUE
Type conversion: cast
• It is often useful to be able to change the type
of a variable, for example from floating point
to integer or changing an integer into a float
• These operations are called casts
• In C it is easily done by specifying the new
type in front of the name:
– if x is an integer, typing (float) x in the program will
use x as a float
Type conversion: cast
• When using mathematical formulae, C
automatically uses the type with highest
precision
• But beware of the precedence of
operation
• ex: if a=2.2 is a float, x=2 and y=3 are
ints
x/y*a is not the same as a*x/y
Type conversion: cast
Handling conditions
• It is frequent that a given set of
instructions (operations) must be
performed only if a variable has a
specific value or if a condition is fulfilled
• To handle this, C provides a few
conditional operators
if statement
if (expression){
statement;
}
...or:
if (expression){
statement1;
} else{
statement2;}
...or:
if (expression){
statement1;
}else if (expression){
statement2;
}else{
statement3}
expression represents a logical
operation. The outcome must be
0 or 1. Ex:
a<b
x==1.
etc.
if statement
if statement
if statement
Switch statement
switch (expression) {
case item1:
statement1;
break;
case item2:
statement2;
break;
case itemn:
statementn;
break;
default:
statement;
break;
}
Switch statement
Switch statement
• Attention: the
expression in the
switch must be of
interger or character
type.
Ternary operator
• The ? (ternary condition) operator is a more
efficient form for expressing simple if
statements. It has the following form:
expression1 ? expression2: expression3
It simply states:
• if expression1 then expression2 else
expression3
Ternary operator
Download