Меню
Разработки
Разработки  /  Биология  /  Уроки  /  8 класс  /  "Vitaminlar" mavzusida ochiq dars ishlanmasi

"Vitaminlar" mavzusida ochiq dars ishlanmasi

"Vitaminlar" mavzusida ochiq dars ishlanmasi
07.04.2020

Содержимое разработки

LPHI TILINING IMKONIYATLARI

6.1.Yozuvlarni faylga yozish va fayldan o‘qish

Yozuvlami faylda saqlash mumkin. Dastuming o‘zgaruvchi yozuv

qiymatini faylda saqlash uchun yozuv turidagi faylni e’lon qilish

kerak. Misol uchun:

Type

TRerson = record

f riame: string [20] ;

l name: string[20];

address: string[50]; end; var

f: file of TPerson;

Instmksiya komponentalari TPerson turidagi yozuvlar bolgan

faylni e’lon qiladi. Yozuvlar fayli bilan ishlash oddiy fayllar bilan

ishlashdan farq qilmaydi.

Yozuvlarni faylga yozish

Foydalanuvchi tomo-

nidan kiritiluvchi muso-

baqa natijalarini faylga

yozuvchi dastumi ko‘rib

chiqamiz. M a’lum otlar

dialog oynasiga kiritilib,

komponentalari TMedal

turidagi yozuvlar bolgan

faylda saqlanadi.

Sportsmen familiyasini

kiritish uchun Edit kom-

ponentasi ishlatiladi. Sport

turi va mamlakat nomini

kiritish uchun ComboBox

komponentasi ishlatiladi.

Ro‘yxatni hosil qilish uchun

Object Inspector oynasida

Items xossasini tanlab, uch

nuqtali tugmasini bosib,

ro‘yxat muharririni aktiv-

lashtirish lozim.

u s s x m s a m w m ~oj*j

Sfalw nw

|

MMMKlll

r 3

■.piill llu I

I-----------3

MMltJ

r oittn

I C K*n»ii»h

Killmnli

151

www.ziyouz.com kutubxonasi

String list E Jitor

5 t o n

zb e k is :o n

Pci S-Siyy

G e rm a n i/a

'fan^iys

LJ

ЈodeEd)« C * Y ti

Dastur matni:

Unit Unitl;

interface

uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids, ExtCtrls;

Type

TForml = class(TForm)

Editl: TEdit;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Label5: TLabel;

Buttonl: TButton;

ComboBoxl: TComboBox;

ComboBox2: TComboBox;

RadioGroupl: TRadioGroup;

procedure FormActivate(Sender: TObject);

procedure FormClose(Sender: TObject;

var Action: TCloseAction);

procedure ButtonlClick(Sender: TObject);

private

152

www.ziyouz.com kutubxonasi

{ Private declarations } public

{ Public declarations } end;

TKind = (GOLD, SILYER, BRONZE);

TMedal=record

country: string[20];

sport: string[20];

person: string[40];

kind: TKind;

end;

Var

Forml: TForml;

f: file of TMedal;

implementation

{$R *.DFM}

procedure TForml.FormActivate(Sender: TObject);

var

resp : word;

begin

AssignFile(f,' a:\medals.db');

{$1-}

Reset (f);

Seek(f, FileSize(f));

{$1+}

if IOResult = 0

then buttonl.enabled:=TRUE;

else begin

resp:=MessageDlg('

topilmagan.

+ 'Yangi MB yaratasizmi?', mtinformation,[mbYes,mbNo],0);

if resp = mrYes then begin {$1-}

rewrite(f); {$1+}

if IOResult = 0

then buttonl.enabled:=TRUE

else ShowMessage('Omn6Ka co3/iaHHa (Jjanjia B/l.'); MB faylini

yaratishda xatolik.

end;

end;

end;

Procedure TForml.ButtonlClick(Sender: TObject);

var

medal: TMedal;

153

www.ziyouz.com kutubxonasi

begin

with medal do begin

country := ComboBoxl.Text;

sport := ComboBox2.Text;

