Introduction

Download Report

Transcript Introduction

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
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
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
Available Programming Languages
• Machine Languages
• Assembly Languages
• High-level Languages
–
–
–
–
–
–
–
C/C++
COBOL (obsolete)
Pascal (academic)
Fortran (nearing obsolescence)
Java
Python
etc…
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
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, r1
mul workHours, r1
store salary, r1
•
Even into the 1990s, the majority of console
video games were written in assembly
language.
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
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)
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
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
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
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
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
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…
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…
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
Your First Program
#include <stdio.h>
int main() {
printf("Hello World\n");
return 0;
}
Preprocessor: interact with
input/output of your computer
Start point of the program
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
Your First Program
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Preprocessor: interact with
input/output of your computer
Start point of the program
Start and finish of function
Your First Program
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Preprocessor: interact with
input/output of your computer
Start point of the program
Start and finish of function
Printing a line of Text
Your First Program
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Preprocessor: interact with
input/output of your computer
Start point of the program
Start and finish of function
Printing a line of Text
New line character
Your First Program
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
Preprocessor: interact with
input/output of your computer
Start point of the program
Start and finish of function
Printing a line of Text
Finish and return value 0
A way to exit a function
It means that the program
terminated normally in this
case
Comments for programs
• Why comments are needed
– Good habit
– Readable to others
– Remind yourself
• How to comment
– /* … */
– // …
• Examples
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
Procedure
helloworld.c
#include <stdio.h>
int main()
{
printf("Hello World\n");
return 0;
}
This is your C program. Type
the code in any standard text
editor, and save it as
helloworld.c
Type gcc helloworld.c –o helloworld
C-compiler
helloworld
0011 0000 1010 0110
1100 0110 1011 0101
1010 1110 0110 1110
to compile helloworld.c into helloworld
using the gcc compiler
The gcc compiler generates the
corresponding executable code
named helloworld. The computer can
execute this machine readable code
if you type ./helloworld