Б. БӨрібаев c/C++ тілдерінде программалау (практикалық курс) Жогары оқу орьшдарына арналған оку құралы э в е р о алматы 2015 Эверо


§■ / *   тіркестің 32 жолын шыгару керек,  ал экранда тек 25 жол



Pdf көрінісі
бет2/11
Дата24.03.2017
өлшемі16,45 Mb.
#10341
1   2   3   4   5   6   7   8   9   10   11
§■
/ *
  тіркестің 32 жолын шыгару керек,  ал экранда тек 25 жол 
көрінеді,сондықтан  алғашқы жолдарды(7  жолды)  керу ушін 
экранды аялдата  тұру  керек,  әйтпесе ол жылдам  "ете шығады". 
Экранды аялдатуды келесі  турде орындауга болады: 
* /  
printf(,f\nPress  any  key  to  continue,  please!"); 
while  (fkbhitO);
/*  kbhit()функциясы бір перне басуды күттіріп турады.Ол 
егер перне басылса,"ақиқат”  мәнін,  әйтпесе  -  пжалгани мәнін 
қайтарады.
  Сонымен, бос цикл жумысы кез  келген  бір перне 
басылганша,  жалгасады.  Бул  функция сопіо.һ тақырып фаилында 
сипатталган.
  Мунда экранды  аялдата туруды getch();  функциясы 
арқылы орындауга болады.  */
//  25-жол  -  тіркестің алгашқы екі  символын  шыгару,
//  ең кіші  epic ені  19-га  тең,  мәндерді 
оң
 жақ шетке 

/  босорындар қоса отырып туралау 
printf(”\n[%d]  %19.2s",  ++iln,  psz);
I I
  26-жол  -  тіркестің алгашқы екі  символын  шыгару,
I I
  ең кіші  epic ені  19-га тең,  мәндерді  сол жақ шетке 
//  босорындар коса  отырып туралау 
printf(”\n[%d]  %-19.2s",  ++iln,  psz);
I I
  27-жол  -  тіркестің алгашқы алты символын  шыгару,
I I  
ең кіші  epic ені  19-га  тец,  мәндерді 
о н
 жақ шетке

/  босорындар қоса  отырып  туралау
printf("\n[%d]  %*,*s",  ++iln,  19,  6,  psz);
//  28-жол  -  dPi  мәнін шыгару,  еч кіші  epic ені  10-га төң,
I I  
ондық нуктеден сод сегіз цифр
11

printf<"\n[%d]  %10.8f",  ++iln,  dPi) ;
//  29-жол  - dPi мөнін шыгару,  өң кіші  epic өні  20-га тец,
//  ондық нуктеден соң өкі  цифр,  мөндерді  он жақ шөткө
//  босорындар қоса отырып туралау
printf("\n[%d]  % 2 0 .2 fи ,  ++iln,  dPi );
//  30-жол  - dPi мэнін шыгару,  ен кіші  өріс өяі  20-га твң,

/  ондык нуктеден соң терт ц иф р,  мәндерді  сол жақ шетке 
// босорындар қоса отырып туралау 
printf  ("\n[%d]  %-20. 4ffe,  ++iln,  dPi) ;
//  31-жол  -  dPi мэнін шыгару,  ең кіші  epic ені  20-га тең,
//  ондық нуктеден соң терт цифр,  мәндерді  оң жақ шетке 
//  босорындар қоса отырып туралау 
printf("\n[%d]  % 2 0 .4f” ,  ++iln,  d Pi) ;
//  32-жол  - dPi мэнін шыгару,  ен кіші  epic ені  20-га тең,
//  ондық нуктеден  соң екі цифр,  мәндерді  оң жақ шетке 
//  босорындар қоса отырып туралау,гылыми формат  (экспонента) 
printf(H\n[%d]  %20.2e\n",  ++iln,  d Pi) ;
// Kepy тередесін аялдату
getch() ; 
*

-  -  •  - 
Осы профамма жұмысының нәтижесі:
[  1] A
[  2 ]
65
[  3 ]
Z
[  4]
2 3 2 2
[  5 ]
4d2
I  6]
4D2
I  7 ]
A
I  8 ] A
[  9] A  s t r i n g
f o r   e x p e r i m e n t s
[Ю ] A  s t r i n g
f o r   e x p e r i m e n t s
[1 1 ]
A  s t r i n g   f o r   e x p e r i m e n t s
[1 2 ]
A  s t r i n g
f o r   e x p e r i m e n t s
[1 3 ]
1 2 3 4
[1 4 ]
+ 1234
[1 5 ]
1 2 3 4
[1 6 ]
1 2 3 4
[1 7 ]
1234
[1 8 ]
0 0 0 0 0 0 1 2 3 4
[1 9 ]
3 .1 4 1 5 9 3
[2 0 ]
3 .1 4 1 5 9 3
[2 1 ]
0 0 0 0 0 0 0 0 0 0 0 0 3 .1 4 1 5 9 3
[2 2 ]
3 .1 4 1 5 9 3
[2 3 ]
A  s t r i n g
f o r   e x p e r i
[2 4 ]
A
P r e s s i  a n y   k e y t o   c o n t i n u e ,  p l e a s e !
1.3 сурет.  Форматталып  шыққан нәтижелердің алгашқы беті
12

[10] A  string for experiments
[11]
A  string for experiments
112] A  string for experiments
[13] 1234
[14] +1234
[15] 1234
[16]
1234
[17] 1234
[18] 0000001234
[19] 3.141593
[20]
3.141593
[21] 0000000000003.141593
[22] 3.141593
[23] A  string for experi
[24] A
Press
i
  any  key
to  continue,  please!
[25]

/'■'■За 

 
I
[26] A
[27]
A  stri
[28] 3.14159265
[29]
3.14
[30] 3.1416
[31]
3.1416
[32]
3 .14e+000
Press:
  any key to <
continue
1.4 сурет. Форматталып шыккан нәтижелердің екінші беті
1.6  C++ тілінде маліметтерді ағындар аркылы  шығару
Си++  тілінің  кітапханасын  пайдаланғанда  iostream.h  атты  кітапханалык  файл 
қолданылады,  онда  пернетақтадан  енгізу  кезінде  сіп,  экранға  шығаруда  cout 
стандартты  мәлімет  агындары  жэне  соларға  сәйкес  төмендегі  операциялар  да
анықталған.
а)  «  — мәліметтерді ағынға жазу операциясы;
ә)  » ~  мәліметтерді ағыннан оқу операциясы;
#include  ;
cout «   " \  пЭлементтер санын енгіэіңіз:
  "; 
сіп »  п;
Мұндағы  C++  тілінде  келтірілген  такырыптык  < i o s t r e a m . h >   файлында 
енгізу/шығаруды баскару  кластары  жиынын  сипаттау  мәліметтері бар.  Iostream.h
-  енгізу/шыгару  кітапханасының  стандартты  тақырып  файлы.  Бұл  кітапхана 
программадағы  c o u t   ағымы  жайлы  акпарат  береді.  Бұл  файлда  мәліметті 
пернетактадан  енгізуге  арналған  стандартты  с і п   объект-ағымдары  жэне  экранға
13

мәлімет  шығаратын  c o u t  объект-агымдары  анықталып,  ағымға мәлімет беру  «  
жэне ағымнан мәлімет оку »  операциялары қарастырылган.
C ++ тілі стиліндегі негізгі енгізу/шыгару функциялары оның кластары кітапха- 
насын  пайдаланады.  Оны  түсіндіру  үшін  тагы  бір  программа  мысалын
қарастырайық.
«include Ciostream.һ> 
// C++ тіліндвгі  программа
int m a i n O

int і; 
:
'
l
cout «   "Бутін сан өнгізіңіз:\п";
сіп »  і; 
t
 
I
cout «   "Сіз  n  «   і  «   ”санын  енгіздіңіэ,  рахмет!";
return  0;


Мұндағы  < i o s t r e a m . Һ>  — енгізу/шығару  кітапханасынын стандартты  тақырып 
файлы.  Ол  программадагы  мәліметтер  ағымы  жайлы  ақпарат  береді,  x o s t r e a m  
сөзі  i n p u t / o u t p u t   s t r e a m  сөздерінің  қысқаша жазылуынан  шықкан  сөз.  Бұл 
файлда  мәліметті  пернетакпгадан  енгізуге  арналган  стандартты  с і п   ағымы  және 
экранға  мәлімет  шыгаратын  c o u t   ағымы  аныкталып,  ағымға  мәлімет  беру  «  
және ағымнан мәлімет оку »  операциялары арқылы орындалады.
■  ’■г*
с± п  — ағылшынша  «С» және «input»  сөздерінен,  ал  cout — «С» және «output»
сездерінен кұралған.
c o u t   «   ’'Б у т і н   с а н   е н г і д і ң і э : \ п п ;  жолы  экранга  кос  тырнақ- 
шадағы сөз тіркесін шығарып, курсорды келесі жолға көшіреді.
с і п   »   і ;   жолы  пернелерден  енгізілген  бүтін  санды  і   айнымалысына 
меншіктейді.
c o u t   «   " С іэ   и  «   і   «   "сан ы н   е н г і з д і ң і з ,   р а х м е т ! ” ; 
жолы  қос  тырнакшадағы  тіркестерді  өзгеріссіз,  ал  і   айнымалысы  орнына  оның
енгізілген сандық мэнін экранға шығарып береді.
С  тілінің  енгізу/шығару  функцияларына  қарағанда, 
C++  тілінің  ағымдары 
әртүрлі  типтермен  жеңіл,  әрі  жылдам  жұмыс  істеуді  қамтамасыз  ете  алады  деп
саналады.
Агымнан  мәлімет  оқу  оны  агымнан  алу  деп,  ал  ағымға  мәлімет  шығару
оларды агьшга қосу деп айтылады.
C++  тілінде 
мәліметтерді 
форматталған  түрде  шығаруды  толыгырак
карастырайық.
C++ тілінде мәліметтерді экранға  шығару мысалдары
Келесі  программа  осы  функциясының  эртүрлі  мүмкіндіктерін  көрсетуге
арналган [5].
/ *
 
Бұл 
программа 
C++ 
тілхнде  мэліметтерді 
шыгару  үшің.
(

қолданылатын  жалаушалар  мен  функциялардың  жұмысын  керсетеді.
14

Мүнд/ағы  барлық  материалдар  түсінікті  болмауы  мүмкін,  бірақ, 
практика  жүвінде  қолдануга  болатын  бірсыпыра  мысалдар  оларды 
түсінуге жанө пайдалануга жол ашады. 
*/
#include   //  осы тақырыптьа; файл іске  қосылады,
//  өйткені  ostrstream осына  сипатталған
#define  MAX LENGTH 20  // MAX LENGTH 20-га тең болады
void row (void) ;
/+  Бүл жол немірія шыгару функциясының прототипі.
  Программа 
орындалуы барысында осы арідылы эрбір жол немірі  квадрат жақша 
ішіне шыгарылып отырады 
* /  
void  m a i n ()

Щ
|   • ' 
•  Щг  а  
:
сһаг  с =  'А* 
,
  psz[]  =  "It is а  string for experiments 
" ,  
strbuffer [MAX LENGTH] ;  // жадты белу  (реэервте) 
int ivalue =  1234,  w; 
double dPi  = 3.14159265;
Щ
і
/  /
  с символын шыгару 
row(); 
//  [1]
cout «  с;
//  с символының ASCII-кодын шыгару 
row () ; 
//  [2]
cout «   (int) с;
// ASCII-коды  90  болып келген символды шыгару 
r o w () ; 
//  [3]
cout «   (char)90;
//  ivalue  аинымалысының менін сегіздік жүйеде шыгару 
row(); 
//  [4]
cout «  oct «   ivalue;
//  ivalue айнымалысының мәнін  төменгі  резтистр әріптерімен 
//  он ал 
тылы 
қ жуйеде шыгару
row  (); 
//  [5]
cout «  hex «   ivalue;
//  ivalue  айнымалысының мәнін жогаргы регистр әріптерімен 
//  он алтылық жүйеде шыгару 
row  () ; 
//  [6]
co ut . setf (ios:: uppercase) ; 
//  он алтылық жүйе үшін
//  жогаргы регистрді  қосу
cout «  hex «  ivalue;
15

c o u t . u n s e t f ( i o s : : u p p e r c a s e ) ;  1 1   к о г а р г ы   р е г и с т р д о .  а л у
c o u t   «   d e c ;  
1 1   ОНДЫ*  ж ү й е г е   қ а к * у
//  бхр символ шыгару,  ерістіц ең  кіші  ені  5—кө  тен,

/  босорындармен толтыра отырып  оңға туралау 
/*  width () функциясы шыгарьшатын epic өнін береді.  Ол тек 
келесі  шыгару операторына рана эсер етеді,а л ,  мысалы, 
precision () функциясының есері  ол  қайта  қолданылғанша  немесе 
setprecision ()  фунісциясы шаідирьшганша сацталада. 
* /  
row ( 
) ; 
//  1*^1 
,..  ,
cout.width(5);
cout «  с; 

 .
//  бір символ шыгару,  ерістіц өц кіші  өні  5-ке теп 
г
 

/  босорындармен толтыра отырып  солга туралау 
r o w () ; 
//  [8]
co ut .width(5);
cout.setf(ios::left);
c o u t   «   c ;  
'  V ’ 
}-  u
c o u t . u n s e t f ( i o s : : l e f t ) ;
//  сев тіркесін шыгару,  24  символ  бейнеленеді
row  (); 
//  [9]
cout «  p s z ; 
-
 
-/У
//  кем дегенде,  бес символ шыгару
row  О ;  
//  {10)
cout.width  (5); 
-
cout «  psz; 
ІІ
//  кем дегенде,  тіркестіц 38  символын шыгару 
//  вывод минимум 38  символов строки,
//  босорындармен  толтыра  отырып  онрга  туралау 
r o w (); 
//  [11]
cout .width (38) ; 

^ ‘
cout «  psz;
//  кем дегенде,  тіркестін 38  символын шыгару 
//  босорындармен толтыра  отырып солга  туралау 
4
c o u t .
 width (38) ; 
Я В
cout. setf (ios: : left) ;
COUt  «   PSZ; 
"•  '*** 

 
I  №•" 
^:Vv;\  L
-;;: 
:
:
 
.
cout.unsetf(ios::left);
//  ivalue иәнін  шыгару,келісім бойынша, 

цифр шыгады
r o w () ; 
//  (13] 
•"
16

//  ivalue мэнін тацбасымен
r o w (); 
//  [14]
cout.setf(ios::showpos); 
cout «   ivalue; 
cout.unsetf(ios::showpos);
//  ivalue мәнін,кем дегендеA3 цифрмен шыгаруды керсету 
//  негізінде,сіздің талап орындалмай,4 цифр шыгарылады
row  (); 
//  [15]
cout 
.width  (3) ; 
cout «  ivalue;
//  ivalue мәнін,кем д е г е н д е Д О   цифрмен шыгару 
//  босорындармен толтыра отырып оңга туралау
row () ;
cout.w i d t h (10); 
cout «   ivalue;
//  [16]
//  ivalue мәнін,кем дегенде, 10 цифрмен шыгару
//  босорындармен толтыра 
r o w ( ) ; 
/ /   [ 1 7 ]
c o u t . w i d t h (1 0 ) 
c o u t . s e t f ( i o s : 
c o u t   «   i v a l u e  
c o u t . u n s e t f ( i o s : : l e f t ) ;
отырып солга туралау
//  ivalue мәнін,кем дегенде,10 цифрмен шыгару
//  нелдермен толтыра 
row  ()  ; 
/ /
c o u t . w i d t h
(10) 
c o u t . f i l l ( 10 • )
отырып оңга туралау 
[18]
cout.fill(•  '
 )
'
  dPi  м ә н і н ,келісім бойынша,форматтап шыгару
row(); 
//  [19]
cout «  d P i ;
h
 
к е р ш
//  Экранды аялдату!
/*  Бүл  экранга шыққан мәліметтерді 
үлгеру үшін керек.  Экранды а я л д а т у ---
II 
атынДағы 
ПМУ-лш*
c o u t «  "\nPlease, input any letter or|пцв1?ес,tp.con11n^e(\n
м 

^ ^ ^ ^ ь е и с е м б з е   •
II  аШад'“ 

//  dPi  мэнін
_КІТАПХАН
аггі
ыгару, 
epiс ені , кем дёРШэдехЗД^яа..
 
тең,
/ /
  босорындармен толтыра отырып оңга туралау
17
Ш
Ф
Ж

r o w ( ) ; 
/ /   [ 2 0 ]
c o u t . w i d t h ( 2 0 ) ;
cout «  dPi;
//  dPi мөнін шыгару,өріс е н і ,кем дегенде,20-га  тең,
//  нөлдөрмен  толтыра  отырып оңға туралау
row () ;• 
//  [21]
cout.width(20); 
co ut .f i l l (10'); 
cout «  dPi; 
c o u t .f i l l (•  ') ;
//  dPi  мәнін шыгару,еріс е н і ,кем дегенде,20-га  тең,

/  босорындармен  толтыра  отырып солга туралау 
row 
( ) ;  
/ /   [2 2 ]
cout.width(20) ; 
c o u t .setf(ios::left) ; 
cout «  dPi;
//  dPi  мәнін  шыгару,өріс е н і ,кем дегенде,20-га  тең,
//  нөлдермен толтыра отырып солга туралау
r o w ( ) ;  
/ /   [ 2 3 ]
c o u t . w i d t h ( 2 0 ) ;  
c o u t . f i l l ( • 0 1)  ;
cout  «  dPi;
c o u t .unsetf(ios::left) ;
c o u t .f i l l (•  •);
// тіркестің 19 символын шығару, epic ені , кем дегенде, 19-га тең 
r o w (); 
//  [24]
ostrstream(strbuffer
,
  2 0 ) .write(psz,  19)  «  ends;
/* 
Мүнда 
класс 
жэне 
класс 
конструкторы 
түсініктері 
қолданылады, 
олар  туралы  кейін  амтылады. 
Әзірге  мынадай 
тусінік  береміз.Мүндай  жазу  қажеттілігінің  туындаган  себебі 
форматтау  жалаушалары  <  операторына  эсер  етеді,бірақ  керсе- 
тілген  символдар  санын  жазатын  w r i t e ()  функциясына  е м е с .Оньщ 
шыгаратын  мэндері  әрқашанда  сол  жақ  шетке  тураланады. 
Мүны 
езгерту  ушін  буферлік  тіркесті  анықтап,  сонымен  әре|сеттер 
орындайды.  */
cout.width(19) ;
cout «   strbuffer;
/*  тіркестің алғашқы екі  символын шыгару,  ейткені  ушіншісі 
\0  —  тіркес  соңы белгісі  болады 
* /  
row  () ; 
//  [25]
ostrstream(strbuffer,3).write(psz
, 2)  «
  ends; 
cout «   strbuffer;
18

//  тіркестің алгашқы екі  символын шыгару,  ерістің ең кіші
ен£
//  19-га  т е ң , босорындармен толтыра  отырып оңга туралау 
row  (); 
//  [26]
c o u t .width <19); 
cout «   strbuffer;
//  тіркестің алғашқы екі  символын шыгару,  ерістің ең кіші
ені
//  19—га т е ң ,босорындармен толтыра  отырып солга туралау
row  (); 
//  [27]
c o u t .w i d t h (19);
c o u t .setf(ios::l e f t ) ; 
cout «   strbuffer; 
cout.unsetf(ios::left);
//  dPi мәнін  оның бөлшек  бөлігінің тоғыз  цифрымен шыгару 
row  О ; 
//  [28]
c o u t .p r e c i s i o n (9); 
cout «  dPi;
//  dPi  мәнін  оның белшек  белігінің екі цифрымен шыгару,
//  epic ені ,кем деі^енде,20-га тең 
//  босорындармен толтыра  отырып одга туралау
r o w (); 
//  [29]
co ut. wi dth (20); 
c o u t .p r e c i s i o n (2); 
cout «   dPi;
//  dPi  мәнін  оның белшек  белігінің терт  цифрымен шыгару
r o w (); 
//  [30]
c o u t .p r e c i s i o n (4); 
cout «  dPi;
//  dPi  мәнін  оның белшек  белігінің терт цифрымен шыгару 
//  epic е н і , кем д е т е н д е , 20-га тең 
//  босорындармен толтыра  отырып оңга туралау
r o w (); 
//  [31]
c o u t .w i d t h (20); 
cout «  dPi;
//  dPi  мәнін шыгару,epic е н і ,к е м д е г е н д е ,2 0 - г а тең 
//  ондық нүктеден  кейін  терт цифрмен шыгару,
//  босорындармен толтыра  отырып оңга туралау 
//  ғылыми формат  (экспонентамен)
19

r o w ( )   ;
c o u t . s e t f ( i o s : :  
c o u t . w i d t h ( 2 0 ) ;
c o u t   «   d P i ;  
c o u t . u n s e t f ( i o s  
c o u t   «
  " \ n " ;
//  [
3 2
]
}
vo id  row (void)
{
static  int In = 0 ;   /*  In айнымалысы  static турінде 
жарияланған,сондықтан r o w ()функциясын 
қайтадан ш а қ ы р ғ а н д а , In  айнымалысының соңгы 
мәні  сақтала ды.Бул  алдыңғы жолдың немірін 
программаньщ  "есте  сақтауы"  ушін жасалган
* /
cout «   "\п  [|в; 
cout.width(2) ; 
cout «   ++ln «   ” 
]  м ;
}
Программа орындалған кездегі оның алғашқы  19 жолы суретте көрсетілген.
[  1] A
[  2]
65
[  3]
Z
[  4]
2322
[  5]
4d2
[  6] 4D2
[  7]
A
[  8] A
[  9] It is a  string for experiments
[ Ю ]
[11]
It is a  string 
It is  a
for experiments
Ж 
_  * 
_  _ 
____  
— ____ —
___ *  -
 -  -  .
 -  Д
string for experiments
[12]
It is a  string for experiments
[13]
1234
[14]
+1234
[15]
1234
[16]
1234
[17]
1234
[18]
0000001234
[19]
3.14159
I
 Please, input any letter or number  to  continue
1.5 сурет. C++ тіліндегі экранга шыққан нәтижелердің алғашқы беті
20

Программ ага, мысалы, "у" әріпін енгізіп, Enter пернесі басылганда, экранға 
калган жолдар жұмысының нэтижесі шығарылады.
[ 1 3 ]
[ 1 4 ]
+ 1 2 3 4  
т  :Һ’'
[ 1 5 ]
[ 1 6 ]
1 2 3 4
[ 1 7 ]
1 2 3 4  
--
[ 1 8 ]
0 0 0 0 0 0 1 2 3 4
[ 1 9 ]
3 . 1 4 1 5 9  
■'  ' Ы, ;
P l e a s e , i n p u t   a n y   l e t t e r   o r   n u m b er  t o   c o n t i n u e
У
[ 2 0 ]
3 . 1 4 1 5 9
[ 2 1 ]
0 0 0 0 0 0 0 0 0 0 0 0 0 3 .1 4 1 5 9
[ 2 2 ]
3 . 1 4 1 5 9
[ 2 3 ]
3 .1 4 1 5 9 0 0 0 0 0 0 0 0 0 0 0 0 0
[ 2 4 ]
I t   i s   a   s t r i n g   f o r
[ 2 5 ]
i t   :
-  -  -  ■
  '■
  • * 
'
[ 2 6 ]


Достарыңызбен бөлісу:
1   2   3   4   5   6   7   8   9   10   11




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

    Басты бет