Software Engineering Syllabus

Download Report

Transcript Software Engineering Syllabus

Chapter 6
Programming Languages (1)
Introduction to CS
1st Semester, 2012 Sanghyun Park
Outline







Historical Perspective
Traditional Programming Concepts
Procedural Units
Language Implementation
(next file)
(next file)
Object-Oriented Programming
Programming Concurrent Activities
Declarative Programming
(skip)
(skip)
(skip)
Programming Language History

____________ languages
(e.g., 5123)

____________ languages
(e.g., ADDI R1, R2, R3)

____________ languages
(e.g., sum = a + b)
First Generation Language




Machine code
Specific to the machine __________
_____ to write
Even harder to read
Second Generation Language





Assembly language
Usually a 1-1 _________ to machine code,
e.g., ADDI R1, R2, R3 instead of 5123
______ to read and write
Still specific to the machine architecture
Better, but not by much
Assemblers

Since assembly language is _____ to machine language,
_________ can be done automatically
ADDI R1,R2,R3
Assembler
5123
Third Generation Languages



High level, machine ___________
Much easier to read and write,
e.g., money = bills + coins instead of ADDI R1, R2, R3
Fortran and ______ are early examples
Compilers and Interpreters



High-level code needs to be translated into machine
language
Compilers do so _______ of time
Interpreters do so ___________
1101
1202
A=B*C
Compiler
5312
3300
Programming Paradigms

Languages can be classified by ________

Many different programming languages

Only a few programming paradigms




Imperative/Procedural programming
Object-oriented programming
Functional programming
Logic/Declarative programming
Imperative Programming



Traditionally the most _________
The approach we have seen so far
Program is a _______ of steps




Receives input
Executes a sequence of commands for some computation
Generates output
Examples: Fortran, C, COBOL, Pascal
Object-Oriented Programming

Program is a collection of ________

An object contains __________ describing
how that object should respond to various ________
(icon object and list object, for example)

Interaction between objects is via __________ passing

Examples: Smalltalk, C++, Java, C#
Functional Programming

This paradigm views the process of program
development as connecting predefined “______ ______”,
each of which accepts inputs and produces outputs
Lisp Expression:
(Divide (Sum Numbers) (Count Numbers))
Example: Lisp, Scheme, ML
Logic/Declarative Programming






Describe the _________ not the solution
The idea here is to discover and implement a ________
problem-solving algorithm
Once this is done, problems can be solved by
developing a precise _________ of the problem
A major obstacle is the discovery of the underlying
problem-solving algorithm
For this reason early declarative languages were
designed for use in _________ applications
More recently, formal logic within ____________ gave a
tremendous boost to this paradigm; this resulted in the
emergence of logic programming (e.g., Prolog)
Evolution of Programming Paradigms
Traditional Programming Concepts

We consider some of the concepts found in imperative
and object-oriented programming languages

We will draw examples from the languages
C, C++, C#, Fortran, Java and Pascal

Appendix D contains a brief background of each lang.
Variables



Hold a temporary value that can _______
Some languages insist that a variable should have a
______, while others do not
Example: Java



To store an integer, use an int
To store a real number, use a float
To store a string, use a String
Data Types

Common




integer for ______ numbers (16 or 32 bits)
float for ______ numbers (32 or 64 bits)
character for data consisting of _________
(ASCII (8 bits) or Unicode(16 bits))
Sometimes available



Boolean for 0 or 1 (1 bit)
String for string of characters (variable length)
Many others
Sample Variable Declarations
Literals

Value is explicitly stated in a program




int X = 10
String Name = “Bob”
Wage = hours  9.00
(10 is a literal)
(“Bob” is a literal)
(9.00 is a literal)
Although sometimes necessary,
the use of literals should be _______ wherever possible
Literals: Problem

Example







AverageSales = Sales / 10
AverageSalary = Salary / 10
Pay = Hours  10
What does 10 mean in each of the previous examples?
Literals can ______ the meaning of the statements
in which they appear
Literals can complicate the task of ________ the program
_________ should be used wherever possible
Constants



Variables that are not allowed to _____
Once defined, it can’t be changed later
Why use constants?


More ________ code
_______ to modify code
Pascal
const pi=3.14159;
const numDays=10;
Fortran
REAL PARAMETER :: pi = 3.14159
INTEGER PARAMETER :: numDays=10
C,C++
const float pi = 3.14159;
const int numDays=10;
Java
static final float pi = 3.14159;
static final int numDays=10;
Data Structures

A way of thinking _________ data items
as ______ larger data item

Different operations can be performed
on different data structures

________ is the most basic example

We will see others later
Arrays: Homogeneous

A structure that contains multiple values of the ______
kind

An array of integers
12 3 34 43 6 93 23 43 3 45

A string can be thought of as an array of _________
“This is a string”
Arrays: Homogeneous Example

In C, C++, Java
char B[20] = “This is a string”;

You can access any item in an array

Index starts at __, not at __

For instance, if we execute B[2] = ‘u’,
the array above will become “_____________”
Arrays: Heterogeneous

A structure that contains multiple values of different kinds
Assignment Statements

Assign to a variable




C, C++, Java


Value of another variable
Result of a computation
Result from a function
Total = Price + Tax;
Pascal

Total := Price + Tax;
Assignment Example

What are A and B at the end of the following?
int A, B;
A = 2;
B = 3;
A = A+A;
A = A+B;
B = B  B;
Operator Precedence

What is A at the end of the following?
int A=2, B=3;
A = A / B + B * A – A + B;

Most programming languages will do
A = (A / B) + (B * A) – A + B;

Use ___________ to override precedence
A = A /( (B + B) * (A – (A + B)));
Control Statements

Alter order of execution of statements in a program

______-entry / ______-exit

Most common ones




if-then-else
while
switch
for
If Statement
While Statement
Switch Statement
For Statement
Comments




____________ statements within the code
Should not just repeat the code, but __________ on it
________ by compiler
C, C++, Java
/* Insert Comments here */
// Or put them here