|
3. Төмендегі компоненттердің қайсысында Caption қасиеті болмайды?
|
Edit
|
Form
|
Label
| Button |
Panel
|
|
4. Форманы жасыру үшін қай әдіс қолданылады?
|
Release
|
Close
|
Hide
|
Show
|
5. S айнымалысының мәні келесі операторларлан кейін неге тең болады:
{float S=0; int I=1;
do { S=S+1/I; I=I-1}
while (I<=1);}
|
3
|
1/2
|
2/5
|
0
|
1
|
Жұмысты орындауға тапсырмалар
.
Лекциялар, әдебиеттер, әдістемелік нұсқау бойынша теориялық материалды қайталау.
Бақылау сұрақтарына ауызша жауап беру.
Тапсырма вариантын таңдау және орындау
Есеп жазу
Есеп мазмұны
Жұмыстың тақырыбы және мақсаты.
Бақылау сұрақтарына жауап жазу.
Тапсырманың блок-схема, алгоритмі.
C++ Builder тілінде программасы
Әдебиеттер
1. Атымбаева Объектіге бағытталған программалау негіздері.Алматы, 2005 ж.
2. Програ ммирование в среде С ++ Builder. А. Вальвачев, Д. Сурков, К. Сурков.
Мин.1998г
3. С ++ Builder. С.В.Глушаков, В.Н. Зорянский, С.Н. Хоменко
4. С++ и информатика . Н.Культин, М. 2002г.4. 4 4
5. С ++ Builder книга рецептов. В. Ермолаев. Кудиц. – образ. 2006г.
6. Справочник по С ++ Builder. Учебное пособие. 2005г.
7. Разработка приложений в среде С ++ Builder 6 и решение задач информационно-радиационного профиля. Учебное пособие. А.И. Купчишин, Т.А. Шмыгалева.
Лабораториялық жұмыс № 9-10
Тақырыбы: C++ Builder ортасында екі өлшемді массивтермен жұмыс
Мақсаты: Стандартты компоненттерді қолданып программалау әдістерін, матрицаларды енгізу және шығару әдістерін меңгеру.
Материалдар және жабдықтар: ДК, C++ Builder программалау ортасы
Жұмыстың мазмұны және орындалу тәртібі:
Вариант бойынша тапсырманы алу
Есептің қойылымы
Есепті шешу алгоритмі
Есепті шешу программасын C++ Builder программалау ортасында құру
Программа листингі
6. Орындалған жұмыс жөнінде есеп беру
Әдістемелік нұсқау
Массивтер деп бiр атаумен берiлетiн бiрыңғай мәндер қабылдайтын реттелген шамалар тiзбегiн айтамыз. Массивтердi колданбастан бұрын, массив атын айнымалыны бейнелеу бөлiмiнде жазылуы керек.
Жалпы түрі:
A [бастапқы мән][соңғы мән]
Массив элементтерін енгізу
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
a[i][j]=StrToInt(StringGrid1->Cells[i][j]);
Есеп: A(N,M) массиві берілген. Ж.анама
диагоналден төмен орналасқан
элементтерді -1 мен ауыстыру.
Есепті шешуде қолданылатын компоненттер:
SpinEdit 1 , Edit 1 , Label 1 , Label 2 , Button 1 , Button2 , BitBtn 1 , StringGrid 1.
Программа мәтіні
#include
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
int i,j,i1,j1,n,a[10][10];
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CSpinEdit1Change(TObject *Sender)
{
n=StrToInt(CSpinEdit1->Text);
StringGrid1->ColCount=n;
StringGrid1->RowCount=n;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (i1==n) {i1=0; j1=j1+1;}
StringGrid1->Cells[i1][j1]=Edit2->Text;
i1=i1+1;
Edit2->SetFocus();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
a[i][j]=StrToInt(StringGrid1->Cells[i][j]);
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
if (i>n-1-j) a[i][j]=-1;
for(i=0;i<=n-1;i++)
for(j=0;j<=n-1;j++)
StringGrid1->Cells[i][j]=IntToStr(a[i][j]);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit2KeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key==13) Button1->SetFocus();
}
//---------------------------------------------------------------------------
Тапсырма варианттары
А(4х7) матрицасының ең үлкен элементінің координатасын (жол және бағана номері) анықтау программасын жазың.
Y (5х5) матрицасының әрбір баған элементтерінің қосындысын табыңдар.
В(10х6. массивінің барлық оң элементтерінің қосындысын табу программасын жазың.
В (8х8) матрицасының элементтерінің арифметикалық ортасын табу программасын жазыңдар.
квадрат матрицасының 1ші және 2ші бағанның орнын ауыстыру программасын жазыңдар. а=
матрицасының жеке оң және теріс элементтерінің қосындысын табу программасын жазыңдар. в=
А(4х4) өлшемді а= квадрат матрицасының шартты қанағаттандыратын элементтерін экранға шығару программасын жазың. в=1.2;
А={aij} 4х4 өлшемді квадрат матрица берілген.5А матрицасының элементтеріне сәйкес жол номеріне көбейткенде пайда болған жаңа d={dij}, матрицасын құрың. Яғни, dij=iaij
10ші ретті бірлік матрица құрыңдар.
Элементтері а1ij=i2/(j2+1), а2ij=j2/(i2+j2) формуласымен анықталатын, 5‐ші ретті А1 және А2 квадрат матрицасының элементтерінің арифметикалық ортасын табу программасын жазың.
Элементтері Сij=sini+cosi формуламен анықталған 10 ретті С матрицасының әрбір жолының ең үлкен элементінен тұратын, В векторын құру программасын жазың.
Элементтері Wi j = tg ( i + j2 ) формуламен анықталған 6‐шы ретті W матрицасының , әрбір жолының элементтерінің қосындысынан тұратын, V векторын құру программасын жазың.
Жоғары үшбұрыш элементтері 0‐ге, төменгі үшбұрыш элементтері 1‐ге, диагонал элементтері 2‐ге болатын 8‐ші ретті квадрат матрица құру программасын жазың.
Элементтері формуламен анықталған 6‐шы ретті А матрицаның 0‐ге тең элементтерінің, баған және жол номерлерін экранға шығару программасын жаз.
Элементтері формуламен анықталған NxN ретті А матрицасының транспондалған матрицасын табу программасын жаз.(матрицаны транспондау‐яғни, сәйкес жолдар және бағандардың орнын ауыстыру.
Элементтері формуласымен анықталған 8‐ші ретті Q матрицасының элементтер санын табу программасын жаз.
Элементтері формуласымен анықталған 8‐ретті М матрицасының 0 мен 5 аралығында жатқан элементтер санын экранға шығару программасын жаз.
Бас диагоналдан жоғары элементтері 0‐ге тең, ал қалған элементтері формуламен анықталған, үшбұрышты М матрицасын құру программасын жаз.
Элементтері формуласымен анықталған 5 ретті А квадрат матрицасының шартты қанағаттандыратын элементтерін экранға шығару программасын жаз.(b кез келген сан)
Р(5х5) матрицаның бас диагоналының астындағы оң элементтерінің қосындысын және олардың элементтер санын есептеу программасын жаз.
Бақылау сұрақтары
Күрделі циклдарды ұйымдастырудың негізгі ережелері
Ішкі циклдан шығудың әдістерін көрсет
Матрицаны экранға кәдімгі күйде шығарды қалай ұйымжастыруға болады?
Төменгі үшбұрышты матрицаны экранға қалай шығаруға болады?
Массивтерді сипаттау үшін қандай операторлар қолданады?
Блиц-тест
1. Форманы құру үшін қай әдіс қолданылады?
|
Show
|
Activate
|
Create
|
Close
| Hide |
2. C++ Builder-де форма модулінің кеңеймесін көрсетіңіз
|
*.res
|
*.cpp
|
*.dcu
|
*.dof
|
*.dfm
|
3. Программаны компиляциялау C++ Builder -де қалай орындалады?
|
Ctrl+F9 пернелер комбинациясын басу арқылы
|
F9 пернесін басу арқылы
|
Shift+F12 пернелер комбинациясын басу арқылы
|
F8 пернесін басу арқылы
|
F4 пернесін басу арқылы
|
4. Әдіс
|
инкапсуляция, полиморфизм, мұралау
|
компоненттің сыртқы түрі мен жұмысын анықтайтын атрибуттар.
|
объект, әдістер, қасиеттер
|
компонентпен байланысты болатын және объекттің бөлігі ретінде қарастырылатын функция болып табылады
|
класс, базалық класс, туынды класс
|
5. #include "Unit1.h" директивасының қызметі
|
hdrstop опциясы препроцессор жұмысының өзгешеліктерімен байланысты
|
берілген файлмен атымен аты сәйкес болатын *.dfm файлын формада қолдану қажеттігі
|
форма объектісін хабарлау
|
Unit1.h файлын іске қосады
|
инициализация пакеттерінің тізімін анықтайды.
|
Жұмысты орындауға тапсырмалар
1. Лекциялар, әдебиеттер, әдістемелік нұсқау бойынша теориялық материалды қайталау.
2. Бақылау сұрақтарына ауызша жауап беру.
3. Тапсырма вариантын таңдау және орындау
4. Есеп жазу
Есеп мазмұны
Жұмыстың тақырыбы және мақсаты.
Бақылау сұрақтарына жауап жазу.
Тапсырманың блок-схема, алгоритмі.
C++ Builder тілінде программасы
Әдебиеттер
1. Атымбаева Объектіге бағытталған программалау негіздері.Алматы, 2005 ж.
2. Програ ммирование в среде С ++ Builder. А. Вальвачев, Д. Сурков, К. Сурков.
Мин.1998г
3. С ++ Builder. С.В.Глушаков, В.Н. Зорянский, С.Н. Хоменко
4. С++ и информатика . Н.Культин, М. 2002г.4. 4 4
5. С ++ Builder книга рецептов. В. Ермолаев. Кудиц. – образ. 2006г.
6. Справочник по С ++ Builder. Учебное пособие. 2005г.
7. Разработка приложений в среде С ++ Builder 6 и решение задач информационно-радиационного профиля. Учебное пособие. А.И. Купчишин, Т.А. Шмыгалева.
Лабораториялық жұмыс № 11-12
Тақырыбы: С++ Builder ортасында жазбаларды өңдеу
Мақсаты: Стандартты компоненттерді қолданып программалау әдістерін, матрицаларды енгізу және шығару әдістерін меңгеру.
Материалдар және жабдықтар: ДК, C++ Builder программалау ортасы
Жұмыстың мазмұны және орындалу тәртібі:
Вариант бойынша тапсырманы алу
Есептің қойылымы
Есепті шешу алгоритмі
Есепті шешу программасын C++ Builder программалау ортасында құру
Программа листингі
6. Орындалған жұмыс жөнінде есеп беру
Әдістемелік нұсқау
Структура – бір атпен біріктірілген бір немесе бірнеше әр түрлі типті айнымалылар тобы. Структура struct қызметші сөзімен құрылады. Структураның жалпы құрылымы төмендегідей:
struct тег {
тип1 иден1;
тип2 иден2;
… …
типN иденN;
};
мұндағы тег мәліметтердің жаңа типі болып саналады және оны айнымалыны сипаттауда қолдануға болады.
Сипатталған структура негізінде айнымалы құру үшін
struct <тег> <айнымалы>
С++ тілінде struct қызметші сөзін көрсетпесе де болады:
<тег> <айнымалы>
Айнымалыны структураны құру кезінде де анықтауға болады:
struct тег {
тип1 иден1;
тип2 иден2;
… …
типN иденN;
} <айнымалы>;
Егер структура типті басқа айнымалылар құрылмайтын болса, структура тегін көрсетпеуге болады. Мұндай структура атаусыз (безымянный) деп аталады:
struct {
тип1 иден1;
тип2 иден2;
… …
типN иденN;
} <айнымалылар тізімі>;
Структуралар іштестірілген де болуы мүмкін:
struct тег1 {
тип1 иден1;
тип2 иден2;
тип3 иден3;
};
struct тег2 {
тип1 иден1;
тип2 иден2;
struct тег1 иден3;
};
Структура элементтерін нүкте операторының көмегімен алуға болады:
<айнымалы>.<элемент>
Кейбір жағдайларда структураны функция денесінде қолдану қажеттігі туындайды. Ондай жағдайда функция прототипінде структураны функция параметрі ретінде беру керек (С++ тілінде struct қызметші сөзін көрсету міндетті емес):
// С және С++ тілдерінде
<функция типі> <функция аты> (struct <тег> <айнымалы>)
// Тек қана С++ тілінде
<функция типі> <функция аты> (<тег> <айнымалы>)
Структуралар массиві. Структуралар массивін сипаттау структура типті айнымалыны сипаттауға ұқсас. Мысалы, struct <тег> <айнымалы-массив>
Структураларға көрсеткіш. Көрсеткіш келесі түрде сипатталуы мүмкін:
struct <тег> *<айнымалы>
Бұндай жағдайда структуралық айнымалының кез-келген элементін мына әдістердің бірімен алуға болады:
(*<айнымалы>).<элемент> немесе <айнымалы> –> <элемент>
Мысал: 9 адамнан тратын оқушылардың сабақ үлгерімін анықтайтын қосымша құру. Әрбір жазба фамилиясы, Аты-жөні, сонымен қатар физика, математика және шығармадан алған бағалардан тұрады. Орташа балл бойынша сұрыпталған тізімді шығару.
Формадағы компоненттердің орналасуы:
Рис. 6.1
#include
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
typedef struct {
AnsiString FIO;
int otc[3];
double srb;
} TStudent;
TStudent Stud[100],st;
int nzap=-1;
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FromCreate(TObject *Sender)
{
Edit1->Text=””;
Edit2->Text=””;
Edit3->Text=””;
Edit4->Text=””;
Memo1->Clear();}
void __fastcall TForm1::BitButton1Click(TObject *Sender)
{nzap++;
Stud[nzap].FIO=Edit1->Text;
Stud[nzap].otc[0]=StrToInt(Edit2->Text);
Stud[nzap].otc[1]=StrToInt(Edit3->Text);
Stud[nzap].otc[2]=StrToInt(Edit4->Text);
Stud[nzap].srb=( Stud[nzap].otc[0]+ Stud[nzap].otc[1]+ Stud[nzap].otc[2])/3.0;
Memo1->Lines->Add(Stud[nzap].FIO+””+IntToStr(Stud[nzap].otc[0])+””+ IntToStr(Stud[nzap].otc[1])+””+ IntToStr(Stud[nzap].otc[2]));
Edit1->Text=””;
Edit2->Text=””;
Edit3->Text=””;
Edit4->Text=””;
}
void __fastcall TForm1::BitButton2Click(TObject *Sender)
{
Memo1->Lines->Add(“Result”);
for(int i=0;i<=nzap-1;i++)
for(int j=i+1;j<=nzap-1;j++)
if (Stud[i].srb>Stud[j].srb)
{
St=Stud[i];
Stud[i]=Stud[j];
Stud[j]=st;}
for(int i=0;i<=nzap;i++)
if (Stud[i].srb>4.5)
Memo1->Lines->Add(Stud[i].FIO+””+IntToStr(Stud[i].otc[0])+””+ IntToStr(Stud[i].otc[1])+””+ IntToStr(Stud[i].otc[2]));
}
Тапсырма варианттары.
Тек қана "өте жақсы", "өте жақсы", " жақсы", тек қана " жақсы" және "қанағаттанарлық", тек қана "қанағаттанарлық" бағалары бар студенттердің тізімін шығару программасын құр.
Бір курс ішінен бірдей фамилиялалы адамдар оқитын группаны табу программасын құр.
Берілген мекемедегі фамилиялары "А" әрпінен басталатын жұмысшылар тізімін және олардың орташа айлық жалақысын шығаратын программа құр.
Етік магазинінің әмбебаб тізімі жазу түрінде берілген. Ең қымбат әйел адам етігін анықтаңыз, сонымен қатар ер адам етігінің әмбебаб аттары және олардың бағаларын шығаратын программа құрыңыз.
Телефон анықтамасын модельдейтін программа құрыңыз. Әйел адамдардың телефон нөмірлерін және үйінің адресстерін шығарыңыз.
Берілген жөндеу мекемесінде жөндеуден өткен машиналар тізімі жазу түрінде берілген. Қызыл түсті машиналардың нөмірлерін және маркасын табу программасын құрыңыздар.
Кейбір мекеменің жұмысшылары туралы мағлұмат жазу түрінде берілген. Экранға мамандығы және жасы көрсетілген ер адамдар тізімін шығаратын парограмма жазыңыз.
Атын, автор фамилиясын, шыққан жылын, бағасын және тиражын көрсетіп, кітаптар каталогын құрыңыздар. Экранға алфавит және тираж бойынша реттелген кітаптар тізімін шығаратын программа құр.
Теміржол кассасында келесі ақпараттар бар: поездар нөмірі, белгіленген станция, бар билет. Белгіленген станцияға 125 билет бар поезд нөмірін анықтайтын программа жазыңыз.
Өз группаңыздың тізімін алфавит және туған жылы бойынша реттеңіз. Жауапты жалпылама түрінде щығарыңыз.
Кітапханаға қарыз адамдар туралы ақпарат беретін программа құрыңыз. Олардың фамилиялары, адресстері және жұмыс орны. Қарызы бар қолданушы кітапхананың жалпы клиенттері тізімінде "қ" әрпі бойынша кездесуі керек.
Фамилиялары бас әрпі Б мен Л әріптері аралығында жатқан стомотология клиенттері тізімін шығартын программа жаз.
Осы оқу жылы бойы жалғыз төрт алған студенттің анкетасын шығаратын программа құрыңыз, тек егер қалған бағалары бес болса.
Группаның орташа балын тауып, экранға балы орташадан жоғары болатын студенттердің тізімін шығарыңыз.
Кейбір мекеменің жұмысшылары туралы мағлұматтар келесі түрде шығару керек: егер әйел адам болса, онда оның аты- жөнін және көзінің түсін, егер ер адам болса, онда оның аты- жөнін және темекіге көзқарасын шығарыңыз.
Бақылау сұрақтары
С/С++ тілінің қандай қосымша типтерін білесіңдер?
Структура дегеніміз не?
Тегі көрсетілмеген структура қалай аталады?
Структураны қандай түрде сипаттауға болады?
Біріктірудің структурадан айырмашылығы неде?
Жадыны үнемдеу кезінде нені қолданған тиімді? (структураны, әлде біріктіруді)
Блиц-тест
1. Return операторы
|
қайталану операторы
|
қайтып оралу операторы
|
бос оператор
|
меншіктеу операторы
|
үзіп тастау операторы
|
2. Ақпаратты жасыру принципіне сәйкес модуль мәтіні
|
интерфейстің бас (заголовочный) файлы, жүзеге асырушы файлы болып 2-ге бөлінеді
|
интерфейстің бас (заголовочный) файлы, жүзеге асырушы файлы, бас меню болып 3-ке бөлінеді
|
жүзеге асырушы файлы мен программадан тұрады
|
функцияны хабарлау мен сипаттаудан тұрады
|
объектілі бағытталған тәсіл кезінде қосымша өтіп жатқан оқиғалар мен олардың объектілеріне әрекетін анықтаудан тұрады
|
3. Инкапсуляция
|
класс айнымалаларын инициализациялауға және ждыдан орын бөлуге арналған айрықша функция болып табылады.
|
бұл туыстық объектілердің қасиеттері .
|
бір структурада мәліметтермен қатар оларды өңдеуге арналған функциялардың берілуі.
|
жаңа класты ескі класс түрінде құру механизмі
|
бұл айрықша функция, жойылатын объект алып тұрған динамикалық жадыны босату қызметін атқарады
|
4. Келесі программа орындалғаннан кейін экранға қандай мән шығады:
{ int x= 1, y;
y=1;
if (x<=0) if (x= =0) y=0; else y=-1;
Edit1->Text=FloatToStr(y); }
|
x=1 y=1
|
y=-1
|
y=0
|
y=1
|
x=-1 y=-1
|
5. Protected-бұл
|
кластың экземпляры
|
кластың қорғалған бөлігі
|
кластың қасиеттері мен әдістері
|
кластың ашық бөлігі
|
кластың тасаланған бөлігі
| Жұмысты орындауға тапсырмалар
1. Лекциялар, әдебиеттер, әдістемелік нұсқау бойынша теориялық материалды қайталау.
2. Бақылау сұрақтарына ауызша жауап беру.
3. Тапсырма вариантын таңдау және орындау
4. Есеп жазу
Есеп мазмұны
Жұмыстың тақырыбы және мақсаты.
Бақылау сұрақтарына жауап жазу.
Тапсырманың блок-схема, алгоритмі.
C++ Builder тілінде программасы
Әдебиеттер
1. Атымбаева Объектіге бағытталған программалау негіздері.Алматы, 2005 ж.
2. Програ ммирование в среде С ++ Builder. А. Вальвачев, Д. Сурков, К. Сурков.
Мин.1998г
3. С ++ Builder. С.В.Глушаков, В.Н. Зорянский, С.Н. Хоменко
4. С++ и информатика . Н.Культин, М. 2002г.4. 4 4
5. С ++ Builder книга рецептов. В. Ермолаев. Кудиц. – образ. 2006г.
6. Справочник по С ++ Builder. Учебное пособие. 2005г.
7. Разработка приложений в среде С ++ Builder 6 и решение задач информационно-радиационного профиля. Учебное пособие. А.И. Купчишин, Т.А. Шмыгалева.
Лабораториялық жұмыс № 13-14
Тақырыбы:С++ Builder ортасында файлдармен жұмыс жасау алгоритмдері
Жұмыс мақсаты: файлдық мәліметтер структурасын программалау және алгоритмдеуді үйрену; файл структурасын проектілеу; файлға мәліметтерді енгізу; файлдан мәліметтерді оқу.
Материалдар және жабдықтар: ДК, C++ Builder программалау ортасы
Жұмыстың мазмұны және орындалу тәртібі:
Оқып білу:
Файлдық мәліметтер структурасымен байланысты негізгі терминологияны;
Файлдарды өңдеуде программалау тілінің мүмкіндіктері.
Берілген тапсырма бойынша алгоритм құру.
Есептің программасын құру.
Программаның және негізгі мәліметтердің тексттік варианттарын жасау.
Әдістемелік нұсқау
Дискідегі файлмен жұмыс жасау потокқа көрсеткішті хабарлаудан басталады. Мұндай хабарлаудың форматы мынадай болады:
FILE *көрсеткіш аты
Мысал: FILE*fp;
Файл сөзі структуралық тектің стандарттық аты. Ол тақырып файлында хабарлануы болады, FILE структурасында потоктың ағымдағы орнының буфердегі көрсеткіші жєне көрсеткіш аќпараты болады. Келесі қадам потокты ашу болып табылады.. Ол стандартты функция fopen() арқылы ашылады.
Бұл функция поток көрсеткішіне дәл мән береді және оның мәні алдын-ала хабарланѓан көрсеткішке меншіктеледі.
Көрсеткіш аты=fopen (файл аты, ашу режимі).
Fopen функциясының параметрі символдық массивтің көрсеткіштері немесе т±раќтылар болуы мүмкін.
Fp=fopen (“star.dat,” ”r”)
star.dat- ағымдағы каталогтағы файылдың аты. “r” pежим параметрі - бұл файлдың оқу үшін ашылғанын көрсетеді.
Потокты ашу параметрі мен режимдері
Параметрлер:
R - оқу үшін ашу.
W - жазу үшін құру.
A - қосымша жазбалар қосу үшін ашу.
R+ - оқу және жазу үшін ашу.
W+ - оқу және жазу үшін құру.
а+ -қосу үшін ашу немесе оқу және қосу үшін құру.
Поток – текстік немесе екілік жүйедегі, алмасу режимі үшін ашылуы мүмкін.
Текстік файл - символдар тізбегі болып табылады. Ол арнайы код арќылы жазу қатарына бµлінеді. (код13) каретканы жылжыту және (код10) қатарды келесі жолға көшіреді. Егер файл текстік режимде ашылған болса, онда бұл файлдан оқығанда "каретканы жылжыту, келесі жолға көшіру" комбинациялары \n-жолға көшу символына түрленеді. Файлға жазу кезінде керісінше түрлендіру ж‰ргізіледі..
Екілік жүйедегі файлмен жұмыс істегенде ешқандай түрлендірулер болмайды. Аќпарат үздіксіз тасымалданады. Егер екілік жүйедегі файлды көрсету керек болса, онда жоғарғы параметрге в әрпі қосылады: (r+b, a+b, w+b,). Кейбір компиляторларда текстік режим t әрпімен белгіленеді, яѓни, a+t, rt деп жазылады.. Егер потокты ашуда қателескен болсаќ, fopen ( ) функциясы NULL мәнін қабылдайды. Бұл константа мәні файлында анықталады. Қате - ашылатын файлдың дискіде жоқ болуына байланысты немесе динамикалық жадыда орын болмауына байланысты шыѓуы м‰мкін. Сондықтан, былай ашқан дұрыс:
FILE *fp;
If (fp=fopen(“test.dat”,”r”)==NULL)
{puts(“файлды аша алмаймын\n”);}
return;
}
Қате шыққан жағдайда программа бұрын ашылған барлық файлдарды жауып барып, тоқтатылады. Потокты (файлды) жабуды fclose() функциясы орындайды.
int fclose(FILE*fpfr)
fpfr- жабылатын потоктағы көрсеткіштің форматының аты. Егер операцияны жабу дұрыс орындалатын болса, функция – NULL-ді қабылдайды.
Тапсырманы орындау үлгісі
Мысал: Студенттердің рейтингінен құралған ақпарат сақталған файлды өңдеу программасын құру. Әрбір өріс Ф.А.ӘА., және рейтинг баллдарын тұрады.Рейтингтің өсу реті бойынша сұрыпталған ақпаратты шығару қажет. Программаның орындалу нәтижесін текстік файлға жазу. Файлмен жұмыс жасаған кезде келесі әрекеттер орындалу қажет: құру, қарау, жаңа жазбаны қосу, сұрыптау, нәтижені сақтау
Қосымша құру OpenDialog және SaveDialog компоненттерін баптау
Dialogs бетінен , компонеттерді таңдау ( OpenDialog және SaveDialogҚ
Қажетті файды таңдау үшін фильтрді орнату: ол үшін компонентті таңдап, объектілер инспекторындағы Filte қасиетінде тышқанның оң жағын екі рет шерту қажет, шыққан Filter Editor диалогтық терезенің сол жағына таңдау мүмкіндігін беретін мәтінді, ал оң жағына –маска жазу керек. OpenDialog1 үшін маска мәнін, *.dat деп қою қажет. 1 суреттегідей болу керек.
1-сурет
Файл dat кеңеймесімен автоматты түрде жазылу үшін , DefaultExt қасиетіне – .dat жазу керек.
Тап осылайша кеңеймесі .txt болатын мәтіндік файл үшін SaveDialog1 бапталады.
Программамен жұмыс
Форма 2-суреттегідей етіп құрастырылады.
Edit1, Edit2, Button1-Button6, Memo1, OpenDialog1, SaveDialog1
.2-сурет
Программа мәтіні
. . .
#include
#include
. . .
//---------------------------------------------------------------------------
struct TZap{
char FIO[30];
double s_b;
} Zap;
int size = sizeof(TZap);
FILE *Fz;
AnsiString File_Zap;
void Out(TZap, TMemo*);
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text=""; Edit2->Text="";
Memo1->Clear();
}
//------------------ Құру----------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
OpenDialog1->Title="Жаңа файл құру";
if (OpenDialog1->Execute()){
File_Zap = OpenDialog1->FileName;
if ((Fz=fopen(File_Zap.c_str(),"wb"))==NULL) {
ShowMessage(" ФАЙЛды құру қате!");
return;
}
}
Memo1->Lines->Add("Жаңа файлды құрдық: "+AnsiString(File_Zap));
fclose(Fz);
}
//----------------- Қосу-----------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Fz = fopen(File_Zap.c_str(),"ab");
strcpy(Zap.FIO, Edit1 -> Text.c_str());
Zap.s_b = StrToFloat(Edit2->Text);
Out(Zap, Memo1);
fwrite(&Zap, size, 1, Fz);
Edit1->Text=""; Edit2->Text="";
fclose(Fz);
}
//--------------------- Сұрыптау --------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TZap st, *mas_Z;
Fz = fopen(File_Zap.c_str(),"rb");
int D_f = fileno(Fz); // Файл дескрипторын табу
int len = filelength(D_f); // файл өлшемін табу
int i, j, kol;
kol = len/size; //файлдағы жаазба саны
mas_Z = new TZap[kol];
// Файлдағы жазбаны динамикалық массивке жүктеу
for (i=0; i < kol; i++)
fread((mas_Z+i), size, 1, Fz);
fclose(Fz);
Memo1->Lines->Add("Сұрыптау жөнінде мәлімет");
for (i=0; i < kol-1; i++)
for (j=i+1; j < kol; j++)
if (mas_Z[i].s_b > mas_Z[j].s_b) {
st = mas_Z[i];
mas_Z[i] = mas_Z[j];
mas_Z[j] = st;
}
for (i=0; i
Out(mas_Z[i], Memo1);
delete []mas_Z;
}
//------------------- Сақтау --------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
SaveDialog1->Title="Нәтиже файлын сақтау";
if (SaveDialog1->Execute()) {
AnsiString FileNameRez = SaveDialog1->FileName;
Memo1->Lines->SaveToFile(FileNameRez);
}
}
//-------------------- Ашу ----------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
OpenDialog1->Title=" файлды ашу";
if (OpenDialog1->Execute()) {
File_Zap = OpenDialog1->FileName;
if ((Fz=fopen(File_Zap.c_str(),"rb"))==NULL) {
ShowMessage("ФАЙЛды ашу қате!");
return;
}
}
Memo1->Lines->Add("--------- Барлық мағлұмат ---------");
while(1){
if(!fread(&Zap,size,1,Fz)) break;
Out(Zap, Memo1);
}
fclose(Fz);
}
//----------------- Memoны тазарту -------------------------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
Memo1->Clear();
}
//----------------- Бір жазбаны шығару функциясы -----------------------
void Out(TZap z, TMemo *Memo1)
{
Memo1->Lines->Add(AnsiString(z.FIO)+ " "+FloatToStrF(z.s_b, ffFixed,6,3));
}
Тапсырма варианттары.
Өзіңіздің қалаңыздағы магазиндер туралы файл құрыңыз: магазин аты (әмбебаб, азық-түлік, маталар, т.б.).
А). Цех жинаушысының бір жетілік жинаған заттар саны туралы мағлұмат беретін файл құрыңыз. Әрбір жазу келесі өрістерден тұрады: жинаушы фамилиясы, алтыкүндік апта бойы күндік жинаған заттар саны.
Б). Жинаушының фамилиясын және оның бір апта бойғы жинаған заттары санын анықтайтын программа құрыңыз.
А). Жұмысшылардың бір айлық А, Б, В категориялы заттарды жинау саны туралы мағлұмат беретін файл құр. Жазу структурасы келесідегідей өрістерден тұрады: жинаушы фамилиясы, цех аттары, категориялар бойынша жұмысшылардың бір айдағы жинаған заттар саны.
Б). А, Б, С категориялы заттарды жинау саны жалақымен сәйкес келетін болса, онда Х.. жұмысшысының жалақысын есептеңіз.
Аттар тізімі жазылған «NAME» файлын құрастырыңыз. Құрылған файл бойынша экранға көрсетілген әріптен бастап аттар тізімін шығарыңыз.
А). Телефон абоненттері туралы мағлұмат беретін файл құрыңыз. Жазу структурасының өрістері келесідей: абонент фамилиясы, телефонның қондырылған жылығ, телефон нөмірі.
Б). ХХХХ жылы қондырылған телефондар санын анықтайтын программа құрыңыз.
Телефон нөмірі терминалдан енгізіледі.
А). Студенттердің сессияны тапсыруы туралы мағлұматтар беретін файл құрыңыз. Жазу структурасы: группа индиксі, студент фамилиясы, үш экзамен бағасы. Жазу саны N.
Б). Студенттердің сессияға өту программасын құр. Үздіктер жоғарғы степендия алады, жақсы оқушылар жай степендия алады. Қалғандарына степендия берілмейді.
Автомобильдер туралы мағлұмат беретін «CAR» файлын құр: фамилия, маркасы, түсі. Экранға құрылған файл арқылы «Жигулиі» бар адамдар фамилияларын және машина түсін шығар.
А). Кітапшының жеке кітапханасы туралы мағлұмат беретін файл құрыңыз.
Жазу структурасы: кітап шифры, авторы, шыққан жылы.
Б). Келесі аұпараттарды алыңыз: Х автордың кітаптары тізімін, ХХ жылғы шыққан кітаптар тізімі. Автор фамилиясы және шыққан жылы клавиатурадан енгізіледі.
9. Сіздің өзіңіздің кітапханаңыздағы программалауға байланысты кітаптар туралы мағлұмат беретін файл құрыңыз (автор фамилиясы және жөні, кітап аты, басылым аты, шыққан жылы). Құрылған файлды қолданып, «Мир» басылымынан шыққан кітаптар аттары және олардың авторларының фамилиялары.
F символдық файл берілген. Осы файл компоненттерін G файлына леп белгілерді нүктелермен алмастырып көшіріп жазыңыз.
А). «Динамо» және «Спартак» командаларының он ең үздік ойыншылары туралы мағлұмат беретін файл құрыңыз: аттары, олардың салған голдарының саны.
Б). Осы командалардың ішіндегі ең көп. очколы ойыншыны анықтаңыз.
12. Шаңғышылар жарысының протоколын «SKI» файлына жазыңыз. Әрбір ойыншы үшін фамилия, старт уақыты (сағат, минут, сикунд), финиш уақыты. Құрылған файл арқылы ГТО нормасын орындаған адамдар фамилияларын шығарыңыз.
Ауыр атлетика бойынша соревнования екі жаттығу бойынша өтеді (рывок және толчок). Соревнованияға 20 спортсмен қатысады. Соревнавания протоколын қатысушылар фамилиясы және олардың екі жаттығу бойынша кезекпен файлға сақтау қажет. Ары қарай жеңімпазды қорытындылардың қосындысы арқылы анықтаңдар.
А). Фирманың жұмысшылары туралы мағлұмат беретін файл құрыңыз. Жазу структурасы: фамилия, бөлімі, жасы, жұмыс стажы.
Б). Экранға жұмысшылардың стажы арқылы реттеп шығар.
Шахматтық турнирде 10 адам қатысады. Қатысушылар фамилиялары және қорытындылар ( матрица түрінде) туралы файл құрыңыз: жеңіс-1, итжығыс-0.5, жеңіліс-0 очко. Файлды пайдаланып, алған орындарға байланысты қатысушылардың фамилияларын және очколарын шығарыңыз.
Глоссарий
Дискідегі файлмен жұмыс жасау потокқа көрсеткішті хабарлаудан басталады. Мұндай хабарлаудың форматы мынадай болады:
FILE *көрсеткіш аты
Мысал: FILE*fp;
Файл сөзі структуралық тектің стандарттық аты. Ол тақырып файлында хабарлануы болады, FILE структурасында потоктың ағымдағы орнының буфердегі көрсеткіші жєне көрсеткіш аќпараты болады. Келесі қадам потокты ашу болып табылады.. Ол стандартты функция fopen() арқылы ашылады.
Бақылау сұрақтары.
Файл, структура терминдерін түсіндіріңіз.
Файлға мәліметтер қандай операторлар арқылы жазылатынын көрсетіңіз.
Мәліметтер файлының соңын қалай білуге болады. Дискіде файлды қалай тануға болады.
Блиц-тест
1. Кластар қасиеттерін мұралауда және иерархиялық құрылымда ұйымдастырылады. Туынды класс аталымды кластың атрибуттарын мұралайды. Бұл қандай принцип?
|
бұл полиморфизм принципі
|
бұл мұралау принципі
|
бұл инкапсуляциялау принципі
|
бұл жалпы принцип
|
бұл дара принцип
|
2. Scroll Box компоненті
|
жазбалы және пиктограммалы командалық батырма құрады
|
көлемді формадағы сызықтар мен рамкаларды құрады.
|
тез шақырылатын графикалық батырманы құрады
|
арнайы форматтағы мәліметтерді енгізуді редакциялайтын облыс құрады
|
қажет жағдайда айналдыру жолағына контейнер құрады
|
3. Group Box компоненті
|
қажет жағдайда айналдыру жолағына контейнер құрады.
|
теру форманың тізімді немесе мәндер диапазонын қарау үшін айналдыру жолағын құрады.
|
инструменттер панелін немесе күй жолағын құрады
|
қайсыбір компоненттің формада логикалық байланысты тобын біріктіретін контейнер құрады
|
көлемді формадағы сызықтар мен рамкаларды құрады.
|
4. ListBox компонентінің ItemIndex қасиет
|
тізімнің қандай элементтері белгіленгендігін анықтайтын индекстік массив.
|
компонент терезесіне тізім толық бейнеленбеген болса, бағандар санын анықтайды.
|
тізімдегі жолдардың санын анықтайды.
|
тізімдегі жолдар автоматты түрде алфавит бойынша сұрыпталатындығын көрсетеді
|
тізімде белгіленген элементтің реттік номерін көрсетеді
|
5. Таңдау операторының форматы
|
Switch (өрнек)
{case константа1: оператор-1; break;// міндетті емес
default: оператор;// міндетті емес }
|
if (шарт) оператор-1; else оператор-2;
|
for (өрнек 1; өрнек 2; өрнек 3) цикл денесі
|
while (өрнек) цикл денесі:
|
Do оператор while (шарт)
|
Жұмысты орындауға тапсырмалар
1. Лекциялар, әдебиеттер, әдістемелік нұсқау бойынша теориялық материалды қайталау.
2. Бақылау сұрақтарына ауызша жауап беру.
3. Тапсырма вариантын таңдау және орындау
4. Есеп жазу
Есеп мазмұны
Жұмыстың тақырыбы және мақсаты.
Бақылау сұрақтарына жауап жазу.
Тапсырманың блок-схема, алгоритмі.
C++ Builder тілінде программасы
Әдебиеттер
1. Атымбаева Объектіге бағытталған программалау негіздері.Алматы, 2005 ж.
2. Програ ммирование в среде С ++ Builder. А. Вальвачев, Д. Сурков, К. Сурков.
Мин.1998г
3. С ++ Builder. С.В.Глушаков, В.Н. Зорянский, С.Н. Хоменко
4. С++ и информатика . Н.Культин, М. 2002г.4. 4 4
5. С ++ Builder книга рецептов. В. Ермолаев. Кудиц. – образ. 2006г.
6. Справочник по С ++ Builder. Учебное пособие. 2005г.
7. Разработка приложений в среде С ++ Builder 6 и решение задач информационно-радиационного профиля. Учебное пособие. А.И. Купчишин, Т.А. Шмыгалева.
Лабораториялық жұмыс № 15-16
Тақырыбы: C++ Builder ортасында мәліметтер қорымен жұмыс . Жазбаларды сұрыптау , фильтрациялау
Мақсаты: DataBaseDescktop программасын қолданып МҚ құру әдістерін, BDE Aministrator көмегімен псевдоним құру негіздерін меңгеру.
Материалдар және жабдықтар: ДК, C++ Builder программалау ортасы
Жұмыстың мазмұны және орындалу тәртібі:
Вариант бойынша тапсырманы алу
Есептің қойылымы
Есепті шешу алгоритмі
Есепті шешу программасын C++ Builder программалау ортасында құру
Программа листингі
Орындалған жұмыс жөнінде есеп беру
Әдістемелік нұсқау
DatabaseDesktop программасын жүктеп, құрылымы төмендегідей болатын dan.db кестесін құрыңыз.
Өрістің аты
|
Типі
|
Өлшемі
|
Кілттік өріс
|
Қызметі
|
Kod
|
N
|
|
*
|
Бағыныңқы кестемен байланыстыратын код
|
Fio
|
A
|
15
|
|
Абоненттің фамилиясы
|
Adres
|
A
|
20
|
|
Абоненттің адресі
|
Nomer_tel
|
A
|
8
|
|
Абоненттің телефон номері
|
File->New->Table командаларын таңдаңыз.
Жоғарыдағы кесте бойынша сәйкесінше өрістерді енгізіңіз.
Кестені С:\ATS\Table бумасына сақтаңыз.
Псевдоним құру үшін BDEAdministrator программасын жүктеңіз.
Object->New командаларын таңдаңыз. Пайда болған New database alias ОК батырмасын шертіңіз.
Standard1 атын өшіріп тастап, psev_ats атын беріңіз.
Path жолына С:\ATS\Table жолын көрсетіңіз де, программаны жауып тастаңыз.
C++ Builder программасын жүктеңіз.
Формаға BDE бетінен Table, DataAccess бетінен DataSource, DataControls бетінен DBGrid компоненттерін орналастырыңыз.
Table-МҚ-ымен байланыстырады.
DataSource(мәліметтер көзі)-визуальды емес компонентпен(біздің жағдайымызда Table) визуальды компонентті(DBGrid) байланыстыру қызметін атқарады.
DBGrid-мқ-ын кесте түрінде көрсету қызметін атқарады.
Форманың түрі:
Object Inspector терезесінде компоненттердің төмендегі қасиеттеріне сәйкесінше мәндерін орналастырыңыз:
Компоненттің аты
|
Қасиеті
|
Мәні
|
DataSource
|
Dataset
|
Table1
|
DBGrid
|
DataSource
|
DataSource1
|
Table
|
DatabaseName (МҚ-ның псевдонимі)
|
Psev_ats
|
TableName(кестенің аты)
|
Dan.db
|
Active
|
true
|
а) Кестеге мәліметтерді енгізу үшін Insert пернесін , мәліметтерді өшіру үшін Ctrl+Del пернесін пайдалануға болады.
ә) Кестеге мәліметтерді енгізу үшін DBNavigator компонентін қолданамыз.
Формаға DBNavigator компонентін орналастырыңыз.
DBNavigator компонентінің DataSource қасиетіне DataSource1 мәнін меншіктеңіз.
DBNavigator компонентіне сипаттама:
1 2 3 4 5 6 7 8 9 10
Номер
|
Белгіленуі
|
Қызметі
|
1
|
Nbfirst
|
Бірінші жазбаға бару
|
2
|
NbPrior
|
Алдыңғы жазбаға бару
|
3
|
NbNext
|
Келесі жазбаға бару
|
4
|
NbLast
|
Соңғы жазбаға бару
|
5
|
NbInsert
|
Жаңа жазбаны енгізу
|
6
|
NbDelete
|
Ағымдағы жазбаны өшіру
|
7
|
NbEdit
|
Ағымдағы жазбаны редактрлеу
|
8
|
NbPost
|
Өзгертілген жазбаның нәтижесін сақтау
|
9
|
NbCancel
|
Ағымдағы жазбаның өзгерісін болдырмау
|
10
|
NbRefresh
|
МҚ-ындағы ақпаратты
|
3.DBNavigator компонентінің сәйкесінше батырмаларын пайдалана отырып, кестедегі мәліметтермен жұмыс істеуге болады.
4.Форма мен қосымшаны С:\ATS\Proekt сақтаңыз(форма аты-vvod_un.pas, проет аты-ats_pr.dpr).
5. Қосымшаны орындауға жіберіп, кестеге мәліметтерді енгізіңіз.
Өз бетімен орындауға арналған тапсырмалардың нұсқалары:
Топтағы әрбір студент сәйкесінше жоғарыда көрсетілген үлгі бойынша төмендегі кестелермен жұмыс жасауы керек. (Келесі лабораториялық жұмыстыардың барлығында да осы кестелермен жұмыс жасалады.)
Кітапхананың оқырмандары туралы мәліметтер белгілі: фамилиясы, мекен-жайы, жұмыс орны, кітапты алған уақыты, кітапты тапсыру уақыты. Кітапханаға қарыз оқырмандардың фамилиясын, мекен-жайын және жұмыс орнын көрсету.
Тіс дәрігеріне келушілердің тізімінен фамилиясының бас әрпі "Б"-дан "Л"-ға дейінгі аралықта жатқан адамдардың жасы мен диагнозын шығару программасын құрыңыз.
Темір жол кассасында төмендегідей мәліметтер белгілі: поездың номері, баратын жері, кету уақыты, бос орындар саны. Астана қаласына баратын поездың номері мен кету уақытын шығару, егер поезда бос орын болса.
Музыка мектебінің скрипкада ойнайтын оқушыларының тізімін шығару. Олардың музыкамен неше жыл айналысатындығын және конкурстарға қатысқан-қатыспағандығын көрсету.
Оқушылар туралы келесі мәліметтер берілген: аты-жөні, бойы. Кластағы ең ұзын және ең қысқа оқушыны, сонымен қатар неше оқушының баскетболға қатысатындығын анықтау, егер баскетболисттің бойы 170 см.-ден артық болуы керек болса.
Автомобильдер туралы мәлімет берілген: автомобиль иесінің аты-жөні, автомобиль бағасы, маркасы және номері. Автомобильдер туралы мәліметті бағасының өсу реті бойынша баспаға шығару қажет.
Фирма қызметкерлері туралы мәлімет берілген: қызметкердің аты-жөні, туған жылы, адресі, телефон номері. Жасы қызметкерлердің орташа жасынан аспайтын қызметкерлер туралы мәліметті баспаға шығар.
Экспортқа шығарылатын тауарлар туралы мәлімет берілген: тауардың аты, тауарды импортқа шығаратын елдің аты және әкелінетін партияның көлемі. Берілген тауардың қай елге экспортқа шығарылатындығын және оның жалпы көлемін тап.
Тұрғындар санағының нәтижелері берілген болсын. 1990 ж. кейін туылған тұрғындардың фамилиясын, атын және жалпы санын анықтайтын программа құрыңыз.
Дәріханадағы дәрілер туралы келесі мәліметтер белгілі болсын: дәрілік препараттың аты, бағасы, саны, сақтау мерзімі. Дәріханадағы барлық дәрілердің санын, қанша тұратынын және сақтау мерзімі 3 айдан артық препараттарды анықтау программасын құрыңыз.
Қысқы сессия нәтижесі бойынша ешбір сабақтан “үштік” баға алмаған студенттердің фамилиясын, тобын және орта балын анықтау.
Кітаптар туралы мәліметтер белгілі: авторы, кітаптың аты және шыққан жылы. Берілген автордың 1960ж бастап шыққан кітаптарының атын анықтау.
Ойыншықтың аты, құны және қанша жастағы балаға арналғандығы белгілі. 6 жастағы балаларға арналған қуыршақтың құнын анықтау.
Автосалондағы автомобильдер туралы мәліметтер: автомобильдің моделі, шыққан жылы, түсі және бағасы. Қызыл түсті Toyoto Camri автомобилінің бағасы мен шыққан жылын анықтау.
Туристік фирма туралы төмендегідей мәліметтер берілген: фирманың аты, құрылған жылы, мекен-жайы, телефоны, спецификасы, яғни қай елдерге баруға болатындығы және жолдама (путевка) құны. Европа елдеріне баруды ұйымдастыратын барлық туристік фирмалардың мәліметтерін экранға шығару.
Лабораториялық жұмыстың орындалуы туралы есебінің формасы:
Есепте мына әдістемелік материалдар болуы керек:
*.db кестесі;
Ол кестенің STANDARD типті псевдонимі.
Delphi ортасында құрылған қосымшасы;
Қосымшаны орындауға жібергенде, ондағы кестеге әрекеттер жасалуы керек.
Блиц-тест
DatabaseDesкtop ортасында құрылатын кестелердің кеңеймесін көрсетіңіз.
а) mdb
б) exe
в) bd
г) db
в) com
C++ Builder ортасында мәліметтер қорын кесте түрінде көрсету қызметін атқаратын компонент
а) table
б) DBGrid
в) DataSource
г) DBNavigator
д) Form
C++ Builder ортасында кестеге мәліметтерді енгізу үшін қолданылатын компонент
а) table
б) DBGrid
в) DataSource
г) DBNavigator
д) Form
Бақылау сұрақтары
DatabaseDesctop программасы не үшін қолданылады?
BDE Administrator программасының қызметі.
Кесте құру кезінде не үшін кілттік өріс береміз?
Реляциялық мәліметтер қоры дегеніміз не?
Жұмысты орындауға тапсырмалар
1. Лекциялар, әдебиеттер, әдістемелік нұсқау бойынша теориялық материалды қайталау.
2. Бақылау сұрақтарына ауызша жауап беру.
3. Тапсырма вариантын таңдау және орындау
4. Есеп жазу
Есеп мазмұны
Жұмыстың тақырыбы және мақсаты.
Бақылау сұрақтарына жауап жазу.
Тапсырманың блок-схема, алгоритмі.
C++ Builder тілінде программасы
Әдебиеттер
1. Атымбаева Объектіге бағытталған программалау негіздері.Алматы, 2005 ж.
2. Програ ммирование в среде С ++ Builder. А. Вальвачев, Д. Сурков, К. Сурков.
Мин.1998г
3. С ++ Builder. С.В.Глушаков, В.Н. Зорянский, С.Н. Хоменко
4. С++ и информатика . Н.Культин, М. 2002г.4. 4 4
5. С ++ Builder книга рецептов. В. Ермолаев. Кудиц. – образ. 2006г.
6. Справочник по С ++ Builder. Учебное пособие. 2005г.
7. Разработка приложений в среде С ++ Builder 6 и решение задач информационно-радиационного профиля. Учебное пособие. А.И. Купчишин, Т.А. Шмыгалева.
Лабораториялық жұмыс № 17-18
Тақырыбы: С++ Builder ортасында функциялармен жұмыс жасау алгоритмдері
Мақсаты: функцияны өңдеуге берілген есептерді программалау негіздерін меңгеру.
Материалдар және жабдықтар: ДК, C++ Builder программалау ортасы
Жұмыстың мазмұны және орындалу тәртібі:
Вариант бойынша тапсырманы алу
Есептің қойылымы
Есепті шешу алгоритмі
Есепті шешу программасын C++ Builder программалау ортасында құру
Программа листингі
Орындалған жұмыс жөнінде есеп беру
Әдістемелік нұсқау
Функция – бұл аяқталған әрекетті орындайтын операторлар тобы. Олар программаны жеке блоктарға немесе модульдерге бөліп, басқаруға мүмкіндік береді. Бұл программа құрылымын жеңілдетеді. Функцияны қолдану үшін оның қалай жұмыс жасайтынын білу міндетті емес, тек қалай шақыру керектігін білу жеткілікті. Функция программада тек бір рет қана жазылып, бірнеше рет шақырылуы мүмкін. С/С++ тілінің негізгі программалық кодын осы функциялар құрайды. Бұл тілдердегі кез келген программада ең кемінде бір функция - main () функциясы болады. Ол программаның аяқталу кодын қайтарады.
Әрбір функцияның прототипі, яғни алдын ала хабарланған функция тақырыбы болуы керек. Тақырыбында функция аты, қайтарылатын нәтиже типі, сонымен қатар қанша және қандай типті аргументтер берілу керектігі көрсетіледі. Функцияның жалпы сипатталу синтаксисі төмендегідей:
нәтиже_типі функция_аты (аргумент_типі аргумент_аты,… )
{ .
.
функция денесі
.
.
}
Мұндағы:
нәтиже_типі –функцияның қайтаратын мәнінің типі;
функция_аты – функцияның аты;
аргумент_типі – фукцияда қолданылатын формальді аргумент типі;
аргумент_аты- фукцияда қолданылатын формальді аргумент аты.
Функция туралы сөз болғанды екі түрлі аргумент, біріншісі – нақты аргумент, екіншісі –формальді аргумент туралы айтылады. Нақты аргумент функцияны шақырған уақытта беріледі, ал формальді аргумент функция сипаттамасында ғана қолданылады.
Формальді аргументтер әр түрлі типті болуы мүмкін:void, char, int, float, double және массив. void типі функцияда формальді аргументтер көрсетілмеген уақытта қолданылады.
Функция нітижесінде void, bool, int, long, float, double типті айнымалылар қайтаруы мүмкін. Функция ешқандай мәлімет қайтармайтын болса, void типімен сипатталады.
Мысал: таңдалған функция мәнін есептейтін программа құру, олардың түрі (Out_Rez) шығару функциясының параметрі ретінде беріледі.
Қосымша құру
Форманың сыртқы түрі 1 суреттегідей, ал программа листингі төмендегідей:
. . .
#include "math.h"
//------------ Көрсеткіштер типін функцияға жүктеу -------------------------
typedef double (*TFun)(double);
//------------Функция прототиптерін қолданушыға жүктеу ---------------
double fun1(double);
double fun2(double);
void Out_Rez(TFun, double, double, double, TMemo*);
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="0,1"; Edit2->Text="3"; Edit3->Text="0,3";
Memo1->Clear(); Memo2->Clear();
RadioGroup1->ItemIndex=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a, b, h;
a = StrToFloat(Edit1->Text);
b = StrToFloat(Edit2->Text);
h = StrToFloat(Edit3->Text);
switch(RadioGroup1->ItemIndex) {
case 0: Out_Rez (fun1,a,b,h,Memo1); break;
case 1: Out_Rez (fun2,a,b,h,Memo2); break }}
1-сурет
//---------- қолданушы функциясын жүзеге асыру---------------------------------
double fun1( double r){
return 2*exp(r*r);
}
double fun2(double r) {
return pow(sin(r), 2);
}
void Out_Rez (TFun f,double xn,double xk,double h,TMemo *mem) {
for(double x=xn; x<=xk; x+=h)
mem->Lines->Add(" x = "+FloatToStrF(x,ffFixed,8,2)+
" y = "+FloatToStrF(f(x),ffFixed,8,4));
}
Консольдық программа құру
Программа мәтіні келесідей болады:
. . .
typedef double (*TFun)(double); // Көрсеткіштер типін функцияға жүктеу
double fun1(double); // Функция прототиптерін қолданушыға жүктеу
double fun2(double);
void Out_Rez (TFun,double,double,double);
void main()
{
double a, b, h;
puts("Input a,b,h"); scanf("%lf%lf%lf", &a, &b, &h);
puts("\n\t Function - 2*exp(x)"); Out_Rez (fun1,a,b,h);
puts("\n\t Function - sin(x)*sin(x)"); Out_Rez (fun2,a,b,h);
puts("\n Press any key ... ");
getch();
}
//---------- қолданушы функциясын жүзеге асыру ---------------------------------
double fun1( double r){
return 2*exp(r*r);
}
double fun2(double r) {
return pow(sin(r), 2);
}
void Out_Rez (TFun f,double xn,double xk,double h) {
for(double x=xn; x<=xk; x+=h)
printf(" x = %5.2lf, y = %8.4lf\n",x,f(x));
Өзіндік жұмысқа тапсырмалар варианттары :
1. Төмендегі есептерді функцияны пайдаланып шешіњдер:
Цилинддр көлемін есептейтін функцияны жаз . Функция параметрлері ретінде цилиндрдің радиусы және биіктігі алынады .
Үлес (вклад ) бойынша кірісті (доход) есептейтін Dohod функцияны жаз .Функция берілгендері : үлес шамасы , проценттік қойылым (жылдық ) және үлес уақыты (күндер саны ).
Квадрат теңдеуді шешуді қамтамасыз ететін функцияны жаз . Функция параметрлері ретінде теңдеудің коэффициенттері мен түбірлері алынады . Теңдеудің түбірлері туралы функцияның қайтаратын мәндері : 2-әртүрлі түбір , 1-түбірлері бірдей , 0-теңдеудің түбірлері жоқ . Сонымен қатар , функция берілгендердің дұрыстығын тексеру керек . Егер берілгендер дұрыс болмаса , онда функция -1-ді қайтарады .
Аргумент ретінде алынған 2 бүтін санның ең үлкенін қайтаратын функцияны жаз .
Экранға бірдей параметрлерден тұратын жолды шығаратын функцияны жаз . Жол ұзындығы және символ функция параметрлері болады .
Берілген санды дәрежелеу функциясын жазыңыз .
Берілген массив элементтерін өсу ретімен орналастыратын функция жазыңыз .
Берілген массив элементтерін кему ретімен орналастыратын функция жазыңыз .
Берілген массив элементтерінің ішіндегі оң элементтерін 0- мен , ал теріс элементтерін 1-мен ауыстыратын функция жазыңыз .
Берілген бүтін санды 2-еселеп , сол санның факториалын есептейтін функция құрыңыз .
1-ден 100-ге дейінгі тақ сандардың қосындысын беретін функцияны жазыңыз.
1-ден 100-ге дейінгі жұп сандардың қосындысын беретін функцияны жазыңыз .
1-ден 100-ге дейінгі жай сандардың қосындысын беретін функцияны жазыңыз .
Матрицаны транспонирлеуді атқаратын функцияны жазыңыз .
Бақылау сұрақтары:
Функцияларды құру кезінде неге көңіл аудару керек ?
Функцияны шақыруды қалай ұйымдастырамыз ?
Функция операторлары қалай орындалады ?
«Функция» терминнің мағынасы қандай?
Функцияны анықтаудың жалпы синтаксисі қандай?
Функцияның формальды және фактілі параметрлердің бір бірінен айырмашылығы қандай?
Функцияның белгілі және белгісіз хабарлаудың айырмашылығы қандай?
Функцияны шақыру үрдісін сипаттандар?
«Рекурсивті функция» терминнің мағынасы қандай?
Блиц-тест
1. Компоненттердің С++ тілінің басқа объектілер класстарынан ерекшеліктері келесі түрде болады
|
барлық жауап дұрыс
|
компоненттердің барлығы ортақ TComponent класынын ұрпағы
|
компоненттер жаңа класс құру үшін базалық класс ретінде пайдаланыла алмайды;
|
компоненттер new операторы арқылы динамикалық жадыда (heap) орналасады
|
компоненттердің көбісі қолданушы интерфейсін басқару элементтері болып табылады;
|
2. Қасиеттер дегеніміз
|
объект, әдістер, қасиеттер
|
компоненттің сыртқы түрі мен жұмысын анықтайтын атрибуттар.
|
инкапсуляция, полиморфизм, мұралау
|
класс, базалық класс, туынды класс
|
ашық, жабық, қорған режим
|
3. Қасиеттерді сипаттау синтаксисі:
|
property <қасиеттипі> <қасиет аты> = {< атрибуттар тізімі>} ;
|
property <қасиет аты> = {< атрибуттар тізімі>} ;
|
public <қасиеттипі> <қасиет аты> = {< атрибуттар тізімі>} ;
|
private <қасиеттипі> <қасиет аты> = {< атрибуттар тізімі>} ;
|
protected <қасиеттипі> <қасиет аты> = {< атрибуттар тізімі>} ;
|
4. void __fastcall TForm1::Button1Click(TObject *Sender)
{float x,y;
//айнымалыны сипаттау
x=StrToFloat(Edit1->Text);// х айнымалысының мәнін жолдықтан нақты айналдырып //енгізу
y=3*pow(x,2)+7;
//у функциясының мәні
Edit2->Text=FloatToStr(y);
X=3 болғанда нәтиже неге тең болады?
|
15
|
25
|
34
|
19
|
29
|
|
|
5. #pragma package(smart_init) директивасының қызметі қандай
|
А)инициализация пакеттерінің тізімін анықтайды.
|
Б)Unit1.h файлын іске қосады
|
В)берілген файлмен атымен аты сәйкес болатын *.dfm файлын формада қолдану қажеттігі
|
Г)форма объектісін хабарлау
|
Д)hdrstop опциясы препроцессор жұмысының өзгешеліктерімен байланысты
|
| Жұмысты орындауға тапсырмалар
1. Лекциялар, әдебиеттер, әдістемелік нұсқау бойынша теориялық материалды қайталау.
2. Бақылау сұрақтарына ауызша жауап беру.
3. Тапсырма вариантын таңдау және орындау
4. Есеп жазу
Есеп мазмұны
Жұмыстың тақырыбы және мақсаты.
Бақылау сұрақтарына жауап жазу.
Тапсырманың блок-схема, алгоритмі.
C++ Builder тілінде программасы
Әдебиеттер
1. Атымбаева Объектіге бағытталған программалау негіздері.Алматы, 2005 ж.
2. Програ ммирование в среде С ++ Builder. А. Вальвачев, Д. Сурков, К. Сурков.
Мин.1998г
3. С ++ Builder. С.В.Глушаков, В.Н. Зорянский, С.Н. Хоменко
4. С++ и информатика . Н.Культин, М. 2002г.4. 4 4
5. С ++ Builder книга рецептов. В. Ермолаев. Кудиц. – образ. 2006г.
6. Справочник по С ++ Builder. Учебное пособие. 2005г.
7. Разработка приложений в среде С ++ Builder 6 и решение задач информационно-радиационного профиля. Учебное пособие. А.И. Купчишин, Т.А. Шмыгалева.
Лабораториялық жұмыс № 19-20
Тақырыбы: C++ Builder ортасында графикамен жұмыс
Мақсаты: - С/С++ тілінің графикалық мәліметтерді өңдеу мүмкіндіктерімен, графикалық компоненттер танысу.
, файлдарында сипатталған негізгі графикалық функциялардың прототиптерін үйрену.
Материалдар және жабдықтар: ДК, C++ Builder программалау ортасы
Жұмыстың мазмұны және орындалу тәртібі:
Вариант бойынша тапсырманы алу
Есептің қойылымы
Есепті шешу алгоритмі
Есепті шешу программасын C++ Builder программалау ортасында құру
Программа листингі
Орындалған жұмыс жөнінде есеп беру
Әдістемелік нұсқау
Графикалық компоненттер
Windows операциялық жүйесі өңдеушілерге графикалық бейнелерді құруға арналған қосымша құрал GDI (Graphics Device Interface) графикалық қондырғылардың интерфейсін ұсынады. GDI өзінің көптеген қосымша әрекеттерімен көп уақыт алады. Бұл әрекеттер программисттерді негізгі міндеті – графика құрудан алаңдатады.
C++ Builder Windows GDI функцияларын әртүрлі деңгейде қолданады. Ең қажет тәсілдерінің бірі – бұл графикалық компоненттердің өз бейнелерін монитор экранында көрсетуі болып табылады. GDI функциясын тікелей шақырғанда таңдалған сурет салуға арналған құрал-жабдықтың міндеттелуі үшін контекст қондырғысының дескрипторын беру қажет. Графикалық бейнелермен жұмыс жасап болған соң контекст қондырғысын қалпына келтіру керек. Сонда ғана одан шығуға болады. Осындай деңгейдегі графикамен жұмыс орындауға қарағанда C++ Builder қарапайым әрі аяқталған графикалық компонент интерфейсі Canvas(Канва) ұсынады. Бұл дұрыс контект қондырғысын көрсеттеді және бұл графикалық компонент жұмыс аяқталғаннан кейін немесе қажет болмаған жағдайда оны тоқтатуға болады. істен шығуға болады. Windows GDI функциясына қарағанда канва негізінен барлық құралдардың сипаттамасын көрсететін қасиеттерге ие.
Негізінде қолданушының орындайтын әрекеті бұл графикалық компоненттермен жұмыс жасауда қолданылатын құрал-жабдықтың сипаттамаларын білу қажет. Қолданатын құрал –саймандардың тоқтатуда, жүйелік ресурстарды құруда қадағаламауға болады яғни канва бұл әрекеттерді өзі атқарады C++ Builder-дің графикамен жұмыс істеудегі ерекшеліктерінің бірі – бұл жүйенің графикалық ресурстарына кэш жадыны қолдану болып табылады. Егер программада сурет салуға арналған құрал-жабдықтардың бірі қайтадан құрып қолдану қажет болса онда барлық қадамдарды қайталауға тура келеді. C++ Builder кэш жадыны графикалық ресурстарды сақтауға қолданады. Сондықтан жаңадан сурет салатын болсақ онда көп қолданылатын құрал-жабдық кэш жадыдан өздігінен таңдалады. Графикалық қосымшаның қайталану операциясының тиімділігі өсуде.
Суреттермен жұмыс
C++ Builder ортасындағы графикалық жұмыстардың негізгі мазмұны Canvas бұл канвада өзіңізге қажет формада сурет салу немесе онда орналасқан басқа да компоненттерден тұрады. Сонымен бірге сыртқы бейнелерді яғни пиктограммаларды, метафайлдарды, палитраларды автоматты түрде басқаруды орындайды. C++ Builder ортасында графикаға қатысты 3 негізгі обхект бар. Олар:
-Канва – формада, графикалық компоненттерде, принтеде және сурет салуға арналған биттік карта бетін көрсетеді. Канва өзіндік объект емес. Ол әрқашанда басқа графикалық объект қасиеті болып табылады.
-Графика – кейбір файлдар мен ресурстардың растрлық бейнесі болып келеді. C++ Builder Tbitmap, Ticon және Tmetafile объектілі класын Tgraphic өзіңіздің қосымшаңызда әртүрлі графиканы қолдануға арналған минимальді стандартты интерфейсті көрсетеді.
- Сурет – әртүрлі объектілердің класын және графиканың контейнерін көрсетеді.Сөйтіп Tpicture контейнерлі класы метафайлдар мен пиктограммаларды жүктейді. Көптеген бейнелерді басқару компоненттері Tpicture қасиетіне ие. Бұл әртүрлі түрдегі графикадағы бейнелерді көрсетуге мүмкіндік береді. Әдетте суретпен жұмыс жасауда Tpicture контейнері арқылы қатынау ашық болғандықтан графикалық объект бөлігімен жұмыс орындаймыз. Егер сізге белгілі бір графикалық объектке қатынау көрсету қажет болса онда оны берілген суретке graphic қасиетін береміз.
Графикалық файлдар
Кез-келген уақытта C++ Builder қосымшасымен жұмыс жасауда суреттермен графикаларды бейнелер файлардарының стандартты форматында сақтау керек. Бейнелердің сақталатын және бастапқы файлдарының аты әрқашан сәйкес келуі немесе өзге болуы мүмкін. Файлдағы суреттің бейне түрінде жүктелуі LoadFromFile әдісін қолдануға болады. Ал бейнені файлда сақтау үшін SaveToFile сурет әдісін пайдаланамыз. Бұл әдістердің жалғыз параметрі файл аты болып табылады. LoadFromFile әдісі графикалық объектілерді құру мен жүктеу кезіндегі түрлерін тануда файлдар кеңейтілуін қолданады.
Void_fastcall TForm1::FormCreate(TObject*Sender) {
Image1->Picture->LoadFromFile (“C:\\windows\\clouds.bmp”);
Мұнда сурет биттік образдағы файлдің стандартты кеңкйтілімін анықтайды және Tbitmap объектілі класы сияқты өз графикасын құрады. Одан кейін көрсетілгенатпен файлдан бейнелерді жүктеу үшін LoadFromFile әдісін шақырады.
Биттік бейнені көшіру
C++ Builder бір канвадан келесі канваға бейнелерді көшірудің төрт тәсілін көрсетеді. Өзіңізге қажет көшіру тәсілін келесі кестеден таңдауға болады.
Қажет нәтиже
|
Әдіс
|
Графиканы толығымен көшіру
|
Draw
|
Масштабтау арқылы көшіру
|
StretchDraw
|
Канваның тікбұрышты аумағын көшіру
|
CopyRect
|
Растрлық операциялармен көшіру
|
BrushCopy
|
Күрделі графикалық бейнелерді құруда форма немесе компоненттерді канвада салудан алшақтаған жөн.Ол үшін алдымен биттік бейнедегі объектіні құру үшін оны канвада салуға болады және содан кейін оны көшіруге мүмкіндік туады. Биттік бейнені экраннан тыс канвада салу үшін графикалық компоненттердің Paint әдісі қолданылады. Биттік образдағы экраннан тыс күрделі бейнелерді салуға Samples бетіндегі Индикатор (Gauge) арқылы жүзеге асады.
Форманы жобалау
Қосымшаны жобалауда келесі компоненттерді палитрадан формаға алып бару арқылы жүзеге асады:
Additional бетіндегі Timage контейнері мен System бетіндегі TpaintBox контейнері. DrawBox объектісінің Timage және PaintBox класының TPaintBox класы графикаларды екі есе буферлейді. Алдымен DrawBox объектілерінде канвада фигура мен фон салады одан кейін PaintBox объектісінде канва бейнесін экранға көшіреді.
Standard бетінде TPanel құрал – саймандар панелі.
System бетіндегі таймер TTimer.
Анимация жылдамдығын басқару үшін Samples бетіндегі TspinEdit компонентін редакциялау.
Программаның жұмыс жасауын басқару үшін Additional бетіндегі TSpeedButton батырмасы.
Dialogs бетінің TopenDialog компоненті
Анимация
1-сурет негізінен қосымша формасын көрсетеді. Clouds.bmp файлындағы
бұлтты күннің бейнесі фон түрінде көрсетіледі. Ал қозғалмалы фигура міндетін Planes файлындағы екі самолет пен Helicopters.bmp. файлдағы вертолеттер атқарады. Figures объектілі компонентінің Picture қасиетін екі рет тышқанмен шерт арқылы бейнелердің редакторын ашуға болады. Әрбір фигураның бейнесі үштік биттік образда көрсетілген. Яғни алғашқы екеуі фигура анимациясының фазасы, ал үшіншісі сыртқы контурдың бинарлы қалқасын (маска) көрсетеді. Екі фигурада түстерімен ажыратылады. Олар бірдей формада сондықтан бір қалқаны бөліседі.
1-сурет
TSpeedButton компонентінің батырмалары программаны басқаруға арналған. Бірінші батырмасы Background объектісін TImage класының фон бейнесін файлдан ашады әрі жүктейді.Ал екінші батырма Figures объектісінің Timage класындағы фигура бейнесін файлдан ашады және жүктейді. Үшінші батырма фигураларды бастапқы күйіне әкеледі және таймерді қосады. TSpinEditредакциялау компонентінің батырмасы негізінде таймер интервалының мәнін үлкейтіп және кішірейтіп отырады. Timerl объектісінің OnTimer қасиеті қосымша ядросының өңдеушісі болып табылады.
2-сурет. DrawBox және PaintBox объектілерінің канвадағы структурасы
Мысал
Сhart және Image компоненттерінің көмегімен таңдалған функцияның графигін сызатын программу құру.
Форманы қалыпқа келтіру
Программа мәтіні:
. . .
//---------------------------------------------------------------------------
double a,b,h,y_min,y_max;
int n;
typedef double (*Tfun)(double);
Tfun f;
double fun0(double);
double fun1(double);
double fun2(double);
//----------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Edit1->Text="-3,1416"; // a
Edit2->Text="3,1416"; // b
Edit3->Text="50"; // n
RadioGroup1->ItemIndex = 0;
}
//----------------- Задать начальные значения ------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double x, r;
a=StrToFloat(Edit1->Text);
b=StrToFloat(Edit2->Text);
n=StrToInt(Edit3->Text);
h = (b-a)/n;
switch(RadioGroup1->ItemIndex) {
case 0: f = fun0; break;
case 1: f = fun1; break;
case 2: f = fun2; break;
}
y_min = y_max = f(a);
for (x = a+h; x<=b; x+=h) {
r = f(x);
if(y_min>r) y_min = r;
if(y_max
}
}
//------------------------ Построить график в Chart ----------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Chart1->Series[0]->Clear(); // Очистка графика
for(double x=a; x<=b; x+=h)
Chart1->Series[0]->AddXY(x,f(x));
}
//--------------------- Копировать в буфер ----------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Chart1->CopyToClipboardMetafile(True);
}
//--------------------- Построить график в Image ---------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int xmax, ymax, xt, yt, y0, x0;
double hx,hy,x;
Image1->Canvas->Pen->Color=clBlack; // Установка цвета пера
// Поиск координат правого нижнего угла холста Image
xmax = Image1->Width; ymax = Image1->Height;
// Закрашивание холста Image текущей белой кистью
Image1->Canvas->Rectangle(0,0,xmax,ymax);
// Поиск середины холста
y0=ymax/2; x0=xmax/2;
// Вычерчивание координатных линий
Image1->Canvas->MoveTo(0,y0);
Image1->Canvas->LineTo(xmax,y0);
Image1->Canvas->MoveTo(x0,0);
Image1->Canvas->LineTo(x0,ymax);
Image1->Canvas->Pen->Color=clRed; // Установка цвета пера
Image1->Canvas->Pen->Width=2; // Установка ширины пера
// Поиск шагов по х и у с масштабированием
hx=(b-a)/xmax; hy=(y_max-y_min)/ymax;
Image1->Canvas->MoveTo(ceil(x0+a/hx),ceil(y0-f(a)/hy));
for(x=a; x<=b; x+=h)
Image1->Canvas->LineTo(ceil(x0+x/hx),ceil(y0-f(x)/hy));
}
//------------------------------------------------------------
double fun0(double r) {
return sin(r);
}
double fun1(double r) {
return r*r;
}
double fun2(double r) {
return r*r*r;
}
Тапсырма: Берілген функция үшін масштаб және ауысуды анықтаңыз. Функцияның графигін берілген интервалда және берілген ауысуы бойынша сызатын программа құрыңыз. Координат өстерін енгізуді карастырыңыз. -
Аргументтердің және функцияның мәндерінің таблицасын сызатын программа құрыңыз.
Тапсырма варианттары.
Вариант
|
функция
|
Интервал
|
шаг
|
1
|
y=esinx
|
[0;2]
|
/10
|
2
|
y=x
|
[-5;5]
|
0,5
|
3
|
y=xsinx
|
[0;2]
|
/10
|
4
|
y=|x|
|
[-10;10]
|
1
|
5
|
y=
|
[0;64]
|
4
|
6
|
y=(sinx)/x
|
[/;2]
|
/10
|
7
|
y=xcosx
|
[0;2]
|
/10
|
8
|
y=x+4x
|
[-5;5]
|
1
|
9
|
y=tgx
|
[-;]
|
/5
|
10
|
y=x+sinx
|
[-;]
|
/8
|
11
|
y=2x+x+4
|
[-5;5]
|
1
|
12
|
y=shx
|
[-1;1]
|
0,1
|
13
|
y=thx
|
[0;2]
|
0,2
|
14
|
y=chx
|
[-1;1]
|
0,1
|
15
|
y=-2x
|
[-5;5]
|
1
|
Бақылау сұрақтары:
С++ Builder ортасының графикалық мүмкіндіктері
С++ Builder ортасының графикалық примитивтерді құру арналған компоненттері
Графиктерді тұрғызу ерекшеліктері
Пиксел дегеніміз не?
Графикалық ақпарат қалай сақталады?
Графикалық режимге қалай ауысуға болады?
Текстік режимге қалай оралуға болады?
Шрифттерді қалай таңдауға болады?
Сызық сипаттамасы мен қалындығын қалай тағайындауға болады?
Бояу стилін қалай тағайындауға болады?
Графикалық экранда терезені қалай ашуға және қалай жабуға
болады?
Горизонталь және вертикаль бойынша нүктелердің максимальді
координат мәндерін қалай алуға болады?
Терезенің координаттар жүйесінде ағымдық координаттарды алуға
болады?
Блиц-тест
1. ListBox компонентінің Columns қасиет
|
тізімде белгіленген элементтің реттік номерін көрсетеді
|
компонент терезесіне тізім толық бейнеленбеген болса, бағандар санын анықтайды
|
тізімдегі жолдардың санын анықтайды.
|
тізімдегі жолдар автоматты түрде алфавит бойынша сұрыпталатындығын көрсетеді
|
тізімнің қандай элементтері белгіленгендігін анықтайтын индекстік массив.
|
2. Chart компоненті
|
тез шақырылатын графикалық батырманы құрады
|
қажет жағдайда айналдыру жолағына контейнер құрады.
|
көлемді формадағы сызықтар мен рамкаларды құрады.
|
мәліметтерді графикалық түрде беру үшін арнайы панель құрады
|
арнайы форматтағы мәліметтерді енгізуді редакциялайтын облыс құрады
|
3. С++ тілін программалауды объектілік тұрғыда жүргізу қай уақытты қамтиды?
|
ХХ ғасырдың 80-шы жылдарының ортасынан бастап 90-шы жылдардың соңына дейінгі уақытты қамтиды
|
ХХ ғасырдың 70-шы жылдарының ортасынан бастап 80-шы жылдардың соңына дейінгі уақытты қамтиды
|
ХХ ғасырдың 65-шы жылдарының ортасынан бастап 70-шы жылдардың соңына дейінгі уақытты қамтиды
|
ХХ ғасырдың 90-шы жылдарының ортасынан бастап ХХІ ғасырдың алғашқы жылдарына дейінгі уақытты қамтиды
|
ХХ ғасырдың 75-шы жылдарының ортасынан бастап 90-шы жылдардың соңына дейінгі уақытты қамтиды
|
4. Shape компоненті
|
жолдарды бейнелеу үшін жол бойынша немесе баған бойынша тор құрады.
|
арнайы форматтағы мәліметтерді енгізуді редакциялайтын облыс құрады
|
қарапайым геометриялық фигураларды салады.
|
жазбалы және пиктограммалы командалық батырма құрады
|
тез шақырылатын графикалық батырманы құрады
|
5. Класс экземплярын құруға арналған әдіс атауы.
|
Delete
|
Open
|
Destroy
|
Init
|
Create
| Жұмысты орындауға тапсырмалар
1. Лекциялар, әдебиеттер, әдістемелік нұсқау бойынша теориялық материалды қайталау.
2. Бақылау сұрақтарына ауызша жауап беру.
3. Тапсырма вариантын таңдау және орындау
4. Есеп жазу
Есеп мазмұны
Жұмыстың тақырыбы және мақсаты.
Бақылау сұрақтарына жауап жазу.
Тапсырманың блок-схема, алгоритмі.
C++ Builder тілінде программасы
Әдебиеттер
1. Атымбаева Объектіге бағытталған программалау негіздері.Алматы, 2005 ж.
2. Програ ммирование в среде С ++ Builder. А. Вальвачев, Д. Сурков, К. Сурков.
Мин.1998г
3. С ++ Builder. С.В.Глушаков, В.Н. Зорянский, С.Н. Хоменко
4. С++ и информатика . Н.Культин, М. 2002г.4. 4 4
5. С ++ Builder книга рецептов. В. Ермолаев. Кудиц. – образ. 2006г.
6. Справочник по С ++ Builder. Учебное пособие. 2005г.
7. Разработка приложений в среде С ++ Builder 6 и решение задач информационно-радиационного профиля. Учебное пособие. А.И. Купчишин, Т.А. Шмыгалева.
КЕЛІСІМ ПАРАҒЫ
ЛАБОРАТОРИЯЛЫҚ ЖҰМЫСҚА ӘДІСТЕМЕЛІК
НҰСҚАУ
Мамандық 5В0703-Ақпараттық жүйелер
мамандық шифры және аталуы
Пәні C++BP3320 – С++ Builder 6.0 программалау
пән коды және аталуы
Білім деңгейі жоғары кәсіптік білім (бакалавриат)
Оқу жоспарына сәйкес
Оқу түрі жалпы білім беру негізіндегі, күндізгі
Оқу жылы 2011-2012
Оқу ісі жөніндегі проректор __________ ( Айпеисова С. А )
“___”____________________20__ ж.
Достарыңызбен бөлісу: |