epicours/Algo/CM/CM du 27 septembre.md

1.6 KiB

Outline

  • Abstract Algebraic Data types
  • Elementary types
    • List
    • Stack
    • Queue
    • Set
  • Searching algorithms
  • Tree
    • Binary
    • General
    • BST
    • AVL
    • A234

Abstract Algebraic Data Types

Signature and hierarchy

  • a signature is composed by
    • a type (integer, stack, queue, graph)
    • an operations (name: profile)
    • Exemple:
      • insert: list x integer x element -> list
      • insert(l, i, e)
      • return a result of type list
    • We can use the _to pass an argument without parentheses
      • facotrial: interger -> integer= _!: interger -> integer
      • power: integer x integer -> integer= _^_: integer x integer -> integer
      • Operations
        • 0: -> integer
        • false: -> boolean
        • pi: -> real
      • Types
        • Boolean
          • Opération:
            • false: -> boolean
            • true: -> boolean
            • not_: boolean -> boolean
            • _and_: boolean x boolean -> boolean
            • _or_: boolean x boolean -> boolean
        • Vectors (defined type)
          • Uses: integer and element (predefined types)
          • Operations:
            • modify: vector x integer x element -> vector (internal operation)
            • nth: vector x integer -> element (observers)
            • lowerlimit: vector -> integer (observers)
            • upperlimit: vector -> integer (observers)
          • Use
            • nth(v, i+2)

Every time that an operation return a defined type, is a internal operation. An internal operation will really modify the data

An observer is when there is AT LEAST 1 defined type vector and who return a predefined type. The observer just look into the data and return the selected value, but he don't change any values.