miércoles, 14 de octubre de 1998

Ejercicio de programación con WinLogo (LOGO) para elaborar un mapa interactivo (empleando listas de coordenadas de ventana gráfica)

; ---------------------------------------------------------
;    Mapa interactiu
;
; Mapa interactiu de la Comunitat E. Europea (1998).
; El programa carrega els fitxers: europa2.gif i europa.frm 
; que prèviament cal ubicar al directori del winlogo

;    © Joan Aranes Clua, 1998
                CC BY 4.0
                
; Referencies: Curs sobre el llenguatge de programació Logo
;              y llurs aplicacions didàctiques (del PIE),
;              en el qual vaig participar com a alumne
;              curs 1997-1998  
; ---------------------------------------------------------

procediment Posa.llistes
  ; llista de les posicions de les capitals "punts
  posa.a "posicions 
    [
      [-107 -52][-35 2][-25 32][-51 62] «
      [18 -91][57 -34][51 12][53 41][93 71] «
      [131 71][-143 -46][-4 14] «
      [8 29][90 -144][0 0] 
    ]

  ; llista de països
  posa.a "països 
    [Espanya França GB Irlanda Itàlia Àustria  Alemanya 
     Dinamarca Suècia Findlàndia Portugal Bèlgica PB Grècia Luxemburg]

  ; llista de les capitals corresponents als països 
  posa.a "capitals 
    [Madrid Paris Londres Dublin Roma Viena Berlin 
    Copenhaguen Estocolm Helsinki Lisboa Brussel.les Amsterdam Atenes Luxemburg]
fi

procediment Prepara.finestra.text
  Anomena.finestra "Text "Qüestions
  mou.finestra "Text [360 0]
  fes.mida.finestra "Text [280 400]
  fes.color.paper 8
  fes.fons 8
  fes.fons.text 8
  fes.color.text 5
  esborra.text
fi

procediment Prepara.mapa
  mou.finestra "Gràfics [0 0]
  fes.mida.finestra "Gràfics [360 400]
  inicia.dibuix
  recupera.decorat "c:\winlogo\europa2.gif
  ajusta.decorat
  recupera.formes "c:\winlogo\europa.frm
  fes.forma 1
  no.llapis
fi

procediment Qüestió
  posa.a "posició.aleatòria (atzar 16)
  ;tria a l'atzar un nombre entre 1..15
  
  ;situa la tortuga sobre el punt corresponent    
  posa't element :posició.aleatòria :posicions

  ;realitza les preguntes:
  Fes.pregunta.país 
  Qüestió
fi
       

procediment Fes.pregunta.país 
  esborra.text
  mou.cursor [3 2]
  escriu [Quin país és ?]
  mou.cursor [3 3]
  posa.a "resposta.país paraula.llegida
  comprova :resposta.país = element :posició.aleatòria :països 
  si.ver [Fes.pregunta.capital :posició.aleatòria]
  si.fals [Fes.pregunta.país :posició.aleatòria]
fi

procediment Fes.pregunta.capital :posició.aleatòria
      mou.cursor [3 4]
      escriu [Quina es la capital?]
      mou.cursor [3 5]
      posa.a "resposta.capital paraula.llegida
      comprova :resposta.capital = element :posició.aleatòria :capitals      
      si.ver [Qüestió]
      si.fals [Fes.pregunta.capital :posició.aleatòria]   
fi

procediment Europa
  Prepara.mapa
  Prepara.finestra.text
  Posa.llistes
  Qüestió
  ;aquest procediment (Qüestió) crida al procediment "Fes.pregunta.país" 
  ;i, al seu torn, aquest crida a "Fes.pregunta.capital"
fi
; ---------------------------------------------------------
% Europa ;... per engegar el programa

Dibujo de formas: anillas olímpicas. Un ejercicio con WinLogo (LOGO)

; ---------------------------------------------------------
;    Dibujo del logotipo olímpico (anillas olímpicas)
;
;    © Joan Aranes Clua, 1998
                CC BY 4.0
; ---------------------------------------------------------

