СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Информатика и втипо и ис

Категория: Информатика

Нажмите, чтобы узнать подробности

Для предподавателей и студентов. Деп айтат 

Просмотр содержимого документа
«Информатика и втипо и ис»

I. С/C++ ТІЛІНІҢ НЕГІЗІ


    1. С/C++ бағдарламалау тілінің негізі. Тілдің алфавиті. Деректер типтері


С бағдарламалау тілі 1972 жылы Bell Laboratories фирмасының қызметкері Денис Ритчидің басшылығымен Америкада жасап шығарылды. Одан бұрын А және В бағдарламалау тілдері пайда болғанымен, бірақ олар кең қолданыс таба алмады.

С тілі- құрылымы Паскаль тіліне ұқсас жоғары деңгейлі қуатты тіл. Оның төменгі деңгейлі Ассемблер тілімен де ұқсастығы бар. Сондықтан, оны әдебиеттерде орташа деңгейлі тіл деп те атайды.

С тілі арқылы компилятор және операциялық жүйе сияқты жүйелік бағдарламалар жазылады. Бұл тілде жазылған алғашқы бағдарламалық жабдық- Unix операциялық жүйесі.

С тілінің стандарты 1983 жылы Американың ұлттық стандарттар институтында бекітілді және ANSI C деп аталды. 1980 жылдың басында сол фирма қызметкері Бьерн Строуструп С тілінің нысанды- бағдарлы кеңейтілуін жасады. Ол тіл 1983 жылы С++ деп аталды.

С++ тілінің алфавиті

Барлық бағдарламалау тілдерінің өз алфавиті болады. Алфавит – бағдарламада пайдаланылатын түрлі символдар (әріптер, цифрлар, таңбалар, белгілер). С/C++ тілінің алфавиті төмендегідей:

  • Латын алфавитінің бас (A-Z) және кіші (a-z) әріптері

  • Араб цифрлары: 0 – 9

  • Арнайы символдар: { }, | [ ] ( ) + - / % \ ; ‘ : ? _ ! & # ~ ^ . *

Жолда, символдық тұрақтыда және түсіндірме мәтінде басқа да белгілер, мысалы орыс алфавитінің әріптері қолданылады. Бос орын символымен бөлінбеген кейбір символдар комбинациясы тұтас бір символ ретінде түсініледі.

Мысалы: ++ -- == && ||

Түсіндірме мәтін Турбо С тілінде /* */ символдар жұбы арқылы,

С++ -те // символдары көмегімен жазылады.

Мысалы: 1) /* Герон формуласы */

2) // Үшбұрыштар теңсіздігі

Идентификаторлар

Әріптен немесе _ белгісінен басталған латын әріптерінің, цифр және _ белгісінің тізбегі идентификатор болып табылады.

Мысалы: x1, esep_1,max, _min, SUMMA

Паскаль тілінен айырмашылығы бұл тілде бас және кіші әріптер ажыратылады. Мысалы: max, Max, MAX, mAX- әртүрлі идентификаторлар.

Қызметші сөздер

Паскаль тіліндегі сияқты С++ -те қызметі бір мәнді анықталатын идентификторлар- қызметші сөздер қолданылады. Олардың толық тізімі компилятор түріне байланысты болады. Дегенмен, барлығына ортақ қызметші сөздер тізімі болады.

Мысалы: auto, break, сase, char, continue, if, goto, void, while, long, union т.б.

Деректер типтері

Сандық деректердің С++ тілінде 4 базалық типі бар. Олар int, char- бүтін, float, double- нақты.

Олардан басқа бағдарламада бұл типтердің модификациясы қолданылады. Олар төмендегі 1- кестеде көрсетілген.


Кесте 1. С++ тіліндегі деректер типтері

Типтің аты

Мәндер аралығы

Өлшемі (байт)

1. Бүтін типтер

char

- 128 .. +127

1

enum

- 32768 .. 32767

1

int

- 32768 .. 32767

2

unsigned char

0 .. 255

1

unsigned int

0 .. 65535

2

short int

- 32768 .. 32767

2

unsigned short

0 .. 65535

2

long int

- 2147483648 .. 2147483647

4

unsigned long int

0..4294967295

4

2.Нақты типтер

float

±(3.4 e-38.. 3.4 e+38)

4

double

±(1.7 e-308.. 1.7 e+308)

8

long double

±( 3.4 e – 4932.. 1.1 e+4932)

10


С++ тіліндегі бағдарламада айнымалыны сипаттау форматы төмендегіше болады:

типтің_ аты айнымалылар_ тізімі;

Айнымалыларды сипаттау мысалдары:

int x,y,z;

unsigned long max1,max2;

float a,b,c;

Сипаттаумен бір мезгілде айнымалының бастапқы мәнін беруге де болады. Мұндай әрекет айнымалыны инициализациялау деп аталады.

Жалпы түрі: тип айнымалының_ аты= бастапқы_ мәні;

Мысалы: int Sum=0, n=0;

float p=1.55 ;

unsigned int x=100, year=2013;



Тұрақтылар

Бүтін және сандық тұрақтылар Паскаль тіліндегідей жазылады. Ерекшелігі, суффикс қолдануға болады, ол арқылы бағдарламалаушы тұрақтының типін көрсетеді. Суффикстің үш типі болады: F (f) - float, U(u)- unsigned, L(l) - long.

Сонымен қатар, U және L суффикстерінің қосарлы UL немесе LU нұсқалары да қолданылады.

Мысалы: 3.14F, 100U, 512345UL

Cимволдық тұрақтылар апострофқа алынады. Мысалы: ‘V’, ’a’, ’1’, ’%’, ’)’

Ал символдар тізбегінен құралған жолдық тұрақтылар тырнақшаға алынады.

Мысалы: “Қосынды=”, “х, у мәндерін енгіз”.

Символдық тұрақтылар ішінен басқару символдары деп аталатын символдар тізбегі ерекше қызмет атқарады. Олар экранға шығаруды басқаруды жүзеге асырады. Басқару символдары ‘\’ символынан басталады. Басқару символдары төменде көрсетілген:

\n’- жаңа жолға өту

\t’- көлденең табуляция

\r’- меңзерді жол басына қайтару

\\’- кері сызық

\’’- апостроф

\0’- нөлдік символ

\a’- дыбыстық сигнал беру

\b’- бір символға кері қайтару

\f’- келесі бетке өту

\v’- тігінен табуляция

\?’- сұрақ белгісі

Мысалы: “\n Мәтін \n үш жолға \n шығады”

Тұрақты айнымалылар

Тұрақты айнымалыларды жазу үшін const қызметші сөзі қолданылады. Жалпы түрі: const тұрақтының_типі тұрақтының_ аты =мәні;

Мысалы: const float x=2.55, y=1.22;

const int min=1, max=100;

Тұрақты айнымалыларды #define директивасы арқылы да жазуға болады. Жалпы түрі: #define тұрақтының_ аты тұрақтының_ мәні;

Бұл жағдайда жоғарыдағы мысал былайша жазылады:

#define x 2.55

#define y 1.22

Ескерту! Бұл жағдайда тұрақтының аты мен мәнінің арасына теңдік белгісі және соңында нүктелі үтір белгілері қойылмайды.

Саналатын тип тұрақтылары

Атаулы бүтін санды тұрақтыларды саналатын тип арқылы енгізуге болады. Оның жазылуының жалпы түрі:

enum саналатын_ мәндердің _типі {атаулы_тұрақтылар_тізімі};

мұндағы enum- саналатын мәндерді енгізудің қызметші сөзі;

Атаулы тұрақтылар тізімі тұрақтының_аты= тұрақтының_ мәні түрінде болуы да мүмкін.

Мысалы: enum {one=1,two,three,fout};

enum Day {Sunday, Monday,Tuesday};

enum Boolean {Yes,No};

Саналатын типтегі мәндер 0-ден бастап, солдан оңға қарай өсу ретімен нөмірленеді.


    1. Операциялар. Стандарт функциялар


Өрнектер тұрақтылар мен айнымалылардан, арифметикалық, логикалық және қатынас операциясының белгілерінен және стандарт функциялардан құралады.

Бір операндқа қолданылатын операция унарлық, екі операндқа қолданылатын операция бинарлық деп аталды.

Арифметикалық операциялар

Бинарлық арифметикалық операцияларға келесілер жатады:

+ қосу

- азайту

* көбейту

/ бөлу

% модуль бойынша бөлу (Паскальдағы mod- тың ұқсасы, яғни бір операндты екіншіге бөлгендегі қалдық).

Ал, унарлық арифметикалық операциялар:

++ бірге арттыру (инкремент)

- - бірге кеміту (декремент)

% операциясынан (ол тек қана бүтін санға қолданылады) басқасы деректердің кез келген типіне қолданылады.

Мысалы: x=x+1, x++, ++x үш операцияның нәтижесі бірдей.

+, - операцияларының айнымалының оң немесе сол жағында жазылуы әртүрлі рөл атқарады. Егер операция сол жағында тұрса, (мысалы ++x) алдымен бірге арттыру әрекеті орындалады, керісінше жағдайда (яғни, x++) бірге арттыру әрекеті айнымалы өзі кіретін барлық өрнек есептеліп болған соң ғана орындалады.

Мысалы:1) x=5; y=x++; алдымен х- тің мәні у-ке меншіктеледі, сонан соң ғана х- тің мәні 1- ге өседі. х- тің бастапқы мәні 5-ке тең болса, жоғарыдағы операция нәтижесінде y=5, x=6 болады.

2) x=5; y=++x; операциясының нәтижесінде x=6, y=6 болады.

3) a=3; c=2; x=a++ * c++; Нәтижеде a=4, c=3, x=6 болады.

4) a=3; c=2; x=++a * ++c; Нәтижеде a=4, c=3, x=12 болады.

Қатынас операциялары

С++ тілінде басқа бағдарламалау тіліндегі сияқты қатынас операциялары қолданылады. Олар:

үлкен

= үлкен немесе тең

= = тең

!= тең емес

Паскаль тілінен ерекшелігі “тең” және “тең емес” қатынастарының белгіленуінде ғана.

С++ тілінде деректердің логикалық типі жоқ. Сондықтан, қатынас операциясының нәтижесі бүтін сан болады. Егер шарттың нәтижесі ақиқат болса, 1-ге, жалған болса 0-ге тең.

Мысал: 51, ‘x’==’x’ қатынастарының мәні 1-ге, ал 5!=5, ‘x’==’X’ қатынастарының мәні 0-ге тең.

Логикалық операциялар

Негізгі логикалық операциялар С++ тілінде төмендегіше белгіленеді:

&& - конъюнкция (логикалық «және»)

|| - дизъюнкция (логикалық «немесе»)

! - инверсия немесе терістеу (логикалық «емес»)

Төмендегі 2- кестеде өрнектердің логикалық және қатынас операцияларын қолданып, С++ тілінде жазылу мысалдары көрсетілген.


Кесте 2. Логикалық және қатынас операциялары

математикалық өрнектің жазылуы

С++ тілінде жазылуы

0

x0 && x

y≤-1 немесе y≥1

y=1

x≠y

!(x= =y)

a=b

a= =b

‘a’≠’A’

‘a’!=’A’


Логикалық және қатынас операцияларының орындалу реті төмендегіше болады:

  1. !

  1. , =,

  1. ==, !=

  2. &&

  3. ||

Меншіктеу операциясы

Меншіктеу операциясының жалпы түрі төмендегіше болады:

айнымалының атауы=өрнек;

Мысалы: x=5; D=b*b-4*a*c; a=b=0;

Cонымен қатар, С++ тілінде меншіктеу операциясының құрама түрі қолданылады: +=, -=, /=, *=, %=

Мысалы: Төмендегі өрнектер баламалы болып табылады.

i+=2 және i=i+2

p/=5 және p=p/5

a*=b+c және a=a*(b+c)

x-=y және x=x-y

n%2 және n=n%2

х=х+2 өрнегінің орнына х+=2 деп жазған ыңғайлы болып табылады, себебі екінші өрнек тезірек орындалады.

Шартты операция

Шартты операция үш операндқа арналған операция. Оның форматы:

логикалық өрнек ? 1- өрнек: 2- өрнек;

немесе

айнымалы=логикалық өрнек ? 1- өрнек: 2- өрнек;

Бұл операция тармақталу алгоритмдік құрылымын жүзеге асырады. Алдымен, логикалық өрнектің мәні есептеледі. Егер оның мәні ақиқат болса, онда 1- өрнек, керісінше жағдайда 2- өрнек орындалып, нәтиже экранға шығады.

Мысалы:

  1. х айнымалысының модулін анықтау

x ? –x: x;

  1. екі санның үлкенін табу

