karaktere etiketadun mezuak erakusten. Erakutsi mezu guztiak
karaktere etiketadun mezuak erakusten. Erakutsi mezu guztiak

2023(e)ko apirilaren 4(a), asteartea

10. astea | alfabetoko letren maiztasuna testu batean

Maiztasuna: Alfabeto larrien letrak zenbat aldiz agertzen diren testu batean




Demagun testu bat daukagula array batean gorderik, karaktere-kateen array bat da testuaren edukiontzia:


const
iZENBATIKASLE = 10;
type
tsKate49 = string[49];
tasIzenenZerrenda = array[1..iZENBATIKASLE] of tsKate49;




Bestalde, alfabetoko letra bat zenbat aldiz agertzen den gordetzeko zenbaki osoen array bat beharko dugu, arraiaren posizio bakoitzean kopuru bat (posizio horretako letrari dagokion maiztasuna). Maiztasunak gordeko dituen osoen arrayaren datu-mota hauxe izan daiteke, non arrayaren indizeak karaktereak diren:


type
taiAlfabetoMaizta = array['A'..'Z'] of integer;




Adibide honetan testua konstantea da, izen abizenen zerrenda konstante bat da. Alfabetoko letren maiztasuna kalkulatzeko horrela egingo genuke:


program AlfabetokoLetrenMaiztasuna;
uses
crt;
const
iZENBATIKASLE = 10;
type
taiAlfabetoMaizta = array['A'..'Z'] of integer;
tsKate49 = string[49];
tasIzenenZerrenda = array[1..iZENBATIKASLE] of tsKate49;
const
asZERRENDA: tasIzenenZerrenda = ('AGIRRE ROMERO, UNAI', // 01
'ANGULEMA CARAZO, JON ANDER', // 02
'BIKARREGI IGLESIAS, JULEN', // 03
'CANO RUIZ DE HEREDIA, JULIAN', // 04
'CORRAL EGIA, JOSEBA ANDONI', // 05
'DIAZ DE ULZURRUN, ROY, LEONOR', // 06
'EGIGUREN MARKINEZ, IRUNE', // 07
'ERKIAGA ANDONEGI, IKER', // 08
'FERNANDEZ FEITO, FELIX', // 09
'GARTZIA DE ALZA GIL, KATALIN'); // 10

{ ikasleen izena array konstante batean daude, bere edukia pantailaratu }
{ parametrorik gabe, asZERRENDA eta iZENBATIKASLE konstante direlako }
procedure TestuaIkusi;
var
k: integer;
begin
for k:=1 to iZENBATIKASLE do
begin
writeln(k:20, '. ikaslea: ', asZERRENDA[k]);
end;
end;

{ asZERRENDA eta iZENBATIKASLE konstante direlako ez dira parametro }
{ luzerarik ez aiAlfabetoMaizta arrayarentzat bete-beterik dagoelako }
procedure LetrenZenbaketakEgin(var aiAlfabetoMaizta: taiAlfabetoMaizta);
var
cKontLetr: char;
iKontIkas: integer;
iKont: integer;
cLetra: char;
begin
(* hasiera batean letra guztien maiztasuna 0 da *)
for cKontLetr:='A' to 'Z' do
aiAlfabetoMaizta[cKontLetr] := 0;

(* ikasle guztiak arakatu *)
for iKontIkas:=1 to iZENBATIKASLE do
begin
(* ikasle baten letrak prozesatu *)
for iKont:=1 to length(asZERRENDA[iKontIkas]) do
begin
cLetra := asZERRENDA[iKontIkas][iKont];
//aiAlfabetoMaizta[asZERRENDA[iKontIkas][iKont]] := aiAlfabetoMaizta[asZERRENDA[iKontIkas][iKont]] + 1;
aiAlfabetoMaizta[cLetra] := aiAlfabetoMaizta[cLetra] + 1;
end;
end;
end;

{ luzerarik ez aiAlfabetoMaizta arrayarentzat bete-beterik dagoelako, A-tik Z-tara }
function fnrBatezBestekoaKalkulatu(const aiAlfabetoMaizta: taiAlfabetoMaizta): real;
var
cKontLetr: char;
iMetatua: integer;
iZenbatLetra: integer;
begin
iMetatua := 0;
for cKontLetr:='A' to 'Z' do
iMetatua := iMetatua + aiAlfabetoMaizta[cKontLetr];

