cse 2541 – advanced c programming instructor: yang zhang [email protected]
TRANSCRIPT
CSE 2541 – Advanced C Programming
Instructor: Yang [email protected]
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– Widely used like the others: Fortran, Pascal– Main form of language for system programming– Available on any machine with C compiler and library
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
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)
Hello World – code
/* Hello World! */#include <stdio.h>
int main(){ printf(“Hello World!\n”); return 0;}
C compilation model
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
Hello World – content breakdown
•Comment•Preprocessor directive•Function definition•Output statement•Return clause
#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
Second example – content breakdown
• Variables• Function calls– Input– Output
• Operators• Typecasting