1 / 11

CSE 2541 – Advanced C Programming

CSE 2541 – Advanced C Programming. Instructor: Yang Zhang Zhang.863@osu.edu. Course info. Prereq – CSE 2221 or CSE 222 Co-req – CSE 2231 Website – http://www.cse.ohio-state.edu/~zhangya/2451/. Brief history of C. 1970’s Unix C, from BCPL (Thompson and Ritchie) C programming Language

myron
Télécharger la présentation

CSE 2541 – Advanced C Programming

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. CSE 2541 – Advanced C Programming Instructor: Yang Zhang Zhang.863@osu.edu

  2. Course info • Prereq – CSE 2221 or CSE 222 • Co-req – CSE 2231 • Website – • http://www.cse.ohio-state.edu/~zhangya/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. Hello World – code /* Hello World! */ #include <stdio.h> int main() { printf(“Hello World!\n”); return 0; }

  7. C compilation model

  8. Hello World – walkthrough • C program: hello.c • emacs, vi, vim, pico, joe … • Plaintext only • Preprocessing: hello.s, assembly code • cc -S hello.c • Compilation: 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

  9. Hello World – content breakdown • Comment • Preprocessor directive • Function definition • Output statement • Return clause

  10. #include <stdio.h> 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

  11. Second example – content breakdown • Variables • Function calls • Input • Output • Operators • Typecasting

More Related