iZenbatLetra := ord('Z') - ord('A') + 1;
fnrBatezBestekoaKalkulatu := 1.0*iMetatua/iZenbatLetra;
end;

{ luzerarik ez aiAlfabetoMaizta arrayarentzat A-tik Z-tara doalako }
procedure MaiztasunakIkusi(const aiAlfabetoMaizta: taiAlfabetoMaizta);
var
cKont: char;
begin
for cKont:='A' to 'Z' do
begin
writeln('"':20, cKont, '" ===> ', aiAlfabetoMaizta[cKont]:3, ' aldiz');
end;
end;

{ ---------------------------------- Programa Nagusia ---------------------------------- }
var
aiAlfabetoMaizta: taiAlfabetoMaizta;
rBBA: real;
begin
clrscr;

writeln('Zeintzuk dira letra guzti hauen maiztasuna?');
writeln;
TestuaIkusi; { parametrorik ez, izenen arraya konstante delako }
writeln;

LetrenZenbaketakEgin(aiAlfabetoMaizta); { parametrorik bakarra, izenen arraya konstante delako }
MaiztasunakIkusi(aiAlfabetoMaizta); { luzerarik ez, arraya beterik dagoelako (26 letra) }
writeln;

rBBA := fnrBatezBestekoaKalkulatu(aiAlfabetoMaizta); { luzerarik ez, alfabeto osoa }
writeln('Letren agerpenen atezbesteko aritmetikoa = ', rBBA:0:2, ' aldiz');

repeat until keypressed;
end.


 

2023(e)ko martxoaren 3(a), ostirala

7. astea | karaktere bereziak


















Programa honetan karaktere bereziak erabiltzen dira, karaktere
grafikoak. Ikusi ere programa zatika egiten dela, hots, badirela zenbait
prozedura gauza jakinak egiten dituztela. Programa bat modulutan
banatzen laster ikasiko dugu, orain karaktere berezietan arreta jarri
eta identifikatu prozedura bakoitzak zer egiten duen eta nola egiten
duen.



Hauek dira prozeduren izenak:


  • TeilatuaMarraztu prozedura

  • LeihoakMarraztu prozedura

  • AtariaMarraztu prozedura

  • LurzoruaMarraztu prozedura





Eta hauek dira emaitzaren bi irudi:






Lehen irudia programaren irteera da eta bigarrenean azpiprogramak adierazi dira







Mac sistemetan karaktere bereziak ez dira pantailaratzen hemen erakusten den bezala




Eta bukatzeko, hona hemen iturburu-programa:










Programa ondo ulertzeko gogoratu ASCII taula bi zatitan banaturik ematen dela: ASCII estandar eta ASCII hedatua taulak.




Hona hemen ASCII estandar taulari dagokion irudi bat:









Ikusi zenbakien (0, 1, 2, ..., 9) kokapena zein den. Berdin alfabetoa letra larrietan emanik eta alfabetoa minuskuletan emanik.



Hauxe da ASCII hedatua taulari dagokion irudi bat:







Ikusi ñ eta Ñ karaktereak non dauden. Berdin zenbait karaktere grafiko edo alfabeto grekoaren zenbait karaktere. Ikusi ere sinbolo bereziak ere biltzen direla.


 

2023(e)ko otsailaren 24(a), ostirala

6. astea | letra bat asmatzen

Ordenadoreak letra bat pentsatuko du eta guk asmatu beharko dugu



