Chapter 4 Computation

Similar documents
Chapter 4. Computation. Bjarne Stroustrup.

Working with Batches of Data

Abstract. Chapter 4 Computation. Overview 8/13/18. Bjarne Stroustrup Note:

Discussion 1H Notes (Week 3, April 14) TA: Brian Choi Section Webpage:

CS313D: ADVANCED PROGRAMMING LANGUAGE

Looping and Counting. Lecture 3 Hartmut Kaiser hkaiser/fall_2012/csc1254.html

Programming in C++ Prof. Partha Pratim Das Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

PIC 10A Flow control. Ernest Ryu UCLA Mathematics

Control Flow. COMS W1007 Introduction to Computer Science. Christopher Conway 3 June 2003

CSCE 110 PROGRAMMING FUNDAMENTALS

Boolean Algebra Boolean Algebra

CS242 COMPUTER PROGRAMMING

Objectives. Chapter 4: Control Structures I (Selection) Objectives (cont d.) Control Structures. Control Structures (cont d.) Relational Operators

Chapter 2 C++ Fundamentals

Chapter 3 Objects, Types, and Values

Errors. Lecture 6. Hartmut Kaiser hkaiser/fall_2011/csc1254.html

CPE 112 Spring 2015 Exam II (100 pts) March 4, Definition Matching (8 Points)

Looping and Counting. Lecture 3. Hartmut Kaiser hkaiser/fall_2011/csc1254.html

7/8/10 KEY CONCEPTS. Problem COMP 10 EXPLORING COMPUTER SCIENCE. Algorithm. Lecture 2 Variables, Types, and Programs. Program PROBLEM SOLVING

CSCI-1200 Computer Science II Fall 2008 Lecture 15 Associative Containers (Maps), Part 2

2 nd Week Lecture Notes

Creating a C++ Program

Chapter 6 Writing a Program

Chapter 5 Errors. Hyunyoung Lee. Based on slides by Bjarne Stroustrup.

C++ Basics. Data Processing Course, I. Hrivnacova, IPN Orsay

Chapter 4: Control Structures I (Selection) Objectives. Objectives (cont d.) Control Structures. Control Structures (cont d.

! A program is a set of instructions that the. ! It must be translated. ! Variable: portion of memory that stores a value. char

Scientific Computing

Fundamentals of Programming CS-110. Lecture 2

C++ Basic Elements of COMPUTER PROGRAMMING. Special symbols include: Word symbols. Objectives. Programming. Symbols. Symbols.

By the end of this section you should: Understand what the variables are and why they are used. Use C++ built in data types to create program

Chapter 2: Overview of C++

Numerical Computing in C and C++ Jamie Griffin. Semester A 2017 Lecture 2

2.1. Chapter 2: Parts of a C++ Program. Parts of a C++ Program. Introduction to C++ Parts of a C++ Program

Class 2: Variables and Memory. Laura Marik Spring 2012 C++ Course Notes (Provided by Jason Minski)

C++ Programming: From Problem Analysis to Program Design, Third Edition

Introduction to C++ with content from

Introduction to Computers and C++ Programming p. 1 Computer Systems p. 2 Hardware p. 2 Software p. 7 High-Level Languages p. 8 Compilers p.

Chapter 5 Errors. Bjarne Stroustrup

5. Control Statements

Computer Programming. Basic Control Flow - Loops. Adapted from C++ for Everyone and Big C++ by Cay Horstmann, John Wiley & Sons

Fundamental of Programming (C)

Object-oriented Programming for Automation & Robotics Carsten Gutwenger LS 11 Algorithm Engineering

LECTURE 02 INTRODUCTION TO C++

Introduction to Programming EC-105. Lecture 2

A SHORT COURSE ON C++

CS201 Some Important Definitions

Arithmetic Operators. Binary Arithmetic Operators. Arithmetic Operators. A Closer Look at the / Operator. A Closer Look at the % Operator

Objectives. In this chapter, you will:

Control Structures. Lecture 4 COP 3014 Fall September 18, 2017

Chapter 3. More Flow of Control. Copyright 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley

The C++ Language. Arizona State University 1

C++ Programming Lecture 1 Software Engineering Group

BITG 1233: Introduction to C++

REVIEW. The C++ Programming Language. CS 151 Review #2

Lecture 3 Tao Wang 1

Control Structures. A program can proceed: Sequentially Selectively (branch) - making a choice Repetitively (iteratively) - looping

Programming. C++ Basics

Welcome Back. CSCI 262 Data Structures. Hello, Let s Review. Hello, Let s Review. How to Review 8/19/ Review. Here s a simple C++ program:

ECE 122 Engineering Problem Solving with Java

Introduction to C++ Introduction. Structure of a C++ Program. Structure of a C++ Program. C++ widely-used general-purpose programming language

3. Simple Types, Variables, and Constants

These are notes for the third lecture; if statements and loops.

LESSON 2 VARIABLES, OPERATORS, EXPRESSIONS, AND USER INPUT

BASIC ELEMENTS OF A COMPUTER PROGRAM

Computer Science II Lecture 1 Introduction and Background

COMP322 - Introduction to C++ Lecture 01 - Introduction

The sequence of steps to be performed in order to solve a problem by the computer is known as an algorithm.

c++ keywords: ( all lowercase ) Note: cin and cout are NOT keywords.

(6) The specification of a name with its type in a program. (7) Some memory that holds a value of a given type.

On a 64-bit CPU. Size/Range vary by CPU model and Word size.

Introduction to C++ Lecture Set 2. Introduction to C++ Week 2 Dr Alex Martin 2013 Slide 1

Chapter 2: Introduction to C++

REPETITION CONTROL STRUCTURE LOGO

Data Structures Lecture 3 Order Notation and Recursion

Objectives. Chapter 2: Basic Elements of C++ Introduction. Objectives (cont d.) A C++ Program (cont d.) A C++ Program

Chapter 2: Special Characters. Parts of a C++ Program. Introduction to C++ Displays output on the computer screen

CHAPTER 3 BASIC INSTRUCTION OF C++

Chapter 2: Basic Elements of C++

Chapter 2: Basic Elements of C++ Objectives. Objectives (cont d.) A C++ Program. Introduction

C++ PROGRAMMING. For Industrial And Electrical Engineering Instructor: Ruba A. Salamh

Maciej Sobieraj. Lecture 1

CSCE 121 ENGR 112 List of Topics for Exam 1

Computer Science II Lecture 2 Strings, Vectors and Recursion

1. In C++, reserved words are the same as predefined identifiers. a. True

STUDENT OUTLINE. Lesson 8: Structured Programming, Control Structures, if-else Statements, Pseudocode

Computer Programming : C++

Add Subtract Multiply Divide

Overview. - General Data Types - Categories of Words. - Define Before Use. - The Three S s. - End of Statement - My First Program

Topic 2: C++ Programming fundamentals

Introduction to Programming using C++

Connecting with Computer Science, 2e. Chapter 15 Programming II

\n is used in a string to indicate the newline character. An expression produces data. The simplest expression

If Control Construct

Chapter 2. C++ Basics. Copyright 2014 Pearson Addison-Wesley. All rights reserved.

Chapter 2 Basic Elements of C++

UNIT- 3 Introduction to C++

Review: Exam 1. Your First C++ Program. Declaration Statements. Tells the compiler. Examples of declaration statements

Programming Language. Control Structures: Repetition (while) Eng. Anis Nazer Second Semester

Flow Control. CSC215 Lecture

Transcription:

Chapter 4 Computation Hartmut Kaiser hkaiser@cct.lsu.edu http://www.cct.lsu.edu/~hkaiser/spring_2011/csc1253.html Slides adapted from: Bjarne Stroustrup, Programming Principles and Practice using C++

Abstract Today, I ll present the basics of computation. In particular, we ll discuss expressions, how to iterate over a series of values ( iteration ), select between two alternative actions ( selection ). I ll also show how a particular sub-computation can be named and specified separately as a function. To be able to perform more realistic computations, I will introduce the vector type to hold sequences of values. Selection, Iteration, Function, Vector 2

Overview Computation What is computable? How best to compute it? Abstractions, algorithms, heuristics, data structures Language constructs and ideas Sequential order of execution Expressions and Statements Selection Iteration Functions Vectors 3

You already know most of this Note: You know how to do arithmetic d = a+b*c You know how to select if this is true, do that; otherwise do something else You know how to iterate do this until you are finished do that 100 times You know how to do functions go ask Joe and bring back the answer hey Joe, calculate this for me and send me the answer What I will show you today is mostly just vocabulary and syntax for what you already know 4

Computation (input) data Code, often messy, often a lot of code data (output) data Input: from keyboard, files, other input devices, other programs, other parts of a program Computation what our program will do with the input to produce the output. Output: to screen, files, other output devices, other programs, other parts of a program 5

Computation Our job is to express computations Correctly Simply Efficiently One tool is called Divide and Conquer To break up big computations into many little ones Another tool is Abstraction Provide a higher-level concept that hides detail Organization of data is often the key to good code Input/output formats Protocols Data structures Note the emphasis on structure and organization You don t get good code just by writing a lot of statements 6

Language features Each programming language feature exists to express a fundamental idea For example + : addition * : multiplication if (expression) statement else statement ; selection while (expression) statement ; f(x); iteration function/operation We combine language features to create programs 7

Expressions // compute area: int length = 20; // the simplest expression: a literal (here, 20) // (here used to initialize a variable) int width = 40; int area = length*width; // a multiplication int average = (length+width)/2; // addition and division The usual rules of precedence apply: a*b+c/d means (a*b)+(c/d) and not a*(b+c)/d. If in doubt, parenthesize. If complicated, parenthesize. Don t write absurdly complicated expressions: a*b+c/d*(e-f/g)/h+7 // too complicated Choose meaningful names. 8

Expressions Expressions are made out of operators and operands Operators specify what is to be done Operands specify the data for the operators to work with Literals and or variables Boolean type: bool (true and false) Equality operators: == (equal),!= (not equal) Logical operators: && (and), (or),! (not) Relational operators: < (less than), > (greater than), <=, >= Character type: char (e.g., 'a', '7', and '@') Integer types: short, int, long (e.g. -12 and 42) arithmetic operators: +, -, *, /, % (remainder) Floating-point types: e.g., float, double (e.g., 12.45 and 1.234e3) arithmetic operators: +, -, *, / Constant expressions: const double pi = 3.14159; 9

Concise Operators For many binary operators, there are (roughly) equivalent more concise operators For example a += c means a = a + c a *= scale means a = a * scale ++a means a += 1 or a = a + 1 Concise operators are generally better to use (clearer, express an idea more directly) 10

Statements A statement is an expression followed by a semicolon, or a declaration, or a control statement that determines the flow of control For example a = b; double d2 = 2.5; if (x == 2) y = 4; while (cin >> number) numbers.push_back(number); int average = (length+width)/2; return x; You may not understand all of these just now, but you will 11

Selection Sometimes we must select between alternatives For example, suppose we want to identify the larger of two values. We can do this with an if statement int max; if (a < b) else The syntax is: max = b; max = a; // Note: No semicolon here // Note: No semicolon here if (condition) statement-1 else statement-2 // if the condition is true, do statement-1 // if not, do statement-2 12

Iteration (while loop) The world s first real program running on a storedprogram computer (David Wheeler, Cambridge, May 6, 1949) // calculate and print a table of squares 0-99: int main() { int i = 0; while (i < 100) { cout << i << '\t' << square(i) << '\n'; ++i ; // increment i } } // (No, it wasn t actually written in C++.) 13

Iteration (while loop) What it takes A loop variable (control variable); here: i Initialize the control variable; here: int i = 0 A termination criterion; here: if i < 100 is false, terminate Increment the control variable; here: ++i Something to do for each iteration; here: cout << int i = 0; while (i < 100) { cout << i << '\t' << square(i) << '\n'; ++i ; // increment i } 14

Iteration (for loop) Another iteration form: the for loop You can collect all the control information in one place, at the top, where it s easy to see for (int i = 0; i < 100; ++i) { cout << i << '\t' << square(i) << '\n'; } That is, for (initialize; condition; increment) controlled statement Note: what is square(i)? 15

Functions But what was square(i)? A call of the function square() int square(int x) { } return x*x; We define a function when we want to separate a computation because it is logically separate makes the program text clearer (by naming the computation) is useful in more than one place in our program eases testing, distribution of labor, and maintenance 16

Control Flow int main() { i=0; int square(int x) { while (i<100) i<100 { square(i) } return x * x; } 17 } i==100

Functions Our function int square(int x) { return x*x; } is an example of Return_type function_name ( Parameter list ) // (type name, etc.) { // use each parameter in code return some_value; // of Return_type } 18

Another Example Earlier we looked at code to find the larger of two values. Here is a function that compares the two values and returns the larger value. int max(int a, int b) // this function takes 2 parameters { if (a < b) return b; } else return a; int x = max(7, 9); // x becomes 9 int y = max(19, -27); // y becomes 19 int z = max(20, 20); // z becomes 20 19

Data for Iteration - Vector To do just about anything of interest, we need a collection of data to work on. We can store this data in a vector. For example: // read some temperatures into a vector: int main() { vector<double> temps; // declare a vector of type double to store // temperatures like 62.4 double temp; // a variable for a single temperature value while (cin>>temp) // cin reads a value and stores it in temp temps.push_back(temp); // store the value of temp in the vector // do something } // cin>>temp will return true until we reach the end of file or encounter // something that isn t a double: like the word end 20

Vector Vector is the most useful standard library data type a vector<t> holds an sequence of values of type T Think of a vector this way A vector named v contains 5 elements: {1, 4, 2, 3, 5}: size() v: 5 v s elements: v[0] v[1] v[2] v[3] v[4] 1 4 2 3 5 21

Vectors vector<int> v; // start off empty v: 0 v.push_back(1); // add an element with the value 1 v: 1 1 v.push_back(4); // add an element with the value 4 at end ( the back ) v: 2 1 4 v.push_back(3); // add an element with the value 3 at end ( the back ) v: 3 1 4 3 v[0] v[1] v[2] 22

Vectors Once you get your data into a vector you can easily manipulate it: // compute mean (average) and median temperatures: int main() { vector<double> temps; // temperatures in Fahrenheit, e.g. 64.6 double temp; while (cin >> temp) temps.push_back(temp); // read and put into vector double sum = 0; for (int i = 0; i < temps.size(); ++i) sum += temps[i]; // sums temperatures } cout << "Mean temperature: " << sum/temps.size() << endl; sort(temps.begin(),temps.end()); cout << "Median temperature: " << temps[temps.size()/2] << endl; 23

Combining Language Features You can write many new programs by combining language features, built-in types, and userdefined types in new and interesting ways. So far, we have Variables and literals of types bool, char, int, double vector, push_back(), [ ] (subscripting)!=, ==, =, +, -, +=, <, &&,,! max( ), sort( ), cin>>, cout<< if, for, while You can write a lot of different programs with these language features! Let s try to use them in a slightly different way 24

Example Word List // boilerplate left out vector<string> words; string s; while (cin >> s && s!= "quit") words.push_back(s); sort(words.begin(), words.end()); for (int i = 0; i < words.size(); ++i) cout<<words[i]<< "\n"; // && means AND // sort the words we read /* read a bunch of strings into a vector of strings, sort them into lexicographical order (alphabetical order), and print the strings from the vector to see what we have. */ 25

Word list Eliminate Duplicates // Note that duplicate words were printed multiple times. For // example the the the. That s tedious, let s eliminate duplicates: vector<string> words; string s; while (cin>>s && s!= "quit") words.push_back(s); sort(words.begin(), words.end()); for (int i=1; i<words.size(); ++i) if(words[i-1] == words[i]) get rid of words[i] for (int i = 0; i < words.size(); ++i) cout<<words[i]<< "\n"; // (pseudocode) // there are many ways to get rid of words*i+ ; many of them are messy // (that s typical). Our job as programmers is to choose a simple clean // solution given constraints time, run-time, memory. 26

Example (cont.) Eliminate Words! // Eliminate the duplicate words by copying only unique words: vector<string> words; string s; while (cin >> s && s!= "quit") words.push_back(s); sort(words.begin(), words.end()); vector<string>w2; if (0 < words.size()) { // Note style { } w2.push_back(words[0]); for (int i = 1; i < words.size(); ++i) if(words[i-1]!= words[i]) w2.push_back(words[i]); } cout<< "found " << words.size()-w2.size() << " duplicates\n"; for (int i = 0; i < w2.size(); ++i) cout << w2[i] << "\n"; 27

Algorithm We just used a simple algorithm An algorithm is (from Google search) a logical arithmetical or computational procedure that, if correctly applied, ensures the solution of a problem. Harper Collins a set of rules for solving a problem in a finite number of steps, as for finding the greatest common divisor. Random House a detailed sequence of actions to perform or accomplish some task. Named after an Iranian mathematician, Al-Khawarizmi. Technically, an algorithm must reach a result after a finite number of steps, The term is also used loosely for any sequence of actions (which may or may not terminate). Webster s We eliminated the duplicates by first sorting the vector (so that duplicates are adjacent), and then copying only strings that differ from their predecessor into another vector. 28

Ideal Basic language features and libraries should be usable in essentially arbitrary combinations. We are not too far from that ideal. If a combination of features and types make sense, it will probably work. The compiler helps by rejecting some absurdities. 29

The next lecture How to deal with errors 30