max=(a

  1. екі санның үлкенін екі еселеу

ab ? 2*a: 2*b;

Мәндері компьютердің арнайы бағдарламалары арқылы автоматты түрде есептелетін функциялар стандарт функциялар деп аталады.

С++ тілінің стандарт функциялары 3- кестеде көрсетілген. Бұл функциялар math.h тақырыптық файлында анықталған.


Кесте 3. С++ тілінің стандарт функциялары

Математикалық

функцияның жазылуы

С++ тілінде жазылуы

Аргумент типі

Нәтиженің типі

Ескерту

| x |

abs (x)

int

int

бүтін санның абсолют шамасы

| x |

fabs (x)

double

double

нақты санның абсолют шамасы

sinx

sin(x)

double

double

х- радиан

cosx

cos(x)

double

double

х- радиан

tgx

tan(x)

double

double

х- радиан

e x

exp(x)

double

double

e = 2,718 …

lnx

log(x)

double

double

натурал логарифм, x0

lg(x)

log10(x)

double

double

ондық логарифм

sqrt(x)

double

double

квадрат түбір, x=0

xy

pow(x,y)

double, double

double

x-тің y дәрежесі

10p

pow10(p)

int

double

10-ның p дәрежесін қайтарады

arcsinx

asin(x)

double

double

х- радиан

arccosx

acos(x)

double

double

х- радиан

arctgx

atan(x)

double

double

х- радиан

y/x мәнінің арктангенсін табу функциясы

atan2(x,y)

double, double

double

х- радиан

sinhx

sinh(x)

double

double

гиперболалық синус, х- радиан

coshx

cosh(x)

double

double

гиперболалық косинус, х- радиан

tanhx

tanh(x)

double

double

гиперболалық тангенс, х- радиан

х-тен кем емес, оған жақын бүтін

ceil(x)

double

double

нәтижені double формасында қайтарады

х-тен артпайтын, ең үлкен бүтін

floor(x)

double

double

нәтижені double формасында қайтарады

x- ті y-ке бөлгендегі қалдық

fmod(x,y)

double, double

double

нәтижені double формасында қайтарады

z2=x2+y2

hypot(x,y)

double, double

double

x,y катеттері бойынша тікбұрышты үшбұрыш гипотенузасын табу


Барлық басқа функциялар түрлендіріліп, стандарт функцияларға келтіріледі.

II. С/C++ ТІЛІНДЕГІ СЫЗЫҚТЫҚ, ТАРМАҚТАЛУ ЖӘНЕ ТАҢДАУ ҚҰРЫЛЫМДЫ БАҒДАРЛАМАЛАР


2.1 С/C++ тіліндегі қарапайым бағдарлама құрылымы. Енгізу, шығару операторлары. Сызықтық бағдарлама


С/C++ тіліндегі бағдарлама құрылымы келесі бөліктерден тұрады:

  1. Бағдарлама тақырыбы

  2. Айнымалыларды сипаттау

  3. Бағдарлама денесі

Бағдарлама тақырыбы #include препроцессорлық директивасынан басталады. Бір бағдарламаға бірнеше тақырыптық файл қосылуы мүмкін. Тақырыптық файлда бағдарламада қолданылатын стандарт кітапханалық функциялар сақталады. Ол функцияны қолданар алдында include операторы арқылы сәйкес тақырыптық файл қосылуы қажет.

Мысалы: 3- кестеде көрсетілген стандарт математикалық функцияларды қолдану үшін бағдарлама тақырыбында #include командасы жазылуы қажет.

Тақырыптық файлдардың типі h болады (h- header- тақырып).

Паскаль тіліндегі сияқты C++ тілінде де бағдарламада қолданылатын айнымалылар алдымен сипатталуы (хабарлануы) қажет. Оның жалпы түрі:

типтің_ аты айнымалылар_ тізімі;

Мысалы: int a,b;

char k1,k2,k3;

unsigned char c;

float x1,y1;

double e,f,g;

Бағдарлама денесі main() функциясынан кейін орналасады. Жалпы түрі:

main()

{

операторлар;

}

Бағдарлама денесі {} фигуралық жақшаға алынады.

Экранға форматтап шығару операторы

Экранға форматтап шығару операторының жалпы түрі төмендегіше болады:

printf(“формат жолы”, аргументтер тізімі);

printf() операторында экранға шығатын айнымалының форматын көрсететін түрлендіру спецификаторы қолданылады. Ол % белгісінен басталады. Төмендегідей түрлендіру спецификаторы қолданылады:

%d- таңбалы бүтін сан

%f- тұрақты үтірлі нақты сан (float)

%u- таңбасыз бүтін сан (unsigned)

%e- жылжымалы үтірлі нақты сан (double)

%c- символ

%s- жол

%ld- ұзын бүтін (long int)

%hu- таңбасыз қысқа бүтін (short unsigned)

%Lf- ұзын нақты(long double)

printf() операторын қолдану мысалдары:

printf(“\n Қосынды=%d”, S);

printf(“\n S =%d”, S);

printf(“ Есептің нәтижесі”);

printf(“ \n Шеңбер ауданы=%f”, 3.14*R*R);

Мұндағы, %d, %f экранға шығатын бүтін және нақты айнымалының спецификаторы.

Нақты санды экранға форматтап шығаруға болады. Ол үшін екі параметр көрсетіледі:

өріс ені- айнымалыға экраннан бөлінетін орын саны

дәлдік- бөлшек бөлікке бөлінетін орын саны

Олар % және формат символының арасында бір- бірінен нүктемен бөлініп жазылады.

Мысалы: x=5.234532;

printf(“\n x=%4.2f”,x);

Нәтижеде экранға x=5.23 саны шығады.

Форматтап енгізу операторы

Пернетақтадан форматтап енгізу операторының жалпы түрі төмендегіше болады:

scanf(“формат жолы”, аргументтер тізімі);

Аргумент алдында & айнымалы адресінің операциясы жазылады.

Мысалы: scanf(“%d”, &x);

scanf(‘%d%d%f”,&a,&b,&y);

Деректерді енгізу- шығаруды жүзеге асыратын printf(), scanf() операторлары stdio.h тақырыптық файлында орналасқан. Сондықтан, бағдарламада осы екі оператор қолданылатын болса, онда бағдарлама тақырыбында #include stdio.h командасы жазылуы қажет. (stdio- standart input output- стандартты енгізу шығару)

Мысал 1. Радиусы берілген дөңгелектің ұзындығын және шеңбердің ауданын табу бағдарламасын құрыңдар.

#include

#include

main()

{ const float pi=3.14;

int r; float L,S;

printf(“ радиусты енгіз”);

scanf(“%d”,&r);

S=pi*r*r;

L=2*pi*r;

printf(“\n S=%4.2f L=%4.2f”, S,L);

getch();

}

Бағдарламаны орындатып, радиусқа 5 мәні енгізілсе, нәтижеде S=78.50 L=31.40 мәндері шығады.

Бағдарламаның нәтижесі кез келген пернені басқанға дейін экранда көрініп тұру үшін conio.h тақырыптық файлында анықталған getch() операторы қолданылады.

Мысал 2. Берілген үш таңбалы бүтін санның цифрларының қосындысын табатын бағдарлама құрыңдар.

#include

#include

main()

{ int x,y,a,b,c;

printf(“ үш таңбалы санды енгіз”);

scanf(“%d”,&x);

a=x/100;

y=x%100;

b=y/10;

c=y%10;;

printf(“\n S=%d”,a+b+c);

getch();

}

Бағдарламадағы “%” операциясы бүтін санды бүтін санға бөлгендегі қалдықты, ал “/” операциясы санды санға бөлгендегі бүтін бөлікті анықтайды.

Windows 7 операциялық жүйесінде С/С++ бағдарламалау тілінде жұмыс жасау үшін Dev- C++ бағдарламасы қолданылады. 1- cуретте бағдарламаның жүктелу терезесінің интерфейсі көрсетілген.


1-сурет. Dev- C++ бағдарламасының жүктелу терезесі

Dev- C++  Windows операциялық жүйесінің басшылығымен жұмыс жасайтын, С және С++ тілінде бағдарламалау үшін арналған интеграцияланған орта.

Dev- C++ қабықшасының артықшылықтары:

  • графиктік интерфейсі

  • орыс тілді мәзірдің болуы

  • GDB қондырылған жөндегіші

  • консольдық және графиктік бағдарламалар құру мүмкіндігі.

Dev- C++ бағдарламасының экрандық интерфейсі 2-суретте көрсетілген.


2- сурет. Dev- C++ бағдарламасының экрандық интерфейсі

Dev- C++ те бағдарлама мәтінін тергеннен кейін, Execute\Compile (немесе CTRL+9) командасы арқылы бағдарламаны компиляциялап, сонан соң Execute\Run (немесе CTRL+10) командасы арқылы бағдарламаны орындату керек.

С++ бағдарламалау тілінде деректерді енгізу және шығарудың өз спецификалық құралы бар. Ол iostream.h тақырыптық файлы көмегімен бағдарламаға қосылатын кластар кітапханасы болып табылады. Бұл кітапханада екі оператор анықталған:

cin- пернетақтадан енгізу

cout- экранға шығару

х айнымалысын енгізу былайша жазылады: cinx;

Шығару операторында тырнақшаға алынған мәтін және өрнек мәнін жазуға болады. Бұл операторда “

Мысалы: cout

cout

cout

endl элементі меңзерді жаңа жолға орналастырады. (\n басқару символына сәйкес)

Мысал 3. Төбелерінің координаттары берілген үшбұрыштың қабырғаларын табыңдар.

#include

#include

#include

main()

{ int x1,y1,x2,y2,x3,y3; float a,b,c;

coutx1y1;

coutx2y2;

coutx3y3;

a=sqrt(pow((x2-x1),2)+pow((y2-y1),2));

b=sqrt(pow((x3-x1),2)+pow((y3-y1),2));

c=sqrt(pow((x2-x3),2)+pow((y2-y3),2));

coutb= "c== "

getch();

}

Бағдарламаны орындату нәтижесінде

a=1.4142

b= 1

c= 2.2360 мәндері экранға шығады.


2.2 Тармақталу және таңдау операторлары


С++ тілінде тармақталу үш түрде жүзеге асырылады:

  1. ? шартты операция

  2. тармақталу немесе шартты оператор

  3. таңдау командасы.

Шартты оператордың жазылуының жалпы түрі:

if (шарт) 1- оператор; else 2- оператор; немесе

if (шарт) оператор;

Бұл оператор былайша орындалады: алдымен жақша ішіндегі шарт тексеріледі. Егер оның мәні ақиқат болса, яғни мәні 1- ге тең болса, 1- оператор, әйтпесе 2- оператор орындалады.

Мысал 4. Берілген екі санның үлкенін квадраттап шығаратын бағдарлама құрыңдар.

#include

#include

#include

main()

{ float x,y;

coutxy;

if (xy) x=pow(x,2); else y=pow(y,2);

coutx= "xy= "y;

getch();

}

Шартты операторда бір емес, оператор блогы болуы мүмкін. Олар фигуралық жақшаға алынып жазылады. Бұл жағдайда шартты оператордың жалпы түрі төмендегіше болады:

if (шарт) { операторлар}; else { операторлар};

Мысал 5. Берілген екі санның үлкенінің квадратын және кішісінің квадрат түбірін табатын бағдарлама құрыңдар.

#include

#include

#include

main()

{ float x,y;

coutxy;

if (xy) {x=pow(x,2); y=sqrt(y);} else {y=pow(y,2); x=sqrt(x);}

coutx= "xy= "y;

getch();

}

Мысал 6. Жазықтықта берілген нүкте центрі координат басындағы, ішкі радиусы 2- ге, сыртқы радиусы 3-к е тең сақинаға тиісті бола ма?

#include

#include

main()

{const float r1=2, r2=3;

float x,y;

coutxy;

if (x*x+y*y=r1*r1 && x*x+y*y

getch();

}

Мысал 7. Функцияны есептеу прогрммасын жазыңдар:

y

#include

#include

#include

main()

{float x,y;

cinx;

if (х1) ysqrt (х);

else if (x0) ypow(x,3)/5;

else ypow(х,2)+1;

couty=";

getch();

}

Таңдау операторы

Таңдау операторы арқылы бағдарламадағы мүмкін болатын бірнеше оператордың біреуі таңдалады.

Таңдау операторының C++ - те жазылуының жалпы түрі:

switch (өрнек)

{ case 1- тұрақты: 1- оператор; break;

case 2- тұрақты: 2- оператор; break;

default: оператор;

}

Бұл оператор былайша жұмыс істейді:

Алдымен өрнектің мәні есептеледі, сонан соң өрнектің мәніне тең тұрақты ізделінеді. Сәйкесінше, сол тұрақтыдан кейін жазылған оператор орындалады да, таңдау операторының жұмысы аяқталады. Егер тізімде есептелген мәнге тең тұрақты табылмаса, басқару default сөзінен кейін тұрған операторға беріледі.

Мысал 8. Апта күндерінің нөміріне байланысты оның қазақша – ағылшынша атауын экранға шығаратын бағдарлама құрыңдар.

main()

{ int n;

cout1-ден 7-ге дейінгі санды енгіз”;

cinn;

switch (n)

{case 1: coutДүйсенбі- Monday”; break;

case 2: coutСейсенбі- Tuesday”; break;

case 3: coutСәрсенбі- Wednesday”; break;

case 4: coutБейсенбі- Thursday”; break;

case 5: coutЖұма- Friday”; break;

case 6: coutСенбі- Saturday”; break;

case 7: coutЖексенбі- Sunday”; break;

default: coutҚате”;}

getch();

}

Мысал 9. Енгізілген 1- ден 4- ке дейінгі жыл мезгілінің нөміріне байланысты ондағы ай аттарының қазақша– ағылшынша атауын экранға шығаратын бағдарлама құрыңдар.

main()

{ int n;

cout1-ден 4-ге дейінгі санды енгіз”;

cinn;

switch (n)

{case 1: coutЖелтоқсан- December, Қаңтар- January, Ақпан- February”; break;

case 2: coutНаурыз- March, Сәуір-April, Мамыр- May”; break;

case 3: coutМаусым-June, Шілде- July, Тамыз- August”; break;

case 4: coutҚыркүйек- September, Қазан- October, Қараша- November”; break;

default: coutҚате”;}

getch();

}

Мысал 10. Ертегідегі “Оңға жүрсең- атыңнан айрыласың, солға жүрсең- қиындыққа тап боласың, тіке жүрсең- дос табасың” әрекеттерінен таңдау жасау бағдарламасын құрыңдар. (таңдау шарты: оңға- “о”, солға- “с”, тіке- “т”)

#include iostream.h

#include

main()

{ char x;

cout

cinx;

switch (x)

{

case 'o': coutАтыңнан айрыласың ";break;

case 'с': cout Қиындыққа тап боласың";break;

case 't': cout

getch();

}

Басқа бағдарламалау тілінен айырмашылығы С/C++ тілінде char типі бүтін сандық та, символдық та бола алады. Экранға қалай шығатындығы бұл шаманы қолдану тәсіліне байланысты болады.

Мысал 11.

#include

#include

main()

{ char x;

cinx;

printf("%c ",x);

printf("\n ",x);

getch();

}

Бағдарламаны орындатып, х- ке ‘А’ символын енгізсек,

x=А

x=65 мәндері экранға шығады. printf () операторында %c символдары жазылса, онда енгізілген символ, ал %d жазылса, енгізілген символдың ASCII коды экранға шығады.


2.3 Goto өту операторы және кездейсоқ сандарды шығару


Бағдарлама құру кезінде кейде басқаруды келесі оператордан басқа операторға беруге тура келеді. Ол үшін басқару берілетін оператор арнайы таңба бойынша белгіленіп қойылуы тиіс. Таңбадан кейін қос нүкте (:) қойылады. Басқаруды операторға беру үшін goto өту операторы қолданылады.

Оның жалпы түрі: goto таңба;

Мысалы:

goto a1;

a1: оператор;

b1, c1: оператор;

goto b1;

Таңба латын әрпі немесе әріп және санмен белгіленеді. Таңба жолдың басында, сонымен қатар жеке жолда жазылуы мүмкін. Ол жағдайда таңбадан кейін нүктелі үтір белгісі қойылады және ол бос оператор деп аталады.

Мысалы:

a1:;

goto a1; Нәтижеде басқару a1 таңбалы бос операторға беріледі.

Өту операторын қолдануға мысалдар қарастырайық.

Мысал 12. Экранға 1000, 999, 998, 997 т.с.с. шексіз тізбегін шығару бағдарламасын құру керек.

#include

#include

main()

{int x;

x=1000;

a1: cout

x--;

goto a1;

getch();

}

Бағдарламаны орындату нәтижесінде 1000- нан бастап бүтін сандар тізбегі кемімелі түрде экранға шығады. system("PAUSE") командасы нәтижені экранға кідіріспен шығаруды жүзеге асырады. Нәтиже экранға шыққаннан кейін жүйе кез келген пернені басуды сұрайды. Мысал 13. ax2 +bx+c=0 квадрат теңдеуінің шешімдерін табыңдар.

#include

#include

#include

main()

{ int a, b, c, D; float x1, x2, x;

cinabc;

D=b*b-4*a*c;

if (D0) {x1= (-b+sqrt (D))/(2*a); x2=(-b- sqrt (D))/(2*a);

coutх2; goto a1; }

if (Dшешімі жоқ” ; else {x=-b/(2*a); cout

a1: ;

getch();

}

Бұл бағдарламада D0 шартының ақиқат жағдайында goto a1 операторын, яғни a1- жолға өту операторын қоймаған жағдайда, экранға х1, х2 мәндерімен қатар, басқару else қызметші сөзінен кейін тұрған операторға беріліп, D=0 болғандағы х-тің мәні де шыққан болар еді. Ал мұндай жағдай бағдарламаның қате орындалуына әкеліп соғады.

Мысал14.

Берілген х бойынша у- ті есептеу бағдарламасын құрыңдар.

{ float x, y;

cinx;

if (x=1 && x

if (x

a1: cout

}

C++ тілінде кездейсоқ бүтін санды шығару үшін rand() функциясы қолданылады. Берілген [a,b] аралығындағы кездейсоқ бүтін санды шығару үшін функция былайша жазылады:

rand()% (b-a+1)+a;

Мысалы: [10,50] аралығындағы кездейсоқ бүтін санды шығару үшін команда x=rand()%41+10; түрінде жазылады.

rand() функциясы stdlib.h тақырыптық файлында анықталған.

Әрбір орындатқанда уақытқа байланысты әр түрлі кездейсоқ сандар алу үшін, яғни ағымдық уақытқа байланысты кездейсоқ санды генерациялау үшін time.h тақырыптық файлында анықталған srand(time(0)) командасы қолданылады.

Мысал 15. [0,10] аралығындағы кездейсоқ шыққан 3 бүтін санның нешеуі жұп екенін анықтайтын бағдарлама құрыңдар.

#include

#include

#include

#include

main()

{ int a,b,c,k=0;

srand(time(0));

a=rand()%10;

b=rand()%10;

c=rand()%10;

cout

if (a%2==0) k++;

if (b%2==0) k++;

if (c%2==0) k++;

cout

getch();

}

Мысал 16. Кездейсоқ шыққан үш бүтін санның неше әрекеттен кейін “бақытты жетілік” болатынын анықтайтын бағдарлама құрыңдар.

#include

#include

#include

#include

main()

{ int a,b,c,k=0;

srand(time(0));

a2: a=rand()%7+1;

b=rand()%7+1;

c=rand()%7+1; k++;

cout

cout

if (a==7 && b==7 && c==7) {cout

a1:;

getch();

}

Бағдарламаның Dev- C++-те орындалу нәтижесі 3 - суретте көрсетілген.


3-сурет. “Бақытты жетілік” бағдарламасының орындалу нәтижесі


  1. ЦИКЛ ОПЕРАТОРЫ


    1. Цикл операторы


Кейбір бағдарламаларда белгілі-бір шарттардың сақталуына тәуелді командалардың қандай да бір бөлігі бірнеше рет қайталанады. Мұндай әрекеттерді жүзеге асыратын командаларды қайталану ( цикл) командасы деп атайды. Басқа да бағдарламалау тілдеріндегі сияқты С++ тілінде бағдарламаның қайталанатын бөлігін бағдарламалау үшін цикл операторының 3 түрі қолданылады.

Олар: 1) параметрлі цикл (“үшін” циклі)

2) әзір циклі (жалғасу шарты бар цикл)

3) дейін циклі (аяқталу шарты бар цикл)

Параметрлі цикл

Оның жазылуының жалпы түрі:

for (1-өрнек;2- шартты_ өрнек; 3- өрнек)

цикл_ денесі;

мұндағы 1-өрнек цикл басында бір рет орындалады және цикл параметрінің бастапқы мәнін анықтайды;

2-шартты_ өрнек циклдің орындалуының шарты;

3- өрнек цикл параметрінің өзгеру қадамын анықтайды.

Мысалы: n факториалды (n!) есептеу бағдарламасының бөлігі:

  1. p=1;

for (i=1; i

p=p*i;

Бұл бөлікті басқаша жазуға да болады:

  1. for (p=1; i=1; i

p=p*i;

яғни, бастапқы мәнді цикл операторының ішіне кіргізуге болады.

  1. Жақша ішінде кейбір элемент болмауы мүмкін, бұл жағдайда оларды бөлетін ; белгісін жазу міндетті.

p=1; i=1;

for (; i

p=p*i;

  1. Цикл денесін жақша ішінде жазуға болады, бұл жағдайда жақшадан кейін нүктелі үтір (;) белгісі қойылады:

for (p=1; i=1; i, i++); немесе

for (p=1; i=1; i

Мысал 17. Екіден жиырмаға дейінгі барлық жұп сандардың қосындысын және көбейтіндісін табыңдар.

#include

#include

main()

{ int i; unsigned long int S=0, P=1;

for (i=2; i

{S+=i;

P*=i;}

cout

getch();

}

Нәтижеде S=110 P=3715891200 мәндері экранға шығады.

Цикл денесі құрама оператордан тұрса , онда олар {} фигуралық жақшаға алынады.

Паскаль тілінде бұл циклдегі қадам 1-ге ғана тең болса, мұнда қадамның мәні кез келген болады.

Мысал 18. Берілген бүтін санның барлық бөлгіштерін табыңдар.

main()

{ int i, n;

coutn;

for (i=1; i

if (n%i==0) cout

}

Мысал 19. Берілген санның көбейту кестесін шығарыңдар.

main()

{ int x,i;

coutx;

for (i=1; i i++)

{cout

cout

getch();

}

Бағдарламаның орындалу нәтижесі 4- суретте көрсетілген.


4- сурет. Санның көбейту кестесін шығару


“Әзір” циклі

“Әзір” циклінің жазылуының жалпы түрі:

while (шартты_ өрнек)

цикл денесі;

Бұл циклде әзір шартты өрнектің мәні 0- ден өзге болғанда, яғни цикл шарты ақиқат болғанда цикл денесі орындалады.

Мысал 20. Екі таңбалы барлық сандардың ішінен 5-ке бөлінетін және 10-ға бөлінбейтін сандарды экранға шығаратын және олардың санын табатын бағдарлама құрыңдар. Бағдарламаның орындалу нәтижесі 5- суретте көрсетілген.

main()

{ int x, k=0;

x=10;

while (x

{if (x%5==0 && x%10!=0)

{cout

x++;}

cout

getch();

}

5- сурет. Бағдарламаның орындалу нәтижесі

Мысал 21. x-тің -5-тен 5-ке дейін 0,2 қадаммен өзгерген мәндері үшін у=х2-1 функциясының мәндерін экранға шығарыңдар.

main()

{ float х, у;

х=-5;

while (х

{y=pow(x,2)-1;

cout

х+=0.2;}

}

Мысал 22. Барлық екі таңбалы жұп сандардың көбейтіндісін табатын бағдарлама құрыңдар.

main()

{ int i; unsigned long int P=1;

i=2;

while (i

{ P=P*i; i+=2; } //немесе P*=i; i+=2;

cout

}

Мысал 23. Екі натурал санның ең үлкен ортақ бөлгішін және ең кіші ортақ еселігін табатын бағдарлама құрыңдар.

#include

#include

main()

{ int a,b,EYOB, EKOE,k;

coutЕкі сан енгіз"; cinab;

k=a*b;

while (a!=b)

if (ab) a=a-b; else b=b-a;

EYOB=a;

cout

cout

getch();

}

“Дейін” циклі

“Дейін” циклінің жазылу форматы:

do

цикл денесі

while (шартты_ өрнек);

Бұл циклде цикл денесі ең болмағанда бір рет орындалады. Шартты өрнектің мәні 0- ден өзге болғанда, яғни цикл шарты ақиқат болғанда цикл денесі орындалады, керісінше жағдайда цикл аяқталады. Бұл цикл Паскаль тіліндегі repeat .. until цикліне ұқсас, айырмашылығы бұл циклде Паскальда кері шарт жазылса, мұнда тура шарт жазылады.

Мысал 24. n факториал (n!) табу есебін “дейін” циклі арқылы жүзеге асырайық.

main()

{ int i, n; long int P;

coutан енгіз"; cinn;

P=i=1;

do

P*=i; i++; //немесе P*=i++;

while (i

cout

}

Мысал 25. Алғашқы 10 жұп санның көбейтіндісі мен арифметикалық ортасын табыңдар.

main ()

{ int i, P=1, S=0;

i=2;

do

P*=i; S+=i;

i=i+2;

while (i

coutКөбейтінді=”Арифм.орта=”

}

Мысал 26. 1, 1/4, 1/9,…1/n2 тізбегінің әрқайсысы берілген Е- ден кем емес мүшелерінің қосындысын табыңдар.

main ()

{int i; float S, E;

cin E;

i=1;

do

S+=i/pow(i,2);

i++;

while (1/ pow(i,2) E);

cout

}


    1. Циклді басқарудың break және continue операторлары

Циклді басқару үшін break, continue 2 оператор қолданылады. Олар циклді қолдану мүмкіндігін кеңейтіп, бағдарлама құрылымын жақсартады.

break- циклді тоқтатуды жүзеге асырады; басқару циклден кейін тұрған операторға беріледі.

continue -циклдің кезекті қадамының орындалуын мерзімінен бұрын аяқтауды жүзеге асырады; басқару циклдің келесі мәніне беріледі.

break операторын қолданып циклді үзу циклдің басында да емес (for, while циклдеріндегі), цикл соңында да емес (do цикліндегі), цикл денесінің ортасында жүзеге асады. Бұл жағдайда цикл денесінің құрылымы төмендегіше болады:

{

операторлар;

if (шарт) break;

}

Мысал 27. n бүтін сан берілген. Олардың көбейтіндісін есептеңдер. Егер сан 0-ге тең болса, циклден шығу үшін break операторын қолданыңдар.

main()

{int i, n, x, P=1;

cinn; //санның нешеу екенін енгізу

for (i=1; i

{ cinx; // әрбір санды енгізу

if (x==0) break;

P*=x;}

coutP=”

}

Мысал 28. n бүтін сан берілген. Олардың ішінен 5-ке бөлінетін ең алғашқы санның индексін табыңдар.

main()

{int i, n, x;

cinn;

for (i=1; i

{ cinx;

if (x%5==0) break;}

cout5-ке бөлінетін алғашқы санның индексі=”

}

contunie операторын қолданған жағдайда, цикл денесінің құрылымы төмендегіше болады:

{

операторлар;

if (шарт) contunie;

}

Contunie операторын қолдануға мысалдар қарастырайық.

Мысал 29. n бүтін сан енгізіп, олардың ішінен оң сандардың ғана қосындысын және санын есептеңдер.

main()

{int i, n, x, k, S;

k=S=0;

cinn;

for (i=1; i

{ cinx;

if (x

S+=x; k++; }

cout

}

Мысал 30. n нақты сандардың ішінен жұптарының ғана арифметикалық ортасын табыңдар.

{int i, n, x, S=0, k=0;

cinn;

for (i=1; i

{ cinx;

if (x%2==1) contunie;

S+=x; k++; }

coutАрифметикалық орта =”

}



  1. ЖИЫМ



3.1 Жиым. Бір өлшемді жиым


Жиым деп бір атпен аталатын, саны алдын-ала анықталған бір типті элементтер жиынын атайды. Жиымның C++ тілінде сипатталу форматы:

элементтер_ типі жиым_ аты [элементтер_ саны]

Мысалы: int a[10];

float X[20], Y[20];

long int Z[3][4];

Паскаль тілінен айырмашылығы C++ - те индекске кез келген аралық енгізуге болмайды. Жиым элементтерінің ең төменгі индексі 0- ге тең, сондықтан, сипаттауда көрсетілген жиым өлшемі индекстің ең үлкен мәнінен 1- ге артық.

Мысалы: int a[10] түрінде сипатталған жиым элементтері төмендегідей:

a[0], a[1], a[2],… a[9];

Жиым элементтері сипаттаған кезде енгізілсе, онда оның өлшемін көрсетпеуге болады.

Мысалы: int Х[]={3, 8, 9, 1,-5};

яғни, X[0]=3, X[1]=8,...X[4]=-5

Жиымның бір және екі өлшемді түрлері бағдарламалауда жиі қолданылады.

Бір өлшемді жиымды түрлендіруді қарастырайық.

Бір өлшемді int a[10] жиымын жадыға енгізу былайша жүзеге асады:

for (i=0; i

{couta[i];} // немесе cin a[i];

Берілген жиым элементтерін экранға шығару түрі:

for (i=0; i

cout

Мысал 31. 10 элементтен тұратын бүтін сандар жиымының оң элементтерінің арифметикалық ортасын табыңдар.

main()

{int a[10];

int S=0, i, k=0; float P;

for (i=0; i //жиым элементтерін енгізу

cina[i];

for (i=0; i

if (a[i]0) {S+=a[i]; k++; }

P=S/k;

cout

}

Мысал 32. Нақты сандар жиымының ең үлкен, ең кіші элементтерін және олардың индекстерін табыңдар.

#include

#include

#include

main()

{float a[]={4.6, 7.8, 3.5,12.6, 0.1} ;

int i, k, t; float min, max;

max=a[0]; k=0; min= a[0]; t= 0;

for (i=1; i

{if (max

if (mina[i]) {min= a[i]; t=i;}

}

cout

cout

}

Бағдарламаның орындалу нәтижесі 6- суретте көрсетілген.


6- сурет. Жиымның ең үлкен, ең кіші элементтерін табу


Мысал 33. Жиымды [1..10] аралығындағы кездейсоқ бүтін сандармен толтырып, бұл жиымның ең үлкен элементін тауып, оны бірінші элементтің орнына және ең кіші элементін тауып, оны соңғы элементтің орнына қойғанда пайда болған жиымды анықтаңдар.

#include

#include

#include

#include

main()

{int X[10];

int i, min, max;

srand(time(0));

for (i=0; i

{X[i]=rand()%10+1; //жиымды кездейсоқ сандармен толтыру

cout

max= X[0]; min= X[0]; // жиымның ең үлкен, ең кіші элементтерін табу

for (i=0; i

{if (max

if (minX[i]) min= X[i];

}

cout

X[0]= min; X[9]= max; //ең кіші элементті алғашқы, ең үлкенді соңғы

орынға қою

for (i=0; i

cout

getch();

}


4.2 Екі өлшемді жиым


Екі өлшемді жиымның C++ тілінде сипатталу форматы:

элементтер_ типі жиым_ аты [жол саны][баған саны];

Мысалы: int A[2][3];

float X[3][5];

A жиымының элементтері: A[0][0], A[0][1], A[0][2],

A[1][0], A[1][1], A[1][2].

Екі өлшемді жиымды да (матрица) сипаттау бөлімінде анықтауға болады.

int A[][]={7, 5, 2,

3, 9, 1};


a[2][3] матрица элементтерін жадыға енгізу төмендегіше жүзеге асады:

for (i=0; i

for (j=0; j

cin a[i][j];

Берілген матрица элементтерін қалпын сақтап экранға шығару түрі:

for (i=0; i i++)

for (j=0; j

{cout

cout

Мысал 34. Матрицаның жұп және тақ элементтерінің санын табыңдар.

main()

{ const int n=3, m=2;

int a[n][m]; int i, j, k=0, t=0; // k-жұп, t-тақ элемент саны

for (i=0; i

for (j=0; j

{cin a[i][j];

if (a[i][j]%2==0) k++; else t++; }

coutжұп элемент саны=”kt;

}

Мысал 35. [10,50] аралығындағы кездейсоқ бүтін сандармен толтырылған Х(3х4) матрицаның жолдарындағы элементтердің қосындысын табыңдар.

main()

{ int X[3][4]; int i, j, S;

srand(time(0));

for (i=0; i

for (j=0; j

X[i][j]=rand()%41+10;

for (i=0; i

for (j=0; j

cout

for (i=0; i

{S=0;

for (j=0; j

S=S+X[i][j];

cout

getch();

Мысал 36. Квадрат матрицаның (жол және баған сандары тең матрица) негізгі диагоналындағы теріс элементтердің көбейтіндісін және қосалқы диагоналындағы тақ элементтердің санын табыңдар.

main()

{ int a[5][5]; int i, j, k=0, P=1;

for (i=0; i

for (j=0; j

{cina[i][j];

if (i==j && a[i][j]

if (i+j ==4 && a [i][j] % 2==1) k++;}

cout

}

Бұл бағдарламаның орындалу нәтижесі 7- суретте көрсетілген.


7- сурет. 36- бағдарламаның орындалу нәтижесі


Мысалдағы i=j шарты квадрат матрицаның негізгі диагонал элементтерін, i+j =4 жетекші диагонал элементтерін қарау шарты болып табылады. (жалпы жағдайда i+j =n-1, мұндағы n - квадрат матрицаның жол не бағандарының саны.)

Мысал 37. Кездейсоқ бүтін сандармен толтырылған A(5х5) квадрат матрицаның негізгі диагоналындағы ең үлкен, қосалқы диагоналындағы ең кіші элементтерді табыңдар.

main()

{ int A[5][5]; int i, j, min, max;

srand(time(0));

for (i=0; i

for (j=0; j

A[i][j]=rand()%20;

for (i=0; i

for (j=0; j

cout

max=A[0][0]; min=A[0][4];

for (i=0; i

for (j=0; j

{ if ( i==j && max

if ( i+j ==4 && minA[i][j] ) min=A[i][j] ;}

cout

}

Мысал 38. A (N x N) квадрат матрицаны транспонирлеу бағдарламасын құрыңдар. (Транспонирлеу - матрица жолдарын бағандармен және керісінше алмастыру).

Мысалы: А матрицасы болса, оған транспонирленген матрица

түрінде болады.

main()

{ int A[5][5], B[5][5]; int i, j;

srand(time(0));

for (i=0; i

for (j=0; j

A[i][j]=rand()%9;

cout

for (i=0; i

for (j=0; j

cout

for (i=0; i

for (j=0; j

B[i][j]=A[j][i];

cout

for (i=0; i

for (j=0; j

cout

}

Бұл бағдарламаның орындалу нәтижесі 8- суретте көрсетілген.


8-сурет. Матрицаны транспонирлеу бағдарламасының орындалу нәтижесі


V. СИМВОЛДЫҚ ЖОЛДАР ЖӘНЕ ФУНКЦИЯ


5.1 Символдық жолдар және оларды түрлендіру функциялары


Мәні символ (әріп, цифр, таңба) болатын айнымалы символдық айнымалы деп аталады.

Символдық айнымалыларға әрекеттер орындау үшін C++ тілінде string.h тақырыптық файлында анықталған функциялар қолданылады.

Символдық айнымалылар былайша сипатталады:

char айнымалылар тізімі;

Мысалы: char a,b;

char x;

Жол символдық жиым түрінде сипатталады.

Мысалы: char x[10];

Символдық жолды екі түрде енгізуге болады:

  1. жолдық тұрақты арқылы

Мысалы: char x[20]=”Informatika”;

char x[]=”Informatika”;

  1. символдар тізімі арқылы

Мысалы: char x[20]={‘I’,’n’, ‘f’, ‘o’, ‘r’, ‘m’, ‘a’, ‘t’, ‘i’, ‘k’, ‘a’,’\0’};

‘\0’- жол соңын білдіретін символ.

Символдық тұрақтының әр символы 0-ден бастап, солдан оңға қарай бүтін сандармен нөмірленеді.

Мысалы: x[0]=’I’, x[5]=’m’ т.с.с.

string.h тақырыптық файлында анықталған символдық айнымалыларды түрлендіру функцияларын қарастырайық.

1.strlen(S) функциясы S символдық айнымалының ұзындығын табады. Символдық айнымалының ұзындығы деп ондағы символдар санын атайды. Әр тұрақтының ұзындығы (мәтіндегі символдар саны) 255-тен артпайды.

Функция нәтижесінде бүтін типті сан шығады.

Мысал 39: Берілген екі сөздің ұзындығын табыңдар.

#include

#include

#include

main()

{char a[20], b[10];

int n;

couta;

coutb;

cout

n=strlen(b);

cout

getch();

}

Бағдарламаның орындалу нәтижесі 9- суретте көрсетілген.

9- сурет. Сөздер енгізіп, олардың ұзындығын табу


  1. strcat(S1, S2) функциясы S1,S2 екі жолды біріктіру үшін қолданылады.

Функция S2 жолын S1 жолына біріктіреді.

Мысал 40:

main()

{char a[]="Информатика ";

char b[]="ғылымы";

strcat(a,b);

cout

}

Бағдарламаны орындату нәтижесінде a=” Информатика ғылымы"

b=” ғылымы" мәндері шығады.

  1. strcpy(S1, S2) функциясы S2 жолын S1 жолына түгелдей көшіру үшін қолданылады. Нәтижеде S1 жолының ескі мәні жойылып кетеді.

Мысал 41:

main()

{char a[]="Информатика ";

char b[]="ғылымы";

strcpy(a,b);

cout

}

Бағдарламаның орындалу нәтижесі a=” ғылымы", b=” ғылымы" түрінде болады.

  1. strncpy(S1, S2, n) функциясы S2 жолының n символын S1 жолына көшіру үшін қолданылады.

Мысал 42:

main()

{int n=3; char X[]="1234567";

char Y[]="110000";

strncpy(X,Y,n);

cout

}

Нәтижеде экранға Х=”1104567” мәні шығады.

Символдық айнымалыларды түрлендіру бағдарламаларын құруды қарастырайық.

Мысал 43. Берілген сөздегі ‘a’әрпінің санын табыңдар.

main()

{ char S[20];int i,n=0;

coutS;

for (i=0; i

if (S[i]=='a') n++;

cout

getch();

}

Есепті жалпылайық, яғни берілген сөздегі берілген әріптің санын табайық. Бұл жағдайда бағдарлама төмендегіше болады:

Мысал 44.

main()

{ char a[20]; char b[10]; int i, n=0;

couta;

coutb;

for (i=0; i

if (a[i]==b[0]) n++;

cout

}

Символдық жолды экранға шығару үшін Турбо С тілінде puts() операторы қолданылады.

Жалпы форматы:

puts(“Символдық жол”);

Мысалы: puts(“Сөзді енгіз”);

puts(“\n Есептің жауабы”);

Символдық жолды енгізу үшін сәйкесінше gets() операторы қолданылады.

Бұл оператордың жалпы форматы:

gets(Символдық айнымалы);

Мысалы: char a[10], S1[20], S2[20];

gets(S1,S2);

gets(a);

Осы екі операторды қолдануға мысал қарастырайық.

Мысал 45. Нүктемен аяқталатын сөйлемдегі сөздердің санын табыңдар.

main()

{char S[50]; int i, n=0;

puts("Сөйлем енгіз"); gets(S);

for (i=0; i

if (S[i]==' ' || S[i]=='.') n++;

cout

}

Мысал 46. Сөйлемде неше сөз ‘a’ әрпінен басталатынын анықтаңдар.

main()

{ char S[50]; int i, n=0;

puts("Сөйлем енгіз”); gets(S);

for (i=0; i

if (S[i]==' ' && S[i+1]=='a') n++;

if (S[0]=='a' || S[0]=='A') n++;

cout

}

Мысал 47. Сызықшамен бөлінген екі сөздің алғашқысын экранға шығаратын бағдарлама құрыңдар.

main()

{ char S[50]; int i, k;

gets(S);

for (i=0; i

if (S[i]=='-') k=i;

for (i=0; i

cout

}

Мысал 48. Хабарламада әр сөз кері жазылып шифрланған. Шифрды ашып, хабарламаны экранға шығаратын бағдарлама құрыңдар.

main()

{ char S[20]; int i;

gets(S);

for (i=strlen(S); i=0; i--)

cout

}

Әрбір символға компьютерде 0 мен 255 аралығындағы бүтін санды код сәйкес келеді. Символдар кодының кең тараған түрі ASCII коды. (American Standard Code for Information Interchange- ақпарат алмасу үшін арналған Америкалық кодтар стандарты ). ASCII- де символдардың коды 32-ден басталады. 0-ден 32-ге дейінгі компьютердің ақпаратпен түрлі жұмыс істеуіне арналған басқарушы кодтар.

Есептер шығаруда төменгі кодтар жиі қолданылады:

  • 48-ден 57-ге дейін- 0-ден 9-ға дейінгі цифрлар коды.

  • 65-тен 90-ға дейін- латынның бас әріптері (A-65, B-66 т.c.c)

  • 97-ден 122-ге дейін- латынның кіші әріптері (a-97, b-98 т.c.c)

TAB пернесінің коды-9, ESC-27, бос орын пернесі-32, нүкте-46, үтір-44, сұрақ белгісі-63 т.с.с.

C++ тілінде символдың ASCII кодтар кестесіне сәйкес кодын анықтайтын және оған керісінше, бүтін санды кодқа сәйкес символды беретін стандарт функция бар. Бұл функцияның жалпы түрі:

toascii(int c)

Бұл функция ctype.h тақырыптық файлында анықталған.

Мысал 49. 32-ден 127-ге дейінгі барлық кодты (бүтін сандарды) және оған сәйкес символды 2 баған түрінде экранға шығаратын бағдарлама құрыңдар.

#include

#include

#include

main()

{ int i; char k;

for (i=32; i

{k=toascii(i);

cout

system("PAUSE");

}

getch();

}

Мысал 50 . Латын әріптерінен тұратын сөздегі бас әріпті кіші әріпке түрлендіріп шығаратын бағдарлама құрыңдар.

#include

#include

#include

#include

main()

{ int i;char S[]="PaiNt BruSh";

for (i=0; i

if (toascii(S[i])=65 && toascii(S[i])

cout

getch();

}

Бағдарламаның орындалу нәтижесінде экранға S=paint brush сөзі шығады.


5.2 Функция


C++ тіліндегі барлық функциялар екі категорияға бөлінеді:

  1. Қолданушының өзі анықтайтын функция

  2. C++ компиляторының пакетінде бар кітапханалық функциялар.

Алғашқы категорияға тоқталайық.

Паскаль тілінде ішкі бағдарламаның процедура және функция екі түрі болатын болса, С++ тілінде қолданушы ішкі бағдарламаның функция түрін ғана анықтай алады. С++ тілінде ішкі бағдарлама термині қолданылмайды, себебі функция негізгі бағдарламалық бірлік, яғни минимал орындалатын бағдарламалық модуль болып саналады. Әрбір бағдарлама main() атты негізгі функциядан тұрады. Егер бағдарламада басқа да функциялар қолданылса, онда олар ішкі бағдарламаның рөлін атқарады.

Функцияны анықтаудың жалпы форматы:

тип функция_ аты (типтері көрсетілген формальды параметрлер тізімі)

{

функция денесі

}

мұндағы, тип- функция қайтаратын нәтиженің типі.

Функциядан оны шақырған жерге қайтару үшін return операторы қолданылады. Бұл оператор функцияда екі формада қолданылуы мүмкін:

return; бұл жағдайда функция нәтижеге ешнәрсе қайтармайды.

return өрнек; функция нәтижесі болып берілген өрнектің мәні саналады.

Мысалы: return х;

Формальды параметрлер деп функция ішінде қолданылатын және оны әр шақырғанда әртүрлі бастапқы және соңғы мәнге ие болатын айнымалыларды атайды. Нақты параметрлер негізгі бағдарламада болады.

Фукциядағы негізгі бағдарламаға қатысы жоқ айнымалы жергілікті айнымалы деп аталады.

Негізгі бағдарламаның қажетті жерінде функцияны шақыру командасы орналасады.

Функцияны шақырудың (функцияға қол жеткізу) жалпы форматы:

функция_ аты (нақты параметрлер тізімі);

Функцияны шақыру кезінде формальды және нақты параметрлер арасында тізбек және тип бойынша сәйкестік ережесі орындалуы тиіс.

Мысал 51. Екі санның үлкенін табу функциясын қолданып, үш санның үлкенін табыңдар.

#include

#include

// қосымша функцияны анықтау

int MAX( int x, int y)

{ if (xy) return x; else return y;

}

// негізгі функция

main()

{int a,b,c,M;

cinabc;

M=MAX(MAX(a,b),c);

cout

getch();

}

Бұл бағдарламаны жергілікті айнымалы қолданып та құруға болады.

Мысал 52.

int MAX( int x, int y)

{ int k;

if (xy) k=x; else k=y;

return k;

}

main()

{int a, b, c, M1, M;

cinabc;

M1=MAX(a,b);

M=MAX(M1,c);

cout

}

Мысал 53. Екі натурал санның ең үлкен ортақ бөлгішін табу функциясын қолданып, берілген төрт натурал санның ең үлкен ортақ бөлгішін анықтаңдар.

int EYOB( int x, int y)

{ while (x!=y)

if (xy) x=x-y; else y=y-x;

return x;

}

main()

{int a,b,c, d, M1, M2, M;

cinabcd;

M1=EYOB(a, b);

M2=EYOB(c, d);

M=EYOB(M1, M2);

cout

}

Мысал 54. Үш таңбалы санның цифрларының қосындысын табу функциясын қолданып, 100-ден 300-ге дейінгі бүтін сандар ішінен цифрларының қосындысы 5-ке тең болатын барлық сандарды табыңдар.

int Sum5( int x)

{ int a,b,c,d;

a=x/100;

b=x%100;

c=b/10;

d=b%10;

return a+c+d;

}

main()

{int i,k;

for (i=100; i

{k=Sum5(i);

if (k==5) cout

getch();

}

Мысал 55. Жай санды анықтау функциясын қолданып, берілген аралықтағы барлық жай сандарды табыңдар.

int Jai_S( int x)

{ int i,k=0,S=0;

for (i=1; i

if (x%i==0) k++;

if (k==2) S=1;

return S;

}

main()

{int a,b,j,t;

coutab;

for (j=a; j

{t=Jai_S(j);

if (t==1) cout

}

[20,70] аралығындағы барлық жай сандарды табу нәтижесі 10- суретте көрсетілген.

10- сурет. Берілген аралықтағы жәй сандарды табу

Қосалқы функцияны қолданудың бір түрі ол- функция прототипін қолдану. Функция прототипі деп функцияны алдын- ала сипаттауды айтады. Оның жалпы түрі:

тип функция_ аты (типтері көрсетілген параметрлер тізімі);

Айырмашылығы, соңында нүктелі үтір белгісі қойылады және параметрлер атын көрсету міндетті емес, яғни int Max (int x, int y) жолын

int Max (int, int); деп жазуға болады.

Мысал 56. Жоғарыдағы екі санның үлкенін табу функциясын қолданып, үш санның үлкенін табу бағдарламасын функция прототипін қолданып былайша жазуға болады..

#include

#include

// функция прототипі

int MAX( int , int );

// негізгі функция

main()

{int a,b,c,M;

cinabc;

M=MAX(MAX(a,b),c);

cout

getch();

}

// қосымша функцияны анықтау

int MAX( int x, int y)

{ if (xy) return x; else return y;

}

Функцияның екінші түрі- кітапханалық функциялар. Жеке файлда сақталатын көмекші функциялар кітапханалық функциялар деп аталады. Стандарт кітапхана C++ бағдарламалау жүйесінің стандарт пакетіне кіреді. Кітапханалық файлдар қатарына cin, cout, scanf(), pritf(), rand(), getch(),sin(), cos() т.б. функцияларды жатқызуға болады. Ол функцияларды қолдану үшін .h типті файлдарды include(тақыптық файл аты) командасы арқылы қосу қажеттігі белгілі.

Мысалы: #include , #include , #include

#include т.с.с.


VI. ҚҰРЫЛЫМ ЖӘНЕ ҚҰРЫЛЫМДЫҚ ТИП


6.1 Құрылым және оны сипаттау


Бірдей типті элементтер тізбегін жиымға біріктіруге болатыны белгілі. Ал әртүрлі типті элементтерді бір топқа біріктіру үшін Паскаль бағдарламалау тіліндегі жазбаға сәйкес С++ тілінде құрылым қолданылады.

Құрылым деп бір атаумен аталатын әртүрлі типті элементтер жиынтығы аталады.

Құрылымдық тип деректер қорын, ақпараттық жүйені жасауда қолданылады.

Құрылымдық типті сипаттаудың жалпы форматы:

struct құрылымдық типтің атауы

{элементтерді анықтау};

Мысалы: 2 студент туралы 5 өрістен тұратын мәлімет берілсін: Студенттің тегі, туған жылы, факультеті, курсы, студент билетінің нөмірі. Сипаттаған кезде құрылымның және оның элементтерінің (яғни өрістердің) атауларын оқуға ыңғайлы етіп, түсінікті түрде таңдап алған жөн. Сонда Student жазбасын былайша сипаттауға болады:

struct Student

{char Fam[20];

int God_r;

char Fak[10];

int Kurs;

char Nom_b;};

Сонан соң, Student құрылымдық типін қолданып, S1, S2 екі айнымалыны анықтауға болады.

Student S1, S2;

Құрылымдық шаманың кез келген элементі (өрісі) былайша көрсетіледі:

құрылымдық типтің аты. элемент атауы;

Мысалы: S1. Fam -1-студенттің тегі

S2. Fak -2-студенттің факультеті

S2. God_r -2- студенттің туған жылы т.б.

Құрылым элементтерінің мәнін енгізуге, яғни меншіктеуге болады.

Мысалы: Student S1={“Ғизатова”, 1997, ”физ-мат”, 1, “Ф00234”};

Әдетте, бағдарламада құрылым жиымы қолданылады.

Мысалы 10 студент туралы мәлімет келесідей сипатталған жиымда сақталады: Student S[10];

Онда жеке студент туралы мәлімет төмендегіше көрсетіледі:

S[1].Fam, S[5].Kurs, S[8].Fak т.с.с.

Жоғарыда сипатталған әрбіреуі 5 элементтен тұратын 10 студент туралы құрылым жиымын жадыға енгізу және экранға шығару төмендегіше болады:

// енгізу

for (int i=0; i

cinS[i].FamS[i].God_rS[i].FakS[i].KursS[i].Nom_b;

// шығару

for (int i=0; i

cout

Мысал 57. 5 студенттің тегін және үш пән бойынша емтихан бағасын енгізіп, әр студенттің тегі мен орташа бағасын шығаратын бағдарлама құрыңдар.

main()

{ int i; float k;

struct stud

{char fam[20];

int x,y,z;};

stud s[5];

for (i=0; i

cins[i].fams[i].xs[i].ys[i].z;

for (i=0; i

{k=(s[i].x+s[i].y+s[i].z)/3;

cout

}

Мысал 58. Бес студенттің жасы берілген. Студент жастарының кемуі бойынша реттеңдер.

main()

{ int i, j, k;

struct stud

{int jas;};

stud s[5];

for (i=0; i5; i++)

cins[i].jas;

// көпіршік әдісі бойынша реттеу

for (i=0; i4; i++)

for (j=i+1; j5; j++)

if (s[i].jass[j].jas) {k=s[i].jas; s[i].jas=s[j].jas; s[j].jas=k;}

for (i=0; i5; i++)

cout

}

Мысал 59. Тауар атынан және бағасынан тұратын мәліметтер берілген. Ең қымбат тауар атын және бағасын табыңдар.

main()

{ int i, k, max;

struct Tovar

{char name[15];

int baga;};

Tovar t[5];

for (i=0; i5; i++)

cint[i].namet[i].baga;

max=t[0].baga; k=0;

for (i=0; i5; i++)

if (max

cout

}

Мысал 60. Оқушының тегі және сыныбы туралы мәліметтер берілген. Тегі берілген әріптен басталатын және берілген сыныпта оқитын оқушылар тізімін шығаратын бағдарлама құрыңдар.

main()

{ int i,n; char s[10];

struct Okushi

{char fam[15];

int kl;};

Okushi ok[5];

for (i=0; i

cinok[i].famok[i].kl;

coutәріпті енгіз "; cins;

coutn;

for (i=0; i

if (ok[i].fam[0]==s[0] && ok[i].kl==n) cout;

}


6.2 Құрылымды typedef қызметші сөзі және #define директивасы арқылы сипаттау


Құрылымдық типті басқаша сипаттауға да болады. Бұл жағдайда typedef қызметші сөзі қолданылады.

Жалпы түрі төмендегіше жазылады:

typedef struct

{элементтерді анықтау}

құрылымдық типтің атауы;

Бұл жағдайды қолдануға мысал қарастырайық.

Мысал 61. Студент тегі мен жасы берілген. Жасы берілген жастан үлкен болатын студенттер тізімін шығаратын бағдарлама құрыңдар.

main()

{ int i,n;

typedef struct

{char fam[15];

int jas;} Student;

Student st[5];

for (i=0; i

cinst[i].famst[i].jas;

coutn;

for (i=0; i

if (st[i].jasn) cout

}

Құрылымды #define директивасы арқылы да сипаттауға болады. Бұл жағдайда құрылымды сипаттаудың жалпы түрі былайша жазылады:

#define құрылымдық типтің атауы struct

{элементтерді анықтау;}

Мысал 62. Студенттің аты мен тегі берілген. Тегі “А” әрпінен басталатын студенттер тізімін шығаратын бағдарлама құрыңдар.

#include

#include

#define Student struct\

{char ati[15];\

char fam[20];}

main()

{ int i;

Student st[3];

for (i=0; i

cinst[i].famst[i].ati;

for (i=0; i

if (st[i].fam[0]=='A') cout

getch();

}

Ескерту. Құрылымды #define директивасы арқылы да анықтағанда әрбір жолдан кейін “\” жалғастыру символы қойылады.


VII. КӨРСЕТКІШ ЖӘНЕ ДЕРЕКТЕР АҒЫНЫМЕН ЖҰМЫС


7.1 Көрсеткіш типті деректермен жұмыс


Дербес компьютердің оперативті жадысы ақпаратты сақтауды жүзеге асыратын ұяшықтар, яғни байттар жиынтығы болып табылады. Олардың әрбіреуінің өз нөмірі болады. Бұл нөмірлер адрес деп аталады және жадының кез келген байтын көрсетуді жүзеге асырады.

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

Бағдарламалық деңгей

Е-аты

Айнымалы Мән

_ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ _

Жады бөлігі Мазмұны

Машиналық деңгей &E- адрес


Айнымалы аты, адресі және мәнінің байланысын қарастырайық.

char s=’a’;

int x=1895;

float p=2.014e-5;

Бұл айнымалылар жадыда төмендегіше орналасады.


жады адресі

1A2B

1A2C

1A2D

1A2E

1A2F

1A30

1A31


байт

байт

байт

байт

байт

байт

байт

жадыдағы мәні

‘a’

1895

2.014*10-5

айнымалы аты

s

x

p


Символдық айнымалы 1 байт, бүтін айнымалы 2 байт, ал нақты айнымалы жадының 4 байтында орналасады.

Көрсеткіш- бағдарламалық нысан орналасқан жады өрісінің адресі.

&- адрес операциясы болып табылады. Айнымалы атына бұл операцияны қолдану нәтижесінде оның жадыдағы адресі алынады.

&Е мәні Е айнымалысына бөлінген жады аймағының адресін береді. Айнымалының адресі ретінде өзіне бөлінген жадының алғашқысының адресі алынады. Жоғарыдағы айнымалылар адрестері келесі мәндерге тең:

&s= 1A2B

&x=1A2C

&p=1A2E.

Адресті сақтау үшін көрсеткіш типті айнымалы қолданылады. Мұндай айнымалыларды сипаттау форматы:

тип *айнымалының аты;

Көрсеткішті сипаттау мысалдары:

char *k;

int *z;

float *f;

Мұндай сипаттау нәтижесінде k мәні символдық, z мәні бүтін және f айнымалысы нақты типті көрсеткіш мәнін қабылдайды.

Көрсеткішке ол сипатталғандай типті нысан меншіктеледі.

Мысалы: k=&s; z=&x; f=&p;

Нәтижеде көрсеткіштер келесі мәнді қабылдайды.

k-1A2B, z-1A2C, f-1A2E

Басқа да деректер сияқты көрсеткіш мәнін сипаттау кезінде де енгізуге болады.

Мысалы:

char s=’a’; сhar *k=&s;

int x=1895; int *z=&x;

float p=2.014e-5; float *f=&p;

Көрсеткішті сипаттаудағы қолданылған * символы адресті алу операциясы деп аталады. Оның көмегімен көрсеткіш арқылы сәйкес айнымалыға сілтеу жасауға болады.

Көрсеткішті функция параметрін беру үшін қолдану

Келесі мысалда Swap() функциясы аргументте өз көрсеткіштерімен берілген екі айнымалы шаманың мәндерін алмастырады.

void Swap( int*a, int *b)

{int c;

c=*a; *a=*b; *b=c;

}

Негізгі бағдарлама бөлігі төмендегіше болады:

main()

{int x=1,y=2;

Swap(&x, &y);

cout

}

Бағдарламаны орындату нәтижесінде x, y айнымалыларының мәндері алмасып, x=2, y=1 болады.

Функцияны шақырған кезде a көрсеткіші x айнымалысының адресін, b көрсеткіші y айнымалысының адресін алады. Одан кейін негізгі бағдарламадағы x айнымалысы мен функциядағы *a адресті алған көрсеткіш жадының бір ұяшығымен байланысты болады. Сәйкесінше, y және *b да осылайша болады.

Сонымен, функция параметрінде көрсеткішті қолдану бағдарлама жұмысын жақсартуға мүмкіндік береді.

Көрсеткіш және жиым. Жиымға көрсеткішті қолдану

Жиым аты жиымды көрсеткіш - тұрақты болып табылады. Мысалы, бағдарламада int А[10] жиымы хабарланды делік. Бұл жағдайда А компьютер жадысындағы жиымның нөлінші элементінің көрсеткіші болады. Осыған байланысты A==&A[0] қатынасы ақиқат болып табылады.

Жиым элементін көрсету үшін индекстелген аттан басқа адресті алу көрсеткішін қолдануға болады.

Яғни, жиым аты[индекс] теңбе- тең * (жиым аты+ индекс)

Мысалы: A[10] теңбе- тең *(A+10) теңбе- тең *(10+A).

C++ тілінде [ символы жиым адресін жиым элементінің адресіне қосу операциясының белгісінің рөлін атқарады.

Мысал 63. Бір өлшемді жиымның элементтерінің квадратын табатын функцияны қарастырайық. Функция параметрі ретінде жиымға көрсеткіш қолданылады.

// Функцияны анықтау

void SQR (int n, float *x)

{ int i;

for( i=0; i

// Көбейту және меншіктеу

*(x+i)*=*(x+i); }

main()

{

// Жиымды анықтау

float z[]={1.0, 2.0, 3.0, 4.0};

int j;

SQR(4,z); //

// Пайда болған жиымды шығару

for (j=0; j

cout

}

Бағдарламаны орындату нәтижесінде экранға

z[0]=1.000000

z[3]=16.00000 мәндері шығады.

Бағдарламада жиымға көрсеткіш қолданылған *(x+i)*=*(x+i) командасының орнына көрсеткішті қолданбай x[i]=x[i]*x[i] немесе x[i]*=x[i] деп жазуға да болады.

Мысал 64. Берілген матрицаның жолдарының Евклидтік нормасын табатын бағдарлама құрыңдар. Вектордың Евклидтік нормасы деп оның элементтерінің квадраттарының қосындысының квадрат түбірін айтады. Егер матрицанының жолын вектор ретінде қарастырсақ, онда формуланы матрицаның әрбір жолына қолдану керек. Вектордың Евклидтік нормасын есептеуді Evk функциясы арқылы ұйымдастырамыз. Функцияның екінші параметрі ретінде жиымға көрсеткіш қолданылады.

#include

#include

float Evk (int n, int *x)

{int i; float s=0,p;

for (i=0; i

s+=*(x+i)**(x+i); p=sqrt(s); return p;}

main()

{ int a[3][4]={1,2,3,5,

1,1,1,1,

4,1,2,1};

float k; int j;

for (j=0; j

{k=Evk(4,a[j]);

cout

}

Бағдарламаны орындату нәтижесінде экранға

k=6.245

k=2

k=4.69042 мәндері шығады.


7.2 Деректерді ағындық енгізу және шығару. Деректер ағынын бағдарламалау


Бағдарламалаудағы енгізу- шығару деп оперативті жады мен сыртқы құрылғылар арасындағы ақпарат алмасу үдерісін айтады. Компьютердің сыртқы құрылғысындағы ақпаратпен байланысты негізгі ұғым болып файл ұғымы саналады. Енгізу- шығарудың кез келген операциясы файлмен алмасу операциясы болып саналады, яғни енгізу- файлдағы ақпаратты оперативті жадыға оқу, шығару- ақпаратты оперативті жадыдан файлға жазу. Паскаль тілінде ішкі және сыртқы файл қолданылады. С++ тілінде ішкі файлдың ұқсасы болып деректер ағыны саналады. Паскаль тіліндегі файлдық айнымалыдан айырмашылығы, С++ тілінде ағынға тип сәйкестендірілмейді. Ағын  енгізу- шығару үдерісінде берілетін байттық тізбек. Ағын қандай да бір сыртқы құрылғымен немесе дискідегі файлмен байланысты болу керек. С++ тілінде файл типі ұғымы және сәйкес файлдың жазылуының нақты құрылымы болмайды. Кез келген файл байттық тізбек түрінде қарастырылады.

0- байт 1- байт 2-байт т.с.с EOF.

Мұндағы, EOF- файл соңын көрсететін стандарт тұрақты (EOF- End Off File).

Дискілік файлмен жұмыс ағын көрсеткішін хабарлаудан басталады. Оның жалпы форматы:

FILE *көрсеткіш атауы;

Мысалы: FILE *f1;

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

Функцияның жазылуының жалпы форматы:

көрсеткіш атауы= fopen(файл аты, ашу режімі);

fopen() функциясының параметрі тұрақты немесе символдық жиымға көрсеткіш болып табылатын жол болып табылады.

Мысалы: f1= fopen(”esep1.txt”,”r”);

Мұндағы esep1.txt- f1 көрсеткішімен байланысты, дискінің ағымдық каталогындағы файл атауы.

Ағынды ашудың режімдері және оларға сәйкес параметрлер 4- кестеде көрсетілген.


Кесте 4. Ағынды ашудың режімдері

Параметр

Режім

r

оқу үшін ашу

w

жазу үшін жасау (егер файл бұрын бар болса, оның ескі мәні жойылып кетеді)

a

қосу үшін ашу

r+

оқу және жазу үшін ашу

w+

оқу және жазу үшін жасау

a+

қосу үшін ашу немесе оқу және жазу үшін жасау


Ағынды жабу үшін fclose() функциясы қолданылады. Оның жалпы форматы:

int fclose(FILE *fptr);

Мұндағы, fptr- жабылатын ағынның көрсеткішінің формальды аты. Егер жабу операциясы ойдағыдай аяқталса, онда функция 0- ді қайтарады.

Мысалы: fclose(f1); fclose(f2);

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

Форматтық шығару функциясының жалпы түрі:

int fprintf (ағынды көрсеткіш, форматтық жол, айнымалылар тізімі);

Бұрын қолданылған экранға шығаруды ұйымдастырудың printf() функциясы fprintf() функциясының жеке нұсқасы болып табылады.

Мысалы: fprintf(f2,”\n S=%d P=%f”, S,P);

fprintf(f,”\n Аудан=%5.2f”, pi*R*R);

Ал мәтіндік файлдан мәліметтерді форматтап оқу fscanf() функциясының көмегімен жүзеге асырылады. Форматтап оқу функциясының жалпы түрі:

int fscanf(ағынды көрсеткіш, форматтық жол, айнымалы адрестерінің тізімі);

Мысалы: fscanf(f1,”\n%d%d%d”,&a,&b,&c);

fscanf(f,”%d%f”,&n,&k);

Мысал 65. esep1.txt файлында берілген 4 бүтін сандардың қосындысын және көбейтіндісін esep1_1.txt атты файлға шығаратын бағдарлама құрыңдар.

main()

{ FILE *f1,*f2; int i,x,s=0,p=1;

f1=fopen("d:\\Pr_C\\esep1.txt","r");

f2=fopen("d:\\Pr_C\\esep1_1.txt","w");

for (i=1; i i++)

{fscanf(f1,"%d",&x);

s+=x; p*=x;}

fprintf(f2,"\n s=%d p=%d",s, p);

fclose(f1); fclose(f2);

}

Енгізу файлына 4 8 2 1 сандары берілсе, бағдарламаны орындату нәтижесінде шығару файлына s=15 p=64 мәндері шығады.

Мысал 66. Файлда сөздер берілген. Берілген сөздерді және олардың ұзындықтарын екі баған түрінде екінші файлға шығаратын бағдарлама құрыңдар.

#include

#include

main()

{ FILE *f1,*f2;int i; char s[20];

f1=fopen("d:\\Pr_C\\esep2.txt","r");

f2=fopen("d:\\Pr_C\\esep2_1.txt","w");

for(i=1;i

{fscanf(f1,"%s",&s);

fprintf(f2,"\n %s %d", s, strlen(s));}

fclose(f1);fclose(f2);

}

Мысал 67. Файлда берілген сөздердің ішінен ең ұзын сөзді екінші файлға жазатын бағдарлама құрыңдар.

#include

#include

main()

{ FILE *f1,*f2;int i,max; char s[20];

f1=fopen("d:\\Pr_C\\esep3.txt","r");

f2=fopen("d:\\Pr_C\\esep3_1.txt","w");

fscanf(f1,"%s",&s); max=strlen(s);

for(i=1; i i++)

{fscanf(f1,"%s",&s);

if (max

printf("\n max= %d",max);

f1=fopen("d:\\Pr_C\\esep2.txt","r");

for(i=1; i i++)

{fscanf(f1,"%s",&s);

if (strlen(s)==max) fprintf(f2,"\n Ең ұзын сөз= %s",s);}

fclose(f1); fclose(f2);

}

Мысал 68. Файлда 3х3 матрицаны [0,50] аралығындағы бүтін сандармен толтырып, әр жолдағы элементтердің қосындысын табыңдар.

#include

#include

#include

main()

{ FILE *f;

int i,j,s; int A[3][3];

f=fopen("d:\\Pr_C\\esep6.txt","w");

srand(time(0));

//Файлда матрицаны кездейсоқ санмен толтыру

for(i=0;i

{ for (j=0;j

{A[i][j]=rand()%50;

fprintf(f,"%d \t",A[i][j]);}

fprintf(f,"\n");}

// Матрицаның жол элементтерінің қосындысын табу

for(i=0;i

{s=0;

for (j=0;j

s+=A[i][j];

fprintf(f,"\n s=%d",s);}

fclose(f);

}

Бағдарламаның орындалу нәтижесі 11- суретте көрсетілген.


11- сурет. Матрицаны толтыру және жол элементтерінің қосындысын табу

Мысал 69. Файлда 5х5 матрицаны 0 және 1 сандарымен шахматтық ретте толтыратын бағдарлама құрыңдар.

main()

{ FILE *f;

int i,j,s; int A[5][5];

f=fopen("d:\\Pr_C\\esep7.txt","w");

//MT

for(i=0;i

{ for (j=0;j

{if ((i+j)%2 ==0) A[i][j]=0; else A[i][j]=1;

fprintf(f,"%d \t",A[i][j]);}

fprintf(f,"\n\n");}

fclose(f);

}

Бұл бағдарламаның орындалу нәтижесі 12- суретте көрсетілген.


12- сурет. Матрицаны шахматтық ретпен толтыру


VIII. C++ ТІЛІНДЕГІ ГРАФИКА


8.1 Графикамен жұмыс жасау негіздері. Қарапайым геометриялық

фигураларды салу операторлары


Қазіргі заманғы операциялық жүйелерде С++ бағдарламалау тілінде жұмыс жасау үшін Dev- C++ бағдарламасы қолданылады. Dev- C++ тілінде графикамен жұмыс жасау үшін оған екі модуль қосу қажет. Ол үшін келесі әрекеттер орындалады:

1) graphics.h тақырыптық файлы C:\Dev-Cpp\include бумасына орналастырылады.

2) libbgi.a кітапханалық файлы C:\Dev-Cpp\lib бумасына орналастырылады.

(Бұл екі файл Интернет арқылы іздеп табылады)

3) Dev-C++ бағдарламасын іске қосып, Сервис мәзір пунктінен Параметры компилятора (Tools\Compiler Options) командасы орындалады.

4) Компилятор (Compiler) астарлы бетіне өтіп, Добавить эти команды к командной строке компоновщика (Add these commands to the linker command line) пунктіне жалауша белгісін қойып, оның астындағы терезеде келесі жолды енгізу қажет (13- сурет):

-lbgi -lgdi32 -lcomdlg32 -luuid -loleaut32 -lole32




13- cурет. Dev- C++ тілінде графикамен жұмыс жасау модулін қосу


  1. Оk командасын орындату.

Нәтижеде Dev- C++ бағдарламасының графикамен жұмыс жасау командаларын қолдануға болады.

Dev- C++ те графикамен жұмыс жасау үшін #include командасы арқылы графиктік тақырыптық файл іске қосылады.

initwindow(n, m) командасы арқылы өлшемі nm пиксел графика терезесін орнатуды жүзеге асырады.

Мысалы: initwindow(200,200);

Қазіргі заманғы компьютерлерде экрандағы кескін растр түрінде көрінеді. Растр деп (латынның rastrum сөзінен алынған) белгілі бір тәсіл бойынша салынған кескін элементтерінің жиынтығын айтады. Бейнені құрайтын ең элементар нүкте пиксель деп аталады. Растрлық құрылғыда кез келген кескін немесе фигура нүкте- пиксельдердің жиынтығынан тұрады. Кескіннің әр нүктесінің орны Х және У координата арқылы анықталады. Координата-растрлық жол және баған нөмірін белгілейтін бүтін сандар. Х осі солдан оңға, У осі жоғарыдан төмен қарай бағытталған. Сол жақ жоғарғы бұрыштың координатасы (0,0).

Графиктік драйвер графиктік режімде дисплей адаптерін басқарады. Графиктік драйверлер барлық типті адаптерлер үшін BORLAND фирмасында жасалған. Олар әдетте, BGI ішкі каталогында орналасады. (BGI- Borland Graphics Interface – Borland фирмасының графиктік интерфейсі )

Графиктік режімді жабу үшін closegraph() командасы қолданылады. Бұл команданың орындалуы нәтижесінде мәтіндік режімге өтіледі.

Графиктік режімдегі бағдарламаның жалпы түрі:

#includeh

#includeonio.h

main()

{ initwindow(200,200);

…..

графиктік операторлар

.......

closegraph();

getch();

}

Түстерді орнату. Кескін, фон түстері. Қарапайым геометриялық фигураларды салу операторлары

EGAVGA.BGI драйверінде 16 түс қолданылады. Әр түске бүтін санды код сәйкес келеді (5- кесте).


Кесте 5. Графиктік режімнің түс кодтары

Коды

Түсі

Коды

Түсі

0

black (қара)

8

darkgray (күңгірт сұр)

1

blue (көк)

9

lightblue (ашық көк)

2

green (жасыл)

10

lightgreen (ашық жасыл)

3

сyan (циан)

11

lightcyan (ашық циан)

4

red (қызыл)

12

lightred (ашық қызыл)

5

magenta (күлгін көк)

13

lightmagenta (ашық күлгін)

6

brown (қоңыр)

14

yellow (сары)

7

lightgray (ашық сұр)

15

white (ақ)


Экранға шығатын кескін (сызықтар мен символдар) түсі setcolor(түс) командасы арқылы орнатылады.

Мұндағы түс - 0-ден 15-ке дейінгі бүтін сан немесе кестедегі тұрақтының аты.

Мысалы: setcolor(4), setcolor(RED).

Бұл оператор енгізілмесе, кескін қалыпты жағдайда ақ түспен шығады. Кескіннің әр жаңа түсі үшін setcolor() командасы қайта шақырылады.

setbkcolor(түс) командасы экран фонының түсін орнатады. Бұл оператор болмаса, экран ағымдық қара түске боялып көрсетіледі.

Мысалы: setbkcolor(12); cleardevice(); экран фонына ашық қызыл түс орнату.

Мұндағы, cleardevice()– графиктік режімдегі экранды тазарту операторы.

putpixel(x, y, түс) операторы координатасы (х, у), берілген түске боялған нүктені экранға шығарады.

Мысалы: Экран центрінде қызыл түсті нүкте шығару үшін бұл оператор былайша жазылады: putpixel(100,100,4) немесе putpixel(100,100,RED)

Ескерту! Графиктік операторлардағы барлық аргумент мәндері бүтін сан болып табылады.

line(x1,y1,x2,y2) операторы координатасы (х1, у1) нүктесінен координатасы (х2,у2) нүктесіне дейін түзу кесіндісін салуды жүзеге асырады.

Мысалы: line(10,10,90,100);

graphics.h файлының кітапханасында кесінді, шеңбер, эллипс, доға және тіктөртбұрыш салатын операторлар бар. Бұл операторлардың бәрінде сызық қолданылады. Қалыпты жағдайда сызықтың қалыңдығы 1-ге тең, үзігі жоқ- тұтас және түсі ақ. Сызық стилі мен түсін өзгертуге болады. Сызық түсі setcolor() операторы арқылы таңдалады.

Сызық стилінің 5 нұсқасы бар:

  1. тұтас сызық ­­­­­­­­­­­­­­­­­­­­­ ( ________ )

  2. нүктелік сызық ( ………….)

  3. пунктир- нүктелік (-.-.-.-.-.-. )

  4. пунктир (----------- )

  5. типін қолданушы өзі анықтайтын сызық..

Сызық типі келесі оператор арқылы анықталады:

setlinestyle(LineStyle, Pattern, Width);

Мұндағы linestyle- көрсетілген 5 шаблонның бірін қабылдайды.

Pattern - сызық типін қолданушы өзі анықтаған кезде берілетін бояу шаблоны. Қалыпты жағдайда ол 0-ге тең.

Width- сызық қалыңдығы. Сызық қалыңдығының 2 түрі болады:

бірлік NormWidth=1 және үштік ThickWidth=3.

Мысалы: setlinestyle(1,0,3); командасы орындалса, қалыңды үшке тең нүктелік сызық орнатылады.

Мысал 70: Х осіне параллель, қалыңдығы 1-ге тең әр түрлі стильдегі сызықтар салу бағдарламасын құрыңдар.

#include

#include

main()

{ int I=0;

initwindow(200,200);

for (int y=20; y

{setlinestyle(I, 0, 1);

line(20, y, 180, y);

I++;

if (I3) I=0;}

getch();

closegraph();

}

Бағдарламаның орындалу нәтижесі 14- суреттегідей болады.

14- cурет. Әр түрлі стильдегі сызықтар шығару


Графиктік режімде көрсеткіш ұғымы қолданылады. Ол мәтіндік режімдегі меңзер ұғымына ұқсас. Одан айырмашылығы көрсеткіш экранда көрінбейді.

moveto(x, y) операторы көрсеткішті координатасы (x, y) нүктесіне орналастырады.

moverel(deltaX, deltaY) операторы көрсеткішті оның ағымдық мәнінен ∆Х, ∆У-ке айырмашылығы бар нүктеге орналастырады.

lineto(x, y) операторы ағымдық нүктеден координатасы (x, y) нүктесіне дейін сызық сызады.

Мысалы:

moveto(40, 50)- көрсеткішті координатасы (40, 50) нүктеге орналастырады.

lineto(100,120)- координатасы (40, 50) нүктесінен координатасы (100,120) нүктесіне дейін сызық сызады.

moverel(40, 50)- көрсеткішті координатасы (140,170) нүктеге орналастырады.

lineto(170, 200) - координатасы (140,170) нүктесінен координатасы (170,200) нүктесіне дейін сызық сызады.

rectangle(x1,y1,x2,y2) операторы тіктөртбұрыш салады.

(х1, у1)- тіктөртбұрыштың сол жақ жоғарғы, (х2, у2)- оң жақ төменгі төбелерінің координаталары.

Мысалы: rectangle(10,10,100,100);

bar(x1,y1,x2,y2)іші боялған тіктөртбұрыш салу операторы. Қалыпты жағдайда тіктөртбұрыш ақ түске боялып шығады.

circle(x, y, R)- центрі (х, у) нүктесіндегі, радиусы R шеңбер салу операторы.

Мысал 71. Центрі экран центрінде орналасқан, концентрлі шеңберлер салу бағдарламасын құрыңдар.

main()

{

initwindow(500,500);

for (int r=40; r

circle(250, 250, r);

getch();

closegraph();

}

arc( x, y, StartАngle, EndAngle, R )центрі (х, у) нүктесіндегі, радиусы R шеңбер доғасын салады.

Мұндағы StartАngle, EndAngle- градуспен өрнектелген доғаның бастапқы және соңғы бұрыштары. Доға StartАngle- ден EndAngle- ге дейін сағат тіліне қарсы бағытта сызылады.

Мысалы: arc(x, y, 180, 0, R) операторы  түріндегі, ал

arc(x, y, 0, 180, R) операторы  түріндегі доға салады.

ellipse(x, y, , , Rx, Ry )- центрі (х, у ) нүктесіндегі, ,  бұрыштарының аралығындағы, биіктігі мен ені сәйкес Rx, Ry эллипс сызу операторы.

Мұндағы Rx, Ry- пикселмен өрнектелген ОХ және ОУ бағыттарындағы эллипстің жарты осьтері.

Мысалы: ellipse(250,250,0,360,80,40);

Қарапайым геометриялық фигураларды салу операторын қолданып бағдарлама құрайық.

Мысал 72.

#include

#include

main()

{ initwindow(400,400); {400х400 өлшемді терезе орнату}

setbkcolor(2); cleardevice(); { фонға жасыл түс орнату }

setcolor(1); { кескінге көк түс орнату }

putpixel(200, 200,14); { сары түсті нүкте шығару }

line(100, 200, 300, 320); { кесінді салу }

rectangle(10, 10, 330, 370); {тіктөртбұрыш салу }

setcolor(4); { кескінге қызыл түс орнату}

circle(200, 200, 100); { шеңбер салу }

getch(); { Кез- келген перне басылғанша күту }

closegraph();

}


8.2 Тұйық облысты бояу. Графиктік режімде экранда мәтін шығару


Паскаль графикасында кез келген тұйық облысты бояуға болады. Облысты бояу операторының жазылу үлгісі:

setfillstyle( Pattern, Color);

Мұндағы Pattern аргументі төмендегі 12 шаблонның бірін қабылдайды. Ол шаблондар бояу стилін көрсетеді. Бояу шаблондары 6- кестеде көрсетілген.


Кесте 6. Бояу шаблондарының түрлері

Стиль коды

Сипаты

0

Фон түсімен бояйды

1

Тегіс бояйды

2

----- горизонталь штрих

3

///// оңға көлденең бояу

4

///// оңға көлденең қою бояу

5

\\\\\ солға көлденең қою бояу

6

\\\\\ солға көлденең бояу

7

+ + + торлы бояу

8

хххх қисық торлы бояу

9

тіктөртбұрышты торлы бояу

10

сирек нүктелермен бояу

11

жиі нүктелермен бояу

12

Қолданушы анықтайтын шаблон


Color –бояу түсінің коды.

Мысалы: setfillstyle(1, 4)- қызыл түске тегістей бояйды.

setfillstyle(2, 4)- қызыл түске штрихтап бояйды.

Мысал 73. 15 түске кідіріспен боялатын тіктөртбұрышты салу бағдарламасын құрыңдар.

main()

{initwindow(640,480);

for (int c=0; c

{

setfillstyle(1, c);

bar(10, 10, 620, 450);

Sleep(200);

}

closegraph();

}

Мысал 74. Қызыл түске әр түрлі стильмен боялатын тіктөртбұрышты салу бағдарламасын құрыңдар.

main()

{initwindow(640,480);

for (int p=0; p

{

setfillstyle(p, 4);

bar(10, 10, 620, 450);

Sleep(500);

}

closegraph();

}

Сол жақ жоғарғы төбесінің координатасы (10, 10) , оң жақ төменгі төбесінің координатасы (620, 450) болатын тіктөртбұрыш 73-мысалда әр түрлі түске тегістей боялады, 74- мысалда қызыл түске әртүрлі стильде боялады.

setfillstyle() операторы арқылы облысты бояудың түсі мен стилі ғана орнатылады. Бояуға қажетті облысты көрсету үшін келесі оператор қолданылады.

floodfill(x, y, ColorBorder);

Бұл оператор шекарасында үзік нүктесі жоқ , тұйық облысты бояйды.

Мұндағы х, у – боялатын облысқа тиісті кез келген нүктенің координатасы.

ColorBorder- боялатын облыс шекарасының түсі.

Мысалы:

setcolor(2);

setfillstyle(1, 9);

circle(40, 60, 30);

floodfill(40, 60, 2); {шеңбер ішін ашық көк түске тегістей бояу }

setfillstyle(7, 4);

bar(200, 200,350, 350); {тіктөртбұрыш ішін қызыл түске торлы стильде бояу }

setcolor(14);

setfillstyle(2, 14);

rectangle(10, 10, 30, 30);

floodfill(15, 15, 14); {тіктөртбұрыш ішін сары түске штрихтап бояу }



Боялған фигуралар

Контурлы суреттерден басқа C++ графикасында боялған фигураларды салу операторлары бар. Қалыпты жағдайда олар ақ түске боялады. Бояу типі setfillstyle() операторы арқылы анықталады.

bar(x1, y1, x2, y2)- іші боялған тіктөртбұрыш

bar3d(x1, y1, x2, y2, depth, top ) - тікбұрышты параллелепипед салу (х1,у1) және (х2,у2) –оның фронталды жағының координаталары. Яғни, (х1,у1) параллелепипедтің алдыңғы жағының сол жақ жоғарғы, (х2,у2) оң жақ төменгі бұрыштарының координаты.

depth- қалыңдығы. Логикалық типті top параметрі жоғарғы жағын салу қажет пе екенін анықтайды. Егер top= topOn = true болса, онда жоғарғы жағы салынады.

top= topOff = false болса, онда жоғарғы жағы салынбайды.

fillellipse(x, y, Rx, Ry) - центрі (х, у) нүктесіндегі, жарты осьтері сәйкес Rx, Ry боялған эллипс сызады

pieslice(x, y, , , R) - центрі (х, у) нүктесіндегі, радиусы R шеңбердің ,  бұрыштары арасындағы боялған сектор сызады

sector(x, y, , , Rx, Ry) - эллипстің боялған секторын сызады.

Мысал 75. Келесі бағдарлама боялған фигуралар салуды жүзеге асырады.

main()

{initwindow(300,300);

bar3d(20, 20, 80, 80, 7,0 );

fillellipse(200, 80, 50, 30);

pieslice(50,250,20,90,100);

sector(200,200,0,90,100,50);

getch();

closegraph();

}

Бағдарламаның орындалу нәтижесі 15- суретте көрсетілген.


15- сурет. Боялған фигуралар


Графиктік режімде экранда мәтін шығару

Мәтін төмендегі қасиеттер арқылы сипатталады:

  • мәтін бағыты (тігінен немесе көлденең)

  • мәтін басталатын экран нүктесінің координаты

  • қаріп түрі

  • қаріп өлшемі

Графиктік экранда мәтін шығарудың 2 операторы бар.

1. outtextxy( x, y, text);

Мұндағы x,y шығатын мәтіннің сол жақ жоғарғы бұрышының координаты.

text- экранға шығатын мәтін.

Мәтінді шығару үшін қолданылатын екінші оператор:

2. outtext( text);

Бұл жағдайда мәтін көрсеткіштің ағымдық мәнінен бастап шығады. Бұл операторды бір жолға бірнеше жазба шығарған кезде қолданған ыңғайлы.

settextstyle( Font, Direct, Size )- операторы қаріп стилін орнатады.

Мұндағы Font- қаріп коды (нөмірі)

Direct- қаріп бағытын көрсету коды

Size- қаріп өлшемінің коды


Қаріп кодын көрсету үшін 7- кестедегі тұрақтылар қолданылады.


Кесте 7. Қаріп түрлері

Қаріп аты

коды

сипаты

файл аты

Default_Font

0

8x8 нүктелік қаріп


Triplex_Font

1

үш еселенген қаріп

Trip. chr

SmalL_Font

2

кішірейтілген қаріп

Litt. chr

SansSerif_Font

3

“сан-сериф” тіке қаріп

Sans chr

Gothic_Font

4

готикалық қаріп

Goth. chr


5

қолжазба қаріп

Scri. chr


6

бір штрихты қаріп

Simp. chr


7

әдемі көлбеу қаріп

Tscr.chr.


8

Times Roman типті

Lcom. chr


9

өлшемі үлкейтілген қаріп

Euro. chr


10

екі штрихты ірі қаріп

Bold. chr


Мәтін бағытын ( Direct ) көрсету үшін келесі тұрақтылар қолданылады:

HORIZ_DIR 0 - көлденең { солдан оңға қарай}

VERT_DIR 1 - тігінен { төменнен жоғары қарай}

Әр қаріптің өлшемін (Size) 10 есе өзгертуге болады. Size параметрінің мәні 0 мен 10 аралығында өзгереді. Егер параметр мәні 0-ге тең болса бірлік өлшем, 10- нан артық болса ондық өлшем орнатылады. Қаріптің анық көрінетіндей ең кіші өлшемі 4- ке тең.

Мысалы: settextstyle(4, 0, 7);

outtextxy(40, 50, “Text1”);

Нәтижеде өлшемі 7- ге тең “Text1” сөзі көлденең бағытта, готикалық қаріппен, координаты (40, 50) нүктеден бастап жазылады.

Мысал 76. “Informatika” сөзін C++ графикасындағы әр түрлі қаріпті қолданып жазу бағдарламасын құрыңдар.

main()

{initwindow(300,250); int style=0;

for (int y=5; y

{settextstyle(style, 0, 3);

outtextxy(5,y,"Informatika");

style++;}

getch();

closegraph();}

Бағдарламаның орындалу нәтижесі 16- суретте көрсетілген.


16- сурет. Әр түрлі қаріппен мәтін жазу


Сурет анимациясы былайша жүзеге асады:

  1. Алдымен белгілі бір координатта сурет шығады

  2. Ол бірнеше уақыт экранда кідіреді

  3. Сурет жоғалып кеткен тәрізді болады, яғни экран тазартылады

  4. Сонан соң, сурет келесі координатта шығады

Нәтижеде, сурет қозғалып бара жатқан сияқты бейне пайда болады.

Суретті экранда кідірту үшін graphics.h файлында анықталған Delay() операторы қолданылды.

Delay(N) операторы экрандағы көріністі N миллисекунд кідіртуді жүзеге асырады. (Delay- кідіріс). 1 мсек=1/1000 сек. Жоғарыдағы мысалда шеңбер экранда 0,1 секунд кідірістен кейін шығып тұрады.

Мысал 77. Х осіне параллель бағытта солдан оңға қарай қозғалатын шеңбер суретін шығаратын бағдарлама құрыңдар.

main()

{

initwindow(400,400);

for (int x=20; x

{circle(x, 100, 50);

delay(100);

cleardevice(); }

getch();

closegraph();

}