CPS120 Introduction to Computer Science

Download Report

Transcript CPS120 Introduction to Computer Science

CPS120 Introduction to Computer Science

Final Exam Review

Common Flowchart Symbols

Common Flowchart Symbols Terminator.

Shows the starting and ending points of the program. A terminator has flow lines in only one direction, either in (a stop node) or out (a start node).

Data Input

or

Output

. Allows the user to input data and results to be displayed.

Processing

. Indicates an operation performed by the computer, such as a variable assignment or mathematical operation. With a heading – an internal subroutine

Decision

. The diamond indicates a decision structure. A diamond always has two flow lines out. One flow lineout is labeled the “yes” branch and the other is labeled the “no” branch.

Predefined Process

. One statement denotes a group of previously defined statements. Such as a function or a subroutine created externally

Connector

. Connectors avoid crossing flow lines, making the flowchart easier to read. Connectors indicate where flow lines are connected. Connectors come in pairs, one with a flow line in and the other with a flow line out.

Off-page connector

. Even fairly small programs can have flowcharts that extend several pages. The off-page connector indicates the continuation of the flowchart on another page. Just like connectors, off-page connectors come in pairs.

Flow line

. Flow lines connect the flowchart symbols and show the sequence of operations during the program execution.

Syntax & Logic Errors

• A

syntax error

is simply the violation of the rules of a language; misuse of structure and form in programming or a violation of the compiler’s rules. These errors are detected by the compiler – Also know as 'fatal compilation errors' • A

logic error

is a mistake that complies with the rules of the compiler that causes the program to generate incorrect output

Compiling and Debugging

• Executable code will not be created until you correct all of the syntax errors in your source code

Introduction to C++

Variable Names

• Choose your own variable names but you must be careful to use valid ones: – do not use keywords that are defined in the programming language (Reserved Words) – do not include spaces or other disallowed characters – do not use more than 255 characters – do begin the identifier with a letter

Declaring & Initializing Variables

• In C++ all variables must be declared before they can be used.

– Declare a variable by indicating its type and name • int myVariable; • C++ does not automatically initialize all variables to the value 0 • If you do not initialize a variable, the variable will have an indeterminate value.

• Initialize your variables at the same time that you declare them.

int myVariable = 0;

Constants

• Sometimes you need to use the same value many times throughout a program. In this case, it is proper to use a

constant

rather than a variable • Constants allow you to give a name to a value used several times in a program • The value never changes

The Assignment Operator

• The

assignment operator

is the equal symbol (=) • The assignment operator changes the value of the variable to its left after evaluating the expression on its right • For example: –

sum = 3 + 1000;

• The variable sum ends up with the value 1003 – – – –

salary = 40000; poundsPressure = 15 + 12; sum = original + 300; salary = salary + raise;

Common Arithmetic Operators

+ for addition for subtraction * for multiplication / for division % for modulus (like finding the remainder of a division problem)

Increments and Decrement

• The incrementing (++) and decrementing (--) operators are useful at times if used carefully • counter++; • is equivalent to counter = counter + 1; and counter += 1; • counter--; • is equivalent to counter = counter - 1; and counter -= 1; • Use the incrementing and decrementing operators with variables in statements such as these, that is with no other operators or code except the variable name that is being incremented or decremented.

Using Relational Operators

• Relational operators provide the tools with which programs make decisions == equal to NOTE: this is two equals symbols next to each other, not to be confused with the assignment operator, = > greater than < less than >= greater than or equal to <= less than or equal to != not equal to

Order of Logical Operations

• Logical operators may be mixed within evaluation statements but the following order of preference must be respected: 1. NOT operator (!) 2. AND operator (&&) 3. OR operator (||)

Complete order of operations

• The complete order of operations including all of the arithmetic, relational, and logical operators including all of the basic arithmetic, relational, & logical operators is: *, /, % +, !

<, >, <=, >=, ==, != && ||

String Literals

• A

string literal

is a sequence of characters that is used in a C++ program between double quotes such as in the statement

cout << "Hello world!";

where "Hello world!" is the string literal • Similar to a constant • Ends with an invisible null terminator (ASCII 0) – Represented as \0

Character Arrays

• Used to store strings that change as the program runs – Unlike string literal • An

array

is a group of variables of the same data type that appear together in memory – In this case each variable holds a character and the last variable in the string holds the null terminator (/0)

Using Strings In Programs

• In order to use string variables within any C++program, you must use the compiler directive: #include using namespace std;

Input Operations

• The operator >> is known as the input operator. It is also known as the extraction operator • You use the input operator in statements like, cin >> numItems; which would allow the user to input a value to be stored in the variable numItems.

Decision Making in C++

1. if statement 2. switch statement 3. ? conditional operator statement 4. goto statement

IF-THEN

Entry Test condition p false Exit true True statement a

IF…ELSE

Entry Test condition p false true “false” statement a Exit “true” statement a

General Form

if (test expression) { True-block statements; { } else False-block statements; } next statement;

Switch Structure

• The

switch structure

is a

multiple-selection structure

that allows even more complicated decision statements than a two-way if/else structure allows.

