Өзіндік жұмыс тапсырмалары:
Өз бетінше орындайтын тапсырмаларға түсініктеме
Берілген есепті талдап, оның математикалық моделін құрыңыз. Есеп
программасын құрғанда оның С және С++ тілдеріндегі нұсқалары көрсетілуі керек.
а) Жеке тапсырмалар: (Бір өлшемді массив үшін)
1) Бүтін сандардан тұратын бір өлшемді массив берілген. Оның элементтерін
кему ретімен орналастыру керек.
2) Клавиатурадан енгізілген 5 бүтін саннан тұратын бір өлшемді массив
берілген. Осы массивке оның нөлдік емес элементтерін жалғастыра
енгізетін программа жазу керек.
3) Топ студенттерінің ішіндегі бойы ең үлкен және ең кіші студенттің бой
көрсеткішің экранға шығаратын программа құрыңыз.
4) Клавиатурадан енгізілген сан берілген массивте бар жоғын анықтайтын
программа құрыңыз. Массив программа орындалуы барысында енгізілуі
керек.
5) Клавиатурадан енгізілген сан берілген массивте неше рет кездесетінін
анықтайтын программа құрыңыз.
6) Массивте бірдей элементтердің барын анықтайтын программа жазу керек.
7) Сыныптағы оқушылардың ішінен бойы орташа бой көрсеткішінен асатын
оқушылардың бойларының ұзындығын шығаратын программа жазыңыз.
8) Бүтін сандардан тұратын массив берілген. Осы массивтегі 5 – ке еселі
элементтердің қосындысын табу керек.
9) Қала дүкендеріндегі сүттің бағалары берілген. Қала дүкендері бойынша
сүттің орташа бағасы нормадан аса ма, соны тексеріңіз. Нормалы бағаны
қолданушы өзі енгізеді.
10) Қала дүкендеріндегі еттің бағалары берілген. Қала дүкендері бойынша
орташа бағаны анықтап, егер орташа баға нормадан асатын болса, оны
нормалы бағаға ауыстыру керек. Нормалы бағаны қолданушы өзі енгізеді.
11) Массив берілген. Оның алғашқы элементі мен соңғы элементінің орнын
ауыстыратын программа құрыңыз.
12) Екі массив берілген. Осы екі массивтің элементтерінің қосындысын
экранға шығаратын программа құрыңыз.
13) Студенттің барлық оқу жылы бойынша «Математика» пәнінен алған
бағалары берілген. Оның осы пән бойынша қорытынды бағасын есептейтін
программа құрыңыз.
14) Студенттің 1 – курстағы қысқы және жазғы сессиясының бағалары
берілген. Оның үлгерімі қалай өзгергенін есептейтін программа жазыңыз.
Егер оның жазғы сессиядағы үлгерімі қысқы сессияға қарағанда артса,
онда “артты” деген, ал керісінше болса, “төмендеді” деген хабарландыру
шығуы керек.
15) Бір сыныптағы оқушылардың білімінің орташа балы берілген. Озат
оқушылар сыныптың неше пайызын құрайтынын есептейтін программа
құрыңыз.
16) Массив берілген. Оның алғашқы және соңғы екі элементінің
қосындысын есептейтін программа құрыңыз.
17) Оқушылар бой көрсеткішінен тәуелсіз екі қатарлы сапқа тұрғызылды.
Мұғалім бұйрығымен саптың бірінші қатарында тұрғандар бойларының
өсу ретімен, ал саптың екінші қатарында тұрғандар бойларының кему
ретімен тұруының программасын жазыңыз.
18) Солдаттар екі қатарлы сапқа бой – бойымен реттеліп тұрғызылған.
Командирдің бұйрығымен олардың бой – бойымен бір қатарлы сапқа
реттеліп тұрғызылуын көрсететін программа құрыңыз.
19) Сыныптағы оқушылардың орташа бой көрсеткішін анықтайтын және
бойы орташа бой көрсеткіштен төмен оқушылардың бойының ұзындығын
көрсететін программа жазыңыз.
20) Бір өлшемді массивтің тақ позициялы элементтерінің ішіндегі ең кіші
элементін, ал жұп позициялы элементтерінің ішіндегі ең үлкен элементін
экранға шығаратын программа жазыңыздар.
б) Жеке тапсырмалар: (Екі өлшемді массив үшін)
1) Екі өлшемді массив берілген. Осы массивтегі ең кіші элементті табуып, оның
реттік номерін анықтау керек. Егер олар бірнешеу болса, олардың реттік
номерін әрқайсысы үшін анықтау қажет.
2) Екі өлшемді массивтің бағандары бойынша элементтерінің қосындысын
анықтайтын программа құрыңыз.
3) Студенттердің 8-ші семестрдегі 5 түрлі пән бойынша алған бағалары
берілген. Студенттердің үлгерімін анықтайтын программа жазыңыз.
4) Екі
өлшемді
квадрат
массив
берілген.
Оның
бас
диогоналының
элементтерінің қосындысын экранға шығаратын программа жазыңыз.
5) Екі өлшемді квадрат массив берілген. Оның элементтерін спираль бойымен
шығаратын программа құрыңыз.
6) Екі өлшемді квадрат массив берілген. Осы матрицаның анықтауышын
табатын программа құрыңыз.
7) Екі өлшемді квадрат массив берілген. Оның бас диогоналының үстінде
орналасқан элементтерінің қосындысын есептейтін программа құру керек.
8) Енгізілген матрица сиқырлы шаршы болуын тексеретін программа құрыңыз.
9) Екі өлшемді екі массив берілген. Осы екі массивтің элементтерінің
қосындысын экранға шығаратын программа құрыңыз.
10) Бензин құятын жерде бензиннің үш түрі бар. Үш күн бойы сатылған бензин
мөлшері литрмен берілген. Бензиннің қай түріне сұраным көп екенін
анықтайтын программа құрыңыз.
11)
Бастауыш сыныптың оқушылары сыныптары бойынша бой – бойымен
сапқа тұрғызылған. Әрбір сынып бойынша оқушылардың орташа бой
көрсеткішін анықтайтын программа жазыңыздар.
12)
Квадрат матрицаның элементтерінің қосындысы максималды болатын
жолының номерін көрсететін программа жазыңыз.
13)
Екі өлшемді массив берілген. Осы матрицаның төрт бұрышындағы
элементтердің қосындысын есептейтін программа жазыңыз.
14)
Үш дүкенде бұйымдардың төрт түрі бойынша бір күнде түскен пайда
берілген. Әрбір дүкен бойынша қайсы бұйым жақсы өткенін анықтау қажет.
15)
0, 1 және 2 - ден бөтен әртүрлі сандардан тұратын квадрат массив
берілген. Оның бас диогоналдарының элементтерін 0 – ге, бас диогоналдың
үстінде тұрған элементтерді 1 –ге, ал бас диогоналдың астында орналасқан
элементтерді 2 – ге ауыстыратын программа құру керек.
16)
Оқушылар үш қатарлы сапқа тұрғызылған. Жұп позицияда тұрған
оқушылар 0 – мен, ал тақ позицияда тұрған оқушылар 1 – мен белгіленген. Тақ
позицияда тұрған оқушыларды экранға шығаратын программа жазыңыз.
17)
Оқушылар бой көрсеткішінен тәуелсіз екі қатарлы сапқа сапқа
тұрғызылды. Мұғалім бұйрығымен бірінші қатарға екінші қатар жалғасып
тұрғызылады. Сол кезде пайда болған бір қатарды экранға шығаратын
программа құрыңыз.
18)
Оқушылар бір қатарлы сапқа тұрғызылған. Жұп позицияда тұрған
оқушылар 0 – мен, ал тақ позицияда тұрған оқушылар 1 – мен белгіленген.
Жұп позицияда тұрған оқушыларды экранға шығаратын программа жазыңыз.
Бақылау сұрақтары:
1) Массив дегеніміз не?
2) Бір өлшемді массив дегеніміз не, екі өлшемді массив дегеніміз не?
3) Массив элементтерін қандай операторлар көмегімен енгізіп, шығаруға және
өңдеуге болады?
4) Массив элементтерінің индексі қандай аралықта өзгереді?
5) Массив қандай типке жатады?
6) Массивті
сипаттау
кезінде
тұрақты
қолданылса,
қандай
директива
қолданылады?
Блиц- тест:
1. С/С++ тілінде бір өлшемді массивті қалай сипаттайды? Төменде
көрсетілген нұсқаларының ішінен дұрысын көрсетіңіз:
A) <типі> <массив аты> [өлшемі];
B) var <массив аты>:array[1..n] of <типі>, мұндағы n – массив
элементтерінің саны;
C) <массив аты> [өлшемі] <типі>;
D) void <массив аты> [өлшемі] <типі>.
E) Массив қолданылмайды
2. A[n] массиві элементтерінің индексі қай аралықта өзгере
алады?
A) 0 – ден бастап n – 1 ге дейін;
B) 1 – ден бастап n – 1 - ге дейін;
C) n – нен бастап 1 –ге дейін;
D) 0 – ден бастап 255 арасында.
E) 1 – ден бастап 255 арасында.
3. С/С++ тілінде екі өлшемді массивті сипаттаудың төменде көрсетілген
нұсқаларының ішінен дұрысын көрсетіңіз:
A. <типі> <массив аты> [жолының өлшемі] [бағанының өлшемі];
B. var <массив аты>:array[1..n,1..m] of <типі>, мұндағы n – массив
жолдарының саны, m – массив бвғвндарының саны;
C. <массив аты> [өлшемі] <типі>;
D. void <массив атыі> [өлшемі] <типі>.
E. <массив атыі> [өлшемі] <типі>.
Глоссарий:
Массив – (әдістемелік нұсқауды қараңыз)
Массивті сұрыптау- массив элементтерін өсу немесе кему реті бойынша
реттеп орналастыру.
Массив индексі – бір атпен аталған бірдей типті элементтердің реттік нөмірі.
Массивті сипаттау- компиляторға бірдей типті элементтің атауын, қандай
ретпен индекстелетінін және ОЖ-дан қанша байт орын берілуі жөнінде
мәліметтердің берілу формасы.
Әдебиеттер:
[1-6],[13],[15].
ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС №6
Тақырыбы: С/С++ ТІЛІНДЕ ЖОЛДЫҚ ҚАТАРЛАРДЫ ӨҢДЕУ
Мақсаты: Студентттерді С/С++ тіліндегі жолдық қатарларды өңдеуге арналған
негізгі функциялармен таныстыру.
Қажетті материалдар мен жабдықтар: ДК, лабораториялық жұмысты орындауға
арналған әдістемелік нұсқаулар.
Лабораториялық жұмыстың мазмұны және орындалу реті:
1. С/С ++ тілінде жолдармен жұмыс жасауға қатысты келтірілген әдістемелік
нұсқау – матриалдарды алдын- ала танысып меңгеру.
2. Ұсынылған мысалды орындау және талқылау.
3. Өзіндік жеке тапсырмалардың оқытушы ұсынған нұсқасын орындау.
4. Лабораториялық жұмыстың есебін (отчет) дайындап тапсыру.
Әдістемелік нұсқау:
С/С++ тілдерінде Турбо Паскаль тіліндегідей жолдық тип жоқ. Жолдар соңғы
элементі \0 литеры болатын литерлер массиві ретінде ұйымдастырылады. С тіліндегі
литерлік массивтің ұзындығы шектелмеген.
Жол литерлік массив түрінде сипатталады.
Мысалы:
char STR[20];
Жолдарды енгізу-шығару функциялары
gets ( ), puts ( ), fgets ( ), fputs ( ), sprintf ( )
gets ( ) функциясы литерлерді енгізу құрылғысынан қабылдап, аргумент ретінде
алынған массивке орналастырады. Енгізуді аяқтаған (Enter пернесін басқан) кезде,
жаңа жол литері (\n) алынады. gets ( ) функциясы оны нольдік литерге (\0)
айналдырады.
gets ( ) функциясын қолданған кезде енгізілген литерлер саны массив өлшемінен
асып кететіндігін анықтау мүмкіндігі жоқ екендігін есте сақтаған жөн.
puts ( ) функциясы gets ( ) функциясының көмегімен енгізілген жолды экранға
шығарады. Ол нольдік литерді, керісінше, жаңа жол литеріне ауыстырады.
fgets ( ) функциясы gets ( ) функциясына ұқсас, бірақ массив өлшеміне сәйкес
клавиатурадан енгізілетін литерлер санын бақылап отыруға мүмкіндік береді.
Литерлер қандай да бір файлдан немесе стандартты енгізу құрылғысынан (stdin)
оқылады. Енгізілген литерлер саны массив өлшемінен бір бірлікке аз болуы керек,
өйткені соңғы позицияға автоматты түрде нольдік литер орналасады. fgets ( )
функциясымен бірге fputs ( ) функциясы қолданылады. Бұл функция литерлерді
файлға немесе стандартты шығару құрылғысына (stdout) бағыттайды.
sprintf ( )
(string
printf(),
яғни
printf()
жолдық)
функциясы
printf()
функциясындағыдай форматтау спецификаторлары қолданылады. Айырмашылығы
sprintf ( ) функциясы нәтижені экранға емес, берілген массивке орналастырады.
Бұндай жағдай нәтижені, айталық экранға және принтерге бірнеше рет шығару
кезінде тиімді болуы мүмкін.
Жолдармен жұмыс істеуге арналған негізгі функциялар (string.h, stdlib.h)
Функция
Прототипі және атқаратын қызметі
atof
double atof (char *str);
str жолын double типті нақты санға түрлендіреді
atoi
int atoi (char *str);
str жолын ондық бүтін санға түрлендіреді
itoa
char *itoa (int v, char *str, int baz);
v бүтін санын str жолына түрлендіреді. Санды бейнелеу кезінде
baz (2 ≤ baz ≤ 36) негізі қолданылады.
strcat
char *strcat (char *sp, char *si);
si жолын sp жолына тіркеп жазады (конкатенация)
strncat
char *strncat (char *sp, char *si, int k);
si жолының k литерін sp жолына тіркеп жазады (конкатенация)
strchr
char *strchr (char *str, int c);
str жолында c литерінің алғашқы енуін анықтайды
strrchr
char *strnchr (char *str, int c);
str жолында c литерінің соңғы енуін анықтайды
strcmp
int strcmp (char *str1, char *str2);
str1 және str2 жолдарын салыстырады. Егер str1 < str2 болса,
нәтиже теріс; егер str1 = str2 болса, нәтиже нольге тең және егер
str1 > str2 – нәтиже оң.
strncmp
char *strncmp (char *str1, char *str2, int k);
str1 және str2 жолдарының алғашқы k литерін салыстырады.
Егер str1 < str2 болса, нәтиже теріс; егер str1 = str2 болса,
нәтиже нольге тең және егер str1 > str2 – нәтиже оң.
strcpy
char *strcpy (char *sp, char *si);
si жолын байттарын sp жолына көшіреді.
strncpy
char *strncpy (char *sp, char *si, int k);
si жолының k литерін sp жолына көшіреді.
strlen
unsigned strlen (const char *str);
str жолының ұзындығын анықтайды
strlwr
char *strlwr (char *str);
Жолдағы жоғарғы регистр әріптерін сәйкесінше төменгі
регистрге ауыстырады.
strupr
char *strupr ( char *str);
Жолдағы төменгі регистр әріптерін сәйкесінше жоғарғы
регистрге ауыстырады.
strset
char *strset (char *str, int c);
str жолын c литерімен толтырады
strnset
char *strnset (char *str, int c, int kol);
str жолының алғашқы k литерін c литерімен ауыстырады
strstr
char *strstr (const char *str1, const char *str2);
str1 жолыннан str2 жолын іздейді. Көрсеткішті str1 жолының
str2 жолы басталатын элементіне қайтарады
Мысал. Жол берілген. Жолдағы әрбір сөзді қиып алып, кері ретпен шығару
Есептің қойылуы. Жолдағы сөздерді бөліп тұратын символдар үшін razd,
берілген жолды енгізу үшін p, ал сөздерді қиып алу үшін t символдық массивтерін
аламыз.
l – ажыратқыштардан тұратын массив ұзындығы, dt – әрбір сөздің ұзындығы.
i, j, r – цикл параметрлері.
m – әрбір сөздегі әріптер саны.
С тіліндегі программасы
#include
#include
#define size 100
main()
{ int i,j,k,r,l,dt,m=0;
//Сөйлемдегі сөздерді ажырату белгілерінен тұратын символдық массив
char razd[]={' ','"',',','?',';',':','.','!','-','+','/','(',')','[',']','{','}','~','^','<','>','=','\0'};
char c, p[size],t[size]="";
gets(p);
l=strlen(razd);
for(j=0;j<=strlen(p)-1;j++)
{k=0;
for(i=0;i<=l-1;i++)
if (p[j]==razd[i]) k=1;
if (k==0) {t[m]=p[j]; m++;}
else if(m!=0) { printf("\n%s - ",t);
dt=strlen(t); //Сөздің ұзындығы
//Сөзді кері ретпен жазу циклы
for(r=0;r<=(dt-1)/2;r++)
{ c=t[r]; t[r]=t[dt-r-1]; t[dt-r-1]=c;}
printf("%s\n",t);
for (r=0;r
m=0;}
}
//Cоңғы символ әріп болған жағдайда
if(m!=0) printf("\n%s - ",t); dt=strlen(t);
for(r=0;r<=(dt-1)/2;r++)
{ c=t[r];
t[r]=t[dt-r-1];
t[dt-r-1]=c;}
printf("%s\n",t);
return(0);
}
Өз бетінше орындалатын тапсырмаға түсініктеме
Есепті шығару барысында оның қойылымын, математикалық моделін, блок-
схемасын құрып, программасын С және С++ тілдерінде жазып, нәтижесін көрсетіңіз.
Жеке тапсырмалар
1. Арасында қос нүкте (:) белгісі бар литерлер тізбегі берілген. Оған дейінгі
литерлер санын анықтау.
2. Нүктемен (.) аяқталған текст берілген. Үш әріптен тұратын сөзді экранға
шығару.
3. Жол берілген. Осы жолға 'abc' әріптерінің тобы қанша рет енетінін анықтау.
4. Жол берілген. Оның соңғы сөзіндегі 'k' әріпінің санын есептеу.
5. Жол берілген. Қатар тұрған 'a' әріптерінің ең ұзын тізбегін есептеу.
6. Бір жабылатын және бір ашылатын жақшалары бар литерлер тізбегі берілген.
Экранға осы жақшалардың ішіндегі литерлерді шығару.
7. Нүктелі үтір (;) литерімен бөлінген сөздер тізбегі берілген. Тізбек қос
нүктемен (:) аяқталады. 'a' әріпімен аяқталатын қанша сөздің бар екендігін
анықтау.
8. Жол берілген. Ең болмағанда бір 'k' әріпінен тұратын сөздерді табу.
9. Жол берілген. Бір әріптен басталып, сол әріппен аяқталатын сөздерді табу.
10. Жолдағы барлық нүктелі үтірлерді (;) қос нүктемен (:) ауыстыру.
Ауыстырулар санын есептеу.
11. Жолдағы барлық қос нүкте (:) литерлерін өшіру және өшірілген литерлер
санын есептеу.
12. Жолдағы сөздердің арасындағы бос орындардың орнына үтір (,) және бос орын
қою.
13. Жақшаға алынған жолдың бөлігін жақшасымен бірге өшіру.
14. Берілген сөздің жолда қанша рет кездесетінін анықтау.
15. Жолда бір нүктелі үтір (;) бар. Оған дейінгі және одан кейінгі литерлер санын
есептеу.
16. Берілген сөздегі әріптердің санына байланысты '!' литерін тіркеу. (Мысалы,
«УРА» жолынан «УРА!!!» жолын алу).
17. Жол берілген. Осы жолдағы «a» әріптерін «b» әріптеріне ауыстыратын
программа жазу.
18. Жол берілген. Жолдағы тыныс белгілер санын есептеу.
19. Текст берілген. Ондағы ең қысқа сөздің неше рет кездесетінін анықтау.
20. Текст берілген. Осы тексте кездесетін барлық сөздерді алфавиттік ретпен
шығару.
21. Литерлер массиві берілген. Әріптен басқа барлық литерлерді жойып және
барлық кіші әріптерді үлкен әріптермен алмастыр.
Блиц- тест:
1. c-ны жоғарғы регистрге келтіретін функция
A) toupper(c)
B) isalnum(c)
C) tolower(c)
D) case(c)
E) Upcase ( с)
2. Литерлік шамаларға қолданылатын функциялар қай кітапханада
орналасқан?
A) < string . h >
B) < stdio. h >
C) < conio. h >
D) < ctype. h >
E) < iostream. h >
3. Жолдың ұзындығын табу функциясын көрсметіңіз:
A) str len
B) strstr
C) Strcmp
D) strcpy
E) Length
Глоссарий:
Жолдар- символдар тізбегі немесе символдық массив.
Жол ұзындығы- жол құрамындағы символдар саны.
Әдебиеттер:
[1-6],[13],[15].
ЛАБОРАТОРИЯЛЫҚ ЖҰМЫС №7
Тақырыбы: С/С++ ТІЛІНДЕГІ ІШКІ ПРОГРАММАЛАР - ФУНКЦИЯЛАР.
Мақсаты: Функция туралы түсінік беріп, функциялар құруды және программада
қолдана білуге үйрету.
Қажетті материалдар мен жабдықтар: ДК, лабораториялық жұмысты орындауға
арналған әдістемелік нұсқаулар.
Лабораториялық жұмыстың мазмұны және орындалу реті:
1. С/С ++ тілінде ішкі программаларды функция түрінде ұйымдастыруға
қатысты әдістемелік нұсқау – матриалдарды алдын ала танысып меңгеру.
2. Ұсынылған мысалды орындау және талқылау.
3. Өзіндік жеке тапсырмалардың оқытушы ұсынған нұсқасын орындау.
4. Лабораториялық жұмыстың есебін (отчет) дайындап тапсыру.
І. Әдістемелік нұсқау:
Функция – бұл аяқталған әрекетті орындайтын операторлар тобы. Олар
программаны жеке блоктарға немесе модульдерге бөліп, басқаруға мүмкіндік
береді. Бұл программа құрылымын жеңілдетеді. Функцияны қолдану үшін оның
қалай жұмыс жасайтынын білу міндетті емес, тек қалай шақыру керектігін білу
жеткілікті. Функция программада тек бір рет қана жазылып, бірнеше рет
шақырылуы мүмкін. С/С++ тілінің негізгі программалық кодын осы функциялар
құрайды. Бұл тілдердегі кез келген программада ең кемінде бір функция - main ()
функциясы болады. Ол программаның аяқталу кодын қайтарады.
Әрбір функцияның прототипі, яғни алдын ала хабарланған функция тақырыбы
болуы керек. Тақырыбында функция аты, қайтарылатын нәтиже типі, сонымен
қатар қанша және қандай типті аргументтер берілу керектігі көрсетіледі.
Функцияның жалпы сипатталу синтаксисі төмендегідей:
нәтиже_типі функция_аты (аргумент_типі аргумент_аты,… )
{ .
.
функция денесі
.
.
}
Мұндағы:
нәтиже_типі –функцияның қайтаратын мәнінің типі;
функция_аты – функцияның аты;
аргумент_типі – фукцияда қолданылатын формальді аргумент типі;
аргумент_аты- фукцияда қолданылатын формальді аргумент аты.
Функция туралы сөз болғанды екі түрлі аргумент, біріншісі – нақты аргумент,
екіншісі –формальді аргумент туралы айтылады. Нақты аргумент функцияны
шақырған уақытта беріледі, ал формальді аргумент функция сипаттамасында
ғана қолданылады.
Формальді аргументтер әр түрлі типті болуы мүмкін:void, char, int, float, double және
массив. void типі функцияда формальді аргументтер көрсетілмеген уақытта
қолданылады.
Функция нітижесінде void, bool, int, long, float, double типті айнымалылар қайтаруы
мүмкін. Функция ешқандай мәлімет қайтармайтын болса, void типімен
сипатталады.
Достарыңызбен бөлісу: |