CITS 1401 Problem Solving & Programming

Similar documents
Python Programming: An Introduction to Computer Science

Introduction to Computer Programming for Non-Majors

Introduction to Computer Programming for Non-Majors

Introduction to Computer Programming for Non-Majors

Lecture Numbers. Richard E Sarkis CSC 161: The Art of Programming

Python Programming: An Introduction to Computer Science

Last Time. integer/float/string. import math math.sqrt() math.pi. Python Programming, 2/e 2

Comp 151. More on Arithmetic and intro to Objects

Writing Python Programs, Numerical Data Types

Comp 151. More on Arithmetic and number types

Introduction to Computer Programming for Non-Majors

Introduction to Computer Programming for Non-Majors

Introduction to Computer Programming for Non-Majors

Introduction to Computer Programming for Non-Majors

Python Programming: An Introduction to Computer Science

Introduction to Computer Programming for Non-Majors

CSI31 Lecture 5. Topics: 3.1 Numeric Data Types 3.2 Using the Math Library 3.3 Accumulating Results: Factorial

Python Programming: An Introduction to Computer Science

Computing with Numbers

COMP1730/COMP6730 Programming for Scientists. Data: Values, types and expressions.

" # # if $ " %&% # ifelse $ " #&% # ifelif-else $ +bool ##%# # #.* $ ## # .# *#%$ % ## % .#*#%*

CITS 4406 Problem Solving & Programming

Intro to Programming. Unit 7. What is Programming? What is Programming? Intro to Programming

MA 1128: Lecture 02 1/22/2018

CIS133J. Working with Numbers in Java

Chapter 1. Math review. 1.1 Some sets

Python Numbers. Learning Outcomes 9/19/2012. CMSC 201 Fall 2012 Instructor: John Park Lecture Section 01 Discussion Sections 02-08, 16, 17

Solving Equations with Inverse Operations

Classwork. Exercises Use long division to determine the decimal expansion of. NYS COMMON CORE MATHEMATICS CURRICULUM Lesson 6 8 7

LESSON 5 FUNDAMENTAL DATA TYPES. char short int long unsigned char unsigned short unsigned unsigned long

File processing and decision structures

CSI33 Data Structures

Numerical Precision. Or, why my numbers aren t numbering right. 1 of 15

Natural Numbers and Integers. Big Ideas in Numerical Methods. Overflow. Real Numbers 29/07/2011. Taking some ideas from NM course a little further

Unit 2: Accentuate the Negative Name:

2.Simplification & Approximation

Get to Know Your Calculator!

Multi-Way Decisions. The newest program is great, but it still has some quirks! This program finds the real solutions to a quadratic

Rational and Irrational Numbers

Table of Laplace Transforms

Expressions and Casting. Data Manipulation. Simple Program 11/5/2013

Built-in Types of Data

Python Programming Exercises 1

Expressions and Casting

EC121 Mathematical Techniques A Revision Notes

Chapter 2. Data Representation in Computer Systems

Overview (4) CPE 101 mod/reusing slides from a UW course. Assignment Statement: Review. Why Study Expressions? D-1

Topic 2: Decimals. Topic 1 Integers. Topic 2 Decimals. Topic 3 Fractions. Topic 4 Ratios. Topic 5 Percentages. Topic 6 Algebra

CGF Lecture 2 Numbers

MAT 003 Brian Killough s Instructor Notes Saint Leo University

CS321 Introduction To Numerical Methods

Divisibility Rules and Their Explanations

Chapter 1 An Introduction to Computer Science. INVITATION TO Computer Science 1

Chapter 1 Operations With Numbers

Decision structures. A more complex decision structure is an if-else-statement: if <condition>: <body1> else: <body2>

Mobile Computing Professor Pushpendra Singh Indraprastha Institute of Information Technology Delhi Java Basics Lecture 02

Is the statement sufficient? If both x and y are odd, is xy odd? 1) xy 2 < 0. Odds & Evens. Positives & Negatives. Answer: Yes, xy is odd

Properties and Definitions

BASIC COMPUTATION. public static void main(string [] args) Fundamentals of Computer Science I

>>> * *(25**0.16) *10*(25**0.16)

Graphics calculator instructions

6.1 Evaluate Roots and Rational Exponents

Lecture 2: Python Arithmetic

Object Oriented Programming Using C++ Mathematics & Computing IET, Katunayake

Expressions. Eric Roberts Handout #3 CSCI 121 January 30, 2019 Expressions. Grace Murray Hopper. Arithmetic Expressions.

Project 2: How Parentheses and the Order of Operations Impose Structure on Expressions

CS 115 Lecture 4. More Python; testing software. Neil Moore

Basics of Computational Geometry

Section 1.1 Definitions and Properties

Computing with Numbers Zelle - Chapter 3

Chapter 1: Number and Operations

Rational Number is a number that can be written as a quotient of two integers. DECIMALS are special fractions whose denominators are powers of 10.

Floating-Point Data Representation and Manipulation 198:231 Introduction to Computer Organization Lecture 3

BEGINNING PROBLEM-SOLVING CONCEPTS FOR THE COMPUTER. Chapter 2

Math 340 Fall 2014, Victor Matveev. Binary system, round-off errors, loss of significance, and double precision accuracy.

Helping Students Understand Pre-Algebra

Introduction to Scientific Computing Lecture 1

Intermediate Algebra. Gregg Waterman Oregon Institute of Technology

Module 10A Lecture - 20 What is a function? Why use functions Example: power (base, n)

PRE-ALGEBRA PREP. Textbook: The University of Chicago School Mathematics Project. Transition Mathematics, Second Edition, Prentice-Hall, Inc., 2002.

3x - 5 = 22 4x - 12 = 2x - 9

Lectures 4 and 5 (Julian) Computer Programming: Skills & Concepts (INF-1-CP1) double; float; quadratic equations. Practical 1.

Algorithms and Programming I. Lecture#12 Spring 2015

Multiply Decimals Multiply # s, Ignore Decimals, Count # of Decimals, Place in Product from right counting in to left

Table of Contents. Introduction to the Math Practice Series...iv Common Mathematics Symbols and Terms...1

Math Day 2 Programming: How to make computers do math for you

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

Data Types. Data Types. Integer Types. Signed Integers

Dr. Chuck Cartledge. 3 June 2015

Introduction to Computers and Programming. Numeric Values

Mathematical Data Operators

Outline. Data and Operations. Data Types. Integral Types

SOLVING SYSTEMS OF EQUATIONS

2/5/2018. Expressions are Used to Perform Calculations. ECE 220: Computer Systems & Programming. Our Class Focuses on Four Types of Operator in C

CS 115 Data Types and Arithmetic; Testing. Taken from notes by Dr. Neil Moore

Iteration. # a and b are now equal # a and b are no longer equal Multiple assignment

Mathematical preliminaries and error analysis

Decimal Binary Conversion Decimal Binary Place Value = 13 (Base 10) becomes = 1101 (Base 2).

Floating-point representation

How To Think Like A Computer Scientist, chapter 3; chapter 6, sections

Transcription:

CITS 1401 Problem Solving & Programming Tim French Lecture 03 Numeric Data Processing (These slides are based on John Zelle s powerpoint slides for lectures accompanied with the text book)

Objectives of this lecture æ To understand the concept of data types æ To get familiar with the basic numeric data types in Python æ To understand the fundamental principles of how numbers are represented in a computer æ To learn how to use the Python math library 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 2

Numeric Data Types æ The information that is stored and manipulated by computers programs is referred to as data. æ There are two different kinds of numbers! (5, 4, 3, 6) are whole numbers they don t have a fractional part (.25,.10,.05,.01) are decimal fractions Inside the computer, whole numbers and decimal fractions are represented quite differently! We say that decimal fractions and whole numbers are two different data types. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 3

Numeric Data Types æ The data type of an object determines what values it can have and what operations can be performed on it. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 4

Numeric Data Types æ Whole numbers are represented using the integer (int for short) data type. æ These values can be positive or negative whole numbers. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 5

Numeric Data Types æ Numbers that can have fractional parts are represented as floating point (or float) values. æ How can we tell which is which? A numeric literal without a decimal point produces an int value A literal that has a decimal point is represented by a float (even if the fractional part is 0) 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 6

Numeric Data Types æ Python has a special function to tell us the data type of any value. >>> type(3) <class 'int'> >>> type(3.1) <class 'float'> >>> type(3.0) <class 'float'> >>> myint = 32 >>> type(myint) <class 'int'> >>> 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 7

Numeric Data Types æ Why do we need two number types? Values that represent counts can t be fractional Most mathematical algorithms are very efficient with integers The float type stores only an approximation to the real number being represented! Since floats aren t exact, use an int whenever possible! 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 8

Numeric Data Types Operations on ints produce ints, operations on floats produce floats (excluding /). >>> 3.0+4.0 7.0 >>> 3+4 7 >>> 3.0*4.0 12.0 >>> 3*4 12 >>> 10.0/3.0 3.3333333333333335 >>> 10/3 3.3333333333333335 >>> 10 // 3 3 >>> 10.0 // 3.0 3.0 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 9

Numeric Data Types æ Integer division produces a whole number. æ That s why 10//3 = 3! æ Think of it as gozinta, where 10//3 = 3 since 3 gozinta (goes into) 10 3 times (with a remainder of 1) æ 10%3 = 1 is the remainder of the integer division of 10 by 3. æ a = (a/b)(b) + (a%b) 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 10

Using the Maths Library æ Besides (+, -, *, /, //, **, %, abs), we have lots of other math functions available in a math library. æ A library is a module with some useful definitions/functions. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 11

Using the Maths Library æ Let s write a program to compute the roots of a quadratic equation! x= b± b 2 4ac /2a æ The only part of this we don t know how to do is find a square root æ But it s in the math library! 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 12

Using the Maths Library æ To use a library, we need to make sure this line is in our program: import math æ Importing a library makes whatever functions are defined within it available to the program. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 13

Using the Maths Library æ To access the sqrt library routine, we need to access it as math.sqrt(x). æ Using this dot notation tells Python to use the sqrt function found in the math library module. æ To calculate the root, you can do discroot = math.sqrt(b*b 4*a*c) 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 14

Using the Maths Library # quadratic.py # A program that computes the real roots of a quadratic equation. # Illustrates use of the math library. # Note: This program crashes if the equation has no real roots. import math # Makes the math library available. def main(): print("this program finds the real solutions to a quadratic") print() a, b, c = eval(input("please enter the coefficients (a, b, c): ")) discroot = math.sqrt(b * b - 4 * a * c) root1 = (-b + discroot) / (2 * a) root2 = (-b - discroot) / (2 * a) print() print("the solutions are:", root1, root2 ) main() 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 15

Using the Maths Library This program finds the real solutions to a quadratic Please enter the coefficients (a, b, c): 3, 4, -1 The solutions are: 0.215250437022-1.54858377035 æ What do you suppose this means? This program finds the real solutions to a quadratic Please enter the coefficients (a, b, c): 1, 2, 3 Traceback (most recent call last): File "<pyshell#26>", line 1, in -toplevelmain() File "C:\Documents and Settings\Terry\My Documents\Teaching\W04\CS 120\Textbook\code\chapter3\quadratic.py", line 14, in main discroot = math.sqrt(b * b - 4 * a * c) ValueError: math domain error >>> 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 16

Math Library æ If a = 1, b = 2, c = 3, then we are trying to take the square root of a negative number! æ Using the sqrt function is more efficient than using **. How could you use ** to calculate a square root? 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 17

Accumulating Results: Factorial æ Say you are waiting in a line with five other people. How many ways are there to arrange the six people? æ 720 -- 720 is the factorial of 6 (abbreviated 6!) æ Factorial is defined as: n! = n(n-1)(n-2) (1) æ So, 6! = 6*5*4*3*2*1 = 720 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 18

Accumulating Results: Factorial æ How we could we write a program to do this? æ Input number to take factorial of, n Compute factorial of n, fact Output fact 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 19

Accumulating Results: Factorial æ How did we calculate 6!? æ 6*5 = 30 æ Take that 30, and 30 * 4 = 120 æ Take that 120, and 120 * 3 = 360 æ Take that 360, and 360 * 2 = 720 æ Take that 720, and 720 * 1 = 720 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 20

Objectives of this lecture æ To understand the accumulator program pattern æ To learn to read and write programs that process numerical data æ To learn about type conversions in Python æ To learn how to handle large numbers in Python 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 21

The General form of an Accumulator Algorithm æ The general form of an accumulator algorithm looks like this: Initialize the accumulator variable Perform computation (i.e. multiply by next smaller number) Update accumulator variable Loop until final result is reached (next smaller number is 1) Output accumulator variable 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 22

Accumulating Results: Factorial æ It looks like we ll need a loop! fact = 1 for factor in [6, 5, 4, 3, 2, 1]: fact = fact * factor æ Let s trace through it to verify that this works! 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 23

Accumulating Results: Factorial æ Why did we need to initialize fact to 1? There are a couple reasons Each time through the loop, the previous value of fact is used to calculate the next value of fact. By doing the initialization, you know fact will have a value the first time through. If you use fact without assigning it a value, what does Python do? 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 24

Accumulating Results: Factorial æ Since multiplication is associative and commutative, we can rewrite our program as: fact = 1 for factor in [2, 3, 4, 5, 6]: fact = fact * factor æ Great! But what if we want to find the factorial of some other number?? 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 25

Accumulating Results: Factorial æ What does range(n) return? 0, 1, 2, 3,, n-1 æ range has another optional parameter! range(start, n) returns start, start + 1,, n-1 æ But wait! There s more! range(start, n, step) start, start+step,, n-1 æ list(<sequence>) to make a list 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 26

Accumulating Results: Factorial æ Let s try some examples! >>> list(range(10)) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> list(range(5,10)) [5, 6, 7, 8, 9] >>> list(range(5,10,2)) [5, 7, 9] 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 27

Accumulating Results: Factorial æ Using this souped-up range statement, we can do the range for our loop a couple different ways. We can count up from 2 to n: range(2, n+1) (Why did we have to use n+1?) We can count down from n to 2: range(n, 1, -1) 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 28

Accumulating Results: Factorial æ Our completed factorial program: # factorial.py # Program to compute the factorial of a number # Illustrates for loop with an accumulator def main(): n = eval(input("please enter a whole number: ")) fact = 1 for factor in range(n,1,-1): fact = fact * factor print("the factorial of", n, "is", fact) main() 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 29

The Limits of Int æ What is 100!? >>> main() Please enter a whole number: 100 The factorial of 100 is 93326215443944152681699238856266700490715968264381621468 59296389521759999322991560894146397615651828625369792082 7223758251185210916864000000000000000000000000 æ Wow! That s a pretty big number! 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 30

The Limits of Int æ Newer versions of Python can handle it, but Python 1.5.2 (#0, Apr 13 1999, 10:51:12) [MSC 32 bit (Intel)] on win32 Copyright 1991-1995 Stichting Mathematisch Centrum, Amsterdam >>> import fact >>> fact.main() Please enter a whole number: 13 13 12.. 4 Traceback (innermost last): File "<pyshell#1>", line 1, in? fact.main() File "C:\PROGRA~1\PYTHON~1.2\fact.py", line 5, in main fact=fact*factor OverflowError: integer multiplication 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 31

The Limits of Int æ What s going on? While there are an infinite number of integers, there is a finite range of ints that can be represented. This range depends on the number of bits a particular CPU uses to represent an integer value. Typical PCs use 32 bits. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 32

The Limits of Int æ Typical PCs use 32 bits æ That means there are 2 32 possible values, centered at 0. æ This range then is 2 31 to 2 31-1. We need to subtract one from the top end to account for 0. æ But our 100! is much larger than this. How does it work? 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 33

Handling Large Numbers æ Does switching to float data types get us around the limitations of ints? æ If we initialize the accumulator to 1.0, we get >>> main() Please enter a whole number: 15 The factorial of 15 is 1.307674368e+012 æ We no longer get an exact answer! 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 34

Handling Large Numbers: Long Int æ Very large and very small numbers are expressed in scientific or exponential notation. æ 1.307674368e+012 means 1.307674368 * 10 12 æ Here the decimal needs to be moved right 12 decimal places to get the original number, but there are only 9 digits, so 3 digits of precision have been lost. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 35

Handling Large Numbers æ Floats are approximations æ Floats allow us to represent a larger range of values, but with lower precision. æ Python has a solution, expanding ints! æ Python Ints are not a fixed size and expand to handle whatever value it holds. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 36

Handling Large Numbers æ Newer versions of Python automatically convert your ints to expanded form when they grow so large as to overflow. æ We get indefinitely large values (e.g. 100!) at the cost of speed and memory 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 37

Type Conversions æ We know that combining an int with an int produces an int, and combining a float with a float produces a float. æ What happens when you mix an int and float in an expression? x = 5.0 + 2 æ What do you think should happen? 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 38

Type Conversions æ For Python to evaluate this expression, it must either convert 5.0 to 5 and do an integer addition, or convert 2 to 2.0 and do a floating point addition. æ Converting a float to an int will lose information æ Ints can be converted to floats by adding.0 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 39

Type Conversion æ In mixed-typed expressions Python will convert ints to floats. æ Sometimes we want to control the type conversion. This is called explicit typing. 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 40

Type Conversions >>> float(22//5) 4.0 >>> int(4.5) 4 >>> int(3.9) 3 >>> round(3.9) 4 >>> round(3) 3 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 41

Lecture Summary æ We learned about the general form of an accumulator program æ We learned how to write a simple accumulator program that calculates the factorial of an integer æ We learned how to read and write programs that process numerical data æ To learned how Python handles large numbers 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 42

Lecture Summary æ We learned the concept of data types æ We learned two data types in in Python æ We learned how different data types interact æ We learned how to use the Python math library 26/03/2015 CITS4406 Problem Solving & Programming - Lecture 06 Accumulator & Type Conversion 43