• Only variables with the INT or CHAR data types may be used in the control expressions (i.e. parentheses) of switch statements. – Single quotes must be used around CHAR variables – Single quotes are NOT used around the integer values

Iteration

• A program loop is a form of iteration. A computer can be instructed to repeat instructions under certain conditions.

No

Syntax of a

for

Loop

for (initializing expression; control expression; step expression) { // one or more statements }

• The initializing expression sets the counter variable for the loop to its initial value. • The control expression ends the loop at the specified moment. • The step expression changes the counter variable • Semi-colons, not commas, divide the expressions

Entry Test condition p Loop statement a

WHILE Loop

Yes No Exit

While

Loop Syntax

while (control expression) { // one or more statements }

• The control expression must evaluate to TRUE in order for the while loop to iterate even once

Entry

DO WHILE Loop

Loop statement a Test condition p No Yes Exit

Do While

Syntax

do { // body statements would be placed here }while (control expression);

• Don't forget to include the required semicolon after the control expression

In Summary

• Loops – for – while – do … while -- fixed number of loops -- may never be run -- always run once • continue causes while, do… while, and for loops to start over • break causes while, do … while, for and switch statements to end

An Example of A Function

#include

void printMyMessage(int numOfTimes);

for (i=0; i<= numOfTimes; i++) {cout << "Let's Go State!!" << endl;}

} //end of printMyMessage // PROTOTYPE and NAME

int main( ) { int userInput = 0; cout << "Enter a number between 1 and 10 (0 to Exit): " ; cin >> userInput; if (userInput != 0) { }

printMyMessage (userInput);

else cout << "Thanks, Bye!"; return 0; } // end of main

// CALL STATEMENT WITH ACTUAL PARAMETER { void printMyMessage(int numOfTimes)

int i=0;

// FUNCTION HEADER W/ RETURN TYPE & ACTUAL PARAMETER / LOCAL VARIABLE WITHIN THE FUNCTION // BODY // OF THE // FUNCTION

Scope of Variables

• The

scope

of a variable is the area in which it can be legally referenced – Variables are either global or local in nature • Global variables can be used in any function throughout the program. • Local variables are ones that are declared inside of a function, including main. They cannot be used or referred to in other functions – It is not wise to use global variables any more than you have to

Required Compiler Directives

• Any program that uses file pointers must include the fstream.h header file with the compiler directive,

#include

at the top of the program

Opening Output Files

• Opening a sequential-access file

ofstream outfile;

ofstream

is a C++ keyword indicating the type of pointer that you created – outfile is simply the programmer's chosen name for the

file pointe

r (and can be any valid name) • Open the file "mydata.txt" that is stored on your PC's hard drive

outfile.open("mydata.txt", ios::out);

Opening Input Files

• Declare a file pointer as an ifstream object with:

ifstream infile;

– ifstream is a keyword and infile is the name for the file pointer. – infile is simply the programmer's chosen name for the valid name)

file pointe

r (and can be any • Open the actual file for reading with:

infile.open("mydata.txt", ios::in);

Writing Output

• To write data to a sequential-access data file you would use a statement like:

outfile << "John Doe" << endl;

to print that name to the next line in the data file pointed to by the file pointer, outfile.

Appending Data

• Adding data to the end of a sequential access data file is called appending • Open the file using the ios::app stream operation mode as in: outfile.open("myfile.txt", ios::app); • where the app is short for append.

Detecting the End of a File.

• Use the eof function to determine whether the end of a sequential-access file has been reached. • This function returns a 1 (true) if an attempt has been made to read past the end of the file.

do { infile >> x; if ( !infile.eof( ) ) { cout << x << endl; } } while ( !infile.eof( ) );

Arrays: A Definition

• A list of variables accessed using a single identifier – May be of any data type • Can be single or multi-dimensioned • Vector classifications are object-oriented representations of arrays

Declaring an Array

• To declare an array before it is used in the body of your program, you must use a statement like: int scores[10]; • In this case, scores can store up to 10 different integer values. – The positions of the array are identified by their index positions which run from 0 to 9 (not 1 to 10.) • Each one of the 10 variables in scores is called an element

Initializing an Array

• If you wish to

initialize

each element of an array to a specific value, you can use the statement,

int scores[] = {65, 76, 45, 83, 99};

• You don't even have to specify a size of the array in this case since the initialization statement would cause the compiler to declare an array of size 5 since there are five values in the set of curly braces

Declaring a Multi-dimensional Array

• To declare an array of integers called studentGrades to be a 2-dimensional array with 3 rows and 4 columns, you would use the statement:

int studentGrades[3] [4];

where the first integer value is used to specify the number of rows in the array and the second value specifies the number of columns • Think of

remote control

Initializing a Multi-dimensional Array

• You can initialize the 2-dimensional array when you declare it by using commas and braces appropriately

int studentGrades[3] [4] = { { 1, 2, 3, 4}, { 5, 6, 7, 8}, { 9, 10, 11, 12} };

Key Computing Concepts

What Is a Network

• A network is a group of connected computers that allow people to share information and equipment

Small Networks

• Peer-to-Peer: – Used for a small number of computes (e.g. 10) – Files stored on own computers; access given to them to others on the network

The Networking Revolution

• Computer networks have permanently altered the world of computing with the

client/server model Client/Server interaction

Types of Networks

Various network topologies

• A bus technology called

Ethernet

standard for local-area networks has become the industry

Ethernet

• A bus technology called

Ethernet

has become the industry standard for local-area networks – Most popular and least expensive solution – Each computer waits for a pause before sending information – Collisions between information often occur • Computers wait a moment, then resend

Packet Switching

• To improve the efficiency of transferring information over a shared communication line, messages are divided into fixed-sized, numbered

packets

• Network devices called routers are used to direct packets between networks

Messages sent by packet switching

TCP/IP

• TCP stands for

Transmission Control Protocol

– TCP software breaks messages into packets, hands them off to the IP software for delivery, and then orders and reassembles the packets at their destination • IP stands for

Internet Protocol

– IP software deals with the routing of packets through the maze of interconnected networks to their final destination

Firewalls

• A

firewall

is a machine and its software that serve as a special gateway to a network, protecting it from inappropriate access – Filters the network traffic that comes in, checking the validity of the messages as much as possible and perhaps denying some messages altogether – Enforces an organization’s

access control policy

Network Addresses

• An

IP address

can be split into – –

network address

, which specifies a specific network

host number

, which specifies a particular machine in that network

An IP address is stored in four bytes

Domain Name System

• A hostname consists of the computer name followed by

the domain name

• orchard.wccnet.org is the domain name – A domain name is separated into two or more sections that specify the organization, and possibly a subset of an organization, of which the computer is a part – Two organizations can have a computer named the same thing because the domain name makes it clear which one is being referred to

Other Programming Concepts

Approaches to Sorting

• There are two basic approaches to sorting data – The incremental approach – The divide and conquer approach. • Using the incremental approach, one sorts the whole list at once • The divide and conquer approach splits the list up into parts and sorts each part separately.

Selection Sort

Example of a selection sort (sorted elements are shaded)

The Insertion Sort

• The insertion sort is incremental in nature. • This is similar to the way a person usually organizes a hand of playing cards. • The insertion sort is relatively quick for small lists that are close to being sorted

Mary Terry Gerri Kari Harry Barry

Insertion Sorting

Mary Gerri Kari Harry Barry Terry Gerri Kari Harry Barry Mary Terry

Bubble Sort

• Starting with the last list element, we compare successive pairs of elements, swapping whenever the bottom element of the pair is smaller than the one above it

Bubble Sort

Example of a bubble sort

Understanding the Quick Sort

• The quicksort is a divide and conquer algorithm and is more efficient than incremental sorts. It can be difficult to code though since it uses recursion or stacks. • The original list is partitioned into two lists. – One of the lists contains elements that are greater than the first original element. – The second list contains elements that are less than or equal to the first original element.

Quicksort

Sequential Searching

• Although there are more efficient ways to search for data, sequential searching is a good choice of methods when amount of data to be searched is small. • You simply check each element of an array position by position until you find the one that you are looking for. • In any search, the item upon which the search is based is called the key and the field being searched is called the key field.

Binary Search

• A binary search looks for an item in a list using a divide and-conquer strategy – Binary search algorithm assumes that the items in the list being searched are sorted – The algorithm begins at the middle of the list in a binary search – If the item for which we are searching is less than the item in the middle, we know that the item won’t be in the second half of the list – Once again we examine the “middle” element (which is really the item 25% of the way into the list) – The process continues with each comparison cutting in half the portion of the list where the item might be

• [0] Ant • [1] Cat • [2] Chicken • [3] Cow • [4] Deer • [5] Dog • [6] Fish • [7] Goat • [8] Horse • [9] Monkey • [10] Snake

Trace of the binary search

Binary Search

Object-Oriented Programming

Object-Oriented Paradigm

• Data should be placed inside the objects and that these objects should communicate with each other in the form of messages

Thinking Object-Oriented

• Think in an object-oriented way – E.g. an answering machine encapsulates the functions of an answering machine with the data (messages). • The buttons are the equivalent of sending messages to the machine

Encapsulation

Encapsulation

is a language feature that enforces information hiding – Both data and methods are contained within an object

Inheritance

Inheritance

fosters reuse by allowing an application to take an already-tested class and derive a class from it that inherits the properties the application needs

Polymorphism

Polymorphism:

the ability of a language to have duplicate method names in an inheritance hierarchy and to apply the method that is appropriate for the object to which the method is applied

Designing A Class

• A

class

is a language construct that is a pattern for an object and provides a mechanism for encapsulating the properties and actions of the object class – We

instantiate

the class –

Private

and

public

are called access modifiers

OOP Advantages: Reusability

• Reusability is a major benefit of object oriented programming

Public vs. Private

• Private: Cannot be accessed outside the object • Public: Can have access to all the variables and functions public: // constructors circle(); // default constructor circle(const circle &); // copy constructor // member functions void SetRadius(float); double Area(); private: // data float radius;