cse 2541 – advanced c programming instructor: yang zhang zhang.863@osu.edu

Post on 30-Dec-2015

221 Views

Category:

Documents

3 Downloads

Preview:

Click to see full reader

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