1 / 48

Introduction to C Programming Language by Mr. S. Ahmed

Introduction to C Programming Language by Mr. S. Ahmed. JustETC Education Inc. Topics/Concepts. Structure of C Program Data Types, Operators, and Expressions Control Flow Functions and Program Structure Pointers and Arrays Structures Input and Output. Structure of a C Program.

sora
Télécharger la présentation

Introduction to C Programming Language by Mr. S. Ahmed

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introduction to CProgramming Languageby Mr. S. Ahmed JustETC Education Inc.

  2. Topics/Concepts • Structure of C Program • Data Types, Operators, and Expressions • Control Flow • Functions and Program Structure • Pointers and Arrays • Structures • Input and Output

  3. Structure of a C Program • How does a C program look like? #include <stdio.h> main() { printf("hello, world\n"); }

  4. The ‘Hello World’ Program • What it does? • Displays/prints/echos ‘hello World’ • What do the different sections indicate? • Header Files • Code Blocks, functions • Statements • How to compile • Depends on the Operating System and IDE you use • How to Run? • Depends on the Operating System and IDE you use

  5. Program Structure Program Structure

  6. Program Execution, Program in Action • How to compile • Depends on the Operating System and IDE you use • Save the file as hello.c • Linux/Unix: cc hello.c • How to Run? • Depends on the Operating System and IDE you use • Linux/Unix: a.out • Windows: • Usually you will use an IDE • IDE will have menu options to compile and run • Commons are: f9, shift+f9, f5 are used to compile/run. • Menus may have options such as compile, build, run, debug, build all, auto build

  7. Remember • A program is nothing but a set of instructions to the computer hardware to perform some operations. • Each line of instructions is called a statement • A semicolon is placed at the end of each statement • You can group a set of instructions by placing them in between { } • You can assign a name to a code block inside { } – then the code block is called function/procedure/method • You can define your own functions (code blocks) • C also have many functions/code blocks already defined • Hence, a program will consist some blocks of instructions defined by you, or will use instruction block as defined by C itself • Remember, one function can call /use another function • As a statement • While calling another function, some information can be passed to the other function – called Arguments

  8. Some Variations of the Printf() Function • printf(“%s\t%s”, “Hello”, “World”); • printf(“%d\t%f”, 100, 200.50);

  9. Concepts to Understand • Variables: • Example: x, y, z • x=10, y=100.5 • printf(“%d\t%f”,x,y); • word=“Hello World”; • printf(“%s”,word); • More correctly • int x = 10, float y=100.5; • char x[50] = “Hello World”; • intintArr[5] = {1,2,3,4,5};

  10. Concepts to Understand • Note: • \t, \b, \n • \t: print a tab • \n: print a newline

  11. Variable and Expressions • Understanding by Examples • int x=10, y=20, sum=0; • sum = x + y; sum = (x + y); (you can think (x+y) as an expression) • (x>y) is an expression • ((x+y) > 20) is an expression • An expression is a statement that has a value. In C, C++ and C#,an expression is always inside brackets like these examples. [about.com] • ( y > 4) • ( x== 8) • ( c = 1)

  12. Control Flow. What is it? • Write a program that will print 1 if today is holiday else it will print 0. • If today is holiday printf(“%d”,1); • else if today is not holiday printf(“0”); • Controlling what the program will do • Control the flow of the instruction block • Which instruction will do something • Which instruction will sit idle • Decide if the same statements will run 100 times or not

  13. Control Flow if (expression) statement1 else statement2 ---- if (expression) statement1 else if (expression) statement2 else statement3

  14. If then Else if (a > b) z = a; else z = b; ---- if (a > b) z = a; else if (b>a) z = b; else if (a==b) x=y; else printf(“nothing”);

  15. Switch-Case • Switch-case can be used instead of if then else sometimes (not always). • If (1==a) • statement1 • else if (2==a) • Statement2 • else if (3==a) • Statement3 • else • statement4

  16. Switch-Case Equivalent of If switch(a){ • Case 1:statement1;break; • Case 2:statement2;break; • Case 3:statement3;break; • default:statement4;break; } • Fall through: break is required to stop the flow otherwise it will keep running until it sees a break. • Default: When no match is found.

  17. Switch switch (expression) { case const-expr: statements case const-expr: statements default: statements }

  18. Loop • Execute a set of instructions over and over • For specific number of times • As long as an expression is true/satisfied • For Loop • Specific number of times • While, and Do-While • As long as an expression is true/satisfied

  19. Loops Syntax while (expression){ Statement } for (expr1; expr2; expr3){ Statement } expr1; while (expr2) { statement expr3; }

  20. Loops Example • For • int n=100,i=0; • for (i = 0; i < n; i++){ • printf(”%d\n”,i); • } • While • int n=100,i=0; • while(i <n){ • printf(”%d\n”,i); • i++; • }

  21. Loop Example • Do-While • int n=100,i=0; • do { • printf(”%d\n”,i); • i++; • } while(i <n);

  22. Break and Continue • Break • Get out of the current loop • Continue • Stop executing current iteration and go to next iteration

  23. Go to Statement • Syntax • Go to Label • …… • ……… • Label: • ……. • Operation • Jump to the labeled place from current place • Not encouraged • Rarely can be used to get out of deeply nested loops.

  24. Pointers • What are Pointers? • Note: pointers usually lead to more compact and efficient code • A pointer is a variable that contains the address of another variable • If p is a pointer and c is a variable the statement • p = &c; • assigns the address of c to the variable p. & gives the address of a variable

  25. Pointers • The & operator only applies to objects in memory: variables and array elements. • Pointers cannot be applied to expressions, constants, or register variables • when * is applied to a pointer, it accesses the object the pointer points to

  26. Pointers • Examples • int x = 1, y = 2, z[10]; • int *ip; /* ip is a pointer to int */ • ip = &x; /* ip now points to x */ • y = *ip; /* y is now 1 */ • *ip = 0; /* x is now 0 */ • ip = &z[0]; /* ip now points to z[0] */

  27. Pointers • Every pointer points to a specific data type • one exception: • a ``pointer to void'‘ (void *p) is used to hold any type of pointer • You cannot use dereference with void * • If p points to the integer x, then *ip can occur in any context where x could • *ip = *ip + 10; • y = *ip + 1 • ++*ip • (*ip)++

  28. Pointers as Function Parameters • Call by reference applies here void swap(int *px, int *py) /* interchange *px and *py */ { int temp; temp = *px; *px = *py; *py = temp; } main() { swap(x, y); //The values of x and y will also get changed here }

  29. Pointers and Arrays • Any operation that can be achieved by array subscripting can also be done with pointers • int a[10]; int *pa; pa = &a[0]; • x = *pa; is equivalent to x=a[0]; • pa+1 points to the next element pointed by pa • pa+i points i elements after pa • and pa-i points i elements before • Thus, if pa points to a[0] • *(pa+1) refers to the contents of a[1], • pa+i is the address of a[i], and • *(pa+i) is the contents of a[i]

  30. Pointers and Multi-dimensional Arrays • Example: • int a[10][20]; • int*a[10]; • char name[][50] = { "Illegal month", "Jan", "Feb", "Mar" }; • char *name[] = { "Illegal month", "Jan", "Feb", "Mar" };

  31. Bitwise Operators • Applies only to char, short, int, and long whether signed or unsigned • & bitwise AND • | bitwise inclusive OR • ^ bitwise exclusive OR • << left shift • >> right shift • ~ one's complement (unary) (alternate bits)

  32. Bitwise Operators • Bitwise Operators • & can be used to turn off some bits • x= x & 031, turn off (0) all bits except last five • | is used to turn bits on (1) • ^ sets • a one in each bit position where its operands have different bits, and • zero where they are the same. • << and >> perform left and right shifts of their left operand • x >> 2; y << 2;

  33. Left and Right Shifts • x << 2 • shifts the value of x by two positions • fills vacated rightmost bits with zero • One left shift multiplies the number by 2 • Right shifting (Signed Number): The vacated left most bits • will be filled with bit signs on some machines – arithmetic shift • and with 0-bits on others - logical shift

  34. I/O Functions • intgetchar(void) • intputchar(int) • intprintf(char *format, arg1, arg2, ...); • printf("%.*s", max, s); • intscanf(char *format, ...) : Read from user/console • intsscanf(char *string, char *format, arg1, arg2, ...): from string

  35. File Operations • FILE *fp; • FILE *fopen(char *name, char *mode); • intfclose(FILE *fp) • char *fgets(char *line, intmaxline, FILE *fp) • intfputs(char *line, FILE *fp)

  36. Common I/O Functions • String related functions as defined in string.h • strcat(s,t) concatenate t to end of s • strncat(s,t,n) concatenate n characters of t to end of s • strcmp(s,t) return negative, zero, or positive for s < t, s == t, s > t • strncmp(s,t,n) same as strcmp but only in first n characters • strcpy(s,t) copy t to s • strncpy(s,t,n) copy at most n characters of t to s • strlen(s) return length of s • strchr(s,c) return pointer to first c in s, or NULL if not present • strrchr(s,c) return pointer to last c in s, or NULL if not present

  37. Structures • What is a structure? • It is just a data type/variable that has multiple variables under it • Why do we need it? • For example, you are writing a student record management system. Now to define a student in your software, you have to keep many variables. Such as id, name, address, phone, email, major, minor, and some more. • Yes, you can deal with all these variables for all students • Better if you had only one variable for each student but as we see many variables are required to represent a student • So why not create one variable for a student and put the other variables under that [to represent that particular student) • The top level variable is the structure type

  38. Defining Structures • structstudent { • intid; • char *name; • char * address; • char *cell; • }; • Struct defines a data type. Hence, student now is a data type. We can define variables of student type as follows • student studentVar;

  39. Defining Structures • We can declare and assign at the same time • student studentVar = {100,”smith” ,”winnipeg”,”999-0539”}; • We can assign separately as well • student studentVar; • studentVar.id=100; • studentVar.name=“smith”;

  40. Structures • How to print structure variable data? • printf("%d,%s", studentVar.id, studentVar.name); • Legal operations with structures • Copy it as a unit • Assign to it as a unit • Take it’s address with & • Access it’s members

  41. Pointers to Structures • structstudent studentVar, *pp; • pp = &studentVar; • printf(“student details (%d,%s)\n", (*pp).id, (*pp).name); • printf(“student details (%d,%s)\n", pp->id, pp->name); • Notice the above two lines. How the member variables were accessed. • (*pp).id or pp->id

  42. Array of Structures • structstudent{ • int id; • char *name; • char *address; • char *cell; } studentList = { {100,”name1”,”address1”}, {101,”name2”,”address2”}, {102,”name3”,”address3”} • };

  43. Union • Union declaration, assignment may look like pretty similar to structures • Unions are usually used to store data of different data types for the same concept • All member variables points to the same memory location • Actually, we are trying to store one value • But as the data type of the value can differ, hence, we are keeping options • Usually, the storage will be of the size of the largest data type • The programmer is responsible to remember and extract the same data type he stored • For example, you want to store tags. However, tags can be of int, float, or string type based on context. Then you can declare a union as follows

  44. Union • union tag { • intival; • float fval; • char *sval; • } u;

  45. Enum • enum DAY { saturday, sunday , monday, tuesday, wednesday, thursday, friday } workday; • enum DAY today = wednesday;

  46. I/O Functions • Misc • intungetc(int c, FILE *fp) • system("date"); • Storage Management • void *malloc(size_t n) • void *calloc(size_t n, size_t size) • int *ip; • ip = (int *) calloc(n, sizeof(int));

  47. I/O Functions • Mathematical Functions • sin(x) x in radian • cos(x) • atan2(y,x) • exp(x) • log(x) (x>0) , natural • log10(x) (x>0) , 10 based • pow(x,y) x to the power y • sqrt(x) • fabs(x) absolute value of x

  48. References • “The C Programming Language”: Kernighan and Ritchie • Internet

More Related