«Қазақстан тарихы, жалпы білім беру пәндері және ақпараттық жүйелер» кафедрасы



бет16/64
Дата17.06.2022
өлшемі0.51 Mb.
#459285
түріЛекция
1   ...   12   13   14   15   16   17   18   19   ...   64
Функцияға мысал // бүтін санды енгізу кезінде енгізілген символдың
// рұқсат етілген не етілмегендігін анықтайды
function Islnt(ch : char) : Boolean;
begin if (ch >= '0'} and (ch <= '9') // сандар or (ch = 113) // пернесі or (ch = #8) // пернесі then Islnt := True // символ рұқсат етілген else Islnt := False; // рұқсат етілмеген символ end;
// бӛлшек санды енгізу кезінде енгізілген символдың // рұқсат етілген не етілмегендігін анықтайды function IsFloat(ch : char; st: string) : Boolean; begin if (ch >= '0') and (ch <= '9') // сандар
or (ch = #13) // пернесі or (ch = #8) // пернесі then begin
IsFloat := True; // дұрыс символ Exit; // функциядан шығу
end; case ch of
'-': if Length(st) = 0 then IsFloat := True; ',': if (Pos(',',st) = 0)
and (st[Length(st)]'>= '0') and (st[Length(st)] <= '9') then // бұрын енгізілмеген болса үтір белгісін цифрдан соң енгізуге
болады
IsFloat := True; else // басқа символдарға рұқсат етілмейді
IsFloat := False; end;
end;

2. Динамикалық жадыны бөлу және босату


Келесі мүмкіндік үйменің бүтін бір фрагментін босатудан тұрады. Осы мақсатпен динамикалық жадыны бӛлу алдынан HEAPPTR кӛрсеткішінің ағымдағы мәні MARK процедурасының кӛмегімен айнымалы-кӛрсеткішке сақталынып қойылады. Енді кез-келген уақытта MARK процедурасы сақтап қойған адрестен бастап динамикалық жадының соңына дейін босатуға болады. Бұл үшін RELEASE процедурасы қолданылады. Мысалы: var
p,p1,p2,p3,p4,p5 : integer;
begin
new(p1); new(p2); mark(p); new(p3); new(p4); new(p5);
……….
release(p); end.
Бұл мысалда MARK(P); процедурасы арқылы P кӛрсеткішіне HEAPPTR-ң ағымдағы мәні сақталынған, алайда айнымалы үшін жады бӛлінбеді. RELEASE(P) процедурасын шақыру динамикалық жадының Р кӛрсеткішіндегі адрестен бастап үйменің аяғына дейін босатады. Келесі суретте NEW-DISPOSE және NEW-MARK-RELEASE процедураларының механизмі, сонымен бірге RELEASE(P) операторының орнына мысалы DISPOSE(Р3) қолданылған жағдай кӛрсетілген.
р1^
р2^
Mark(p1) Dispose(p) //////////////////
//////////////////
//////////////////
//////////////////
//////////////////


Достарыңызбен бөлісу:
1   ...   12   13   14   15   16   17   18   19   ...   64




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет