/* wxMaxima 0.7.2 http://wxmaxima.sourceforge.net
Maxima 5.12.0 http://maxima.sourceforge.net
Using Lisp GNU Common Lisp (GCL) GCL 2.6.8 (aka GCL)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.

/*
Curso "Maxima Para Exatas" - 2a Aula parte 1, 04/06/2007

/*
Programação estruturada com "if" e "for" :

/*
A tão conhecida estrutura de programação "if/then/else" ("se/então/senão") para
teste condicional é também presente no Maxima, aqui usada na definição de uma
função "f(x)" que se comporta como módulo de um número :

(%i1) f(x):=if x>0 then x else -x;

Result

(%i2) f(2);

Result

(%i3) f(-2);

Result

(%i4) wxplot2d([f(x)], [x,-5,5])$

Result

/*
Pode-se usar vários testes condicionais dentro do "if", inclusive com operadores
lógicos "and", "or" e "not". Vide maiores detalhes no help da função "if". Aqui
usamos "if" para definir uma função "g(x)" por partes :

(%i5) g(x):=if x>0 and x<1 then 1 else x;

Result

(%i6) g(0.5);

Result

(%i7) g(1.5);

Result

(%i8) g(-1.5);

Result

(%i9) wxplot2d([g(x)], [x,-1,2])$

Result

/*
A estrutura de programação para repetições (iterações) "for/do" é muito versátil
no Maxima, vide help de "do" para maiores detalhes. Note que :
- aqui usamos a forma "for/step/thru/do";
- a variável de iteração "i" é considerada local, não conflitando com uma eventual
variável global "i" (se "i" existir globalmente, seu valor original é restaurado
ao final do "for/do");
- a variável local "i" varia de 1 até 6, com passo (opcional) 1, executando o corpo
do programa após o "do", que aqui é simplesmente imprimir o valor de "i" ao quadrado;
- o valor retornado por "for/do" é "done" a menos que se use "return".

(%i10) for i:1 step 1 thru 6 do print(i^2);

Result

/*
Se "step" for omitido, é assumido o valor default 1 para incremento da variável de
iteração.

(%i11) for i:1 thru 6 do print(i^2);

Result

/*
Aqui "step" é 0.5, logo não pode ser omitido.

(%i12) for i:1 thru 6 step 0.5 do print(i^2);

Result

(%i13)


Created with wxMaxima.