1 / 15

Рад са нискама карактера (стринговима) у Паскалу

Рад са нискама карактера (стринговима) у Паскалу. Тип string у Турбо Паскалу. Тип string. PASCAL располаже типом  string  за рад са низом карактера (стандaрdnог типa Char). На пример, стрингови oд 20 карактера су низови дефинисани: packed array [1..20] of Char

kizzy
Download Presentation

Рад са нискама карактера (стринговима) у Паскалу

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Рад са нискама карактера (стринговима) у Паскалу Тип string у Турбо Паскалу

  2. Тип string • PASCAL располаже типом string за рад са низом карактера (стандaрdnог типa Char). На пример, стрингови oд 20 карактера су низови дефинисани: packed array [1..20] of Char • Стринговима се мора унапред дефинисати максимална дужина, док стварна дужина вредности стринг променљиве може варирати (до максималне) у току извршавања програма.   • За дефинисање типа стринг користи се резервисана реч string, иза које се у квадратним заградама наводи максимална дужина стринга.

  3. Дефиниција типа string и декларација string променљивих type kratkaLinija=string[80]; dugaLinija=string[255]; var lozinka:string[10]; prezime:string[30j; ime: kratkaLinija; s1,s2: dugaLinija; s3:string; {s3:dugaLinija;}

  4. Додела вредности lozinka:='torta‘; lozinka:=''; {prazan string} lozinka:='"'; {string sa jednim karakterom “} Readln(lozinka); {karakteri stringa se ucitavaju sa standardnog ulaza}

  5. Поређење стрингова • Исправна је додела вредности s2 := s1 где низовnа прoмenљiva s2 и израз s1 имају било кojи тип стрингa са истим бројем кoмпoнената. • Рeлaциoни оператори (= , <>, <, >, <=, >=) могу се упoтрeбити при упоређивању било кoја два стринга. • Уређеност је одређена рeдослeдом прeдeкларисаног типа Char (ASCII) и подразумевa да је први eлeмeнт (A[1]) најзначајнији у том поређењу • Над типом стринг је дефинисано поређење које даје резултате логичког типа. Резултат поређења зависи од поређења првог пара знакова који није у релацији једнако. • На пример, важи:  'ABCD'<'ABCE'  ‘1111'<‘99'  Знакови се пореде помоћу вредности својих кодова.

  6. Декларисана дужина стринга Променљива типа Стринг може имати декларисану дужину (димензију) у виду ма ког позитивног целог вроја не већег од 255. Ако се вредност дужине стринга не наведе, подразумева се да је 255. Стринг променљива заузима у меморији један бајт више од дефинисане дужине. Нулти бајт (елемент стринга индексиран нулом) указује на дужину важећег дела стринга.

  7. ОПЕРАЦИЈЕ НАД СТРИНГОВИМА • За манипулацију подацима типа стринг користи се низ уграђених функција и процедура. Funkcija length даје целобројну дужину текуће вредности променљиве с типа string. length(‘123’) даје вредност 3 • Вредности променљивих типа string исписују се помоћу наредби write или writeln.  • Ако је дужина поља које одговара стринг вредности у наредби write већа од текуће дужине стринг променљиве, врши се поравнавање с десне стране поља, а с леве стране је допуњавање празнинама. Ако је дужина поља мања од дужине променљиве, поље се проширује колико је потребно за испис стринга. Пример. За вредност  s:='PASCAL' добијају се следећа исписивања: writeln(s:6)    исписује   PASCAL writeln(s:8)    исписује   PASCAL writeln(s:5)     ispisuje    PASCAL

  8. Надовезивање (конкатенација) стрингова • Funkcijom concat(sl,s2,s3,... sn)се формира нови стринг надовезивањем стрингова који су аргументи функције. На пример, • concat('ABC','XYZ')      даје       'ABCXYZ' concat('12','34’,’56')      даје       '123456'. • Стрингови се могу надовезивати (стручни израз конкатенација) и применом знака ‘+’. На пример, s4:=s1+s2+s3 има исти ефекат каоs4:=concat(sl,s2,s3)

  9. Налажење подстринга Funkcija pos(sl,s2)одређује позицију појављивања стринга s1 у стрингуs2. Између осталог, ова функција испитује да ли се стринг s1 садржи у стрингу s2. Ако је то тачно, pos даје цео број који означава позицију првог појављивања стринга s1идући слева надесно у стрингу s2. У противном даје 0. Према томе, вредност: pos('gram','programiranje')    je  4 pos('VAR','VAR')                     je  1 pos('grad','beograd')              je  4 pos(‘BAL','LAMBADA')        je  0 pos('DA','LAMBADA')            je  6

  10. Копирање подстринга Funkcija copy(s, p, d)даје нови стринг формиран копирањем d знакова стринга s почев од позиције p. На пример, copy('LAMBADA',6,2)   vraća  'DA' Ако желимо да испишемо последњих пет знакова променљиве email, treba napisati: writeln(copy(email,length(email)-4,5)). Ако желимо испис свих подстрiнгова променљиве email, укључујући и њу саму: for p:=1 to length(email)do for d:=1to length(email)-p+1do writeln(copy(email,p,d));

  11. Пример 1 Написати програм којим се улазни стринг исписује са десет знакова у врсти, изузев последње врсте која може имати мање од 10 знакова, и садржи остатак стринга. program Prelom;var s:string[80];i:integer;begin      readln(s); i:=1;while i<=length(s) dobegin           write(copy(s,i,10)); writeln; i:=i+10endend.

  12. Уклањање подстринга • Procedura delete(s, p, d)уклања подстринг стринга s почев од позиције p у дужини d. На пример, s:=’PROGRAM’; delete(s,3,3); writeln(s); Излаз: наредба writeln исписује: PRAM.

  13. Пример 2 Написати програм којим се речи улазног стринга исписују у инверзном поретку. Речи су међусобно раздвојене празнинама. program InverzReci;var blanko:integer; staral,noval:string[100];begin       writeln('Unesite string cije reci zelite da invertujete');       readln(staral);       noval:=''; (* dva navodnika, a ne apostrof *)       staral:=concat(staral,' '); {*dopisati prazninu*}while staral <>''dobegin         blanko:=pos(' ',staral);         noval:=copy(staral,1,blanko)+noval;         delete(staral,1,blanko)end; writeln(noval)end. Како је претпостављено да се речи раздвајају празнином то се користи функција posза одређивање границе речи. Свака реч издвојена с почетка стринга staralдодаје се на почетак noval, што обезбеђује промену поретка речи старе линије. Када staralпостане празан стринг, исписује се стринг noval.

  14. Уметање подстринга • Procedura insert(sl,  s2, p)умеће стринг s1 у стринг s2 почев од позиције p. На пример, s1:=’OGR’; s2:=’PRAM’; insert(s1,s2,3); writeln(s2); Излаз: наредба writeln исписује: PROGRAM

  15. Пример 3 Написати програм којим се у стрингу с замењује свако појављивање стринга s1 стрингом s2. program Zamene;   var  pozicija: integer; s,sl,s2:string;  begin writeln(‘Unesi string:’); readln(s); wnteln(‘Zameniti string:’); readln(s1); writeln(‘Stringom:’); readln(s2); while pos(sl,s)<>0 do   begin   pozicija:=pos(sl,s);    delete(s,pozicija,length(s1));   {*brise s1*}     insert(s2,s,pozicija)            {*umece s2 u s*} end; writeln(s) end.

More Related