- •«Объектілі-бағытты бағдарламалау негіздері» пәнінен оқу тәжірибесі бойынша тәжірибелік жұмыстар жинағы
- •2014-2015 Оқу жылы
- •1.1 Тақырып. Меншіктеу, енгізу-шығару операторлары Зертханалық жұмыс №1, 2, 3 Меншіктеу, енгізу-шығару операторлары сіn, cout.
- •Припроцессорлардың дерективалары программа
- •Логикалық операциялар мынадай таңбалармен жазылады.
- •Тапсырмалар:
- •Break операторы
- •Тапсырмалар
- •Тақырып. Цикл операторлары Зертханалық жұмыстар №7,8,9 While, do…while, for цикл операторлары. Циклдердегі басқару операторлары (break, continue). While, for, do…while циклдерді бағдарламалау
- •Continue операторы
- •1) Есепті шешу алгоритмінің блок-схемасы:
- •Адрестер
- •1) Есепті шешу алгоритмінің блок-схемасы:
- •3) Бағдарламаны тестілеу нәтижесі:
- •Көрсеткіштер
- •Сілтемелер
- •Жиымдармен, көпөлшемді жиымдармен жұмыста көрсеткіштерді қолдану
- •Динамикалық жиымдар
- •Есепті шешу алгоритмінің блок-схемасы:
- •3) Бағдарламаны тестілеу нәтижесі:
- •Бірөлшемді, көпөлшемді жиымдар және көрсеткіштерді қолданып бағдарламалар құру
- •1.5 Тақырып. Функциялар Зертханалық жұмыстар №16,17,18,19 Функциялар. Функцияны шақыру. Жергілікті, ауқымды айнымалылар. Стандартты кітапханалық функциялар. Функцияны қолданып бағдарлама құру.
- •1. Тапсырма
- •4 Тапсырма.
- •Бағдарламаның листингі
- •3. Бағдарламаның нәтижесі
- •1. Есептің блок-схемасы
- •2. Бағдарламаның листингі
- •3. Бағдарламаның нәтижесі
- •5 Тапсырма.
5 Тапсырма.
#include <stdio.h>
#include <math.h>
int main(void) {
shortn; /* параметр внешнего цикла */
double x, y; /* абсцисса и ордината графика */
short h; /* позиция точки на экране */
/* внешний цикл - для 5 периодов */
for (n=0; n<5; n++) {
/* вывод заголовка таблицы */
printf("| x | y |\n");
printf("|-------|------------|\n");
/* внутренний цикл для одного периода */
for (x=0; x<4; x+=0.25) {
/* 1-й отрезок */
if (x<1) y=2*x-1;
/* 2-й отрезок */
else if (x<3) y=1-sqrt(1-(x-2)*(x-2));
/* 3-й отрезок */
else y=7-2*x;
/* вывод строки таблицы */
printf("| %5.2lf | %10.7lf |",x+n*4,y);
/* определение позиции точки */
h=(y+1)*10;
if (y-1-h*10>0.5) h++;
/* вывод точки графика */
for (; h>0; h--) printf(" ");
printf("*\n");
} /* конец внутреннего цикла */
/* пауза до команды оператора */
printf("Нажмитеклавишу Enter...");
getchar();
} /* конец внешнего цикла */
return 0;
} /* конец программы */
Бағдарламаның нәтижесі:
| x | y |
|-------|------------|
| 0.00 | -1.0000000 |*
| 0.25 | -0.5000000 | *
| 0.50 | 0.0000000 | *
| 0.75 | 0.5000000 | *
| 1.00 | 1.0000000 | *
| 1.25 | 0.3385622 | *
| 1.50 | 0.1339746 | *
| 1.75 | 0.0317542 | *
| 2.00 | 0.0000000 | *
| 2.25 | 0.0317542 | *
| 2.50 | 0.1339746 | *
| 2.75 | 0.3385622 | *
| 3.00 | 1.0000000 | *
| 3.25 | 0.5000000 | *
| 3.50 | 0.0000000 | *
| 3.75 | -0.5000000 | *
Нажмите клавишу Enter...
6 тапсырма. #include <stdio.h>
#include <time.h>
#include<stdlib.h>
int Ar[100]; /* массив, который обрабатывается */
int main(void) {
int i, j; /* индексывмассиве */
int av; /* среднее значение */
int nn; /* количество эл-тов в последовательности */
int ib; /* индекс начала последовательности */
randomize(); /* инициализация rand */
/* заполнение массива случайными числами */
for (i=0; i<100; Ar[i++]=random(101)-50 );
/* вывод начального массива */
printf("Начальный массив:\n");
for (i=0; i<100; printf("%3d ",Ar[i++]));
putchar('\n');
putchar('\n');
for (nn=i=0; i<100; i++) { /* перебормассива */
if (Ar[i]<0)
/* обработка отрицательного элемента */
if (!nn) {
/* начало последовательности */
/* запомнить индекс начала,
начальное значение накопителя суммы
и счетчика элементов */
ib=i; av=Ar[i]; nn=1;
}
else {
/* накопление суммы,
подсчет количества */
av+=Ar[i]; nn++;
}
/* конец обработки отрицательного элемента */
else /* обработка положительного элемента */
if (nn) {
/* если есть необработанная
отрицательная последовательность */
av/=nn; /* усреднение */
/* перебор всей последовательности
с ограничением */
for (j=ib; j<i; j++)
if (Ar[j]>av) Ar[j]=av;
nn=0; /* последовательность обработана */
} /* конец если есть необработанная... */
} /* конец перебор массива */
if (nn) /* если не обработана последняя
отрицательная последовательность */
for (av/=nn, j=ib; j<i; j++)
if (Ar[j]>av) Ar[j]=av;
/* вывод результатов */
printf("Массив-результат:\n");
for (i=0; i<100; printf("%3d ",Ar[i++]));
putchar('\n');
return 0;
}
Бағдарламаның нәтижесі:
Начальный массив:
22 15 45 -15 -19 19 -38 34 -39 37 -3 -25 33 -11 -27 -45
47 29 5 -14 17 -40 -34 -8 46 -29 40 0 17 9 38 17
42 -47 -27 9 1 30 -33 -4 -50 27 -10 1 41 24 -7 -41
35 35 41 12 37 -49 16 29 49 -11 -15 35 -39 43 3 19
-20 21 -45 -3 13 -12 3 -13 12 -11 34 -5 -14 -35 -13 -50
-2 48 47 -4 45 46 -13 -29 45 -12 -45 -2 21 -33 -42 -2
13 27 -24 -42
Массив-результат:
22 15 45 -15 -17 19 -38 34 -39 37 -3 -14 33 -11 -27 -27
47 29 5 -14 17 -27 -27 -8 46 -29 40 0 17 9 38 17
42 -37 -27 9 1 30 -29 -4 -29 27 -10 1 41 24 -7 -24
35 35 41 12 37 -49 16 29 49 -11 -13 35 -39 43 3 19
-20 21 -24 -3 13 -12 3 -13 12 -11 34 -5 -14 -19 -13 -19
-2 48 47 -4 45 46 -13 -21 45 -12 -19 -2 21 -25 -25 -2
13 27 -24 -42
2 бөлім. Borland C++ Builder-де қосымшаны әзірлеу
2.1 тақырып. Мәтінмен жұмыс
Зертханалық жұмыстар № 25,26,27
Жазбаны қолдану. Біржолдық редактор. Жолдар жиымдары. Түзету компонеттерінің жалпы элементтері. Тізімдермен жұмыс. Көпжолдық редактор. Мәтінмен жұмыс істеу компоненттерін қолданып бағдарламалар құру.
C++Builder құру ортасы
C++Builder – бұл құру ортасы, ол 4 негізгі элементтен тұрады. Үстінге жағында негізгі терезесі орналысады. Ол меню сызғышынан, саймандар панелінен және компонентттер панелінен тұрады.
Сурет 1. C++ Builder құру ортасының негізгі терезесі
Оң жағында инпектор объектов орналысады, ал сол жағында пішіндер конструкторы. C++Builder қосқан кезде констуктордда таза пішін тұрады. Пішін – ол визуалды бағдарламалаудын негізгі объектісі. Бағдарламаның негізгі терезесі, туынды терезесі, диалогты панель ретінед шыға алады. Пішінде әр түрлі басқару элементтерді орналастырамыз, олар визуалды компонент деп аталады. Сонымен қатар визуалды емес компоненттер бар, мысалы: таймер, мәліметтер қорымен істейтін компоненттер. Пішін конструкторының астынға жағында код редакторының терезесі орналысады.
Сурет 2. Визуалы және визуалды емес компонеттер
Код редакторы
Код редакторының терезесі (сурет 3) бағдарламалаушының негізгі жұмыс сайманы болып табылады.
Сурет 3. Код редакторының терезесі
C++Builder саймандар терезесі басқа терезелермен байланысқан да болуы мүмкін. Компоненттерді пішінге қосу үшін тышқан көмегімен компоненттер палитрасынан компонентті таңдаймызда оң жақ батырмасымен пішіннің керекті жеріне қоямыз. Пішінде компонент пайда болады да, оның көлемін және басқа да мінездемелерін ауытыруға болады. C++ Builder-де әр компонент үш мінездемеден тұрады, олар: қасиет, әрекет және әдіс. Егер компонентті палитрадан таңдасақ онда объекттер инспекторы автоматты турде оның қасиетін және әрекетін көрсетеді.
Сурет 4. Объекттер инспекторы
Тапсырма 1: Біржолдық редактор
Батырманы басқан кезде мәтінге біржолдық текстті еңгізетін бағдарлама құру. File/New Application меню пунктын таңдау арқылы проектіні құру және оны басты формаға samp1.cpp атауымен сақтауға, жобаның өзін samp.mak атауымен сақтау керек. Формаға Standard парағынан Button, Edit және ListBox компоненттерін орналастырамыз.
Формаға компоненттерді орналастыру
Edit компонентін таңдап, Text қасиеті арқылы берілген мәнді жоямыз. Button1 компоненті үшін Caption қасиеті көмегімен "Добавить" деп мәнді өзгертеміз.
Добавить батырмасы үшін OnClick оқиғаны өңдеушілерді қосу үшін формадан компонентті таңдап, объектілер инспекторынан оқиғаны ашып, екі рет OnClick оқиғасының оң жағынан шерту керек. Қажетті жолда функция атауы пайда болады. C++ Builder оқиғаны өңдеушілерді генерациялап оны код редаторында көрсетеді. Функция денесіне қажетті кодты операторлық жақша ішіне жазу керек{ ... }:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (!(Edit1->Text == ""))
{
ListBox1->Items->Add(Edit1->Text);
Edit1->Text = "" ;
}
}
Қосымшаны компиляциялау үшін меню жолынан Run пунктын тағдаймыз. Енді жоба тестілейміз. Қажетті мәтінде біржолдық редакторға енгізіп, сол мәтінде өріске қосу үшін Добавить батырмасын басамыз.
Дайын қосымша беті
Енді қосымшаны модификациялаймыз. Ол үшін Удалить және Выход батырмаларын қосамыз. Ол үшін тағы екі батырма қосып, Caption қасиеті арқылы атауын өзгертеміз:
Рис. 11. Модифицированное приложение
Удалить батырмасы үшін:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
if (!(ListBox1->ItemIndex == -1))
ListBox1->Items->Delete(ListBox1->ItemIndex);
}
Выход батырмасы үшін:
Close();
Жобаны сақтаймыз.
Тапсырма 2. Үшбұрыштың ауданын, биіктігі мен табаны бойынша есептеуді орындайтын қарапайым қосымша құру. Қосымша терезесі келесі түрде болуы қажет /4.4 -сурет(а,б)/.
4.4-сурет.
а) Форма терезесі
4.4-сурет. в) Қосымша терезесі
Орындалуы:
1. File New Application командалары орындалады.
2. Жаңа құрылған жобаны сақтау үшін Filе Save All командасы орындалады. Жоба
құрамына кіретін файлдардың бір бумада сақталуы қажет.
3. Форма терезесіне қажет компоненттер /4.4-суреттегідей/ орналастырылып және
олардың келесі қасиеттері өзгертіледі:
«Есептеу» деп аталатын батырмаға екі рет шертіліп, пайда болған терезеге келесі код
жазылады:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int biktik, taban;
float audan;
biktik=StrToInt(Edit1->Text);
taban=StrToInt(Edit2->Text);
audan=float(biktik*taban)/2;
Edit3->Text=FloatToStr(audan);
}
Өзіндік жұмыс тапсымалары:
Келесі мазмұндағы есептерді шеше алатын қосымша құрыңыз:
1. Пирамиданың көлемін табу.
2. Үш қабырғасы бойынша үшбұрыштың ауданын есептеу.
3. Параллелипедтің көлемін есептеу.
4. Тізбектің жалпы кедергісін есептеу (параллель қосылған).
5. Трапецияның ауданын есептеу.
6. Тізбектің жалпы кедергісін есептеу (тізбектей қосылған).
