22 сурак.
С бағдарламалау тілі 1972 жылы Bell Laboratories фирмасының қызметкері Денис Ритчидің басшылығымен Америкада жасап шығарылды. Одан бұрын А және В бағдарламалау тілдері пайда болғанымен, бірақ олар кең қолданыс таба алмады.
С тілі- құрылымы Паскаль тіліне ұқсас жоғары деңгейлі қуатты тіл. Оның төменгі деңгейлі Ассемблер тілімен де ұқсастығы бар. Сондықтан, оны әдебиеттерде орташа деңгейлі тіл деп те атайды.
С тілі арқылы компилятор және операциялық жүйе сияқты жүйелік бағдарламалар жазылады. Бұл тілде жазылған алғашқы бағдарламалық жабдық- Unix операциялық жүйесі.
С тілінің стандарты 1983 жылы Американың ұлттық стандарттар институтында бекітілді және ANSI C деп аталды. 1980 жылдың басында сол фирма қызметкері Бьерн Строуструп С тілінің нысанды- бағдарлы кеңейтілуін жасады. Ол тіл 1983 жылы С++ деп аталды
Деректер типтері
Сандық деректердің С++ тілінде 4 базалық типі бар. Олар int, char- бүтін, float, double- нақты.
Олардан басқа бағдарламада бұл типтердің модификациясы қолданылады. Олар төмендегі 1- кестеде көрсетілген.
23 сурак.
С++ тіліндегі бағдарламада айнымалыны сипаттау форматы төмендегіше болады:
типтің_ аты айнымалылар_ тізімі;
Айнымалыларды сипаттау мысалдары:
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’- тігінен табуляция
‘\?’- сұрақ белгісі
24 сурак.
Бағдарлама құру кезінде кейде басқаруды келесі оператордан басқа операторға беруге тура келеді. Ол үшін басқару берілетін оператор арнайы таңба бойынша белгіленіп қойылуы тиіс. Таңбадан кейін қос нүкте (:) қойылады. Басқаруды операторға беру үшін goto өту операторы қолданылады.
Оның жалпы түрі: goto таңба;
Мысалы:
goto a1;
…
a1: оператор;
b1, c1: оператор;
goto b1;
…
Таңба латын әрпі немесе әріп және санмен белгіленеді. Таңба жолдың басында, сонымен қатар жеке жолда жазылуы мүмкін. Ол жағдайда таңбадан кейін нүктелі үтір белгісі қойылады және ол бос оператор деп аталады.
Мысалы:
a1:;
goto a1; Нәтижеде басқару a1 таңбалы бос операторға беріледі.
Өту операторын қолдануға мысалдар қарастырайық.
Мысал. Экранға 1000, 999, 998, 997 т.с.с. шексіз тізбегін шығару бағдарламасын құру керек.
#include
#include
main()
{int x;
x=1000;
a1: cout<<"\n x="<x--;
goto a1;
getch();
}
Бағдарламаны орындату нәтижесінде 1000- нан бастап бүтін сандар тізбегі кемімелі түрде экранға шығады. system("PAUSE") командасы нәтижені экранға кідіріспен шығаруды жүзеге асырады. Нәтиже экранға шыққаннан кейін жүйе кез келген пернені басуды сұрайды.
25 сурак.
Таңдау операторы арқылы бағдарламадағы мүмкін болатын бірнеше оператордың біреуі таңдалады.
Таңдау операторының C++ - те жазылуының жалпы түрі:
switch (өрнек)
{ case 1- тұрақты: 1- оператор; break;
case 2- тұрақты: 2- оператор; break;
…
default: оператор;
}
Бұл оператор былайша жұмыс істейді:
Алдымен өрнектің мәні есептеледі, сонан соң өрнектің мәніне тең тұрақты ізделінеді. Сәйкесінше, сол тұрақтыдан кейін жазылған оператор орындалады да, таңдау операторының жұмысы аяқталады. Егер тізімде есептелген мәнге тең тұрақты табылмаса, басқару default сөзінен кейін тұрған операторға беріледі.
Мысал. Апта күндерінің нөміріне байланысты оның қазақша – ағылшынша атауын экранға шығаратын бағдарлама құрыңдар.
main()
{ int n;
cout<<”1-ден 7-ге дейінгі санды енгіз”;
cin>>n;
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();
}
Басқа бағдарламалау тілінен айырмашылығы С/C++ тілінде char типі бүтін сандық та, символдық та бола алады. Экранға қалай шығатындығы бұл шаманы қолдану тәсіліне байланысты болады.
Мысал 11.
#include
#include
main()
{ char x;
cin>>x;
printf("%c ",x);
printf("\n ",x);
getch();
}
Бағдарламаны орындатып, х- ке ‘А’ символын енгізсек,
x=А
x=65 мәндері экранға шығады. printf () операторында %c символдары жазылса, онда енгізілген символ, ал %d жазылса, енгізілген символдың ASCII коды экранға шығады.
27 сұрақ әзір циклі мен дейін циклінің айырмашылығы
“Әзір” циклі
“Әзір” циклінің жазылуының жалпы түрі:
while (шартты_ өрнек)
цикл денесі;
Бұл циклде әзір шартты өрнектің мәні 0- ден өзге болғанда, яғни цикл шарты ақиқат болғанда цикл денесі орындалады.
Мысал 20. Екі таңбалы барлық сандардың ішінен 5-ке бөлінетін және 10-ға бөлінбейтін сандарды экранға шығаратын және олардың санын табатын бағдарлама құрыңдар. Бағдарламаның орындалу нәтижесі 5- суретте көрсетілген.
main()
{ int x, k=0;
x=10;
while (x<=99)
{if (x%5==0 && x%10!=0)
{cout<<"\n x="<
x++;}
cout<<"\n k="<getch();
}
Мысал 21. x-тің -5-тен 5-ке дейін 0,2 қадаммен өзгерген мәндері үшін у=х2-1 функциясының мәндерін экранға шығарыңдар.
main()
{ float х, у;
х=-5;
while (х<=5)
{y=pow(x,2)-1;
cout<<”\n x= ”<
х+=0.2;}
}
Мысал 22. Барлық екі таңбалы жұп сандардың көбейтіндісін табатын бағдарлама құрыңдар.
main()
{ int i; unsigned long int P=1;
i=2;
while (i<=98)
{ P=P*i; i+=2; } //немесе P*=i; i+=2;
cout<<”P=”<< P;
}
Мысал 23. Екі натурал санның ең үлкен ортақ бөлгішін және ең кіші ортақ еселігін табатын бағдарлама құрыңдар.
#include
#include
main()
{ int a,b,EYOB, EKOE,k;
cout<<"Екі сан енгіз"; cin>>a>>b;
k=a*b;
while (a!=b)
if (a>b) a=a-b; else b=b-a;
EYOB=a;
cout<<"\n EYOB="<
cout<<"\n EKOE="<
getch();
}
“Дейін” циклі
“Дейін” циклінің жазылу форматы:
do
цикл денесі
while (шартты_ өрнек);
Бұл циклде цикл денесі ең болмағанда бір рет орындалады. Шартты өрнектің мәні 0- ден өзге болғанда, яғни цикл шарты ақиқат болғанда цикл денесі орындалады, керісінше жағдайда цикл аяқталады. Бұл цикл Паскаль тіліндегі repeat .. until цикліне ұқсас, айырмашылығы бұл циклде Паскальда кері шарт жазылса, мұнда тура шарт жазылады.
Мысал 24. n факториал (n!) табу есебін “дейін” циклі арқылы жүзеге асырайық.
main()
{ int i, n; long int P;
cout<<"Cан енгіз"; cin>>n;
P=i=1;
do
P*=i; i++; //немесе P*=i++;
while (i<=n);
cout<<”n!=”<
}
Мысал 25. Алғашқы 10 жұп санның көбейтіндісі мен арифметикалық ортасын табыңдар.
main ()
{ int i, P=1, S=0;
i=2;
do
P*=i; S+=i;
i=i+2;
while (i<=20);
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<<”S=”<
}
28-30 сұрақ
С++ тілінде тармақталу үш түрде жүзеге асырылады:
? шартты операция
тармақталу немесе шартты оператор
таңдау командасы.
Шартты оператордың жазылуының жалпы түрі:
if (шарт) 1- оператор; else 2- оператор; немесе
if (шарт) оператор;
Бұл оператор былайша орындалады: алдымен жақша ішіндегі шарт тексеріледі. Егер оның мәні ақиқат болса, яғни мәні 1- ге тең болса, 1- оператор, әйтпесе 2- оператор орындалады.
Мысал 4. Берілген екі санның үлкенін квадраттап шығаратын бағдарлама құрыңдар.
#include
#include
#include
main()
{ float x,y;
cout<<"х,у -сандарын eнгіз"; cin>>x>>y;
if (x>y) x=pow(x,2); else y=pow(y,2);
cout<<"x= "<>x>>y;
if (x>y) {x=pow(x,2); y=sqrt(y);} else {y=pow(y,2); x=sqrt(x);}
cout<<"x= "<>x>>y;
if (x*x+y*y>=r1*r1 && x*x+y*y<=r2*r2) cout<<"\n тиісті"; else cout<<"\n тиісті емес";
getch();
}
Мысал 7. Функцияны есептеу прогрммасын жазыңдар:
y
#include
#include
#include
main()
{float x,y;
cin>>x;
if (х1) ysqrt (х);
else if (x0) ypow(x,3)/5;
else ypow(х,2)+1;
cout<<"\n y="<
getch();
}
Таңдау операторы
Таңдау операторы арқылы бағдарламадағы мүмкін болатын бірнеше оператордың біреуі таңдалады.
Таңдау операторының C++ - те жазылуының жалпы түрі:
switch (өрнек)
{ case 1- тұрақты: 1- оператор; break;
case 2- тұрақты: 2- оператор; break;
…
default: оператор;
}
Бұл оператор былайша жұмыс істейді:
Алдымен өрнектің мәні есептеледі, сонан соң өрнектің мәніне тең тұрақты ізделінеді. Сәйкесінше, сол тұрақтыдан кейін жазылған оператор орындалады да, таңдау операторының жұмысы аяқталады. Егер тізімде есептелген мәнге тең тұрақты табылмаса, басқару default сөзінен кейін тұрған операторға беріледі.
Мысал 8. Апта күндерінің нөміріне байланысты оның қазақша – ағылшынша атауын экранға шығаратын бағдарлама құрыңдар.
main()
{ int n;
cout<<”1-ден 7-ге дейінгі санды енгіз”;
cin>>n;
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;
cout<<”1-ден 4-ге дейінгі санды енгіз”;
cin>>n;
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
#include
main()
{ char x;
cout<<"Қай бағытқа барасың? Енгіз: o,c,t";
cin>>x;
switch (x)
{
case 'o': cout<<"Атыңнан айрыласың ";break;
case 'с': cout<<" Қиындыққа тап боласың";break;
case 't': cout<<"Дос табасың";}
getch();
}
Басқа бағдарламалау тілінен айырмашылығы С/C++ тілінде char типі бүтін сандық та, символдық та бола алады. Экранға қалай шығатындығы бұл шаманы қолдану тәсіліне байланысты болады.
Мысал 11.
#include
#include
main()
{ char x;
cin>>x;
printf("%c ",x);
printf("\n ",x);
getch();
}
Бағдарламаны орындатып, х- ке ‘А’ символын енгізсек,
x=А
x=65 мәндері экранға шығады. printf () операторында %c символдары жазылса, онда енгізілген символ, ал %d жазылса, енгізілген символдың ASCII коды экранға шығады
Циклдің үш түрі
Кейбір бағдарламаларда белгілі-бір шарттардың сақталуына тәуелді командалардың қандай да бір бөлігі бірнеше рет қайталанады. Мұндай әрекеттерді жүзеге асыратын командаларды қайталану ( цикл) командасы деп атайды. Басқа да бағдарламалау тілдеріндегі сияқты С++ тілінде бағдарламаның қайталанатын бөлігін бағдарламалау үшін цикл операторының 3 түрі қолданылады.
Олар: 1) параметрлі цикл (“үшін” циклі)
2) әзір циклі (жалғасу шарты бар цикл)
3) дейін циклі (аяқталу шарты бар цикл)
Параметрлі цикл
Оның жазылуының жалпы түрі:
for (1-өрнек;2- шартты_ өрнек; 3- өрнек)
цикл_ денесі;
мұндағы 1-өрнек цикл басында бір рет орындалады және цикл параметрінің бастапқы мәнін анықтайды;
2-шартты_ өрнек циклдің орындалуының шарты;
3- өрнек цикл параметрінің өзгеру қадамын анықтайды.
Мысалы: n факториалды (n!) есептеу бағдарламасының бөлігі:
p=1;
for (i=1; i<=n; i++)
p=p*i;
Бұл бөлікті басқаша жазуға да болады:
for (p=1; i=1; i<=n; i++)
p=p*i;
яғни, бастапқы мәнді цикл операторының ішіне кіргізуге болады.
Жақша ішінде кейбір элемент болмауы мүмкін, бұл жағдайда оларды бөлетін ; белгісін жазу міндетті.
p=1; i=1;
for (; i<=n; i++)
p=p*i;
Цикл денесін жақша ішінде жазуға болады, бұл жағдайда жақшадан кейін нүктелі үтір (;) белгісі қойылады:
for (p=1; i=1; i<=n; p=p*i, i++); немесе
for (p=1; i=1; i<=n; p*=i++) ;
Мысал 17. Екіден жиырмаға дейінгі барлық жұп сандардың қосындысын және көбейтіндісін табыңдар.
#include
#include
main()
{ int i; unsigned long int S=0, P=1;
for (i=2; i<=20; i=i+2)
{S+=i;
P*=i;}
cout<<"S="<
getch();
}
Нәтижеде S=110 P=3715891200 мәндері экранға шығады.
Цикл денесі құрама оператордан тұрса , онда олар {} фигуралық жақшаға алынады.
Паскаль тілінде бұл циклдегі қадам 1-ге ғана тең болса, мұнда қадамның мәні кез келген болады.
Мысал 18. Берілген бүтін санның барлық бөлгіштерін табыңдар.
main()
{ int i, n;
cout<<”Санды енгіз”; cin>>n;
for (i=1; i<=n; i++)
if (n%i==0) cout<<”i=”<
}
Мысал 19. Берілген санның көбейту кестесін шығарыңдар.
main()
{ int x,i;
cout<<"Sandi engiz ";cin>>x;
for (i=1; i<=9; i++)
{cout<
cout<<"\n";}
getch();
}
Бағдарламаның орындалу нәтижесі 4- суретте көрсетілген.
“Әзір” циклі
“Әзір” циклінің жазылуының жалпы түрі:
while (шартты_ өрнек)
цикл денесі;
Бұл циклде әзір шартты өрнектің мәні 0- ден өзге болғанда, яғни цикл шарты ақиқат болғанда цикл денесі орындалады.
Мысал 20. Екі таңбалы барлық сандардың ішінен 5-ке бөлінетін және 10-ға бөлінбейтін сандарды экранға шығаратын және олардың санын табатын бағдарлама құрыңдар. Бағдарламаның орындалу нәтижесі 5- суретте көрсетілген.
main()
{ int x, k=0;
x=10;
while (x<=99)
{if (x%5==0 && x%10!=0)
{cout<<"\n x="<
x++;}
cout<<"\n k="<getch();
}
Мысал 21. x-тің -5-тен 5-ке дейін 0,2 қадаммен өзгерген мәндері үшін у=х2-1 функциясының мәндерін экранға шығарыңдар.
main()
{ float х, у;
х=-5;
while (х<=5)
{y=pow(x,2)-1;
cout<<”\n x= ”<
х+=0.2;}
}
Мысал 22. Барлық екі таңбалы жұп сандардың көбейтіндісін табатын бағдарлама құрыңдар.
main()
{ int i; unsigned long int P=1;
i=2;
while (i<=98)
{ P=P*i; i+=2; } //немесе P*=i; i+=2;
cout<<”P=”<< P;
}
Мысал 23. Екі натурал санның ең үлкен ортақ бөлгішін және ең кіші ортақ еселігін табатын бағдарлама құрыңдар.
#include
#include
main()
{ int a,b,EYOB, EKOE,k;
cout<<"Екі сан енгіз"; cin>>a>>b;
k=a*b;
while (a!=b)
if (a>b) a=a-b; else b=b-a;
EYOB=a;
cout<<"\n EYOB="<
cout<<"\n EKOE="<
getch();
}
“Дейін” циклі
“Дейін” циклінің жазылу форматы:
do
цикл денесі
while (шартты_ өрнек);
Бұл циклде цикл денесі ең болмағанда бір рет орындалады. Шартты өрнектің мәні 0- ден өзге болғанда, яғни цикл шарты ақиқат болғанда цикл денесі орындалады, керісінше жағдайда цикл аяқталады. Бұл цикл Паскаль тіліндегі repeat .. until цикліне ұқсас, айырмашылығы бұл циклде Паскальда кері шарт жазылса, мұнда тура шарт жазылады.
Мысал 24. n факториал (n!) табу есебін “дейін” циклі арқылы жүзеге асырайық.
main()
{ int i, n; long int P;
cout<<"Cан енгіз"; cin>>n;
P=i=1;
do
P*=i; i++; //немесе P*=i++;
while (i<=n);
cout<<”n!=”<
}
Мысал 25. Алғашқы 10 жұп санның көбейтіндісі мен арифметикалық ортасын табыңдар.
main ()
{ int i, P=1, S=0;
i=2;
do
P*=i; S+=i;
i=i+2;
while (i<=20);
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<<”S=”<
}
31 сурак.Мәні символ (әріп, цифр, таңба) болатынайнымалысимволдықайнымалыдепаталады.
Символдықайнымалыларғаәрекеттерорындауүшін C++ тіліндеstring.hтақырыптықфайлындаанықталғанфункцияларқолданылады.
Символдықайнымалыларбылайшасипатталады:
charайнымалылартізімі;
Мысалы: chara,b;
charx;
Жолсимволдықжиымтүріндесипатталады.
Мысалы: char x[10];
Символдықжолдыекітүрдеенгізугеболады:
1)жолдықтұрақтыарқылы
Мысалы: char x[20]=”Informatika”;
char x[]=”Informatika”;
2)символдартізіміарқылы
Мысалы: char x[20]={‘I’,’n’, ‘f’, ‘o’, ‘r’, ‘m’, ‘a’, ‘t’, ‘i’, ‘k’, ‘a’,’\0’};
‘\0’- жолсоңынбілдіретін символ.
Символдықжолдыэкранғашығаруүшін Турбо С тіліндеputs() операторы қолданылады.
Жалпы форматы:
puts(“Символдықжол”);
Мысалы: puts(“Сөздіенгіз”);
puts(“\n Есептіңжауабы”);
Символдықжолдыенгізуүшінсәйкесіншеgets() операторы қолданылады.
Бұлоператордыңжалпы форматы:
gets(Символдықайнымалы);
Мысалы: chara[10], S1[20], S2[20];
gets(S1,S2);
gets(a);
Осы екіоператордықолдануғамысалқарастырайық.
Мысал 45. Нүктеменаяқталатынсөйлемдегісөздердіңсанынтабыңдар.
main()
{char S[50]; inti, n=0;
puts("Сөйлеменгіз"); gets(S);
for (i=0; i
if (S[i]==' ' || S[i]=='.') n++;
cout<<"\n n= "<
}
Мысал 46. Сөйлемденешесөз ‘a’ әрпіненбасталатынынанықтаңдар.
main()
{ char S[50]; inti, 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<<"\n n= "<
}
Мысал 47. Сызықшаменбөлінгенекісөздіңалғашқысынэкранғашығаратынбағдарламақұрыңдар.
main()
{ char S[50]; inti, k;
gets(S);
for (i=0; i
if (S[i]=='-') k=i;
for (i=0; i
cout<
}
Достарыңызбен бөлісу: |