cgs 3460 programming using c spring 2007 instructor: rong zhang tas: ting chen and sungwook moon

35
CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Upload: lewis-potter

Post on 23-Dec-2015

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

CGS 3460 PROGRAMMING USING C

Spring 2007

Instructor: Rong Zhang

TAs: Ting Chen and Sungwook Moon

Page 2: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Goals

• We will learn– Read: Understand programs written in C language– Write: Design and implement programs using C language– Compile: Use compiler to convert C code into executable file

under UNIX– Execute: Run corresponding code to get results – Debug: Identify and fix syntax and semantic errors in C code.

• Appropriate for– Technically oriented people with little or no programming

experience – Experienced programmers who want a deep and rigorous

treatment of the language

Page 3: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

New View of Computers

• From a programmer’s viewpoint– Computers are tools– A computer program turns raw data into

meaningful information– A program is the driving force behind any job

that any computer does• A program is a list of detailed instructions• These instructions are written in certain

programming language

Page 4: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Available Programming Languages

• Machine Languages• Assembly Languages• High-level Languages

– C/C++– COBOL– Pascal– BASIC– Fortran– JAVA– Etc.

Page 5: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Machine Languages

• System of instructions and data directly understandable by a computer's central processing unit.

• Example:100011 00011 01000 00000 00001 000100

000010 00000 00000 00000 10000 000001

000000 00001 00010 00110 00000 100000

• Every CPU model has its own machine code, or instruction set, although there is considerable overlap between some

Page 6: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Assembly Languages

• Human-readable notation for the machine language that a specific computer architecture uses representing elementary computer operations (translated via assemblers)

• Example:load hourlyRatemul workHoursstore salary

• Even into the 1990s, the majority of console video games were written in assembly language.

Page 7: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

High-level Languages

• Higher level of abstraction from machine language – Codes similar to everyday English

• Use mathematical notations (translated via compilers) – Example:

salary = hourlyRate * workHours

• Make complex programming simpler

Page 8: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Why Programming using C

• Initial development occurred at Bell Labs in early 70’s by Ritchie

• General-purpose computer programming language – high-level assembly – Simplicity and efficiency of the code

• The most widely used programming languages– Commonly used for writing system software– Widely used for writing applications– Hardware independent (portable)

• Great influence on many other popular languages

Page 9: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Textbooks

• RequiredProgramming in C (3rd Edition) by Stephen Kochan.

ISBN: 0672326663. Link for the book from amazon:

http://www.amazon.com/gp/product/0672326663

• Recommended Reading Absolute Beginner's Guide to C by Greg Perry. ISBN:

0672305100. Link

http://www.amazon.com/gp/product/0672305100

Page 10: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Outline of the Course – I• Introductions

– Familiarization with programming environment, telnet / SSH Secure Shell, ftp / SSH Secure File Transfer, UNIX, Compiling / gcc

• C program structure• Basic data types and variables declaration• Arithmetic expressions and operators• Control statements.

– Conditional statements – The while loop – The do while loop – The for loop – The if else statement– The switch statement – The break statement – The continue statement

Page 11: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Outline of the Course – II• Formatted Input and Output • Arrays and Strings• Functions

– Declarations – Calling

• Pointers • Struct, Union, Enums • Preprocessor• * Advanced Material

– Debug using gdb– Arrays and Pointer Arithmetic– Binary Trees – Link Lists– Recursive Functions

* may be adjusted according to time and interests of students

Page 12: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Grading Scale

• You earn your grade• Final grade is calculated according to the

following scheduleHome works 30%Quizzes 20%Mid-term exam 20%Final exam / Project 30%

• Grade scale is:A(100-90),B+(89-85),B(84-80),C+(79-75),C(74-70),D+(69-65),D(64-60),F(59-0)

Page 13: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Policies

• Attendance and Expectations

• Homework Policies

• Make-up Exam Policy

• Other Policies– Re-grading

• Course is on WebCT

http://lss.at.ufl.edu/services/webct/

Page 14: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

History - I

Konrad Zuse's Z1 Circa 1936

• The first freely programmable binary computer

• Konrad Zuse's in Germany

• Innovations– Floating-point arithmetic– High-capacity memory– Modules or relays

operating on the yes/no principle.

From http://inventors.about.com/library/blcoindex.htm

Page 15: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

History - II

• The first electronic-digital computer

• Iowa State University • Innovations

– A binary system of arithmetic

– Parallel processing– Regenerative memory– Separation of memory

and computing functions

Atanasoff-Berry Computer

From http://inventors.about.com/library/blcoindex.htm

Page 16: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

History- III

• ENIAC I (Electrical Numerical Integrator And Calculator)

• John Mauchly and J Presper Eckert

• 500,000 dollars• Thousand times faster

– 17,468 vacuum tubes– 70,000 resistors– 10,000 capacitors, etc– 800 square feet floor space– 30 tons– 160 kilowatts of electrical power

The ENIAC 1946

From http://inventors.about.com/library/blcoindex.htm

Page 17: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

History- IV

• First home computer– Scelbi  – Mark-8 Altair – IBM 5100 Computers

• 1974/1975• Altair

– 8080 CPU– 256 Byte RAM card– $400– The consumer needs to put them

together, make it work and write any needed software.

– Paul Allen and Bill Gates develop BASIC for the Altair 8800

From http://inventors.about.com/library/blcoindex.htm

Mark-8 Altair

Page 18: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

History- V

• Personal computer– IBM PC in 1981– Apple Macintosh in

1984 – Microsoft Windows 1.0

ships in November, 1985

– Network

http://www.pbs.org/nerds/timeline/

original IBM PC 1981

Page 19: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Operating System

• What is OS?– A program that allows you to interact with the

computer -- all of the software and hardware• With a command-line operating system (e.g., DOS)• With a graphical user interface (GUI) operating system (e.g.,

Windows)

• Two major classes of operating systems– Windows

• Nice interface, easy to learn

– Unix• reliable timesharing operating system

Page 20: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Why we choose UNIX

• Powerful – Multi-user operating system– Good programming tools

• Most heavy-duty database management systems started out on Unix

• Flexible  – Thousands of tools that can be combined and

recombined.

• Reliable – Unix is hard to crash.

Page 21: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

How to Access a UNIX Machine

Your personal computer

(client)

grove.ufl.edu

(server)

telnet / ftp

telnet: allows you to connect to other computers and use softwares thereftp: allows you to retrieve files from other computers.

Page 22: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Telnet

• TELetype NETwork– A network protocol used on the Internet / LAN

– By extension, refers to the program which provides the client part of the protocol

• Once connected– Log on as a regular user with access to

• application / software• data

• A Telnet command request looks like this – telnet grove.ufl.edu

Page 23: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

FTP

• File Transfer Protocol– A network protocol used on the Internet / LAN– Allow to transfer files to and from remote

computers

• A ftp command request looks like this – ftp grove.ufl.edu

Page 24: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

SSH

• Why SSH

Figures from http://www.suso.org/docs/shell/ssh.sdf

• Download SSH– http://www.openssh.org/

Page 25: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

More about SSH

• Recommendation for Windows– Putty as telnet tool

• http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

– WinSCP as ftp tool• http://winscp.net/eng/download.php

• Other choices– ftp, telnet using command line in windows– Other softwares

• Core FTPhttp://www.coreftp.com/download.html

Page 26: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Your First Program

#include <stdio.h>

int main()

{

printf("Hello World\n");

return 0;

}

Preprocessor: interact with input/output of your computer

You will see this at the beginning of nearly all programs

Tells computer to load file named <stdio.h>

<stdio.h> allows standard input/output operations

Page 27: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Your First Program

#include <stdio.h>

int main()

{

printf("Hello World\n");

return 0;

}

Start point of the program

Preprocessor: interact with input/output of your computer

C programs contain one or more functions, exactly one of which must be main

int means that the function main will "return" an integer value

Page 28: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Your First Program

#include <stdio.h>

int main()

{

printf("Hello World\n");

return 0;

}

Start point of the program

Preprocessor: interact with input/output of your computer

Start and finish of function

Page 29: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Your First Program

#include <stdio.h>

int main()

{

printf("Hello World\n");

return 0;

}

Printing a line of Text

Start point of the program

Preprocessor: interact with input/output of your computer

Start and finish of function

Page 30: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Your First Program

#include <stdio.h>

int main()

{

printf("Hello World\n");

return 0;

}

Printing a line of Text

Start point of the program

Preprocessor: interact with input/output of your computer

Start and finish of function

New line character

Page 31: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Your First Program

#include <stdio.h>

int main()

{

printf("Hello World\n");

return 0;

}

Printing a line of Text

Start point of the program

Preprocessor: interact with input/output of your computer

Start and finish of function

Finish and return value 0

A way to exit a function

It means that the program terminated normally in this case

Page 32: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Comments for programs

• Why need comments– Good habit– Readable to others– Remind yourself

• How to comment– /* … */– // …

• Effects on compiler• Examples

Page 33: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Compiler

• What is compiler– A computer program (or set of programs) that

translates text written in a computer language ( the source code) into another computer language (most time the executable file)

• Why we need a compiler

• Available C compiler in UNIX system: gccgcc sourcefile.c –o exefile.exe

Page 34: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Text Editor in UNIX

• Edit your code Using wordpad, MS word on your personal computer– Need to transfer your program to UNIX

machine using ftp

• Edit your code in UNIX using– vi– pico– emacs

Page 35: CGS 3460 PROGRAMMING USING C Spring 2007 Instructor: Rong Zhang TAs: Ting Chen and Sungwook Moon

Procedure

This is your C program. Type the code in any standard text editor, and save it as helloworld.c. Transfer it to grove.ufl.edu if necessary

#include <stdio.h> int main() { printf("Hello World\n"); return 0; }

helloworld.c

C-compilerType gcc helloworld.c –o helloworld.exe

to compile helloworld.c into helloworld.exe using the gcc compiler

0011 0000 1010 01101100 0110 1011 01011010 1110 0110 1110

helloworld.exe The gcc compiler generate corresponding executable code named helloworld.exe. The computer can execute this machine readable code if you type ./helloworld.exe