Synapseindia dot net development basics

Page 1

Advanced C Programming


Course info •

Prereq – CSE 2221 or CSE 222

Co-req – CSE 2231


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


Popular language

Why C?

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)


C characteristics •

"C" because many features came from earlier language “B“ –

Block structured –

Reduced form of Basic Combined Programming Language, 1966

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


C vs. Java

Speed

Portability

Object orientation


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


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 –

Compilation: hello.o, a binary file –

cc -S hello.c 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


Hello World – content breakdown •

Comment

Preprocessor directive

Function definition

Output statement

Return clause


#include <stdio.h>

Second Example

int main() { int first, second, add; float divide; printf("Enter two integers\n"); scanf("%d%d", &first, &second);


Second example – content breakdown

Variables

Function calls –

Input

Output

Operators

Typecasting


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.