И 08. 14/02 Қазақстан Республикасы Білім және Ғылым министрлігі



Pdf көрінісі
бет18/21
Дата09.12.2019
өлшемі3,21 Mb.
#53264
1   ...   13   14   15   16   17   18   19   20   21
Байланысты:
baibaktina 6


 
ІІ. Мысал.  
Берілгені:  Үшбұрыш төбелерінің координаттары:(Х
1

1
), (Х
2

2
), (Х
3

3
) белгілі. 
Ауданын есептеу керек. 
Математикалық  моделі:  Үшбұрыш  ауданын  табу  үшін  Герон  формуласын 
пайдалануға  болады.  Бірақ,  алдымен  қабырғаларының  ұзындығын  табу  керек. 
Оны екі нүктенің ара-қашықтығын есептеу формуласымен 
D= (X
2
-X
1
)  + (Y
2
-Y
1

 анықтауға  болады.  Үшбұрыш  қабырғаларының  ұзындығын  есептеуді  функция 
түрінде ұйымдастыруға болады. 
 
Программасы
 
С тілінде: 
С++ тілінде: 
#include  
#include  
float dlina(int x,int y,int xx,int yy); 
main() 

int x1,x2,x3,y1,y2,y3; 
float ab,bc,ac,p,s; 
printf("\n x1="); scanf("%d",&x1); 
printf("\n y1="); scanf("%d",&y1); 
printf("\n x2="); scanf("%d",&x2); 
printf("\n y2="); scanf("%d",&y2); 
printf("\n x3="); scanf("%d",&x3); 
printf("\n y3="); scanf("%d",&y3); 
ab=dlina(x1,y1,x2,y2); 
bc=dlina(x2,y2,x3,y3); 
ac=dlina(x3,y3,x1,y1); 
p=(ab+bc+ac)/2; 
s=sqrt(p*(p-ab)*(p-bc)*(p-ac)); 
printf("\n s=%f",s); 
return (0); 

#include  
#include  
float dlina(int x,int y,int xx,int yy); 
main() 

int x1,x2,x3,y1,y2,y3; 
float ab,bc,ac,p,s; 
cout<<"x1="; cin>>x1; 
cout<<"y1="; cin>>y1; 
cout<<"x2="; cin>>x2; 
cout<<"y2="; cin>>y2; 
cout<<"x3="; cin>>x3; 
cout<<"y3="; cin>>y3; 
ab=dlina(x1,y1,x2,y2); 
bc=dlina(x2,y2,x3,y3); 
ac=dlina(x3,y3,x1,y1); 
p=(ab+bc+ac)/2; 
s=sqrt(p*(p-ab)*(p-bc)*(p-ac)); 
cout<<"s="<return (0); 


 
 
 
float dlina(int x,int y,int xx,int yy) 

float d; 
d=sqrt(pow(xx-x,2)+pow(yy-y,2)); 
return (d); 
} 
float dlina(int x,int y,int xx,int yy) 

float d; 
d=sqrt(pow(xx-x,2)+pow(yy-y,2)); 
return (d); 
} 
 
