cse 2541 – advanced c programming instructor: yang zhang zhang.863@osu.edu
Post on 30-Dec-2015
221 Views
Preview:
TRANSCRIPT
CSE 2541 – Advanced C Programming
Instructor: Yang ZhangZhang.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– 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
top related