Рад са нискама карактера (стринговима) у Паскалу
This presentation is the property of its rightful owner.
Sponsored Links
1 / 15

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


  • 74 Views
  • Uploaded on
  • Presentation posted in: General

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

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3863104

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

Тип string у Турбо Паскалу


String

Тип string

  • PASCAL располаже типом string за рад са низом карактера (стандaрdnог типa Char). На пример, стрингови oд 20 карактера су низови дефинисани:

    packed array [1..20] of Char

  • Стринговима се мора унапред дефинисати максимална дужина, док стварна дужина вредности стринг променљиве може варирати (до максималне) у току извршавања програма.  

  • За дефинисање типа стринг користи се резервисана реч string, иза које се у квадратним заградама наводи максимална дужина стринга.


String string

Дефиниција типа 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;}


3863104

Додела вредности

lozinka:='torta‘;

lozinka:=''; {prazan string}

lozinka:='"'; {string sa jednim karakterom “}

Readln(lozinka); {karakteri stringa se ucitavaju sa standardnog ulaza}


3863104

Поређење стрингова

  • Исправна је додела вредности 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' 

    Знакови се пореде помоћу вредности својих кодова.


3863104

Декларисана дужина стринга

Променљива типа Стринг може имати декларисану дужину (димензију) у виду ма ког позитивног целог вроја не већег од 255.

Ако се вредност дужине стринга не наведе, подразумева се да је 255.

Стринг променљива заузима у меморији један бајт више од дефинисане дужине.

Нулти бајт (елемент стринга индексиран нулом)

указује на дужину важећег дела стринга.


3863104

ОПЕРАЦИЈЕ НАД СТРИНГОВИМА

  • За манипулацију подацима типа стринг користи се низ уграђених функција и процедура.

    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


3863104

Надовезивање (конкатенација) стрингова

  • Funkcijom concat(sl,s2,s3,... sn)се формира нови стринг надовезивањем стрингова који су аргументи функције. На пример,

  • concat('ABC','XYZ')      даје       'ABCXYZ' concat('12','34’,’56')      даје       '123456'.

  • Стрингови се могу надовезивати (стручни израз конкатенација) и применом знака ‘+’. На пример,

    s4:=s1+s2+s3 има исти ефекат каоs4:=concat(sl,s2,s3)


3863104

Налажење подстринга

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


3863104

Копирање подстринга

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));


3863104

Пример 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.


3863104

Уклањање подстринга

  • Procedura delete(s, p, d)уклања подстринг стринга s почев од позиције

    p у дужини d.

    На пример,

    s:=’PROGRAM’; delete(s,3,3); writeln(s);

    Излаз: наредба writeln исписује: PRAM.


3863104

Пример 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.


3863104

Уметање подстринга

  • Procedura insert(sl,  s2, p)умеће стринг s1 у стринг s2 почев од позиције p.

    На пример,

    s1:=’OGR’; s2:=’PRAM’; insert(s1,s2,3); writeln(s2);

    Излаз: наредба writeln исписује: PROGRAM


3863104

Пример 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.


  • Login