person := Editl.Text;

case RadioGroupl.ItemIndex of

0: kind := GOLD;

1: kind := SILVER;

2: kind := BRONZE;

end;

end;

write(f,medal);

end;

procedure TForml.FormClose(Sender: TObject;

var

Action: TCloseAction);

begin

CloseFile(f);

end.

Bu dasturda TForml.FormActivate protsedurasi faylni ochadi.

Fayl matnli bolmagani uchun Rewrite protsedurasi bilan ochilib

Seek protsedurasi ko‘rsatgichni fayl oxiriga o‘rnatadi.

TForml.ButtonlClickprotsedurasi faylgayozuv qo‘shishni amalga

oshiradi.

TFormLFormClose protsedurasi faylni berkitadi.

Ko‘rilgan dasturda ro‘yxat loyihalashtirish jarayonida o‘rnatiladi.

Dastur bajarilish jarayonida ro‘yxatni o‘rnatish uchun items xossasiga

Add usulini qollash kerak.

Masalan:

Forml.ComboBoxl.Item.Add(' Rossiya');

FormLComboBoxl .Item.Add(' Avstriya');

Forml.ComboBoxl.Item.Add(' Germaniya');

Forml.ComboBoxl.Item.Add(' Fransiya');

Fayldan yozuvni o‘qish

Quyidagi dasturda fayl ochilib, hamma mamlakatlar yoki tanlangan

mamlakat sportchilari tomonidan yutib olingan medallar ro‘yxatini

ekranga chiqaradi.

154

www.ziyouz.com kutubxonasi

Quyidagi jadvalda forma komponentalari xossalari berilgan:

Xossa Qiymat

RadioButtonl .Checked True

Labell.Enabled False

ComboBoxLEnabled False

Memo 1. Readonly True

Memo 1. ScrollBars Vertical

Mamlakat nomini tanlash uchun ComboBoxl komponentasidan

foydalanilgan. Ro‘yxat loyihalashtirish jarayonida kiritilishi lozim.

Dastur matni:

Unit Unitl;

interface

-^ 5 - |Q| xl

C H iin n ih iii

C T b -n ilis ll M.iim1ih.]l

www.ziyouz.com kutubxonasi

uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs, StdCtrls;

Type

TForml = class(TForm)

RadioButtonl: TRadioButton;

RadioButton2: TRadioButton;

Buttonl: TButton;

GroupBoxl: TGroupBox;

Labell: TLabel;

ComboBoxl: TComboBox;

Memol: TMemo;

Procedure ButtonlClick(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButtonlClick(Sender: TObject);

private

{ Private declarations } public

{ Public declarations } end;

Var

Forml: TForml;

implementation

{$R *.DFM}

procedure TForml.ButtonlClick(Sender: TObject) ;

Type

/ / tip medali

TKind = (GOLD,SILVER,BRONZE);

/ / zapis fayla

TMedal = record

country:string[20]; sport:string[20];

person:string[40]; kind:TKind;

end;

Var

f: file of TMedal;

rec: TMedal;

n: Integer;

st: string[80];

Begin

AssionFile(f, ’a:\medals.db’);

{$!-}

156

www.ziyouz.com kutubxonasi

Reset (f);

{$1-}

if IOResult 0 then begin

ShowMessaoe('Fayl ochishda xatolik.');

Exit;

end;

/ / o6pa6oTKa BD

MB qayta ishlash

if RadioButton2.Checked then

Memol.Lines.Add('*** ' + ComboBoxl.Text + ' ***'); n := 0;

Memol.Clear; / / OMHCTHTb cnncoK nojia Memo

while not EOF(f) do begin

read(f, rec); / / npoMHTaTb 3anncb

if RadioButtonl.Checked or

(rec.country = ComboBoxl.Text) then begin

n := n + 1;

st := rec.person+ ', ' + rec.sport;

if RadioButtonl.Checked then

st := st + ', '+ rec.country; case rec.kind of

OOLD: st := st+ ', oltin';

SILVER:st := st+ ', kumush';

BRONZE:st := st+ ', bronza';

end;

Memol.Lines.Add(st); end;

end;

CloseFile(f); if n = 0 then

ShowMessage('Kerakli maiumot yo‘q.');

end;

Procedure TForml.RadioButton2Click(Sender: TObject);

Begin

Labell.Enabled := True;

ComboBoxl.Enabled := True;

ComboBoxl.SetFocus;

end;

Procedure TForml.RadioButtonlClick(Sender: TObject);

Begin

Labell.Enabled := False;

ComboBoxl.Enabled := False;

end;

end.

157

www.ziyouz.com kutubxonasi

TForml.ButtonlClick protsedurasi faylni ochib yozuvlami ketma-

ket o‘qiydi. Yozuv Memol maydoniga, mamlakat nomi country maydoni

qiymatibilan mos kelsa yoki RadioButtonl tanlangan bolsa qo‘shiladi.

6.2. Dinamik tuzilmalar

Ko‘rsatkich

Ko‘rsatkich deb qiymati boshqa o‘zgaruvchi yoki m a’lumotlar

tuzilmasi adresiga teng bolgan o‘zgaruvchiga aytiladi.

Ko‘rsatkichlar quyidagicha ta’riflanadi:

Nom: A Tur;

Masalan:

p l: AInteger; r2: Areal;

Agar ko‘rsatkich hech narsaga tengligi ko‘rsatilmasa uning qiymati

N IL ga teng deyiladi.

Ko‘rsatkichga biror o‘zgaruvchi adresi qiymat sifatida berilsa @

adres olish operatoridan foydalaniladi. Masalan:

r := @n;

Ko‘rsatkichga boshqa ko‘rsatkich qiymatini berish mumkin, agar

ular bir turli bo‘lsa. Masalan:

p2 := p l;

Agar ko‘rsatkich i o‘zgaruvchiga ko‘rsatayotgan bo‘lsa.

rA : = 5;

instruksiya bajarilgandan so‘ng i qiymati 5 ga teng boladi.

Dinamik o‘zgaruvchilar

Dinamik o‘zgaruvchi deb dastur bajarilish jarayonida xotiraga

ajratiladigan o‘zgaruvchiga aytiladi. Xotira ajratish new protsedurasini

chaqirish orqali amalga oshiriladi. Dinamik xotiraga faqat ko‘rsatgich

yordamida murojaat qilish mumkin.Dinamik o‘zgaruvchini yo‘qotish.

ya’ni bu o‘zgaruvchi egallagan xotirani ozod qilish uchun Dispose

protsedurasi ishlatiladi.

Quyidagi protsedurada dinamik o ‘zgaruvchilarni yaratish va

yo‘qotish ko‘rsatilgan:

Procedure TForml.ButtonlClick(Sender: TObject); var

pl,p2,p3: Integer; begin

New(pl);

New(p2);

New(p3);

158

www.ziyouz.com kutubxonasi

p r := 5;

p2" := 3;

p3" := pl" + p2";

ShowMessage

('Summa barobar' + IntToStr(p3A);

Dispose(pl);

Dispose(r2);

Dispose(r3);

end;

Ro‘yxat

Ko‘rsatkichlar va dinamik o‘zgaruvchilar ro‘yxati va daraxtlar kabi

murakkab dinamik ma’lumotlar tuzilmalarini yaratishga imkon beradi.

Ro‘yxatni quyidagicha tasvirlash mumkin:

M a’lumot

ko‘rsatkich

Ro‘yxatning harbir elementi ikki qismdan iborat yozuvdir. Birinchi

qism informatsion qism. Ikkinchi qism oldingi elementlar bilan

boglanishni ta’minlaydi.

Dasturda ro‘yxatdan foydalanish uchun ro‘yxat komponentalari

turi va birinchi elementdagi ko‘rsatkich aniqlanishi lozim. Quyidagi

ro‘yxatda talabalar familiyalarining ta’rifi keltirilgan:

Type

TPStudent = ^TStudent;

TStudent = record

sumame: string[20];

name: string[20];

group: integer;

address: string[60];

next: TPStudent;

end;

var

head: TPStudent;

159

www.ziyouz.com kutubxonasi

Rasmda ro‘yxatga yangi element qo‘shish jarayoni ko‘rsatilgan.

Ikkinchi element qo‘shilgandan so‘ng head shu elementni ko‘rsatadi.

head

NtL

nead

h ejd

Sultonov

NIL

Ro‘yxatdan elementni o‘chirish

Ro‘yxatdan elementni o‘chirish uchun oldingi element ko‘rsatgichi

qiymatini o‘zgartirish lozim:

Teaa

160

www.ziyouz.com kutubxonasi

Elem ent dinam ik o'zgaruvchi bo'lgani uchun ro'yxatdan

o‘chirilgandan so‘ng unga ajratilgan xotira ozod qilinishi lozim.

Quyida dinamik o‘zgaruvchi yaratilib, yo‘qotilishi ko‘rsatilgan:

Var

r: 'integer;

begin

new(p);

{ H HCTpyKipiH n p o rp a M M ti } d is p o s e (p );

e n d .

Dinamik ro‘yxat

Quyidagi dastur talaba

familiyasini ro‘yxat boshiga

qo‘shib. talabalar ro‘yxatini

hosil qiladi. M a’lumotlar

tahrirlash komponentasiga

kiritilib, Qo‘shish (buttonl)

tugmasini bosib, ro‘yxatga

kiritiladi. K iritilgan ele-

m entlar ro'yxati Ro‘yxat

(button 2) tugmasini bosib,

alohida oynaga chiqariladi.

Elem entni ro'yxatdan

o ‘chirish uchun, Ro‘yxat

(button 3) o‘chirish tugmasi

bosiladi.

Dastur matni:

Unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls;

Type

TForml = class(TForm)

Label2: TLabel;

Editl: TEdit;

Label3: TLabel;

Edit2: TEdit;

Buttonl: TButton;

Button2: TButton;

.r Pyvw»»

F*miliya

Km

Pi'yldl Cchnnh

161

www.ziyouz.com kutubxonasi

Button3: TButton;

procedure ButtonlClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Var

Forml: TForml;

implementation

{$R *.DFM}

Type

TPStudent=ATStudent;

TStudent = record

f_name:string[20];

l_name: string[20];

next: TPStudent;

end;

Var

head: TPStudent; / / Hanajio (rojioBa) cnncKa

procedure TForml.ButtonlClick(Sender: TObject);

var

curr: TPStudent;

begin

new(curr);

currA.f_name := Editl.Text;

currA.l_name := Edit2.Text;

currA.next := head; head := curr;

Editl.text:=” ; Edit2.text:= ";

end;

Procedure TForml.Button2Click(Sender: TObject);

var

curr: TPStudent;

n:Integer;

st:string;

begin n := 0; st := ";

162

www.ziyouz.com kutubxonasi

curr := head;

while curr NIL do begin

n := n + 1;

st := st + currA.f_name + " + currA.l_name+#13;

curr := currA.next;

end;

if n 0

then ShowMessage(«CnHcoK:» — Po‘yxat + #13 + st)

else ShowMessage(«B cnncKe HeT 3jieMeHTOB.»);— Ro‘yxatda

elementlar yo‘q.

end;

Procedure TForml.Button3Click(Sender: TObject);

var

curr: TPStudent;

begin

if headONIL then

if headA.next=NIL then

begin

Dispose(head);

head:=NIL;

end

else

begin

new(curr);

curr:=head;

head:=currA .next;

Dispose(curr);

end;

end;

procedure TForml.FormActivate(Sender: TObject);

begin

head:=NIL;

end;

end.

E lem entlarni ro ‘yxatga qo‘shishni T F o rm l.B u tto n lC lick

protsedurasi bajaradi. Bu protsedura dinamik o‘zgaruvchi ro‘yxat

yaratib, maydonlariga qiymat beradi va head ko‘rsatgichi qiymatini

to‘g‘rilaydi.

163

www.ziyouz.com kutubxonasi

Ro‘yxatni TForml.Button2Click protsedurasi chiqaradi. Ro‘yxat

elementlariga murojaat qilish uchun curr ko‘rsatkichidan foydalaniladi.

Oldin uning qiymati birinchi element adresiga teng boladi. Keyin

unga next maydoni qiymati beriladi. Jarayon to next maydonning

qiymati N IL bolmaguncha davom etadi.

Elementni ro‘yxatdan o‘chirish TForml.Button3Clickprotsedurasi

tomonidan amalga oshiriladi.

Tartiblangan ro‘yxat

Odatda ro'yxatlar tartiblangan bo'ladi. Misol uchun talabalar

ro‘yxati familiya bo‘yicha tartiblangan boladi.

Elem entni tartiblangan ro'yxatga qo'shish uchun aw al shu

elementdan oldin turishi kerak bolgan element topiladi. Shundan

so‘ng ko‘rsatkichlar qiymatlari o‘zgartiriladi.

hHd

Alimov

r Shomki.rov

Quyidagi dastur Familiya maydoni bo‘yicha tartiblangan ro‘yxat

hosil qiladi. Dastur formasining ishlash jarayoni rasmda ko‘rsatilgan.

i * J"4-M -131 “ll

Fwnftya

P

L H 1-!.. Јj

^ rn

Akmo»Zefct

BCAKnf-lr;

Kom l

TtipCW

1

Qo'*br»h | Ry*xl O th ris h |

ShCkH

1 1: Ј 1

164

www.ziyouz.com kutubxonasi

Dastur matni:

Unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics,

Controls, Forms,

Dialogs, StdCtrls;

type

TForml = class(TForm)

Label2: TLabel;

Editl: TEdit;

Label3: TLabel;

Edit2: TEdit;

Buttonl: TButton;

Button2: TButton;

Button3: TButton;

procedure ButtonlClick(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

Var

Forml: TForml;

implementation

{$R *.DFM}

Type

TPStudent=ATStudent;

TStudent = record

f_name:strino [20];

l_name: strino[20];

next: TPStudent;

end;

Var

head: TPStudent;

procedure TForml.ButtonlClick(Sender: TObject);

var

node: TPStudent;

165

www.ziyouz.com kutubxonasi

curr: TPStudent;

pre: TPStudent;

Begin

new(node);

nodeA.f_name:=Editl.Text;

nodeA.l_name:=Edit2.Text;

curr:=head;

pre:=NIL;

while (currONIL) and (node.f_name currA.f_name) do

begin

pre:= curr;

curr:=currA. next;

end;

if pre = NIL then

begin

nodeA.next:=head; head:=node;

end

else

begin

node^ .next:=preA .next;

preA.next:=node;

end;

Editl.text:=” ;

Edit2.text:=” ;

Editl.SetFocus;

end;

Procedure TForml.Button2Click(Sender: TObject);

var

curr: TPStudent;

n:Integer;

st:string;

begin n := 0; st := ";

curr := head;

while curr NIL do begin

n := n + 1;

st := st + currA.f_name + " + currA.l_name+#13;

curr := currA.next;

end;

if n 0

then ShowMessage('Nienie:' + #13 + st)

else ShowMessage('A nienea iao yeaiaioia.');

166

www.ziyouz.com kutubxonasi

end;

Procedure TForml.Button3Click(Sender: TObject);

Var

curr: TPStudent;

begin

if headONIL then

if headA.next=NIL then

begin

Dispose(head);

head:=NIL;

end

else

begin

new(curr);

curr:=head;

head:=currA.next;

Dispose(curr);

end;

end;

Procedure TForml.FormActiyate(Sender: TObject);

Begin

head:=NIL;

-80%
Курсы повышения квалификации

Медико-биологические основы безопасности жизнедеятельности

Продолжительность 72 часа
Документ: Удостоверение о повышении квалификации
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
"Vitaminlar" mavzusida ochiq dars ishlanmasi (18.33 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт