Karaktere-kateak lantzen
Programa bakar batek eginkizun desberdinak bildu behar dituenean menu bat erabil daiteke. Adibide honetan hiru aukerako menu bat erakusten da, non hirugarren aukerari esker programa bukaraziko da.
{ Menuaren aukerak hautatzeko funtzio bat. Aukera bakoitzaren eginkizuna burutzeko prozedura bana. } program MenuaAzpiprogramaz; uses crt; { Menuaren aukera erakutsi eta hautapena aukeratu } function fncMenua: char; var cHautapena: char; begin writeln('===============MENUA================'); writeln(' A) alfabeto zatia diagonalean'); writeln(' B) biderkatzeko taula pantailaratu'); writeln; writeln(' I) irten'); writeln('===================================='); repeat write(' Zure aukera: '); cHautapena := readkey; writeln(cHautapena); cHautapena := upcase(cHautapena); until (cHautapena = 'A') or (cHautapena = 'B') or (cHautapena = 'I'); fncMenua := cHautapena; end; { A-tik hasita alfabetoa diagonalki pantailaratu } procedure DiagonalaPantailanIdatzi(cLetra: char); var cKont: char; iNon: integer; begin writeln; iNon := 5; for cKont:='A' to cLetra do begin writeln(cKont:iNon); iNon := iNon + 2; end; end; procedure TaulaPantailaratu(iZbk: integer); var k: integer; begin writeln(iZbk,' zenbakiaren biderkatzeko taula:'); for k:=1 to 10 do begin writeln(k:10, ' x ', iZbk:2, ' = ', k*iZbk:3); end; writeln; end; { ----------------------PROGRAMA NAGUSIA---------------------- } var cAukera, cLetra, cItxoin: char; iZbk: integer; begin repeat clrscr; cAukera := fncMenua; writeln; case cAukera of 'A': begin repeat write('Azken letra eman: '); cLetra := readkey; writeln(cLetra); cLetra := upcase(cLetra); until (cLetra >= 'A') and (cLetra <= 'Z'); DiagonalaPantailanIdatzi(cLetra); end; 'B': begin repeat write('1 eta 10 arteko zenbaki osoa eman: '); readln(iZbk); until (iZbk >= 1) and (iZbk <= 10); TaulaPantailaratu(iZbk); end; 'I': begin writeln('Programa amaitzera doa.'); end ; end; (* case-rena *) writeln; write('Edozein tekla sakatu aurrera egiteko...'); cItxoin := readkey; (* emaitzak ikusi ahal izateko itxaron *) writeln(cItxoin); (* konpilazio abisua kentzeko *) until cAukera='I'; end.
{ KateakLantzekoBaliabideak programan delete(), insert(), copy() } { eta pos() azpiprogramen alternatibak kodetu dira. } program KateakLantzekoBaliabideak; uses crt; function fncAukeraHautatu: char; var cHautapena: char; begin writeln('===========================Menua============================'); writeln(' A delete() prozeduraren bezalako fnsEzabatu() funtzioa'); writeln(' B insert() prozeduraren bezalako fnsTxertatu() funtzioa'); writeln(' C copy() funtzioaren bezalako kopiatu() prozedura'); writeln(' D pos() funtzioaren bezalako kokatu() prozedura'); writeln; writeln(' I Programatik irten'); writeln('============================================================'); write(' Zure aukera: '); repeat cHautapena := readkey; cHautapena := upcase(cHautapena); writeln(cHautapena); if (cHautapena < 'A') or (cHautapena > 'D') and (cHautapena <> 'I') then begin write('Aukera ez da ondo hautatu. Berriro aukeratu: '); end; until (cHautapena >= 'A') and (cHautapena <= 'D') or (cHautapena = 'I'); fncAukeraHautatu := cHautapena; end; function fnsEzabatu(sDatua: string; iNondik, iZenbat: integer): string; var sEmaitza: string; iKont: integer; begin sEmaitza := ''; for iKont:=1 to iNondik-1 do begin sEmaitza := sEmaitza + sDatua[iKont]; writeln(iKont:10, sDatua[iKont]:10); end; for iKont:=iNondik+iZenbat to length(sDatua) do begin sEmaitza := sEmaitza + sDatua[iKont]; writeln(iKont:14, sDatua[iKont]:10); end; fnsEzabatu := sEmaitza; end; function fnsTxertatu(sAzpikatea, sDatua: string; iNondik: integer): string; var sEmaitza: string; iKont: integer; begin sEmaitza := ''; for iKont:=1 to iNondik-1 do begin sEmaitza := sEmaitza + sDatua[iKont]; writeln(iKont:10, sDatua[iKont]:10); end; for iKont:=1 to length(sAzpikatea) do begin sEmaitza := sEmaitza + sAzpikatea[iKont]; writeln(iKont:12, sAzpikatea[iKont]:10); end; for iKont:=iNondik to length(sDatua) do begin sEmaitza := sEmaitza + sDatua[iKont]; writeln(iKont:14, sDatua[iKont]:10); end; fnsTxertatu := sEmaitza; end; procedure kopiatu(sDatua: string; iNondik, iZenbat: integer; var sEmaitza: string); var iKont: integer; begin sEmaitza := ''; for iKont:=iNondik to iNondik+iZenbat-1 do begin sEmaitza := sEmaitza + sDatua[iKont]; writeln(iKont:10, sDatua[iKont]:10); end; end; procedure kokatu(sAzpikatea, sDatua: string; var iNon: integer); var iKont, k, i: integer; boAurkitua, boDesberdinak: boolean; begin boAurkitua := FALSE; iKont := 1; while (iKont <= length(sDatua)) and not boAurkitua do begin boDesberdinak := FALSE; k := iKont; i := 1; while (k < iKont+length(sAzpikatea)) and not boDesberdinak do begin writeln('iKont=', iKont:2, 'k=':6, k:2, sDatua[k]:6, 'i=':6, i:2, sAzpikatea[i]:6, 'boDesberdinak=':18, boDesberdinak:5); if sDatua[k] <> sAzpikatea[i] then boDesberdinak := TRUE else begin k := k +1; i := i +1; end; end; if boDesberdinak = FALSE then boAurkitua := TRUE else iKont := iKont +1; end; if boAurkitua then begin iNon := iKont; writeln('boAurkitua=', boAurkitua:5, 'iNon=Kont=':15, iNon:2); end else begin iNon := 0; writeln('boAurkitua=', boAurkitua:5, 'iNon=':10, iNon:2); end; writeln; end; { ----------------------PROGRAMA NAGUSIA---------------------- } var cAukera, cItxoin: char; iNon: integer; sDatua, sEmaitza: string; sAzpikatea: string; iNondik, iZenbat: integer; begin repeat clrscr; cAukera := fncAukeraHautatu; writeln; case cAukera of 'A' : begin writeln('sDatua emanik, fnsEzabatu() funtzioa kodetu delete() prozedurarena betetzeko'); writeln; writeln(' procedure delete(var sKatea: string;'); writeln(' iNondik: integer;'); writeln(' iZenbat: integer);'); writeln; writeln(' function fnsEzabatu( sDatua: string;'); writeln(' iNondik: integer;'); writeln(' iZenbat: integer): string;'); writeln; write('sDatua eman: '); readln(sDatua); writeln('sDatua |', sDatua, '|'); repeat write('Ezabaketa zein karakteretan hasiko da? '); readln(iNondik); if iNondik < 1 then writeln('Posizioa gutxienez 1 izan behar da'); if iNondik > length(sDatua) then writeln('Posizioa gehinez ', length(sDatua), ' izan behar da'); until (iNondik >= 1) and (iNondik <= length(sDatua)); repeat write('Zenbat karaktere ezabatuko dira? '); readln(iZenbat); if iZenbat < 1 then writeln('Gutxienez karaktere 1 kendu behar da'); if iZenbat > length(sDatua)-iNondik+1 then writeln('Kopurua gehinez ', length(sDatua)-iNondik+1, ' izan behar da'); until (iZenbat >= 1) and (iZenbat <= length(sDatua)-iNondik+1); sEmaitza := fnsEzabatu(sDatua, iNondik, iZenbat); writeln('|', sDatua, '|'); writeln('|', sEmaitza, '|'); end; 'B' : begin writeln('sDatua emanik, fnsTxertatu() funtzioa kodetu insert() prozeduraren lana betez'); writeln; writeln(' procedure insert(sSartukoDenKatea: string;'); writeln(' var sKateNagusia: string;'); writeln(' iNon: integer);'); writeln; writeln(' function fnsTxertatu(sAzpikatea: string;'); writeln(' sDatua: string; '); writeln(' iNondik: integer): string;'); writeln; write('sDatua eman: '); readln(sDatua); writeln('sDatua |', sDatua, '|'); write('sAzpikatea eman: '); readln(sAzpikatea); writeln('sAzpikatea |', sAzpikatea, '|'); repeat write('Txertaketa zein karakteretan hasiko da? '); readln(iNondik); if iNondik < 1 then writeln('Posizioa gutxienez 1 izan behar da'); if iNondik > length(sDatua) then writeln('Posizioa gehinez ', length(sDatua), ' izan behar da'); until (iNondik >= 1) and (iNondik <= length(sDatua)); sEmaitza := fnsTxertatu(sAzpikatea, sDatua, iNondik); writeln('|', sDatua, '|'); writeln('|', sEmaitza, '|'); end; 'C' : begin writeln('sDatua emanik, kopiatu() prozedura kodetu copy() funtzioaren lana betetzeko'); writeln; writeln(' function copy(sDatuaDenKatea: string;'); writeln(' iNonHasi: integer;'); writeln(' iZenbat: integer): string;'); writeln; writeln(' procedure kopiatu( sDatua: string;'); writeln(' iNondik: integer;'); writeln(' iZenbat: integer;'); writeln(' var sEmaitza: string);'); writeln; write('sDatua eman: '); readln(sDatua); writeln('sDatua |', sDatua, '|'); repeat write('Kopiaketa zein karakteretan hasiko da? '); readln(iNondik); if iNondik < 1 then writeln('Posizioa gutxienez 1 izan behar da'); if iNondik > length(sDatua) then writeln('Posizioa gehinez ', length(sDatua), ' izan behar da'); until (iNondik >= 1) and (iNondik <= length(sDatua)); repeat write('Zenbat karaktere kopiatuko dira? '); readln(iZenbat); if iZenbat < 1 then writeln('Gutxienez karaktere 1 kendu behar da'); if iZenbat > length(sDatua)-iNondik+1 then writeln('Kopurua gehinez ', length(sDatua)-iNondik+1, ' izan behar da'); until (iZenbat >= 1) and (iZenbat <= length(sDatua)-iNondik+1); kopiatu(sDatua, iNondik, iZenbat, sEmaitza); writeln('|', sDatua, '|'); writeln('|', sEmaitza, '|'); end; 'D' : begin writeln('sDatua emanik, kokatu() prozedura kodetu pos() funtzioaren lana betetzeko'); writeln; writeln(' function pos(sBilatukoDenAzpikatea: string;'); writeln(' sKateNagusia: string): integer;'); writeln; writeln(' procedure kokatu(sAzpikatea: string;'); writeln(' sDatua: string;'); writeln(' var iNon: integer);'); writeln; write('Kate nagusia den sDatua eman: '); readln(sDatua); writeln('sDatua |', sDatua, '|'); write('Bilatuko den sAzpikatea eman: '); readln(sAzpikatea); writeln('sAzpikatea |', sAzpikatea, '|'); kokatu(sAzpikatea, sDatua, iNon); if iNon = 0 then writeln('|', sAzpikatea, '| ez dago |', sDatua, '| katean') else writeln('|', sAzpikatea, '| |', sDatua, '| katearen ', iNon, ' posizioan dago'); end; 'I' : begin writeln('Programa amaitzera doa. Edozein tekla sakatu.'); end; end; cItxoin := readkey; (* emaitzak ikusi ahal izateko itxaron *) writeln(cItxoin); (* konpilazio abisua kentzeko *) until cAukera='I'; end.
iruzkinik ez:
Argitaratu iruzkina
Iruzkinen bat idazteko Google-ko kontu bat behar duzu. Iruzkin guztien moderazio-ardura blogeko administratzaileari dagokio.