2024(e)ko martxoaren 8(a), ostirala

8. astea | zero posizioa








sKatea aldagaia karaktere-kate bat bada, bere edukia karaktereak izango dira eta zero posizioak karaktere bat gordetzen du ere. Zero posizioko karakterea sKatea[0] izendatzen da, baina zein da bere edukia? zer da bertan gordetzen dena?. Posizio horretan biltegitzen den karakterea katearen luzerarekin lotuta dago. Katearen luzera efektiboarekin lotuta dago 0 posizioko karakterea.

Karaktere-kateekin lan egiten dugula, ez da nahastu behar katearen luzera fisikoa eta katearen luzera logikoa. Lehena, luzera fisikoatype bitartez definitzen da eta beti konstantea izango da. Bigarrena, katearen luzera logikoa (edo luzera efektiboa) kateak gordetzen duen edukiarekin loturik dago eta zero posizioan dagoen karakterearen bitartez ezagutuko dugu.

sKatea aldagaiaren zero posizioko karakterea sKatea[0] izanik, bere edukia kopuru bat da baina karaktere baten bitartez adierazita. Gogoratu ikusitako 5. astea | ASCII taularen zati bat programa.

Zero posizioaren edukia aztertzen duen programa egin dezagun. Ikusi irudi honetan programa nola dabilen:




Eta hona hemen iturburu-programa:
{---------------------------------------------------------------------------
  string datu-motako aldagai batek zero posizioan gordetzen duena aztertzen
 ---------------------------------------------------------------------------}
program ZeroPosizioa;
uses
   crt;
const
   MAXIMOA = 80;
type
   tKate80 = string[MAXIMOA];
var
   sKatea: tKate80;
   iKontagailua: integer;
   cErantzuna: char;
begin
   clrscr;
   writeln('Programak esaldi bat eskatuko du eta teklatuz sartutakoa erakutsiko du');
   writeln('writeln() bitartez esaldi osoa prozesatuz erakutsiko du programak');
   writeln('for baten bitartez esaldiren karaktereak erakutsiko ditu programak');
   writeln;
   writeln('--------------------------------------------------------------');
   
   writeln('sizeof(string)  = ', sizeof(string));
   writeln('sizeof(tKate80) = ', sizeof(tKate80));
   writeln('sizeof(sKatea)  = ', sizeof(sKatea));

   { Programak behin eta berriro exekutatuko da erabiltzaileak amaitzeko erabakia hartu arte }
   repeat
      writeln;
      write('Esaldi bat sar ezazu|');
      readln(sKatea);

      writeln('esaldi osoa ----|':10, sKatea, '|---');

      write('karaktereka ===|':10);
      for iKontagailua:=0 to length(sKatea) do
      begin
         write(sKatea[iKontagailua]);
      end;
      writeln('|===');
   
      writeln;
      writeln('Katearen luzera ZENBAKI bezala pantailara ekarriz: ', length(sKatea), ' karaktere');
      writeln('Katearen luzera KARAKTERE bezala pantailan jarriz: ', sKatea[0], ' karakterea'); 
     
      writeln;
      write('Beste esaldi bat? (B ala E): ');
      repeat
         cErantzuna := upcase(readkey);
         writeln(cErantzuna);
      until (cErantzuna = 'E') or (cErantzuna = 'B');
   until cErantzuna = 'E';

   writeln;
   writeln('--------------------------------------------------------------');
   writeln('Agur');
  
   repeat until keypressed;
end.                               { Programaren amaiera }

Eta gogoratu kateak azaldu ziren artikuluaren DATU-MOTA SORTZEN atala non kate batek zenbat toki hartzen duen memorian aipatu zen.
 

iruzkinik ez:

Argitaratu iruzkina

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