|
 |
|
|
|
Esteu passant l'equador del curs. Heu anat veient molts exemples sobre
gràfics i les autores i l'autor del curs hem optat (ja ho haureu notat!)
per intentar donar una visió global de la Wiris amb pinzellades de les
múltiples possibilitats d'aquest nou recurs, molt especialment en l'aspecte
gràfic.
Havíem pensat que podria seria útil tenir una recopilació i sistematització
de totes les comandes sobre gràfics on s'expliqui la sintaxi, què poden
fer i què no, etc., però com que, per una banda, aquesta sistematització
la podeu trobar a l'apartat
de gràfics de la guia de la Wiris i a l'índex
alfabètic i com que, per altra banda, ben segur que, fins en aquest
moment, hi haurà hagut moltes intervencions al fòrum del curs,
amb preguntes i respostes (... i amb descobriments, ben segur!), doncs
aquestes dues idees ens han portat a plantejar aquesta pàgina com si fossin
preguntes amb resposta.
Moltes d'aquestes són les preguntes que ens hem fet mentre escrivíem
el curs. Trobareu les qüestions ,
amb les respostes
que els hem donat, acompanyades d'exemples en pantalles actives
i d'altres reflexions complementàries ...
...i esperem que per a l'any que ve les vostres intervencions ajudaran
a completar els continguts d'aquesta pràctica.
|
|
|
|
La sintaxi de les comandes gràfiques |
|
|
|
Recordarem les comandes amb les convencions següents:
- Un argument indicat amb [...] es pot ometre.
- {LL} representa una llista d'objectes que
es volen dibuixar (geomètrics o capses de text); si només
és un objecte, es poden ometre les claus {...}
que defineixen la llista.
- T representa un objecte de text que es vol
escriure.
- {Opc} representa una llista d'opcions per
modificar els atributs de dibuix,
d'escriptura
o les característiques del tauler.
- P representa un punt.
- r,s representen nombres reals.
|
|
Les comandes d'acció fonamentals són:
dibuixa ( {LL} [, {Opc}] )
representa ( {LL} [, {Opc}] )
escriu ( T, P, [, {Opc}])
|
|
Per establir característiques del tauler gràfic:
tauler ( [ P, r,s] [, {Opc}] )
|
|
|
|
Preguntes sobre els elements que podem dibuixar
o representar |
|
|
1.-
|
Amb una sola comanda de dibuix o escriptura es poden dibuixar o escriure
diversos elements alhora?
Pel que fa a les comandes de dibuix, sí. S'han d'utilitzar llistes
d'elements que poden estar definides prèviament. Algun dels elements
d'aquesta llista pot ser una capsa de text que permet fer objectes de
text sofisticats. Ara bé, la comanda per escriure només
admet com a primer argument un objecte únic, però es poden
concatenar diversos textos o nombres amb el símbol |.
És interessant conèixer aquesta possibilitat de construir
una llista d'objectes abans d'ordenar una comanda de dibuix i que els
objectes de la llista poden ser ben diversos (punts, polígons,
capses_de_text, etc.). Si es fa així això permet dibuixar
uns objectes o uns altres segons si es compleix una condició o
no. Es tracta de construir l'esmentada llista amb el signe :=
i amb comandes de programació. 
|
|
|
2.- |
Com és que si dibuixo un triangle no puc moure'l?
Segurament és que només has fet dibuixar el triangle; perquè
puguis interactuar, també has de dibuixar els vèrtexs, perquè només
es poden moure punts.
És interessant tenir en compte que si es construeix una llista d'objectes
i després es fa dibuixar aquesta llista, llavors la comanda tracta
aquesta llista com a objecte únic. Si ho heu fet així, encara
que alguns dels objectes de la llista siguin punts, no els podreu moure.
 |
|
|
3.-
|
Com és que si dibuixo un triangle ple i el baricentre no veig el
baricentre?
Això pot ser que tingui relació amb l'ordre amb què
dibuixes els objectes. Prova de dibuixar primer el triangle i després el
baricentre.  |
|
|
4.-
|
Es poden entrar valors des del tauler gràfic?
Estrictament, no. La intereactivitat sempre s'aconsegueix movent un punt.
Però es pot definir un punt mòbil i fer servir les coordenades
d'aquest punt com a valors d'entrada. Ja heu vist exemples en què
hem fet quelcom semblant, fins i tot amb un nombre complex o dibuixant un
menú per triar opcions. Podeu consultar un altre exemple. |
|
|
5.-
|
Si es vol fer servir la comanda punt_més_proper,
és necessari dibuixar també el punt auxiliar?
No és necessari ni, en general, gaire recomanable. De fet, si no
es dibuixa, el punt mòbil auxiliar queda amagat al mateix lloc que
el punt_més_proper. |
|
|
6.-
|
Per què em funciona bé la comanda punt_més_proper
amb la corba representativa de y = x2 i no amb y
= x3? És que no es pot moure un punt per la gràfica
d'una funció?
És que la comanda punt_més_proper
restringeix el moviment d'un punt per una recta, un segment de recta o
una cònica.
Ara bé, com heu vist en diversos exemples,
podeu definir un punt que es mogui per l'eix d'abscisses i la imatge d'aquest
punt es mourà per la gràfica de la funció.
|
|
|
7.-
|
Per què si faig representa amb les funcions
sin(x) i sin(2x) em surten dos gràfics gairebé
idèntics i en canvi amb dibuixa això
no passa?
Perquè la comanda representa fa una optimització
del tauler gràfic i marca les graduacions dels eixos de la manera
que li sembla més convenient. En canvi, amb dibuixa
podem controlar nosaltres les garduacions que, per defecte, són iguals
en tots dos eixos. |
|
|
8.-
|
Per què si faig representa amb la funció
y = ex · x no se'm destaca cap element especial?
És que aquesta comanda no s'aplica a tots els objectes geomètrics
ni a totes les funcions. Fixeu-vos que en aquest cas surt un missatge que
diu: "Representació d'una funció usant avaluació
en punts arbitraris", cosa que equival a dir que en lloc de fer l'acció
de la comanda representa s'ha fet exactament
el mateix que amb dibuixa. |
|
|
9.-
|
Defineixo una corba en funció d'un punt
mòbil que em dóna paràmetre i li aplico representa
i la corba no se m'actualitza. Què faig malament?
La complexitat de la comanda representa i l'estructuració interna
del programa fan que això sigui sempre així. No és
que facis res malament, és que representa
no permet l'actualització interactiva.
Podeu
observar com a cas més senzill d'aquest fet de no-interactivitat
de la comanda representa que si l'apliqueu a un punt, aquest punt
no es pot moure.
|
|
|
|
Preguntes i respostes sobre atributs del dibuix |
|
|
1.-
|
Crec que dono correctament l'ordre per dibuixar una circumferència
amb gruix_línia=3 i no me'n fa cas.
Per què pot ser?
Si la Wiris dibuixa la circumferència, però el gruix de
la línia no és el que li has indicat, és gairebé
segur que no tens el Java 2 instal·lat.
Però si el que passa és que et dóna un missatge d'error,
és que hi tens algun error sintàctic. No deu ser que només
has posat aquesta opció i has escrit gruix_línia=3
sense claus?
|
|
|
2.-
|
Crec que dono correctament l'ordre per dibuixar una circumferència
de color="vermell" i no me'n fa
cas i la dibuixa negra. Què faig malament?
La sintaxi correcta és color=vermell,
sense cometes. Això és així perquè, si bé
els colors s'haurien de donar en format RGB, per facilitar la feina, la
Wiris ja té definits uns quants valors de colors. Així,
per exemple, vermell={255,0,0} o bé cian={0,255,255}.
Això
que s'acaba de comentar fa que no es pugui fer servir vermell ni
cian, per exemple, per definir una variable identificadora en un
problema. Com tampoc es pot fer servir RR, per exemple, que identifica
el cos dels nombres reals ni cert o fals, que són
els booleans bàsics. Tots aquests mots que ja estan predefinits
s'escriuen sense cometes.
|
|
|
3.-
|
Puc fer servir una mateixa comanda dibuixa per
obtenir, per exemple, una recta de color vermell i una altra de color
blau?
No. L'atribut de color és comú per a tots els objectes que
es dibuixen amb la mateixa comanda. Per fer el que comentaves a la qüestió,
s'han d'escriure dues comandes dibuixa.
Semblantment succeeix amb el fet que no es
pot fer que aparegui l'etiqueta d'alguns elements d'una comanda dibuixa
i d'altres no, o bé que alguns punts d'una mateixa comanda tinguin
una mida diferent dels altres. Si volem aconseguir-ho, hem d'ordenar diverses
comandes.
|
|
|
4.-
|
Ara una pregunta en certa manera inversa a l'anterior. Si he de fer diverses
comandes de dibuix i en totes elles vull repetir una part de les opcions
gràfiques, tinc alguna manera de simplificar la feina?
Sí, cal agrupar tots els atributs que
es vulguin repetir en una llista, definir-la com a variable i afegir-la
a la llista d'altres opcions.
|
|
|
5.-
|
Si vull que al costat d'un punt mòbil surti el rètol Punt
de sortida, per exemple, com ho puc fer?
Podries anomenar el punt amb l'identificador Punt_de_sortida i
posar mostrar_etiqueta=cert entre les opcions de dibuix, però
això pot ser enfarfegador si has de fer servir diverses vegades
el punt en la construcció del codi i d'altra banda sortiria escrit
amb els subratllats enllaçant paraules, i no és estètic.
La millor opció és dibuixar el punt com a únic objecte
en una comanda de dibuix i escriure com a opcions etiqueta="Punt
de sortida", mostrar_etiqueta=cert.
|
|
|
6.-
|
Com puc control·lar el lloc on s'escriu l'etiqueta d'un
objecte?
Si es fa com una etiqueta no es pot control·lar. Si ho vols fer
realment has de definir una capsa_de_text amb el text que vulguis
que acompanyi l'objecte i llavors sí que tens moltes opcions que
ajuden a col·locar el rètol on t'interessi.
|
|
|
7.-
|
Hi ha alguna manera d'interactuar sobre el color d'un objecte o sobre
altres atributs de dibuix?
No. Encara que els atributs de dibuix es poden definir amb variables,
passa com amb la comanda representa. Els atributs
de dibuix s'adjudiquen la primera vegada que s'executa la comanda i no
s'actualitzen, perquè són propis de la comanda i no de l'objecte
que és el que en realitat s'actualitza.
|
|
|
|
|
|
Preguntes i respostes sobre la preparació
del tauler gràfic |
|
|
1.-
|
Com és que si vull que no em dibuixi la malla i poso mostrar_malla(fals)
i després defineixo el tauler em crea dos taulers?
Has de definir primer el tauler
i després afegir mostrar_malla(fals)o
bé afegir al tauler aquesta opció
{mostrar_malla=fals}
Totes les opcions del tauler tenen les dues
maneres que es poden veure en aquesta pregunta per ser indicades, ja sigui
passant directament la dada (és el cas de mostrar_malla(fals),
o bé proporció(0.5)
o bé altura_finestra(100))ja
sigui definint-les en la llista d'opcions del tauler (cosa que en els
exemples faríem com mostrar_malla=fals,
proporció=0.5, altura_finestra=100);
però si es vol fer servir l'opció directa, ha de ser alternativa
a la definició del tauler o bé després de definir-lo.
|
|
|
2.-
|
És possible que en moure el ratolí pel tauler gràfic
no es vegi el nom de les figures ni cap altra informació?
És possible. Has de
posar entre les opcions de tauler (d'una de les dues maneres vistes en
el comentari anterior) informació("cap")o
{informació="cap"}
Per aclarir-ho, heu de saber que lopció
per defecte és informació("nom")i
per això està activada la icona corresponent. També
podem posar informació("valor"),
o bé informació("definició")
i així activem una icona o una altra del tauler gràfic.
|
|
|
3.-
|
És possible que, en lloc del nom del punt (o l'etiqueta) que
podem fer aparèixer automàticament en un dibuix, el que fem
que es mostri de manera fixa sigui el valor o la definició?
No és possible tal com
s'ha formulat. Tanmateix, a part d'activar les icones corresponents del
tauler gràfic, hi ha maneres d'aconseguir-ho fent servir capses_de
text o la comanda escriu. |
|
|
4.-
|
És possible que apareguin en el tauler o la finestra de treball
resultats irracionals en aproximació decimal?
La comanda constants_reals(fals)
presenta aquests valors en forma aproximada. Estudieu també l'efecte
sobre el que es pregunta que estigui la malla a la vista (la Wiris ho interpreta
sovint com un càlcul amb valors exactes) o que no ho estigui (sinònim,
sovint, de valors aproximats).  |
|
|
|
|
|
Preguntes i respostes sobre escriu/capsa_de_text |
|
|
1.-
|
Per què la comanda escriu("text")
no condueix a cap acció?
Alerta amb la sintaxi! Cal afegir sempre un punt: escriu("text",punt(a,b)).
Els altres atributs són opcionals, però el punt s'ha de
posar sempre.
|
|
|
2.-
|
Són
equivalents les comandes escriu i capsa_de-text?
La
comanda escriu és una manera ràpida
de dibuixar un objecte de tipus capsa_de_text.
És a dir, capsa_de_text (que
en realitat és una funció que defineix un objecte) és
el fonament sintàctic de la comanda escriu.
Es pot dir que escriu("text", punt, opcions)
és equivalent a definir amb tot detall un objecte de tipus capsa_de_text
i dibuixar-lo; en el cas anterior s'hauria d'actuar així: T=capsa_de
text("text", punt, opcions);
dibuixa(T, altres opcions).
Ara
bé, el treball amb capses de text dóna moltes més
possibilitats de definir textos i rètols sofisticats amb l'ajut
de amb..en; això no es pot fer amb la comanda d'escriptura
simple, que obliga a un text únic.
|
|
|
3.-
|
Com
puc controlar la posició d'un text respecte d'un punt mòbil?
Hi
ha unes opcions
d'escriptura que podeu consultar al manual de la Wiris i que permeten
modificar la posició relativa del text i el punt de referència,
però sempre queda el recurs de controlar-ho a mà, sumant
o restant al punt un vector i així definim exactament el punt on
volem que comenci el text.
|
|
|
4.-
|
He
provat de fer un programa perquè si es compleix una condició
s'escrigui una cosa i si no es compleix se n'escrigui una altra i no em
funciona. Com puc fer que una resposta de la Wiris al tauler sigui diferent
segons si es verifiquen o no unes condicions?
Definint
prèviament una variable que tingui valors diferents segons les
condicions.
És
interessant, per acabar, recordar aquesta característica del llenguatge
de programació i de la manera de treballar de la Wiris. A dintre
de les sentències condicionals o de repetició no hi poden
anar comandes per fer una acció visible, únicament les que
serveixen per construir o modificar els objectes. La mostra de resultats
en el tauler gràfic és única, per això s'han
de definir abans tots les objectes.
|
|
|
|
|
 |
|
|
|
|