Appendix K: Index
Page references are given as chapter numbers (e.g., Ch.5 means Chapter 5). Bold references indicate the primary definition or most thorough treatment. Cross-references use "See" (for preferred terms) and "See also" (for related entries).
A
Abs function — Ch.3, Ch.22
abstract class — Ch.18, Ch.17, Ch.20
abstract method — Ch.18, Ch.17
access specifier — See visibility specifiers
accumulator pattern — Ch.6, Ch.9, Ch.23
actual parameter — See parameter, actual
Ada (language) — Ch.1, Ch.40
adjacency list — Ch.24
adjacency matrix — Ch.24
algorithm — Ch.1, Ch.22-26
algorithm design strategies — Ch.25; See also divide and conquer, dynamic programming, greedy algorithm
and operator — Ch.3, Ch.5; See also Boolean operators
AnsiString — Ch.10, Ch.3, Ch.13; See also string types
AP Computer Science exam — Ch.1, Ch.40
Append (file mode) — Ch.13
Application.Run — Ch.27
argument — See parameter, actual
arithmetic operators — Ch.3; +, -, *, /, div, mod
array — Ch.9, Ch.6, Ch.11, Ch.23
array, dynamic — Ch.9, Ch.20; See also SetLength
array, multidimensional — Ch.9, Ch.23, Ch.30
array, of const — Ch.7, Ch.20
array, open parameter — Ch.9, Ch.7
array, packed — Ch.9, Ch.34
array, static — Ch.9
as operator (type cast) — Ch.17, Ch.18
ASCII — Ch.3, Ch.10, Appendix C
AssignFile — Ch.13
assignment operator (:=) — Ch.3, Ch.1
assignment compatibility — Ch.3, Ch.17
asymptotic analysis — See Big O notation
B
{$B+}` / `{$B-} — See complete Boolean evaluation; Boolean short-circuit evaluation
backtracking — Ch.25, Ch.22
base case (recursion) — Ch.22; See also recursion
base class — See ancestor class
begin..end — Ch.3, Ch.5, Ch.6, Ch.7
best case (complexity) — Ch.26, Ch.23
Big O notation — Ch.26, Ch.23, Ch.24, Ch.25
binary file — Ch.13, Ch.34
binary search — Ch.23, Ch.24
binary search tree (BST) — Ch.24
binary tree — Ch.24
bit manipulation — Ch.3, Ch.12
Blaise Pascal — See Pascal, Blaise
block — Ch.3, Ch.7, Ch.8
Boolean type — Ch.3, Ch.5
Boolean operators — Ch.3, Ch.5; and, or, not, xor
Boolean short-circuit evaluation — Ch.5, Ch.3
Borland — Ch.1, Ch.39, Ch.40; See also Turbo Pascal, Delphi
boundary testing — Ch.5, Ch.6, Ch.9, Ch.19
breadth-first search — Ch.24
break — Ch.6
breakpoint (debugger) — Ch.2, Ch.19
Brooks, Frederick P. — Ch.33, Ch.38
BST — See binary search tree
bubble sort — Ch.23
buffer (I/O) — Ch.13
bug — Ch.2, Ch.5, Ch.6, Ch.19; See also debugging
Byte type — Ch.3; See also Integer type
C
C (language), comparison with Pascal — Ch.1, Ch.3, Ch.14, Ch.40
C# (language) — Ch.1, Ch.40; See also Hejlsberg, Anders
C++ (language) — Ch.1, Ch.16, Ch.40
call stack — Ch.8, Ch.7, Ch.22
Canvas (Lazarus) — Ch.30
case statement — Ch.5, Ch.12
case..of..else — Ch.5
casting — See type casting
Char type — Ch.3, Ch.10, Ch.12
child class — See descendant class
Chr function — Ch.3, Ch.10
circular array (queue) — Ch.15
circular reference (units) — Ch.33
class — Ch.16, Ch.17, Ch.18, Ch.20, Ch.21
class, abstract — See abstract class
class helper — Ch.21
class method — Ch.21
class operator — Ch.21; See also operator overloading
class reference type — Ch.21
ClassName method — Ch.16, Ch.17
CloseFile — Ch.13
CLRS — See Cormen et al.
code organization — Ch.7, Ch.8, Ch.33; See also modular design
code reuse — Ch.7, Ch.16, Ch.17, Ch.20, Ch.33
cohesion — Ch.33, Ch.16
Collatz conjecture — Ch.6
command-line interface — Ch.4, Ch.27
command-line parameters — Ch.37
comment — Ch.3; { }, (* *), //
comparison operators — Ch.3, Ch.5; =, <>, <, >, <=, >=
compilation unit — See unit
compiler — Ch.1, Ch.2; See also Free Pascal
compiler directive — Ch.2, Ch.3, Ch.5; {$mode}`, `{$H+}, {$R+}`, `{$I-}, {$B-}
compiler error — Ch.2, Ch.3, Appendix D
compiler optimization — Ch.22, Ch.26; -O2, inlining, tail call optimization
compiler warning — Ch.2, Ch.3
complete Boolean evaluation — Ch.5; {$B+}
complexity analysis — Ch.26; See also Big O notation, time complexity, space complexity
component (Lazarus) — Ch.27, Ch.28, Ch.29, Ch.30; See also LCL
Component Palette (Lazarus) — Ch.27, Appendix G
compound statement — See begin..end
Concat function — Ch.10
concatenation (string) — Ch.10, Ch.3
conditional compilation — Ch.37; {$IFDEF}`, `{$ENDIF}
const (constant declaration) — Ch.3
const parameter — Ch.7, Ch.8, Ch.9
constant folding — Ch.3, Ch.26
constructor — Ch.16, Ch.17; Create
continue — Ch.6
Copy function — Ch.10
Cormen, T. H. et al. (CLRS) — Ch.23, Ch.24, Ch.25, Ch.26
counting sort — Ch.23
coupling — Ch.33, Ch.16
Create — See constructor
critical section — Ch.36
cross-platform development — Ch.32, Ch.27, Ch.37
Crypts of Pascalia (running example) — Ch.6, Ch.10, Ch.11, Ch.13, Ch.14-15, Ch.16-17, Ch.24
CSV (Comma-Separated Values) — Ch.34, Ch.13
Currency type — Ch.3, Ch.21
D
dangling else — Ch.5
dangling pointer — Ch.14, Ch.15
data abstraction — Ch.11, Ch.16
data structure — Ch.9-15, Ch.20, Ch.24; See also array, record, linked list, tree, graph
data type — See type
database programming — Ch.31; See also SQL, SQLite
DateUtils unit — Ch.3, Ch.26
deadlock — Ch.36
debugging — Ch.2, Ch.19; See also exception handling
declaration — Ch.3, Ch.7, Ch.8; var, const, type
declaration order — Ch.3, Ch.7, Ch.8
default parameter value — Ch.7, Ch.21
Delete procedure (string) — Ch.10
Delphi — Ch.1, Ch.16, Ch.39, Ch.40, Appendix E
De Morgan's Laws — Ch.5, Ch.3
dependency injection — Ch.18, Ch.33
Dependency Inversion Principle — Ch.18
deployment — Ch.32
depth-first search — Ch.24
dereferencing — Ch.14, Ch.15; ^ operator
descendant class — See inheritance
Design by Contract — Ch.16, Ch.17
design patterns — Ch.18, Ch.21; See also Factory, Observer, Strategy, Template Method
Destroy — See destructor
destructor — Ch.16, Ch.17; Destroy
dialog (Lazarus) — Ch.29; TOpenDialog, TSaveDialog, TColorDialog, TFontDialog
Dijkstra, Edsger W. — Ch.1, Ch.24; "Go To Statement Considered Harmful"
Dispose — Ch.14, Ch.15
div operator — Ch.3, Ch.6
divide and conquer — Ch.25, Ch.22, Ch.23
DLL (Dynamic Link Library) — Ch.33, Ch.37
DOM unit (XML) — Ch.34
Double type — Ch.3; See also Real type
downto — Ch.6
DRY principle (Don't Repeat Yourself) — Ch.7, Ch.33
dynamic array — See array, dynamic
dynamic dispatch — See virtual method dispatch
dynamic keyword — Ch.17
dynamic memory — Ch.14, Ch.15; See also heap, pointer
dynamic programming — Ch.25
E
EConvertError — Ch.19, Ch.10
EInOutError — Ch.19, Ch.13
EListError — Ch.19, Ch.20
ERangeError — Ch.19, Ch.3, Ch.9
EStackOverflow — Ch.19, Ch.22
EAccessViolation — Ch.19, Ch.14
Embarcadero Technologies — Ch.1, Ch.39, Ch.40; See also Delphi
encapsulation — Ch.16, Ch.17, Ch.18
end — See begin..end
enumerated type — Ch.12, Ch.5
environment variable — Ch.37
Eof — Ch.13
Eoln — Ch.13
equality operator (=) — Ch.3, Ch.1, Ch.5
Erase procedure — Ch.13
error handling — See exception handling; See also IOResult
escape sequence — Ch.4, Ch.10
ETH Zurich — Ch.1, Ch.40
Euclid's algorithm — Ch.6, Ch.22
event — Ch.27, Ch.28, Ch.29
event-driven programming — Ch.27
event handler — Ch.27, Ch.28; See also OnClick, OnCreate
exception — Ch.19
exception, custom — Ch.19; inheriting from Exception
exception class hierarchy — Ch.19
exception handling — Ch.19; try..except, try..finally
exception, re-raising — Ch.19; raise
exception, swallowing — Ch.19; antipattern of catching and ignoring
Exit — Ch.7, Ch.6
Exp function — Ch.3
expression — Ch.3, Ch.5
Extended type — Ch.3; See also Real type
external library — Ch.33, Ch.37
F
False — See Boolean type
Factory pattern — Ch.18, Ch.21
Fibonacci sequence — Ch.22, Ch.25
field (record) — Ch.11, Ch.16
field alignment — See packed record
FIFO — Ch.15; See also queue
file — Ch.13, Ch.34
file, binary — Ch.13, Ch.34
file, text — Ch.13
file, typed — Ch.13
file, untyped — Ch.13
FileExists function — Ch.13, Ch.19
FilePos function — Ch.13
FileSize function — Ch.13
FillChar procedure — Ch.9, Ch.14
finalization section — Ch.33
FL Studio (Delphi application) — Ch.1, Ch.39
floating-point comparison — Ch.3, Ch.5
floating-point precision — Ch.3
for loop — Ch.6, Ch.3, Ch.9
for..downto — Ch.6
for..in — Ch.6, Ch.12
formal parameter — See parameter, formal
form (Lazarus) — Ch.27, Ch.28
form designer (Lazarus) — Ch.27, Ch.28
Format function — Ch.4, Ch.10
format specifier — Ch.4; WriteLn(x:width:decimals)
forward declaration — Ch.22, Ch.7
fpjson unit — Ch.34
fphttpclient unit — Ch.35
Free method — Ch.16, Ch.19
Free Pascal (FPC) — Ch.1, Ch.2, Appendix B; See also compiler
Free Pascal modes — Ch.2; {$mode fpc}`, `{$mode objfpc}, {$mode delphi}`, `{$mode tp}
FreeAndNil — Ch.16, Ch.19
FreeMem — See GetMem / FreeMem
function — Ch.7, Ch.8, Ch.22
function, inline — Ch.26
function, nested — Ch.8
function, overloaded — Ch.7, Ch.21
function result — See Result variable
G
Gamma, E. et al. (Gang of Four) — Ch.18, Ch.21
garbage collection — Ch.14, Ch.18
generic keyword — Ch.20
generics — Ch.20, Ch.15, Ch.23
generics, constraints — Ch.20
GetAppConfigDir — Ch.37
GetCurrentDir — Ch.13, Ch.37
GetMem / FreeMem — Ch.14
global variable — Ch.8, Ch.7
GCD (Greatest Common Divisor) — Ch.6, Ch.22
GOTO statement — Ch.1, Ch.6
GradeBook Pro (running example) — Ch.9, Ch.11, Ch.13, Ch.16, Ch.23
graph — Ch.24
graph, directed — Ch.24
graph, undirected — Ch.24
graph, weighted — Ch.24
greedy algorithm — Ch.25
guard clause — Ch.5, Ch.7, Ch.19
GUI (Graphical User Interface) — Ch.27-Ch.32; See also Lazarus, LCL
GUID — Ch.18
H
Halt procedure — Ch.5, Ch.19
hash function — Ch.24
hash table — Ch.24
"has-a" relationship — Ch.17; See also composition
head pointer — Ch.15
heap (memory) — Ch.14, Ch.16; See also dynamic memory
heap sort — Ch.23
Hejlsberg, Anders — Ch.1, Ch.40
helper — See class helper
{$H+} directive — Ch.10, Ch.2
High function — Ch.9, Ch.12
Hoare, C. A. R. — Ch.23
HTTP — Ch.35
{$HINTS ON}` / `{$HINTS OFF} — Ch.2
I
{$I-}` / `{$I+} directive — Ch.13; See also IOResult
IDE — See Lazarus IDE
identifier — Ch.3
identifier, case-insensitivity — Ch.3
if..then..else — Ch.5, Ch.3
if..then..else if chain — Ch.5
Image-Line — See FL Studio
immutability — Ch.3, Ch.8
implementation section (unit) — Ch.33
in operator — Ch.12, Ch.5
Inc procedure — Ch.3, Ch.6
Include / Exclude (set operations) — Ch.12
index (array) — Ch.9
indirection — See dereferencing
infinite loop — Ch.6
information hiding — Ch.16, Ch.33
inherited keyword — Ch.17, Ch.16
inheritance — Ch.17, Ch.16, Ch.18
inheritance, multiple — Ch.17, Ch.18; not supported for classes, use interfaces
inheritance, single — Ch.17
initialization (variable) — Ch.3, Ch.9, Ch.14
initialization section (unit) — Ch.33
inline keyword — Ch.26
inorder traversal — See tree traversal
input validation — Ch.5, Ch.6, Ch.19
Insert procedure (string) — Ch.10
insertion sort — Ch.23
instance — See object
Int64 type — Ch.3; See also Integer type
Integer type — Ch.3; See also Byte, Word, LongInt, Int64
interface (language construct) — Ch.18, Ch.20
interface delegation — Ch.18
interface section (unit) — Ch.33
Interface Segregation Principle — Ch.18
interpreter — Ch.1
IntToStr function — Ch.10, Ch.3
invariant — Ch.6, Ch.16, Ch.17
IOResult — Ch.13, Ch.19
is operator — Ch.17
"is-a" relationship — Ch.17; See also inheritance
iteration — See loop
J
Java (language), comparison with Pascal — Ch.1, Ch.16, Ch.40
JavaScript (language), comparison with Pascal — Ch.1, Ch.40
JSON — Ch.34, Ch.35; See also fpjson
jsonparser unit — Ch.34
K
Kernighan, Brian W. — Ch.1, Ch.40 keyword — See reserved word Knuth, Donald E. — Ch.22, Ch.23, Ch.26
L
label (case statement) — Ch.5
lambda — See anonymous function
late binding — See virtual method dispatch
Lazarus IDE — Ch.2, Ch.27-Ch.32, Appendix B, Appendix G
Lazarus project files — Ch.27; .lpr, .pas, .lfm, .lpi, .lps
LCL (Lazarus Component Library) — Ch.27, Ch.28, Ch.32
leaf node — Ch.24
Length function — Ch.10, Ch.9
level-order traversal — See tree traversal
.lfm file — Ch.27
LIFO — Ch.15; See also stack (data structure)
linear complexity — Ch.26
linear search — Ch.23, Ch.9
linked list — Ch.15, Ch.14
linked list, circular — Ch.15
linked list, doubly — Ch.15
linked list, singly — Ch.15
linker — Ch.2, Ch.33
Liskov, Barbara — Ch.17
Liskov Substitution Principle — Ch.17, Ch.18
literal — Ch.3; integer literal, string literal, character literal
local variable — Ch.7, Ch.8
logarithmic complexity — See O(log n)
LongInt type — Ch.3; See also Integer type
loop — Ch.6; See also for, while..do, repeat..until
loop, counted — See for loop
loop, infinite — See infinite loop
loop invariant — Ch.6, Ch.26
loop variable — Ch.6; must not be modified in body
Low function — Ch.9, Ch.12
LowerCase function — Ch.10
.lpi file — Ch.27
.lpr file — Ch.27
M
machine code — Ch.1, Ch.2; See also native code
magic number (file format) — Ch.34
magic number (code smell) — Ch.3
Main block — Ch.3
main form — Ch.27, Ch.28
MainFormOnTaskBar — Ch.27
Martin, Robert C. — Ch.17, Ch.18, Ch.33
MaxInt constant — Ch.3
median-of-three (pivot selection) — Ch.23
memory leak — Ch.14, Ch.16, Ch.19
memory management — Ch.14, Ch.16, Ch.18, Ch.19
memoization — Ch.25, Ch.22
menu (Lazarus) — Ch.29; TMainMenu, TPopupMenu
merge sort — Ch.23, Ch.25
message loop — Ch.27
Messages window (Lazarus) — Ch.2
method — Ch.16, Ch.17, Ch.18
method hiding — Ch.17
method overriding — Ch.17
method resolution clause — Ch.18
MicroServe (running example) — Ch.34, Ch.35, Ch.36, Ch.37
mod operator — Ch.3, Ch.6
modal dialog — Ch.29; ShowModal
modular design — Ch.33, Ch.7
Modula-2 — Ch.1, Ch.40
multidimensional array — See array, multidimensional
multithreading — Ch.36
mutex — See critical section
mutual recursion — Ch.22
N
named constant — See const
naming conventions — Ch.3, Ch.7, Ch.16; T prefix for types, F prefix for fields, A prefix for parameters
native code — Ch.1, Ch.2, Ch.26; See also compiler
nested procedure/function — Ch.8
nested record — Ch.11
New — Ch.14, Ch.15
newline — Ch.4, Ch.13; See also WriteLn, ReadLn
nil — Ch.14, Ch.15, Ch.16
node (data structure) — Ch.15, Ch.24
normalization (database) — Ch.31
not operator — Ch.3, Ch.5
"Not Responding" (frozen GUI) — Ch.27, Ch.36
O
O(1) — See constant time
O(log n) — See logarithmic complexity
O(n log n) — Ch.23, Ch.26
O(n) — See linear complexity
O(n^2) — See quadratic complexity
Oberon (language) — Ch.1, Ch.40
object — Ch.16; See also class, instance
Object Inspector (Lazarus) — Ch.27, Ch.28
Object Pascal — Ch.16; See also class, inheritance, interface
{$mode objfpc} — Ch.2, Ch.16
off-by-one error — Ch.6, Ch.9
OnChange event — Ch.28
OnClick event — Ch.27, Ch.28
OnClose event — Ch.27, Ch.29
OnCreate event — Ch.27
OnDestroy event — Ch.27
OnKeyPress event — Ch.28
OnMouseDown / OnMouseMove / OnMouseUp — Ch.28, Ch.30
OnPaint event — Ch.30
OnResize event — Ch.28
OnTimer event — Ch.28
OOP (Object-Oriented Programming) — Ch.16-Ch.21
OOP, four pillars — Ch.16; encapsulation, inheritance, polymorphism, abstraction
open array parameter — See array, open parameter
Open-Closed Principle — Ch.17, Ch.18
operator overloading — Ch.21
operator precedence — Ch.3, Ch.5
or operator — Ch.3, Ch.5; See also Boolean operators
Ord function — Ch.3, Ch.12
ordinal type — Ch.3, Ch.5, Ch.12
out parameter — Ch.7
output formatting — See format specifier
overflow (integer) — Ch.3, Ch.26
override keyword — Ch.17
ownership (memory) — Ch.16, Ch.19, Ch.34
P
packed keyword — See packed record
packed record — Ch.34, Ch.11
padding (memory alignment) — Ch.11, Ch.34
parameter — Ch.7, Ch.8
parameter, actual — Ch.7
parameter, const — Ch.7, Ch.8
parameter, default value — Ch.7, Ch.21
parameter, formal — Ch.7
parameter, out — Ch.7
parameter, var — Ch.7, Ch.8, Ch.14
parameter, value — Ch.7
parent class — See ancestor class
Parnas, David L. — Ch.33
partition (quicksort) — Ch.23
Pascal, Blaise — Ch.1
Pascal (language) — Ch.1, Ch.40; See also Free Pascal, Object Pascal, Turbo Pascal
Pascal's Triangle — Ch.6, Ch.9
Pascaline (calculator) — Ch.1
PathDelim constant — Ch.37
pattern matching — Ch.10; See also Pos function
PennyWise (progressive project) — Ch.1-Ch.38
PennyWise, command-line version — Ch.3-Ch.15
PennyWise, OOP version — Ch.16-Ch.21
PennyWise, GUI version — Ch.27-Ch.32
PennyWise 2.0 (capstone) — Ch.38
pointer — Ch.14, Ch.15, Ch.24
pointer, typed — Ch.14; PInteger = ^Integer
pointer, untyped — Ch.14; Pointer
pointer arithmetic — Ch.14
pointer dereferencing — See dereferencing
polymorphism — Ch.17, Ch.16, Ch.18
polymorphism, compile-time — Ch.21; See also operator overloading
polymorphism, runtime — Ch.17; See also virtual method dispatch
Pos function — Ch.10
post-test loop — See repeat..until
postcondition — Ch.7, Ch.16
Pred function — Ch.3, Ch.6, Ch.12
pre-test loop — See while..do
precondition — Ch.7, Ch.16
private visibility — Ch.16
procedure — Ch.7, Ch.8
program keyword — Ch.3
progressive project — See PennyWise
property — Ch.16, Ch.17, Ch.27
protected visibility — Ch.17
public visibility — Ch.16
published visibility — Ch.27
Q
queue — Ch.15; See also FIFO
Queue (TThread) — Ch.36
quicksort — Ch.23, Ch.25, Ch.26
quicksort, pivot selection — Ch.23; first, last, median-of-three, random
QWord type — Ch.3
R
race condition — Ch.36
{$R+} — See range checking
raise statement — Ch.19
random access (file) — Ch.13; See also Seek
Random / Randomize — Ch.5, Ch.6, Ch.23
range checking — Ch.3, Ch.9, Ch.12
range label (case) — Ch.5, Ch.12
Read / ReadLn — Ch.4, Ch.13
readability — Ch.1, Ch.3, Ch.7, Ch.33
Real type — Ch.3; See also Single, Double, Extended
record — Ch.11, Ch.13, Ch.16
record, nested — Ch.11
record, variant — See variant record
recursion — Ch.22, Ch.24, Ch.25
recursion, direct — Ch.22
recursion, indirect — See mutual recursion
recursion, tail — See tail recursion
recursive case — Ch.22
reference counting — Ch.18
reference semantics — Ch.16, Ch.14
Rename procedure — Ch.13
repeat..until — Ch.6
reserved word — Ch.3, Appendix F
Reset (file mode) — Ch.13
resource management — Ch.19; See also try..finally
REST API — Ch.35
Result variable — Ch.7, Ch.16
Rewrite (file mode) — Ch.13
root node — Ch.24
Rosa Martinelli (character) — Ch.1, Ch.3, Ch.5, Ch.13, Ch.19, Ch.27, Ch.38
Round function — Ch.3
row-major order — Ch.9
RTTI (Runtime Type Information) — Ch.27, Ch.17
runtime error — Ch.2, Ch.3, Ch.14, Ch.19
S
Sapir-Whorf hypothesis (programming languages) — Ch.1, Ch.40
scope — Ch.8, Ch.7, Ch.33
scope, block — Ch.8
scope, shadowing — Ch.8
Seek (file positioning) — Ch.13
Self — Ch.16, Ch.17
selection sort — Ch.23
semicolon (statement separator) — Ch.3, Ch.5
sentinel value — Ch.6, Ch.13
separate compilation — Ch.33
serialization — Ch.34; See also JSON, XML, CSV
set — Ch.12
set constructor — Ch.12; [value1, value2, range1..range2]
set operations — Ch.12; + (union), * (intersection), - (difference), in
SetLength — Ch.9, Ch.10, Ch.20
setter — See property
shared library — See DLL
ShortInt type — Ch.3; See also Integer type
short-circuit evaluation — See Boolean short-circuit evaluation
ShortString — Ch.10, Ch.13
ShowMessage — Ch.27, Ch.29
ShowModal — Ch.29
side effect — Ch.7
Single type — Ch.3
SizeOf function — Ch.9, Ch.14, Ch.34
SmallInt type — Ch.3; See also Integer type
socket — Ch.35
SOLID principles — Ch.17, Ch.18, Ch.33
sorting — Ch.23; See also bubble sort, insertion sort, merge sort, quicksort, selection sort
sorting, comparison-based — Ch.23, Ch.26
source editor (Lazarus) — Ch.2, Ch.27
space complexity — Ch.26
spaghetti code — Ch.1, Ch.6
specialize keyword — Ch.20
SQL — Ch.31
SQL injection — Ch.31, Ch.35
SQLdb components — Ch.31
SQLite — Ch.31, Ch.38
SQLQuery — Ch.31
SQLTransaction — Ch.31
Sqr function — Ch.3
Sqrt function — Ch.3, Ch.23
stable sort — Ch.23
stack (call stack) — See call stack
stack (data structure) — Ch.15; See also LIFO
stack frame — Ch.8, Ch.22
stack overflow — Ch.22, Ch.8
standard input/output — Ch.4
static array — See array, static
static method — Ch.17, Ch.21
static typing — Ch.1, Ch.3
step-through debugging — Ch.2, Ch.19
Str procedure — Ch.10, Ch.4
String type — Ch.10, Ch.3; See also AnsiString, ShortString, UnicodeString
string comparison — Ch.10; lexicographic order
string concatenation — See concatenation
string functions — Ch.10; Length, Copy, Pos, Insert, Delete, Trim, UpCase, LowerCase, IntToStr, StrToInt
string indexing — Ch.10; 1-based
StringReplace function — Ch.10
strong typing — Ch.3, Ch.1; See also static typing
StrToFloat / FloatToStr — Ch.10
StrToInt / IntToStr — Ch.10, Ch.3
structured programming — Ch.1, Ch.6
subprogram — See procedure, function
subrange type — Ch.12, Ch.3, Ch.9
Succ function — Ch.3, Ch.6, Ch.12
Supports function — Ch.18
Swap (exercise) — Ch.7
Synchronize (threading) — Ch.36
syntax error — Ch.2, Ch.3, Appendix D
SysUtils unit — Ch.3, Ch.10, Ch.19
T
tab order — Ch.28
TAction / TActionList — Ch.29
TApplication — Ch.27
TBitBtn — Ch.28
TButton — Ch.27, Ch.28
TCanvas — See Canvas
TCheckBox — Ch.28
TComboBox — Ch.28
TCriticalSection — Ch.36
TEdit — Ch.28
TextFile — Ch.13
TForm — Ch.27, Ch.28
TImage — Ch.30
TInterfacedObject — Ch.18
TLabel — Ch.27, Ch.28
TList — Ch.20, Ch.15
TListBox — Ch.28
TMemo — Ch.28
TMenuItem — Ch.29
TObject — Ch.16, Ch.17
TOpenDialog / TSaveDialog — Ch.29
TPaintBox — Ch.30
TPanel — Ch.28
TProgressBar — Ch.28
TRadioButton / TRadioGroup — Ch.28
TSpinEdit — Ch.28
TSQLite3Connection — Ch.31
TStatusBar — Ch.29
TStringGrid — Ch.28, Ch.31
TStringList — Ch.10, Ch.13, Ch.33
TThread — Ch.36
TTimer — Ch.28, Ch.30
TToolBar — Ch.29
TTreeView — Ch.28, Ch.24
tail call optimization — Ch.22
tail recursion — Ch.22
teaching language — Ch.1, Ch.40
temp-file-then-rename — See write-to-temp-then-rename pattern
Template Method pattern — Ch.18
temporary variable — Ch.3, Ch.7; See also Swap
termination condition — See base case; See also sentinel value
text editor, building — Ch.28, Ch.29
thread — Ch.36; See also multithreading
thread pool — Ch.36
thread safety — Ch.36
threshold concept — Ch.3, Ch.14, Ch.16, Ch.22, Ch.27
time complexity — Ch.26, Ch.23, Ch.24, Ch.25
TIOBE Index — Ch.39
TObject — Ch.16
Tomas Vieira (character) — Ch.1, Ch.3, Ch.5, Ch.6, Ch.27, Ch.38
top-down design — Ch.7, Ch.8, Ch.33
Total Commander (Delphi application) — Ch.1, Ch.39
tree — Ch.24; See also binary tree, binary search tree
tree, balanced — Ch.24
tree, depth — Ch.24
tree, height — Ch.24
tree traversal — Ch.24; inorder, preorder, postorder, level-order
Trim / TrimLeft / TrimRight — Ch.10
Trunc function — Ch.3
True — See Boolean type
truth table — Ch.3, Ch.5
try..except — Ch.19
try..except..finally (nested) — Ch.19
try..finally — Ch.19
TThread — See thread
Turbo Pascal — Ch.1, Ch.2, Ch.39, Ch.40
Turing Award — Ch.1; Wirth (1984), Dijkstra (1972), Hoare (1980)
type keyword — Ch.3, Ch.11, Ch.12, Ch.16
type alias — Ch.3, Ch.9
type casting — Ch.17; as operator
type compatibility — See assignment compatibility
typed constant — Ch.3
typed file — See file, typed
U
underscore in identifiers — Ch.3
UnicodeString — Ch.10
union (set operation) — See set operations
unit — Ch.33, Ch.2, Ch.8
unit, circular reference — See circular reference
unit, interface section — Ch.33
unit, implementation section — Ch.33
unit, initialization section — Ch.33
unit, finalization section — Ch.33
unit testing — Ch.33, Ch.38
UpCase function — Ch.10, Ch.5
uses clause — Ch.33, Ch.2
UTF8String — Ch.10
utility unit — Ch.33; See also modular design
V
Val procedure — Ch.10, Ch.4
value parameter — See parameter, value
value semantics — Ch.11, Ch.16
var keyword — Ch.3
var parameter — See parameter, var
variable — Ch.3
variable, lifetime — Ch.8, Ch.14
variable, scope — See scope
variant record — Ch.11
VCL (Visual Component Library) — Ch.27, Ch.39; Delphi equivalent of LCL
version control — Ch.2, Ch.27, Ch.38
virtual keyword — Ch.17, Ch.18
virtual method — Ch.17, Ch.18
virtual method dispatch — Ch.17
Virtual Method Table (VMT) — Ch.17
visibility specifiers — Ch.16, Ch.17, Ch.27; private, protected, public, published
W
{$WARNINGS ON}` / `{$WARNINGS OFF} — Ch.2
watch expression (debugger) — Ch.2, Ch.19
weighted graph — See graph, weighted
while..do — Ch.6, Ch.13
white box testing — Ch.19
widgetset (LCL) — Ch.27, Ch.32
WideString — Ch.10
Windows API — Ch.37
Wirth, Niklaus — Ch.1, Ch.40
Wirth's Law — Ch.1, Ch.40
with statement — Ch.11, Ch.16
Word type — Ch.3; See also Integer type
worst case (complexity) — Ch.26, Ch.23
Write / WriteLn — Ch.4, Ch.3, Ch.13
write-to-temp-then-rename pattern — Ch.19, Ch.34
X
XML — Ch.34, Ch.35
XML attributes — Ch.34
XMLRead / XMLWrite units — Ch.34
xor operator — Ch.3, Ch.5
Y
No index entries for Y.
Z
zero-based indexing — Ch.9, Ch.10, Ch.20; dynamic arrays use 0-based indices zero initialization — Ch.3, Ch.9, Ch.14, Ch.16
This index was compiled from the complete text of all 40 chapters, 7 part introductions, and 11 appendices (A-K) of Programming with Pascal. Bold chapter references indicate primary definitions. For Pascal reserved words and operators, see also Appendix F. For Lazarus component details, see also Appendix G.