2024(e)ko otsailaren 5(a), astelehena

3. astea | edozein triangeluren azalera

Programa bat inkrementalki garatzen

3. astea | triangeluaren azalera  ariketa gogoratu eta osatu: XOY lehen koadranteko triangelu bat bere ABC erpinen bitartez definiturik dator (erpinen koordenatuak zenbaki errealak dira). A puntua eta B puntua lotzen dituen AB lerroa edozein izan daiteke: bertikala, horizontala edo zeiharra.

A, B eta C sarrerako datuek bete behar dituzten baldintza bakarrak hiru dira:
  • A, B  eta C puntuak lehen koadrantean kokaturik daude
  • A eta B puntuak ez direla bat
  • C puntua ez dagoela kokaturik AB segmentuaren zuzenean
Triangeluaren azalera kalkulatzeko 4 urratsetan egingo dugu:
  1. Emanik A puntua eta B puntua, AB zuzena lortu eta bere izaeraren arabera (bertikala, horizontala edo zeiharra) erabaki hurrengo urratsak nola burutuko diren
  2. Emanik C puntua, AB zuzenari dagokion lerro perpendikularra C puntuan lortu
  3. AB zuzena eta bere perpendikularra C puntuan ditugula, lerro biren ebakidura kalkulatu (P puntua lortu)
  4. Erpinen arteko AB distantzia eta puntuen arteko CP distantzia kalkulatu ondoren azalera zehaztu


Programaren barne-antolaketa

Emanik A puntua eta B puntua, programak hiru atal izago ditu. Honako hiru atal hauek:
   begin
      ...
      repeat      
         readln(rAx) ;   { A puntua lehen koadrantekoa izan behar da }
         readln(rAy) ;
      until ___ ;
      repeat
         readln(rBx) ;   { B puntua lehen koadrantekoa izan behar da  eta }
         readln(rBy) ;   { B puntuak ez du bat egingo A puntuarekin }
      until ___ ;

      if rAx = rBx then  { AB segmentua bertikala denean }
      begin
         ... 1. ATALA
         repeat
            readln(rCx) ;  (* C puntua lehen koadrantekoa izango da eta }
            readln(rCy) ;  (* ez da egongo AB segmentuari dagokion zuzenean }
         until ___ ;
      end
      else  { AB segmentua bertikala EZ denean }
      begin
         if rAy = rBy then { AB segmentua horizontala denean }
         begin
            ... 2. ATALA
            repeat
               readln(rCx) ;  { C puntua lehen koadrantekoa izango da eta }
               readln(rCy) ;  { ez da egongo AB segmentuari dagokion zuzenean }
            until ___ ;
            ...
         end
         else { AB segmentua zeiharra denean, ez bertikala ez horizontala }     
         begin
            ... 3. ATALA
            repeat
               readln(rCx) ;  { C puntua lehen koadrantekoa izango da eta }
               readln(rCy) ;  { ez da egongo AB segmentuari dagokion zuzenean }    
            until ___ ;
            ...
         end ;
      end ; 
      ...
   end.



Programaren zenbait exekuzio

Hauxe izan daiteke programaren balizko exekuzio bat, AB segmentua bertikala denenan:

Hau izan daiteke programaren balizko exekuzio bat, AB segmentua horizontala denenan:

Eta hauxe izan daiteke programaren balizko beste exekuzio bat, AB segmentua zeiharra denenan:

AB eta CP bi segmentuen luzera ezagutzean, triangeluaren azalera berehala lor daiteke. Ariketa osatuago honen programa exekutagarria Triangelu_5.exe hartu eta hura exekutatuz programaren logika zein den ulertu.


    Iturburu-programa

    Autoebaluazioa dela eta, edozein triangeluaren azalera kalkulatzeko ariketan, hauxe da...
    ...lau urratseko goiko algoritmoari dagokion iturburu-programa:
    Triangelu_5.pas.

    iruzkinik ez:

    Argitaratu iruzkina

    Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.