Өзіндік жеке тапсырмалар: 
1.  Сыныптағы  әрбір  оқушының  бойы  мен  салмағы  белгілі.  Әрқайсысының 
салмағы  бойынан  қаншалықты  ауытқитынын,  яғни  қаншаға  артық  не  кем 
екенін анықтаңыз. 
2.  Екі  бөлшекті  қосу  керек.  Ең  үлкен  ортақ  бөлгішін  табуды  функция  түрінде 
жаз. 
3.  Автопаркте  белгілі  госномерлі  5  машина  жұмыс  жасайды.  Әрбір  жүргізуші 
күнде түскен табысты автошаруашылыққа тапсырады. Бір аптадағы күнделікті 
түсіп  отырған  табыс  мөлшері  белгілі.  Қай  машина  осы  аптада  ең  көп  табыс 
түсіргенін анықтаңыз. 
4.  Клавиатурада енгізілген сандардың жәй сан ба екенін тексеріңіз. 
5.  Апта  басында  дүкенге  5  түрлі  конфет  әкелінді.  Дүкенші  күнде  әрбір  конфет 
түрінен  қанша  табыс  түскенін  жазып  отырады.  Апта  соңында  қай  конфет 
түрінен көп пайда түскен? 
6.  Клавиатурадан  5  адамның  аты  енгізіледі.  Әрбір  адамның  атындағы  дауысты 
дыбыстар санын анықтаңыз. 
7.  Қаланың  5  дүкенінде  сатылатын  қаймақ  бағасы  белгілі.  Қай  дүкенде  қаймақ 
арзан, ал қай дүкенде қымбат екенін анықтаңыз. 
8.  Бір  аптаның  әрбір  күніндегі  ауа  температурасы  белгілі.  Әр  аптаның  орташа 
температурасын анықтаңыз. 
9.  Фирма  қызметкерлерінің  жастары  белгілі.  Жасы  орта  жастан  жоғары 
қызметкерлердің санын анықтаңыз. 
10.  Компьютерлік  кластағы  мониторлардың  шығарылған  жылы  белгілі.  Ең  көне 
монитордың шығарылған жылын анықтаңыз. 
11.  Бес  бөлменің  әрқайсысын  сырлау  үшін  қажетті  ақ,  қызыл,  көк,  түсті  бояу 
саны  белгілі.  Ақ,  қызыл,  көк  бояулардың  әрқайсысынан  барлығы  қаншасы 
қажет. 
12.  Топтағы студенттердің  туған айы белгілі. Олардың қаншасы қыста, қаншасы 
көктемде, қаншасы жазда, қаншасы күзде туғанын анықтаңыз.  
13.  Кассадағы 200-к, 500-к және 1000-қ купюралар саны белгілі. Барлығы кассада 
қанша ақша бар? 

 
 
 
14.  Топтағы  әрбір  студенттің  себепті  және  себепсіз  жіберген  сағаттар  саны 
белгілі.  Жалпы  топтағы  себепті  және  себепсіз  жіберілген  сағаттар  саны 
қанша? Қайсысы көп? 
15.  Театрда  спектакльге  сатылған  билеттер  саны  және  әрбір  қатардағы  билет 
құны белгілі. Осы спектакльден театрға қандай мөлшерде табыс түсті. 
 
Бақылау сұрақтары: 
 
1.  Ішкі программалар дегеніміз не? 
2.  Функция қандай типті мәндер қайтара алады? 
3.  Функция параметрлерінің берілу механизмі қандай? 
4.  Қай уақытта функцияларды қолданған дұрыс? 
Блиц-тест: 
1. Функцияның ішінде ғана пайдаланылатын аргументтер қалай аталады: 
A) Формальді; 
B) Глобальді; 
C) Нақты; 
D) Уақытша; 
E) Локальді; 
 
2. Ешқандай мән қайтармайтын функцияны көрсетіңіз: 
A) void kos(int x, int y); 
B) float kos(float y); 
C) bool kos(int x, int y); 
D) float kos(char x); 
E) double kos( float *p); 
 
 
3. Аргументтері бүтін тип ретінде сипатталған функцияны көрсетіңіз: 
A) bool kos(int x, int y); 
B) float kos(float y); 
C) void kos(int x, int y); 
D) float kos(char x); 
E) double kos( float *p); 
 
Глоссарий: 
  Функция параметрлері – ішкі программаға берілетін бастапқы мәндер 
мен нәтижелік мәндердің көшірмесі немесе оларға Көрсеткіштер тізімі. 
  Жергілікті объектілер- феукция денесінде сипатталып сонда ғана 
қоланылатын элементтер. 

 
 
 
  функцияның прототипі – (әдістемелік нұсқауды қараңыз) 
  Формальды аргумент – (әдістемелік нұсқауды қараңыз) 
  Нақты аргумент  – (әдістемелік нұсқауды қараңыз) 
Әдебиеттер: 
 
[1-6],[13],[15]. 
 

 
 
 
Лабораториялық жұмыс №8 
 
Тақырыбы: АЛГОРИТМДЕРДІ ҚҰРУДЫҢ РЕКУРСИЯЛЫҚ ӘДІСТЕРІ 
Мақсаты: 
Студенттерді 
рекурсиялық 
функциялармен 
және 
рекурренттік 
тізбектермен таныстыру. 
Қажетті материалдар мен жабдықтар:  ДК, лабораториялық жұмысты орындауға 
арналған әдістемелік нұсқаулар. 
 
Лабораториялық жұмыстың мазмұны және орындалу реті: 
 
