Студопедия
rus | ua | other

Home Random lecture






Лекция № 1


Date: 2014-02-27; view: 1691.


Begin

AssignFile (f,’C:\B5.dat’);

Rewrite (f,k);b : =$41;

fork :=1 to 120 do

BlockWrite(f ,b, k);

CloseFile(f);

Программаның осы учаскесінің орындалу нәтижесінде С: дискісіне 120 ‘А’символынан тұратын B5.datфайлы жазылып шығады (мұндағы $41 16‑лық санау жүйесіндегі ‘A’ сим‑

волының коды).

Кітапта типсіз файлмен жұмыс істеу тәсілдері толық көрсетілмеген.

 

4.7. TMainMenu компоненттері. Мәзір құру

Windows қосымшалары терезелерінің бәрінде де мәзір бар. Дайындалатын программа үшін Delphi‑де де қолданылады форма терезесіне енгізілетін түрлі пунктті мәзір құруға болады. Мысал (4.3-сурет):

File

Open

Save

4.3-сурет. Мәзір

 

1. Формаға компоненттер панелінің Standard бетімен TМainMenu (Негізгі мәзір) компонентін орнату.

2. Компонентті екі рет шерту. Мәзір құрылатын МainMenu терезесі көрінеді.

3.Оның Объект инспекторы иерезесін оң түймесін шертіп, көрінген View қатарының құрылымындағы Localizable (Жекелеу) қатарына жалауша орнату.

4. Form1: МainMenu1 терезесіне енгізілген төртбұрышты таңдау және көрінген қасиеттер терезесінің Caption қасиетіне сандартты &File командасын енгізіп, КҚ клавишін басу.

File мәзір ретінде төртбұрыш ішіне жазылып қойылады.

Ескеру. & (амперсенд)-“ыстық клавиш ” белгісі (мәзір командасын орындау үшінмәзірді пайдаланбай, клавиатураның осы үшін арналған клавишін басуға болады.Әдетте мұндай клавишті ыстық не жылдам клавиш деп атайды). Ол көптеген қосымшалардың мәзір пункттеріне астын сызу белгісі арқылы белгіленіп қойылған. Мәзірде & белгісінен соң бірінші болып жазылған әріп жылдам клавиш болып тағайындалады, мысалы, мәзірлер & Copy, Cu&t түрінде жазылса, Copy үшін С, Cut үшін t клавиші жылдам клавиш болып тағайындалғаны.

 

5. Көрсеткішті мәзір үсеіне әкеліп, тышқан түймесін басу.

Мәзір астында төртбұрыш ішіне ашылған өріс көрінеді .

Оны таңдап, қасиеттер терезесінің Caption қасиетіне

&Open (Ашу) пунктінің атауын енгізу және КҚ клавишін басу.

Осы тәсілмен мәзірге &Save (Сақтау) пунктін енгізуге болады, т.с.с.

6. MainMenu терезесін жабу. Мәзір пункттерімен қоса 4.3-суретте

көрсетілген сияқты формаға жазылып қойылады.

 

 

Мәзір пункттерін орындау үшін бірінен соң бірі басылатын екі не үш клавишті тағайындауғада болады. Ол үшін қасиеттер терезесінің жоғарғы өрісіне енгізілген Open қатарын не құрылған мәзірдің Open пунктін таңдау керек. Пункттің қасиеттер тізімі көрінеді. ShortCut (Жылдам клавиштер ) қасиутінің мәндер тізімінен Ctrl+O қатарын таңдаса болғаны. Сол сияқты, Save үшін Ctrl+S қатарын таңдау қажет. Жазылған мәзірдің

көрінісі 4.4-суретте бейнеленген.

қатарын не құрылған мәзірдің Open

4.4-сурет. Мәзірде “Ыстық” клавиштердін көрінісі

4.9. TOpenDialog, TSaveDialog, TRichEdit

компоненттері. Құрылған мәрізді пайдалану.

 

TOpenDialog компоненті Windows-тың файлды ашу үшін пайдаланатын стандартты Файлды ашу терезесін экранға шығаруға арналған.

TSaveDialog компоненті TOpenDialog компоненті сияқты. Оған сәйкес процедура Файлды сақтау терезесін шығарады.

Компоненттермен жұмыс тәсілі: олар алдымен формаға орналастырылады

(бұл кезде автоматты түрде қажетті қасиеттеріне мәндер меншіктеледі ) да, сәйкес праграмма құрылады. Алдымен праграммаға сұчпаттық терезе құрып, экранға шығару үшін Execute (Орындау ) әдісі енгізіледі, т.с.с.(төменде құрылған екі процедурадан тұратын программаны қараңыз).

TRichEdit (Мәтіндік редактор) - TMemo компоненті сияқты ,бірақ, одан мүмкіндігі мол стандартты мәтіндік редактор.Оның бетіне файлды ашу, сақтау

Терезелерін шығаруға болады. Мәтін оның Lines қасиетті арқылы ашылған

String List Editor (Жолдық тізім редакторы ) терезесіне енгізіледі . Оның

Aligment, FirstIndent, т.б. қасиеттерін орнатып, абзацтарын форматтап шығу мүмкін. Жазылған мәтінді RTF форматында енгізілген.

 

RichEdit1. Lines. SaveToFile(‘<атау>.rtf’);

 

әдісі арқылы арқылы сақтауға болады.

 

 

Құрылған мәрізді пайдалану үшін формада қосымша компоненттер (OpenDialog1,

SaveDialog1, RichEdit1) орнатып, код терезесінде мәзірдің әр пунктін орындайтын

сәйкес процедуралар жазып шығу керек. Мысалы, 4.3-суретте бейнеленген мәзір пунктерін орындау тәсілі:

1. Жаңа проект ашып, формада 4.4- суретте бейнеленген File(не Файл) мәзірін

орнату.

2. Windows бетінен Формаға қосымша RichEdit1 компонентін орнатып, оны

барынша кеңейту (Align қасиетіне alClient мәнін меншіктеу). Оның үстіне

OpenDialog1, Save- Dialog1 компоненттерін орнатып (4.5-сурет), код терезесінде қажетті процедуралар құру.

Құрылған толық модуль:

unit Unti1;

interface

uses

Windows, Message, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus, StdCtrls, ComCtrls;

type

TForm= class (TForm);

MainMenu1: TMainMenu;

OpenDialog1: TOpenDialog;

SaveDialog1: T SaveDialog;

File1: TMenuItem;

Open1: TMenuItem;

Save1: TMenuItem;

RichEdit1: TrichEdit;

Prodcedure Open1Click (Sender: TObject);

Prodcedure Save1Click (Sender: TObject);

private

{ Private declarations}

public

{ Public declarations}

end;

var

Form1:TForm1;

implementation

{$R*.DFM}

Procedure TForm1.Open1Click (Sender: TObject);

var

F: TextFile;

S, s11: string;

begin

OpenDialog1.Execute;

begin

if OpenDialog1.FileName <>’’ then begin

s11:= OpenDialog1.FileName;

AssignFile (F, s11); Reset (F);

while not eof(F) do

begin

Readln (F, S11); s:=s+s11+#13+#10

end;

RichEdit1.Text:= S; CloseFile (F); end;

end;

end;

Procedure TForm1.Save1Click (Sender: TObject);

var F:TextFile; s, s11: string;

begin

SaveDialog1.Execute;

if SaveDialog1.FileName;

AssignFile (F, s11); Rewrite (F);

s:=RichEdit1.text; writeln (F, s); CloseFile (F); end;

end;

 

Мәзірді пайдаланбай, сұхбаттық терезені формаға шығару да қиын емес. Мысалы, формаға TopenDialog, Tbutton, Temo

Компоненттерін орнатып, Фаилды ашып терезесінButton1 компонентінің onClick оқиғасын өңдеу процедурасы арқылы шығаруға болады:

рrocedure TForm.Button1Click (Sender:TObject);

Var f:TextFile; s, sl:string;

begin

OpenDialog1.Execute;

if OpenDialog1.FileName<>”then

begin

sl:=Open Dialog1.FileName;

Assign File(f,sl); Reset(f);

Memo1.Lines.Clear; // Редакторды тазалау

While not EOF (f) do

begin

Readln(f,s); Memo1.Lines.Add(s);

end;

CloseFile (f);

end;

end;

не қысқаша:

 

Procedure TForm1.Button1Click (Sender:TObject);

begin

with opendialog do

begin

if not execute then exit;

Memo1.Lines.Load FromFile (FileName);

end

end;

Ескурту.1. Программа үшін TMemo орнына TRichEdit редакторын пайдалануға болады.

2. Файлды ашу терезесінің файл аты өрісіне кез келген атауды енгізуге болады, Файлды сақтау терезеге жоқ файлды енгізу програма жұмысын күйрету мүмкін. Сондықтан информацияны сақтау мәселесіне ерекше көңіл бөлу қажет.

4.9.TPopup Menu компоненті. Контексті мәзір құру

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

- формаға TPopupMenu компонентін орнату.

- Мәзір пункттерін құру.

Контексті мәзір құру жолы Tmain Menu мәзірін құру сияқты (3.10-тақырыпты қараңыз), айырмашылығы мәзірде оның пункттері ғана және олар бір баған бойында енгізіледі.

Мысал. Форомаға Open, Save пункттерінен тұратын ко-нтексті мәзір орнатып, олармен жұмыс істеу програмасын құру керек.

1. ФормағаTPopup Menu компонентін орнату.

2. 3.10-тақырыпқа енгізілген сияқты пункттерді орынд-ау: Popup Menu мәзірін екі рет шертіп, терезеде көрінген төртбұрштарға ретімен мәзір пункттерін (Open, Save) енгізу.

3. PopupMenu терезесін жабу.т.с.с.

4. Формада Popup Menu компоненті екі рет шертілсе, Form1.-Popup Menu1 контексті мәзірі көрінеді. Оның бір пу-нктін екі рет шертіп, код терезесінде сәйкес процедура құру, т.с.с.

 

Тапсырма. Формада стандартты Файлды ашу, Файлды жабу терезелерін шығаратын контексті Open, Save мәзірін пунктерін дайындап, оларды орындайтын програма құрыңыз.

Ескерту. Delphi-де программа құру кезінде әдеттегідей пайдаланылатын түрлі ауыстырып қосқыштар компоненттер түрінде Standart, Additionalпанелдеріне енгізілген:

Check Box (жалауша,□);

Radio Button(ауыстырып қосқыш, ○)

Radio Group(бірі таңдалатын баилансты ауыстырып қосқыштар тобы, ○, ○,...);

CheckListBox (бірі таңдалатын тәуелсіз жалаушалар тізімі, □, □,...).

 

4.10. Тестілеу программасы

Компьютерді пайдаланып, студенттер мен оқушыларды семестр, тоқсан ішінде бірнеше рет сынақтау (тестілеу) – олардың ағымдық білімін тексерудің негізгілерінің бірі. Тест нәтижесі арқылы өзіндік жұмыстар, консультациялар ұйымдастыру және қосымша тапсырмалар беру арқылы олардың білім деңгейлерін көтеруге әсер етуге болады. Тестілеу емтихан орнына да пайдаланылады. Тест көп деңгейлі және көп нұсқалы болып құрылуы мүмкін.

Соңғы кездерде тестілеу маманды жұмысқа алу кезінде, мекеменің қызметкерлерінің мамандық дәрежесін бағалауда және т.б. салаларда кеңінен қолдануда.

Оқу пәнінен тестілеуге арналған сұрақтар құрылымы әр түрлі болуы мүмкін, мысалы:

1) Мұғалім сынақ жүргізген тақырыптарға арналған ондаған сұрақтар дайындайды да, әр сұраққа 3, 4 не 5 түрлі "жауап" ұсынады. Олардың біреуі ғана дұрыс жауап болуы тиіс. Сынақталушы осы жауаптардың біреуін дұрыс деп таңдап, сәйкес нөмірді, символды таңдауы не экран бетіне көрінген ауыстырып қосқыш белгілерінің бірін орнату керек.

2) Екі бағанда нөмірленіп топтастырылған бірнеше сұрақ және жауаптары белгілі. Жауаптардың қайсы сұрақтарға тиістілігін (сәйкестігін) анықтау керек.

3) Көп нүкте арқылы белгіленіп, арасында бір сөз не сан қалдырылған сөйлем көрінеді. Көп нүкте орнына қажетті сөздерді не символдарды енгізу керек.

4) Экранға орналасу реті кездейсоқ түрде ауыстырылған іс-әрекеттер тізбегі көрінеді де, дұрыс тізбекті құру (ретімен нөмірлеу) ұсынылады, т.б.

Мысал, информатика пәнінің Турбо Паскаль курсынан осыларға сәйкес құрылған сұрақтар:

  1. Программа берілген. Оны қолдан орындап, нәтижесін көрсетіңіз:

Progran f;

var x,y: real; k: integer;

begin

x:= 3; y:= 1;

for k:=1 to 3 do

y:= 2*x*y;

writeln (y: 5: 2);

end.

1. 6 2. 216 3. 36 4. 72

 

2. Шарт, оператор және олардың жазылу форматтары арасындағы сәйкестікті анықтаңыз (Р, Р1, Р2 – шарттар, S, S1, ..., Sn – орыгдалатын блоктар (сериялар)) [a), b), c), d), e) орнына сәйкес нөмірлерді енгізу керек]:

1. Құрама шарт a) If P Then S

2. Құрама оператор b) Goto N

3. Толық шарт c) If P Then S1 else S2

4. Қысқартылған шарт d) Begin S1; … Sn end;

5. Шарттыз өту операторы e) (P1) and (P2)

 

3. Толықтырыңыз:

Турбо Паскальда қайталану циклінің қадамы әрқашанда ... не ... тең.

 

4. [-1. 1] кесіндісіне h=0,1 қадам бойынша y=5x+3 функциясының мәндерін есептейтін программа үзіндісінің сәйкес тізбегін анықтаңыз (үзіндіде жазылатын операторларды ретімен нөмірлеп шығыңыз):

while begin

y:=5x+3; end;

x:=1; writeln (y: 6: 2);

do x:= x+h;

x<=1

Бірінші сұрақ арқылы сынақталушының программаны түсініп, қолдан орындау мүмкіндігі тексеріледі; екінші сұрақ арқылы тақырып өлілген соң қай кезеңде қандай қателік жіберілгендігін анықтауға болады. Үшінші сұрақ бойынша сынақталушының тақырып мазмұны есте сақтағаны тексеріледі. Төртінші сұрақта сынақталушының программа құру мүмкіндігі анықталады, т.с.с.

Әр сұрақтың қиындығына ("салмағына") қарай дұрыс жауап үшін 1 не 2 балл (ұпай) берілуі мүмкін. Қате жауап 0-ге тең деп бағаланады. Мұндағы ескеретін жайт: сұрақтың дұрыс жауабы үшін 3 не одан көп балл тек күрделі программа құру не есепті шешу үшін беріледі. Емтихан не сынақта компьютер арқылы тестілеуге енгізілген мұндай сұрақтар сынақталушылардың көп уақытын алады және нәтижесі дұрыс бағаланбауы мүмкін. Сондықтан, оларды оқу жылы ішіндегі ағымдық бақылау сұрақтарына ғана енгізген жөн.\

Компьютер арқылы тестілеуді түрлі түрде дайындауға болады. Олардың қолайлыларының бірі – берілетін сұрақтар мен сәйкес ‘жауаптарды’ WorPad не Word мәтіндік редакторы терезесінде теріп, мәтіндік файл (.txt типті) түрінде сақтау (мысалы, matem.txt), тестілеу программасын Delphi-де құру.

 

Кітапқа енгізілген тест файлы екі бөлімнен тұр:

- бағалар жөнінде мәлімет;

- сұрақтар.

Бағалар жөнінде мәліметте сынақталушының жинаған балына байланысты қандай баға қойылатыны көрсетілген:

Өте жақсы

Жақсы

Қанағаттаналарлық

Қанағаттанарлықсыз

*

Бұл – егер жиналған балл >=86% болса бес, 75$ .. 85$ аралығында болса төрт, 60$ .. 74$ аралығындағы балл үшін 3 (қанағаттанарлық), әйтпесе 2 (қанағаттанарлықсыз) бағасы қойылатын хабарлау (пайыздардың басқа түрде алынуы да мүмкін). Мәліметтен соң жаңа жолдан бастап жұлдызша (*) белгісі қойылған. Ол – программа бөлімінің аяқталу белгісі.

Форма бетіне сұрақ үшін дайындалған түсініктемелік растрлық суретті шығару мүмкін. Программа бойынша ол қойылған сұрақтан соң келесі жолға \ (кері көлбеу сызықша) енгізіліп, одан әрі сурет файлының атауы жазылуы тиіс. Ал сурет енгізілмейтін болса, осы жолға нүкте (.) қойылуы жоспарланған. Келесі жолдарға түрлі ''жауаптар'' енгізілген. Әр жауаптан соң ол үшін берілетін балл саны үтір арқылы бөлініп жазылған, жауаптар аяқталған соң жаңа жолдан бастап жұлдызша (*) қойылған. Ол – сұрақтың аяқталу белгісі.

Мысал. Матеметикадан қабылдау емтиханында үшбұрыш ауданы, пирамида көлемі, cos2x формулалары мен 2x2+5x+3<0 теңсіздігін шешу жөнінде тестілеу программасын құру керек.

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

 

Құрметті талапкер!

Сіздің алдыңызда математикадан тестік сұрақтар.

Жауап беру уақытыңыз 30 минут.

*

Өте жақсы

Жақсы

Қанағаттаналарлық

Қанағаттанарлықсыз

*

Теңбүйірлі үшбұрыштың табаны – 4, бүйір қабырғасы 5-ке тең. Үшбұрыштың ауданын табу керек.

.

,0

,0

,0

,2

*

Пирамида көлемінің формуласы (S - табан ауданы, P - табан периметрі, h - биіктік):

\piram.bmp

V= (B+P)h

,0

V= Ph/2

,0

V= Ph/3

,1

V= B+P

,0

V= (B+P)h/3

,0

*

Sin2x функциясының формуласы:

.

Sin2x= sinx*sinx

,0

Sin2x= sinx+sinx

,0

Sin2x= sinxcosx

,1

Sin2x= 2sinx*sinx

,0

Sin2x= sinx*cosx

,0

*

2*x*x-5*x+3<0 теңсіздігінің шешуі:

.

X<1

,0

1<x<1,5

x<1 және x>1,5

,0

0,5<0

,0

-0,5<x<3

,0

*

Ескерту. 1. Пирамида көлемі сұрағына қажетті сызба Image Editor графикалық редакторы арқылы қолдан салынып, piram.bmp файлы түрінде сақталған. (Суретті Paint графикалық редакторында да салуға болады. Тест сұрақтары, программа және сызба файлдары үшін бір бума дайындап, оны жұмыс столына көшіріп қойған жөн).

  1. Программаны іске қосу алдында қажетті параметрді орнату керек (4.11-тақырыпты қааңыз).

 

Тест программасын дайындау:

 

  1. Жаңа проект ашып, формаға Image1, Panel1 компоненттерін орнату; Panel1 компонентінің Caption қасиетінің мәнін тазалап, Panel1-дің Align қасиетіне onButton мәнін меншіктеу. Панель форманың төменгі қатарына созылған түрде орнатылып қоцылады.
  2. Panel1-дің үстіне Label, Timer1 және Button1 компоненттерін орнатып, Button1-дің Caption қасиетіне ОК мәнін меншіктеу (4.6-сурет);
  3. Проектіге атау беріп сақтау (мысалы, Test1.dpr, Test.pas).
  4. Код терезесін ашып, Test программасын құру:

 

unit test

 

interface

 

uses

SysUnits, WinTyres, WinProcs, Messages, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;

 

type

TForm1= class (TForm1)

Label2: TLabel; // сұрақты шығару өрісі

Image1: TImage; // иллюстрация шығару өрісі

Panel1: TPanel;

Button1: TButton; // ОК, Келесі түймелері

Timer1: TTimer;

Label1: TLabel; // уақытты көрсету өрісі

 

Procedure FormActivate (Sender: TObject);

Procedure FormCreate (Sender: TObject);

Procedure Button1Click (Sender: TObject);

Procedure TandauClick (Sender: TObject); // қодан қосу

Procedure Timer1Timer (Sender: TObject);

 

private

{ Private declarations}

public

{ Public declarations}

end;

 

const

N_jauap=5; // жауаптардың бес түрі (нұсқасы)

N_DENGEY=4 // бағалаудың төрт деңгейі

var

TForm1:TForm1; // форма

{программаның орындалу барысында (динамикалық түрде) құрылатын сыңарлар}

Jauap: array [1..n_jauap] of Tlabel; // альтернативалық

// жауаптар

Tandau: array [1..n_jauap+1] of TRadioButton; //жауапты

// таңдау түймелер

 

f: TextFile; // мәтіндік тест файлы

fn: string; // сұрақтар файлының атауы

 

dengey: array [1..N_ DENGEY] of integer; {деңгейге сәйкес қосынды}

 

DenHabar: array [1..N_ DENGEY] of string; {деңгейге сәйкес хабарлама}

ball: array [1..n_jauap] of integer; {таңдалған жауап үшін берілетін балл}

summa: integer; {жиналған балл}

surak: integer; {сұрақ нөмірі}

nomr: integer; {таңдалған жауап нөмірі}

sum1: integer; {барлық дұрыс жауаптар үшін берілетін балдар қосындысы}

 

tm: tdatetime; {уақыт айнымалысы}

proc: integer; {жиналған балдың процентке шыққандағы шамасы}

i: integer; buf: string;

 

implementation

 

{форманы бастапқы қалыпқа келтіру}

Procedure FormaBas (frm:TForm1);

var i:integer;

begin

for i:=1 to n_jauap do

begin

jauap[i].width:= frm.ClientWidth-jauap{i].left-5;

jauap[i].Visible:= False; tandau[i].Visible:= False;

end;

frm.Label2.width:=frm.ClientWidth-frm.Label2.left-5;

frm.Image1.Visible:= False;

end;

 

{жеткен шекті анықтау}

Prcedure Kortn (summa: integer; frm: TForm1);

begin

form1.Label2.Font.Color:=clred;

form1.Label2.Font.Style:=[];

buf:=’’;

proc:= round (summa/sum1*100);

str (summa:2, buf);

buf:= #13+’Жинаған балл саныңыз:’+buf+#13+#13+

‘Процентпен:’+IntToStr (proc)+’%’;

i:=1;

while (proc <dengey[i]) and (i< N_ DENGEY ) do

i:=i+1;

buf:=buf+#13+#13+’Бағаңыз:’+ DenHabar[i];

frm.Label2.Caption:= buf;

end;

 

{тест жөнінде бастапқы мәліметті шығару}

Procedure Habar (var f: TextFile; l: TLabel);

var s, buf: string;

begin

buf:=’’;

repeat

readln (f,s);

if s[1] <> ‘*’ then buf:=buf+s+’’;

until s[l]:= ’*’;

Form1.Labe2.font.color:= clNavy;

Form1.Label2.Caption:= buf;

end;

 

{тестілеуді бағалау жөніндегі мәліметті оқу}

Procedure BagaOku (var f: TextFile);

var i:integer; buf: string;

begin

i:=1;

repeat

readln (f, buf);

if buf [l] <>’*’ then

begin

DenHabar[i]:= buf; readln (f, dengey[i]);

i:=i+1;

end;

until buf[l]:=’*’;

end;

 

// иллюстрацияны масштабтау

Procedure SuretSal;

Var w, h: integer; // суретке рұқсат етілген

// ең үлкен ен (w) және биіктік (h)

claleX: real; // Х өсі бойынша масштабтау коэфициенті

scaleY: real; // У өсі бойынша масштабтау коэфициенті

scale: real; // масштабтаудың жалпы коэфициенті

i: integer;

begin

// суреттің мүмкін болатын ең үлкен өлшемдерін есептеу

w:= Form1.ClientWidth - Form1.Label2.Left;

h:=Form1.ClientHeight - Form1.Panel1.Height-5

-Form1.Label2.Top – Form1.Label2.Height-5;

for i:=1 to n_jauap do

if jauap[i].Caption <> ‘’

then h:= h-jauap[i].Height-5;

// цикл бойынша суреттің мүмкін болатын ең үлкен

// өлшемі анықталады

 

{масштабты анықтау}

if w> Form1.Image1.Picture.Width then scaleX:= 1

else scaleX:= w/Form1.Image1.Picture.Width;

if h>Form1.Image1.Picture.Height then scaleY:= 1

else scaleY:= h/Form1.Image1.Picture.Height;

if ScaleY<ScaleX then scale:= scaleY

else scale:= scaleX;

 

{суретті масштабтау}

 

Form1.Image1.Top:= Form1.Label2.Top+ Form1.Label2.Height+5;

Form1.Image1.Left:= Form1.Label2.Left;

Form1.Image1.Width:= Round (Form1.Image1.Picture.Width*scale);

Form1.Image1.Height:= Round (Form1.Image1.Picture.Height*scale);

Form1.Label2.Visible:= True;

end;

 

// сұрақты экранға шығару

Procedure SurakToScr (var f: TextFile; frm: TForm1; var surak: integer);

Var i, ii: integer; code: integer; s, buf: integer;

ifn: string; // сурет салу

begin

surak:= surak+1; str(surak: 3, s);

frm.Caption:= ‘Сұрақ’+s;

{сұрақ мәтінін шығару}

buf:=’’;

repeat

readln (f, s);

if (s[l] <> ‘.’) and (s[l] <> ‘\’)

then buf:= buf+s+’’;

until (s[l]=’.’) or (s[l]=’\’);

frm.Label2.Caption:=buf;

if s[l]=’\’

then // сұраққа иллюстрация бар

begin

frm.Image1.Tag:=1; ifn:= copy (s, 2, length(s));

try

frm.Image1.Picture.LoadFromFile (ifn);

expect

on E: EFOpenError do

frm.tag:=0;

end {try}

end

else frm.Image1.Tag:=0;

 

// жауап нұсқаларын оқу

for i:=1 to n_jauap do

begin

jauap[i].Caption:=’’;

jauap[i].Width:= frm.ClientWidth-Form1.Label2.Left-5;

end;

i:=1;

repeat

buf:=’’;

repeat // жауап нұсқасының мәтінін оқу

readln (f, s);

if (s[l]<>’*’) and (s[l]<>’,’)

then buf:=buf+s+’’;

until (s[l]’,’) or (s[l]=’*’);

 

val (s[2], ball[i], code); jauap[i].Caption:= buf;

i:=i+1;

until s[l]’.’;

 

// төменде иллюстрация мен жауап нұсқаларын оқылады

if Form1.Image1.Tag=1 // сұраққа иллюстрация бар болса

then begin

SuretSal;

Form1.Image1.Visible:= True;

end;

 

// жауап нұсаларының шығарылуы

i:=1;

while (jauap[i].Caption <>’’) and (i<=n_jauap) do

begin

if i=1 then

if frm.Image1.Tag=1 then

jauap[l].top:= frm.Image1.Top+frm.Image1.Height+5

else

jauap[i].top:= frm.Label2.Top+frm.Label2.Height+5

else

jauap[i].top:= jauap[i-1].top+ jauap[i-1].height+5;

tandau[i].top:= jauap[i].top;

tandau[i].Visible:= True; jauap[i].Visible:= True;

i:=i+1;

end;

for ii:=1 to n_jauap do

sum1:= sum1+ball[ii];

end;

{$R*.DFM}

Procedure TForm1.FormActivate (Sender: TObject);

begin

FormBas (Form1);

If ParamCount=0 then

begin

Label.Caption:= ‘Тестінің сұрақтар файлы берілмеген.’;

Button1.Caption:=’OK’; Button1.tag:=2;

Button1.Enabled:=True

end

else Begin

fn:= ParamStr(l); AssignFile (f, fn);

{$I-}

reset (f);

{I+}

if IOResult=0 then

begin

Habar (f, Label2); BagaOku (f);

end;

summa:=0;

end;

end;

 

procedure TForm1.Button1.Click (Sender: TObject);

begin

case Button1.tag of

0: begin

Timer1.Enabled:=True;

tm:= time

Button1.Caption:=’Келесі’; Button1.tag:=1;

Tandau[n_jauap+1].Checked:= True;

{бірінші сұрақты шығару}

Button1.Enabled:= False;

FormaBas (Form1);

surakToScr (f, Form1, surak)

end;

1: begin {қалған сұрақтарды шығару}

Summa:= summa+ball[nomr];

Tandau[n_jauap+1].Checked:= True;

Button1.Enabled:=False;

FormaBass (Form1);

if not eof (f)

then surakToScr (f, Form1, surak)

else

begin

CloseFile (f); Button1.Caption:=’OK’;

Form1.Caption:=’Тестілеу нәтижесі’;

Button1.tag:=2; Button1.Enabled:=True;

Kortn (summa, Form1);

end;

end;

2: begin {жұмысты аяқтау}

Form1.Close;

end;

end; {case}

end;

procedure TForm1.tandauClick (Sender: TObject);

var i:integer;

begin

i:=1;

while tandau[i].Checked= False do while

i:=i+1; nomr:=1; Button1.enabled:=True;

end;

{уақытты шыгару және шектеу}

Procedure TForm1.Timer1Timer (Sender: TObject);

var u:string;

begin

Label1.Font.Color:= clTeal;

u:= formatdatetime (‘hh:mm’, tm-time);

Label1.Caption:= ‘Сіздің ’+г+’ уақытыңыз қалды’ж

end;

procedure Tform1.FormCreate (Sender: TObject);

var i: integer;

begin

{сұраққа және жауаптар нұсқаларын шығару үшін бес өріс құру}

for i:=1 to n_jauap do

begin

jauap[i]:= TLabel.Create (self);

jauap[i].Parent:= Form1; jauap[i].Left:=36;

jauap[i].WordWrap:= True;

end;

{жауапты таңдауға арналған радиотүймелер құру}

for i:=1 to n_jauap+1 do

begin

tandau[i]:=TradioButton.Create (self);

tandau[i].Parent:=self; tandau[i].Caption:=’’;

tandau[i].Width:=17; tandau[i].Left:=16;

tandau[i]Visible:= False; tandau[i].Enabled:= True;

tandau[i].OnClick:= tandauClick;

end;

FormBas (Form1);

end;

 

Программа іске қосып, FormCreate процедурасы бойынша форма көрінген соң OnActivatе оқиғасы пайда болып, басқару программаның FormActivate процедурасына беріледі. Ол алдымен форманы бастапқы қалыпқа түсіретін FormBas процедурасын шақырады да, тест сұрақтар енгізілген мәтіндік файл параметрін орнатылуын тексереді. Орнатылған параметр ParamStr (1) функциясы түрінде белгіленеді. Егер файл аты (параметр) алдын ала көрсетілмеген болса, белгі ParamCont=0 түрінде жазылады да, ‘Файл берілген жоқ’ хабары Label өрісіне жазылып қойылады. Параметр дұрыс көрсетілген жағдайда тест файлы (Test.pas) AssignFile (f, fn), Reset (f) операторлары (процедуралары) көмегімен ашылады (параметрді оранту тәсілі 4.11-тақырыпта көрсетілген). Одан әрі BagaOku процедурасы оындалып, экранда бағалау деңгейлері көрсетілген мәлімет көрінеді. Процедура dengey (денгей) және denhabar (мәлімет) массивтерін де толтырылады.

Мәлімет көрінген соң Button (OK) түймесін шерту керек. Ол алғашқы сұрақты, көрінген ауыстырып қосқыштардың бірін орнатқан соң келесі сұрақты шығару және соңында программа жұмысын аяқтау үшін пайдаланылады.

 

 

Сұрақты формаға шығару SurakToScr процедурасы арқылы орындалады. Егер сұрақ .bmp типті сурет файлы енгізілетін түрде дайындалса, суретті формада көрсетілген орынға енгізу Image1.Picture қасиетінің LoadFromFile әдісін пайдалану арқылы іске асады (4.7-сурет).

Сұрақ мәтіні көптеген жолдардан тұратындықтан, программада мәтін мен ауыстырып қосқыштардың формаға толық сыю мүмкіндігі ескерілген.

SurakToScr процедурасы сынақталушының жинаған баллдарын ретімен қосып отырады да, Kortn процедурасы тестінің орындалу нәтижесін форманың Label1 өрісіне шығарады.

TForm1.Timer1Timer процедурасында тестілік сұрақтарға жауап беру уақыты көрсетілген.

 

4.11. Параметрді орнату

 

Тест программасы үшін параметрді орнату программаны іске қосудан бұрын орындалуы тиіс. Ол үшін Delphi ортасынан Run→Parameters командасын беру керек. Ашылған терезенің Parameters өрісіне тестілік сұрақтардан тұратын мәтіндік файл атауын енгізіп не оны өрісте ашылатын тізімнен таңдап, терезенің ОК түймесін шертсе болғаны (4.8-сурет).

 

Бақылау Сұрақтары

  1. Файлдың анықтамасы.
  2. Берілгендер файлының элементі дегеніміз не? Жол, өріс деп нелерді айтады? Мысал келтіріңіз.
  3. Берілгендер файлымен қандай жұмыстар жүргізілуі мүмкін? Атап шығыңыз.
  4. Типтік файл операторы.
  5. Типтік файлды дискіге тиеу тәсілі. Мысал алып, дискіге тиеу программасын құрыңыз.
  6. Типтік файлды дискіден оқу тәсілі. Мысал алып, дискіге тиеу және оны Memo терезесіне шығару программасын құрыңыз.
  7. Файлды мәтіндік типті түрде дискіге тиеу программасының форматы. Дайындаған файлды мәтіндік типті түрде дискіге тиеңіз.
  8. Файлды мәтіндік типті түрде дискіге тиеу программасының форматы. Дайындаған файлды мәтіндік типті түрде дискіге тиеп, Memo терезесіне шығарыңыз.
  9. IOReset функциясы не үшін пайдаланылады? Оны программаға енгізу түрі.
  10. Мәтіндік файл түрінде мынадай өлең шумағын дискіге тиеп, Memo терезесіне шығару керек.

 

Арман, арман алуға бұрды бетімді,

Нені қусам – сүйем соған жетуді.

Мен кідірсем терім сүртіп бір сәтке

Бүкіл дүние тұрып қалар секілді.

(Ж. Нәжімединов)

11. Типсіз файл дегеніміз не? Оны дискіге тиеу және дискіден оқу тәсілі.

12. TmainMenu компонентін пайдаланып, мәзір құру тәсілі. Компонент арқылы TimDat мәзірін құрыңыз (3.22-сурет).

 

Form1

TimDat Time Data

 

13. Программа іске қосылып, жоғарғы 12- пункт бойынша құрылған мәзірдің Time, Data таңдалған кезде формада орнатылған Label өрістерінде уақыт және дата көрінетін программа құрыңыз.

Нұсқау. TimDat мәзірі енгізілген форманы экранға шығарып, формаға Label1, Label2 компонентерін орнату, одан әрі, Time, Data пунктерін екіден шерту керек. Код терезесінде көрінген дайындамаларға Label1 объектілерінің Caption қасиеттеріне сәйкес

 

FormatDateTime (‘hh:nn’, Time);

FormatDateTime (‘c’,Date);

Мәндерін меншіктеу операторларын енгізу жетуілікті.

14. TОpenDialog, TsaveDialog, TrichEdit компоненттерінің қызметі. Мәзірдің Оpen пункті құрылған кезде оны іске қосу программасы.

15. Мәзірдің Save пункті құрылған кезде оны іске қосу программасы.

16. TpopupMenu компоненті. Контексті мәзір құру тәсілі.

17. Тст не үшін қажет? Тест сұрағының құрылу форматының төрт түріне мысалдар келтіріңіз.

18. Тест программасының құрылымы.

19 Тест программасы үшін параметрді орнату дегеніміз не? Оны орнату тәсілі.

 

 

V ТАРАУ. БЕРІЛГЕНДЕР ҚОЫМЕН ЖҰМЫС

 

5.1. Берілгендер қоры. БҚБЖ жөнінде

 

Түрлі шаруашылықтарда, оқу орындарында, коммерциялық мекемелерде және т.б. салаларда берілгендерді дайындау, оларды өңдеу, сақтау жиі кездеседі. Мысалы, жоғары оқу орындарында дайындалатын мәліметтер:

 

- Фауультеттер, олардың құрамындағы кафедралар мен кафедра қызметкерлерінің тізімі не қызметкерлер жөнінде басқа мәліметтер;

- Емтихан ведомостары;

- Студенттер жөнінде мәліметтік тізімдер;

- Түрлі бөлімдерде жұмыс істейтін адамдардың тізімі (тегі, аты-жөні, білімі, адресі, үй телефоны, т.б.);

Мұндай мәліметтерді сақтау және өңдеу көп тараған әдісі – оларды берілгендер қоры түрінде дайындау. Берілгендер қоры (БҚ) – құрылымы арнайы тәсіл бойынша ұйымдастырылған берілген форматты файлдар жиынтығы. Файл негізінен кесте түрінде дайындалады. Кестелерді дайындау, жылдам түрде олардан қажетті жазулар тобын таңдау (шартты қанағаттандыратын сұраныс құру), оларды сақтау, жазуларды редакциялау, жолын алып тастау, кестені басып шығару сияқты орындалатын іс-әрекеттер – күрделі жұмыстар. Бұрын, мысалы, Турбо Паскальда БҚ кестесі берілгендер файлы ретінде құрылып, онымен жұмыс істеу үшін программаға арнайы процедуралар мен функциялар енгізілген [ll]. Соңғы кездерде кестелерден тұратын БҚ құрып, оларды өңдейтін көптеген программалар жүйесі дайындалған. Оларды берілгендер қорын басқару жүйелері (БҚЖБ) деп атайды. Белгілі БҚЖБ-лер:

DBase, FoxBase, FoxPro, Paradox, Access, т.б.

 

Алғашқы кездерде қолданылып жүрген dBase-тің түрлі варианттары FoxPro, Paradox, т.б. жүйелер MS DOS операциялық жүйесіне жұмыс істейтін және программалауды да қажет ететін. Шағын бизнесті кішігірім мекемелерде программалаудың көп қиындық туғызатыны белгілі. Осы себепті, соңғы жылдары программалауды қажет ете бермейтін Microsoft Office (Windows) құрамына кірістірілген Access сияқты жан-жақты мүмкіндікті БҚЖБ-лері жарық көрді. Access-тің бірнеше нұсқалары бар, олардың ішінде соңғы жылдары шыққандары: Access 97, Access 2000 (аccess – кіру, еркін ену). Бұлар – жұмыс істеуге жеңіл және анықтамалық жүйелері барынша жетілдірілген күрделі программалар.

 

Кесте жөнінде. Кестеде берілгендер адресі жолдар мен бағандар қиылысы арқылы анықталады. Бағанды өріс деп, жолды жазу деп те атайды.

 

БҚ кестесінің өрістер құрылымы жөнінде ескеретін ерекшеліктер:

 

· өріс атаулары бірегей (қайталанбайтын) болуы тиіс. Атау үшін әріптерден басталатын цифрлар тізбегін алуға болады;

· әр өріске бір типті ғана берілгендерді (мәліметтерді) енгізу мүмкін (Excel-де бұл міндетті емес болатын), Типтер мәтіндік, сандық, логикалық, ақшалық, дата/уақыт, т.б. болып, бірнеше түрге бөлінеді;

· Жазуда кейбір өрістер толтырылмауы мүмкін, бірақ олардың жазуда қатысуы міндетті;

· Delphi-ді берілгендер қоры элементтерін (кесте, сұраныс) құруға пайдалануға болады. Кітапқа БҚ-мен жұмыс істеудің кейбір мүмкіндіктері қарастырылған.

 

5.2. Database Desktop утилитасы. Кесте құру

 

БҚ кестесі Delphi құрамына енгізілген Database Desktop (Берілгендер қоры жұмыс столы) қосымша программасы (утилитасы) арқылы құрылады:

1. Tools-Database Desktop (Сервис-БҚ жұмыс столы / қабықшасы) командасын беру. Қабықша программасы көрінеді (5.1-сурет).

 

 

2. Терезеден File-New-Table (Файл-Жаңа-Кесте) комагдасын беру. Create Table (Кесте құру) сұхбаттық терезесі шығады. Онда ашылатын тізімнен қажетті кесте форматын таңдау (Paradox не dBase). Алғашқы рет Paradox7 форматы іске қосылып, терезе өрісіне осы атау көрінеді.

 

3. Paradox7 форматымен келісіп, ОК түймесін шерту (онда пайдалануға болатын өріс типтері жеткілікті). Бірінші бағанында автоматты түрде өрістің нөмірі жазылып қойылған кесте өрісі атауын сипаттау терезесі көрінеді (5.2-сурет).

4. Екінші бағаннан бастап ретімен өріске берілетін атауды (FieldName), өріс типін (Type), өлшемін (Size) енгізу (өлшем өріс символдық типті болса ғана енгізіледі). Өрісті кілттік ету қажет болса, оның бесінші бағанда (Key) көрсетілуі тиіс. Ол '*' символы арқылы белгіленеді (жалпы, кілт Delphi-де және MS Access сияқты арнайы БҚБЖ-лерінде кеңінен пайдаланылады).

Database Desktop арқылы Аты-жөні, туған жылы, ұлты (Fam, Tjili, Ulti) құрылымды төмендеуге кестені (5.1-кесте) құру үшін алдымен өріс атауын сипаттау терезесін 5.3-суреттегі сияқты толтыру керек. Өріс атауларын қазақ алфавиті шрифттерімен теруге болады (Кесте құру тақырыпшасына енгізілген 3-ескертуді қараңыз), бірақ олар формада дұрыс көріне берілмейді.

5.1-кесте

  Аты-жөні (Fam) Туған жылы (Tjili) Ұлты (Ulti)
Мәдіходжаев Сұлтан Қаз
Оралханова Мәлика Қаз
Қамардіеұлы Ержан Қаз
Нұрланқызы Маржан Қаз

 

Ескерту. 1) Өріс атауының ортасына нүкте (.) символы енгізілмегені жөн;

2) Өрістерді сипаттау не дайындау терезесінің бірінші бағанында автоматты түрде атаулардың реттік нөмірлері көрсетулі тұрады. Оларға көңіл бөлмеу керек. Кезекті өріске мән енгізілген соң КҚ не сәйкес курсорды басқару клавишінің басылуы тиіс. Курсор келесі өріске орналастырылып қойылады;

3) Үшінші бағанға өріс типінің (Type) енгізілуі тиіс. Ол үшін курсор бағанға орналасқан соң Бос орын клавишін басу керек. таңдалған Paradox форматында пайдаланылатын тип атаулары тізімі көрінеді (5.2-кесте). Тізімнен қажетті тип таңдауға тиіс. Оның бір әріптен тұратын қысқаша белгімесі курсор орналасқан орынға енгізіліп қойылады. Мысалы, Fam өрісі – символдық типті, таңдалатын тип – Alpha. Ол таңдалан кезде өріске тип белгімесі (А) енгізіліп қойылады;

<== previous lecture | next lecture ==>
Биттік бейнелерді жылжыту | ЭЛЕКТРОННОЕ СТРОЕНИЕ АТОМОВ
lektsiopedia.org - 2013 год. | Page generation: 0.257 s.