8. astea (2024/03/11 eta 2024/03/15) ikasgelan egin dena
- Ostegunean, martxoaren (3) hamalaugarren (14) eguna izango da, π zenbakiaren nazioarteko eguna izango da: Pi, nortasun handiko zenbakia
- Azken autoebaluazio-ariketaren bitartez, 15. Ariketa: azpiprogramak (III), azpiprogramen parametroak birpasatu ditugu
- (I) Orain arte ikusitako funtzio eta prozedura estandarrak artikuluan bildumatxo bat egin da eta adibideen estekak eskaintzen dira. STRING datu-mota ikasi ondoren, funtzio eta prozeduren zerrenda luzeagoa izango da, hau: (II) Orain arte ikusitako funtzio eta prozedura estandarrak
Katearen karaktereak banan-banan prozesatu:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | { Datuaren luzera maximoa 20 karaktere. Karaktereak banan banan aztertuz bokal guztiak maiuskuletan jarri eta gainerako karaktere guztiak minuskuletan jarri. Datua ------> KrokodiLO bErDe@ PoziK daGO Emaitza ----> krOkOdIlO bErdE@ pOz } program MaiuskulakMinuskulak ; type DM_Kate20 = string [ 20 ] ; function fnboBokalaDa(cLetra: char ): boolean ; begin case cLetra of 'a' , 'e' , 'i' , 'o' , 'u' : fnboBokalaDa := TRUE ; 'A' , 'E' , 'I' , 'O' , 'U' : fnboBokalaDa := TRUE else fnboBokalaDa := FALSE ; end ; end ; {-------------------------Programa Nagusia-------------------------} var sEsaldia : DM_Kate20 ; k : integer ; begin writeln ( '//////////////////////////////////////' ) ; writeln ; write ( 'Esaldia eman: ' ) ; readln(sEsaldia) ; writeln ( '==>' , sEsaldia, '<==' ) ; for k:= 1 to length(sEsaldia) do begin if fnboBokalaDa(sEsaldia[k]) then sEsaldia[k] := upcase(sEsaldia[k]) else sEsaldia[k] := lowercase(sEsaldia[k]) ; end ; writeln ( '==>' , sEsaldia, '<==' ) ; writeln ; writeln ( '//////////////////////////////////////' ) ; readln ; end . |
Bi kateren zatia eskuratu eta zenbaki bihurtu. Kontuz 0 posizioaren edukiarekin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | { Datua den karaktere-katearen ezaugarriak: - Datuaren luzera maximoa 20 karaktere - Datuaren hasieran izen bat dago, adibidez Liudmila izena - Datuaren amaieran nota bat dago, adibidez 7.2 nota (beti zifra bat, puntua eta dezimal bakarra) Datu bi teklatuaren bitartez harturik, notak eskuratu eta nota biren batezbestekoa lortu. Liudmila7.2 Kiril6.8 (7.2+6.8)/2 => 7.0 } program BiNotenBatezbestekoAritmetikoa; type tKate20 = string [ 20 ]; function fnsNotaBakandu(sIkaslea: tKate20): tKate20; var sNota: tKate20; begin sNota := sIkaslea[length(sIkaslea)- 2 ]; { unitatea } sNota := sNota + sIkaslea[length(sIkaslea)- 1 ]; { puntua } sNota := sNota + sIkaslea[length(sIkaslea)]; { hamarrekoa } fnsNotaBakandu := sNota; end ; {-------------------------Programa Nagusia-------------------------} var sIkasle1, sIkasle2, sNota1, sNota2: tKate20; rNota1, rNota2: real ; iErroreaNon1, iErroreaNon2: integer ; begin writeln ; writeln ; writeln ; writeln ( '//////////////////////////////////////' ); writeln ; write ( 'Lehen ikaslearen datuak eman (adibidez: Liudmila7.2): ' ); readln(sIkasle1); write ( 'Bigarren ikaslearen datuak eman (adibidez: Kiril6.8): ' ); readln(sIkasle2); writeln ( '1==>' , sIkasle1, '<==1' ); writeln ( '2--|' , sIkasle2, '|--2' ); writeln ; sNota1 := fnsNotaBakandu(sIkasle1); writeln ( '1 sNota ==>' , sNota1, '<==' ); sNota2 := fnsNotaBakandu(sIkasle2); writeln ( '2 sNota --|' , sNota2, '|--' ); writeln ; Val (sNota1, rNota1, iErroreaNon1); writeln ( '1 rNota ==>' , rNota1, ' iErroreaNon1=' , iErroreaNon1); if iErroreaNon1 <> 0 then writeln ( '1==>' , sIkasle1, '<==1 datua ez da egokia' ); Val (sNota2, rNota2, iErroreaNon2); writeln ( '2 rNota --|' , rNota2, ' iErroreaNon2=' , iErroreaNon2); if iErroreaNon2 <> 0 then writeln ( '2--|' , sIkasle2, '|--2 datua ez da egokia' ); writeln ; if (iErroreaNon1 = 0 ) and (iErroreaNon2 = 0 ) then writeln ( 'Batezbestekoa = ' , (rNota1+rNota2)/ 2 : 0 : 2 ) else writeln ( 'Batezbestekoa ezin izan da kalkulatu' ); writeln ; writeln ( '//////////////////////////////////////' ); readln; end . |
Hainbat kateren zatia eskuratu eta zenbaki bihurtu (ikusi ere
SarrerakoDatuakKontrolatuz.pas
):1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 | { Datua den karaktere-katearen ezaugarriak: - Datuaren luzera maximoa 30 karaktere. - Datuaren hasieran izen bat dago, adibidez Eleonor izena. - Datuaren erdian nota bat dago, adibidez +7.2 nota edo -6.8 nota (zeinua, lehen zifra, puntua eta dezimal bakarra). - Datuaren amaieran abizena dago, adibidez Iza abizena. Zenbat ikasle diren teklatuaren bitartez harturik, notak eskuratu eta nota guztien batezbestekoa lortu. Eleonor+7.2Iza Peru-6.8Salazar Amagoia+5.5Lakarra Ruy-4.9Ruiz (+7.2 -6.8 +5.5 -4.9) / 4 = 0.25 } program HainbatNotenBatezbestekoa ; type tKate30 = string [ 30 ] ; procedure DatuakBakandu(sIkaslea: tKate30; var sIzena, sAbizena, sNota: tKate30) ; var iBanatzaileaNon : integer ; begin iBanatzaileaNon := pos( '+' , sIkaslea) ; if iBanatzaileaNon = 0 then iBanatzaileaNon := pos( '-' , sIkaslea) ; writeln ( 'Banatzailearen posizioa ' , iBanatzaileaNon, ' da' ) ; sIzena := copy(sIkaslea, 1 , iBanatzaileaNon- 1 ) ; sNota := copy(sIkaslea, iBanatzaileaNon, 4 ) ; sAbizena := copy(sIkaslea, iBanatzaileaNon+ 4 , length(sIkaslea)-iBanatzaileaNon+ 4 ) ; writeln ( 'sIzena = ' , sIzena) ; writeln ( 'sNota = ' , sNota) ; writeln ( 'sAbizena = ' , sAbizena) ; end ; {-------------------------Programa Nagusia-------------------------} var sIkaslea, sNota, sIzena, sAbizena : tKate30 ; rNota, rBatukaria : real ; iZenbatIkasle, k, iErroreaNon : integer ; begin writeln ( '//////////////////////////////////////' ) ; writeln ; repeat write ( 'Zenbat ikasle izango dira (adibidez 4): ' ) ; readln(iZenbatIkasle) ; until iZenbatIkasle > 0 ; rBatukaria := 0.0 ; for k:= 1 to iZenbatIkasle do begin writeln ; write (k, '. ikaslearen datuak (adibidez: Ruy+7.2Ruiz): ' ) ; readln(sIkaslea) ; writeln ; writeln ( 'datua ==>' , sIkaslea, '<==' ) ; DatuakBakandu(sIkaslea, sIzena, sAbizena, sNota) ; writeln (k, '. ikaslea: |' , sIzena, '| |' , sAbizena, '| |' , sNota, '|' ) ; val (sNota, rNota, iErroreaNon) ; writeln (k, '. ikaslea: rNota = ' , rNota: 0 : 1 , ' iErroreaNon = ' , iErroreaNon) ; rBatukaria := rBatukaria + rNota ; end ; writeln ; writeln ( 'Batezbestekoa = ' , rBatukaria/iZenbatIkasle: 0 : 3 ) ; writeln ; writeln ( '//////////////////////////////////////' ) ; readln ; end . |
- STRING datu-motako aldagaiekin lan egiteko baliabideak adibideekin birpasatu ditugu:
- Adibide hauek aztertu ditugu:
- 8. astea | zero posizioa adibidea. Adibide honen haritik, funtzio hau ondo dago?
- 8. astea | kate baten hasieraketa adibidean length() funtzioa erabiliko da
- 8. astea | katean toki nahikorik ez adibidean insert() prozedura erabiliko da
- 8. astea | zenbakiak teklatuz irakurtzen adibidean val() prozedura erabiliko da (bere aurkakoa str() prozedura da)
- 8. astea | katearen egokitasuna kontrolatu adibidean val() prozedura, pos() funtzioa eta copy() funtzioa erabiliko dira
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | { Datua den karaktere-katearen ezaugarriak: - Datuaren luzera maximoa 20 karaktere - Datuaren hasieran izen bat dago, adibidez Eleonor izena - Datuaren amaieran nota bat dago, adibidez 7.2 nota (beti zifra bat, puntua eta dezimal bakarra) Sarrerako katea: Eleonor7.2 Emaitzako katea: 7.2 } function fnsNotaBakandu(sIkaslea: tKate20): tKate20; var sNota: tKate20; begin sNota[ 1 ] := sIkaslea[length(sIkaslea)- 2 ]; { unitatea } sNota[ 2 ] := sNota + sIkaslea[length(sIkaslea)- 1 ]; { puntua } sNota[ 3 ] := sNota + sIkaslea[length(sIkaslea)]; { hamarrekoa } fnsNotaBakandu := sNota; end ; |
- Blogeko ARRAY datu-mota artikulutik abiatuta kontzeptu hauek ikusteko asmoa izan dugu:
- DEFINIZIOA
- ESKEMA
- DATU-MOTA SORTZEN
- ERAGIKETA: IRAKURKETA-IDAZKETA ETA ESLEIPENA
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.