A eta Z bitartean dagoen letra bat aukeratuko du ordenadoreak eta ezezaguna den letra hori guk asmatuko dugu. Egiten dugun saiakera bakoitzeko, programak informazioa emango digu esanez letra ezezaguna zein tartetan dagoen. Algoritmoa hauxe da:


  1. Ordenadoreak letra bat aukeratuko du, A eta Z bitartean dagoen letra bat aukeratuko du. Horretarako, random() funtzio estandarra erabiliko du (randomize prozedurarekin batera)

  2. Ezezaguna den letraren heina [A, Z] da hasieran, behemuga A eta goimuga Z. Beraz, cBehemuga:='A' eta cGoimuga:='Z'

  3. Errepikatu letra asmatu arte edo 5 saiakera egin arte:


    • Teklatuaren bitartez irakurriz, soluzio bat proposatuko diogu programari. Nahi dugun soluzioa proposatuko diogu programari, modurik eraginkorrena da tartearen erdiko letra proposatzea programari, erdikoa honela kalkulatuko genuke: cSoluzioa := chr((ord(cBehemuga) + ord(cGoimuga)) div 2)

    • Gure proposamenaren arabera programak bi aukera izango ditu eta honela jokatuko du:


      • Proposatutako letra eta programak asmatutakoa bat datoz, letra asmatu dugunez begiztatik irten

      • Proposatutako letra eta programak asmatutakoa ez datoz bat, ez dugunez letra asmatu beste saiakera bat emango digu programak (5 saiakeraren muga ez badugu oraindik gainditu). Hurrengo saiakeraran erakutsiko digun tartea egokituko du programak, honelaxe:


        • Proposatu diogun letra programarena baino handiagoa bada (tartearen cGoimuga aldatu eta 3. urratsaren hasierara itzuli saiakera berri bat egiteko)

        • Proposatu diogun letra programarena baino txikiagoa bada (tartearen cBehemuga aldatu eta 3. urratsaren hasierara itzuli saiakera berri bat egiteko)




  4. Emaitza erakutsi, begiztatik irteteko aukerak:


    • Letra asmatu diogu programari: cSoluzioa erakutsi

    • Saiakerak 5 baino gehiago izan dira







  Zergatik 5 saiakera?


  A-ren eta Z-ren artean 26 karaktere. Urrats bakoitzean,

  karaktere guztietatik erdiak baztertzen dira. Beraz:



log2(26)=4,70044


  logaritmo (2 oinarrian) 26 zenbakiarena 4,70044 da

  2x = 26   >>>   ln(2x) = ln(26)   >>>
x·ln(2) = ln(26) >>> x = ln(26)/ln(2)
x = 3.25810/0.69315 = 4.70044 >>> x=5






Ikusi LetraAsmatu.exe programaren balizko exekuzio bat:






Eskatzen den ariketaren hurbilpen hau... LetraAsmatu_hasiera.pas ...abiapuntutzat har daiteke. Hau da...
LetraAsmatu.pas ...iturburu-programa bat. Zein da zurea?




 

6. astea | zenbaki bat asmatzen

Guk pentsaturiko zenbakia ordenadoreak asmatuko digu



0 eta 100 bitartean dagoen zenbaki osoa pentsatuko dugu eta ordenagailuak galdera batzuk eginez zenbaki hori asmatuko digu. Algoritmoa hauxe da:


  1. Zenbaki oso bat pentsatu dugu, hots, 0 eta 100 bitartean dagoen zenbaki osoa pentsatu dugu

  2. Ezezaguna den zenbakiaren heina [0, 100] da hasieran, behemuga 0 eta goimuga 100. Beraz, iBehemuga:=0 eta iGoimuga:=100

  3. Errepikatu zenbakia asmatu arte edo 7 saiakera egin arte:


    • Programak proposatuko digun soluzioa kalkulatuko du, soluzioa: baligarria den heinaren erdia. Beraz, iSoluzioa := (iBehemuga + iGoimuga) div 2

    • Programak galdetuko digu proposatu duen soluzioa egokia den ala ez, aukerak:


      • B, bai, proposatu digun zenbakia guk pentsatu duguna izan da (begiztatik irten)

      • H, ez, proposatu digun zenbakia ez da guk pentsatutakoa, proposatu digun zenbakia gurea baino handiagoa da (heinaren iGoimuga aldatu eta 3. urratsaren hasierara itzuli saiakera berri bat egiteko)

      • T, ez, proposatu digun zenbakia ez da guk pentsatutakoa, proposatu digun zenbakia gurea baino txikiagoa da (heinaren iBehemuga aldatu eta  3. urratsaren hasierara itzuli saiakera berri bat egiteko)



  4. Emaitza erakutsi, begiztatik irteteko aukerak:


    • Gure erantzuna B izan denez, ordenagailuak gure zenbakia asmatu du: iSoluzioa erakutsi

    • Saiakerak 7 baino gehiago izan dira, horrek esan nahi du ez dugula zuzen jokatu eta gure erantzunetan gezurra esan diogula programari






  Zergatik 7 saiakera?


  0-tik 100-ra, biak barne, 101 aukera. Urrats bakoitzean,

  aukera guztietatik erdiak baztertzen dira. Beraz:


log2(101)=6,658


  logaritmo (2 oinarrian) 101 zenbakiarena 6,658 da

  2x = 101   >>>   ln(2x) = ln(101)   >>>
x·ln(2) = ln(101) >>> x = ln(101)/ln(2)
x = 4.61512/0.69315 = 6.65821 >>> x=7





Ikusi ZenbakiaAsmatu.exe programaren balizko exekuzio bat:









Eskatzen den ariketaren hurbilpen hau... ZenbakiaAsmatu_hasiera.pas ...abiapuntutzat har daiteke. Hona hemen... ZenbakiaAsmatu.pas ...iturburu-programa, eta...   ZenbakiaAsmatu_azpiprogramak.pas beste iturburu-programa bat da. Ikusten denez, soluzio bakarra ez dago, zein da zurea?




 

2023(e)ko otsailaren 21(a), asteartea

ReadKey funtzioa



readkey funtzioak ez du parametrorik jasotzen, parametrorik ez duelako behar. Bere emaitza teklatuaren karaktere bat da. Hauek dira readkey funtzioaren ezaugarriak:


  • readkey funtzioak karaktere bat irakurtzeko balio du

  • Teklatua sakatu eta readkey funtzioak teklari dagokion karakterea CHAR datu-motako aldagai batean gordetzen du, hots, readkey funtzioak ez du RETURN beharrik

  • Teklaren karakterea jaso eta gero readkey funtzioak ez du karaktere hori pantailan erakusten

  • readkey funtzioa ez dago konpiladorearen muinean crt unitatean baizik, horregatik crt unitatea erabiliko dela adieraztea derrigorrezkoa da


Ikusi ere keypressed funtzio boolerra. Tekla bat sakatzean keypressed funtzio boolerrak TRUE itzuliko du. Horregatik programa honen bukaeran, exekuzioa gelditzeko ez dugu readln bat erabiltzen eta repeat until keypressed aginduagatik ordezkatu dugu. Programaren exekuzioa bukatzeko return teklan sakatu beharra dago readln jartzean, baina edozein tekla sakatzea nahikoa da repeat until keypressed agindua jartzean. 


program readkey_funtzioa ;
uses
crt;
var
cKarak1, cKarak2 : char ;
begin
clrscr ;
writeln('Hasteko readln prozedurak karaktere bat') ;
writeln('nola irakurtzen duen ikus dezagun') ;
writeln('Lehenengo karakterea eman: ') ;
readln(cKarak1) ; (* zein karaktere sartzen ari garen ikusten dugu *)
(* RETURN baten bitartez baieztatu behar dugulako *)

cKarak1 := lowercase(cKarak1) ; (* string edo char bat minuskuletara *)
write('Lehenengo karakterea =====>', cKarak1, '<=====') ;

writeln ;
writeln ;
writeln('readkey funtzioaren txanda, funtzio hau') ;
writeln('soilik karaktereekin erabil daiteke') ;
writeln('Bigarren karakterea eman: ') ;
cKarak2 := readkey ; (* sarrerako parametrorik ez daukan funtzio baten *)
(* deia, funtzioaren emaitza karaktere bat izanik *)

cKarak2 := lowercase(cKarak2) ; (* string edo char bat minuskuletara *)
writeln('Bigarren karakterea =====>', cKarak2, '<=====') ;

writeln ;
writeln ;
writeln ;
writeln('==============================') ;
writeln('Edozein tekla sakatu amaitzeko') ;
writeln('==============================') ;

repeat until keypressed ;
end.





Hona hemen ReadKey_funtzioa izeneko programaren exekuzio baten irudia:








 

5. astea | menu bat

Programa batean aukera desberdinak kudeatzeko sarritan menu bat erabiltzen da, eta horrelakoetan aukeraren hautapena karaktere baten bitartez gidatzen da.



Adibidez, jarraian erakusten den Menua1.pas programan eragiketa aritmetikoak egiten dira bi zenbakiekin eta programaren exekuzio bakoitzean cAukera aldagaiaren bitartez eragiketa hautatzen da. Aukera asko direnean azpimarratzekoa da CASE-OF baldintzazko aginduaren komengarritasuna. CASE-OF baldintzazko aginduaren ordez IF-THEN aginduak jari beharko lirateke, baina CASE-OF baldintzazko agindua oso trinkoa eta garbia delako programaren irakurgarritasuna handia izango da.


program AukeraMenuBatezHautatzen_1;
uses
crt;
var
cAukera, cItxoin : char;
rEragigai1, rEragigai2 : real;
begin
clrscr;
write('Zenbaki errealekin lan eginez, lehenengo eragigaiaren balioa eman: ');
readln(rEragigai1);
write('Zenbaki errealekin lan eginez, bigarren eragigaiaren balioa eman: ');
readln(rEragigai2);

writeln('============Menua============');
writeln(' + Batura lortzeko');
writeln(' - Kendura lortzeko');
writeln(' * Biderkadura lortzeko');
writeln(' / Zatiketa burutzeko');
writeln('=============================');
write(' Zure aukera: ');
readln(cAukera);

case cAukera of
'+' : writeln(rEragigai1:0:2, ' + ', rEragigai2:0:2, ' = ', rEragigai1+rEragigai2:0:2);
'-' : writeln(rEragigai1:0:2, ' - ', rEragigai2:0:2, ' = ', rEragigai1-rEragigai2:0:2);
'*','x','X' : writeln(rEragigai1:0:2, ' * ', rEragigai2:0:2, ' = ', rEragigai1*rEragigai2:0:2);
'/' : writeln(rEragigai1:0:2, ' / ', rEragigai2:0:2, ' = ', rEragigai1/rEragigai2:0:2);
else
writeln('Eragiketa gaizki aukeratuta!');
end;

cItxoin := readkey;
writeln(cItxoin);
end.





Menua1.pas programaren azalpenak:


  • crt unitate bat da eta bere barnean dago readkey funtzioaren kodifikazioa eta clrscr prozeduraren kodifikazioa

  • uses crt bitartez adierazten dugu linker programak nola lan egin behar duen

  • clrscr prozedurak pantaila garbitzen du

  • readkey funtzio bat da eta programan erabili ahal izateko crt unitatea beharrezkoa da, tekla bat sakatzean berari dagokion karakterea

  • cItxoin:=readkey programa gelditzen da tekla bat sakatu arte, tekla bat sakatzean berari dagokion karakterea cItxoin aldagaian gordeko da

  • readkey funtzioari esker cItxoin aldagaian karakteren bat gordetzen da, baina cItxoin aldagaiaren balioa ez da erabiltzen eta konpiladoreak horren abisua ematen du, "warning" hori kentzeko aski da writeln(cItxoin)bat egitea


Menua1.pas programatik abiatuta idatzi Menua2.pas programa, zeinetan programaren exekuzio bakoitzeko eragiketak behin baino gehiagotan egin daitezkeen eta programa bukarazteko aukera berri bat dagoen:


program AukeraMenuBatezHautatzen_2;
uses
crt;
var
cAukera, cItxoin : char;
rEragigai1, rEragigai2 : real;
begin
repeat
clrscr;
writeln('============Menua============');
writeln(' + Batura lortzeko');
writeln(' - Kendura lortzeko');
writeln(' * Biderkadura lortzeko');
writeln(' / Zatiketa burutzeko');
writeln(' A Programa amaitu');
writeln('=============================');
repeat
write(' Zure aukera: ');
cAukera := readkey;
cAukera := upcase(cAukera);
writeln(cAukera); (* readkey funtzioak ez du irakurritako tekla erakusten *)
until (cAukera ='+') or (cAukera ='-') or (cAukera ='*') or (cAukera ='X') or (cAukera ='/') or (cAukera ='A');
writeln;
case cAukera of
'+' : begin
write('Zenbaki errealekin lan eginez, lehenengo batugaiaren balioa eman: ');
readln(rEragigai1);
write('Zenbaki errealekin lan eginez, bigarren batugigaiaren balioa eman: ');
readln(rEragigai2);
writeln(rEragigai1:0:2, ' + ', rEragigai2:0:2, ' = ', rEragigai1+rEragigai2:0:2);
end;
'-' : begin
write('Zenbaki errealekin lan eginez, kenkizunaaren balioa eman: ');
readln(rEragigai1);
write('Zenbaki errealekin lan eginez, kentzailearen balioa eman: ');
readln(rEragigai2);
writeln(rEragigai1:0:2, ' - ', rEragigai2:0:2, ' = ', rEragigai1-rEragigai2:0:2);
end;
'*','X' : begin
write('Zenbaki errealekin lan eginez, lehenengo biderkagaiaren balioa eman: ');
readln(rEragigai1);
write('Zenbaki errealekin lan eginez, bigarren biderkagaiaren balioa eman: ');
readln(rEragigai2);
writeln(rEragigai1:0:2, ' * ', rEragigai2:0:2, ' = ', rEragigai1*rEragigai2:0:2);
end;
'/' : begin
write('Zenbaki errealekin lan eginez, zatikizunaren balioa eman: ');
readln(rEragigai1);
repeat
write('Zenbaki errealekin lan eginez, zatitzailearen balioa eman: ');
readln(rEragigai2);
until rEragigai2 <> 0.0;
writeln(rEragigai1:0:2, ' / ', rEragigai2:0:2, ' = ', rEragigai1/rEragigai2:0:2);
end;
'A' : begin
writeln('Programatik irtetera goaz!');
end
end;

cItxoin := readkey; (* emaitzak ikusi ahal izateko itxaron *)
writeln(cItxoin); (* konpilazio abisua kentzeko *)
until cAukera='A';
end.



CHAR datu-mota














DEFINIZIOA



CHAR datu-motako aldagairi karaktere esaten diogu, eta hitzak zein esaldiak osatzeko behar diren elementuak dira, adibidez honako hauek ditugu:


  • bokalak

  • kontsonanteak

  • zuriunea

  • puntuazio zeinuak (koma, puntua, puntu eta koma, bi puntuak, ...)

  • zenbakizko karaktereak edo zifrak: 0, 1, 2, ..., 9

  • sinboloak: (, ), {, }, [, ], @, #, ... 

  • kontrolerako karaktereak (hurrengo lerroa, lerro hasiera, atzera, ezabatu, ...)



ASCII taula






Karaktereak adierazteko karaktere bakoitzari zenbaki bat esleitzen zaio, eta horrela osatzen da American Standard Code for Information Interchange taula, ASCII taula. ASCII taula ordenaturik dago eta 256 elementuz osaturik dago (256 karaktere: byte batek ematen dituen 28=256 kodeak).



ASCII taularen lehen erdiari ASCII taula estandarra esaten zaio, taula estandarrak 128 karaktere biltzen ditu (0 kodean hasita eta 127 kodean bukatuta). ASCII taula estandarrak letra eta sinbolo arruntenak biltzen ditu eta 7 bit behar dira denak adierazi ahal izateko (27=128).



ASCII taularen bigarren erdiari ASCII taula luzatua (edo hedatua) esaten zaio, taula hedatuak ere 128 karaktere biltzen ditu (128 kodean hasita eta 255 kodean bukatuta). ASCII taula hedatuak karaktere bereziak eta karaktere grafikoak biltzen ditu.



Hona hemen ASCII estandar taulari dagokion irudi bat:







Ikusi zenbakien ikurrek duten (0, 1, 2, ..., 9) kokapena zein den. Berdin alfabetoa letra larrietan emanik eta alfabetoa minuskuletan emanik.



Hauxe da ASCII hedatua taulari dagokion irudi bat:





Ikusi ñ eta Ñ karaktereak non dauden. Berdin zenbait karaktere grafiko edo alfabeto grekoaren zenbait karaktere. Ikusi ere sinbolo edo ikur matematiko bereziak biltzen direla.



Karaktere bereziak erabiltzen duen programa hau bukaerako adibideetan erakusten da:






