diff --git a/articles/pascal.md b/articles/pascal.md index 1ac05ea..7184e1c 100644 --- a/articles/pascal.md +++ b/articles/pascal.md @@ -4,11 +4,37 @@ Pascal is a procedural programming language created by [Niklaus Wirth](niklaus_w Pascal was a popular choice for microcomputers in the 70's and 80's, even more popular than C initially (C was still quite an UNIX-only language) due to its simple design, which allowed fast simple single-pass compilers. +In its "vanilla" form, Pascal is not any more complex than C, aside from having features that C doesn't have, such as range types +and nested procedures. + ## Compilers - [FPC](https://www.freepascal.org/) (Free Pascal Compiler): currently the most popular Pascal compiler with wide support for different OSes and architectures, libre software. -- Turbo Pascal: old compiler for DOS systems, proprietary -- Delphi: proprietary, adds [OOP](oop.md) bloat +- Turbo Pascal: old compiler for DOS systems, proprietary. +- Delphi: proprietary, adds [OOP](oop.md) bloat and exception handling. + +## Notes +### Returning values from functions +```pascal +{ The "classical" way, assigning the return value to the function name } +function Square(n: integer): integer; +begin + Square := n * n; +end; + +{ Object Pascal and Delphi, assigning to special `Result` variable } +{ Enable with `-S2` in FPC } +function Square(n: integer): integer; +begin + Result := n * n; +end; + +{ Return statement like } +function Square(n: integer): integer; +begin + Exit(n * n); +end; +``` ## Examples ### Hello world @@ -68,6 +94,7 @@ end. ## Resources - [Free Pascal Wiki](https://wiki.freepascal.org/Main_Page) +- [Basic Pascal Tutorial](https://wiki.freepascal.org/Basic_Pascal_Tutorial) - *Why Pascal is Not My Favorite Programming Language* by Brian Kernighan, mostly of historic interest as almost all of the flaws described in the article has been fixed by modern Pascal compilers.