Department of Computer and Information Science, School of Science, IUPUI CSCI 230 Introduction to Computers - Languages Dale Roberts, Lecturer Computer Science, IUPUI E-mail: [email protected].

Download Report

Transcript Department of Computer and Information Science, School of Science, IUPUI CSCI 230 Introduction to Computers - Languages Dale Roberts, Lecturer Computer Science, IUPUI E-mail: [email protected].

Department of Computer and Information Science,
School of Science, IUPUI
CSCI 230
Introduction to Computers
- Languages
Dale Roberts, Lecturer
Computer Science, IUPUI
E-mail: [email protected]
Computer Organization
A Typical Von-Neumann Architecture
CPU
Control Circuit
(ex: PC: Program Counter)
Memory
ALU
Example:
1.
2.
3.
4.
5.
6.
Input unit
Output unit
Memory unit
Arithmetic and logic unit (ALU)
Central processing unit (CPU)
Secondary storage unit
I/O
Programming Languages
1. Machine languages (machine dependent)
Native tongue of a particular kind of computer. Each
instruction is a binary string. The code is used to indicate
the operations to be performed and the memory cells to be
addressed. This form is easiest form of computers to
understand, but is most difficult for a person to understand.
Strings of numbers giving machine specific instructions
Example: +1300042774
+1400593419
+1200274027
Programming Languages (cont.)
2. Assembly languages (machine dependent)
English-like abbreviations representing elementary computer
operations (translated via assemblers)
Again specific to only one type of computer. Uses descriptive
names for operations and data, e.g. , “LOAD value”, “ADD
delta”, “STORE value”. Assemblers will translate these to
machine
languages.
Intermediate
level.
Somewhat
descriptive, but basically following the machine instructions.
Example:
LOAD
ADD
STORE
BASEPAY
OVERPAY
GROSSPAY
Programming Languages (cont.)
3. High-level languages (machine independent)
Codes similar to everyday English
High-level languages: Write program instructions called statement
that resemble a limited version of English. e.g., the statement
“value = value + delta”. Portable, meaning it can be used on
different types of computers without modifications. Compilers
translate them to machine languages. Examples are FORTRAN,
PASCAL, COBOL, C, C++, BASIC etc.
Use mathematical notations (translated via compilers)
Example:
grossPay = basePay + overTimePay
a
Before b
Example:
Statement:
a= a + b
a
After
b
10
7
17
7
Programming Languages (cont.)
Structured programming
Disciplined approach to writing programs
Clear, easy to test and debug and easy to modify
Multitasking
Specifying that many
activities run in parallel (still timesliced)
Language
FORTRAN
COBOL
Lisp
C
Prolog
Ada
Babbage
Smalltalk
C++
JAVA
Application Area
Origin of Name
Scientific programming
Formula Translation
Business data Processing
Common Business-Oriented Language
Artificial Intelligence (AI)
List Processing
System Programming
Predecessor B
AI
Logic Programming
Real-time distributed systems
Ada Augusta Byron & Charles
GUI, OOP
Objects “talk” via message
Supports object & OOP
C (++ is the increment operator)
SupportsWeb programming Originally named “Oak”
Semantic Gap
A “semantic gap” exists between the amount of
information conveyed in assembly language v high level
languages. Consider the following C single statement:
x = x + 3;
This single statement may require many assembly
language statements (operations):
Load memory location 24 into accumulator
Add a constant 3 to the accumulator
Store accumulator in memory location 24
The number of executable statement expands greatly
during the translation process from a high level
language into assembly language.
C Programming Language
C
High-level general-purpose language developed in 1972 at AT&T Bell
Lab. By Dennis Ritchie from two previous programming BCPL and B
Originally developed to write the UNIX operating system
Hardware independent (portable)
By late 1970's C had evolved to "Traditional C"
Today, virtually all new operating systems are written in C or C++.
The current standard in C is ANSI C.
C++ is a more advanced version of C, incorporating among other
things, the object-oriented constructs
Standardization
Many slight variations of C existed, and were incompatible
Committee formed to create a "unambiguous, machine-independent" definition
Standard created in 1989, updated in 1999
C has become a popular language industry due its power and flexibility
The C Standard Library
C programs consist of pieces/modules called
functions
A programmer can create his own functions
Advantage: the programmer knows exactly how it works
Disadvantage: time consuming
Programmers will often use the C library
functions
Use these as building blocks
Avoid re-inventing the wheel
If a pre-made function exists, generally best to use it
rather than write your own
Library functions carefully written, efficient, and portable
The C Standard Library (cont.)
The Key Software Trend: Objects in C++ and
JAVA
Reusable software components that model items in the
real world
Meaningful software units: ex: Date objects, time objects, audio
objects, video objects, file objects, record objects…any noun can
be represented as an object
More understandable, better organized, and easier to
maintain than procedural programming
Favor modularity
The C Standard Library
#include <stdio.h>
main()
{
int i;
for (i = 0; i ++; i < 10)
{
printf ("Hello World!\n");
}
}
A Typical C Program Development Environment
• Phases of C Programs:
Editor
Disk
Preprocessor
Disk
Compiler
Disk
Linker
Disk
1. Program is created in the
editor and stored on disk
2. Preprocessor program
processes the code
3. Compiler creates object
code and stores it on disk.
4. Linker links the object
code with the libraries
1. Edit
2. Preprocess
3. Compile
4. Link
Primary Memory
5. Load
Loader
5. Loader puts program
in memory.
Disk
Primary Memory
CPU
6. CPU takes each instruction
and executes it, possibly
storing new data values as
the program executes
6. Execute
A Typical C Program Development Environment (cont.)
• Procedure to Prepare a C Program for Execution
Enter the program code and
save as a source (*.c) file using
Word Processor (editor)
Source (.c)
file on disk
(Format: text)
Compiler attempts to
translate the program
into machine code
Failure
Revised
source file
Correct
syntax
errors
List of errors
Success
New object
(*.obj) files
(Format: binary)
The linker links the
new object file with
other object files
Other object
(*.obj) files
Input data
Executable
(*.exe, *.out) file
(Format: binary)
The loader places the
executable file into
memory
Executable
program in
memory
Welcome to
CSCI230
Results
Constructs in C Language
Type Declarations: ex: int, float,…
I/O: ex: printf(), scanf()
Arithmetic and Logical Operations: ex: +,-,*,/,%,>,<,==,…
Arrays, Pointers, Structures, Unions, …
Functions
Arguments & return values
Recursion
Control Mechanisms: ex: if, else, while, for,…
Characters & Strings: ex: strcat(), strcpy(), …
File Processing: ex: fopen(), fclose(), …
Pre-processor: ex: #define …
Misc.
bit operations, ...
Operation System (OS)
Responsibilities:
Command-line
Interface
Communicating with the computer user
UNIX
Managing allocation of memory, of processor MS_DOS
VMS
time, and of other resources for various tasks
I/O handling: BIOS vs DOS services (Interrupts)
Read/Write data from secondary storage
Graphical User
Interface (GUI)
MacOS
Windows
X Windows
(linux and solaris)
Evolution of Operating Systems
Batch processing: do only one job or task at a time
Operating systems: manage transitions between jobs and
Increase throughput (amount of work computers process)
Multiprogramming: Computer resources are shared by many
jobs or tasks
Timesharing: Technique used to implement multiprogramming
where the computer runs a small portion of one user’s job
then moves on to service the next user
Application Software
Developed to assist a computer user in
accomplishing special tasks
ex: word processing applications: MS-word or
Word-perfect
ex: Spreadsheet applications: Lotus1-2-3, Excel
ex: Database: Oracle, MS-Access
Software Development Life Cycle (SDLC)
Problem: specify the problem requirements
Analysis: analyze the problem
Design: design the algorithm to solve the problem
Implementation: Implement the algorithm
Testing: test and verify the completed program
Maintenance: maintain and update the program