Você está na página 1de 84

E-studo: sistemas de ensino com gerao

automtica de exerccios
Jos Joo Almeida, Gueorgui Smirnov, Irene Brito,
Rui Pereira, Gaspar Machado, Isabel Arajo & Cia
21 de Maio de 2013

ii

Contedo
1 Introduo

2 Gerao de exerccios
2.1 Primeiros exemplos: comandos bsicos de PASSAROLA
2.2 Utilizao de Perl . . . . . . . . . . . . . . . . . . . . . .
2.3 Grfica . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.4 Organizao de dados: tabelas e ficheiros . . . . . . . . .
2.5 Exerccios de escolha mltipla . . . . . . . . . . . . . . .
2.6 Funes . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.7 Criao de fichas de trabalho, testes e sebentas . . . . . .

.
.
.
.
.
.
.

5
5
19
25
43
46
46
46

3 Exemplos mais complexos


3.1 Matemtica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2 Msica, ABC, pdf com anexos . . . . . . . . . . . . . . . . . . . .

55
55
55

4 Verificao automtica de exerccios

57

5 Sistemas de ensino

59

6 Anexo C: Maxima

75

iii

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

iv

CONTEDO

Captulo 1
Introduo
Sem nunca renegar o uso de papel e lpis, o ensino vem recorrendo a uma progressiva utilizao das mais diversas ferramentas ligadas a Tecnologias da Informao. Assim, torna-se necessrio o desenvolvimento de mecanismos que motivem
o aluno, estimulem a sua curiosidade e autonomia e tambm potencializem o
sucesso escolar.
As relaes entre a Tecnologia da Informao e o ensino autoregulado tm
sido, em diversos campos, alvo de estudo e h relatos de uma grande variedade
de casos bem sucedidos [4].
A gerao e apresentao de problemas est omnipresente na educao ou
processos de ensino, quer numa abordagem objetivista quer construtivista, quer
se recorra a treino, quer a tutoria, quer se use a Internet quer se use papel e
lpis, havendo em todas as situaes a necessidade de um mtodo para selecionar
e gerar exerccios e problemas para o aluno ([3], p. 237).
O Ensino Assistido por Computador (EAC), surgiu nos finais da dcada de 60,
como uma sequncia de problemas apresentados aos alunos, receo de respostas e
avaliao do desempenho daqueles. Contudo, depressa se percebeu a necessidade
de criar ferramentas mais poderosas para gerar e adaptar exerccios, surgindo
como natural o uso de tcnicas de inteligncia artificial ([3], p. 238).
Os trabalhos prvios de Koffman na gerao de problemas (citados em [3],
p. 238) mostram algumas caractersticas normalmente encontradas em sistemas
posteriores, tais como a seleo de um domnio formal, o uso de gramticas formais
ou a necessidade de mecanismos adicionais com o objetivo de controlar as frases
geradas pela gramtica. Este incio promissor no foi seguido por uma enchente
de sistemas geradores em EAC ou Sistemas Tutoriais Inteligentes (STI), visto
que, segundo os autores, com a tecnologia da poca o uso de tais programas no
era apelativo nem economicamente vivel.
1

CAPTULO 1. INTRODUO

Com a evoluo tecnolgica e desenvolvimento da Informtica, assistiu-se a


uma mudana da situao e, por exemplo, Rewitzky ([8]) defende que um sistema de gerao automtica de questes e testes permite, no s que os alunos
dominem os vrios assuntos em estudo, mas tambm a criao de testes diferentes
para cada aluno, evitando, dessa forma, a cpia de respostas pelos alunos. Mais
ainda, permite uma correo e anlise rica dos testes e exames, providenciando
aos avaliadores, no s uma economia de tempo, mas tambm uma leitura do
respetivo percurso/perfil de resoluo, permitindo evidenciar as matrias em que
os alunos tenham maior dificuldade.
O desenvolvimento de sistemas de gerao automtica de exerccios e sistemas
de ensino assistido por computador, tornou-se um campo de grande atividade quer
no mundo [1, 2, 3, 4, 8, 9], quer em Portugal [5, 6, 7, 10, 11, 12, 13, 14].
Este livro tem como objetivo descrever a linguagem de programao PASSAROLA (nome inspirado na obra Memorial do Convento, de Jos Saramago), orientada para a criao de sistemas de ensino com gerao automtica de exerccios,
que permite a construo de exames completos (incluindo resoluo detalhada e
possibilidade de avaliao). Enquanto que a maioria dos ambientes de e-learning
se baseia na gerao de questes de escolha mltipla, a PASSAROLA permite
a criao de exerccios mais complexos dos mais diversos domnios (como, por
exemplo, Msica, Matemtica, Fsica, Geografia, entre outros), recorrendo praticamente a qualquer tipo de objeto (como grficos, sons, cdigo-fonte, partituras,
etc.). PASSAROLA um sistema de transformao baseado numa metodologia
universal (programao dinmica) que permite a reutilizao de sub-problemas
previamente programados, sendo de utilizao livre e gratuita, fcil de utilizar e
com um grande alcance de aplicaes.
Tentmos escrever o livro de uma maneira informal para facilitar a sua leitura.
Os exemplos apresentados correspondem a exercicios implementados com este
sistema, inclundo o enunciado, formulado de um modo que o aluno se concentre
apenas no essencial, podendo, ainda, incluir uma resoluo detalhada e uma
verificao que permite ao aluno identificar possveis erros na sua resoluo, caso
a resposta dada no esteja correta.
Para explicar o essencial do processo de gerao automtica de exerccios,
consideremos um exemplo. preciso fazer o enunciado seguinte:
Exerccio 1.0.1 Resolva a equao quadrtica
ax2 + bx + c = 0.

3
Claro que se encontram, pela frmula resolvente, as razes da equao:

b b2 4ac
x1,2 =
.
2a
Mas como gerar o exerccio? Escolhendo os coeficientes a, b e c, podemos, com
grande probabilidade, obter uma equao com razes irracionais ou complexas,
o que torna o exerccio desadequado, por exemplo, a alunos do ensino bsico.
Normalmente, pretende-se um enunciado que garante a existncia de razes racionais: 1, 2, 3/2, etc.. Neste caso, convm seguir o seguinte esquema de
gerao. Definamos as razes x1 e x2 , o coeficiente a e calculemos os coeficientes
b e c utilizando o Teorema de Vite:
a(x x1 )(x x2 ) = ax2 a(x1 + x2 )x + ax1 x2 = ax2 + bx + c = 0,
i.e., lgico gerar o enunciado a partir da soluo, se pretendemos criar um
exerccio bonito.
Determinando o discriminante D = b2 4ac, tambm geramos a soluo do
exerccio. De um modo geral, a resoluo de um exerccio (no necessariamente
matemtico) pode ser, esquematicamente, representada como aplicao sucessiva
de operadores (passos lgicos) Ak ao vetor de dados iniciais que descreve o
enunciado do exerccio. O resultado intermdio sucessivo xk = Ak xk1 obtido do anterior. Deste modo, o esquema de resoluo de um exerccio pode ser
representado assim:
x0 x1 = A1 x0 xk+1 = Ak+1 xk xn = An xn1 .
Se o operador Ak invertvel, podemos reconstruir xk1 a partir de xk . A
gerao de um exerccio no tem de comear obrigatoriamente da sua soluo xn .
Normalmente, comea de um passo intermdio k. A nica condio necessria de
escolha do passo k por onde se deve comear, a invertibilidade dos operadores
A1 , . . . , Ak+1 . O esquema geral de gerao de um exerccio pode ser representado
na forma:
x0 x1 = A1 x0 xk+1 = Ak+1 xk xn = An xn1 .
Neste processo, o caminho para o enunciado/resoluo uma sequnca fixa
de operadores. A variao obtida apenas pelo sorteio do vetor intermdio. Uma
situao ainda mais interessante pode ser obtida atravs da variao (aleatria)
da lgica do exerccio (isto , da sequncia de operadores).

CAPTULO 1. INTRODUO

Na sua atividade cientfica os investigadores raramente resolvem um problema


j formulado, consistindo o trabalho de investigao na procura de um enunciado.
A elaborao de esquemas de gerao de exerccios muito parecida com o trabalho de dia-a-dia de todos os cientistas, o que relaciona diretamente o processo
de gerao de exerccios com o essencial da cincia.
Associado ao processo de criao de exerccios, tem surgido uma srie de
estudos que apontam para a presena de uma nova rea cientfica que tem um
paralelo com os problemas inversos da Fsica Matemtica.
A escrita de ferramentas e linguagens de programao especficas para gerao
de exerccios, pela sua especificidade, precisa de uma semntica com uma slida
base matemtica formulada em termos de gramticas generativas.
A rea da gerao de exerccios tem levantado um conjunto de desafios cientificamente relevantes. uma rea com enorme carncia de formalizao e de
modelao lgica e matemtica. As naturais estruturas algbricas so bem visveis na estruturao de exerccios. H conjuntos de exerccios que formam um
grupo relativamente operao de composio. Por exemplo, a resoluo de uma
equao diferencial envolve primitivao, derivao e primitivao so operaes
inversas, etc. Estas observaes permitem-nos falar de lgebra de exerccios.
Todos sabem que por trs de sistemas de clculo analtico tais como Maple e
Mathematica esto estudos profundos de Matemtica, ligados Teoria de Gramticas e lgebra. Na resoluo dos problemas inversos a situao parecida
mas ainda no estudada. Por exemplo, de todas as disciplinas matemticas a
Geometria do Plano historicamente das reas mais formalizadas. Mas, uma
questo to simples como Dado um quadriltero inscrito numa circunferncia,
que exerccios possvel formular acerca desta figura?, no nada trivial. preciso desenvolver tcnicas de gerao de famlias de exerccios que tm um ncleo
dado.
de notar que mesmo os exerccios de outros domnios (por exemplo, da
Biologia ou da Histria) tm estrutura matemtica e a sua gerao envolve mecanismos lgicos/algbricos. Dada a maior distncia lgica, importante a criao
de exerccios modelo para diversas reas, pois estes dinamizam o aparecimento
de novos exerccios e novas colaboraes.

Captulo 2
Gerao de exerccios
2.1

Primeiros exemplos: comandos bsicos de PASSAROLA

Consideremos o exemplo seguinte:

#title: C, , S ou SS
#author: Ea de Queirs

#let:

s L1 = [ coin\_idir, de\_idir, con\_eder, al\_ar, ca\_ar, can\_o, pre\_o,


ascen\_o, cansa\_o, can\_ao, ten\_o, inten\_o, a\_ar,
a\_altar, bel\_imo, a\_assino, assa\_ino ];

5
6

7
8
9

s L2 = [ coincidir, decidir, conceder, alar, caar, cano, preo,


ascenso, cansao, cansao, tenso, inteno, assar,
assaltar, belssimo, assassino, assassino ];

10

L1~L2;

11

#question:

12
13

\noindent Complete a palavra com {\em c, , s} ou {\em ss}:


#L1.

14

#resolution:

15

CAPTULO 2. GERAO DE EXERCCIOS

\noindent #L2

Este programa escrito em linguagem PASSAROLA gera o exerccio seguinte:

C, , S ou SS
Ea de Queirs
21 de Maio de 2013

Enunciado
Complete a palavra com c, , s ou ss: inten_o.

Resolution
inteno

Random choices
L2 |
L1 |

inteno | inteno
inten\_o | inten\_o

O ficheiro que contm a estrutura do exerccio composto por vrios campos


assinalados com #:
1

#title:

#author:

#let:

#question:

#sugestion:

#resolution:

2.1. PRIMEIROS EXEMPLOS: COMANDOS BSICOS DE PASSAROLA 7


e alguns outros que vamos conhecer nas prximas seces. O significado de todos
os campos, excluindo #let, no precisa de comentrios. Nestes campos, utilizando
LaTeX, escreve-se o respetivo texto. Alguns smbolos em LaTeX so especiais e
a sua representao faz-se atravs dos comandos desta linguagem. Por exemplo,
o smbolo sublinhar escreve-se como
1

\_

A expresso
1

inten_ao

vai causar um erro de LaTeX. O comando de LaTeX


1

\noindent

significa que o texto tem de comear na primeira posio (veja o anexo LaTeX).
Notemos, ainda, que o operador
#L1

diz o seguinte: necessrio escolher aleatoriamente uma palavra ou frase L2, objeto cujo tipo s (string), da lista de 17 elementos indicados entre os parnteses
retos. Depois, no resto do programa o compilador substitui o smbolo #L2 pelo
valor escolhido. No caso considerado foi escolhido e posteriormente substitudo o
valor inteno.
Um dos operadores mais importantes do PASSAROLA o
1

Este operador estabelece ligao parentesca entre vrias listas de dados. Por
exemplo, o comando
1

L1~L2~L3;

significa que se da lista L1 se escolhe o elemento nmero 5, das duas outras listas
ser escolhido o elemento que est no lugar nmero 5.
possvel selecionar vrios elementos da lista. Vejamos este exemplo.
1

#title: C, , S ou SS

#author: Joo Baptista da Silva Leito

CAPTULO 2. GERAO DE EXERCCIOS

#let:

s L1[4] = [ coin\_idir, de\_idir, con\_eder, al\_ar, ca\_ar, can\_o, pre\_o,


ascen\_o, cansa\_o, can\_ao, ten\_o, inten\_o, a\_ar,
a\_altar, bel\_imo, a\_assino, assa\_ino ];

5
6

7
8
9

s L2[4] = [ coincidir, decidir, conceder, alar, caar, cano, preo,


ascenso, cansao, cansao, tenso, inteno, assar,
assaltar, belssimo, assassino, assassino ];

10

L1~L2;

11

\noindent Complete a palavra com {\em c, , s} ou {\em ss}:


\begin{enumerate}
\item #L1[0]
\item #L1[1]
\item #L1[2]
\item #L1[3]
\end{enumerate}

12
13
14
15
16
17

18
19
20
21
22
23
24

\noindent
\begin{enumerate}
\item #L2[0]
\item #L2[1]
\item #L2[2]
\item #L2[3]
\end{enumerate}

Consulte o anexo LaTeX para saber como fazer listas do tipo

1
2
3
4
5

\begin{enumerate}
\item
\item
\item
\end{enumerate}

Este programa gera o exerccio seguinte:

2.1. PRIMEIROS EXEMPLOS: COMANDOS BSICOS DE PASSAROLA 9

C, , S ou SS
Joo Baptista da Silva Leito
21 de Maio de 2013

Enunciado
Complete a palavra com c, , s ou ss:
1. a_ar
2. a_altar
3. can_ao
4. coin_idir

Resolution
1. assar
2. assaltar
3. cansao
4. coincidir
O comando
1
2
3

s L2[4] = [ coincidir, decidir, conceder, alar, caar, cano, preo,


ascenso, cansao, cansao, tenso, inteno, assar,
assaltar, belssimo, assassino, assassino ];

significa que necessrio escolher 4 elementos aleatrios da lista. Estes elementos


so
1
2
3
4

#L2[0]
#L2[1]
#L2[2]
#L2[3]

10

CAPTULO 2. GERAO DE EXERCCIOS

Eis mais um exerccio simples.

#title: Aores

#author: Albert I Grimaldi

#let:

s N = [ Santa Maria, So Miguel, Terceira, Graciosa,


So Jorge, Pico, Faial, Flores, Corvo,
Formigas, Vila Franca, Fradinhos, Cabros, Monchique ] ;

5
6

7
8
9

s I = [ a ilha, a ilha, a ilha, a ilha,


a ilha, a ilha, a ilha, a ilha, a ilha,
o ilhu, o ilhu, o ilhu, o ilhu, o ilhu] ;

12

s G = [ Oriental, Oriental, Central, Central,


Central, Central, Central, Ocidental, Ocidental,
Oriental, Oriental, Central, Central, Ocidental ] ;

13

N~I~G ;

14

#question:

15
16

\noindent O arquiplago dos Aores distribui-se por trs grupos


de ilhas e ilhus: Oriental, Central e Ocidental. A que grupo pertence #I #N?

17

#resolution:

18

\noindent Ao grupo #G.

10
11

O resultado da compilao deste ficheiro d o exerccio seguinte:

Aores
Albert I Grimaldi
21 de Maio de 2013

2.1. PRIMEIROS EXEMPLOS: COMANDOS BSICOS DE PASSAROLA 11

Enunciado
O arquiplago dos Aores distribui-se por trs grupos de ilhas e ilhus: Oriental,
Central e Ocidental. A que grupo pertence o ilhu Vila Franca?

Resolution
Ao grupo Oriental.

Random choices
N |
I |
G |

1
2
3

Vila Franca | Vila Franca


o ilhu | o ilhu
Oriental | Oriental

A linguagem PASSAROLA d uma possibilidade de construir enunciados muito


variados. Consideremos o exemplo seguinte:

#title: Exerccio tipo escola primria


#author: jj

#let

N
P
F
T
C

5
6
7
8

=
=
=
=
=

[do Rui, do Joo, da Maria, da Ana];


