• Nenhum resultado encontrado

3.1 ATRIBUIÇÃO DE NOMES A EXPRESSÕES Derive:

No documento COMPARAÇÃO DE SISTEMAS DE PROGRAMAÇÃO (páginas 54-59)

Considerando que no decorrer da resolução de um dado problema surgem-nos por vezes valores que importa guardar é de interesse compreender como tal se pode fazer utilizando as capacidades do Derive. Um dos métodos possíveis é usar a sintaxe

variável:=expressão.

Não podemos fazer atribuições a todo o tipo de variáveis, uma vez que algumas delas estão reservadas para o próprio sistema. Assim, ao tentarmos fazer uma atribuição a Pi, obtemos um erro de sintaxe uma vez que, a expressão Pi representa a constante ππππ.

Podemos também utilizar o Derive para construirmos nós mesmos as funções com que queremos trabalhar.

Podemos definir uma função através do menu Declare e do submenu Function

Definition. Depois temos de introduzir o nome da função juntamente com os

argumentos e a expressão que a define como de seguida se exemplifica.

Outra forma seria usar a sintaxe função(x,y):=expressão.

Definamos por exemplo uma função que recebendo dois números fornece-nos o produto dos dois. Aqui não necessitamos de avaliar a expressão que define a função.

Maple:

O Maple permite que sejam dados nomes a expressões a fim de facilitar o nosso trabalho. Para tal usa-se a seguinte sintaxe: nome := expressão. Podemos dar um nome a qualquer expressão Maple.

A partir deste momento e se nada for dito em contrário, a expressão x guarda o valor 2.

Tentemos fazer nova atribuição:

.

Os nomes em Maple podem conter qualquer carácter e “underscores”, mas não podem começar por um número.

O erro surgido deve-se ao uso indevido do “ç”.

No entanto, nem todos os nomes estão disponíveis para variáveis. O Maple tem predefinidos alguns nomes que por esse facto estão reservados. Tentando atribuir a um nome que já está reservado ou predefinido, o Maple emite uma mensagem de erro, informando que o nome está protegido.

Não ficam por aqui as possibilidades abertas por este programa. Podemos também tirar partido da possibilidade de sermos nós próprios a definir as funções que pretendemos utilizar.

Passamos assim a dispor de mais uma função com a qual poderemos trabalhar como se a mesma estivesse predefinida. Assim, é possível por exemplo calcular a imagem de um dado número por meio desta função.

O procedimento anterior poderá parecer pouco útil, mas o mesmo ganha relevância quanto maior for o trabalho a realizar e mais complexa for a função.

Vejamos ainda um exemplo que nos mostra o meio de definir uma função que possua mais do que uma variável.

Mathematica:

No Mathematica, podemos atribuir valores a variáveis. A atribuição pode ser feita através de uma atribuição imediata ou através de uma atribuição diferida. Na primeira, usamos o sinal de igualdade (nome = expressão), enquanto que na segunda usamos := (nome := expressão). Vejamos em primeiro lugar como se processa a atribuição imediata.

b=3

3

a= b+1

4

Portanto o valor de a passou a ser 4 enquanto que em b ficou armazenado o valor 3.

c :=b+1 c 4 ?c Global`c c :=b+1 ?a Global`a a=4

Portanto à variável c fica associado o valor de b+1. Repare-se que à variável a ficou associado o valor 4.

Apesar do que atrás foi dito ainda ficamos com a ideia que ambos os tipos de atribuição produzem o mesmo efeito nas variáveis em causa. Ora, na realidade tal não é assim.

Continuemos ainda com o exemplo anterior e façamos uma nova atribuição a b.

b=7

7

Vejamos agora os valores guardados em a e c respectivamente.

a

4

c

8

Detectamos aqui a diferença entre os dois tipos de atribuição. Enquanto que a variável a não foi alterada, a variável c, pelo facto de ter sido definida através de uma atribuição diferida, foi modificada, isto porque a c está associado o valor de b+1. Por consequência ao alterar o valor de b estamos também a fazer o mesmo na variável c.

Consoante a situação em que nos encontramos, importa pois utilizar a atribuição que mais vantagens nos dá. Refira-se ainda que normalmente é preferível utilizar a atribuição imediata quando se trata apenas de armazenar valores em variáveis. A atribuição diferida é particularmente útil quando pretendemos definir funções por atribuição paramétrica da qual falaremos no capítulo 5.

Apesar do grande número de nomes que podemos dar às variáveis ou funções por nós definidas, existem alguns nomes que o Mathematica reserva para si, como sejam as funções predefinidas e as constantes. Caso tentemos fazer uma atribuição que não seja permitida, imediatamente surge-nos um erro que nos indica que o símbolo ou expressão em causa está protegido.

Pi=3.1415

Set::wrsym: Symbol p is Protected.

3.1415

Veremos agora como definir funções por abstracção funcional. A definição de uma função em Mathematica obedece à construção:

onde w é um nome ou uma lista de nomes que representa os parâmetros da função e

corpo é uma expressão Mathematica que traduz os cálculos que a função deve efectuar.

quadcub= Function

@

x, x^2+x^3

D

Function

@

x, x2+x3

D

Definida a função que soma o quadrado de um número com o seu cubo, podemos utilizá-la para calcular as imagens de alguns objectos.

quadcub

@

1

D

2

quadcub

@

2

D

12

Definamos ainda mais uma função que dados dois números calcula o produto da soma dos dois com a sua diferença, trata-se pois de uma função de dois argumentos.

prod=Function

@8

x, y

<

,

H

x- y

L

*

H

x+y

LD

Function

@8

x, y

<

,

H

x- y

LH

x+y

LD

prod

@

2, 0

D

4 prod

@

2, 3

D

-5

Repare-se que neste caso, os argumentos da função que definimos são colocados entre chavetas constituindo uma estrutura a que se dá o nome de lista da qual falaremos ainda neste capítulo.

3.2. - APAGAR VARIÁVEIS

No documento COMPARAÇÃO DE SISTEMAS DE PROGRAMAÇÃO (páginas 54-59)