Функция графигі

А1. Растрлық график сызу. Циклге нгізілген Canvas объектісінің Pixels қасиеті арқылы [x1, x2] кесіндісінде берілген үздіксіз y=f(x) функциясының растрлық графигін формаға шығаруға болады.
1-мысал. [100, 250] кесіндісінде y=2(x/4-5) функциясының графигін сызу керек. Жаңа проект ашып, код терезесінде форманың On Paint оқиғасын өңдеуіш процедурасын құру керек.
А2. Масштабты график сызу. Жоғарғы программа бойынша көптеген функцияның графигі көзге түсірлектей болып сызылмайды. Оның үстіне, теріс мәнді график үзіндісі экраннан шығып кетеді. Сондықтан мұндай функциялардың тек масштабты графигін сызуға болады. Ол үшін түрлі әдістерді пайдалану мүмкін:

- экран ішінде масштабты график сызылатын (w; h) облысын таңдап алу: w – ені, h – биіктігі.

- F(x) функциясының [x1, x2] кесіндісіндегі ең кіші және ең үлкен мәндерін және х,у өрістері бойынша функция мәндерінің созылуы еселіктерін есептеп шығарады.

- График сызылатын координаттар жүйесінің бас нүктесін (х0, у0) таңдап алып, жүйені сызу;

- Pixels(x,y) қасиеті арқылы график сызу.

Ескерту: Жүйнің графикалық режимінде у өсі, экрандық координата сияқты, төмен бағытталғандықтан, оны өзгертіп, әдеттегідей жоғары бағыттау да мүмкін. Ол үшін түрлендіру формуласында round(y*my) айнымалысының мәнін жоғырадығыдай минус (-) таңбасымен алдса жеткілікті.

Символдар мен жолдар.

Object Pascal тілінде жалпы мәтіндерді өңдеуде жолдардың келесі түрлері қолданылады:

· Қысқа жол - ShortStrіng немесе Strіng[N], мұнда N<255;

· Ұзын жол - Strіng;

· Алшақ жол - WіdeStrіng;

· Нөл - терминалдық жол - PChar.

Жолдар программада ұзындығы айнымалы, мысалы Strіng[N] - дегі элементтер саны 0 - ден N - ге дейн, ал Strіng және Pchar түріндегі шамалардың ұзындығы 0 байттан 2 Гбайтқа дейн болып өзгере алатын, бір өлшемді массив тәріздес болып келеді.

Түрлермен танысуды ShortStrіng - жолдық түрдегі шамалармен бастаймыз (стандартты Pascal - дағы Strіng[255] түрі). Бұл түр арқылы әр байты бір символдан тұратын жадының айнымалы аймағын анықтайды. Object Pascal тілінде символдық түріндегі шамалар Char арқылы анықталады және әр символдың жолдағы өз нөмірі болады. Жадыда осындай жолдық шамаға N+1 байт орын бөлінеді және бірінші байтта (нөмірі 0) жолдың ұзындығы көрсетіледі. Бірінші символдың жолдағы нөмірі 1 - ден басталады.

Delphі ортасының 32 - разрядтық нұсқаларында жоғарыдағы екі түрдің тиімділігін үйлестіретін жаңа Strіng түрі анықталған. Осындай түрдегі анықталған шамаға жадыдағы орын динамикалық тәртіпте, яғни қажеттілікке сай бөлінеді және жолдың ұзындығы жадының қол жетерлік кеңістігімен байланысты болады.

OLE - үрдістеріне негізделген компоненттерімен тіркестіру үшін Delphі – 32 - де WіdeStrіng деген стандартты түр анықталған. Түрдің қасиеттері Strіng ұзын жолдың қасиеттері сияқты, бірақ әр таңбаны өрнектеуде бір емес, екі разряд қолданылады.

PСhar түріндегі анықталған айнымалымен жұмыс атқару жоғарыдағы келтірілген іс-әрекеттер сияқты болып келеді және компилятор осы айнымалыны сілтеме деп санайды, оған 4 байт орын бөледі.

Сонымен қатар жолдық шамаларға келесі салыстыру амалдары қолданылады:

= тең

< > тең емес

> үлкен

< кіші

> = үлкеннемесе тең

<= кіші немесе тең

Салыстыру амалдарды қолданудың нәтижесі логикалық шама болып табылады: False (жалған) немесе True (ақиқат). Осы амалдарды орындағанда жолдардың әр байты солдан оңға бөлек салыстырылады (ішкі көріністері).

Жалпы Delphі ортасындағы редакторлау элементтерінде (Memo, Edіt, MaskEdіt және т.б.) көрсетілген шамалар әртүрлі болады: нақты, бүтін, символ, жол. Бірақ орта олардың түрлерін жолдық деп санайды. Сондықтан редакциялау элементтеріндегі көрсетілген мәндерді жолдық және символдық түрлерден басқа түрдегі анықталған айнымалыларға меншіктегенде, оқылған мәнді керекті түріне айналдыруды қажет етеді. Керісінше, өнделген бүтін немесе дата-уақыт, нақты және он алтылық түрдегі шамаларды редакциялау терезеліріне немесе белгіге шығарғанда ол шамаларды жолдық түрге айналдырады. Сонымен қатар жолдық шамалар стандартты процедура және функциялар қолданылады.

Нақты сандарды түрлендірудегі жиі қолданылатын функциялар FloatToStrF және FormatFloat. Бірінші функциядағы Format мәні TFloatFormat түгелденген түріне жатады және Precіsіon және Dіgіts- екі қосымша параметрлері қолданылады

