Day 2 Lesson 6 Program Design Python MiniCourse

  • Slides: 18
Download presentation
Day 2 – Lesson 6 Program Design Python Mini-Course University of Oklahoma Department of

Day 2 – Lesson 6 Program Design Python Mini-Course University of Oklahoma Department of Psychology 1 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Lesson objectives 1. Describe the four major programming paradigms that can be used in

Lesson objectives 1. Describe the four major programming paradigms that can be used in Python 2. List the steps in the program design process 3. Use pseudocode to develop the logic for a simple algorithm 2 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Sources Wikipedia http: //en. wikipedia. org/wiki/Imperative_programming http: //en. wikipedia. org/wiki/Procedural_programming http: //en. wikipedia. org/wiki/Functional_programming

Sources Wikipedia http: //en. wikipedia. org/wiki/Imperative_programming http: //en. wikipedia. org/wiki/Procedural_programming http: //en. wikipedia. org/wiki/Functional_programming http: //en. wikipedia. org/wiki/Object-oriented_programming http: //en. wikipedia. org/wiki/Event-driven_programming http: //en. wikipedia. org/wiki/Pseudocode 3 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Programming paradigms The fundamental styles of computer programming Paradigms describe concepts and abstractions used

Programming paradigms The fundamental styles of computer programming Paradigms describe concepts and abstractions used to represent the elements of a program the steps that compose a computation 4 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Programming paradigms Imperative / Procedural Fortran, COBOL, Pascal, BASIC Functional Mathematica, R Object-oriented (OOP)

Programming paradigms Imperative / Procedural Fortran, COBOL, Pascal, BASIC Functional Mathematica, R Object-oriented (OOP) C++, Java, Python Event-driven 5 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Procedural programming Programs are step-by-step instructions of how to perform a task Specify a

Procedural programming Programs are step-by-step instructions of how to perform a task Specify a series of algorithmic steps Emphasizes use of re-usable procedures (a. k. a functions) to change the program state 6 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Procedural programming in Python # create empty list target = [] # iterate over

Procedural programming in Python # create empty list target = [] # iterate over each thing in source for item in source_list: trans 1 = G(item) trans 2 = F(trans 1) # add transformed item to target. append(trans 2) 7 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Functional programming Based on the lambda calculus Programs are based on the systematic evaluation

Functional programming Based on the lambda calculus Programs are based on the systematic evaluation of mathematical functions Programs describe what to do, not how to do it 8 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Functional programming in Python # Define how to apply two generic # transformations compose

Functional programming in Python # Define how to apply two generic # transformations compose 2 = lambda A, B: lambda x: A(B(x)) # Apply two specific functions # F and G to each item in source target = map(compose 2(F, G), source_list) 9 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Object-oriented programming Programs are collections of “objects” that interact Objects have attributes and behaviors,

Object-oriented programming Programs are collections of “objects” that interact Objects have attributes and behaviors, much like things in the real world 10 Python Mini-Course: Day 2 - Lesson 6 4/18/09

OOP in Python is inherently OOP Everything in Python is an object We’ll discuss

OOP in Python is inherently OOP Everything in Python is an object We’ll discuss OOP in detail on Days 6 and 7 Example: see oop. py 11 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Event-driven programming The flow of the program is determined by events user actions (mouse

Event-driven programming The flow of the program is determined by events user actions (mouse clicks, key presses, etc. ) messages from other programs sensor outputs Used for GUIs 12 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Event-driven programming Programs have two sections Event detection Event handling Example: Study. XXX. py

Event-driven programming Programs have two sections Event detection Event handling Example: Study. XXX. py 13 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Program design process Identify the program components you will need Functions, object classes, event

Program design process Identify the program components you will need Functions, object classes, event handlers, etc. 2. Design the interfaces and stub them out Keep in mind the principles of encapsulation and generalization 1. 14 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Program design process 3. Write a test routine 4. Fill in the program components.

Program design process 3. Write a test routine 4. Fill in the program components. Test and debug them 5. Write the main routine 6. Test and debug the program 15 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Pseudocode is a compact and informal high-level description of an algorithm Uses the structural

Pseudocode is a compact and informal high-level description of an algorithm Uses the structural conventions of some programming language Is intended for human reading rather than machine reading Omits details that are not essential for human understanding of the algorithm 16 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Pseudocode example bubble. Sort for a list of sortable items: start loop set swapped

Pseudocode example bubble. Sort for a list of sortable items: start loop set swapped = false for each item in the list (except the last one) if item > next_item then swap( item, next_item ) set swapped = true end if end for loop if swapped is true then repeat loop end loop 17 Python Mini-Course: Day 2 - Lesson 6 4/18/09

Using pseudocode Purpose Easy for humans to understand Is a compact and environmentindependent description

Using pseudocode Purpose Easy for humans to understand Is a compact and environmentindependent description of the key principles of an algorithm Useful for: sketching out the structure of the program before coding documenting algorithms for publication 18 Python Mini-Course: Day 2 - Lesson 6 4/18/09