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 AnsiStringCh.10, Ch.3, Ch.13; See also string types AP Computer Science exam — Ch.1, Ch.40 Append (file mode) — Ch.13 Application.RunCh.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 AssignFileCh.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..endCh.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 breakCh.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..elseCh.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 CloseFileCh.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 continueCh.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" DisposeCh.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 downtoCh.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

EConvertErrorCh.19, Ch.10 EInOutErrorCh.19, Ch.13 EListError — Ch.19, Ch.20 ERangeErrorCh.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 EofCh.13 EolnCh.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 ExitCh.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..downtoCh.6 for..inCh.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} FreeAndNilCh.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 GetAppConfigDirCh.37 GetCurrentDir — Ch.13, Ch.37 GetMem / FreeMemCh.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..elseCh.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 IOResultCh.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 NewCh.14, Ch.15 newline — Ch.4, Ch.13; See also WriteLn, ReadLn nilCh.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, constCh.7, Ch.8 parameter, default value — Ch.7, Ch.21 parameter, formal — Ch.7 parameter, outCh.7 parameter, varCh.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 / ReadLnCh.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..untilCh.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 SelfCh.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 SetLengthCh.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 ShortStringCh.10, Ch.13 ShowMessage — Ch.27, Ch.29 ShowModalCh.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 SQLQueryCh.31 SQLTransactionCh.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 / IntToStrCh.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 / TActionListCh.29 TApplicationCh.27 TBitBtn — Ch.28 TButtonCh.27, Ch.28 TCanvas — See Canvas TCheckBoxCh.28 TComboBoxCh.28 TCriticalSectionCh.36 TEditCh.28 TextFileCh.13 TFormCh.27, Ch.28 TImageCh.30 TInterfacedObjectCh.18 TLabelCh.27, Ch.28 TListCh.20, Ch.15 TListBoxCh.28 TMemoCh.28 TMenuItemCh.29 TObjectCh.16, Ch.17 TOpenDialog / TSaveDialogCh.29 TPaintBoxCh.30 TPanelCh.28 TProgressBarCh.28 TRadioButton / TRadioGroupCh.28 TSpinEditCh.28 TSQLite3ConnectionCh.31 TStatusBarCh.29 TStringGridCh.28, Ch.31 TStringListCh.10, Ch.13, Ch.33 TThreadCh.36 TTimerCh.28, Ch.30 TToolBarCh.29 TTreeViewCh.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 TObjectCh.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 / TrimRightCh.10 Trunc function — Ch.3 True — See Boolean type truth table — Ch.3, Ch.5 try..exceptCh.19 try..except..finally (nested) — Ch.19 try..finallyCh.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 UnicodeStringCh.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..doCh.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 / WriteLnCh.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.