1.  С/С ++  тілінде рекурсивті алгоритмдерді программалауға қатысты 
әдістемелік нұсқау – матриалдарды алдын ала танысып меңгеру. 
2.  Ұсынылған мысалды орындау және талқылау. 
3.  Өзіндік жеке тапсырмалардың оқытушы ұсынған нұсқасын орындау. 
4.  Лабораториялық жұмыстың есебін (отчет) дайындап тапсыру. 
 
Әдістемелік нұсқау: 
 
Рекурренттік  тізбек  түсінігі  математика  курсынан  белгілі.  Мысалы,  а
1
,  ...,  а
k
 
тізбегінің  k  саны  белгілі  болсын.  Бұл  сандар  сандық  тізбектің  алғашқы  сандары 
болып табылады. Тізбектің келесі элементтері былай есептеледі: 
a
k+1
=F(a
1
, …, a
k
);  a
k+2
=F(a
2
, …, a
k+1
);  a
k+3
=F(a
3
, …, a
k+2
); …  
Мұндағы F дегеніміз k аргументтен тұратын функция.  
a
i
=F(a
i-1
,  a
i-2
,  …,  a
i-k
)  формуласы  рекуррентік  формула  деп  аталады.  Ал  k  өлшемі 
рекурсия тереңдігі деп аталады.  
 
Яғни, рекурренттік тізбек дегеніміз – бұл шексіз сандар тізбегі және оның 
әр мүшесі алдыңғысы арқылы есептеледі, бастапқы k-ны санамағанда. 
Рекурренттік  тізбек  ретінде  арифметикалық  (1)  және  геометриялық  (2)  тізбектерді 
қарастыруға болады: 
a
1
 = 1,   a

= 3,   a

= 5,   a

= 7,   a

= 9, …   
 
 
 
 
(1) 
a
1
 = 1,   a

= 2,   a

= 4,   a

= 8,   a

= 16, …   
 
 
 
 
(1) 
Келтірілген арифметикалық прогрессияның рекурренттік формуласы:    a

= a

+ 2. 
Келтірілген геометриялық прогрессияның рекурренттік формуласы:     a

= 2 * a
i-1. 
Екі  жағдайда  да  рекурсия  тереңдігі  1-ге  тең  (мұндай  тәуелділікті  бір  қадамды 
рекурсия  деп  те  атайды).  Тармақталған  формулаға  келтірілген  жағдайда, 
арифметикалық прогрессия үшін: 
a
i
 = 







.
1
,
2
,
1
,
1
1
i
егер
a
i
егер
i
 
Геометриялық прогрессия үшін: 
a
i
 = 






.
1
,
*
2
,
1
,
1
1
i
егер
a
i
егер
i
 
 

 
 
 
Есеп 1. Арифметикалық прогрессияның (1) n – ші элементін есептеңіз. 
 
#include  
 
int recurs_1( int n ) { 
  if ( n == 1 ) { 
    return 1; 
  } 
  return recurs_1( n - 1 ) + 2; 

 
void main() { 
  int number; 
  cout << "САн енгізіңіз: "; 
  cin  >> number; 
  cout << "Арифм. прогр. элементі = " << recurs_1( number ) << '\n'; 

Есеп  2.  Геометриялық  прогрессияның  (2)  алғашқы  n  элементін  қосындылаңыз 
(прогрессияның  алғашқы 
n  мүшесінің  қосындысын  есептеу  формуласын 
пайдаланбаңыз). 
1 – ші шешу жолы сілтеме арқылы орындалған: 
 
#include  
 
int recurs_2( int n, int& s ) { 
  if ( n == 1 ) { 
    s = 1; 
    return 1; 
  } 
  int b = recurs_2( n - 1, s ) * 2; 
  s += b; 
  return b; 

void main() { 
  int number; 
  cout << "Санды енгізіңіз: "; 
  cin >> number; 
  cout << '\n'; 
  int summa; 
  cout << "Нәтижесі = " << recurs_2( number, summa ); 
  cout << " сумма = " << summa << '\n'; 

 
2 – ші шешу жолы глобалды айнымалыны қолдану арқылы орындалған: 
 

 
 
 
#include  
 
int summa_2; 
 
int recurs_2_2( int n ) { 
  if ( n == 1 ) { 
    summa_2 = 1; 
    return 1; 
  } 
  int b = recurs_2_2( n - 1 ) * 2; 
  summa_2 += b; 
  return b; 

 
void main() { 
  int number; 
  cout << "Санды енгізіңіз: "; 
  cin >> number; 
  cout << '\n'; 
  summa_2 = 0; 
  cout << "Нәтижесі. = " << recurs_3_2( number ); 
  cout << " сумма = " << summa_2 << '\n'; 

 
Келесі сандық тізбек математикада Фибоначчи сандары ретінде танымал: 
1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 
Бұл  сандардың  ерекшелігі  үшінші  элементтен  бастап,  әр  сан  оның  алдындағы  екі 
санның  қосындысына  тең,  яғни  рекурренттік  тізбектің  тереңдігі  2-ге  тең  (екі 
қадамды рекурсия). Оны тармақталған түрде сипаттайық: 
a
i
 = 









.
2
,
,
2
,
1
,
1
2
1
i
егер
f
f
i
i
егер
i
i
 
Есеп 3. Алғашқы n Фибоначчи сандарын баспаға шығару. 
 
#include  
 
int recurs( int n, int& s ) { 
  if ( n == 2 ) { 
    s = 1; 
    cout << " 1, 1, "; 
    return 1; 
  } 
  int p; 
  s = recurs( n - 1, p ); 
  cout << s + p << ", "; 
  return s + p; 

 
 
 

 
void main() { 
  int number, temp; 
  cout << "Введите число: "; 
  cin >> number; 
  cout << '\n'; 
  recurs( number, temp ); 

 
№8 лабораториялық жұмыстың тапсырмалары 
 
1.  Геометриялық прогрессияның (2) n – ші элементін есептеңіз. 
2.  Арифметикалық  прогрессияның  (1)  алғашқы  n  элементін  қосындылаңыз 
(прогрессияның  алғашқы  n  мүшесінің  қосындысын  есептеу  формуласын 
пайдаланбаңыз). 
3.  Алғашқы n Фибоначчи сандарының ішінен жұп сандардың санын анықтаңыз. 
4.  Рекурренттік тізбек келесі түрде анықталған: 
a
i
 = 









.
0
,
1
*
,
0
,
1
1
i
åãåð
i
i
a
i
åãåð
i
 
Берілген нақты n үшін a

мәнін есептеңіз. 
5.  
a
i
 = 












.
1
,
1
,
1
,
0
,
1
1
2
i
егер
i
a
a
i
i
егер
i
i
 
1-20-ші элементтердің көбейтіндісін есептеңіз. 
6.  Рекурренттік әдісті пайдаланып, Горнер формуласы бойынша 10 дәрежелі 
көпмүшенің қосындысын есептеңіз. Мұндағы x – берілген нақты сан: 
 
10x
10
 + 9x
9
 + 8x
8
 + … + 2x
2
 + x = (( …((10x + 9)x + 8)x + … + 2)x + 1)x. 
7. Берілген нақты x пен натурал N үшін келесі тізбекті есептеңіз: 
 
x/(1 + x/(2 + x/(3 + x/( …/(N + )) … ). 
8.  
,
!
1
...,
,
!
3
1
,
!
2
1
,
1
N
 сандық қатарының 10
-5 
мәнінен асатын барлық мүшелерін 
есептеп, шығарыңыз. 
9. Берілген натурал N мен нақты x (x > 0) үшін келесі өрнектің мәнін есептеңіз: 
 
x
x
x



...
 
10. Факториалды есептеудің рекурсивті функциясын құрыңыз. 
11. Екі бүтін санның ең үлкен ортақ бөлгішін табу (ЕҮОБ) Евклид алгоритмін 
рекурсивті функцияның көмегімен программалаңыз. 
12. F(x)=x

функциясының есептелуін рекурсияны пайдаланып шығарыңыз. 
13. F(x)=x
 
теңдеуін шешу үшін рекурсивті функция құрыңыз. Оның жұмысын 
cos(x) және sqrt(x+1) функциялары арқылы тексеріңіз. 

 
 
 
14. x нүктесіндегі n ретті Лежандр полиномының мәнін есептеу үшін рекрсивті 
функцияны құрыңыз. Лежандр полиномы келесі түрде анықталады: 
 
P
0
(x) = 1, 
 
P
1
(x) = x, 
 
P
n
(x) = ((2n-1)P
n-1
(x)-(n-1)P
n-2
(x))/n. 
15. Нүктемен аяқталған текст жолы берілген. Осы текстті кері ретпен экранға 
шығарыңыз. 
16. Берілген нақты x пен бүтін n бойынша x
n  
мәнін келесі формулаға сәйкес 
есептейтін рекусиялық функцияны құрыңыз: 
 
x















.
0
,
*
,
0
,
1
,
0
,
1
1
n
x
x
n
x
n
n
n
 
17. Нақты n және m сандары берілген. ЕҮОБ (n, m) = ЕҮОБ (m, r) (мұндағы r – n-
ді m-ге бөлгендегі қалдық) қатынасына негізделген ең үлкен ортақ бөлгішті 
есептеу рекурсиялық функциясын пайдаланып, ЕҮОБ (n, m) табыңыз. 
 
Блиц- тест: 
1. 
Функция 
ешқандай 
мән 
қайтармаса 
қандай 
типпен 
сипатталады? 
A) Void; 
B) Int; 
C) Double; 
D) Char; 
E) Bool; 
 
2. Рекурсияның түрлері: 
A) Тіке, жанама. 
B) Тізбекті, тізбексіз. 
C) Статикалық, динамикалық. 
D) Терең, тайыз. 
E) Шексіз, шектеулі. 
 
Бақылауға арналған сұрақтар 
 
1.  Функциялардың рекурсивті пайдаланылуы дегеніміз не? 
2.  Рекурренттік тізбек түсінігі? 
3.  Рекурсия тереңдігі нені білдіреді? 
4.  Тіке және жанама рекурсияның айырмашылығы? 
5.  Рекурсияны қай жағдайда қолданған жөн? 
6.  return операторының қызметі? 
7.  Стек дегеніміз не? 
8.  Қай  тізбекте  стектің  толтырылуы  және  стектен  элементтердің  таңдалуы 
орындалады? 
9.  Рекурсивті алгоритмде рекурсиядан шығу шарты әрдайым болу керек пе? 

 
 
 
10. Рекурсивті алгоритм өзін-өзі «шексіз» рет шақырған жағдайда не болады? 
11. Рекурсивті алгоритм арқылы орындалған есепті, рекурсивті емес алгоритммен 
шығаруға болады ма? 
 
Глоссарий: 
  Рекурренттік тізбек- (әдістемелік нұсқауды қараңыз) 
  Рекурсивті алгоритм- (әдістемелік нұсқауды қараңыз) 
 
 
Әдебиеттер: 
[6],[8], [10],[12],[13],[15]. 

 
 
 
ЛАБОРАТОРИЯЛЫҚ  ЖҰМЫС  №9 
 
Тақырыбы:  С/С++ ТІЛІНДЕ  ГРАФИКАНЫ ПРОГРАММАЛАУ 
Мақсаты:  - С/С++ тілінің графикалық мәліметтерді өңдеу мүмкіндіктерімен       
                       танысу. 
-   файлдарында сипатталған негізгі графикалық 
функциялардың прототиптерін үйрену.  
Қажетті материалдар мен жабдықтар:  ДК, лабораториялық жұмысты орындауға 
арналған әдістемелік нұсқаулар. 
 
Лабораториялық жұмыстың мазмұны және орындалу реті: 
 
1.  С/С ++  тілінің графиктік мүмкіндіктері мен графиктік режимді орнатуға 
қатысты әдістемелік нұсқау – матриалдарды алдын ала танысып меңгеру. 
2.  Ұсынылған мысалды орындау және талқылау. 
3.  Өзіндік жеке тапсырмалардың оқытушы ұсынған нұсқасын орындау. 
4.  Лабораториялық жұмыстың есебін (отчет) дайындап тапсыру. 
Негізгі әдістемелік нұсқаулар: 
 
 
 
С/С++ тіліндегі графиканың негігі элементтері 
 
1. Драйверді және графикалық режимді таңдау 
detectgraph (&gd, &gm) 
функция арқылы орындалады. 
2. Драйверді жүктеу, графикалық жүйені инициализациялауды  
initgraph (&gd, &gm, "BGI-файлдың жолы") 
функциясы атқарады, мұндағы gd және gm айнымалылары қажет драйвер мен 
графикалық режимнің номерлері.  
Егер ВGI-файлдар ағымдағы директорияда орналасса, онда initgraph() 
функциясының үшінші параметрі ретінде бос жолды беруге болады 
initgraph (&gd, &gm, " "); 
3. Графикамен жұмыс жасағанда қате жағдайларды өңдеу үшін  
graphresult ( ); 
функциясы  қолданылады.  Ол  соңғы  қолданылып  отырған  графикалық  функцияның 
аяқталу кодын қайтарады. Қате болмаса, «0» қайтарылады. 
 
Фон түсін мына функция арқылы басқаруға болады: 
setbkcolor (Color); 
Ағымдағы түсті мына функциямен тағайындауға болады: 
setcolor (Color); 

 
 
 
Графикалық режимде шрифт түрін, символдар өлшемін және бағытын 
тағайындау мына фнкция арқылы жүзеге асырылады:  
settextstyle (шрифт, бағыты, өлшемі); 
Шрифт параметрлері: 

DEFAULT_FONT     (стандартты) 

TRIPLEX_FONT       (триплекс типті; TRIP.CHR файлында) 

SMALL_FONT          (кішірейтілген;  LITT.CHR файлында) 

SANS_SERIF_FONT (түзу; SANS.CHRфайлында) 

GOTHIC_FONТ       (готикалық; GOTH.CHR файлында) 
 
Бағыт параметрлері: 

HORIZ_DIR 
(солдан оңға қарай)  

VERT_DIR  
(төменнен жоғары қарай) 
Шрифт размерін басқаратын аргумент 1 мен 10 аралығында өзгереді. Ол әрбір 
символының қаншаға үлкейетінін көрсетеді. 
Геометриялық объектілер сызықтарының сипаттамасы мен қалындығын  
тағайындау үшін  
setlinestyle (түрі, үлгісі, қалындығы); 
функциясы қолданылады. 
Қалындық параметрлері:  

NORM_WIDTH    (бір  пикселі сызық) 

THICK_WIDTH    (үш пикселді сызық) 
 
Түр параметрі үшін кодтар: 

SOLID_LINE 
(тұтас) 

DOTTED_LINE  (нүктелерден) 

 
CENTER_LINE  (нүктелер мен тирелерден) 

DASHED_LINE   (пунктирлі) 

USERBIT_LINE   (қолданушымен анықталады) 
 
Үлгі параметрі түр 4 тең болғанда тағайндалады. Сондықтан оны 0-ге тең деп 
алуға болады.  
Графикалық режимде экрандағы тұйық облысты бояу мүмкінідігі бар. Бояу 
стилін тағайындау үшін  
setfillstyle (бояу типі, түсі); 
функциясы қолданылады. 
Бояу типі  параметрлерінің мәндері: 

EMPTY_FILL 
фон тұсімен штрихтау  

SOLID_FILL 
көрсетілген түспен тұтас бояу 

LINE_FILL 
горизонталь сызықтармен штрихтау 

LTSLASH_FILL  ///// сызықтармен штрихтау 

SLASH_FILL       ////// қалыңдатылған сызықтармен штрихтау 

BKSLASH_FILL    \\\\\\ қалыңдатылған сызықтармен штрихтау 

LTBKSLASH_FILL \\\\\ сызықтармен штрихтау 

HATCH_FILL 
тікбұрыштры горизонталь  бойынша штрихтау 

 
 
 

XHATCH_FILL  қисайтып штрихтау 

INTERLEAVE_FILL 
қисайтып штрихтау 
10 
WIDE_DOT_FILL  сирек орналасқан нүктелемен толтыру 
11 
CLOSE_DOT_FILL 
жиі орналасқан нүктелемен толтыру 
 
Терезелер және координаттармен жұмыс 
1. Экранды тазалау мына функция арқылы жүзеге асырылады:  
cleardevice (); 
2. Берілген графикалық режимде горизонталь және вертикаль бойнша нүктелер 
координаттарының максимальді мәнін 
getmaxx (); 
(горизонталь бойынша максимальді координатаны қайтарады), 
getmaxy (); 
(вертикаль бойынша максимальді координатаны қайтарады) 
функцияларының көмегімен анықтауға болады. 
3. Графикалықэкрандағы терезені ашу. Экран нүктелерінің бәр массиві ішінен 
ішкі массив - өзінің координаттары бар тікбұрышты терезе ашуға болады. Ол 
төмендегі функция арқылы жүзге асырылады: 
setviewport (xl, yl, x2, y2, clip); 
мұндағы xl, yl – терезенің жоғары сол жақ бұрышының координаттары; х2, у2 – 
терезенің төменгі оң жақ бұрышының координаттары; clip – қима (отсечка). 
Егер clip параметрі 1-ге тең болса, терезеде симай тұрған сурет элементтері 
қиылып тасталады,ал егер 0-ге тең болса терезе шекарасы өзгертіледі. 
 4. Графикалық терезені тазартуды төмендегі функция орындайды: 
clearviewport (); 
5. Ағымдағы көрсеткіш координаттарын 
getx (); 
(горизонталь координатты қайтарады), 
gety (); 
(вертикаль координатты қайтарады) 
функция арқылы алуға болады. 
6. Позиция көрсеткішінің орнын ауыстыруды мына функциялар жүзеге асырады: 
moveto (x, у); 
moverel (dx, dy); 
мұндағы х, у – терезенің координаттар жүйесіндегі жаңа координаттар; 
dx, dy – терезедегі көне координаттарға қатысты өсімше. 
7. Параметрлер қалпына келтіру үшін 
graphdefaults (); 
функциясы қолданылады. 
Initgraph() тағайындағандай терезе, позици көрсеткіші, түсі, сызық стилі, шрифттер 
қалпына келтіріледі. 
8. Пикселді бейне жадыға жазуды  

 
 
 
putpixel (x, у, цвет); 
функциясы жүзеге асырады. 
Мұндағы х, у – пиксел координаттары. Мысалы мына  фрагменттің орындалуы 
нәтижесінде  
for(i=0; i<160; i++) 

putpixel (i, 10, GREEN);  
putpixel (160+i, 10, RED);  

жасыл-қызыл түзу сызық шығарылады. 
9. Текстті шығару. 
Шығарудің стандартты printf(), puts() функциялары графикалық режимде де жұмыс 
жасайды. Бірақ онда символдар түрі, өлшемі шектеулі. Шығарылатын текст стилі 
settextstyle() функциясымен беріледі.Графикалық текстті шығарудың екі функциясы 
бар: 
outtext (sp); 
ажол ғымдағы көрсеткіштен бастап шығарылады; sp – шығарылатын жолға 
Көрсеткіш; 
outtextxy (x, у, sp); 
жол (х, у) позициясынан бастап шығарылады. 
 
 Графикалық объектілерді салу. 
1. Сызықтарды үш түрлі функция көмегімен салуға болады: 
line (x1, y1, x2, y2); 
мұндағы x1, y1 – кесінді басының координаттары; х2, у2 – кесінді аяғының 
координаттары. 
linerel (dx, dy); 
мұндағы dx, dy – ағымдағы нүкте координаттарының өсімшесі. Кесінді ағымдағы 
нүктеден жаңа координатты нүктеге дейңн салынады. Көрсеткіш бұрыңғы нүктеден 
жаңасына ығысады. 
lineto (x, у); 
мұндағы  х, у – кесінді аяғының жаңа координаттары. Көрсеткіш бұрыңғы нүктеден 
жаңасына ығысады. 
Кесінділер setlinestyle() функциясы арқылы тағайындалған ағымдағы 
стильмен, және setcolor() функциясы арқылы тағайындалған ағымдағы түспен 
салынады. 
3. Тіктөртбұрыш контурын мына функциямен салуға болады:   
rectangle (x1, y1, x2, y2); 
мұндағы x1, y1 – жоғары сол жақ бұрыш координаттары; х2, у2 – төменгі оң жақ 
бұрыш координаттары. 
Егер  квадрат  салу  керек  болса,  горизонталь  және  вертикаль  бойынша  пиксельдер 
санын коррекциялау керек. Пиксельдер пропорциясын 
getaspectratio (&xasp, &yasp); 
функциясының көмегімен анықтауға болады. 
xasp/yasp қатынасы пиксель өлшемдрінің горизонталь және вертикаль бойнша 

 
 
 
қатынасы.  
4. Сынық сызықты  
drawpoly (төбелер саны, бүтін массивке Көрсеткіш); 
функциясы салуға мүмкіндік береді. 
Массивтің әрбір екі саны сынық сызықтың кезектегі қос координатын білдіреді. 
5. Қисықтарды салу үшін мынадай функциялар қолданылады:  
Вычерчивание окружности 
circle (x, у, радиус); 
мұндағы  х, у – центр координаттары; радиус – горизонталь бойынша шеңбердің 
пиксельдегі радиусы.  

Достарыңызбен бөлісу:
1   ...   13   14   15   16   17   18   19   20   21




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет