Un artículo más completo

Mediante esta página se muestra el contenido de un ejercicio de programación: el enunciado, el algoritmo, el pseudocódigo y los resultados de la ejecución.

Independientemente del idioma utilizado en la redacción del post, se trata de analizar por un lado los elementos y recursos gráficos utilizados:
  • Tipos de letras.
  • Colores.
  • Imágenes.
  • Enlaces (la mayoría están rotos porque el blog de destino está cerrado).
  • Listas de viñetas y listas numeradas.
  • Sangrados.
Por otro lado, es interesante analizar la organización de la información. Por ejemplo, perfectamente se podría haber decidido distribuir el contenido del artículo en más de una entrada del blog.








Triangeluaren hirugarren erpina

Triangelu bat bere ABC erpinen bitartez definiturik dator. A eta B puntuak ezagunak dira eta C erpinaren koordenatuak eskatzen dira.

A puntua eta B puntua lotzen dituen AB lerroa ez da bertikala ezta horizontala, eta C puntua ez dago kokaturik AB lerroan. ABC triangelua angeluzuzena da non AB erpinek kateto bat osatzen duten. ABC triangelu angeluzuzenaren beste katetoa A eta B puntuen kokapenaren araberakoa da:
  • ABC triangelu angeluzuzenaren beste katetoa BC erpinek osatuko dute B puntua A puntua baino gorago badago, ondorioz AC erpinek triangelu angeluzuzenaren hipotenusa osatuko dute (kasu hau da beheko irudian erakusten dena).
  • ABC triangelu angeluzuzenaren beste katetoa AC erpinek osatuko dute A puntua B puntua baino gorago badago, ondorioz BC erpinek triangelu angeluzuzenaren hipotenusa osatuko dute.
ABC triangelu angeluzuzena isoszelea da, hots, kateto biek luzera bera dutela. Eta bukatzeko, C puntua hiru erpinetatik gorena da.

Datuak:
  • A(Ax,Ay)eta B(Bx,By)puntuak AB zuzena lortzeko, AB zuzena zeiharra izango da (ez bertikala, ez horizontala).
  • C puntua AB zuzenaren perpendikular batean dago (beheko irudian C puntua lortzeko perpendikularra B puntutik abiatzen da By>Ay delako).
  • ABC triangelu angeluzuzena isoszelea da.
  • Beheko irudian C puntua goian dago, hauxe betetzen dela Cy>By>Ay alegia (izan daitekeen beste egoeran C puntua goian egongo litzateke ere, baina hauxe betetzen delako Cy>Ay>By).


Algoritmoa
Problema bat urrats-kopuru finituan ebazteko agindu-multzo edo ekintza-multzo esplizitua.
  1. Emanik A puntua eta B puntua, AB zuzena lortu (jakinik AB ez dela horizontala izango eta ez dela bertikala izango).
  2. A eta B puntuen arteko D distantzia kalkulatu.
  3. A eta B puntuen artetik zein dagoen gorago zehaztu (esate baterako, B puntua gorago dago), jakinik B puntua gorago dagoela:
    1. AB zuzenaren perpendikularra B puntuan lortu.
    2. AB zuzenaren perpendikularra ezaguna da eta B puntutik D distantziara C puntua aurkituko da.
    3. Ateratzen diren bi soluzioetatik, bilatzen dugu C puntua Cy handiena duena da. 
  4. A eta B puntuen artetik zein dagoen gorago zehaztu (esate baterako, A puntua gorago dago), jakinik A puntua gorago dagoela:
    1. AB zuzenaren perpendikularra A puntuan lortu.
    2. AB zuzenaren perpendikularra ezaguna da eta A puntutik D distantziara C puntua aurkituko da.
    3. Ateratzen diren bi soluzioetatik, bilatzen dugu C puntua Cy handiena duena da.
  5. Amaitu.


Sasikodea
Algoritmoa ulertu ondoren, ariketaren urratsak ikus ditzagun. Urrats multzo honek algoritmoa jarraitzen du eta programaren kodifikaziotik nahiko hurbil dagoelako pseudokodea edo sasikodea esaten zaio. Hona hemen ariketaren sasikodea:

1. urratsa
Hau ezaguna zaigu 19. astea | triangeluaren azalera artikuluan egiten zelako, ondorioz Ax, Ay, Bx eta By balioen sarrerak REPEAT-UNTIL edo WHILE-DO baten bitartez kontrolatuko ditugu.

2. urratsa
A eta B puntuen arteko D distantzia kalkulatu ordez, hobe D2 lortzen badugu. Horretarako (By-Ay)2+(Bx-Ax)2 kalkulatuko dugu, beti balio positibo bat izango da A eta B puntuak edozein kokapenetan egonik ere.

3. urratsa
IF By > Ay THEN perpendikularra lortzeko erreferentzia B puntua izango da
           ELSE perpendikularra lortzeko erreferentzia A puntua (4. urratsa).
3.1. urratsa
AB zuzena y=mx+n izanik, AB zuzenaren perpendikularra B puntuan lortuko dugu. Hau ere ezaguna zaigu 19. astea | triangeluaren azalera artikuluan egiten zelako, ondorioz, urrats honetan, y=m'x+n' zuzen perpendikularraren m' eta n' balioak zehazturik izango ditugu.
3.2. urratsa
C puntuaren Cx eta Cy koordenatuak eskuratzeko ondoko ekuazio-sistema planteatuko dugu:
               Cy=m'Cx+n'
               D2=(Cy-By)2+(Cx-Bx)2

Ekuazio-sistema horretatik JCx2+KCx+L=0 itxurako ekuazioa lortuko dugu non J, K eta L ezagunak diren eta Cx inkognita den, Cx-ek bi balio izango ditu eta Cx-en balio horiek Cy=m'Cx+n' perpendikularrera eramanik bi Cy lortuko ditugu, bietatik handiena da bilatzen ari garen soluzioa.
3.3. urratsa
Aurreko 3.2. urratsean Cx1 bitartez Cy1 lortu dugu eta Cx2 bitartez Cy2 lortu dugu. Baldin eta Cy1>Cy2 soluzioa C(Cx1,Cy1)izango da, bestela soluzioa C(Cx2,Cy2)izango da.

4. urratsa
IF By > Ay THEN perpendikularra lortzeko erreferentzia B puntua (3. urratsa)
           ELSE perpendikularra lortzeko erreferentzia A puntua izango da.
4.1. urratsa
AB zuzena y=mx+n izanik, AB zuzenaren perpendikularra A puntuan lortuko dugu, ondorioz y=m'x+n' zuzen perpendikularraren m' eta n' balioak zehazturik izango ditugu.
4.2. urratsa
C puntuaren Cx eta Cy koordenatuak eskuratzeko ondoko ekuazio-sistema planteatuko dugu:
               Cy=m'Cx+n'
               D2=(Cy-Ay)2+(Cx-Ax)2

Ekuazio-sistematik JCx2+KCx+L=0 itxurako ekuazioa lortuko dugu non J, K eta L ezagunak diren eta Cx inkognita den, Cx-ek bi balio izango ditu eta Cx-en balio horiek perpendikularrera eramanik bi Cy lortuko ditugu.
4.3. urratsa
Aurreko 3.2. urratsean Cx1 bitartez Cy1 lortu dugu eta Cx2 bitartez Cy2 lortu dugu. Baldin eta Cy1>Cy2 soluzioa C(Cx1,Cy1)izango da, bestela soluzioa C(Cx2,Cy2)izango da.


Kodea
Algoritmoa eta sasikodea antzekoak dira eta programaren kodea idazteko bitartekariak dira. Ariketa ebazteko programa idatzi beharra dago Pascal lengoaiak ezartzen dituen sintaxi arau guztiak aintzakotzat hartuz. Hemen duzu TriangeluarenErpina.exe programa exekutagarria eta hauexek dira exekuzio biren irteerak:
 B puntua A puntua baino gorago dagoenean.

  A puntua B puntua baino gorago dagoenean.

Eta hauxe da ariketari dagokion TriangeluarenErpina.pas iturburu-programa, azpimarratu beharra dago, beti bezala, triangelu angeluzuzenaren problemari ondo erantzun dioten bestelako soluzioak ere badaudela. Zein da zurea?

Beraz, ematen zaizkizuen algoritmo, azalpen eta adibideekin zuen programa osatzen joan. Asko ala gutxi, zertxobait baino gehiago egiteko gai zaretela ziur izan. Bizkaian esaten den bezala:

 ahal danean dana, ezin danean ahal dana! 


iruzkinik ez:

Argitaratu iruzkina