Anzeige
Anzeige

Más contenido relacionado

Anzeige

PLP-L1-Intro.ppt

  1. Programming Paradigms Introduction
  2. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 2 Definitions  Programming Language  notation for specifying programs/computations  consists of words, symbols, and rules for writing a program  Programming Paradigm  programming “technique”  way of thinking about programming  view of a program
  3. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 3 Programming Paradigms  Imperative Programming  program as a collection of statements and procedures affecting data (variables)  Object-Oriented Programming  program as a collection of classes for interacting objects  Functional Programming  program as a collection of (math) functions  Others
  4. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 4 Some Languages by Paradigm  Imperative (also called Structured or Procedural) Programming  FORTRAN, BASIC, COBOL, Pascal, C  Object-Oriented Programming  SmallTalk, C++, Java  Functional Programming  LISP, ML, Haskell
  5. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 5 History of Languages  1950s to 1960s  FORTRAN, COBOL, LISP, BASIC  1960s to 1970s  (ALGOL-based) Pascal and others  1970s to 1980s  Prolog, C, Ada  1980s to 1990s  C++, ML, Perl, Java
  6. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 6 Paradigm Change  For example, from Procedural to Object- Oriented Programming  Arises from problems encountered in one paradigm but addressed in another  Case study: from C to C++  Evolution from procedural, to modular, to object- based, to object-oriented programming  Stroustrup book section 1.2 (2nd edition, pp. 14-22): required reading material
  7. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 7 Case Study: Stacks  Stack  last-in, first-out structure  operations: push, pop  Stacks are used to support some solution  push and pop are defined and implemented as functions  the solution consists of code that invoke these functions
  8. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 8 Implementing a Stack  Stack can be implemented as an array  array contains pushed elements  an integer refers to top of the stack  most common implementation  Or as a linked list  using pointers and dynamic allocation  Other implementations
  9. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 9 Array Implementation in C char Store[MAX]; int top = 0; void push(char x) { if (top < MAX) Store[top++] = x; else printf(“fulln”); } char pop() { if (top > 0) return Store[--top]; else printf(“emptyn”); } ...
  10. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 10 Using the Stack void application() { … push(‘x’); … result = pop(); … }
  11. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 11 Procedural Programming  Focus is on writing good functions and procedures  use the most appropriate implementation and employ correct efficient algorithms  Stack example (assume array implementation)  one source file  Store and top are global variables  stack and application functions defined at the same level (file)
  12. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 12 Problems  Application can alter implementation details  can directly manipulate top and Store from application()  integrity of stack not ensured  Stack code and application code are not separated
  13. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 13 Encapsulation and Modular Programming  Focus is on writing good modules  hide implementation details from user  provide an interface  Stack example  stack.h contains prototypes for push, pop  stack.c contains stack code, Store and top declared static (local to stack.c)  application includes stack.h
  14. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 14 Benefits from Modules  Application cannot destroy the integrity of the stack  Stack implementation can change without affecting application source  Question: what happens if we need more than one stack?
  15. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 15 Multiple Stacks  Strategy 1 (use structs)  in stack.h, define a stack structure that contains Store and top; push, pop now have an extra parameter that specifies which stack  application code defines stack variables  Strategy 2 (use handles)  implement multiple data structures in stack.c  use an integer (the handle) to specify “stack number”
  16. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 16 Modules and Multiple Stacks  Disadvantage of strategy 1:  implementation (data) is exposed  back to original problem on stack integrity  Disadvantage of strategy 2:  stack module will be unnecessarily complex  handle is artificial (what if an arbitrary integer is passed?)
  17. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 17 Abstract Data Types and Object-based Programming  Focus is on writing good classes (or types) that define operations on objects of the class  class defined like a module (encapsulation enforced) but multiple instances now possible  user-defined type  Stack example (C++)  stack.h and stack.cpp define a stack class
  18. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 18 Object-Oriented Programming  Incorporates both encapsulation and inheritance through the class concept  Focus is on writing good classes and on code reuse  Examples  Shape, Circle, and Rectangle in a drawing program  Employee, Faculty, Staff in a university personnel system
  19. 6/15/2005 Copyright 2005, by the authors of these slides, and Ateneo de Manila University. All rights reserved. L1: Introduction Slide 19 What’s Next?  Survey of languages by paradigm  Discussion of language features and language design decisions  Related areas: language implementation, translation, syntax, semantics
Anzeige