CHAR DATU-MOTA ERABILTZEN: OINARRIZKO ERAGIKETAK




var


cLetra1, cLetra2, cLetra3, cLetra4, cLetra5, cLetra6 : char ;


begin



readln(cLetra1) ;     { karaktere bat teklatuz irakurri }


cLetra2 := '7' ;      { '7' karakterea esleitu }


cLetra3 := 'H' ;      { 'H' karakterea esleitu }


writeln(cLetra3) ;    { karaktere aldagai baten edukia pantailaratu }


cLetra4 := 'A' ;      { 'A' karakterea esleitu }


cLetra5 := #65 ;      { 'A' karakterea esleitu, kode hamartarra }


cLetra6 := #$41 ;     { 'A' karakterea esleitu, kode hamaseitarra }




CHAR DATU-MOTA: KONPARAKETAK



Bi karakteen arteko alderaketa egitean ASCII taularen posizioak alderatzen dira, horrela daukagu:




'0' < '9' < 'A' < 'Z' < 'a' < 'z' < 'ñ' < 'Ñ' < 'α'



Hori dela eta,  honako hau egin daiteke:



if cLetra = 'R' then


Edo honako hau:



readln(cAukera);

case cAukera of

   'a', 'A' : begin
                 writeln('Lehen aukera') ;
              end ;


   'b', 'B' : begin
                 writeln('Bigarren aukera') ;
              end ;

   'c', 'C' : begin
                 writeln('Hirugarren aukera') ;
              end ;

end ;


FUNTZIO ETA PROZEDURA ESTANDARRAK


  • upcase funtzioa: letra minuskula letra larri bihurtzen du

  • lowercase funtzioa: letra larri letra minuskula bihurtzen du

  • chr funtzioa: zenbaki bat hartu eta dagokion karakterea itzultzen du

  • ord funtzioa: karaktere bat hartu eta dagokion zenbakia (dagokion ordinala) itzultzen du

  • pred funtzioa: letra bat hartu eta bere aurreko letra itzultzen du

  • succ funtzioa: letra bat hartu eta bere ondoko letra itzultzen du

  • clrscr prozedura: pantaila garbitzen du eta kurtsorea goian eta ezkerrean kokatzen du, crt unitatea beharrezkoa da

  • readkey funtzioa: karaktere bat irakurtzen du teklatutik, ez dago return sakatu beharrik eta crt unitatea derrigorrezkoa da

  • keypressed funtzio boolerra: karaktere bat teklatutik irakurtzean true itzultzen du, honek ere Crt unitatea beharrezkoa du 


Funtzio eta prozedura estandarren zenbait dei:


cLetra := upcase('a') ;      { cLetra aldagaian 'A' gorde }

cLetra := upcase('6') ;      { cLetra aldagaian '6' gorde }

cLetra := lowercase('B') ;   { cLetra aldagaian 'b' gorde }

cLetra := lowercase('8') ;   { cLetra aldagaian '8' gorde }


cLetra := chr(65) ;          { cLetra aldagaian 'A' gorde }

iZenbk := ord('B') ;         { iZenbk aldagaian 66 gorde }


cLetra := pred('B') ;        { cLetra aldagaian 'A' gorde }

cLetra := succ('B') ;        { cLetra aldagaian 'C' gorde }


cLetra := 'B' ;              { cLetra aldagaian 'B' gorde }

succ(cLetra) ;               { cLetra aldagaian 'C' gorde }

cLetra := 'B' ;              { cLetra aldagaian 'B' gorde }

pred(cLetra) ;               { cLetra aldagaian 'A' gorde }


clrscr ;                     { pantaila garbitu }

cLetra := readkey ;          { cLetra aldagaian karaktere bat gorde }


repeat

until keypressed ;           { itxaron tekla bat sakatu arte }






PARAMETRO IZATEAN JOKAMOLDEA



Karakterea datu-mota sinplea izanik azpiprograma batean honela agertuko da jokamoldearen arabera:


  • Irteerakoa denean VAR marka izango du aurrean

  • Sarrerakoa denean ez du inolako markarik izango


ADIBIDEAK



Hona hemen karaktereen zenbait programa:















INTEGER REAL BOOLEAN CHAR STRING ARRAY RECORD FILE