Presentation is loading. Please wait.

Presentation is loading. Please wait.

A bit of C programming Lecture 3 Uli Raich.

Similar presentations


Presentation on theme: "A bit of C programming Lecture 3 Uli Raich."— Presentation transcript:

1 A bit of C programming Lecture 3 Uli Raich

2 Programming Languages
To make a language a programming language it needs to implement: Assignments Conditional statements loops

3 C libraries C uses a large number of code libraries and you can create C libraries yourself. These libraries may use special data types, which are defined in include files Before using the library functions #include <stdio.h> or #include “myOwnIncludeFile.h”

4 The C main program As a first example people usually write the
“Hello World” program. #include <stdio.h> void main() { printf(“Hello World!\n”); } Let us try to compile and execute this program First we start the editor, we type and save the program, then we compile it using the gcc compiler and finally we execute it

5 C data types C has a number of data types:
char, short, int, long, float, double unsigned char, unsigned short, unsigned int can be extended to boolean (in C99 you can #include <stdbool.h> No real strings! But a pointer to a zero terminated chain of characters struct union enum And you can define your own data types with typedef

6 Assignments We modify the program to do some calculation:
I call the program assignments.c and I compile it with gcc -o assignments assigments.c

7 Type casting Why do we get this strange result for the division? and how can we correct this? Yes, the reason is that div has got the wrong (namely integer) type To correct we must first convert a and b to doubles (or floats) before doing the calculation and div must be a double as well.

8 Printing formatted output
You have seen that I use the function printf to output the results of the calculation. The format string “%d” tells the system to output the result as a decimal number. In an exercise this afternoon, where you will implement a simple calculate we will use the format %10.4f There are many additional number formats to output strings, decimal, octal and hex numbers … Look up the man page for printf for an explanation. Instead of printing on the screen you can also convert the number to a string using sprintf. The equivalent call for input also exists and is called scanf.

9 Conditions: if statement
Conditions can be tested with if if (a < b) printf(“a is bigger than b\n”); else printf(“b is bigger than a\n”);

10 Calculating the Fibonacci numbers
or xn = xn-1+xn-2 How can we write a program to calculate up to 12 such numbers? This can easily be done in a for loop

11 The for loop

12 The while loop Can we also do calculations as long as the Fibonacci number does not exceed a certain value?

13 Pointers We can define variables which do not contain the value but the address of where the value is stored in memory: char a=5; is the value char *myText=”Hello World!”; myText points to the place in memory where myText is stored.

14 Pointer example

15 Printing to a file Instead of printing to stdout with printf you can also print to a file with fprintf:

16 Command line arguments
The main routine has 2 parameters, which we did not use yet as well as a return code. int main(int argc, char ** argv) or int main(int argv, char *argv[ ]); int argc is the number of arguments passed char **argv is a pointer to a list of null terminated C strings.

17 Command line arguments example
Please note that the argv values are zero terminated strings even if you give a number! If you expect a number then you have to convert the string into a number with atoi or atof

18 Conditional statements
if, else if, else switch (tag) Combination of assignment and condition: the ? operator:

19 Numeric command line arguments and if conditions

20 The switch statement Imagine a simple calculator taking 3 parameters:
2 numbers An mathematical operator: +,-,*,/ We do not want to have too many if statements to find out which operation must be carried out Use: switch (operator) { case ‘+’: do addition; break; case ‘-’: do subtraction; default: error; }

21 Switch example

22 Switch example (2)

23 Composite variables We can have a series of values of the same type in an array: int myArray[10]; the size of the array is fixed! An array is in reality a pointer to a series of values of the same type. Or we can define structures where values of different types can be combined In addition we have enumerations with a certain fixed range of values.

24 Composite data types example

25 The ? operator If (a < b) c = a else c = b;
Can be written in a single statement: c = (a<b) ? a : b;

26 ? operator example

27 functions Up to now the size of our programs did not exceed one page.
Bigger problems must be broken down into smaller, manageable pieces using functions Example: the operations of our calculator: double add(double num1, double num2) { return (num1+num2); } The other operations look similar. These functions may go into the same file as main but also into separate files. Then they are compiled separately and linked to the main routine to form an executable program.

28 Include files How does the main program know the name of the function and its parameters? Define these in an include file to be added to the calling program: In the calling routine and the call itself: result = add( 5.2, 4.8);

29 libraries A big number of libraries are available for use with C and you can write you own libraries to extend the set. There are 2 types of libraries: static libraries and dynamic ones. The static libraries are named lib name of the library .a Example libm.a for the mathematics library containing a great number of mathematical functions Its dynamic brother is called libm.so When linking statically the library is added to the executable making it substantially bigger but independent of library versions The dynamic library is loaded once into memory and can be used by several executable. The executable is therefore much smaller but there is a risk it will not work if it was linked to a wrong library version.

30 Linking libraries Let’s say your program sine.c uses the sine function. The you must link it to libm In the static case: gcc -static -o sine sine.o -lm In the dynamic case you skip the -static option Gcc -o sine sine.c -lm


Download ppt "A bit of C programming Lecture 3 Uli Raich."

Similar presentations


Ads by Google