[Ana, minha tia, minha vizinha, tia #N, av #N];
[laranjas, cebolas, cenouras, meloas, melancias, tangerinas];
[tem, colheu, comprou, trouxe da quinta];
[cestos, sacos, caixotes, baldes];

10

laranjasPC = {[ 10..20 ]};


cestos
= {[ 3..10 ]};

11

n l

12

#question:

13

A #P #T #cestos #C, contendo cada um #laranjasPC #F.


Quantas #F #T a #P?

14

= #laranjasPC * #cestos;

12

15
16

17
18
19
20

CAPTULO 2. GERAO DE EXERCCIOS

#result
A #P #T #l #F.
#sugestion:
Fazer um esquema...
#resolution:
$#laranjasPC \times #cestos = #l$;

Aqui est o resultado:

Exerccio tipo escola primria


jj
21 de Maio de 2013

Enunciado
A tia da Maria trouxe da quinta 5 cestos, contendo cada um 16 cebolas. Quantas
cebolas trouxe da quinta a tia da Maria?

Sugestion
Fazer um esquema...

Resolution
16 5 = 80;

Result
A tia da Maria trouxe da quinta 80 cebolas.

2.1. PRIMEIROS EXEMPLOS: COMANDOS BSICOS DE PASSAROLA 13

Obs
Random choices
F
T
N
P
l
C
laranjasPC
cestos

|
cebolas |
|
trouxe da quinta |
|
da Maria |
|
tia #N |
| #laranjasPC * #cestos |
|
cestos |
|
16 |
|
5 |

cebolas
trouxe da quinta
da Maria
tia da Maria
80
cestos
16
5

Os comandos

laranjasPC = {[ 10..20 ]};


cestos
= {[ 3..10 ]};

n l

= #laranjasPC * #cestos;

dizem o seguinte: necessrio escolher aleatoriamente um nmero laranjasPC da


lista de nmeros 10, . . . , 20 e um nmero cestos da lista de nmeros 3, . . . , 10.
Depois, no resto do programa o compilador substitui os smbolos #laranjasPC e
#cestos pelos valores escolhidos. No caso considerado foram escolhidos e posteriormente substitudos os valores 16 e 5. O ltimo comando introduz um novo
nmero l (tipo n) igual ao produto de dois j escolhidos.
Como fcil ver do seguinte exemplo, as possibilidades de construo de frases
diferentes aqui so ilimitadas.

#title: Outro exerccio tipo escola primria

#author: jj

#let

N
P
F
T

5
6
7

=
=
=
=

[do Rui, do Joo, da Maria, da Ana];


[Ana, minha tia, minha vizinha, tia #N, av #N];
[laranjas, cebolas, cenouras, meloas, melancias, tangerinas];
[tem, colheu, comprou, trouxe da quinta];

14
8
9

CAPTULO 2. GERAO DE EXERCCIOS

C = [cestos, sacos, caixotes, baldes];


D = [Arrumou-as em, Dividiu-as por, Separou-as em, Distribuiu-as por];

11

laranjasPC = {[ 10..20 ]};


cestos
= {[ 3..10 ]};

12

n l

13

s enu =

10

14
15
16
17
18
19
20
21
22

23
24

25
26

27
28

29
30

= #laranjasPC * #cestos;

[ A #P #T #cestos #C contendo cada um #laranjasPC #F. Quantas #F #T a #P?,


A #P #T #l #F. #D #cestos #C. Quantas #F tem cada um dos #C?
];
s resp = [ A #P #T #l #F.,
Cada um dos #C tem #laranjasPC #F.
];
s resol = [ $#laranjasPC \times #cestos = #l$,
$#l \div #cestos = #laranjasPC.$
];
enu ~ resp ~ resol;
#question:
#enu
#result
#resp
#sugestion:
Fazer um esquema...
#resolution:
#resol

Outro exerccio tipo escola primria


jj
21 de Maio de 2013

2.1. PRIMEIROS EXEMPLOS: COMANDOS BSICOS DE PASSAROLA 15

Enunciado
A minha tia trouxe da quinta 180 laranjas. Arrumou-as em 9 baldes. Quantas
laranjas tem cada um dos baldes?

Sugestion
Fazer um esquema...

Resolution
180 9 = 20.

Result
Cada um dos baldes tem 20 laranjas.

Obs
Random choices
F |
laranjas |
T |
trouxe da quinta |
enu | A #P #T #l #F. #D #cestos
Quantas #F tem cada #C? |

N |
resol |
P |
resp |

l
C
D
cestos
laranjasPC

|
|
|
|
|

laranjas
trouxe da quinta
#C.
A minha tia trouxe
da quinta 180 laranjas.
Arrumou-as em 9 baldes.
Quantas laranjas tem
cada um dos baldes?

|
$#l \div #cestos =
#laranjasPC.$
| $180 \div 9 = 20.$
minha tia | minha tia
Cada #C tem
#laranjasPC #F. | Cada balde tem 20
laranjas.
#laranjasPC * #cestos | 180
baldes | baldes
Arrumou-as em | Arrumou-as em
9 | 9
20 | 20

16

CAPTULO 2. GERAO DE EXERCCIOS

Consideremos o exemplo de gerao de uma equao quadrtica. O respetivo


PASSAROLA-ficheiro tem a forma
1

#title: Equao quadrtica

#author: Haruki Murakami

#let:

f
f
f

a = [ 1, 2, 1/2, 2/3, 3, 5 ] ;
x1 = [ 1/2, 2, -1, -3/2, 3, 4 ] ;
dx = [ 2/3, 1/3, 1/2, 5/2, 2, 3, 4];

12

f
f
f
f
f
f

x2
b
c
D
pol
bb

13

#question:

14

\noindent Resolva a equao: $#pol=0$.

15

#sugestion:

16

20

\noindent As razes de uma equao de grau dois calculam-se utilizando a frmula:


$$
x_{1,2}=\frac{-b \pm \sqrt{D}}{2a},
$$
onde $D=b^2 -4ac$.

21

#resolution:

22

\noindent As razes de uma equao de grau dois calculam-se utilizando a frmula:


$$
x_{1,2}=\frac{-b \pm \sqrt{D}}{2a},
$$
onde $D=b^2 -4ac$. O discriminante desta equao :

5
6

7
8
9
10
11

17
18
19

23
24
25
26

27
28

= #x1 + #dx ;
= -#a * (#x1 + #x2) ;
= #a * #x1 * #x2 ;
= #b^2 - 4 * #a * #c ;
= #a * x^2 + #b * x + #c ;
= -#b;

$$
D = #D.

2.1. PRIMEIROS EXEMPLOS: COMANDOS BSICOS DE PASSAROLA 17


29
30
31
32
33
34
35

36
37

$$
Portanto, as razes so:
$$
x_{1}=\frac{#bb + \sqrt{#D}}{2\times #a} = #x2
\;\;{\rm e}\;\;
x_{2}=\frac{#bb - \sqrt{#D}}{2\times #a} = #x1.
$$
#result:
$#x2$, $#x1$

Este ficheiro gera o exerccio seguinte:

Equao quadrtica
Haruki Murakami
21 de Maio de 2013

Enunciado
Resolva a equao: 5 x2

65 x
2

105
2

= 0.

Sugestion
As razes de uma equao de grau dois calculam-se utilizando a frmula:

b D
x1,2 =
,
2a
onde D = b2 4ac.

Resolution
As razes de uma equao de grau dois calculam-se utilizando a frmula:

b D
x1,2 =
,
2a

18

CAPTULO 2. GERAO DE EXERCCIOS

onde D = b2 4ac. O discriminante desta equao :


D=

25
.
4

Portanto, as razes so:

x1 =

65
2

25
4

25

7
=
e x2 =
2

65
2

25
4

25

= 3.

Result
7
2

,3

Obs
Random choices
a
x1
dx
x2
b
c
bb
D
pol

|
|
|
|
|
-#a *
|
#a
|
|
#b^2 | #a * x^2

5 |
3 |
1/2 |
#x1 + #dx |
(#x1 + #x2) |
* #x1 * #x2 |
-#b |
4 * #a * #c |
+ #b * x + #c

5
3
1/2
7/2
-65/2
105/2
65/2
25/4
| 5*x^2-65*x/2+105/2

O comando
1

= [ 1, 2, 1/2, 2/3, 3, 5 ] ;

diz o seguinte: necessrio escolher aleatoriamente um nmero a da lista de seis


nmeros indicados entre os parnteses retos. No caso considerado, foi escolhido
e, posteriormente, substitudo o valor 5. O comando
1

x2 = #x1 + #d ;

calcula o objeto x2 do tipo f (funo), utilizando os valores j escolhidos anteriormente, x1 e dx. O tipo f significa que o clculo feito utilizando o programa
Maxima (consulte o anexo Maxima). A utilizao do Maxima significa que os

2.2. UTILIZAO DE PERL

19

nmeros x1 e dx tm que ser interpretados como fraes e o resultado da adiao


tambm tem que ter forma de uma frao, neste caso,
3+

7
1
= .
2
2

Este exerccio muito simples, mas gostaramos de chamar a sua ateno para
algumas subtilezas que existem aqui. Note que no escolhemos as razes x1 e x2,
mas escolhemos x1 e calculmos x2 como #x1+#dx, onde dx>0. Isto foi feito para
garantir a desigualdade x2>x1, e para poder escrever depois
q
q
65
25
65
25
+

7
2
4
2
4
=
e x2 =
= 3.
x1 =
25
2
25
(aqui trocamos a ordem de x2=7/2 e de x1=3 para criar uma maior confuso). A
funo
1

bb = -#b;

foi introduzida para evitar nmeros do tipo

65
,
2

que aparecem quando b negativo e se escreve algo como


1
2
3

x_{1}=\frac{-#b + \sqrt{#D}}{2\times #a} = #x2


\;\;{\rm e}\;\;
x_{2}=\frac{-#b - \sqrt{#D}}{2\times #a} = #x1.

O Maxima simplfica a expresso e d


65
.
2

2.2

Utilizao de Perl

Consideremos o seguinte exemplo:


1

#title: Equao de titulao

#author: Mendeleev

20

CAPTULO 2. GERAO DE EXERCCIOS

#usepackage
\usepackage{mhchem}

#let:

A ~ VA ~ H

B ~ VB ~ OH = sectioncols(catioes);

n qA
n qB
n qagua

9
10

= sectioncols(anioes);

= perl{mmc(#VA,#VB)/#VA} ;
= perl{mmc(#VB,#VA)/#VB} ;
= perl{#VB*#qB }

13

s sqA
= perl{ if( #qA
== 1 ) {""} else {#qA}}
s sqB
= perl{ if( #qB
== 1 ) {""} else {#qB}}
s sqagua = perl{ if( #qagua == 1 ) {""} else {#qagua}}

14

#tab anioes

15

18

Cl:1:H
Br:1:H
SO_4:2:H_2
NO_3:1:H

19

#tab catioes

20

22

Na:1:OH
K :1:OH
Ca:2 :(OH)_2

23

#format

24

27

simplifica\((.*)-times-1\)=$1
simplifica\((.*[0-9])-times-([2-4])\)=($1)$2
simplifica\((.*[A-Z].*[A-Z].*)-times-([2-4])\)=($1)$2
simplifica\((.*)-times-([2-4])\)=$1$2

28

#question

29

Escreva a equao de titulao do cido \ce{#H #A} com a base \ce{#B #OH}.

11
12

16
17

21

25
26

2.2. UTILIZAO DE PERL


30

#resolution:

31
32

\ce{#sqA #H #A + #sqB #B #OH =


#sqagua H2O + simplifica(#B-times-#qB) simplifica(#A-times-#qA)}.

33

#result

34

35

#perl

36

sub mdc { my ($x, $y) = @_;


($x, $y) = ($y, $x % $y) while $y;
$x;
}

37
38
39

40
41
42

sub mmc { my ($x,$y)=@_;


($x*$y)/mdc($x,$y);
}

Este programa gera o seguinte exerccio:

Equao de titulao
Mendeleev
21 de Maio de 2013

Enunciado
Escreva a equao de titulao do cido HCl com a base Ca(OH)2 .

Sugestion
... no sugestion provided

Resolution
2HCl + Ca(OH)2 = 2H2 O + CaCl2 .

21

22

CAPTULO 2. GERAO DE EXERCCIOS

As linhas
#usepackage
\usepackage{mhchem}
informam o processador que ser utilizado o pacote mhchem que facilita o trabalho
com frmulas qumicas. A sua utilizao muito intuitiva. Por exemplo, a
frmula da gua escreve-se como
\ce{H2O}.
E isto produz
H2 O.
Os dados relativos aos cidos e s bases so definidos nas tabelas
#tab anioes
Cl:1:H
Br:1:H
SO_4:2:H_2
NO_3:1:H
#tab catioes
Na:1:OH
K :1:OH
Ca:2 :(OH)_2
A coluna do meio contm as valncias dos respetivos ies. Os comandos
A ~ VA ~ H

= sectioncols(anioes);

B ~ VB ~ OH = sectioncols(catioes);
atribuem s variveis A, VA, H, B, VB, OH os valores das linhas selecionadas das
tabelas anioes e catioes.
O elemento mais importante neste exerccio a utilizao ativa da lingugem
de programao Perl para calcular alguns dados do exerccio. Em primeiro lugar
no campo perl est definidas a funes que calcula o mnimo mltiplo comum de
dois nmeros:

2.2. UTILIZAO DE PERL

23

#perl
sub mmc{ my ($a,$b)=@_;
## Mnimo Mltiplo Comum
my $c = 0;
do{ $c++ }
until($c % $a ==0 and $c % $b == 0); ## A%B - resto da diviso de A/B
return $c
}
Eventualmente, um utilizador mais experiente de Perl escreveria:
sub mdc { my ($x, $y) = @_;
## Mximo Divisor Comum
($x, $y) = ($y, $x % $y) while $y;
$x;
}
sub mmc { my ($x,$y)=@_;
($x*$y)/mdc($x,$y);
}

## Mnimo Mltiplo Comum

Cdigo de Perl tambm pode ser introduzido no corpo do exerccio como nestes
exemplos:
n qA

= perl{ mmc(#VA,#VB)/#VA } ;

s sqA

= perl{ if( #qA

== 1 ) {""} else {#qA}};

(Veja os detalhes sintticos no Anexo Perl.) Neste exerccio enfrentamos uma


dificuldade que nos exerccios considerados anteriormente foi contornada graas
utilizao do Maxima. Por exemplo, a expresso 2 automaticamente
transformada pelo Maxima em 2. Com as frmulas qumicas a situao mais
complicada e necessrio escrever simplificadores "a mo". Isto pode ser feito
utilizando as capacidades do Perl (nomeadamente a subsittuio de expresses
regulares) usadas no campo format.
Exemplos explicados de uso do campo format.
A regra
#format
alfa=\alpha
vv=\dot{x}

24

CAPTULO 2. GERAO DE EXERCCIOS

levaria subsituio no texto do enunciado, resoluo, etc., as palavras alfa por


\alpha gerando , e de forma anloga vv por \dot{x} gerando x.

Este tipo de substituies bastante til para opter uma verso de enunciados
que envolvam gerao de notao LATEXrica.
Por vezes importante substituio envolvendo regras com lados esquerdos
variantes de modo a incluir diversas situaes geradas no processo de sorteio de
dados.
No seguinte exemplo, a regra apresentada
#format
vector_([0-9]+)=vector_{$1}

## [0-9]+

um ou mais dgitos

leva a que as ocorrncias de por exemplo vector_321 sejam substitudas por


vector_{321}.
De um modo geral, todos os operadores normalmente designados por expresses regulares, existentes em Perl e na generalidade das linguagens de programao podem ser usados nos lados esquerdos das regras #format. Por exemplo, o
comando
#format
aaaa\((.*)bbbb\)=$1

## (.*) captura a sequncia de caracteres


## entre "aaaa(" ## e "bbbb)" sendo esta
## sequncia usada na substituio "$1"

substitui aaaa(H2Obbbb) por H2O .


Resumo dos operadores de descrio de padres:
Sendo X uma sub-expresso:
X*
X+
[a-z]
[0-9]
(X)
.
.*

zero ou mais repeties de X


uma ou mais repeties de X
qualquer caracter entre "a" e "z"
dgito
captura da sub-expresso para ser usada na subtituio ($1)
um caracter qualquer (diferente de "\n")
linha

Em operaes de substituio:
$1 $2 $n
-- expande para as diversas sub-expresses captadas por (X)

2.3. GRFICA
Exemplo:
[A-za-z]+
(Jan|Fev...|Dez) ([0-9]+)= $2 $1

25

palavra
Troca a ordem Ms ano para Ano Ms

simplifica\((.*[A-Z].*[A-Z])-times-([2-4])\)= abc $1 xyz $2


Esta ltima regra, transforma por exemplo simplifica(aaaH2SO-times-4) em abc
aaaH2SO xyz 4.

2.3

Grfica

Consideremos o seguinte exerccio da rea da Fsica.


1

#title: Lanamento de projtil

#author: Ricardo Mendes Ribeiro

#let:

n
n
n
n

n pi

13

s q[4] = [ O
O
A
A
];

14

f v_x = #v * cos( #alpha * #pi/180);

15
16

f t_max = #v *sin( #alpha * #pi/180)/( #g) +sqrt( #v^2 * sin( #alpha * #pi/180)^2 +
2 * #g * #h)/( #g);

17

f x_max = #v_x * #t_max ;

18

f v_y
= #v * sin( #alpha * #pi/180) - #g * #t_max;
f v_max = sqrt( #v_x^2 + #v_y^2);

5
6

10
11
12

19

v
alpha
h
g

=
=
=
=

{[1..10]};
{[0..75]};
{[1..5]};
9.8;

= 3.141592654;
instante em que a bola toca no cho,
ponto onde a bola atinge o cho,
altura mxima,
velocidade mxima

26

CAPTULO 2. GERAO DE EXERCCIOS

20

f t_0

21

f y_max = #v^2 * sin( #alpha * #pi/180)^2/( #g * 2);

22

n cy = #h/2;

23

f Py = #y_max;

24

f Px = ( #v^2 * sin(2* #alpha * #pi/180) )/(2 * #g);

25

29

s res[4] = [ #t_max
#x_max
#y_max
#v_max
];

30

q ~ res;

31

#question:

32

Uma bola lanada com uma velocidade de #v m/s, fazendo um ngulo


$\alpha=#alpha$ graus com a horizontal, conforme mostra a
figura.

26
27
28

33
34

35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

= #v * sin( #alpha * #pi/180)/ #g;

s,
m,
m,
m/s

Temos: $h= #h$~m.


\begin{center}
\begin{tikzpicture}
\draw (-1, -#h) -- (-1,-0);
\draw (-0.4,-0.2) rectangle (0, -#h);
\filldraw[gray] (0,0) circle (0.2);
\draw[gray] (0,0) parabola bend ( #Px , #Py) ( #x_max , -#h);
\draw[->] (0,0) -- ( #alpha : 0.8);
\node at (-1.1, -#cy) [left] {$h$};
\draw (0.6,0) arc (0:#alpha:0.6);
\draw[dashed] (-1,0) -- (0.8,0);
\node at (0.6,0.2) [right] {$\alpha$};
\draw[gray] (-0.5, -#h) -- (10, -#h);
\node at (0.4,0.6) [left] {$\vec{v}_0$};
\end{tikzpicture}

2.3. GRFICA
50
51
52
53
54
55
56
57

58
59
60

61
62

63
64
65
66
67

68
69
70
71

27

\end{center}
Supondo o atrito desprezvel, calcule:
\begin{enumerate}
\item #q[0];
\item #q[1];
\item #q[2];
\item #q[3],
\end{enumerate}

#sugestion:
Considere o sistema de eixos centrado no ponto inicial da bola, e orientado na horizontal
e vertical.
#resolution: Em primeiro lugar convm estabelecer as equaes do movimento em
$x$ e em $y$:
\[x = v\cos\alpha t\]
\[y = v\sin\alpha t -0.5gt^2\]
As equaes para a velocidade em $x$ e em $y$ so:
\[v_x = v\cos\alpha \]
\[v_y = v\sin\alpha - gt \]
Depois calcula-se o instante em que $y=-h$:
\[-h=v\sin\alpha t -0.5gt^2\]
\[ t=\frac{v\sin\alpha + \sqrt{v^2\sin^2\alpha + 2gh}}{g}\]
e substitui-se na equao para $x$:

72

\[x = v\cos\alpha \frac{v\sin\alpha + \sqrt{v^2\sin^2\alpha + 2gh}}{g}\]

73

\[y_{max} = 0.5\frac{v^2\sin^2 \alpha}{g}\]

77

A velocidade
energia), ou
nas equaes
\[v_{max} =

78

#result:

79

\begin{enumerate}
\item #res[0];

74
75
76

80

mxima onde toca no cho (pela conservao da


seja no instante $t$ calculado acima. Substitui-se
para a velocidade e calcula-se o mdulo:
\sqrt{v_x^2+v_y^2}\].

28

CAPTULO 2. GERAO DE EXERCCIOS

84

\item #res[1];
\item #res[2];
\item #res[3].
\end{enumerate}

85

#Verify:

86

#Obs:

87

#usepackage:

88

\usepackage{tikz}

81
82
83

Um exemplo de exerccio gerado:

Lanamento de projtil
Ricardo Mendes Ribeiro
21 de Maio de 2013

Enunciado
Uma bola lanada com uma velocidade de 8 m/s, fazendo um ngulo = 61
graus com a horizontal, conforme mostra a figura.
Temos: h = 3 m.

~v0

2.3. GRFICA

29

Supondo o atrito desprezvel, calcule:


1. O instante em que a bola toca no cho;
2. A velocidade mxima;
3. A altura mxima;
4. O ponto onde a bola atinge o cho.

Sugestion
Considere o sistema de eixos centrado no ponto inicial da bola, e orientado na
horizontal e vertical.

Resolution
Em primeiro lugar convm estabelecer as equaes do movimento em x e em y:
x = v cos t
y = v sin t 0.5gt2
As equaes para a velocidade em x e em y so:
vx = v cos
vy = v sin gt
Depois calcula-se o instante em que y = h:
h = v sin t 0.5gt2
p
v sin + v 2 sin2 + 2gh
t=
g
e substitui-se na equao para x:
x = v cos

v sin +

ymax

p
v 2 sin2 + 2gh
g

v 2 sin2
= 0.5
g

30

CAPTULO 2. GERAO DE EXERCCIOS

A velocidade mxima onde toca no cho (pela conservao da energia), ou


seja no instante t calculado acima. Substitui-se nas equaes para a velocidade e
calcula-se o mdulo
q
vmax = vx2 + vy2

Result
1. 1.773222922038111 s;
2. 11.08151614175605 m/s;
3. 6.877404249838398 m;
4. 2.497827370561611 m.
No incio deste exerccio so definidas as quantidades seguintes:
1
2
3
4
5

n
n
n
n
n

v
alpha
h
g
pi

=
=
=
=
=

{[1..10]};
{[0..75]};
{[1..5]};
9.8;
3.141592654;

em que v {1, ..., 10} representa a velocidade inicial da bola, alpha {0, ..., 75}
o ngulo com a horizontal, h {1, ..., 5} a altura do cho at ao centro da bola,
g a constante de gravitao e pi o valor de . Em
1
2
3
4
5

s q[4] = [ O
O
A
A
];

instante em que a bola toca no cho,


ponto onde a bola atinge o cho,
altura mxima,
velocidade mxima

so estabelecidas as expresses das quantidades que se pretende calcular neste


exerccio e que vo fazer parte do enunciado. s q[4] indica que so retiradas por
qualquer ordem as quatro expresses contidas na lista.
A seguir so calculadas as quantidades
1
2
3
4
5

f v_x = #v * cos( #alpha * #pi/180);


f t_max = #v *sin( #alpha * #pi/180)/( #g) +sqrt( #v^2 * sin( #alpha * #pi/180)^2 +
2 * #g * #h)/( #g);
f x_max = #v_x * #t_max ;
f v_y
= #v * sin( #alpha * #pi/180) - #g * #t_max;

2.3. GRFICA
6
7
8
9
10
11

f
f
f
n
f
f

31

v_max = sqrt( #v_x^2 + #v_y^2);


t_0
= #v * sin( #alpha * #pi/180)/ #g;
y_max = #v^2 * sin( #alpha * #pi/180)^2/( #g * 2);
cy = #h/2;
Py = #y_max;
Px = ( #v^2 * sin(2* #alpha * #pi/180) )/(2 * #g);

onde v_x e v_y so as expresses para a velocidade em x e em y, t_max o


instante em que a bola toca no cho, x_max o ponto onde a bola atinge o cho,
v_max o mdulo da velocidade mxima, y_max a altura mxima, t_0 o
instante em que a altura mxima, cy uma coordenada que vai ser utilizada
para colocar uma legenda no grfico e Px e Py so as coordenadas do ponto que a
bola atinge quando a altura mxima. Estas coordenadas representam o vrtice
da parbola que representa a trajetria da bola. Em
1
2
3
4
5
6

s res[4] = [ #t_max
#x_max
#y_max
#v_max
];
q ~ res;

s,
m,
m,
m/s

esto definidas as solues que correspondem s expresses da lista q.


O grfico que ilustra o problema do lanamento do projtil neste exerccio
obtido com o programa TikZ com a ajuda dos comandos seguintes:
1
2
3
4
5
6
7
8
9
10
11
12
13

\begin{tikzpicture}
\draw (-1, -#h) -- (-1,-0);
\draw (-0.4,-0.2) rectangle (0, -#h);
\filldraw[gray] (0,0) circle (0.2);
\draw[gray] (0,0) parabola bend ( #Px , #Py) ( #x_max , -#h);
\draw[->] (0,0) -- ( #alpha : 0.8);
\node at (-1.1, -#cy) [left] {$h$};
\draw (0.6,0) arc (0:#alpha:0.6);
\draw[dashed] (-1,0) -- (0.8,0);
\node at (0.6,0.2) [right] {$\alpha$};
\draw[gray] (-0.5, -#h) -- (10, -#h);
\node at (0.4,0.6) [left] {$\vec{v}_0$};
\end{tikzpicture}

Na linha 4 desenhada uma bola de cor cinzento com centro (0, 0) e de raio
0.2 cm. Todos os outros objetos vo ser desenhados com referncia ao centro da

32

CAPTULO 2. GERAO DE EXERCCIOS

bola. A primeira instruo desenha uma linha vertical de altura h do cho at ao


ponto em que a coordenada y igual 0. Na linha 3 desenhado um bloco onde
a bola vai estar apoiada. O comando da linha 5 permite construir uma parbola
indicando o vrtice ( #Px , #Py) e mais dois pontos que pertencem parbola,
que neste caso so (0,0), o centro da bola, e ( #x_max , -#h), o ponto em que
a bola atinge o cho. Em
1
2

\draw[->] (0,0) -- ( #alpha : 0.8);


\draw (0.6,0) arc (0:#alpha:0.6);

primeiro desenhada uma seta do centro da bola at ao ponto dado pelas coordenadas polares #alpha e 0.8, fazendo assim um ngulo de #alpha graus com a
horizontal e depois desenhado uma arco de #alpha graus. O comando
1

\draw[dashed] (-1,0) -- (0.8,0);

desenha uma linha tracejada horizontal que passa no centro da bola indicando
assim a altura que corresponde a h = 0 e
1

\draw[green] (-0.5, -#h) -- (10, -#h);

desenha uma linha verde que representa o cho correspondendo altura h. Com
as instrues
1
2
3

\node at (-1.1, -#cy) [left] {$h$};


\node at (0.6,0.2) [right] {$\alpha$};
\node at (0.4,0.6) [left] {$\vec{v}_0$};

so colocadas as legendas h, e ~v0 no grfico.

Consideremos agora um exemplo mais complicado.

#title: Domnio de funo 20 A

#author: Smirnov, Irene

#let:

n a = import(coef_aDom.tab);
n b = import(coef_bDom.tab);
n c = import(coef_cDom.tab);

5
6

2.3. GRFICA

33

f F1 = [sqrt(z), sqrt(-z), log(z), log(-z), 1/z, 1/sqrt(z),1/sqrt(-z)];

s S = [\geq, \leq, >, <, \neq, >, <];

f
f
f
f
f
f

10
11
12
13
14

15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

34
35
36
37
38
39
40
41
42

D0 = [ #a^2-(x+#b)^2-(y+#c)^2];
D1 = ratsimp(#D0);
d = ratsimp(-#b);
e = ratsimp(-#c);
aux1 = [F(z) := #F1];
G = ratsimp(F(#D1));

fig1 = {{ \begin{tikzpicture}[scale=0.5]
\fill[gray!20] (#d,#e) circle (#a);
\draw[->](-8,0)--(8,0) node[right]{$x$};
\draw[->](0,-8)--(0,8) node[above]{$y$};
\node at (#d,#e) [below] {$(#d,#e)$};
\filldraw[black] (#d,#e) circle(1.5pt);
\foreach \x/\xtext in { 2/2, 4/4, 6/6, }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt)
\foreach \x/\xtext in {-6/6, -4/4, -2/2 }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt)
\foreach \y/\ytext in { 2/2, 4/4, 6/6}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt)
\foreach \y/\ytext in {-6/6, -4/4, -2/2}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt)
\foreach \x in {-7,...,7}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-7,...,7}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture} }};

node[below] {$\xtext$};
node[below] {$-\xtext$};
node[left] {$\ytext$};
node[left] {$-\ytext$};

fig2 = {{ \begin{tikzpicture}[scale=0.5]
\filldraw[gray!20] (-8,-8) rectangle (8,8);
\filldraw[white] (#d,#e) circle (#a);
\draw[->](-8,0)--(8,0) node[right]{$x$};
\draw[->](0,-8)--(0,8) node[above]{$y$};
\node at (#d,#e) [below] {$(#d,#e)$};
\filldraw[black] (#d,#e) circle(1.5pt);
\foreach \x/\xtext in { 2/2, 4/4, 6/6, }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$\xtext$};

34
43
44
45
46
47
48
49
50
51
52
53

54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73

74
75
76
77
78
79
80
81

CAPTULO 2. GERAO DE EXERCCIOS

\foreach \x/\xtext in {-6/6, -4/4, -2/2 }


\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$-\xtext$};
\foreach \y/\ytext in { 2/2, 4/4, 6/6}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$\ytext$};
\foreach \y/\ytext in {-6/6, -4/4, -2/2}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$-\ytext$};
\foreach \x in {-7,...,7}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-7,...,7}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture} }};
fig3 = {{ \begin{tikzpicture}[scale=0.5]
\draw[style=dashed,color=black] (#d,#e) circle (#a);
\fill[gray!20] (#d,#e) circle (#a);
\draw[->](-8,0)--(8,0) node[right]{$x$};
\draw[->](0,-8)--(0,8) node[above]{$y$};
\node at (#d,#e) [below] {$(#d,#e)$};
\filldraw[black] (#d,#e) circle(1.5pt);
\foreach \x/\xtext in { 2/2, 4/4, 6/6, }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$\xtext$};
\foreach \x/\xtext in {-6/6, -4/4, -2/2 }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$-\xtext$};
\foreach \y/\ytext in { 2/2, 4/4, 6/6}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$\ytext$};
\foreach \y/\ytext in {-6/6, -4/4, -2/2}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$-\ytext$};
\foreach \x in {-7,...,7}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-7,...,7}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture} }};
fig4 = {{ \begin{tikzpicture}[scale=0.5]
\filldraw[gray!20] (-8,-8) rectangle (8,8);
\filldraw[white] (#d,#e) circle (#a);
\draw[style=dashed,color=black] (#d,#e) circle (#a);
\draw[->](-8,0)--(8,0) node[right]{$x$};
\draw[->](0,-8)--(0,8) node[above]{$y$};
\node at (#d,#e) [below] {$(#d,#e)$};
\filldraw[black] (#d,#e) circle(1.5pt);

2.3. GRFICA
82
83
84
85
86
87
88
89
90
91
92
93
94

95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114

115
116
117
118
119
120

\foreach \x/\xtext in { 2/2, 4/4, 6/6, }


\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt)
\foreach \x/\xtext in {-6/6, -4/4, -2/2 }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt)
\foreach \y/\ytext in { 2/2, 4/4, 6/6}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt)
\foreach \y/\ytext in {-6/6, -4/4, -2/2}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt)
\foreach \x in {-7,...,7}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-7,...,7}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture} }};

35

node[below] {$\xtext$};
node[below] {$-\xtext$};
node[left] {$\ytext$};
node[left] {$-\ytext$};

fig5 = {{ \begin{tikzpicture}[scale=0.5]
\filldraw[gray!20] (-8,-8) rectangle (8,8);
\draw[style=dashed,color=white] (#d,#e) circle (#a);
\draw[->](-8,0)--(8,0) node[right]{$x$};
\draw[->](0,-8)--(0,8) node[above]{$y$};
\node at (#d,#e) [below] {$(#d,#e)$};
\filldraw[black] (#d,#e) circle(1.5pt);
\foreach \x/\xtext in { 2/2, 4/4, 6/6, }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$\xtext$};
\foreach \x/\xtext in {-6/6, -4/4, -2/2 }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$-\xtext$};
\foreach \y/\ytext in { 2/2, 4/4, 6/6}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$\ytext$};
\foreach \y/\ytext in {-6/6, -4/4, -2/2}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$-\ytext$};
\foreach \x in {-7,...,7}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-7,...,7}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture} }};
fig6 = {{ \begin{tikzpicture}[scale=0.5]
\draw[style=dashed,color=black] (#d,#e) circle (#a);
\fill[gray!20] (#d,#e) circle (#a);
\draw[->](-8,0)--(8,0) node[right]{$x$};
\draw[->](0,-8)--(0,8) node[above]{$y$};
\node at (#d,#e) [below] {$(#d,#e)$};

36
121
122
123
124
125
126
127
128
129
130
131
132
133
134

CAPTULO 2. GERAO DE EXERCCIOS

\filldraw[black] (#d,#e) circle(1.5pt);


\foreach \x/\xtext in { 2/2, 4/4, 6/6, }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt)
\foreach \x/\xtext in {-6/6, -4/4, -2/2 }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt)
\foreach \y/\ytext in { 2/2, 4/4, 6/6}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt)
\foreach \y/\ytext in {-6/6, -4/4, -2/2}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt)
\foreach \x in {-7,...,7}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-7,...,7}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture} }};

node[below] {$\xtext$};
node[below] {$-\xtext$};
node[left] {$\ytext$};
node[left] {$-\ytext$};

155

fig7 = {{ \begin{tikzpicture}[scale=0.5]
\filldraw[gray!20] (-8,-8) rectangle (8,8);
\filldraw[white] (#d,#e) circle (#a);
\draw[style=dashed,color=black] (#d,#e) circle (#a);
\draw[->](-8,0)--(8,0) node[right]{$x$};
\draw[->](0,-8)--(0,8) node[above]{$y$};
\node at (#d,#e) [below] {$(#d,#e)$};
\filldraw[black] (#d,#e) circle(1.5pt);
\foreach \x/\xtext in { 2/2, 4/4, 6/6, }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$\xtext$};
\foreach \x/\xtext in {-6/6, -4/4, -2/2 }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$-\xtext$};
\foreach \y/\ytext in { 2/2, 4/4, 6/6}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$\ytext$};
\foreach \y/\ytext in {-6/6, -4/4, -2/2}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$-\ytext$};
\foreach \x in {-7,...,7}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-7,...,7}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture} }};

156

Gr = [#fig1, #fig2, #fig3, #fig4, #fig5, #fig6, #fig7];

157

F1~S~Gr;

135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154

2.3. GRFICA

37

158

#question:

159

\noindent Determine

160

170

#resolution: Notemos que


$$
{\rm dom} f = \{ (x,y) \mid #D1 #S 0\}.
$$
$$
= \{ (x,y) \mid #D0 #S 0\}.
$$
$$
#Gr
$$
A rea cinzenta representa o domnio da funo.

171

#usepackage:

172

\usepackage{tikz}

161
162
163
164
165
166
167
168
169

e represente geometricamente o domnio da funo $f(x,y)=#G$.

Um exemplo de exerccio gerado:

Domnio de funo 20 A
Smirnov, Irene
21 de Maio de 2013

Enunciado
Determine e represente geometricamente o domnio da funo f (x, y) =

1
.
y 2 +6 y+x2 +2 x6

38

CAPTULO 2. GERAO DE EXERCCIOS

Sugestion
Resolution
Notemos que
domf = {(x, y) | y 2 6 y x2 2 x + 6 < 0}.
= {(x, y) | (y + 3)2 (x + 1)2 + 16 < 0}.
y
6
4
2
6

2
(1,4
3)
6

A rea cinzenta representa o domnio da funo.


No incio do ficheiro que gera este exerccio so importados os valores de trs
coeficientes a, b e c que se encontram em ficheiros auxiliares .tab usando
1
2
3

n a = import(coef_aDom.tab);
n b = import(coef_bDom.tab);
n c = import(coef_cDom.tab);

Os ficheiros .tab devem ser importados para o gerador de exerccios PASSAROLA


escolhendo a opo Check this box if youre just uploading an auxiliary file
which is not to be processed. Neste caso, os coeficientes podem tomar os valores
seguintes
a {1, 2, 3, 4},
b {4, 3, 2, 1, 1, 2, 3, 4},
c {4, 3, 2, 1, 1, 2, 3, 4}.

2.3. GRFICA

39

A lista
1

f F1 = [sqrt(z), sqrt(-z), log(z), log(-z), 1/z, 1/sqrt(z),1/sqrt(-z)];

contm sete funes que dependem para j de uma varivel z e a lista


1

s S = [\geq, \leq, >, <, \neq, >, <];

contm sete sinais de desigualdade:


[, , >, <, 6=, >, <].
Mais tarde vai ser feita uma correspondncia usando o operador ~ que associa,
por ordem, funo sorteada aleatoriamente da lista F1 o sinal ccorrespondente
da lista S.
A seguir definida a expresso
a2 (x + b)2 (y + c)2
da forma
1

f D0

= [ #a^2-(x+#b)^2-(y+#c)^2];

em que a, b e c so escolhidos aleatoriamente das listas importadas. A instruo


de simplificao
1

f D1 = ratsimp(#D0);

reescreve a2 (x + b)2 (y + c)2 da forma


y 2 2cy x2 2bx c2 b2 + a2 .
As simplificaes
1
2

f d = ratsimp(-#b);
f e = ratsimp(-#c);

servem para simplificar os sinais em expresses como, por exemplo, 3 devolvendo 3. Em


1
2

f aux1 = [F(z) := #F1];


f G = ratsimp(F(#D1));

40

CAPTULO 2. GERAO DE EXERCCIOS

definida na primeira linha com o operador := uma funo F que sorteada


aleatoriamente da lista de funes F1 que depende da varivel z. Seguidamente,
a varivel z substituda pela expresso dada por D1:
y 2 2cy x2 2bx c2 b2 + a2 .
Deste modo, obtm-se para G, por exemplo,
p
y 2 2cy x2 2bx c2 b2 + a2
(se for sorteada a primeira funo indicada na lista F1) ou
1
y 2 2cy x2 2bx c2 b2 + a2
(se for sorteada a quinta funo indicada na lista F1).
A seguir so construdos sete grficos com o programa TikZ: fig1,..., fig7
recorrendo instruo
1

f fig1 = {{ \begin{tikzpicture}...\end{tikzpicture} }};

que representam os domnios das funes geradas anteriormente e que vo ser


guardados na lista
1

Gr = [#fig1, #fig2, #fig3, #fig4, #fig5, #fig6, #fig7];

Para atribuir a cada funo da lista F1, que depende do smbolo da lista S, o
grfico com o domnio correspondente da lista Gr utiliza-se o operador de correpondncia ~ da seguinte forma
1

F1~S~Gr;

As funes que podem ser geradas neste exerccio, considerando a ordem de


apresentao na lista, so
p
y 2 2cy x2 2bx c2 b2 + a2
1. f (x, y) =
p
2. f (x, y) =
y 2 + 2cy + x2 + 2bx + c2 + b2 a2
3. f (x, y) = ln(y 2 2cy x2 2bx c2 b2 + a2 )
4. f (x, y) = ln(y 2 + 2cy + x2 + 2bx + c2 + b2 a2 )
1
5. f (x, y) =
2
2
y 2cy x 2bx c2 b2 + a2
1
6. f (x, y) = p
2
2
y 2cy x 2bx c2 b2 + a2
1
7. f (x, y) = p
2
2
y + 2cy + x + 2bx + c2 + b2 a2

2.3. GRFICA

41

cujos domnios so respetivamente


1.
2.
3.
4.
5.
6.
7.

domf
domf
domf
domf
domf
domf
domf

=
=
=
=
=
=
=

{(x, y) | a2 (x + b)2 (y + c)2


{(x, y) | a2 (x + b)2 (y + c)2
{(x, y) | a2 (x + b)2 (y + c)2
{(x, y) | a2 (x + b)2 (y + c)2
{(x, y) | a2 (x + b)2 (y + c)2
{(x, y) | a2 (x + b)2 (y + c)2
{(x, y) | a2 (x + b)2 (y + c)2

0}
0}
> 0}
< 0}
6= 0}
> 0}
< 0}.

Passando ento descrio da gerao grfica destes domnios, comece-se por


notar que em todos os grficos dos domnios vai aparecer uma circunferncia
de centro (b, c) e raio a. As coordenadas do centro da circunferncia so
apresentadas em todos os grficos com o comando
1

\node at (#d,#e) [below] {$(#d,#e)$};

Outros comandos que so comuns em todos os grficos so


1
2

\draw[->](-8,0)--(8,0) node[right]{$x$};
\draw[->](0,-8)--(0,8) node[above]{$y$};

que definem os eixos x e y, em que a amplitude de 8 a 8 foi estabelecida de forma


a poder conter todas as circunferncias atendendo aos coeficientes que podem ser
gerados, e
1
2
3
4
5
6
7
8
9
10
11
12

\foreach \x/\xtext in { 2/2, 4/4, 6/6, }


\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt)
\foreach \x/\xtext in {-6/6, -4/4, -2/2 }
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt)
\foreach \y/\ytext in { 2/2, 4/4, 6/6}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt)
\foreach \y/\ytext in {-6/6, -4/4, -2/2}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt)
\foreach \x in {-7,...,7}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-7,...,7}
\draw (-1pt,\y cm) -- (1pt,\y cm);

node[below] {$\xtext$};
node[below] {$-\xtext$};
node[left] {$\ytext$};
node[left] {$-\ytext$};

42

CAPTULO 2. GERAO DE EXERCCIOS

que so utilizados para marcar as unidades nos eixos e apresentar alguns valores,
neste caso, 6, 4, 2, 2, 4, 6.
Os outros comandos que aparecem em cada um dos grficos so especficos
para cada domnio. Observe-se que a circunferncia deve ser desenhada com linha
contnua para os domnos que dependem dos smbolos ou , ou, desenhada com
linha tracejada para os domnios que dependem dos smbolos >, < ou 6=. Note-se
tambm que nos domnios 1., 3. e 6. a circunferncia deve aparecer preenchida,
nos domnios 2., 4. e 7. deve ser preenchida a regio exterior circunferncia e
para o domnio 5. preenchido todo o plano excluindo os pontos da circunferncia
desenhando-a de forma tracejada.
Assim, para esse efeito, utiliza-se no grfico do domnio 1 (ver fig1)
1

\fill[gray!20] (#d,#e) circle (#a);

que preenche toda a circunferncia, incluindo a fronteira, de cor cinzento claro.


Para o domnio 2 (ver fig2) recorre-se a
1
2

\filldraw[gray!20] (-8,-8) rectangle (8,8);


\filldraw[white] (#d,#e) circle (#a);

em que a primeira instruo preenche todo o plano de cor cinzento claro e a


segunda sobrepe a essa rea uma circunferncia completamente preenchida de
cor branca.
No domnio 3 (ver fig3) desenhada uma circunferncia tracejada de cor
preta que posteriormente preenchida de cor cinzento claro com os comandos
1
2

\draw[style=dashed,color=black] (#d,#e) circle (#a);


\fill[gray!20] (#d,#e) circle (#a);

depois sobrepe-se uma circunferncia preenchida de cor branca e por fim


desenha-se uma circunferncia tracejada de cor preta com a ajuda de
1
2
3

\filldraw[gray!20] (-8,-8) rectangle (8,8);


\filldraw[white] (#d,#e) circle (#a);
\draw[style=dashed,color=black] (#d,#e) circle (#a);

No domnio 5 (ver fig5) utilizam-se as instrues


1
2

\filldraw[gray!20] (-8,-8) rectangle (8,8);


\draw[style=dashed,color=white] (#d,#e) circle (#a);

2.4. ORGANIZAO DE DADOS: TABELAS E FICHEIROS

43

para preencher o plano de cor cinzento claro e apresentar a circunferncia tracejada de cor branca.
O grfico do domnio 6 (ver fig6) igual ao grfico do domnio 3 e o grfico
do domnio 7 (ver fig7), igual ao grfico domnio 4.
Por fim, na resoluo deste exerccio, em #resolution: indicado por compreenso em
1
2
3
4
5
6

$$
{\rm dom} f = \{ (x,y) \mid #D1 #S 0\}.
$$
$$
= \{ (x,y) \mid #D0 #S 0\}.
$$

o domnio da funo f (x, y), em que na expresso do domnio na segunda linha


possvel reconhecer o centro e o raio da circunferncia. A seguir, em
1
2
3

$$
#Gr
$$

apresentado, graficamente, o domnio da funo f (x, y).

2.4

Organizao de dados: tabelas e ficheiros

#title: Tabela de Rios

#author: jj

#let:

rio ~ nascente ~ foz ~ compPT ~ area ~ afluentes ~ atravessa = sectioncols(riospt);

s perg[2] = [ Qual
Onde
Qual
Qual
Qual
Qual

6
7
8
9
10

o rio que desagua em #foz? ,


desagua o rio #rio?,
a nascente do rio #rio?,
a foz do rio que atravessa #atravessa?,
o rio que nasce em #nascente?,
o rio que tem como afluente(s) #afluentes? ];

44

16

s resp[2] = [ #rio,
#foz,
#nascente,
#foz,
#rio,
#rio];

17

resp ~ perg;

18

#question:

19

\begin{enumerate}
\item #perg[0]
\item #perg[1]
\end{enumerate}

11
12
13
14
15

20
21
22

CAPTULO 2. GERAO DE EXERCCIOS

30

#sugestion:
#resolution:
#result:
\begin{enumerate}
\item #resp[0]
\item #resp[1]
\end{enumerate}
#Verify:

31

#usepackage

32

#tab riospt

33

Minho : Espanha, serra de Meira : Caminha : 300 : 12486 :


Coura, Mouro, Avia : Melgao, Mono
Cvado : serra do Larouco : Esposende : 129 : 1648 :
Homem, Rabago : Barcelos, Montalegre
Mondego : serra da Estrela : Figueira da Foz : 234 : 6772 :
Do, Alva, Ceira, Arunca, Soure : Coimbra
Guadiana : Espanha, campo Montiel : Vila Real de Santo Antnio : 810 : 66800 :
Chana, Ardila, Caia, Vasco : Mrtola, Alqueva
Douro : Espanha, serra do Urbio : Porto : 927 : 97603 :
Ca, Corgo, Sousa, Tmega, Sabor, Varosa, Tvora, Tua : Miranda do Douro, Rgua
Tejo : Espanha, serra de Albarracim : Lisboa : 1100 : 24913 :

23
24
25
26
27
28
29

34
35
36
37
38
39
40
41
42
43

2.4. ORGANIZAO DE DADOS: TABELAS E FICHEIROS


44
45
46
47
48
49
50
51
52
53
54

45

Sorraia, Zzere, Alviela, Tranco, Ocreza, Guadarrama : Santarm, Toledo, Abrantes


Ave : serra da Cabreira :Vila do Conde : 95 : 1395 :
Este, Vizela : Sto. Tirso, Taipas
Lima : Espanha, serra So Mamede : Viana do Castelo : 108 : 1145 :
Germil, Castro Laboreiro, Vez, Cabril : Ponte do Lima, Ponte da Barca
Vouga : serra da Lapa : Aveiro : 136 : 3656 :
Caima, gueda : S. Pedro do Sul, Vouzela
Sado : serra do Caldeiro : Setbal : 180 : 7628 :
Xarrama, Marateca, Alvalade, Arco : Alccer do Sal
Mira :serra do Caldeiro : Vila Nova de Milfontes : 150 : 1781 :
Torto : Odemira

Rios de Portugal
jj
21 de Maio de 2013

Enunciado
1. Qual a nascente do rio Vouga?
2. Qual a foz do rio que atravessa S. Pedro do Sul, Vouzela?

Sugestion
Resolution
Result
1. serra da Lapa
2. Aveiro

Obs
Random choices
rio |

Vouga | Vouga

46

CAPTULO 2. GERAO DE EXERCCIOS

area
afluentes
atravessa
resp
nascente
perg
compPT
foz

|
3656 | 3656
|
Caima, gueda | Caima, gueda
| S. Pedro do Sul, Vouzela | S. Pedro do Sul, Vouzela
|
ARRAY(0x8708360) | ARRAY(0x87042d0)
|
serra da Lapa | serra da Lapa
|
ARRAY(0x8708460) | ARRAY(0x86ff660)
|
136 | 136
|
Aveiro | Aveiro

JJ: nmeros perl; funes mxima

2.5

Exerccios de escolha mltipla

exemplo; template usando tabelas ...

2.6

Funes

definio de funes novas que enriqueam a linguagem; ex. amostra estatstica

2.7

Criao de fichas de trabalho, testes e sebentas

No exemplo que se segue, podemos observar um ficheiro PASSAROLA que permite criar uma ficha de trabalho.
1
2

3
4
5

title: Complementos de Anlise Matemtica


subtitle: Ficha 4 (Equaes diferenciais de coeficientes constantes)
#q[1]{CAMEquacaoDiferencialDeCoefConstDeSegundaOrdem10A.txt}
#q[1]{CAMEquacaoDiferencialDeCoefConstDeSegundaOrdem10B.txt}
#q[2]{CAMSistemaDeEquacoesDiferenciaisDeCoefConstDeSegundaOrdem10A.txt}

#q[1]{CAMEquacaoDiferencialDeCoefConstDeSegundaOrdem10A.txt} faz com


que seja inserida, na ficha, uma questo gerada com base no ficheiro PASSAROLA
com o nome colocado entre chavetas, disponibilizado na plataforma pelo utilizador.

2.7. CRIAO DE FICHAS DE TRABALHO, TESTES E SEBENTAS

47

Este ficheiro gera dois novos ficheiros: um com o enunciado e outro com as
resolues. O enunciado apresentado da seguinte forma:

Complementos de Anlise Matemtica


Ficha 4 (Equaes diferenciais de
coeficientes constantes)
21 de Maio de 2013
Questo 1 () Utilizando a transformada de Laplace resolva o problema de
Cauchy
x 5x + 4x = (40 t 8) et , x(0) = 12, x(0)

= 27.

Questo 2 () Utilizando a transformada de Laplace resolva o problema de


Cauchy
x 5x + 4x = 1000 cos (2 t) , x(0) = 18, x(0)

= 245.

Questo 3 () Utilizando a transformada de Laplace resolva o problema de


Cauchy
x = x + 12 y, x(0) = 7,
y = 14 x + y, y(0) = 6.

Questo 4 () Utilizando a transformada de Laplace resolva o problema de


Cauchy
x = 64 x + 60 y, x(0) = 12,
y = 96 x 8 y, y(0) = 4.

48

CAPTULO 2. GERAO DE EXERCCIOS

tambm criado um ficheiro onde so includas as resolues geradas pela


instruo #resolution de cada um dos ficheiros definidos entre chavetas. Para
o exemplo apresentado, a proposta de resoluo da ficha de trabalho seria a
seguinte:

Complementos de Anlise Matemtica


Ficha 4 (Equaes diferenciais de
coeficientes constantes)
21 de Maio de 2013
Questo 1 () Utilizando a transformada de Laplace resolva o problema de
Cauchy
x 5x + 4x = (40 t 8) et , x(0) = 12, x(0)

= 27.
....................
Aplicando a transformada de Laplace equao diferencial, obtemos
L(x)(p) =

12 p3 9 p2 62 p 1
.
p4 3 p3 5 p2 + 3 p + 4

A funo L(x)(p) pode ser representada como soma de fraes elementares


L(x)(p) =

2
4
5
5
+ 2
+
+
.
p + 1 p + 2p + 1 p 4 p 1

Utilizando a frmula
L(f )(p) =

n!
,
(p + )n+1

obtemos

x(t) = et 5 e5 t + 5 e2 t + 4 t + 2 .

Questo 2 () Utilizando a transformada de Laplace resolva o problema de


Cauchy
x 5x + 4x = 1000 cos (2 t) , x(0) = 18, x(0)

= 245.

2.7. CRIAO DE FICHAS DE TRABALHO, TESTES E SEBENTAS

49

....................
Aplicando a transformada de Laplace equao diferencial, obtemos
L(x)(p) =

18 p3 155 p2 + 928 p 620


.
p4 5 p3 + 8 p2 20 p + 16

A funo L(x)(p) pode ser representada como soma de fraes elementares


L(x)(p) =

50 i
50 i
9
9
+
+
+
.
p 2i p + 2i p 4 p 1

Utilizando a frmula
L(f )(p) =

n!
,
(p + )n+1

obtemos
x(t) = 100 sin (2 t) 9 e4 t 9 et .

Questo 3 () Utilizando a transformada de Laplace resolva o problema de


Cauchy
x = x + 12 y, x(0) = 7,
y = 14 x + y, y(0) = 6.
....................
Aplicando a transformada de Laplace ao sistema, obtemos
7 + pL(x )(p) = L(x)(p) + 12 L(y)(p),
6 + pL(y)(p) = 14 L(x)(p) + L(y)(p).
Resolvendo este sistema de equaes lineares, encontramos
65 + 7 p
,
L(x)(p) =
169 + p2
104 + 6 p
L(y)(p) =
.
169 + p2
As funes L(x)(p) e L(y)(p) podem ser representadas como somas de fraes
elementares
1
6
L(x)(p) =
+
,
13 + p 13 + p
7
1
L(y)(p) =
+
.
13 + p 13 + p

50

CAPTULO 2. GERAO DE EXERCCIOS

Utilizando a frmula para a transformada de Laplace da funo g(t) = H(t)tn et :


L(g)(p) =

n!
.
(p + )n+1

obtemos
x(t) = e13 t + 6 e13 t , y(t) = e13 t + 7 e13 t .

Questo 4 () Utilizando a transformada de Laplace resolva o problema de


Cauchy
x = 64 x + 60 y, x(0) = 12,
y = 96 x 8 y, y(0) = 4.
....................
Aplicando a transformada de Laplace ao sistema, obtemos
12 + pL(x )(p) = 64 L(x)(p) + 60 L(y)(p),
4 + pL(y)(p) = 96 L(x)(p) 8 L(y)(p).
Resolvendo este sistema de equaes lineares, encontramos
336 + 12 p
,
6272 56 p + p2
896 + 4 p
L(y)(p) =
.
6272 56 p + p2

L(x)(p) =

As funes L(x)(p) e L(y)(p) podem ser representadas como somas de fraes


elementares
2
10
+
,
56 + p 112 + p
4
8
L(y)(p) =
+
.
56 + p 112 + p

L(x)(p) =

Utilizando a frmula para a transformada de Laplace da funo g(t) = H(t)tn et :


L(g)(p) =

n!
.
(p + )n+1

2.7. CRIAO DE FICHAS DE TRABALHO, TESTES E SEBENTAS

51

obtemos
x(t) = 2 e56 t + 10 e112 t , y(t) = 4 e56 t + 8 e112 t .

Com PASSAROLA tambm possvel criar testes, como se pode ver no exemplo seguinte:
1
2
3
4

5
6
7
8
9
10
11
12

title: Anlise Matemtica II


subtitle: Exame A \\~\\ Durao: 2h. Apresente {\bf todos} os clculos efetuados.\\~\\
date: \today
usepackage:{ \usepackage{tikz} }
#q{Continuidade_dy_10_A.txt}
#q{DerivadaFuncaoComposta2Variaveis.txt}
#q{Diferenciabilidade_10_A.txt}
#q{Taylor2variaveis_10_A.txt}
#q{MultiplicadoresDeLagrange_10_A.txt}
#q{OrdemDeIntegracao_10_A.txt}
#q{IntegralTriplo_10_A.txt}
#q{IntegralDeSuperficie_10_B.txt}

A instruo #q{nome_do_ficheiro} define a introduo de uma questo gerada pelo ficheiro existente na plataforma guardado como nome_do_ficheiro .
Obtemos, ento, o exemplar do teste que se segue:

Anlise Matemtica II
Exame A
Durao: 2h. Apresente todos os
clculos efetuados.
21 de Maio de 2013

52

CAPTULO 2. GERAO DE EXERCCIOS


Questo 1 () Considere a funo f (x, y) definida por
(
x24 y 2
, x2 + y 2 6= 0,
9 y 8 +3 x32
f (x, y) =
0,
x2 + y 2 = 0.

a). Estude a continuidade da funo f (x, y);


f (x,y)
y

b). Determine a expresso de

Questo 2 () Seja f (x, y) = (y +


2f
parciais f
, f
e xy
.
x
y

x) cos (y + x2 ). Calcule as derivadas

Questo 3 () A funo f (x, y) = |x| 3 |y| 4 diferencivel no ponto (0, 0)?


Questo 4 () Determine polinmio de Taylor P (x, y) de grau 3 no ponto
x
.
(0, 0) para a funo f (x, y) = cos
1+y
Questo 5 () Sejam
z = (x, y),
f (z) = 4x + 6y,
g(z) = y 2 + 8 y + x2 + 16 x + 72.
Utilizando a regra dos multiplicadores de Lagrange resolva o problema
f (z) min,
g(z) = 0.

Questo 6 () Inverta a ordem de integrao do integral duplo


Z

q(x)

f (x, y)dydx,
3

p(x)

onde p(x) = x2 2 x 3 e q(x) = x + 15.


Questo 7 () Escreva o integral triplo,

2.7. CRIAO DE FICHAS DE TRABALHO, TESTES E SEBENTAS


Z

x2

g(x)

x1

(x,y)

dz,

dy

dx

I=

f (x)

(x,y)

que permite calcular o volume do slido


S = {(x, y, z) | 7 y 2 + 8 x2 z 42 y 80 x 253}.

Questo 8 () Calcule o integral de superfcie


Z Z
I=
xyzdS.

z=

x2 +y 2 , 3

x2 +y 2 6

53

54

CAPTULO 2. GERAO DE EXERCCIOS

Captulo 3
Exemplos mais complexos
3.1

Matemtica

3.2

Msica, ABC, pdf com anexos

55

56

CAPTULO 3. EXEMPLOS MAIS COMPLEXOS

Captulo 4
Verificao automtica de exerccios

57

58

CAPTULO 4. VERIFICAO AUTOMTICA DE EXERCCIOS

Captulo 5
Sistemas de ensino

59

60

CAPTULO 5. SISTEMAS DE ENSINO

Anexo A: LATEX
O que o LATEX?
O TEXfoi criado por Donald Knuth em 1977 com o objetivo de gerar documentos
com um layout agradvel. uma linguagem de programao no sentido em
que suporta instrues do tipo if-then-else e outras, no tem bugs, corre em
todos os tipos de computadores mas difcil de usar, requerendo bastante tempo
de aprendizagem. Para obter uma soluo mais amigvel o melhor pensar no
LATEX.
O LATEX uma liguagem de programao que contm uma srie de comandos
TEX. Assim sendo, fazer um documento em LATEX essencialmente construir um
programa, o qual depois de compilado nos d o texto que desejamos.
Convm notar que quando preparamos um texto em LATEX, no estamos perante um programa tipo Microsoft Word onde aquilo que se escreve aquilo que
se obtm (what you see is what you get - WYSIWYG) aquando da impresso
do documento. H ainda a necessidade de saber uma srie de comandos LATEX
para conseguir gerar um texto corretamente. Tendo dito isto h, no entanto, um
conjunto de vantagens inquestionveis uma vez passada a fase de aprendizagem.
Em primeiro lugar e falando da ltima desvantagem, convm dizer que nem disso
se trata, uma vez que devido a ampla utilizao do LATEX pela comunidade cientfica, existem disponveis na internet imensas macros j programadas que ensinam
o utilizador a aprender por analogia. Vamos mencionar mais algumas vantagens
no processamento de texto usando LATEX. Um documento LATEXest em formato
de texto, podendo ser lido ou editado por qualquer editor de texto. A estrutura e
opes como fontes, tamanho das fontes, etc., dum documento LATEX visvel ao
utilizador, e pode ser facilmente alterada. Algumas vezes, em alguns programas
WISIWYG, pode ser bastante difcil proceder a alteraes uma vez que tem que
se passear por inmeros menus que ainda por cima mudam de stio de verso para
verso. As frmulas matemticas em LATEX so facilmente editadas no havendo
a necessidade de ter que andar a passear de menu em menu. A numerao de
61

62

CAPTULO 5. SISTEMAS DE ENSINO

equaes, criao de notas de rodap, citaes e referncias igualmente bastante


fcil e explcito em LATEX. Finalmente, uma vez que escrever um documento em
LATEX essencialmente programar tudo o que se pretende, somos forados a definir a estrutura do documento desde o incio. No esquecer ainda que as vrias
verses do LATEX so gratuitas.
Como base de estudo, os livros TeXbook escrito por D. Knuth e A document
preparation system escrito por L. Lamport so um bom ponto de partida para
quem quer fazer do LATEX o seu editor de texto.

63

O que necessitamos para usar o LATEX


Para podermos tirar partido das potencialidades do LATEX so necessrios alguns
pr-requisitos. Para comear, necessrio ter uma distribuio do TEX. Existem
vrias sendo que algumas das mais conhecidas so TexLive (Unix/Linux, Mac
OS e Windows), MiKTeX (Windows). Estas so fceis de instalar podem ser
baixadas da internet gratuitamente. ainda necessrio um editor de texto e
um visualizador de DVI e/ou PDF. Existem muitas opes de editores de texto,
dependendo do sistema operativo que temos e do preo que estamos dispostos a
pagar ou no. Para um utilizador de Windows, uma boa opo , por exemplo, o
Winedit que fcil de usar e tem um preo bastante acessvel, especialmente para
estudantes. Notar que o NotePad est j includo no Windows e suficiente.
Para os utilizadores de Unix/Linux pode-se usar o velhinho vi ou algo mais
sofisticado como o Kile, que so gratuitos. H tambm vrios visualizadores
de ficheiros com extenso .dvi ou .pdf disponveis. Praticamente todas as
distribuies de LATEX tm um visualizador de ficheiros .dvi includo, mas este
formato no muito til, uma vez que estes ficheiros no contm embeded fonts
e a maioria dos visualizadores de documentos no os conseguem abrir. Para
visualizar ficheiros com o formato .pdf existem muitas alternativas disponveis
(Acrobat Reader, Okular, etc.), algumas delas gratuitas.

Etapas para gerar um texto LATEX


Em primeiro lugar, temos que escrever um programa num editor de texto com
um conjunto de comandos LATEX que definiro aquilo que pretendemos que seja
o resultado final. Terminada esta etapa temos que compilar o texto LATEX, cujo
nome tem extenso .tex, por exemplo, texto.tex. Para o compilar a partir
duma janela de comandos, usamos comandos como latex texto.tex ou pdflatex texto.tex (que geram, no primeiro caso, texto.dvi ou, no segundo caso,
texto.pdf). Tal pode estar disponvel atravs dum click se usarmos, por exemplo, o WinEdit para escrever o texto. Caso o processo de compilao falhe,
a linha problemtica assinalada pelo compilador e o utilizador, com maior ou
menor dificuldade consegue corrigir o problema. Depois de compilado, utilizamos
um visualizador falado na seco anterior e verificamos se obtivemos, de facto, o
pretendido.

64

CAPTULO 5. SISTEMAS DE ENSINO

Escrever em LATEX
Nesta seco vamos apresentar um pequeno resumo dos principais comandos
LATEX que permitem escrever texto ou matemtica em LATEX. No se pretende,
com isto, que o leitor consiga utilizar todas as potencialidades do LATEX. Estas
podem ser adquiridas lendo alguma bibliografia adequada, como a j referida
anteriormente ou, talvez mais eficientemente, fazendo pesquisas na internet. O
LATEX vastamente utilizado na comunidade cientfica e, como tal, h inmeros
documentos disponveis na internet que permitem aprender a fazer quase tudo.
Para alm disso existem ainda inmeros documentos com macros que simplificam
em muito a vida do utilizador de LATEX.

Escrever texto em LATEX


Para escrever um texto em portugus usando LATEX, alguns comandos so bastante teis. A lngua portuguesa usa acentuao diversa e por exemplo a cedilha
tem que ser definida.
Se o autor de um texto em LATEX quiser escrever uma palavra que tem acento
agudo, por exemplo a palavra gua, dever escrever o comando: \{a}gua. Para
escrever um acento grave por exemplo , deve escrever o comando \{A}. O
raciocnio para escrever uma palavra com um til o mesmo. Assim, podemos
generalizar que para escrever um caractere com algum acento, o comando dever
ser \< acento >{caracter}. Para escrever um c com cedilha () o comando ser
\c{c}. No entanto, com a correta utilizao de macros, pode-se evitar ter que
escrever portugus em LATEX desta forma.

Escrever matemtica em LATEX


Para escrever uma frmula matemtica em LATEX, a primeira coisa que o utilizador deve fazer mudar para o modo matemtico. Tal conseguido escrevendo a
expresso em causa entre dlares ($expresso$). Neste caso, a expresso matemtica pode aparecer no meio dum texto. Uma alternativa escrever uma equao.
Para tal, o autor dever comear por declarar a equao:
\begin{equation}
< expresso matemtica em LATEX>
\end{equation}
Vamos agora centrar-nos em alguns comandos LATEX que permitem definir a
expresso matemtica em LATEX mencionada acima. No vamos, certamente,

65
percorrer exaustivamente todos os comandos LATEX que permitem o autor escrever matemtica. Vamos falar nalguns desses comandos, podendo o utilizador
facilmente apreender os outros atravs de bibliografia adequada ou pesquisas na
internet.
Comecemos por algo muito simples: como escrever em LATEX uma frao, por
numerador
. Para tal o comando LATEX dever ser:
exemplo, denominador
\frac{numerador}{denominador}
Para escrever uma raiz quadrada do nmero n, o comando ser \sqrt{n}. Para
elevar um nmero a uma potncia p, numerop , dever escrever: numero{p}.
Para escrever a frmula resolvente das razes da equao ax2 + bx + c = 0, o
comando LATEX seria:
\begin{equation}
x=\frac {-b \pm \sqrt {b{2}-4ac}}{2a}
\end{equation}
Existem muitos outros comandos LATEX para escrever matemtica. Deixamos
mais dois exemplos.
Rb
Para escrever a f (x)dx, o comando LATEX poderia ser $\int_{a}{b}f(x)dx$.
20
P
Para escrever
Ki o comando LATEX poderia ser $\sum\limits_{i=1}{20}K_i$.
i=1

Igualmente til poder ser incluir uma figura, por exemplo, num ficheiro
fig.png centrada com altura de 5 cm. Para o conseguir poder escrever:
\begin{f igure}
\centering
\includegraphics[totalheight=5cm]{fig.png}
\end{figure}

66

CAPTULO 5. SISTEMAS DE ENSINO

Anexo B: TikZ
TikZ um programa que permite construir grficos em LaTeX. Nesta seco
apresenta-se uma breve descrio deste programa.
Para criar um ficheiro em LaTeX com grficos feitos em TikZ so utilizados
os comandos seguintes
1
2
3
4
5
6
7
8
9
10
11

\documentclass{article}
\usepackage{tikz}
\begin{document}
...
\begin{tikzpicture}
...
\end{tikzpicture}
...
\tikz ...
...
\end{document}

em que os comandos especficos do TikZ devem estar entre \begin{tikzpicture}


e \end{tikzpicture} ou a seguir a \tikz.

Pontos, linhas e setas


Para desenhar uma linha dum ponto inicial (a, b) a um ponto final (c, d), utiliza-se
o comando \draw (a,b) -- (c,d). Por exemplo, uma linha horizontal de 2 cm
obtm-se a partir de \tikz \draw (0,0) -- (2,0);

Em \tikz \draw[line width=2mm,gray] (0,0) -- (2,0); so especificados o


tamanho e a cor da linha

67

68

CAPTULO 5. SISTEMAS DE ENSINO

Tambm possvel desenhar linhas de pontos ou linhas tracejadas indicando a


forma da linha, dotted ou dashed respetivamente, como nos exemplos seguintes:
1
2
3
4

\begin{tikzpicture}
\draw[dotted] (0,1) -- (6,1);
\draw[dashed] (0,0) -- (6,0);
\end{tikzpicture}

Para desenhar setas basta acrescentar a forma da seta, por exemplo ->, ao
comando que desenha a linha do seguinte modo: \draw[->] (a,b) -- (c,d);.
A seguir apresentam-se alguns exemplos de setas:
1
2
3
4
5
6

\begin{tikzpicture}
\draw[dotted,|->] (0,3) -- (6,3);
\draw[dashed,|<->|] (0,2) -- (6,2);
\draw[|->>] (0,1) -- (6,1);
\draw[->,dashed] (0,0) -- (6,0);
\end{tikzpicture}

Formas geomtricas
Para desenhar quadrados, retngulos, tringulos, circunferncias e outras formas
geomtricas pode utilizar-se o comando \draw juntamente com comandos predefinidos que definem a forma geomtrica: rectangle, circle, ellipse. Outras
formas, por exemplo tringulos, podem ser simplesmente construdas indicando
os vrtices e unindo os vrtices com linhas. A instruo \filldraw preenche uma
forma geomtrica com uma cor. A seguir apresentam-se exemplos da aplicao
destes comandos.
O seguinte quadrado e o seguinte retngulo

69

aparecem com as instrues


1
2
3
4

\begin{tikzpicture}
\filldraw[gray] (0,0) rectangle (2,2);
\draw (3,0) rectangle (7,2);
\end{tikzpicture}

Para desenhar um quadrado ou um retngulo, basta definir os pontos inferior esquerdo (a, b) e superior direito (c, d) na instruo \draw (a,b) rectangle (c,d);.
Um tringulo pode ser obtido a partir de
\draw (0,0) -- (5,0) -- (2.5,2.5) -- (0,0);:

O comando \draw (0,0) circle (1); desenha uma circunferncia de centro


(0, 0) e raio 1.

e \draw (0,0) ellipse (1 and 0.5); desenha uma elipse, em que o eixo maior
tem comprimento 1 (cm) e o eixo menor 0.5 (cm).

Coordenadas polares
Nos exemplos anteriores os pontos esto especificados em coordenadas cartesianas
usando a notao (x,y), mas tambm possvel especificar pontos e construir

70

CAPTULO 5. SISTEMAS DE ENSINO

grficos em coordenadas polares indicando o ngulo a e a distncia d do ponto


origem da forma (a:d). O comando \draw (0,0) arc (a:b:d); permite desenhar um arco de raio d partindo do ponto (0,0) entre os ngulos a e b. O
exemplo seguinte ilustra a utilizao destes comandos.
1
2
3
4
5
6
7

\begin{tikzpicture}
\draw[thick] (0,0) -- (1,0);
\draw (0,0) -- (90:1);
\draw[thick,gray] (0,0) -- (180:1);
\draw[thick,dashed] (1,0) arc (0:90:1);
\draw[thick,gray] (0,1) arc (90:180:1);
\end{tikzpicture}

Legendas
Para acrescentar legendas a figuras utiliza-se a instruo
\node at (x,y) [localizao] {$legenda$};
indicando o ponto (x, y) onde se pretende inserir uma legenda e a localizao da
legenda em relao a esse ponto, que pode ser right, left, below ou above.
Vejam-se, para tal, os exemplos seguintes:
1
2
3
4
5
6
7
8

\begin{tikzpicture}
\draw (0,0) -- (2,2);
\node at (0,0) [left] {$(0,0)$};
\node at (2,2) [right] {$(2,2)$};
\filldraw[black] (0,0) circle (0.8pt);
\filldraw[black] (2,2) circle (0.8pt);
\draw (6,0) rectangle (8,2);
\end{tikzpicture}

(2, 2)

(0, 0)

71

Domnios e grficos de funes


Para representar grficos de funes de uma varivel ou reas de domnios planos
num sistema de coordenadas cartesianas (x, y), comea-se por definir os eixos,
supondo, por exemplo, que os valores de x e y variam de 5 a 5 (ver linhas 2 e
3 do exemplo que se segue).
1
2
3
4
5
6
7
8
9
10
11
12

\begin{tikzpicture}
\draw[->](-5,0)--(5,0) node[right]{$x$};
\draw[->](0,-5)--(0,5) node[above]{$y$};
\foreach \x/\xtext in {-3,-1,1,3}
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$\scriptstyle \xtext$};
\foreach \y/\ytext in {-3,-1,1,3}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$\scriptstyle \ytext$};
\foreach \x in {-4,...,4}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-4,...,4}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture}

y
3

1
3

1
1

As instrues nas linhas 4 7 servem para escrever valores nos eixos, neste caso
3, 1, 1, 3, e com as instrues nas linhas 8 11 so apresentadas marcas nos
dois eixos que correspondem aos valores inteiros no intervalo de 4 a 4.
No exemplo que se segue, apresenta-se uma circunferncia de centro (2, 2) e
raio 1 num sistema de coordenadas cartesianas (x, y).
1
2
3

\begin{tikzpicture}
\draw[->](-1,0)--(4,0) node[right]{$x$};
\draw[->](0,-1)--(0,4) node[above]{$y$};

72
4
5
6
7
8
9
10
11
12
13
14
15

CAPTULO 5. SISTEMAS DE ENSINO

\draw (2,2) circle (1);


\node at (2,2) [below] {$\scriptstyle (2,2)$};
\filldraw[black] (2,2) circle(0.8pt);
\foreach \x/\xtext in {1,2,3}
\draw[shift={(\x,0)}] (0pt,0.3pt) -- (0pt,-0.3pt) node[below] {$\scriptstyle \xtext$};
\foreach \y/\ytext in {1,2,3}
\draw[shift={(0,\y)}] (0.3pt,0pt) -- (-0.3pt,0pt) node[left] {$\scriptstyle \ytext$};
\foreach \x in {-4,...,4}
\draw (\x cm,-1pt) -- (\x cm,1pt);
\foreach \y in {-4,...,4}
\draw (-1pt,\y cm) -- (1pt,\y cm);
\end{tikzpicture}

y
3

2
(2,2)
1

(cf. linha 4) que coloca uma etiqueta (o do ponto (a, b).


Para desenhar o grfico de uma parbola pode utilizar-se a instruo
\draw (x1,y1) parabola bend (a,b) (x2,y2);,
indicando o vrtice da parbola (a,b) e dois pontos (x1,y1) e (x2,y2) que
pertencem parbola. Por exemplo, o grfico de y = x2 pode ser desenhado da
seguinte forma:
1
2
3
4
5
6
7
8

\begin{tikzpicture}
\draw[->,thick] (-2.1,0) -- (2.4,0) node[right] {$x$};
\draw[->,thick] (0,-1.1) -- (0,2.4) node[above] {$y$};
\draw (-1.5,2.25) parabola bend (0,0) (1.5,2.25);
\node at (1.3,1.3) [right] {$\scriptstyle y=x^2$};
\foreach \x in {-2,-1,1,2}
\draw (\x,-.1) -- (\x,.1) node[below=4pt] {$\scriptstyle\x$};
\foreach \y in {-1,1,2}

73
9
10

\draw (-.1,\y) -- (.1,\y) node[left=4pt] {$\scriptstyle\y$};


\end{tikzpicture}

que devolve
y
2
y=x2
1

1
1

74

CAPTULO 5. SISTEMAS DE ENSINO

Captulo 6
Anexo C: Maxima
Funes
A funo ratsimp(f) simplifica a expresso f e todas as suas subexpresses,
apresentando o resultado de forma racional.
Por exemplo, a partir de
!
p
(x 1)3/2 (x 1)(x + 1)
p
ratsimp
;
(x 1)(x + 1)

2 x1
obtm-se 2
, o resultado de
x 1


1
ratsimp 1 +
;
x
x+1
e
aparece como quociente de dois polinmios:
x



3
4
ratsimp

;
2
5
23
simplifica a expresso, apresentando o resultado
.
10
A funo expand(f) expande a expresso f , calculando o produto de somas
de expresses.
Por exemplo,
expand((1+x+x^2)*(1-y));
75

76

CAPTULO 6. ANEXO C: MAXIMA

devolve x2 y xy y + x2 + x + 1.
A funo taylor(f, x, a, n) determina a srie de Taylor de ordem n da
funo f de varivel x no ponto a.
Por exemplo,
taylor(exp(x), x, 0, 4);
2

devolve 1 + x + x2 + x6 + x24 .
Para calcular a srie de Taylor de uma funo de vrias variveis x1, x2, ...
utiliza-se
taylor(f, [x1,x2,...], a, n);.
Neste contexto, pode ser til utilizar o comando
1

powerdisp:true\$

que inverte a ordem da soma num polinmio para que as variveis sejam ordenadas
por ordem crescente nos expoentes.
A funo diff(f, x, n) calcula a derivada de ordem n da funo f em
relao varivel x. Escrevendo, por exemplo,
diff(sin(3*x*y)+x^4*y^2+y,x,1),
obtm-se 3y cos(3xy) + 4x3 y 2 .
A funo integrate(f,x) calcula o integral indefinido da funo f em ordem
varivel x. Por exemplo,
integrate(sqrt(x+1),x)
3
2
devolve (x + 1) 2 .
3
Para calcular o integral definido da funo f em ordem varivel x, com
limites de integrao a e b, utiliza-se integrate(f,x,a,b).
Escrevendo
integrate(x^2,x,1,2),

obtm-se

7
.
3

77

Operadores
Operador de igualdade
Em MAXIMA, o operador de igualdade representado pelo smbolo =.
Atribuio de variveis
Para atribuir variveis utiliza-se o operador :. Por exemplo, para atribuir o
valor 3 varivel a e o valor 2 varivel b escreve-se
a:3;b:2;
Executando, depois,
a+b;
obtm-se 5.
Definio de funes
O operador := permite definir funes da seguinte forma. Por exemplo, querendo definir as funes f (x) = x + 2 e g(x) = x2 e calcular os valores das funes
para x = 3 aciona-se
f(x):=x+2;
g(x):=x^2;
f(3);
g(3);
As duas ltimas instrues devolvem 5 e 9, respetivamente. Escrevendo, por
exemplo, f(x)+g(x); obtm-se x^2+x+5.
Neste contexto, pode ser til a aplicao do operador . Quando este operador aplicado a um comando, a expresso da entrada (funo ou valor numrico)
substituda na expresso do comando. Por exemplo, para calcular a derivada
de uma funo que j foi definida anteriormente, efetua-se
dg(x):=(diff(g(x),x,1));
dg(3);

78

CAPTULO 6. ANEXO C: MAXIMA

onde g(x) = x2 , que devolve dg(x):=2x e 6, respetivamente.

Atribuio de valores a expresses


O operador :: permite atribuir um valor a uma expresso. Por exemplo, a
base do logaritmo natural representada em MAXIMA por %e e para alterar
a representao deste valor atribuindo-o notao usual e pode utilizar-se o
comando
e::%e.
Operador de negao

Bibliografia
[1] Amruth, N. K. (2005). Generation of problems, answers, grade and feedback
case study of a fully automates tutor in Journal on Educational Resources
in Computing (JERIC), Vol. 5, Issue 3, setembro, artigo no 3.
[2] Baudisch, D., Gesell, M. & Schneider, K. (2009). Online exercise system A
Web-based tool for Administration and Automatic Correction of Exercises,
in Cordeiro, J. A. M., Shishkov, B., Verbraeck, A. & Helfert, M. (eds.),
Computer Supported Education (CSEDU). Lisboa, pp. 104-110.
[3] Belmonte, M. V., Guzmn, E., Mandow, L., Milln, E. & Cruz, J. L. Prez
de la (2002). Automatic Generation of Problems in Web-based Tutors, in
Jain, L. C., Howlett, R. J., Ichalkaranje, N. S. & Tonfoni, G. (eds.), Virtual
Environments for Teaching & Learning. World Scientific Publishing, Series
on Innovative Intelligence 1, pp. 237281.
[4] Dettori, G., & Persico, D. (2011). Fostering Self-Regulated Learning through
ICT. Institute for Education Technology-National Research Council, Italy.
[5] Guerman, A., Santos, C., Costa, R., Raposo, A., Mendona, A. & Lopes, C.
(2007). Plataforma SEMENTE: Tecnologias de Informao para o Ensino na
UBI. In Proceedings of the Engenharias07 Inovao & Desenvolvimento
Conference. Covilh, 2123 November.
[6] Gurtovoi, A., Guerman, A. & Santos, C. (2005). Sistema de Ensino Baseado
no Computador: Gerador Automtico dos Exerccios. In Proceedings of the
Engenharia2005 Inovao e Desenvolvimento Conference. Covilh, 2123
November.
[7] Pereira, R. M. S., Brito, I., Machado, G. Q., Malheiro, T., Vaz, E., Flores,
M., Figueiredo, J., Pereira, P. & Jesus, A. (2010). New e-learning objects for
79

80

BIBLIOGRAFIA
the Mathematics courses from Engineering degrees: Design and Implementation of Question Banks in Maple T.A. using LaTeX. International Journal
of Education and Information Tecnologies, Vol. 4, pp. 714.

[8] Rewitzky, I. M. (2001). Towards Automated Testing, in Proceedings of the


Fifth CAA Conference. Loughboroug: Loughboroug University.
[9] Siegel, M., Derry, S., Kim, J. B., Steinkuehler, C., Street, J., Canty, N.,
Fassnacht, C. Hewson, K., Hemlo, C. & Spiro, R. (2000). Promoting Teachers Flexible Use of the Learning Sciences through case- based Problem
Solving on the WWW: A Theoretical Design Approach, in Fishmann, B. &
OConnor-Divelbiss, S. (eds.), Fourth International Conference of the Learning Sciences. NJ: Erlbaum, Mahwah, pp. 273279.
[10] Toms, A. P. & Leal, J. P. (2003). A CPL-based tool for Computer aided
generation and solving of Maths exercises, in Dhal, V. & Wadler, P. (eds.),
Proceedings of the Fifth International Symposium on Pratical Aspects of
Declarative Languages, PADL2003. Springer-Verlag, lecture notes in Computer Science 2562, pp. 223240.
[11] Toms, A. P., Leal, J. P. & Domingues, M. A. (2007). A Web Application for
Mathematics Education, in Advances in Web Based Learning, ICWL 2007.
Springer-Verlag, lecture notes in Computer Science 4823, pp. 380391.
[12] Toms, A. P., Moreira, N. & Pereira, N. (2005). Designing a Symbolic Solver
for Arithmetic Constraints for Computer Assisted Learning (relatrio tcnico
DCC-2005-6), DCC-FC & LIACC, Universidade do Porto.
[13] Toms, A. P., Moreira, N. & Pereira, N. (2006). Designing a Solver for
Arithmetic Constraints to Support Education in Mathematics, in Artificial
Intelligence Applications and Innovations, AIAI 2006. Springer and IFIP,
IFIP Series, Vol. 204, pp. 433441.
[14] Toms, A. P. & Vasconcelos, P. (2001). Generating Mathematics Exercises by
Computer (relatrio tcnico DCC-2001-6), DCC-FC & LIACC, Universidade
do Porto.