Adibidez, aurreko readln(iZenbakia)instrukzioarako -12.5 ematean puntua ez da onartzen eta programak abortatu egiten du. Arazo bera gertatuko litzateke -2M5 ematean edo +2E5 ematean, batean M karakterea ez delako onartzen eta bestean E karakterea delako onartzen ez dena.
Zenbaki errealekin antzeko zerbait gertatzen da, osoek baino karaktere gehiago onartzen dituzte errealek (adibidez e, E eta puntua) baina karaktere desegoki bat ematean programak abortatu egiten du ere. Esate baterako, aurreko readln(rZenbakia)instrukzioarako ezin daiteke -2.7M5 eman.
Ondoko programa bi hauek zenbakien sarrera zaintzen dute. Horretarako zenbakia string bezala irakurtzen da, gero val prozedura aplikatuz erabakitzen da zer egin sarrera desegokia izan bada.
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 | {----------------------------------------------------------------- Programa honen bitartez integer datu-motako datuak jasoko ditugu. -----------------------------------------------------------------} program IntegerBatIrakurtzenKateBatenBitartez; uses crt; type tsKatea = string [ 15 ]; {------------------------Programa Nagusia--------------------} var sDatua: tsKatea; iDatua: integer ; iErrorea: integer ; cAukera: char ; begin { Programak behin eta berriro exekutatuko da erabiltzaileak amaitzeko erabakia hartu arte } repeat writeln ( 'Programak honek zenbaki oso bat eskatuko du, teklatuz jasotako zenbaki hori' ); writeln ( 'string batean gordeko da eta val prozeduraren bitartez integer datu-motakoa' ); writeln ( 'den aztertuko da. Kopuru osoa teklatuz sartu ezean prozesua errepikatuko da' ); writeln ; repeat {zenbakia string bezala irakurtzen da, honek ez du sekulan errorerik sortzen} write ( 'Sar ezazu zenbaki oso bat: ' ); readln(sDatua); {datua den string hori zenbaki bihurtu eta aztertu errorerik gertatu den} val (sDatua, iDatua, iErrorea); if iErrorea <> 0 then begin writeln ( 'Sarrera onartezina, ' , iErrorea, '. posizioko zifra ez da egokia: ' , sDatua[iErrorea]); writeln ( 'berriro errepikatu' ); writeln ; end ; until iErrorea = 0 ; {datua den string hori zenbaki bihurtu dela frogatzeko bere doble pantailaratu} writeln ( 'Sartutako datuaren doblea: ' , iDatua* 2 ); writeln ; writeln ; write ( 'Beste zenbakirik? (B ala E): ' ); repeat cAukera := upcase(readkey); until (cAukera = 'E' ) or (cAukera = 'B' ); clrscr; until cAukera = 'E' ; end . { Programaren amaiera } |
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 | {----------------------------------------------------------------- Programa honen bitartez real datu-motako datuak jasoko ditugu. -----------------------------------------------------------------} program RealBatIrakurtzenKateBatenBitartez; uses crt; type tsKatea = string [ 15 ]; {------------------------Programa Nagusia--------------------} var sDatua: tsKatea; rDatua: real ; iErrorea: integer ; cAukera: char ; begin { Programak behin eta berriro exekutatuko da erabiltzaileak amaitzeko erabakia hartu arte } repeat writeln ( 'Programak honek zenbaki bat eskatuko du, teklatuz jasotako zenbaki hori' ); writeln ( 'string batean gordeko da eta val prozeduraren bitartez real datu-motakoa' ); writeln ( 'den aztertuko da. Zenbaki teklatuz sartu ezean prozesua errepikatuko da' ); writeln ; repeat {zenbakia string bezala irakurtzen da, honek ez du sekulan errorerik sortzen} write ( 'Sar ezazu zenbaki bat: ' ); readln(sDatua); {datua den string hori zenbaki bihurtu eta aztertu errorerik gertatu den} val (sDatua, rDatua, iErrorea); if iErrorea <> 0 then begin writeln ( 'Sarrera onartezina, ' , iErrorea, '. posizioko zifra ez da egokia: ' , sDatua[iErrorea]); writeln ( 'berriro errepikatu' ); writeln ; end ; until iErrorea = 0 ; {datua den string hori zenbaki bihurtu dela frogatzeko bere doble pantailaratu} writeln ( 'Sartutako datuaren doblea: ' , rDatua* 2 : 0 : 3 ); writeln ; writeln ; write ( 'Beste zenbakirik? (B ala E): ' ); repeat cAukera := upcase(readkey); until (cAukera = 'E' ) or (cAukera = 'B' ); clrscr; until cAukera = 'E' ; end . { Programaren amaiera } |
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.