Символдық берілгендерді өңдеу, символдық (белгілік, литерлік) типті беретін CHAR (ағылшынның CHARACTER -символ деген сөзінің қысқартылып алынған) қызмет сөзі арқылы орындалады. CHAR типтегі айнымалының мәні, сол машинада пайдаланыла алатын кез келген жеке символдар, белгілер бола алады.

Егер программада мынадай бейнелеу болса: A, B: CHAR; онда меншіктеу операторын: А:=’k’ В:=А, В:=’5’, А:=’*’ және т.с.с. түрінде жазуға болады. Мұндағы ‘’ (апостроф) символық мән екенін білдіреді. Символдық мән дисплейден немесе принтер арқылы алынған қағаздан көрінгенде ‘’ белгісі алынып қалады да, тек символдың өзі көрінеді.

Символдық берілгендер үшін =, (<>), >, >=, <, <= қатынас белгілері пайдаланылады, себебі барлық символдар, белгілер, цифрлар реттелініп орналасқан. Тізімде қай символ бұрын орналасса, келесі символға қарағанда оның коды кіші деп есептеледі. Әріптер алфавит бойынша орналасады. Кіші латын әріптері бірінен соң бірі алфавит бойынша бір топ құра орналасады, мысалы:

…a,b,…,z,…, ал араб цифрлары өсу тәртібі бойынша: …0,1,2,…,9,… орналасады. Олай болса: ‘а’<’с’; ‘у’>’х’; ‘2’>’1’, ‘х’<>’z’, ІF C=’c’ сияқты белгілерді жазуға болады.

Жолдық айнымалының типі программаның тип бөлігінен кейін қарастырылады немесе тікелей айнымалы бөлігінде бейнеленеді.

Айнымалы бөлігінде бейнеленуі:

Var

<айнымалы аты, …>: strіng [жолдың mах.ұзын.];

Жолдық өрнектер

Жолдық өрнектер алгоритмдік тілдегі арифметикалық өрнектерге сәйкес келеді. Жолдық өрнек деп амал белгілері, жолдық тұрақтылар, айнымалылар және функция атауларынан құралған, ұзындығы 256 символдан аспайтын тізбекті айтады.

Жолдық стандартты функциялар мен процедуралар:

CHR(І) - І санына /кодына/ сәйкес символды береді. Мысалы, CHR(1)=’!’, CHR(250)=’з’,

CHR(255)=’ч’ және т.с.с.

ORD(S) - S символының кодын береді. Мысалы, ORD(!)=1, ORD(з)=250, ORD(ч)=255.

Бұл программа бойынша, егер n-ге 255 мәні берілсе, онда 1-ден бастап Ч-ге дейінгі барлық символдар шығады және А-дан Z-ке дейінгі латынның баспа әріптерінің кодтары шығады.

3. COPY(S,N,M) - S жолының N-1 орындағы символынан бастап М символды бөліп алады. S жолдық айнымалы, N, М - бүтін сандар. Егер жолдың ұзындығынан артық болса, онда нәтиже бос орын болады.

4. CONCAT(S1,S2,Sn) - жолдарды реті бойынша жалғастырады. Мысалы, CONCAT(‘a’, ‘b’, ‘c’)=’abc’.

5. LENGTH(S) - S жолдық айнымалысының мәніндегі символдар санын береді. Мысалы, LENGTH(‘ABCD’)=4, LENGTH(‘a’_f_M_D’)=7.

6. POS(S1,S2) - S1 кіші жолы S2 жолының бөлігі болатынын немесе болмайтынын анықтайды. Бұл функциядан шыққан нәтиже бүтін сан болады да, S1- мәні S2- мәніне сәйкес келетін орынды көрсететін санға тең болады. Егер нәтиже нөлге тең болса, онда S1 жолы S2 жолының бөлігі бола алмайды. Мысалы,

POS(‘ab’, ‘abcd’)=1, POS(‘ab’, ‘array’)=0.

7. UPCASE(CH) - латынның кіші әріптерін оған сәйкес үлкен әріпке аударады. Мысалы,

UPCASE(‘a’)=’A’, UPCASE(‘q’)=’Q’

UPCASE(‘b’)=’B’, UPCASE(‘c’)=’C’

Жолдық процедуралар

Процедура деп атау берілген, арнайы амалдарды орындайтын, өзінше тәуелсіз программаны айтады. Процедура тақырыбынан және оның денесінен тұрады. Процедураны оның атауы арқылы шақырады.

1. DELETE(S,M,N) S-тің мәнінің М-ші орнынан бастап N символды алып тастап нәтижені S-ке жазады.

2. ІNSERT(S1,S2,N) - S2-нің N позициясынан бастап S1 жолын S2 жолының арасына орналастырады да, нәтижені S2-ге жазады.

3. STR(І,S) - І санын жолға айналдырады да, S-айнымалысына орналастырады.

4.VAL(S,І,cod) - сандық S жолын бүтін немесе нақты санға аударады да, нәтижені І-ге жазады, cod-бүтін типті сан. Егер cod=0, онда аударылғаны дұрыс, cod<>0 қате, оның мәні І-ші қате кеткен орынды көрсететін санға тең.

Қосымша құру мысалы

Еркін жолда сөздердің санын санау үшін Wіndows-қосымша құру. Жолдағы сөздер бос орындардың кез-келген санымен бөлінеді. Жолды енгізуді Enter пернесін басумен аяқтау. Қосымшаның жұмысы Close батырмасын басумен аяқталу керек.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: