CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

25
CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang

description

View of Computers From a programmer’s viewpoint –Computers are tools –A computer program (hopefully) 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 a particular programming language

Transcript of CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Page 1: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

CS 251C Programming

for Engineers

Spring 2016Instructor: Dick Lang

Page 2: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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 in

the UNIX environment.– Execute: Run corresponding code to get results – Debug: Identify and fix syntax and semantic errors in C code.– Simple numerical programming techniques– Basic data structure construction and operations (pointers!)

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

experience, but with a strong mathematics background

Page 3: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

View of Computers

• From a programmer’s viewpoint– Computers are tools– A computer program (hopefully) 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 a particular

programming language

Page 4: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Your Mindset…

• From an engineer’s point of view:– A computer/program may control a mechanism or

process– A computer/program may analyze data and aid in

drawing conclusions or decision-making– A computer can model a mechanism or circuit in

advance of fabricating it• Embedded computers are components of most

electro-mechanical systems and products

Page 5: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Available Programming Languages

• Machine Languages• Assembly Languages• High-level Languages

– C/C++– COBOL (obsolete)– Pascal (academic)– Fortran (nearing obsolescence)– Java– Python– etc…

Page 6: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Machine Languages

• System of instructions and data directly understandable by a computer's central processing unit (i.e. hardware).

• 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 7: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Assembly Languages• Human-readable notation for the machine

language that a specific computer architecture uses, representing elementary computer operations (translated via assemblers)

• Example:load hourlyRate, r1mul workHours, r1store salary, r1

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

Page 8: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

High-level Languages

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

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

salary = hourlyRate * workHours

• Make complex programming simpler => make programming more productive & reliable

Page 9: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Why Program using C• Initial development occurred at Bell Labs in early

70’s by Ritchie, as part of Unix OS development• General-purpose computer programming language

– high-level assembly– Simplicity and efficiency of the code

• Most widely used compiled programming language– Commonly used for writing system software– Widely used for writing applications– Hardware independent (portable, mostly)– Great influence on many other popular languages (C++,

Java)

Page 10: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Outline of the Course – I• Introductory information• 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: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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

– Declarations – Calling

• Pointers • Struct(ures) • Preprocessor• * Advanced Material

– Debug using gdb and/or Visual Studio– Binary Trees – Link Lists– Recursive Functions

* may be adjusted according to time and interests of students

Page 12: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

History- I• ENIAC I (Electrical Numerical

Integrator And Calculator)• John Mauchly and J Presper

Eckert• 500,000 dollars (in 1946)

– 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

Page 13: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

History- II• First home computer

– 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

Mark-8 Altair

Page 14: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

History- V

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

1984 – Microsoft Windows 1.0

ships in November, 1985

original IBM PC 1981

Page 15: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Operating System• What is an 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

• Embedded computers use “real-time” OS’s which do not require disks…

Page 16: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Why 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.• Simple things are simple in Unix…

Page 17: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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 18: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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 19: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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 20: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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 21: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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 22: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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 23: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Comments for programs

• Why comments are needed– Good habit– Readable to others– Remind yourself

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

• Examples

Page 24: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

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 (usually, an executable file)

• Why we need a compiler• Available C compiler in UNIX system: gcc

gcc sourcefile.c –o exefile

Page 25: CS 251 C Programming for Engineers Spring 2016 Instructor: Dick Lang.

Procedure

This is your C program. Type the code in any standard text editor, and save it as helloworld.c

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

helloworld.c

C-compilerType gcc helloworld.c –o helloworld

to compile helloworld.c into helloworld using the gcc compiler

0011 0000 1010 01101100 0110 1011 01011010 1110 0110 1110

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