{VERSION 12 0 "Windows XP" "12.0" } {USTYLETAB {PSTYLE "Maple Output" -1 11 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }3 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Ordered List 1" -1 200 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 0 2 0 2 2 -1 1 }{PSTYLE "Dash Item" -1 16 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 0 2 0 2 2 -1 1 }{PSTYLE "Ordered List 2" -1 201 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 36 2 0 2 2 -1 1 }{PSTYLE "Ordered List 3" -1 202 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 72 2 0 2 2 -1 1 }{PSTYLE "O rdered List 4" -1 203 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 108 2 0 2 2 -1 1 }{PSTYLE "Ordered List 5" -1 204 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 144 2 0 2 2 -1 1 }{PSTYLE "Author" -1 19 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }3 1 0 0 8 8 2 0 2 0 2 2 -1 1 }{PSTYLE "Warning" -1 7 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 2 1 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Annotat ion Title" -1 205 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 1 0 0 1 }3 1 0 0 12 12 2 0 2 0 2 2 -1 1 }{PSTYLE "Maple Plot" -1 13 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }3 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Error" -1 8 1 {CSTYLE "" -1 -1 "Courier" 1 12 255 0 255 1 2 2 2 2 2 1 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 } {PSTYLE "Title" -1 18 1 {CSTYLE "" -1 -1 "Times" 1 18 0 0 0 1 2 1 2 2 2 2 1 0 0 1 }3 1 0 0 12 12 2 0 2 0 2 2 -1 1 }{PSTYLE "Line Printed Out put" -1 6 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 2 1 2 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Heading 1" -1 3 1 {CSTYLE "" -1 -1 "MS Serif" 1 18 0 0 0 1 2 1 2 2 2 2 1 0 0 1 }1 1 0 0 8 4 2 0 2 0 2 2 -1 1 }{PSTYLE "Diagnostic" -1 9 1 {CSTYLE "" -1 -1 "Courier" 1 12 40 120 40 1 2 2 2 2 2 1 2 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 } {PSTYLE "Text Output" -1 2 1 {CSTYLE "" -1 -1 "Courier" 1 12 0 0 255 1 2 2 2 2 2 1 3 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Bullet It em" -1 15 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 0 2 0 2 2 -1 1 }{PSTYLE "Heading 4" -1 20 1 {CSTYLE "" -1 -1 "MS Serif" 1 12 0 0 0 1 1 2 2 2 2 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Normal" -1 0 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Heading 3" -1 5 1 {CSTYLE "" -1 -1 "MS Serif" 1 14 0 0 0 1 1 1 2 2 2 2 1 0 0 1 }1 1 0 0 0 0 2 0 2 0 2 2 -1 1 }{PSTYLE "Heading 2" -1 4 1 {CSTYLE "" -1 -1 "MS Serif" 1 16 0 0 0 1 2 1 2 2 2 2 1 0 0 1 }1 1 0 0 8 2 2 0 2 0 2 2 -1 1 }{PSTYLE "List Item" -1 14 1 {CSTYLE "" -1 -1 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 1 0 0 1 }1 1 0 0 3 3 2 0 2 0 2 2 -1 1 }{CSTYLE "An notation Text" -1 200 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 } {CSTYLE "Maple Input Placeholder" -1 201 "Courier" 1 12 200 0 200 1 2 1 2 2 1 2 0 0 0 1 }{CSTYLE "Code" -1 202 "Courier" 1 12 255 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "2D Inert Output" -1 203 "Times" 1 12 144 144 144 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "Hyperlink" -1 17 "MS Serif" 1 12 0 128 128 1 2 2 1 2 2 2 0 0 0 1 }{CSTYLE "2D Math" -1 2 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Maple Input" -1 0 "Courier" 1 12 255 0 0 1 2 1 2 2 1 2 0 0 0 1 }{CSTYLE "2D Output" -1 20 "Times" 1 12 0 0 255 1 2 2 2 2 2 1 0 0 0 1 }{CSTYLE "2D Input" -1 19 "Times" 1 12 0 0 0 1 2 2 2 2 1 2 0 0 0 1 }{CSTYLE "Header and Footer" -1 204 "Times" 1 10 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Text" -1 205 "Times" 1 12 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "Equation Label" -1 206 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "Dictionary Hyperlink" -1 45 "MS Serif" 1 12 147 0 15 1 2 2 1 2 2 2 0 0 0 1 }{CSTYLE "" -1 207 "Tim es" 1 16 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 208 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 209 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 210 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 211 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 } {CSTYLE "" -1 212 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 213 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 214 "T imes" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 215 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 216 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 217 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 218 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 } {CSTYLE "" -1 219 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 220 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 221 "T imes" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 222 "Times" 1 16 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 223 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 224 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 225 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 } {CSTYLE "" -1 226 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 227 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 228 "T imes" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 229 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 230 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 231 "Times" 1 12 0 0 0 1 1 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 232 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 } {CSTYLE "" -1 233 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 234 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 235 "T imes" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 236 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 237 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 238 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 239 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 } {CSTYLE "" -1 240 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 241 "Times" 1 16 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 242 "T imes" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 243 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 244 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 245 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 246 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 } {CSTYLE "" -1 247 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 248 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 249 "T imes" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 250 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 251 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 252 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 253 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 } {CSTYLE "" -1 254 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 255 "Times" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 256 "T imes" 1 12 0 0 0 1 2 1 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 257 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 258 "Times" 1 12 0 0 0 1 1 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 259 "Times" 1 10 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }{CSTYLE "" -1 260 "Times" 1 10 0 0 0 1 2 2 2 2 2 2 0 0 0 1 } {CSTYLE "" -1 261 "Times" 1 10 0 0 0 1 2 2 2 2 2 2 0 0 0 1 }} {SECT 0 {SECT 0 {PARA 3 "" 0 "" {TEXT 262 20 "Programming in Maple" } }{PARA 0 "" 0 "" {TEXT 205 113 "Maple can be used as a full-scale prog ramming language, allowing for control structures and calls to subrout ines." }}{PARA 0 "" 0 "" {TEXT 205 0 "" }}{PARA 0 "" 0 "" {TEXT 205 57 "The following notes are based on an extensive tutorial by" }} {PARA 0 "" 0 "" {TEXT 205 20 " Roger Kraft\n " }{TEXT 205 25 "Pu rdue University Calumet" }}{PARA 0 "" 0 "" {TEXT 205 62 " http://em s.calumet.purdue.edu/mcss/kraftrl/mfmm/index.html" }}{PARA 0 "" 0 "" {TEXT 205 1 "\n" }}{SECT 1 {PARA 0 "" 0 "" {TEXT 207 10 "Procedures" } }{PARA 0 "" 0 "" {TEXT 205 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT 208 11 "Procedures " }{TEXT 205 31 "are defined by the construction" }{TEXT 209 1 "\n" }{TEXT 210 1 "\n" }{TEXT 211 4 "proc" }{TEXT 205 13 "(param eters)\n" }{TEXT 205 16 " statements\n" }{TEXT 212 4 "end;" }}} {EXCHG {PARA 0 "" 0 "" {TEXT 263 51 "In a procedure there are three ki nds of variables, " }{TEXT 213 19 "parameter variables" }{TEXT 263 2 " , " }{TEXT 214 15 "local variables" }{TEXT 263 6 ", and " }{TEXT 215 16 "global variables" }{TEXT 263 2 ". " }}{PARA 0 "" 0 "" {TEXT 263 31 "Consider the following example:" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "plus := proc(x,y)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 25 " local a, b; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " \+ global c;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 " a := x - y;" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 " b := x * y;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 " c := x ^ y;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 36 " x + y; # the return value" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 79 "Here x \+ and y are parameter variables, handed over when calling the procedure. \n" }{TEXT 205 90 "a and b are defined as local variable which are dis carded after return from the procedure." }}{PARA 0 "" 0 "" {TEXT 205 58 "c is defined as global and will be 'visible from outside'." }} {PARA 0 "" 0 "" {TEXT 205 91 "The expression before the end statement \+ defines the return value produced by the procedure." }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 33 "A call to the procedurelooks like" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "plus(3,4);" }{XPPEDIT 19 1 "" "%#%?G" }}} {EXCHG {PARA 0 "" 0 "" {TEXT 205 110 "We observe that x, y, a, b are u ndefined outside the procedure, but the global variable c =3^4=81 has \+ a value:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "x; y; a; b; c;" } {XPPEDIT 19 1 "" "%#%?G" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 139 "Sinc e the names of the parameter variable x and y are internal to the proc edure, they can have a different meaning in the external program:" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "x := 88; y := 99;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "plus(3,4);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 "x ; y;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 263 23 "Procedure calls can be " }{TEXT 216 6 "nested" }{TEXT 263 29 " within each and may even be " }{TEXT 217 10 "recursive." } {TEXT 263 1 "\n" }{TEXT 263 105 "A nice example for a recursive proced ure is the definition of the Fibonacci numbers which are defined by " }}{PARA 0 "" 0 "" {XPPEDIT 263 0 "Typesetting:-mrow(Typesetting:-mi(\" \"), Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(\"F\", italic = \"true\", mathvariant = \"italic\"), Typesetting:-mrow(Typesetting: -mn(\"1\", mathvariant = \"normal\")), subscriptshift = \"0\"), Typese tting:-mo(\"=\", mathvariant = \"normal\", fence = \"false\", separato r = \"false\", stretchy = \"false\", symmetric = \"false\", largeop = \+ \"false\", movablelimits = \"false\", accent = \"false\", lspace = \"0 .2777778em\", rspace = \"0.2777778em\"), Typesetting:-mn(\"1\", mathva riant = \"normal\")), Typesetting:-mi(\"\"));" "-I%mrowG6#/I+modulenam eG6\"I,TypesettingGI(_syslibGF'6%-I#miGF$6#Q!F'-F#6%-I%msubGF$6%-F,6%Q \"FF'/%'italicGQ%trueF'/%,mathvariantGQ'italicF'-F#6#-I#mnGF$6$Q\"1F'/ F;Q'normalF'/%/subscriptshiftGQ\"0F'-I#moGF$6-Q\"=F'FC/%&fenceGQ&false F'/%*separatorGFN/%)stretchyGFN/%*symmetricGFN/%(largeopGFN/%.movablel imitsGFN/%'accentGFN/%'lspaceGQ,0.2777778emF'/%'rspaceGFgnF?F+" }{TEXT 263 2 ", " }{XPPEDIT 263 0 "Typesetting:-mrow(Typesetting:-mi(\"\"), \+ Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(\"F\", italic = \" true\", mathvariant = \"italic\"), Typesetting:-mrow(Typesetting:-mn( \"2\", mathvariant = \"normal\")), subscriptshift = \"0\"), Typesettin g:-mo(\"=\", mathvariant = \"normal\", fence = \"false\", separator = \+ \"false\", stretchy = \"false\", symmetric = \"false\", largeop = \"fa lse\", movablelimits = \"false\", accent = \"false\", lspace = \"0.277 7778em\", rspace = \"0.2777778em\"), Typesetting:-mn(\"1\", mathvarian t = \"normal\")), Typesetting:-mi(\"\"));" "-I%mrowG6#/I+modulenameG6 \"I,TypesettingGI(_syslibGF'6%-I#miGF$6#Q!F'-F#6%-I%msubGF$6%-F,6%Q\"F F'/%'italicGQ%trueF'/%,mathvariantGQ'italicF'-F#6#-I#mnGF$6$Q\"2F'/F;Q 'normalF'/%/subscriptshiftGQ\"0F'-I#moGF$6-Q\"=F'FC/%&fenceGQ&falseF'/ %*separatorGFN/%)stretchyGFN/%*symmetricGFN/%(largeopGFN/%.movablelimi tsGFN/%'accentGFN/%'lspaceGQ,0.2777778emF'/%'rspaceGFgn-F@6$Q\"1F'FCF+ " }{TEXT 263 6 ", and " }{XPPEDIT 263 0 "Typesetting:-mrow(Typesetting :-mi(\"\"), Typesetting:-mrow(Typesetting:-msub(Typesetting:-mi(\"F\", italic = \"true\", mathvariant = \"italic\"), Typesetting:-mrow(Types etting:-mi(\"n\", italic = \"true\", mathvariant = \"italic\")), subsc riptshift = \"0\"), Typesetting:-mo(\"=\", mathvariant = \"normal\", f ence = \"false\", separator = \"false\", stretchy = \"false\", symmetr ic = \"false\", largeop = \"false\", movablelimits = \"false\", accent = \"false\", lspace = \"0.2777778em\", rspace = \"0.2777778em\"), Typ esetting:-mrow(Typesetting:-msub(Typesetting:-mi(\"F\", italic = \"tru e\", mathvariant = \"italic\"), Typesetting:-mrow(Typesetting:-mi(\"\" ), Typesetting:-mrow(Typesetting:-mi(\"n\", italic = \"true\", mathvar iant = \"italic\"), Typesetting:-mo(\"−\", mathvariant = \"norma l\", fence = \"false\", separator = \"false\", stretchy = \"false\", s ymmetric = \"false\", largeop = \"false\", movablelimits = \"false\", \+ accent = \"false\", lspace = \"0.2222222em\", rspace = \"0.2222222em\" ), Typesetting:-mn(\"1\", mathvariant = \"normal\")), Typesetting:-mi( \"\")), subscriptshift = \"0\"), Typesetting:-mo(\"+\", mathvariant = \+ \"normal\", fence = \"false\", separator = \"false\", stretchy = \"fal se\", symmetric = \"false\", largeop = \"false\", movablelimits = \"fa lse\", accent = \"false\", lspace = \"0.2222222em\", rspace = \"0.2222 222em\"), Typesetting:-msub(Typesetting:-mi(\"F\", italic = \"true\", \+ mathvariant = \"italic\"), Typesetting:-mrow(Typesetting:-mi(\"\"), Ty pesetting:-mrow(Typesetting:-mi(\"n\", italic = \"true\", mathvariant \+ = \"italic\"), Typesetting:-mo(\"−\", mathvariant = \"normal\", \+ fence = \"false\", separator = \"false\", stretchy = \"false\", symmet ric = \"false\", largeop = \"false\", movablelimits = \"false\", accen t = \"false\", lspace = \"0.2222222em\", rspace = \"0.2222222em\"), Ty pesetting:-mn(\"2\", mathvariant = \"normal\")), Typesetting:-mi(\"\") ), subscriptshift = \"0\")), Typesetting:-mi(\"\")), Typesetting:-mi( \"\"));" "-I%mrowG6#/I+modulenameG6\"I,TypesettingGI(_syslibGF'6%-I#mi GF$6#Q!F'-F#6&-I%msubGF$6%-F,6%Q\"FF'/%'italicGQ%trueF'/%,mathvariantG Q'italicF'-F#6#-F,6%Q\"nF'F7F:/%/subscriptshiftGQ\"0F'-I#moGF$6-Q\"=F' /F;Q'normalF'/%&fenceGQ&falseF'/%*separatorGFM/%)stretchyGFM/%*symmetr icGFM/%(largeopGFM/%.movablelimitsGFM/%'accentGFM/%'lspaceGQ,0.2777778 emF'/%'rspaceGFfn-F#6%-F26%F4-F#6%F+-F#6%F?-FF6-Q(−F'FIFKFNFPFRF TFVFX/FenQ,0.2222222emF'/FhnFeo-I#mnGF$6$Q\"1F'FIF+FB-FF6-Q\"+F'FIFKFN FPFRFTFVFXFdoFfo-F26%F4-F#6%F+-F#6%F?Fao-Fho6$Q\"2F'FIF+FBF+F+" }{TEXT 263 5 " for " }{XPPEDIT 263 0 "Typesetting:-mrow(Typesetting:-mi(\"n \", italic = \"true\", mathvariant = \"italic\"), Typesetting:-mo(\" \+ \", mathvariant = \"normal\", fence = \"false\", separator = \"false\" , stretchy = \"false\", symmetric = \"false\", largeop = \"false\", mo vablelimits = \"false\", accent = \"false\", lspace = \"0.0em\", rspac e = \"0.0em\"), Typesetting:-mo(\">\", mathvariant = \"normal\", fence = \"false\", separator = \"false\", stretchy = \"false\", symmetric = \"false\", largeop = \"false\", movablelimits = \"false\", accent = \+ \"false\", lspace = \"0.2777778em\", rspace = \"0.2777778em\"), Typese tting:-mn(\"2\", mathvariant = \"normal\"));" "-I%mrowG6#/I+modulename G6\"I,TypesettingGI(_syslibGF'6&-I#miGF$6%Q\"nF'/%'italicGQ%trueF'/%,m athvariantGQ'italicF'-I#moGF$6-Q\"~F'/F3Q'normalF'/%&fenceGQ&falseF'/% *separatorGF=/%)stretchyGF=/%*symmetricGF=/%(largeopGF=/%.movablelimit sGF=/%'accentGF=/%'lspaceGQ&0.0emF'/%'rspaceGFL-F66-Q\">F'F9F;F>F@FBFD FFFH/FKQ,0.2777778emF'/FNFS-I#mnGF$6$Q\"2F'F9" }{TEXT 263 2 ". " } {XPPEDIT 19 1 "Typesetting:-mrow(Typesetting:-mi(\"\"), Typesetting:-m space(height = \"0.0ex\", width = \"0.0em\", depth = \"0.0ex\", linebr eak = \"newline\"), Typesetting:-mi(\"Here\", italic = \"false\", math variant = \"normal\"), Typesetting:-mo(\" \", mathvariant = \"normal\" , fence = \"false\", separator = \"false\", stretchy = \"false\", symm etric = \"false\", largeop = \"false\", movablelimits = \"false\", acc ent = \"false\", lspace = \"0.0em\", rspace = \"0.0em\"), Typesetting: -mi(\"is\", italic = \"false\", mathvariant = \"normal\"), Typesetting :-mo(\" \", mathvariant = \"normal\", fence = \"false\", separator = \+ \"false\", stretchy = \"false\", symmetric = \"false\", largeop = \"fa lse\", movablelimits = \"false\", accent = \"false\", lspace = \"0.0em \", rspace = \"0.0em\"), Typesetting:-mi(\"a\", italic = \"false\", ma thvariant = \"normal\"), Typesetting:-mo(\" \", mathvariant = \"normal \", fence = \"false\", separator = \"false\", stretchy = \"false\", sy mmetric = \"false\", largeop = \"false\", movablelimits = \"false\", a ccent = \"false\", lspace = \"0.0em\", rspace = \"0.0em\"), Typesettin g:-mi(\"recursive\", italic = \"false\", mathvariant = \"normal\"), Ty pesetting:-mo(\" \", mathvariant = \"normal\", fence = \"false\", sepa rator = \"false\", stretchy = \"false\", symmetric = \"false\", largeo p = \"false\", movablelimits = \"false\", accent = \"false\", lspace = \"0.0em\", rspace = \"0.0em\"), Typesetting:-mi(\"procedure\", italic = \"false\", mathvariant = \"normal\"), Typesetting:-mo(\" \", mathva riant = \"normal\", fence = \"false\", separator = \"false\", stretchy = \"false\", symmetric = \"false\", largeop = \"false\", movablelimit s = \"false\", accent = \"false\", lspace = \"0.0em\", rspace = \"0.0e m\"), Typesetting:-mi(\"that\", italic = \"false\", mathvariant = \"no rmal\"), Typesetting:-mo(\" \", mathvariant = \"normal\", fence = \"fa lse\", separator = \"false\", stretchy = \"false\", symmetric = \"fals e\", largeop = \"false\", movablelimits = \"false\", accent = \"false \", lspace = \"0.0em\", rspace = \"0.0em\"), Typesetting:-mi(\"compute s\", italic = \"false\", mathvariant = \"normal\"), Typesetting:-mo(\" \", mathvariant = \"normal\", fence = \"false\", separator = \"false \", stretchy = \"false\", symmetric = \"false\", largeop = \"false\", \+ movablelimits = \"false\", accent = \"false\", lspace = \"0.0em\", rsp ace = \"0.0em\"), Typesetting:-mi(\"these\", italic = \"false\", mathv ariant = \"normal\"), Typesetting:-mo(\" \", mathvariant = \"normal\", fence = \"false\", separator = \"false\", stretchy = \"false\", symme tric = \"false\", largeop = \"false\", movablelimits = \"false\", acce nt = \"false\", lspace = \"0.0em\", rspace = \"0.0em\"), Typesetting:- mi(\"numbers\", italic = \"false\", mathvariant = \"normal\"), Typeset ting:-mo(\".\", mathvariant = \"normal\", fence = \"false\", separator = \"false\", stretchy = \"false\", symmetric = \"false\", largeop = \+ \"false\", movablelimits = \"false\", accent = \"false\", lspace = \"0 .0em\", rspace = \"0.0em\"));" "-I%mrowG6#/I+modulenameG6\"I,Typesetti ngGI(_syslibGF'66-I#miGF$6#Q!F'-I'mspaceGF$6&/%'heightGQ&0.0exF'/%&wid thGQ&0.0emF'/%&depthGF4/%*linebreakGQ(newlineF'-F,6%Q%HereF'/%'italicG Q&falseF'/%,mathvariantGQ'normalF'-I#moGF$6-Q\"~F'FC/%&fenceGFB/%*sepa ratorGFB/%)stretchyGFB/%*symmetricGFB/%(largeopGFB/%.movablelimitsGFB/ %'accentGFB/%'lspaceGQ&0.0emF'/%'rspaceGFZ-F,6%Q#isF'F@FCFF-F,6%Q\"aF' F@FCFF-F,6%Q*recursiveF'F@FCFF-F,6%Q*procedureF'F@FCFF-F,6%Q%thatF'F@F CFF-F,6%Q)computesF'F@FCFF-F,6%Q&theseF'F@FCFF-F,6%Q(numbersF'F@FC-FG6 -Q\".F'FCFJFLFNFPFRFTFVFXFen" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "Fib := proc(n::posint)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 17 " i f n = 1 then 1" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 " elif n = 2 then 1" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 26 " else Fib(n-1) + Fib(n-2)" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 " fi" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 59 "For example, the \+ following calculation takes quite a while." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 "Fib(30);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 173 "Act ually, this computation is extremely inefficient since during the eval uation sequence the same Fibonacci numbers have to be calculated from \+ scratch over and over again. \n" }{TEXT 205 141 "However, Maple can be used to write the results of previous calls to the function into a 'r emember table', i.e., a cache, using the command '" }{TEXT 218 15 "opt ion remember" }{TEXT 205 7 "' which" }}{PARA 0 "" 0 "" {TEXT 205 67 "d ramatically speeds up the calculation, at the cost of used memory." }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 22 "Fib := proc(n::posint)" }}{PARA 0 " > " 0 "" {MPLTEXT 1 0 18 " option remember;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 17 " if n = 1 then 1" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 19 " elif n = 2 then 1" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 26 " else F ib(n-1) + Fib(n-2)" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 " fi" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "Fib(1000);" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 40 "Note, tha t the procedure checks for the " }{TEXT 219 4 "type" }{TEXT 205 58 " o f the parameter variable using the type operator '::'. \n" }{TEXT 205 146 "Only positive integers (type posint) are accepted, otherwise an e rror message will be produced. A large number of other types is define d in Maple." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "Fib(100.);" }}}} {SECT 0 {PARA 4 "" 0 "" {TEXT 264 18 "Control structures" }}{PARA 0 "" 0 "" {TEXT 205 0 "" }}{PARA 0 "" 0 "" {TEXT 205 57 "Maple contains tw o classes of control structures, namely " }{TEXT 220 22 "repetition st atements " }{TEXT 205 4 "and " }{TEXT 221 23 "conditional statements " }{TEXT 205 71 "which are needed to write nontrivial programs.\nHere a re some examples.\n" }}{EXCHG {PARA 0 "" 0 "" {TEXT 222 21 "Repetition statements" }}{PARA 0 "" 0 "" {TEXT 223 13 "The for-loop " }{TEXT 205 52 "can be used to repeatedly execute the same command.\n" }} {PARA 0 "" 0 "" {TEXT 263 44 "The syntax for a basic for-loop in Maple is " }}{PARA 0 "" 0 "" {TEXT 263 0 "" }}{PARA 0 "" 0 "" {TEXT 263 25 " " }{TEXT 0 3 "for" }{TEXT 263 2 " " }{TEXT 224 15 "index_variable " }{TEXT 263 1 " " }{TEXT 0 4 "from" }{TEXT 263 2 " " }{TEXT 225 13 "initial_value" }{TEXT 263 2 " " }{TEXT 0 2 "to" }{TEXT 226 1 " " }{TEXT 263 1 " " }{TEXT 227 11 "final_value" } {TEXT 263 2 " " }{TEXT 0 2 "by" }{TEXT 263 1 " " }{TEXT 228 9 "step_s ize" }{TEXT 263 1 " " }{TEXT 0 2 "do" }}{PARA 0 "" 0 "" {TEXT 263 30 " " }{TEXT 229 26 "sequence_of_Maple_comma nds" }}{PARA 0 "" 0 "" {TEXT 263 24 " " }{TEXT 230 1 " " }{TEXT 0 2 "od" }{TEXT 231 1 ";" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 59 "For example, we can write out a table of squares and cub es:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 37 "for i from 0 to 5 do i, 2^i, 3^i; od;" }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 33 " The commands to be executed (the " }{TEXT 232 22 "'body of the for-loo p'" }{TEXT 205 40 ") are positioned between the statements " }{TEXT 233 4 " do " }{TEXT 205 6 " and " }{TEXT 234 4 "od; " }{TEXT 205 37 " (the reverse of do, you can also use " }{TEXT 235 8 "end do; " }{TEXT 205 29 "which may look more familiar)" }{TEXT 236 2 "; " }{TEXT 205 154 "Of course the loop can be written in better readable form by spli tting it over several lines (which, of course, have to be in the same \+ execution group).:\n" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 45 "for i from 0 to 5 do \n i, 2^i, 3^i; \nend do;" }{MPLTEXT 1 0 0 "" }}} {EXCHG {PARA 0 "" 0 "" {TEXT 205 37 "Counting backward works equally w ell:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "for i from 5 to 0 by -1 do \+ i, 2^i, 3^i; od;" }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 126 "Notice that the output of the whole loop is controlled by the last character (semicolon for full output, colon for no output):" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 43 "for i from 5 to 0 by -1 do i, 2^i, \+ 3^i; od:" }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 75 "T o produce output despite the colon, the print( ) command can be used, \+ like" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 50 "for i from 5 to 0 by -1 do \+ print(i, 2^i, 3^i); od:" }{MPLTEXT 1 0 0 "" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 263 4 "The " }{TEXT 237 11 "while-loop " }{TEXT 263 38 "is anoth er form ofrepetition statement" }{TEXT 263 30 ". It has the following \+ syntax." }}{PARA 0 "" 0 "" {TEXT 263 0 "" }}{PARA 0 "" 0 "" {TEXT 263 23 " " }{TEXT 0 5 "while" }{TEXT 263 1 " " } {TEXT 238 18 "boolean_expression" }{TEXT 263 1 " " }{TEXT 0 2 "do" } {TEXT 263 1 " " }{TEXT 239 26 "sequence_of_Maple_commands" }{TEXT 263 1 " " }{TEXT 0 2 "od" }}{PARA 0 "" 0 "" {TEXT 263 0 "" }}{PARA 0 "" 0 "" {TEXT 205 182 "which is repeated as long as the boolean expression \+ is true.\nThis is a versatile construction, which, e.g., could be used to construct a for-loop (which ouf course is not necessary):" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 48 "i := 0: # The variable i ha s to be initialized!" }{MPLTEXT 1 0 0 "" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 "while i <= 5 do " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 22 " prin t(i, 2^i, 3^i);" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 12 " i := i+1;" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 202 "If the number of necessary executions is not known in advanc e, the while loop has to be used. \nAs an example, one might wish to d etermine which is the smallest prime number larger than a given number n?" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "n := 1000:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 36 "while not isprime(n) do n := n+1 od:" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 2 "n;" }}}{PARA 0 "" 0 "" {TEXT 263 0 " " }}{EXCHG {PARA 0 "" 0 "" {TEXT 205 11 "Example for" }{TEXT 240 13 " \+ nested loops" }{TEXT 205 51 ": Count how many prime numbers there are \+ less than " }{XPPEDIT 2 0 "Typesetting:-mrow(Typesetting:-msup(Typeset ting:-mn(\"2\", mathvariant = \"normal\"), Typesetting:-mi(\"i\", ital ic = \"true\", mathvariant = \"italic\"), superscriptshift = \"0\"));" "-I%mrowG6#/I+modulenameG6\"I,TypesettingGI(_syslibGF'6#-I%msupGF$6%- I#mnGF$6$Q\"2F'/%,mathvariantGQ'normalF'-I#miGF$6%Q\"iF'/%'italicGQ%tr ueF'/F3Q'italicF'/%1superscriptshiftGQ\"0F'" }{TEXT 205 10 " for each " }{XPPEDIT 2 0 "Typesetting:-mrow(Typesetting:-mi(\"i\", italic = \"t rue\", mathvariant = \"italic\"));" "-I%mrowG6#/I+modulenameG6\"I,Type settingGI(_syslibGF'6#-I#miGF$6%Q\"iF'/%'italicGQ%trueF'/%,mathvariant GQ'italicF'" }{TEXT 205 137 " from 2 to 18. The outer for-loop increme nts i from 2 to 18 and it contains two commands in the body of the loo p, another for-loop and a " }{TEXT 0 5 "print" }{TEXT 205 70 " command . The inner for-loop counts how many primes there are between " }{TEXT 0 7 "2^(i-1)" }{TEXT 205 5 " and " }{TEXT 0 3 "2^i" }{TEXT 205 187 " \+ (notice how the index variable from the outer loop is used to set the \+ initial and final values for the index variable in the inner loop). Wh en the inner loop completes its iterates, the " }{TEXT 0 5 "print" } {TEXT 205 80 " command in the outer loop prints out the running total \+ of primes found so far. " }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "counter := 1:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 21 "for i from 2 to 1 8 do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 41 " for j from 2^(i-1)+1 to ( 2^i)-1 by 2 do" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 46 " if isprime(j) then counter := counter+1 fi" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " o d;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 49 " print( '2^i'=2^i, `number o f primes`=counter );" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od:" }} {PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"\"%/I1number~of~prime sGF'F%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"\")/I1numbe r~of~primesGF'\"\"%" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\" \"#;/I1number~of~primesGF'\"\"'" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/) \"\"#I\"iG6\"\"#K/I1number~of~primesGF'\"#6" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"#k/I1number~of~primesGF'\"#=" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"$G\"/I1number~of~primesGF' \"#J" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"$c#/I1number~ of~primesGF'\"#a" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"$ 7&/I1number~of~primesGF'\"#(*" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\" \"#I\"iG6\"\"%C5/I1number~of~primesGF'\"$s\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"%[?/I1number~of~primesGF'\"$4$" }} {PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"%'4%/I1number~of~prim esGF'\"$k&" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"%#>)/I1 number~of~primesGF'\"%G5" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\" iG6\"\"&%Q;/I1number~of~primesGF'\"%+>" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"&oF$/I1number~of~primesGF'\"%7N" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"&Ob'/I1number~of~primesGF'\"%Ul" }} {PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"'s58/I1number~of~prim esGF'\"&^A\"" }}{PARA 11 "" 1 "" {XPPMATH 20 "6$/)\"\"#I\"iG6\"\"'W@E/ I1number~of~primesGF'\"&+I#" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 241 22 "C onditional statements" }}{PARA 0 "" 0 "" {TEXT 263 129 "The conditiona l statement allows Maple to make a choice when it is computing. A cond itional statement is also sometimes called a " }{TEXT 242 19 "branchin g statement" }{TEXT 263 137 " since it gives Maple a choice between tw o possible branches of calculations to make. Here is Maple's syntax fo r a conditional statement." }}{PARA 0 "" 0 "" {TEXT 263 24 " \+ " }{TEXT 0 2 "if" }{TEXT 263 2 " " }{TEXT 243 18 "boole an_expression" }{TEXT 263 1 " " }{TEXT 0 4 "then" }{TEXT 263 1 " " }} {PARA 0 "" 0 "" {TEXT 263 30 " " }{TEXT 244 26 "sequence_of_Maple_commands" }}{PARA 0 "" 0 "" {TEXT 263 24 " \+ " }{TEXT 0 4 "else" }}{PARA 0 "" 0 "" {TEXT 263 30 " " }{TEXT 245 26 "sequence_of_Maple_c ommands" }}{PARA 0 "" 0 "" {TEXT 263 24 " " } {TEXT 0 2 "fi" }}{PARA 0 "" 0 "" {TEXT 263 37 "The boolean expression \+ is called the " }{TEXT 246 16 "conditional-part" }{TEXT 263 113 " and \+ it is either true or false. If the conditional-part is true, then Mapl e executes the statements between the " }{TEXT 0 4 "then" }{TEXT 263 9 " and the " }{TEXT 0 4 "else" }{TEXT 263 34 ". These statements are \+ called the " }{TEXT 247 21 "body of the then-part" }{TEXT 263 87 ". If the conditional-part is false, then the Maple executes the statements between the " }{TEXT 0 4 "else" }{TEXT 263 9 " and the " }{TEXT 0 2 " fi" }{TEXT 263 34 ". These statements are called the " }{TEXT 248 21 " body of the else-part" }{TEXT 263 153 ". The body of the else-part is \+ optional and if it is left off, then the conditional statement has the following simpler form, which is referred to as an " }{TEXT 249 12 "i f-statement" }{TEXT 263 1 "." }}{PARA 0 "" 0 "" {TEXT 263 24 " \+ " }{TEXT 0 2 "if" }{TEXT 263 2 " " }{TEXT 250 18 "boo lean_expression" }{TEXT 263 1 " " }{TEXT 0 4 "then" }{TEXT 263 1 " " } }{PARA 0 "" 0 "" {TEXT 263 29 " " }{TEXT 251 28 "sequence_of_Maple_statements" }}{PARA 0 "" 0 "" {TEXT 263 5 " \+ " }{TEXT 252 19 " " }{TEXT 0 2 "fi" }}{PARA 0 "" 0 "" {TEXT 263 80 "If the conditional-part of an if-statement is fals e then the command is skipped." }}{PARA 0 "" 0 "" {TEXT 205 0 "" }}} {EXCHG {PARA 0 "" 0 "" {TEXT 205 126 "Example: Generate a long list of random integers between 1 and 10 and check what percentage of the ra ndom integers were 10's." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "N := 10 00:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 13 "counter := 0:" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 29 "seq( rand(1..10)(), i=1..N ):" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 32 "for i in % do # Check for 10's." }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 40 " if i = 10 then counter := counter+1 fi" }} {PARA 0 "> " 0 "" {MPLTEXT 1 0 3 "od;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 10 "counter/N;" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 11 "evalf(%,5);" }} {PARA 11 "" 1 "" {XPPMATH 20 "#\"#F\"$]#" }}{PARA 11 "" 1 "" {XPPMATH 20 "$\"&+3\"!\"&" }}}{EXCHG {PARA 0 "" 0 "" {TEXT 205 110 "Conditional statements are almost always used in the body of a procedure definiti on or in the body of a loop.\n" }{TEXT 205 80 "The next example finds \+ the largest of three numbers. It demonstrates the use of " }{TEXT 253 29 "nested conditional statements" }{TEXT 205 2 ". " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 26 "bigger3 := proc( a, b, c )" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 17 " if a >= b then " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 32 " if a >= c then a else b fi; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 8 " else " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 32 " if b >= c then b else c fi; " }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " fi;" }}{PARA 0 " > " 0 "" {MPLTEXT 1 0 4 "end;" }}{PARA 11 "" 1 "" {XPPMATH 20 "f*6%I\" aG6\"I\"bGF%I\"cGF%F%F%F%@%19%9$@%19&F+F+F*@%1F.F*F*F.F%F%F%" }}} {EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 15 "bigger3(2,6,3);" }}{PARA 11 "" 1 "" {XPPMATH 20 "\"\"'" }}}{EXCHG {PARA 0 "> " 0 "" {XPPEDIT 19 1 "" "%#%?G" }}}{PARA 0 "" 0 "" {TEXT 263 0 "" }}{EXCHG {PARA 0 "" 0 "" {TEXT 205 46 "A variant of the conditional statement is the " }{TEXT 254 25 "if-then-elif-then-else-fi" }{TEXT 205 16 " statement where" } {TEXT 255 6 " elif " }{TEXT 205 40 "comes from elseif. There can be as many " }{TEXT 256 9 "elif-then" }{TEXT 205 25 " as one needs. \nExamp le: " }{TEXT 257 1 "A" }{TEXT 205 1 " " }{TEXT 258 27 "piecewise defin ed function " }{TEXT 205 122 "with four pieces in its definition, defi ned by using two elif-then clauses (in a single if-then-elif-then-else statement)." }{TEXT 205 0 "" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 14 "h := proc( x )" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 16 " if x <= 1 then" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 5 " x" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " elif x <= 2 then" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 7 " x^2" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 18 " elif x <= 3 then" } }{PARA 0 "> " 0 "" {MPLTEXT 1 0 7 " 6-x" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 6 " else" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 14 " x^2-6 *x+12" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 " fi" }}{PARA 0 "> " 0 "" {MPLTEXT 1 0 4 "end;" }}{PARA 11 "" 1 "" {XPPMATH 20 "f*6#I\"xG6\"F%F% F%@)19$\"\"\"F(1F(\"\"#*$F(F+1F(\"\"$,&\"\"'F)F(!\"\",(F,F)F(!\"'\"#7F )F%F%F%" }}}{EXCHG {PARA 0 "> " 0 "" {MPLTEXT 1 0 17 "plot( h, -1..5 ) ;" }{MPLTEXT 1 0 0 "" }}{PARA 13 "" 1 "" {TEXT 265 0 "" }{GLPLOT2D 400 400 400 {PLOTDATA 2 "6%-%'CURVESG6$7Y7$$!#5!\"\"$!#5!\"\"7$$!*vq@p)! \"*$!*vq@p)!\"*7$$!,D^NUb(!#6$!,D^NUb(!#67$$!+D$3XF'!#5$!+D$3XF'!#57$$ !2'*****\\F)H')\\!#<$!2'*****\\F)H')\\!#<7$$!2.++D'3@/P!#<$!2.++D'3@/P !#<7$$!2/++Dr^b^#!#<$!2/++Dr^b^#!#<7$$!2/++D,kZG\"!#<$!2/++D,kZG\"!#<7 $$!1')****\\7;)=\"!#=$!1')****\\7;)=\"!#=7$$\"2(****\\P'=pD\"!#<$\"2(* ***\\P'=pD\"!#<7$$\"1,++]c.iD!#;$\"1,++]c.iD!#;7$$\"+DMe6P!#5$\"+DMe6P !#57$$\"1,++]>q0]!#;$\"1,++]>q0]!#;7$$\"*DM^I'!\"*$\"*DM^I'!\"*7$$\"1, ++]!ytb(!#;$\"1,++]!ytb(!#;7$$\",vQNXp)!#6$\",vQNXp)!#67$$\"-v=/jq$*!# 7$\"-v=/jq$*!#77$$\"+XDn/5!\"*$\"2sxwE#pO45!#;7$$\",DmY>1\"!#5$\"1*)[* RrIx7\"!#:7$$\"*y?#>6!\")$\"2&3QQa^l_7!#;7$$\"-v3wY_7!#6$\"2H%z'46v'o: !#;7$$\"2)******HOTq8!#;$\"2kx*G)*\\\"!#;$\"1X;( *etX\\A!#:7$$\"2-+]isVIi\"!#;$\"2b[>t$4FME!#;7$$\"2-++vo:;v\"!#;$\"1)4 'p;v:oI!#:7$$\"2-+]P)[op=!#;$\"1_K_k:s&\\$!#:7$$\".DJnhL$>!#7$\"2%*p3 \"ft)yt$!#;7$$\",DYQq*>!#5$\"1kVq?E;))R!#:7$$\".D1v!=j?!#7$\".v$\\#>o$ R!#77$$\"-vQIKH@!#6$\"-DhpnqQ!#67$$\"-D^rZWA!#6$\"-v[G_bP!#67$$\",vuY) oB!#5$\",DD`6j$!#57$$\"*rKt\\#!\")$\"*HnE]$!\")7$$\",v:JIi#!#5$\",D%)o pP$!#57$$\"-vo3lWF!#6$\"-DJ\"\\`D$!#67$$\",D#))ozG!#5$\",v<6.7$!#57$$ \"-DEwNSH!#6$\"-vtBkfI!#67$$\"2'******Hk-,I!#;$\"2`aeN0,++$!#;7$$\",vK .e1$!#5$\"1r+\"z2IV+$!#:7$$\"+D-eIJ!\"*$\"2'[5;&>^q,$!#;7$$\"2(***\\(= _(zC$!#;$\"069\"4<\\hI!#97$$\"2.++]&*=jP$!#;$\"1$H#*e&fhTJ!#:7$$\"2'** *\\(3/3(\\$!#;$\"2l1jF$*)3ZK!#;7$$\"-vB4JBO!#6$\"1\"3mw];&)Q$!#:7$$\"2 (*****\\KCnu$!#;$\"2PqYv@(fdN!#;7$$\"2(***\\(=n#f(Q!#;$\"1T,i;wCnP!#:7 $$\"*)RO+S!\")$\"1Q9[#4G2+%!#:7$$\",D0>w7%!#5$\"2v*4cFZ_rU!#;7$$\"-v)Q ?QD%!#6$\"/_Cnb1sX!#87$$\"*J'ypV!\")$\"1=M1NXJw[!#:7$$\",DM'p-X!#5$\"1 zGw(H'4e_!#:7$$\"*ms:i%!\")$\"1w%f;*y\\Hc!#:7$$\"-v3'>$[Z!#6$\"1b(RVX@ m0'!#:7$$\"-D6Ejp[!#6$\"1'\\\\55Eb\\'!#:7$$\"#]!\"\"$\"#q!\"\"-%&COLOR G6&%$RGBG$\"#5!\"\"$\"\"!!\"\"$\"\"!!\"\"-%%VIEWG6$;$!#5!\"\"$\"#]!\" \"%(DEFAULTG-%+AXESLABELSG6'Q!6\"Q!6\"-%%FONTG6%%(DEFAULTG%(DEFAULTG\" #5%+HORIZONTALG%+HORIZONTALG" 1 2 2 1 10 1 2 6 0 4 2 1.0 45.0 45.0 0 0 "Curve 1" }}{TEXT 265 0 "" }}}}}} {MARK "0 0 0" 0 }{VIEWOPTS 1 1 0 1 1 1803 1 1 1 1 }{PAGENUMBERS 0 1 2 33 1 1 }