vault backup: 2023-11-13 13:50:53
This commit is contained in:
52
Algo/B1/CM/CM du 27 septembre.md
Normal file
52
Algo/B1/CM/CM du 27 septembre.md
Normal file
@ -0,0 +1,52 @@
|
||||
## 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.
|
||||
|
Reference in New Issue
Block a user