procediment Situa.tortugues
  desapareix
  
  ;Situo les tortugues a l'extrem esquerra 
  ;del diàmetre horitzontal de cada circumferència
  posa.a "posicions.inicials [[-140 30] [-60 30] [20 30] [-100 -20][-20 -20]]
  
  posa.a "colors [13 1 10 11 12]
  fes.actives [1 2 3 4 5]
  apareix no.llapis orienta't 360
  fes.gruix 8
  per.a.cada 
  [
    fes.color element actives :colors 
    no.llapis 
    posa't element actives :posicions.inicials 
    llapis
  ]
  desapareix
fi

procediment Posa.rètol
  inicia.dibuix
  no.llapis posa't [-80 -110] 
  gd 90 
  fes.color 1 
  fes.gruix 2
  llapis retola [Sidney 2000]
fi

procediment Dibuixa.anells
  Circumferència 60
fi

procediment Circumferència :radi
  repeteix 36 
    [
      gira.dreta 5 
      avança pi * :radi / 18 
      gira.dreta 5
    ] 
fi

procediment Sydney.2000
  Posa.rètol
  Situa.tortugues
  Dibuixa.anells
fi

; ---------------------------------------------------------
; Exemple d'ús del programa
% id
% Sydney.2000 

Ejercicio de dibujo de formas con WinLogo (LOGO) y empleo de listas (estructuras de datos)

; ---------------------------------------------------------
;    Exercici de dibuix de formes
     (un àncora, en aquest cas) fent ús de llistes
;   
;    © Joan Aranes Clua, 1998
                CC BY 4.0
; ---------------------------------------------------------

procediment Àncora
  inicia.dibuix
  desapareix
  fes.color 13 fes.gruix 2
  posa.a "punts 
    [
      [-10 -58] [-17 -58] [-48 -40] [-50 -50] «
      [-60 -10] [-37 -30] [-43 -30] [-25 -42] [-6 -45] [-3 40] «
      [-45 42] [-40 52] [-2 52] [-2 60] [-15 70] [0 85] [15 70] «
      [2 60] [2 52] [40 52] [45 42] [3 40] [6 -45] [25 -42] «
      [43 -30] [37 -30] [60 -10] [50 -50] [48 -40] [17 -58] «
      [10 -58] [0 -65]
    ] 
no.llapis posa't primer :punts llapis 
fi

