1. Программалау тілдері. Си тілінің негізгі элементтері



бет3/7
Дата08.06.2018
өлшемі199,78 Kb.
#42012
1   2   3   4   5   6   7

16 cұрақ

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

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

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

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

Дейін” циклі

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

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=”<

}

Әзір” циклі



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

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();


}

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

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



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();


}

17 - 18 cұрақ

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

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

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

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

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



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) ysqrt (х);

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

else ypow(х,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,tcin>>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 коды экранға шығады.



19 сұрақ

си тіліндегі кездейсоқ сандарды шығару функциясы

Бағдарлама құру кезінде кейде басқаруды келесі оператордан басқа операторға беруге тура келеді. Ол үшін басқару берілетін оператор арнайы таңба бойынша белгіленіп қойылуы тиіс. Таңбадан кейін қос нүкте (:) қойылады. Басқаруды операторға беру үшін 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<<"\n x="<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;



cin>>a>>b>>c;

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

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

cout<<”x1=”<< x1<<”x2=”<< х2; goto a1; }

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

a1: ;


getch();

}

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



Мысал14.

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

{ float x, y;

cin>>x;


if (x>=1 && x<=2) {y=sin(x*x); goto a1; }

if (x<1) y=1/x; else y=exp(2*x)*pow(x,1/3);

a1: cout<<”y=”<

}

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<<"a="<

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

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

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

cout<<"\n k="<

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<<" a="<

if (a==7 && b==7 && c==7) {cout<<"\n Bakitti jitilik 777! Areket sani k="<

a1:;

getch();


}

20 сұрақ Си тіліндегі енгізу , шығару операторы

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

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

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

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

Бағдарлама тақырыбы #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() функциясынан кейін орналасады. Жалпы түрі:

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уретте бағдарламаның жүктелу терезесінің интерфейсі көрсетілген.
Dev- C++  Windows операциялық жүйесінің басшылығымен жұмыс жасайтын, С және С++ тілінде бағдарламалау үшін арналған интеграцияланған орта.

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

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

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

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

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

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

21 сурак.

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



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

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

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

{

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

if (шарт) break;

}

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

{

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

if (шарт) contunie;

}

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

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

cin>>n;

for (i=1; i<=n; i++)

{ cin>>x;

if (x%2==1) contunie;

S+=x; k++; }

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

}



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




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

    Басты бет