1 Think Euphoria
1.1 The Way of the Program
1.2 First Draft
1.3 The Euphoria programming language
1.4 What is a program?
1.5 What is debugging?
1.5.1 Syntax errors
1.5.2 Runtime errors
1.5.3 Hardware errors
1.5.4 Semantic errors
1.5.5 Experimental Debugging
1.5.6 Formal and natural languages
1.5.7 The first program
1.6 Debugging
1.7 Glossary
2 Think Euphoria
2.1 Variables, commands and expressions
2.2 Objects
2.3 Variables
2.4 Output
2.5 Type
2.6 Working with atoms
2.7 Working with sequences
2.8 Working with objects
2.9 Output: The handy ?
2.10 Integer data-type
2.11 User defined data-type
2.12 Variable names and keywords
2.13 Commands
2.14 Evaluating expressions
2.15 Operators and operands
2.16 Order of operations
2.17 String operations
2.18 Glossary
3 Think Euphoria
3.1 Routines
3.2 new
3.3 Routine calls
3.4 Type conversion functions
3.5 Math functions
3.6 Composition
3.7 Adding new routines
3.8 Definitions and uses
3.9 Flow of execution
3.10 Parameters and arguments
3.11 Variables and parameters are local
3.12 Stack diagrams
3.13 Fruitful functions and procedures
3.14 Why routines?
3.15 Debugging
3.16 Glossary
4 Think Euphoria
4.1 Conditionals and recursion
4.2 floor() and remainder()
4.3 Boolean expressions
4.4 Relational operators
4.5 Sequence comparison
4.6 Logical Operators
4.7 Conditional execution
4.8 Alternative execution
4.9 Chained conditionals
4.10 Nested conditionals
4.11 The return command
4.12 Recursion
4.13 Stack diagrams for recursive functions
4.14 Infinite recursion
4.15 Keyboard input
4.16 Glossary
5 Think Euphoria
5.1 Fruitful functions
5.2 Return values
5.3 Incremental development
5.4 Composition
5.5 Boolean functions
5.6 More recursion
5.7 Leap of faith
5.8 One more example
5.9 Checking types
5.10 Debugging
5.11 Glossary
6 Think Euphoria
6.1 Iteration
6.2 Multiple assignment
6.3 Updating variables
6.4 The while command
6.5 exit
6.6 Square roots
6.7 Algorithms
6.8 Tables
6.8.1 Two-dimensional tables
6.9 Encapsulation and generalization
6.10 More encapsulation
6.11 Local variables
6.12 More generalization
6.12.1 Functions
6.13 Debugging
6.14 Glossary
7 Think Euphoria
7.1 Sequence: strings
7.2 A compound data type
7.3 Length
7.4 Traversal and the for loop
7.5 String slices
7.6 String comparison
7.7 About sequence (and string) comparisons
7.8 Strings are mutable
7.9 A find function
7.10 Looping and counting
7.11 Euphoria: find() and match()
7.12 find vs find
7.12.1 problem with overriding routines / no warning
7.13 Character classification
7.14 Debugging
7.15 Glossary
8 Think Euphoria
8.1 Sequence: List
8.2 A list is a sequence
8.3 Sequence values
8.4 Sequences are mutable
8.5 Traversing a sequence
8.6 toms ?? an in operator
8.7 Series
8.8 Sequence length
8.9 Sequence membership
8.10 Sequences and for loops
8.11 Sequence operations
8.12 Sequence slices
8.13 Sequences are mutable
8.13.1 must introduce pretty-print here
8.14 8.9 List deletion
8.15 List routines
8.16 Sequence arguments/parameters
8.17 Nested lists
8.18 Matrixes
8.19 Strings and sequences
8.20 Map, filter and reduce
8.21 Deleting elements
8.22 Sequences and strings
8.23 Debugging
8.24 Glossary
9 Think Euphoria
9.1 Random numbers
9.2 Random numbers
9.3 Sequence of random numbers
9.4 Counting
9.5 Many buckets
9.6 A single-pass solution
9.7 Glossary
10 Think Euphoria
10.1 Files
10.2 Caution
10.3 Persistence
10.4 Reading and writing
10.5 Output choices
10.6 Formated output
10.7 Filenames and paths
10.8 Catching errors
10.9 Databases
10.10 euSQLite
10.11 Pickling
10.12 Pipes
10.13 Writing include files
10.14 File input/output
10.15 Debugging
10.16 Glossary