procediment Dibuixa
  si :punts = [][posa't [-10 -58] fes.color 1 acaba]
  posa't primer :punts
  posa.a "punts Sense.primer :punts
  Dibuixa
fi
; ---------------------------------------------------------


% Àncora       
% Dibuixa  
% apareix      
% id


Gráfica de un triángulo dadas las coordenadas cartesianas de sus vértices. Un ejercicio en WinLogo (LOGO)

; ---------------------------------------------------------
; Gràfic cartesià. Representació d'un triangle
;   donades les coordenades dels vèrtexs
;    © Joan Aranes Clua, 1998
                CC BY 4.0
; ---------------------------------------------------------

procediment Gràfic.cartesià
  Dibuixa.eixos
  Dibuixa.triangle
fi


procediment Dibuixa.eixos
  inicia.dibuix
  fes.gruix 1
  posa't [100 0]
  posa't [-100 0]
  centre
  posa't [0 100]
  posa't [0 -100]
  centre
fi

procediment Dibuixa.triangle
  no.llapis
  posa't [30 60]
  llapis
  fes.gruix 2
  posa't [-50 60]
  posa't [20 -40]
  posa't [30 60]
  no.llapis centre llapis desapareix
fi

; ---------------------------------------------------------
% apareix
% Gràfic.cartesià ;exemple d'ús

Contando letras vocales que contiene una palabra. Un ejercicio de programación con WinLogo (LOGO)

; ---------------------------------------------------------
; Recompte de les lletres vocals d'una paraula
;   Llistes (maneig de les estructures de dades)
;    © Joan Aranes Clua, 1998
                CC BY 4.0
; ---------------------------------------------------------
procediment Esbrina.vocals ; procediment principal
  Entrada
  Informa
  Final
fi

procediment Entrada
  anomena.finestra "Text "Paraules
  anomena.finestra "Gràfics "
  fes.mida.finestra "Gràfics [640 480]
  mou.finestra "Text [200 0]
  fes.mida.finestra "Text [200 400]
  esborra.text 
  fes.color.paper 8
  fes.fons 8
  desapareix
  inicia.dibuix
fi

procediment Informa
  esborra.text
  fes.fons.text 8
  fes.color.text 5
  mou.cursor [3 2]
  escriu [Escriu una paraula i et diré] 
  mou.cursor [2 3]
  escriu [quantes vocals té:]
  fes.color.text 10
  fes.fons.text 16
  mou.cursor [3 6]
  posa.a "paraula paraula.llegida
  fes.fons.text 8
  mou.cursor [3 10]
  escriu [La paraula té:] Quantitat.vocals :paraula "vocals
fi

procediment Final
  fes.color.text 5
  mou.cursor [2 15]
  escriu [En vols esbrinar una altra ?]
  mou.cursor [2 16]
  escriu [(Prem s/n)]
  posa.a "c caràcter.llegit
  si :c = "n [Sortida acaba]
  esborra.text
  Esbrina.vocals
fi

procediment Quantitat.vocals :paraula
  si :paraula = " [retorna 0]
  si pertany primer :paraula «
     [A À E É È I Í O Ó Ò U Ú a à e é è i í o ó ò u ú] «
     [retorna 1 + Quantitat.vocals sense.primer :paraula]
  retorna Quantitat.vocals sense.primer :paraula
fi
; ---------------------------------------------------------

% Esbrina.vocals ;exemple d'ús

Diccionarios. Introducción a la programación con estructuras de datos. Un ejercicio de elaboración de un diccionario català-anglès empleando listas con WinLogo (LOGO)

; ---------------------------------------------------------
; Un exercici de elaboració d'un diccionari  català-anglès
;   Diccionaris
;    © Joan Aranes Clua, 1998
                CC BY 4.0
; ---------------------------------------------------------
; inici del diccionari
posa.a "vocabulari [[poma apple][finestra window]]  

procediment Aprenent.idiomes ;procediment principal
  Informa
  Final
fi

procediment Informa
  anomena.finestra "Text "Paraules
  anomena.finestra "Gràfics "
  fes.mida.finestra "Gràfics [640 480]
  mou.finestra "Text [200 0]
  fes.mida.finestra "Text [300 400]
  esborra.text 
  fes.color.paper 8
  fes.fons 8
  desapareix
  inicia.dibuix
  posa.a "vocabulari2 :vocabulari
  fes.fons.text 8
  fes.color.text 5
  mou.cursor [3 2]
  escriu [Quina paraula vols traduir a l'anglès ?:]
  fes.fons.text 16
  fes.color.text 10
  mou.cursor [4 4]
  posa.a "resposta paraula.llegida
  si és.buida :resposta [acaba]
  Verifica
fi

;procediment cridat pel procediment Informa
procediment Verifica 
  si és.buida :vocabulari2 [Afegir :resposta]
  mou.cursor [3 6] 
  fes.fons.text 52 
  fes.color.text 10
  si pertany :resposta primer primer :vocabulari2«
	[(escriu [La traducció de ] :resposta "és: últim primer«
      :vocabulari2) acaba]
  posa.a "vocabulari2 sense.primer :vocabulari2
  Verifica ;crida recursiva
fi

procediment Afegir :resposta
  fes.fons.text 8
  fes.color.text 13
  ;mou.cursor [3 10]
  (escriu [La paraula ] :resposta [no la conec. Vols afegir-la? s/n])
  posa.a "resp caràcter.llegit 
  si :resp = "s [escriu.seguit [La seva traducció és: ]] 
  ;mou.cursor [3 12]
  fes.fons.text 206
  fes.color.text 10
  posa.a "resposta2 paraula.llegida 
  posa.a "vocabulari posposant llista :resposta :resposta2 «
    :vocabulari
  fes.fons.text 8
  fes.color.text 5
  ;mou.cursor [6 14]
  escriu [Ara ja la sé. Gràcies!!]
  escriu [prem una tecla per continuar]
  posa.a "continua caràcter.llegit
  Aprenent.idiomes
fi


procediment Final
  fes.color.text 5
  fes.fons.text 8
  mou.cursor [2 15]
  escriu [En vols esbrinar una altra ?]
  mou.cursor [2 16]
  escriu [(Prem s/n)]
  posa.a "c caràcter.llegit
  si :c = "n [Sortida acaba]
  esborra.text
  Aprenent.idiomes ;tornada al procediment principal
fi
; ---------------------------------------------------------
% Aprenent.idiomes ;exemple d'ús