Presentation is loading. Please wait.

Presentation is loading. Please wait.

CSE 2541 – Advanced C Programming. Course info Prereq – CSE 2221 or CSE 222 Co-req – CSE 2231 Website

Similar presentations


Presentation on theme: "CSE 2541 – Advanced C Programming. Course info Prereq – CSE 2221 or CSE 222 Co-req – CSE 2231 Website"— Presentation transcript:

1 CSE 2541 – Advanced C Programming

2 Course info Prereq – CSE 2221 or CSE 222 Co-req – CSE 2231 Website http://www.cse.ohio-state.edu/~shir/cse-2451/

3 Brief history of C 1970’s – Unix – C, from BCPL (Thompson and Ritchie) C programming Language – Widely used like the others: Fortran, Pascal – Main form of language for system programming – Available on any machine with C compiler and library

4 Why C? Popular language – Operating systems (Win, Linux, FreeBSD) – Web servers (Apache) – Web browsers (Fox) – Mail servers (sendmail, postfix) – DNS servers (bind) – Graphics card programming (OpenCL) Programming language rankings Why? – Performance – Portability – Familiar to programmers

5 Why C? Compared to assembly language – Abstracts the hardware view (registers, memory, call stacks), making code portable and easier – Provides variables, functions, arrays, complex arithmetic, Boolean expressions Compared to other high-level languages – Maps almost directly into hardware instructions, making optimization easier – Provides a minimal set of abstractions compared to other HLLs – Like other HLLs, makes complex programming simpler (at the expense of efficiency)

6 C characteristics "C" because many features came from earlier language “B“ – Reduced form of Basic Combined Programming Language, 1966 Block structured – Blocks are denoted { } Many utility functions provided in libraries – Libc, libpthread, libm – Nowhere near the functionality of other runtime environments Some major C features – Functions, Structures, Types – Pointers – direct access to memory space

7 C vs. Java Speed Portability Object orientation

8 C vs. Java Pointers to memory Platform dependent types Programmer allocated memory Declare variables at start of block References to objects Types have well defined sizes Automatic garbage collection Declare variable anywhere

9 Hello World – code /* Hello World! */ #include int main() { printf(“Hello World!\n”); return 0; }

10 C compilation model

11 Hello World – walkthrough C program: hello.c – emacs, vi, vim, pico, joe … – Plaintext only Preprocessing and Compiling: hello.s, assembly code – cc -S hello.c Assembler: hello.o, a binary file – cc -c hello.s Linking: a.out or hello, an executable file – cc hello.o – cc -o hello hello.o Loading (dynamical linking) and execution:./hello –./a.out –./hello

12 Hello World – content breakdown Comment Preprocessor directive Function definition Output statement Return clause

13 #include int main() { int first, second, add; float divide; printf("Enter two integers\n"); scanf("%d%d", &first, &second); add = first + second; divide = first / (float)second; printf("Sum = %d\n",add); printf("Division = %.2f\n",divide); return 0; } Second Example

14 Second example – content breakdown Variables Function calls – Input – Output Operators Typecasting


Download ppt "CSE 2541 – Advanced C Programming. Course info Prereq – CSE 2221 or CSE 222 Co-req – CSE 2231 Website"

Similar presentations


Ads by Google