Chapter 1 Introduction to C Language By C. Shing ITEC Dept Radford University Objectives Understand brief history of C Describe C components Understand C features Understand Program Structure in C Understand how to run a C program using GNU C compiler and in .NET environment Understand how to use a vi editor Slide 2 C Brief History 1967 Martin Richards 1969 Ken Thompson, Bell Lab Object-oriented Super-set of C 1989 ANSI C (e.g. GNU C: gcc) 1999 updated ANSI C developed C language on DEC PDP-11 (traditional C: cc) machine independent 1978 C++: Bjarne Stroustrup Develop B language for Unix (on DEC PDP-7) machine dependent 1970 Dennis Ritchie, Bell Lab Develop BCPL language for writing OS and compilers Variable-length array Restrict pointer modifier 2002 Microsoft C# for .NET framework Slide 3 C Components Compiler Preprocessor: code begins with # at column 1 traditional ANSI Process code before compiler starts translating Library Standard Library (/usr/lib/libc.a) Examine table of contents: ar t /usr/lib/libc.a Math Library (/usr/lib/libm.a) Utility Library Slide 4 C Features Middle-level language Machine independent Case sensitive Type language (weak type) Can access bit level Variable must be declared a type Allow automatic type conversion No boolean data type (0: false, non-zero: true) No run-time error checking Programmer’s responsibility: array boundary Slide 5 C Features Small language, very efficient 32 keywords in ANSI C compared to BASIC (> 100 reserved words) All subprograms are functions Function uses pass-by-value Function cannot be nested within another function Can manipulate memory System programming tool Slide 6 Running C Program C source program -> C Compiler -> Object program -> Link (to get executable program) ->(feed data) Execution Slide 7 Program Structures File Extension .c (or .cpp for C++) Compile & link (Solaris) , then execute gcc mainfile.c [sub1filename.c sub2filename.c] or in traditional C: (if math library is called in the program) cc mainfile.c [sub1filename.c sub2filename.c] –lm then a.out or gcc -o executable mainfile.c [sub1filename.c sub2filename.c] then executable Slide 8 Program Structures (Cont.) Compile & link (Solaris) to your library, then execute gcc mainfile.c [sub1filename.c sub2filename.c] -lyourlibraryname or in traditional C: (if yourlibrary is called in the program) cc mainfile.c [sub1filename.c sub2filename.c] –llyourlibraryname then a.out or gcc -o executable mainfile.c [sub1filename.c sub2filename.c] –llyourlibraryname then executable Slide 9 Program Structures (Cont.) Compile only (Solaris) gcc –c filename.c or cc -c filename.c (traditional C) Slide 10 Program Structures (Cont.) mainfile.c /* ********************************** * This is a comment * * Block * ********************************** */ // Comment line // Declaration for standard library: in /usr/include/stdio. // The following line is required #include <stdio.h> Slide 11 Program Structures (Cont.) #include <math.h> //if math library is used // The following file yourdeclaration.h // is in your current directory #include “yourdeclaration.h” // define macro constants #define PI 3.14159 #define MY_MESSAGE “Good Morning!” Slide 12 Program Structures (Cont.) // declare named global constants const int number = 4; // declare types typedef char myCharacter; // declare global variables int a; char b=‘a’, c=‘\n’; myCharacter e; long d = 14000L; // this means long int (default int) float x=-2.5F; double y=2.5; Slide 13 Program Structures (Cont.) // declare function prototype int sub1(int); // define main function int main (void) { // declare local variables int lb, lc; lc = 2; // call function lb = sub1(lc); printf(“%d\n”,lb); return 0; // no error exit } Slide 14 Program Structures (Cont.) // define function int sub1 (int l) { // declare local variables int la; // call function la = 5*l; return la; } Slide 15 Appendix: Traditional C (not recommended to write) No const data type (use #define instead) No void data type Main function does not return anything No function prototype Return type for function default is int if not specified Function formal parameters are defined after () Slide 16 Program Structures (Traditional C) mainfile.c /* ********************************** * This is a comment * * Block * ********************************** */ // Comment line // Declaration for standard library: in /usr/include/stdio. // The following line is required #include <stdio.h> Slide 17 Program Structures (Cont.) #include <math.h> //if math library is used // The following file yourdeclaration.h // is in your current directory #include “yourdeclaration.h” // define macro constants #define PI 3.14159 #define MY_MESSAGE “Good Morning!” #define NUMBER 4 Slide 18 Program Structures (Cont.) // declare types typedef char myCharacter; // declare global variables int a; char b=‘a’, c=‘\n’; myCharacter e; long d = 14000L; float x=-2.5F; double y=2.5; Slide 19 Program Structures (Cont.) // define function sub1 must appear before main function sub1 () int l; { // declare local variables int la; // call function la = 5*l; return la; } Slide 20 Program Structures (Cont.) // define main function main () { // declare local variables int lb, lc; lc = 2; // call function lb = sub1(lc); printf(“%d\n”,lb); } Slide 21 vi/vim editor vi filename.c Please refer to http://www.chem.brown.edu/instructions/vi.html Slide 22 Use vi Editor 2 modes: Editor mode (press <esc>): make correction Insert/open/append mode (press<i>/<o>/<a>): add text Slide 23 Use vi Editor (Cont.) Editor mode: (Common keys) <h>:move left, <l>: move right, <j>: move down, <k>: move up <0>: beginning of line, <$>: end of line <w>: next word, <b>: previous word <:><n>: go to line n Slide 24 Use vi Editor (Cont.) Editor mode: (Cont.) <x>: delete character, <d><w>: delete word <d><d>: delete line (to clip board), <Y>: copy line <p>: paste from clip board after/below cursor <P>: paste from clip board before/above cursor Move cursor to line m,<d><d>, then move cursor to line n, <p>: move line m to below line n Move cursor to line m,<Y>, then move cursor to line n, <p>: copy line m to below line n Slide 25 Use vi Editor (Cont.) Editor mode: (Cont.) Note: put a number n before an action will repeat the action n times. For example: 10<j>: move cursor down 10 lines 10<x> delete 10 characters 10<d><d>: delete 10 lines 10<Y>: copy 10 lines Slide 26 Use vi Editor (Cont.) Editor mode: (Cont.) <r>: replace a character <c><w> type in word<esc>: replace a word <R> type in words<esc>: replace/type over words st </>type in word<enter>: search the 1 occurrence of the word <:><w>: save, <:><w><q>: save and quit, <:><w><q>type in filename<enter>: save to filename and quit <:><s></><word1></><word2></><enter>: substitute the 1st occurrence of word1 for word2 <:><1><,><$><s></><word1></><word2></><enter>: substitute word1 for word2 from line 1 to lat line Slide 27 Use vi Editor (Cont.) Editor mode: (Cont.) <J>: join the cursor line and the line below into one line Move cursor to position <i><esc>: split at the cursor position into 2 lines <.>: repeat the previous command <n>: next searched word <G>: go to last line <ctrl><g>: file status Slide 28 Use vi Editor (Cont.) Insert/open/append mode: (Common keys) <i>type in words<esc>:insert words before the cursor <a>type in words<esc>:append words after the cursor <o>type in words<esc>:open lines after the cursor and append words <O>type in words<esc>:open lines before the cursor and append words Slide 29 Class Example Hands On Example0: edit the following 2 lines in file .exrc (vi ~/.exrc) :abbr #b /************************ :abbr #e ************************/ Then when you use vi template.c And after press<i>/<a>/<o> to insert text, you type #b followed by <Enter>, you add a line /******** in. Similarly, when you type #e followed by <Enter>, you add a line ********/ in Example 1 Slide 30 Programming Environment in .NET Running C/C++ Instruction (Reference) Not used in this course Slide 31 Reference: Brian W. Kernighan & Dennis M. Ritchie: C Programming Language, ANSI Edition Prentice Hall Al Kelley & Ira Pohl: A Book on C, 4th ed. Addison Wesley Deitel & Deitel: C How to Program, 4th ed., Chapter 1, Prentice Hall Slide 32