HOME Technology Technology
SITE'S MAP SADEX
   
   
   
 
Elements del llenguatge de programació Winlogo

En la pàgina precedent hem definit WIN-LOGO i el Micromón de SADEX. Tot seguit aprofundirem en l'entorn de programació WIN - LOGO.

El primer que has de fer és tenir el programari. Tots els centres solen tenir-lo. Consulta el Coordinador informàtic del teu, i si fos el cas hauràs de demanar-lo, podeu fer-ho demanant-la al PIE mitjançant un escrit del vostre centre en què se'n justifiqui el seu ús. Per a més informació sobre Win Logo per a Windows podeu contactar amb el Sr. Joan Busquets a l'adreça de l'Aula de Recursos de Tecnologia.

Joan Busquets
Aula de recursos de Tecnologia
http://www.xtec.es/aulatec
Tel. 936 920 660
Centre de Documentació i Experimentació en Ciències i Tecnologia

La seva instal·lació és del més senzill, segueix les instruccions.  

Darrerà versió existent als IES.

Un cop instal·lat en executar-lo veuràs el següent:

Ens interessa tenir sempre visibles tres finestres, les més importants de WIN-LOGO:

Finestra de treball
En ella podrem executar ordres - comandaments, instruccions - directes, o executar procediments editats en la finestra d'edició.
Finestra d'edició
Serà aquí on editarem, modificarem, desarem o carregarem procediments. Aquestes operacions també les podríem efectuar dins la finestra de treball, però l'ordre, la lògica i l'experiència dels desenvolupadors d'aplicacions - aquí procediments - ens indica que el més encertat és emprar aquesta finestra.
Finestra de textos
És en aquesta finestra on visualitzarem els missatges, observacions, etc., que ens mostri l'entorn.
Quan caldrà visualitzar o monotoritzem alguna mesura també serà necessària la finestra de gràfics.
 
Com ja hem dit abans: si temin connectat el SADEX al nostre PC, carregarem el Micromón dins WIN-LOGO. Executarem la següent instrucció dins la finestra de treball:
Què és el primer que farem?
El programa farà un test dels mòduls connectats i ens informarà tot seguit. Podrem programar procediments, depurar-los i comprovar el seu funcionament en el SADEX.
recupera "sadex
Si no temin connectat el SADEX al nostre PC, carregarem el Micromón dins WIN-LOGO per treballar només en mode programació. Executarem la següent instrucció dins la finestra de treball:
 
El programa entra en un mode virtual - simulació - de funcionament i haurem de definir els mòduls que volem simular que estan connectats. Seguint les instruccions atentament és un mode de treball fàcil d'assimilar pels nostres alumnes. Aquests podran programar els procediments i depurar-los però hauran de provar-los en l'equip que tingui el SADEX connectat. Qüestió de paciència i organització.
recupera "simsadex
Podem fer-ho de dues maneres: directament o en mode programació.
Com programem en LOGO?
Escriurem directament en la finestra de treball les instruccions - comandaments o primitives - i en prémer <Return> aquestes s'executaran.
Mode directe:
activa.sortida "a 2
per exemple:
la sortida 2 de la via a s'activarà tot juts pitjem <Return>
 
Dins la finestra d'Edició utilitzem aquests comandaments o primitives per a construir procediments. Cal que entenguem un procediment com un conjunt agrupat i estructurat d'instruccions amb la finalitat de solucionar un problema de control informàtic. Podem dir doncs, que és un element més complex que una simple instrucció.
Mode programat:
  Com creem un procediment?
Tot procediment començarà: procediment nom
Tot seguit trobarem les primitives o comandaments: ordre 1
  ordre 2
  ...........
Tot procediment finalitzarà amb l'instrucció fi: fi
procediment llums
activa.sortida "a 1
espera 200
desactiva.sortida "a 1
activa.sortida "a 2
espera 200
desactiva.sortida "a 2
activa.sortida "a 3
espera 200
desactiva.sortida "a 3
fi

per exemple:

Funcionament cíclic de sortides amb un temps d'espera de 2 segons entre activacions.

200 = 200 centésimes de segon

procediment intermitents
repeteix 100 [llums]
fi
Dins un procediment podem cridar l'execució d'altre procediments. Per exemple:
Un cop situat el cursor en la finestra d'edició confeccionarem el procediment desitjat, tot seguit pitjarem la icona de desar de la barra d'icones, o triarem el menú Fitxers / Desa...
Com enregistrem un procediment?
Recordeu, quan programem el temps passa volant, és convenient anar salvant de tant en tant el procediment en el qual treballeu.
Un cop situat el cursor en la finestra d'edició, pitjarem la icona de recuperar de la barra d'icones, o triarem el menú Fitxers / Recupera...
Com recuperem un procediment?
En la finestra d'edició podrem escriure tants procediments com ens faci falta ja que es poden acumular. D'aquesta manera podrem visualitzar el conjunt de procediments necessaris per resoldre un determinat problema. Però, haurem de tenir en compte que no hi pot haver dos procediments amb el mateix nom, i que a l'hora de cridar-lo hem de respectar exactament la grafía emprada (accents, minúscules/majúscules).
L'obrirem dins la finestra d'Edició i el modificarem a voluntat
Com modifiquem un procediment?
En aquesta finestra valem les operacions d'edició: Tallar, Copiar, Enganxar, Esborrar. Feu-les servir quan els procediments siguin repetitius.
 
Per executar un procediment cal interpretar-lo amb anterioritat. D'aquesta manera WIN-LOGO el reconeixerà com a tal i l'executarà con si d'una primitiva o instrucció es tractés. Un cop situat el cursor en la finestra de Treball tot seguit pitjarem la icona Interpretar de la barra d'icones, o triarem el menú Àrea / Interpreta...
Com executem un procediment?
Si tot va bé i no hi ha cap error, a la finestra de Text apareix per cada un dels procediments presents a l'editor, el missatge, Acabat de definir nom, on nom és el nom
del procediment. També hauran de ser "interpretats" els procediments quan es modifiquin i volem que aquesta modificació quedi registrada. Resumint, sempre que definim o modifiquem un procediment s'ha d'executar l'opció Àrea / Interpretar abans de cridar-lo - executar-lo -.
 
En molts procediments ens caldrà esperar un temps abans de que Win-Logo passi d'una instrucció o procediment al següent - recordeu estem dins un programa seqüencial, una darrera l'altra -
Win-Logo disposa d'una primitiva en la que caldrà indicar el temps d'espera en centèsimes de segon.
Com creem una pausa de temps?
procediment salutacions
escriu "Hola! Com esteu?
espera 600
escriu "Ja que no voleu dir res, doncs, Adéu.
fi

Exemple. Aquest procediment escriurà a la finestra de Text la paraula Hola! Com esteu?, i al cap de 6 segons escriurà la paraula Ja que no voleu dir res, doncs, Adéu.
La repetició és una estructura bàsica dins de la programació de sistemes de control. Podem implementar repeticions de diverses maneres, però en Logo existeix la primitiva repeteix que permetrà repetir una sèrie d'ordres o procediments un determinat nombre de vegades.
Com creem una repetició?
La primitiva té dos paràmetres a complir, el primer és el nombre de vegades que ha de fer la repetició, el segon és la llista de primitives i/o procediments que ha d'executar.
La llista de procediments haurà d'anar entre claudàtors ([ ]). Els procediments s'escriuran un darrera de l'altre separats por un espai en blanc.
repeteix 5 [escriu "Hola! escriu "Com estàs avui?]
Exemple: Cal escriure a la pantalla 5 vegades dues frases en dues línies seguides.
En Logo les variables s'identifiquen amb un nom, el que desitgi el programador. Poden contenir qualsevol valor: text, un valor numèric o una llista.
Com trebalem amb variables?
Per a assignar un valor a una variable farem servir la primitiva:
posa.a
Té dos paràmetres, el primer és el nom de la variable que sempre ha de començar amb cometes, el segon és el valor que li assignem.
 
posa.a "comptador 500
Exemple: a la variable comptador li assignarem el valor 500. Aquest es mantindrà fins que no el canviem
Com podrem utilitzar o consultar el contingut d'una variable? Molt fàcilment, possarem dos punts (:) davant el nom de la variable.
escriu :comptador
Exemple: a la finestra de text s'escriurà el contingut de la variable comptador , es a dir, el valor 500.
Com llegir un càracter del teclat?
Per llegir un caràcter del teclat s'empra la primitiva:
caràcter.llegit
Aquesta primitiva espera (aturant-se l'execució del programa) que es premi una tecla del teclat de l'ordinador i torna el caràcter de la tecla premuda, però no ho escriu a cap lloc.
 
escriu caràcter.llegit
Exemple: la següent instrucció espera que es premi una tecla i escriu a la finestra de textos el caràcter corresponent a la tecla premuda.
Existeixen altres primitives que ens permetran llegir diversos caràcters des del teclat. Sí vols més informació, ves a l'ajuda WIN-LOGO i cerca la primitiva caràcter.llegit. Trobaràs referències a primitives semblants.
Als Sistemes de Control és habitual l'ús i la necessitat de comptadors. Com podem crear un comptador?
Com creem un comptador?
Haurem de fer servir una variable que incrementarem en una unitat cada cop que es presenta l'esdeveniment que estem controlant, per exemple un comptador d'ampolles.
 
posa.a "comptador :comptador + 1
Imaginem que anomenem comptador a la variable que volem incrementar. Per actualitzar el seu valor en una unitat haurem d'escriure: 
Que hem fet? Assignar a la variable "comptador el seu contingut actual :comptador, més una unitat + 1. 
 
procediment tecles
escriu [Prem una tecla]
posa.a "aux caràcter.llegit
posa.a "comptador :comptador + 1
(escriu [Tecles premudes =] :comptador)
tecles
fi

Exemple: Volem comptar les vegades que premem una tecla del teclat.
Normalment, l'increment successiu del valor d'una variable es realitza dins d'un bucle. Abans d'executar el procediment haurem de tenir en compte de posar a zero la variable (o bé al valor inicial que voguem)
Més endavant s'explica com realitzar bucles dins un programa.
Com ho farem? Emprant la primitiva:
posa.a "comptador 0
Aquesta instrucció no la podreu incloure dins del bucle, ja que el comptador es posaria a zero a cada cop que s'executés amb el resultat de que el comptador no s'incrementaria.
La inicialització de la variable no pot incloure's en la recursivitat.
Tot procediments creat, igual que les primitives, poden portar paràmetres - variables d'entrada -. Per construir-lo cal que a l'hora d'escriure'l identifiquem quin és el valor que s'ha d'introduir com a variable, donant-li un nom, que tot seguit inclourem a continuació del nom del procediment.
Com creem un procediment amb paràmetres?
procediment salutacions :temps
escriu "Hola! Com esteu?
espera :temps
escriu "Ja que no voleu dir res, doncs, Adéu.
fi

Vegem un procediment creat anteriorment el qual modificarem amb la inclusió d'un paràmetre que anomenarem

:temps

Ara el procediment salutacions, té el paràmetre :temps que és el temps que tardarà en visualitzar-se el segon missatge. A l'hora d'invocar el procediment haurem d'adjuntar el temps en centèsimes de segon.
salutacions 1000
Canviar el temps d'espera sense que calgui modificar el procediment, n'hi haurà prou amb donar al paràmetre associat al procediment el valor de temps desitjat. Per acabar cal dir que un mateix procediment pot tenir més d'un paràmetre associat.
Que hem aconseguit?
L'estructura condicional és molt útil a l'hora d'implementar Sistemes de Control i Mesura ja que podrem condicionar l'evolució d'un procés o sistema en relació al seu estat.
Com creem condicionals?
Com formularem un condicional?
Amb la primitiva si a la que seguirà la condició a complir, tot seguit, la primera llista d'ordres ha executar en cas de que la condició sigui certa, després escriurem la segona llista que haurà d'executar-se en el cas de que la condició sigui falsa. Totes durs llistes d'ordres hauran d'escriure's dins de claudàtors ([ ]).

La condició s'ha de construir amb els operadors relacionals:
=, igual
>, més gran que
<, més petit que

El resultat de la condició serà un valor "ver o "fals que són paraules reservades de Logo.

si 5 = 7 [escriu [llista 1]] [escriu [llista 2]]
Exemple:
Evidentment la condició serà "fals, per tant a la finestra de text s'escriurà llista 2.

Fixeu-vos bé en els claudàtors. Modifiqueu la condició per:

si 5< 7 [escriu [llista 1]] [escriu [llista 2]]
El resultat serà l'escriptura de llista 1 a la finestra de text. 
Els condicionals no hauran de portar sempre la segona llista d'ordres, parlarem doncs, d'un condicional sense alternativa o simple. Quan es contemplin les dues alternatives, direm que l'estructura condicional és completa.
 
Dins l'estructura condicional podrem fer servir variables.
Exemple: Cal comparar un número entrat per teclat (entre 0 i 9) amb el número 6. El resultat serà el missatge "El número entrat és menor que 6" si és així o "El número entrat és més gran de 6".
procediment sis
escriu [Entra un nombre del 0 al 9]
posa.a "teclat caràcter.llegit
si :teclat < 6 [escriu [El número entrat és menor que 6]]"
[El número entrat és més gran de 6]]
fi
Dins l'estructura d'un condicional podem incloure altre condicional.
Si en l'exemple anterior contemplem la possibilitat que el número introduït sigui igual a 6, tindrem tres possibilitats. Com un condicional només distingeix entre dos casos, no podem solucionar el problema amb una única condicional. Una possible solució serà incloure un condicional dins de l'altre:
procediment sis
escriu [Entra un nombre del 0 al 9]
posa.a "teclat caràcter.llegit
si :teclat < 6 [escriu [El número entrat és menor que 6]]"
[si :teclat=6 [escriu[El número entrat és el 6]]"
[escriu [El número entrat és més gran de 6]]]
fi
procediment sis
escriu [Entra un nombre del 0 al 9]
posa.a "teclat caràcter.llegit
si :teclat<6 [escriu [El número entrat és menor que 6]]
si :teclat=6 [escriu[El número entrat és el 6]]
si :teclat>6 [escriu [El número entrat és més gran de 6]]

Altra solució podria ser la utilització de tres condicionals simples.
Si es prem una tecla, el programa recull aquest fet i el guarda.
Com saber si s'ha premut una tecla del teclat?
La primitiva tecleig retorna "CERT si existeix almenys un caràcter en espera per a ser llegit i "FALS en cas contrari.
tecleig
Aquesta primitiva no espera que l'usuari premi una tecla, noméscomprova si s'ha premuda abans.
 
si tecla [escriu [Ha premut una tecla!]]
La següent instrucció testejarà si s'ha premut alguna tecla. En cas afirmatiu, escriurà un missatge a la finestra de textos.
Ho podrem fer de dues maneres:
Com podem interrompre l'execució d'un procediment?
1. Pitjant la tecla ESC.
El procediment, així com el programa quedaran interromputs de manera immediata.
2. Executant el procediment surt.a "nivell.superior
Aturarà l'execució del procediment en curs, retornant el control al procediment que l'ha cridat. A diferència del cas anterior, només s'interromp el procediment que s'està executant en aquell moment, no el programa.
Aquesta primitiva només es pot utilitzar dins d'un procediment. 
Exemple:
si tecleig [surt.a "nivellsuperior]
Si es prem una tecla el procediment quedarà interromput.
Si els condicionals ens permeten "triar" dos procediments segons la condició fitxada, els bucles ens donaran la possibilitat de fer salt dins un mateix procediment o altre que ens interessi en un moment determinat.
Com creem BUCLES?
El procediment més emprat és el d'estructura recursiva. Podem plantejar-les de varies maneres. Una de les més emprats i pràctiques és l'estructura recursiva de cua. Aquesta consisteix en què un procediment es crida a si mateix. Per implementar-la introduirem una ordre en la línia anterior al fi del procediment
Com podem observar el procediment mai arribarà al fi, sempre s'estarà executant. Per poder sortir d'aquest procés tancat, cal establir una condició de sortida després de l'encapçalament.
procediment sempre
si tecleig = "ver [acaba]
escriu [Sí vols finalitzar el procés, prem una tecla]

sempre
fi
Exemple: aquest procediment anirà escrivint la frase “Sí vols finalitzar el procés, prem una tecla” a la finestra de text fins que premem una tecla.
El Win-Logo incorporà la primitiva mentre que és una estructura iterativa (recursiva) amb condició de permanència en el bucle. La seva sintaxi és:
mentre
mentre [condició] [llista d’ordres]
Tant la condició com la llista d'ordres (procediments que s'han d'executar en cas de complir-se la condició) han d'anar sempre entre claudàtors ([ ]). Les ordres s'escriuran una darrere l'altra, separades per un espai en blanc.
Per a construir el mateix procediment que en estructura recursiva, haurem d'invertir la condició de la primitiva no o caldrà comparar amb la condició contrària,
 
procediment sempre
mentre [tecleig = "fals] [escriu [Sí vols finalitzar el procés, prem una tecla]
fi

 
Quan emprarem una o l'altre estructura? Dependrà del problema a resoldre. Si hem d'escriure moltes ordres, serà més clara a efectes d'escriptura l'estructura recursiva, mentre que en l'estructura del mentre, ho hem de fer de forma seguida per mantenir la llista.
 
La primitiva Temps ens retorna les centèsimes de segon passades des que s'ha encès l'ordinador. Si emprem adequadament aquesta primitiva podrem mesurar intervals de temps.
Com mesurem el temps?

procediment mesuratemps
posa.a "t0 temps
repeteix 2 [escriu [¡Hola!]]
posa.a "t1 temps
es (:t1-:t0)
fi

Exemple: el següent procediment escriurà a la finestra de text el temps transcorregut (en centèsimes de segon) en executar dues vegades la instrucció escriu [¡Hola!].
Pot ésser necessari alguna alarma sonora. La primitiva Toca frec cent produirà un so en la freqüència indicada en frec i amb una durada de tantes centèsimes de segon com s'especifiquen en cent.
Com fer servir els Beeps de l'ordinador?
toca 950 150
toca
Produeix un so de freqüència 950 Hz durant 1,5 segons.
Exemple: 
El programa Logo ens permetrà realitzar les operacions matemàtiques bàsiques com: suma (+), resta (-), multiplicació (*), divisió (/), arrel quadrada (RC), potència (potència num potència), logaritme neperia (Ln), logaritme decimal (log), sinus (sin), cosinus (cos), etc.
Com i quines operacions matemàtiques poden emprar?
Per a més informació, ves a l'ajuda de Win-Logo i segueix l'itinerari [les primitives / classificació de primitives / matemàtiques].
Les operacions lògiques més importants que permet realitzar el programa Logo són: = , <, >, Y, O
Com i quines operacions lògiques poden emprar?
Aquestes operacions lògiques ens retornaran "CERT o "FALS.
A l'apartat "Com creem condicionals?" ja heu vist algun exemple de la manera d'emprar els operadors =, < i >.

 
Si Y (:b>6) (:b<10) [es :b surt.a "nivell.superior]
Exemple:  
En la instrucció següent, si el contingut de la variable b es troba entre els valors 6 i 10, s'escriu el valor de b a la finestra de textos i s'interromp l'execució del procediment on es troba insertada aquesta instrucció.
es = escriu
Si O (:b<6) (:b>10) [es :b surt.a "nivellsuperior]
Exemple:  
En la instrucció següent, si el contingut de la variable b no es troba comprès entre els valors 6 i 10 (ambdós inclosos), s'escriu el valor b a la finestra de textos i s'interromp l'execució del procediment on es troba insertada aquesta instrucció.

es = escriu
Per a més informació, consulta l'ajuda de Win-Logo
També podeu consultar el Curs D52: Usos i aplicacions del Logo multimèdia a l'aula. El podeu consultar al CD-ROM FORMACIÓ SINERA 2001.
 

CD-ROM FORMACIÓ SINERA 2001.

a la pàgina anterior / següent
  by Jordi Jordan
 
DownLoad Plug-in   JordianWeb ® © ™ Optimized Web for: IE 6.0. 1024x768 32bits.Since 19/03/2003- DownLoad Plug-in