Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Зертханалық жұмыс №8






Тақ ырыбы: Жазулар

Мақ саты Delphi ортасының жұ мысына жалпы сипаттама

Қ олданылатын материалдар мен қ ұ рал- жабдық тар:

Компьютер, Delphi программалау ортасы

 

Теориялық тү сініктеме:

Жазулар - бұ л ө ріс деп аталатын шектеулі компоненттер мө лшерінің тұ ратын мә ліметтер қ ұ рылымы. Массивтердің айырмашылығ ы жазудың компоненттері ә ртү рлі типті болуы мү мкін. Жазудың қ андай да бір компонентіне сілтеме жасау ү шін ө ріске атау беріледі.

Жазуларды сипаттаудың форматты тө мендегідей:

< тип аты> =record

< ө рістер тізімі>

End;

Мұ ндағ ы < тип аты> - жазудың атауы;

Record, end; қ ызметші сө здер (жазу соң ы дегенді білдіреді);

< ө рістер тізімі> - ө рістер тізімі, ол нү ктелі ү тір арқ ылы ажыратылып жазылғ ан жазулар бө лімдерінің тізбегі.

Жазудың ә рбір бө лімі бір немесе бірнеше ө ріс атауларынан тұ рады, олар бір- бірінен ү тір арқ ылы ажыратылып жахзылады. Индентификатордан кейін қ ос нү кте қ ойылып, ө рістер типі сипатталады. Мысалы:

Type

BirthDay=record

Day, Month: Byte;

Year: Word;

End;

A, B: BirthDay

Бұ л мысалда BirthDay типі, ө рістері Day, Month, Year болып келген жазу; А жә не В айнымалылары BirthDay типті жазудан тұ рады.

Массивтердегідей, жазу типті айнымалының мә нін типі дә л сондай бсақ а айнымалығ а меншіктеугеболады, мысалы:

а: =b

егер қ ұ рама атау пайдаланатын болса, жазудың ә р компонентіне кіруге мү мкіндік алуғ а болады. Яғ ни айнымалының атын кө рсетіп, одан кейін нү кте қ ойылып, ө ріс аты жазылады:

a.day: =27;

b.year: =1963;

қ абаттасқ ан ө рістер ү шін нақ тыллауды жалғ астыра беруге болады:

Type

BirthDay=record

Day, Month: Byte;

Year: Word;

End;

Var

C: record

Name: string;

Bd: BirthDay;

End;

Begin

If c.Bd.Year=1963 then…

End;

Жазудың ө рісіне кіруді жең ілдету ү шін Width жалғ астыру операторы пайдаланылады.

Width< айнымалы> do < оператор>;

Мұ ндағ ы Width, do- қ ызметші сө здер; < айнымалы> -жазу тпті айнымалы, мұ нда бірінің ішіне бірі орнласқ ан ө рістер тізімі жазылады; < оператор> - Object Pascal тілінің кез келген операторы.

c.Bd.Month: =9;

Бұ л тө мендегі жазумен бара-бар:

Width c.Bd.do Month: =9;

Width c do Width Bd.do Month: =9; немесе

Width c.Bd.do Month: =9;

Object Pascal тілінде бірнеше вариатты ө рісі бар жазуларды пайдалануғ а болады, мысалы:

Type

Forma\record

Name: String;

Case byte of

0: (BirdthPlace: String[40]);

1: (Country: String[20]);

EntryPort: String[20]);

EntryDate: 1..31;

EntryDate: 1..31)

End;

Бұ л мысалда Forma типі бір шектеулі Name ө рісімен жә не «case … of» қ ызметші сө зі арқ ылы ө згермелі бө лігі берілетін жазуды анық тайды. Ө згермелі бө лігі бірнеше варианттан тұ рады. Ә рбір вариант таң дау тұ рақ тысы бойынша анық талады; таң дай тұ рақ тысынан кейін қ ос нү кте қ ойылып, ө рістер тізімі жазылады. Кез келген жазуда ө згермелі бө лігі тек біреу ғ ана болады.

Ө згермелі бө лігінің бір ерекшелігі барлық берілген варианттар бір-біріне қ абаттасып орналасады, яғ ни олардың ә рқ айсысынан бө лінген бір жадыда ғ ана орналасады. Бұ л типтерді тү рлендірудің қ осымша мү мкіндіктерін алады, мысалы:

Var

Mem4: record

0: (By: array[0..3] of byte);

1: (Wo: array[0..1] of word);

2: (lo: longInt);

End;

Бұ л мысалда Mem4 жазуның ү ш вариантты бар, олардың ә рқ айсысы жадыдан 4 байттың біреуін ғ ана алады. Біз программадағ ы жазудың қ ай ө рісіне оралатынымызғ а байланысты сол бө лік массив ретінде қ арастырылады. 4 байт – by ө рісі, Word тә різді екі бү тін типтен қ ұ рылғ ан массив (Wo -ө ріс); longInt тә різді бір бү тін типті сан (Lo - ө рісі). Бұ л мысалда алдымен ең ұ зын бү тін мә нді меншіктеп, одан кейін нә тижені байт немесе сө з бойынша талдауғ а болады:

Var

x: word;

Xb: byte;

Xl: LongInt;

Begin

Width m do

Begin

lo: =Trunc(2*Pi*x);

if wo[1]=0 then

if by[1]=0 then

xb: =x[0]

else

x: =wo[0]

else

x1: =lo

end;

End.

Ө згермелі бө лікті ашатын case…of сө зі сыртқ ы тү рі таң дау операторына ұ қ сағ анымен, бұ л жерде тек ө згермелі бө ліктің басын кө рсететін қ ызметші сө зді ғ ана атқ арып тұ р. Сондық тан ө згермелі бө ліктің соң ына case…of қ ызметші сө зінің жұ бы ретінде end сө зін жазбауғ а болады. (Ө згеомелі бө лігі барлық уақ ыттта жазудың соң ында болғ андық тан end сө зі жазылады, бұ л record сө зінің жұ бы)

Хабарланғ ан жазудағ ы ө рістердің атауы бірегей болуы тиіс. Егер жазу жазу ө рістерінен тұ ратын болса, олар бірінің ішіне бірі орналасқ ан болса, онда олардың атаулары қ абаттасудың ә ртү рлі дең гейлерінде қ айталануы мү мкін.

ТАПСЫРМА:

Топтағ ы 9 оқ ушының оқ у ү лгерімін орта баланың кему реті бойынша сұ рыптап шығ аратын программа қ ұ райық. ә рбір жазу оқ ушының атынан жә не ү ш пә ннен алғ ан бағ асынан тұ ратын болсын.

ТАПСЫРМАНЫ ОРЫНДАУҒ А Ә ДІСТЕМЕЛІК НҰ СҚ АУЛАР:

Алдымен интерфейсті қ ұ рамыз. Жазулармен жұ мыс істегенде экранғ а ақ паратты енгізу мен шығ аруды StringGrid компоненті арқ ылы ұ йымдастырғ ан ың ғ айлы. Ол ү шін формағ а StringGrid жә не Button компонентін орналастырамыз. Бағ андар мен жолдарғ а сә йкес жолдарды енгізу ү шін StringGrid компонентінің белгіленген аймағ ы пайдаланылады. Сондық тан объектілер инспекторы терезесіндегі FixedCols жә не FixadRows қ асиеттеріне 1 мә нін тағ айындаймыз. Есептің шартына сә йкес бағ ан жә не жолдар санын кө рсететін қ асиеттерге: ColCount=6 жә не RowCount=10 мә ндерін тағ айындаймыз. StringGrid компонентіндегі жолдарды толық кө ру ү шін вертикаль орағ ыш жолағ ын орнатуғ а болады, ScrollBars қ асиетіне ssVertical мә нін тағ айындаймыз. StringGrid компонентіне клавиатурадан ақ парат енгізіп, жө ндеу мү мкіндігіне алу ү шін +Options қ асиетіндегі goEditing жолына true мә нін беру қ ажет. Осы мә ндер толық тағ айындалып болғ аннан кейін программа коды терезесіне FormCreate эә не Button1Click оқ иғ а ө ндеуші процедураларын қ ұ рамыз.

unit Unit1;

 

interface

 

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

 

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

Button1: TButton;

procedure FormCreate(Sender: TObject);

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

 

implementation

 

{$R *.dfm}

type

zap=record

fio: string[20];

mat, phiz, chem: integer;

srball: real;

end;

var mzap: array[1..9] of zap;

procedure TForm1.FormCreate(Sender: TObject);

var i: integer;

begin with StringGrid1 do

begin

Cells[0, 0]: ='i';

Cells[1, 0]: ='fio';

Cells[2, 0]: ='matem';

Cells[3, 0]: ='phyzics';

Cells[4, 0]: ='Chemstry';

Cells[5, 0]: ='srball';

for i: =1 to 9 do

Cells[0, i]: =intToStr(i);

Cells[1, 1]: ='Kanat'; Cells[2, 1]: ='5'; Cells[3, 1]: ='5'; Cells[4, 1]: ='5';

Cells[1, 2]: ='Sanat'; Cells[2, 2]: ='4'; Cells[3, 2]: ='4'; Cells[4, 2]: ='4';

Cells[1, 3]: ='Janat'; Cells[2, 3]: ='3'; Cells[3, 3]: ='4'; Cells[4, 3]: ='4';

Cells[1, 4]: ='Marat'; Cells[2, 4]: ='4'; Cells[3, 4]: ='3'; Cells[4, 4]: ='3';

Cells[1, 5]: ='Sara'; Cells[2, 5]: ='5'; Cells[3, 5]: ='5'; Cells[4, 5]: ='4';

Cells[1, 6]: ='Clara'; Cells[2, 6]: ='4'; Cells[3, 6]: ='4'; Cells[4, 6]: ='5';

Cells[1, 7]: ='Janna'; Cells[2, 7]: ='2'; Cells[3, 7]: ='3'; Cells[4, 7]: ='3';

Cells[1, 8]: ='Dana'; Cells[2, 8]: ='5'; Cells[3, 8]: ='4'; Cells[4, 8]: ='3';

Cells[1, 9]: ='Erlan'; Cells[2, 9]: ='5'; Cells[3, 9]: ='5'; Cells[4, 9]: ='3';

for i: =1 to 9 do

with mzap[i] do

begin

fio: =Cells[1, i];

mat: =StrToInt(Cells[2, i]);

phiz: =StrToInt(Cells[3, i]);

chem: =StrToInt(Cells[4, i]);

srball: =(mat+phiz+chem)/3;

Cells[5, i]: =FloatToStrF(srball, ffFixed, 5, 2);

end; end; end;

procedure Button1Click(Sender: TObject);

var i, j: integer; vper: zap;

begin

for i: =1 to 9 do

with StringGrid1, mzap[i] do

begin

fio: =Cells[1, i];

mat: =StrToInt(Cells[2, i]);

phiz: =StrToInt(Cells[3, i]);

chem: =StrToInt(Cells[4, i]);

srball: =(mat+phiz+chem)/3;

Cells[5, i]: =FloatToStr(srball, ffFixed, 5, 2);

end;

for i: =2 to 9 do

for j: =9 downto i do

if mzap[j-1].srball< mzap[j].srball then

begin

vper: =mzap[j-1];

mzap[j-1]: = mzap[j];

mzap[j]: =vper;

end;

for i: =1 to 9 do

with stringGrid1, mzap[i] do

begin

fio: =Cells[1, i];

mat: =StrToInt(Cells[2, i]);

phiz: =StrToInt(Cells[3, i]);

chem: =StrToInt(Cells[4, i]);

srball: =(mat+phiz+chem)/3;

Cells[5, i]: =FloatToStr(srball, ffFixed, 5, 2);

end; end;

end.

 

 

Прогамманың орындалу нә тижесі 5.2-суретте кө рсетілген.

 

 

5.2-сурет. Сұ рыпталғ ан жазуларды шығ ару терезесі.

 

Ұ сынылатын ә дебиеттер: [1-9]

Бекіту сұ рақ тары:

1. Object Pascal тіліндегі жазулар дегеніміз не жә не олар қ алай сиппаталады.

2. Width_do операторының қ ызметі қ андай?

3. Жазық тық та n нү кте берілген. Координаталар басына жақ ын орналасқ ан нү ктені табың ыз.

4. Нү кте мен тү зуді, екі тү зудің жә не екі жазық тық тың арасындағ ы қ ашық тық ты табың ыз.

5. дене бір қ алыпты ү демелі қ озғ алады. Дененің Т уақ ыттан кейінгі жылдамдығ ы мен ү деуін табың ыз.

6. 4A+7B-3A+8A-2K+1P-5R-2B кө пмү шелігі берілген. А ү шін ұ қ сас мү шелерді тауып, қ осынды коэффицентті есептең дер.

7. Группада 30 оқ ушы бар. Студенттердің берілген аты-жө ні жә не 6 сабақ тан тапсырғ ан емтихан бағ асы бойынша ә рбір оқ ушының орта балын, аты-жө нін жә не ең жақ сы оқ ушының орта балын есептеп экранғ а шығ аратын программа қ ұ рың дар.

8. Ағ ымдағ ы кү ннен Х кү н ө ткеннен кейін болатын кү нді есептейтін программа қ ұ рың дар.

9. мекеменің автомобильдері жө ніндегі мә ліметтер (марка тү сі, шық қ ан жылы, сапасы, қ ұ ны) сақ тап, жасалғ ан сұ рау бойынша ә ліметтерді беретін программа қ ұ рың дар.

10. қ алааралық автобекеттегі автобустар қ озғ алысының кестесін сақ тайтын программа қ ұ рың дар: рейс нө мірі, маршрут (бастапқ ы жә не соң ғ ы пункттері), жү ру мезгілі.

11. «Студент» деп аталатын жазу типті мә лімет берілген. Тө мендегі ақ паратты ө ндейтін программа қ ұ рың дар.

a. Қ алада жә не жатаханада қ анша студент тұ рады;

b. Бірінші семестрдегі қ анша студенттің балы 12-ден жоғ ары;

c. Екінші семестрдегі қ анша студенттің балы 13-тен тө мен;

d. Оқ у жылы бойынша орташа оқ у ү лгерімін есептеу;

e. Ү лгермейтін студенттердің тізімін шығ ару;

f. Тізімді балдың кемуі бойынша реттеу;

12. Тізімді алфавиттік ретпен реттеу.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.