С++ программа компиляторы жадтағы орналасуына қарап, мәндерді орындалатын кодқа айналдырады. Мысалы:
int ayliq =12000;
қатарын компилятор жадта ayliq деп аталатын айнымалы үшін компьютер жадынан орын ажыратады. Жадтан қанша орын ажырату алдын – ала кµрсетіледі. Мысалы, integer бүтін сандар үшін компилятор жадтан 2 байт орын бµледі. Ayliq атты айнымалы мәні адрестелгенде бірінші байт орнын айнымалы адресі түсінеді және компилятор программаны орындағанда айнымалы мәні бірінші байт адресінен іздейді. Мысалы: 12000 мәні 1214 нµмерлі екі байт адресіне сақталады.
Figure 1.2 Representation of an integer in memory.
Salary
(a two-byte integer whose address is 1214 )
Программистер айнымалы мәнінің анық адресіне µте аз жағдайда қызығады. Бұл жадты жалпы ұйымдастырғанда және жадтағы адрестерді бµлгенде ғана қажетті.
Дәріс №9.Өзін-өзі тексеру сұрақтары
Қатарлық типтер қандай типте анықталады?
Идентификатор дегеніміз не?
Дәріс №10. Деректердің күрделі типтері: массивтер
Массив дегеніміз не? Массив қызметтері және сипатталуы.
Массивтің инициялизациялануы.
Массив элементтерімен жұмыс жасау.
Символдық массивтер.
Көп өлшемді массивтер.
Массив дегеніміз не? Массив қызметтері және сипатталуы.
Массив дегеніміз - бір атпен аталған, әртүрлі индекстелген бір типті элементтер жиынтығы.
Қасиеттері:
Массивтің қасиеттерін анықтайтын 4 негізгі принципі бар:
-массивте элементтер деп аталатын мәндер сақталады;
-массивтің барлық элементтері бір типті болуы керек;
-жадыда массивтің барлық элементі тізбектеліп орналасады және бірінші элемент адрестің нөлдік индексін білдіреді;
-массив атауы тұрақты болып табылады және массивтің бірінші элементінің адресінен тұрады.
Mассивтің сипатталуы:
<элементтің типі> <массив аты> [<элементтер саны>];
Мысалы, int a[12]; {12 элементтен тұратын массив}
char s[20]; {20 элементтен тұратын массив}
#define KOL 10 {}
int [KOL];
Массивтің инициялизациялануы.
Массивті инициялизациялау 3 тәсілмен анықталады:
- массивті құру барысында;
- массивті құру барысында бастапқы тұрақтыларды көрсету;
- программаның орындалу барысында;
- құру барысында массивтің бастапқы мәндері берілмесе, онда автоматты түрде массив 0-мен толтырылады (NULL).
Мысалдар:
int a[3]={-1,0,1};
char buk [ ]={‘A’,’.’,’*’,’-‘,’!’,’i’,’u’};
float x[4]={0,1.5,7.55,-3.3E1,0,1.1457890,-1.1};
Массив элементінің саны мәндер санына сәйкес келмесе (3-ші мысал) көпшілік компиляторда қате хабарланады, ал кейбірі автоматты түрде өлшемін үлкейтеді немесе жетпесе (мән) 0-мен толықтырылады. 2-ші мысалда массивтің элементтер саны мәндері санына қарай анықталады.
Массив элементтерімен жұмыс жасау.
Массив элементтерін қолдану үшін квадрат жақшада бүтін мәнді индекс көрсетіледі. Мұндағы индекс массивтің базалық адресіне қарағанда элементтің орнынының ығысу адресін анықтайды. С/С++ машиналық-бағытталған тіл болғандықтан массивтің бірінші элементті 0-ші индекстен басталып нөмірленеді, себебі массивтің бірінші элементті оның базалық адресінің басынада орналасады да бірінші элементтің адресін алу үшін ешқандай ығысу жасалудың қажеті жоқ. Мысалы, 5-ші элементтің адресін алу үшін базалық адрестен бастап, 4 элементке ығысу орындалуы тиіс. Массивпен жұмыс жасауда алдымен массив сипатталады. Мұнда квадрат жақшада оның элементтерінің саны көрсетіледі, ол өз кезегінде жадыдан бөлінетін ұяшықтар санын анықтайды.
Мысалы:
Int imas[6];
Сипатталуына сәйкес анықталған массивтің элементтерінің саны -6 және элементтері 0-ден 5-ке дейін индекстелгендіктен мынадай қолданылу жолы дұрыс болмайды:
Imas[6]=3667;
Массив элементін қолданғанда индекс ретінде үш түрлі мән беруге болады:
Сандық тұрақты.
Айнымалы.
Өрнек.
Мұндағы мәндердің нәтижесі массивтің сипаттамасындағы мәліметтерге сәйкес логикалық корректі сан болуы тиіс.
Қолданылу мысалдары:
#define K 8
int imas[k]; /*8 элементтерен тұратын массив сипаты */
int w=6; /* w бүтін типті айнымалысының сипаты*/
imas[3]; /*массивтің 4-ші элементті */
imas[w]; /* массивтің 7-ші элементі */
imas[k-6]; /*массивтің 3-ші элементі */ Индекс массивтің жадыдан қанша байт орын алатынынан тәуелсіз тікелей реттік нөмініне сілтейді.
Символдық массивтер
Егер программада жолдық мәліметтерді өңдеу қажет болса, онда оны символдар массив ретінде қарастыру қажет. Мұндай массивте жолдың әр элементі үшін жеке ұяшықтар бөлінеді және ең соңғы элементі ретінде жолдың соңы таңбасы (\о) қойылуы тиіс.
Символдық массивті енгізу және инициализациялау мысалдарына программа келтірейік:
#include
main ()
{
char pan[12], razm[5];
static char opr[11]=”информация”;
razm[0]=’б’;
razm[1]=’а’;
razm[2]=’й’;
razm[3]=’т’;
razm[4]=\o’;
printf(“\n информатика сөзін енгізіңіз:“);
scanf(“%s”, pan);
printf(“\n %s \n”, pan);
printf(“\n %s \n”, razm);
printf(“\n %s \n”, opr);
}
Көріп отырғанымыздай символық массивке енгізілетін жолдық мәннің ұзындықтары бірге арттырылып алынып отыр. Ол орын жолдың соңы таңбасына арналады. Инициализациялау барысында ол таңб арнайы қойылады.
Көп өлшемді массивтер
Бір типті элементтер жиынтығын өңдеуде олардың жадыда санына қарай және элементтерін қолдану моделіне қарай анықтап сипаттау мүмкіндігі бар. Соған байланысты массивтің өлшемі анықталады деп есептеледі. Демек, индекстерінің көрсетілуіне қарай бір өлшемді, екі өлшемді т.с.с. массивтерді анықтауға болады. Екі немесе одан да көп өлшемді массивтеркөп өлшемді массивтер деп аталады. Сәйкес өлшемде сипттау үшін квадрат жақшаларда олардың өлшемдері көрсетіледі. Мысалы, екі өлшемді массив екі квадрат жақшамен анықталып төмендегідей сипатталады:
float massiv[3][4];
Мұндағы massiv массив атауы, ал массивтің 12 элементі бар, массив 0-ден 2-ге дейін индекстелетін 3 жолдан және 0-ден 3-ке дейін индекстелетін 4 бағаннан тұрады.
Практикада массив өлшемі көбінесе үш өлшемдіден аспайды. Массивті екі өлшемді түрде сипаттағанмен ол ЭЕМ жадысында тізбектелген бірдей типті мәндер тізбегі ретінде орналатырылады да, массивтің алғашқы элементінің орынының адресі-базалық адресі массив атуына беріледі. Жалпы массив атауы - өз бетінше көрсеткіш болып табылады.
С/С++ тілдерінде практикада математикалық матрица түрінде анықталатын есептерді қарастырғанда көп өлшемді массив құру міндетті емес. Оны бір өлшемді массив түрінде ұйымдастыруға болады. Ал, элементтерін ретімен қолдану үшін оның реттік нөмірін сәйкес анықтау формуласын дәл анықтаса жеткілікті. Себебі компьютерде көп өлшемді массив түрінде сипатталғаныменбірдей элементтер тізбегі басқарылады.
Мысалы, a[3,4] массивінің a[і,j] –ші элементін қолдану ретін қарастырайық. Ол үшін 12 элементтен тұратын бір өлшемді массивті төмендегідей сипаттайық:
Float a[12];
Ал, a[і,j] –ші элементін мына түрде өрнектеледі - a[i*4+j].
Мысалы, 2 жолы мен 3 бағанының қиылысуындағы элементті қолдану үшін оның a[1][2] индекстерімен анықталатыны белгілі. Ал жоғарыдағы a[i*3+j] өрнегіне қоятын болсақ a[1*4+2]=a[6] болады. Бұдан екінші жолдың 3-ші элементті тізбекте 7-ші екендігін, ал оны қолдану үшін массивтің базалық адресіне қарағанда 6 элементке жылжу қажеттігін аңғару қиын емес.
Дәріс №10.Өзін-өзі тексеру сұрақтары немесе тестер
Массив атауы айнымалы ма?
Массивтің нөлден бастап нөмірленуі неден тәуелді?
Көп өлшемді массивтің бір өлшемді массив ретінде басқарылуына мән беріңіз.
Дәріс №11. Деректердің күрделі типтері: массивтер
Массив дегеніміз не? Массив қызметтері және сипатталуы.
Массивтің инициялизациялануы.
Массив элементтерімен жұмыс жасау.
Символдық массивтер.
Көп өлшемді массивтер.
Массив дегеніміз не? Массив қызметтері және сипатталуы.
Массив дегеніміз - бір атпен аталған, әртүрлі индекстелген бір типті элементтер жиынтығы.
Қасиеттері:
Массивтің қасиеттерін анықтайтын 4 негізгі принципі бар:
-массивте элементтер деп аталатын мәндер сақталады;
-массивтің барлық элементтері бір типті болуы керек;
-жадыда массивтің барлық элементі тізбектеліп орналасады және бірінші элемент адрестің нөлдік индексін білдіреді;
-массив атауы тұрақты болып табылады және массивтің бірінші элементінің адресінен тұрады.
Mассивтің сипатталуы:
<элементтің типі> <массив аты> [<элементтер саны>];
Мысалы, int a[12]; {12 элементтен тұратын массив}
char s[20]; {20 элементтен тұратын массив}
#define KOL 10 {}
int [KOL];
Массивтің инициялизациялануы.
Массивті инициялизациялау 3 тәсілмен анықталады:
- массивті құру барысында;
- массивті құру барысында бастапқы тұрақтыларды көрсету;
- програманың орындалу барысында;
- құру барысында массивтің бастапқы мәндері берілмесе, онда автоматты түрде массив 0-мен толтырылады (NULL).
Мысалдар:
int a[3]={-1,0,1};
char buk [ ]={‘A’,’.’,’*’,’-‘,’!’,’i’,’u’};
float x[4]={0,1.5,7.55,-3.3E1,0,1.1457890,-1.1};
Массив элементінің саны мәндер санына сәйкес келмесе (3-ші мысал) көпшілік компиляторда қате хабарланады, ал кейбірі автоматты түрде өлшемін үлкейтеді немесе жетпесе (мән) 0-мен толықтырылады. 2-ші мысалда массивтің элементтер саны мәндері санына қарай анықталады.
Массив элементтерімен жұмыс жасау.
Массив элементтерін қолдану үшін квадрат жақшада бүтін мәнді индекс көрсетіледі. Мұндағы индекс массивтің базалық адресіне қарағанда элементтің орнынының ығысу адресін анықтайды. С/С++ машиналық-бағытталған тіл болғандықтан массивтің бірінші элементті 0-ші индекстен басталып нөмірленеді, себебі массивтің бірінші элементті оның базалық адресінің басынада орналасады да бірінші элементтің адресін алу үшін ешқандай ығысу жасалудың қажеті жоқ. Мысалы, 5-ші элементтің адресін алу үшін базалық адрестен бастап, 4 элементке ығысу орындалуы тиіс. Массивпен жұмыс жасауда алдымен массив сипатталады. Мұнда квадрат жақшада оның элементтерінің саны көрсетіледі, ол өз кезегінде жадыдан бөлінетін ұяшықтар санын анықтайды.
Мысалы:
Int imas[6];
Сипатталуына сәйкес анықталған массивтің элементтерінің саны -6 және элементтері 0-ден 5-ке дейін индекстелгендіктен мынадай қолданылу жолы дұрыс болмайды:
Imas[6]=3667;
Массив элементін қолданғанда индекс ретінде үш түрлі мән беруге болады:
Сандық тұрақты.
Айнымалы.
Өрнек.
Мұндағы мәндердің нәтижесі массивтің сипаттамасындағы мәліметтерге сәйкес логикалық корректі сан болуы тиіс.
Қолданылу мысалдары:
#define K 8
int imas[k]; /*8 элементтерен тұратын массив сипаты */
int w=6; /* w бүтін типті айнымалысының сипаты*/
imas[3]; /*массивтің 4-ші элементті */
imas[w]; /* массивтің 7-ші элементі */
imas[k-6]; /*массивтің 3-ші элементі */ Индекс массивтің жадыдан қанша байт орын алатынынан тәуелсіз тікелей реттік нөмініне сілтейді.
Символдық массивтер
Егер программада жолдық мәліметтерді өңдеу қажет болса, онда оны символдар массив ретінде қарастыру қажет. Мұндай массивте жолдың әр элементі үшін жеке ұяшықтар бөлінеді және ең соңғы элементі ретінде жолдың соңы таңбасы (\о) қойылуы тиіс.
Символдық массивті енгізу және инициализациялау мысалдарына программа келтірейік:
#include
main ()
{
char pan[12], razm[5];
static char opr[11]=”информация”;
razm[0]=’б’;
razm[1]=’а’;
razm[2]=’й’;
razm[3]=’т’;
razm[4]=\o’;
printf(“\n информатика сөзін енгізіңіз:“);
scanf(“%s”, pan);
printf(“\n %s \n”, pan);
printf(“\n %s \n”, razm);
printf(“\n %s \n”, opr);
}
Көріп отырғанымыздай символық массивке енгізілетін жолдық мәннің ұзындықтары бірге арттырылып алынып отыр. Ол орын жолдың соңы таңбасына арналады. Инициализациялау барысында ол таңб арнайы қойылады.
Көп өлшемді массивтер
Бір типті элементтер жиынтығын өңдеуде олардың жадыда санына қарай және элементтерін қолдану моделіне қарай анықтап сипаттау мүмкіндігі бар. Соған байланысты массивтің өлшемі анықталады деп есептеледі. Демек, индекстерінің көрсетілуіне қарай бір өлшемді, екі өлшемді т.с.с. массивтерді анықтауға болады. Екі немесе одан да көп өлшемді массивтеркөп өлшемді массивтер деп аталады. Сәйкес өлшемде сипттау үшін квадрат жақшаларда олардың өлшемдері көрсетіледі. Мысалы, екі өлшемді массив екі квадрат жақшамен анықталып төмендегідей сипатталады:
float massiv[3][4];
Мұндағы massiv массив атауы, ал массивтің 12 элементі бар, массив 0-ден 2-ге дейін индекстелетін 3 жолдан және 0-ден 3-ке дейін индекстелетін 4 бағаннан тұрады.
Практикада массив өлшемі көбінесе үш өлшемдіден аспайды. Массивті екі өлшемді түрде сипаттағанмен ол ЭЕМ жадысында тізбектелген бірдей типті мәндер тізбегі ретінде орналатырылады да, массивтің алғашқы элементінің орынының адресі-базалық адресі массив атуына беріледі. Жалпы массив атауы - өз бетінше көрсеткіш болып табылады.
С/С++ тілдерінде практикада математикалық матрица түрінде анықталатын есептерді қарастырғанда көп өлшемді массив құру міндетті емес. Оны бір өлшемді массив түрінде ұйымдастыруға болады. Ал, элементтерін ретімен қолдану үшін оның реттік нөмірін сәйкес анықтау формуласын дәл анықтаса жеткілікті. Себебі компьютерде көп өлшемді массив түрінде сипатталғаныменбірдей элементтер тізбегі басқарылады.
Мысалы, a[3,4] массивінің a[і,j] –ші элементін қолдану ретін қарастырайық. Ол үшін 12 элементтен тұратын бір өлшемді массивті төмендегідей сипаттайық:
Float a[12];
Ал, a[і,j] –ші элементін мына түрде өрнектеледі - a[i*4+j].
Мысалы, 2 жолы мен 3 бағанының қиылысуындағы элементті қолдану үшін оның a[1][2] индекстерімен анықталатыны белгілі. Ал жоғарыдағы a[i*3+j] өрнегіне қоятын болсақ a[1*4+2]=a[6] болады. Бұдан екінші жолдың 3-ші элементті тізбекте 7-ші екендігін, ал оны қолдану үшін массивтің базалық адресіне қарағанда 6 элементке жылжу қажеттігін аңғару қиын емес.
Дәріс №11.Өзін-өзі тексеру сұрақтары немесе тестер
Массив атауы айнымалы ма?
Массивтің нөлден бастап нөмірленуі неден тәуелді?
Көп өлшемді массивтің бір өлшемді массив ретінде басқарылуына мән беріңіз.
Дәріс №12. Деректердің құрылымы (структурасы)
Структуралар түсінігі
Структуралар мен функциялар
Структуралар массиві
Структураларға көрсеткіш
1 Структуралар түсінігі
Структура – бір атпен біріктірілген бір немесе бірнеше әр түрлі типті айнымалылар тобы. Структура struct қызметші сөзімен құрылады. Структураның жалпы құрылымы төмендегідей:
struct тег {
тип1 иден1;
тип2 иден2;
… …
типN иденN;
};
мұндағы тег мәліметтердің жаңа типі болып саналады және оны айнымалыны сипаттауда қолдануға болады.
Сипатталған структура негізінде айнымалы құру үшін
struct <тег> <айнымалы>
С++ тілінде struct қызметші сөзін көрсетпесе де болады:
<тег> <айнымалы>
Айнымалыны структураны құру кезінде де анықтауға болады:
struct тег {
тип1 иден1;
тип2 иден2;
… …
типN иденN;
} <айнымалы>;
Егер структура типті басқа айнымалылар құрылмайтын болса, структура тегінкөрсетпеуге болады. Мұндай структура атаусыз (безымянный) деп аталады:
struct {
тип1 иден1;
тип2 иден2;
… …
типN иденN;
} <айнымалылар тізімі>;
Сипаттау мысалы:
Struct strtype {
Char fam[25];
Char gor[20];
Int god;
Float zarp;
};
Мұнда strtype атты структура құрылды. Осы структура арқылы айнымалы төмендегідей сипатталады:
Struct rab strtype;
Немесе былайша да сипаттауға болады:
Struct strtype {
Char fam[25];
Char gor[20];
Int god;
Float zarp;
} rab;
Структуралар іштестірілген де болуы мүмкін:
struct тег1 {
тип1 иден1;
тип2 иден2;
тип3 иден3;
};
struct тег2 {
тип1 иден1;
тип2 иден2;
struct тег1 иден3;
};
Қолданылу мысалы:
struct adr {
char ul[20];
int dom;
int kb;
}
struct adam {
char fam[25];
struct adr;
}
Сәйкесінше айнымалыны сипаттау мысалы:
struct adam sotr;
ал, қолданылу мысалы:
sotr.adr.dom=5;
Коріп отырғанымыздай структура элементтерін нүкте операторының көмегімен алуға болады, форматы мынадай:
<айнымалы>.<элемент>
Структура элементтері циклда енгізілгенде _flusshall() –функциясы кіріс легіндегі жаңа жол символын өшіруге, яғни буферді тазалауға қолданылады. Жаңа жол символы scanf( ) функциясын қолданғанда қойылады. Ал, gets( ) функциясы бұл таңбаға дейінгі символдарды ғана оқиды.
&&&
$$$002-012-002$3.2.12.2 Стуктуралар мен функциялар
Кейбір жағдайларда структураны функция денесінде қолдану қажеттігі туындайды. Ондай жағдайда функция прототипінде структураны функция параметрі ретінде беру керек (С++ тілінде struct қызметші сөзін көрсету міндетті емес):
// С және С++ тілдерінде
<функция типі> <функция аты> (struct <тег> <айнымалы>)
// Тек қана С++ тілінде
<функция типі> <функция аты> (<тег> <айнымалы>)
Структура элементтерінің тұрақты тізімін беруге немесе инициализациялауға болады.
Struct adam sotr={“Романов”, “Айболова”,34,50}
Функцияға структура типті объектіні беру тәсілдері үш түрлі:
Компоненттерін жеке-жеке беру.
Структураны толығымен беру.
Структураға көрсеткішті беру.
Компоненттерін жеке беру мысалы:
Struct adr funrpr(char r[20], int k, int d)
{
Struct adr f;
f.ul=r;
f.dom=d;
f.kb=k;
return f;
}
Структуралар массиві
Структуралар массивін сипаттау структура типті айнымалыны сипаттауға ұқсас. Мысалы, struct <тег> <айнымалы-массив>.
Сипаттау ретін төмендегі мысалдан нақты аңғаруға тырысыңыз:
#define N 10
struct mas {
char group[8];
int count;
int otest;
} stud[N];
Немесе бірге тағайындау арқылы төмендегідей де сипатталады:
#define N 3
struct mas {
char group[8];
int count;
int otest;
} stud[N] = {“MKO4”,23,2,
“IKO3”,19,3,
“IKO2”, 23,2
}
Мұндай массивтер өлшемі компиляциялау барысында анықталады. Оның структура элементтерінің өлшемі мен массив элементтерінің санының көбейтіндісіне тең.
Структураларға көрсеткіш
Көрсеткіш келесі түрде сипатталуы мүмкін:
struct <тег> *<айнымалы>
Бұндай жағдайда структуралық айнымалының кез-келген элементін мына әдістердің бірімен алуға болады:
(*<айнымалы>).<элемент> немесе <айнымалы> –> <элемент>
Функцияға күрделі құрылымды структура берілетін болса, онда оның толығымен көшірмесін берудің орынына, оған көрсеткішті қолданған тиімді. Структураға көрсеткіштер қарапайым айнымалыларға көрсеткіштер секілді.
Сипаттау мысалдары:
Struct strtype *p;
Мұндағы р айнымалысы strtype типті структураға көрсеткіш деп аталады. Ал, *р – структураның өзі, оның элементтері (*p).dom, (*p).god түрінде қолданылады.
Көрсеткішті пайдалану жолдары:
Struct strtype sotrudn, *p;
P=&sotrudn;
Printf(“sotrudn info: %s \t %i \t %6.2f \n”, (*p).fam, (*p).god, (*p).zarp);
Мұнда (*р).fam бейнесінде жақша міндетті түрде болуы тиіс, себебі нүкте (.) операторының приоритеті * операторының приоритетінен жоғары. Структураларға көрсеткіштер жиі қолданылады. Сондықтан оның элементтерін қолдану барысында ыңғайлы болатын қысқаша жазу формасы қарастырылған. Оның түрі мынадай:
P - ><структура элементі>
Жоғарыдағы мысалдағы шығару жолы осы жазу формасын қолданып төмендегідей жазылады:
Printf(“sotrudn info: %s \t %i \t %6.2f \n”, p->fam, p->.god, p->zarp);
Нүкте және -> операторларының орындалу реті солдан оңға қарай және приоритеттері басқа операторлардан жоғары. Қолдану барысында осы қасиетін мұқият ескеру қажет.
Әртүрлі уақытта әрүрлі типті және әртүрлі өлшемді обьектілерді сақтай алатын айнымалы –біріктіру деп аталады. Өлшемдеріне және реттеуге қатысты талаптарды компилияция орындайды. Жадының бір аймағында әртүрлі мәндерді сақтауға мүмкіндіктері бар.
Біріктіру синтаксисі структура синтаксисі секілді:
Union unprim {
Int iman;
Float fman;
Char *sman;
} mainun;
Си тілінде мәндер типіне жаңа атау беруге болатын құрал - typedef құралы бар.
Дәріс №12.Өзін-өзі тексеру сұрақтары
Структуралар не үшін құрылады?
Структуралар элементтері қандай типті бола алады?
Структуралар элементтерін енгізу-шығаруда басқару элементтерінің қойылу реттері қандай?
typedef құралы не үшін қолданылады?
Дәріс №13. Файлдар
Файлдық типті айнымалыларды сипаттау. Файлды қолдану режимдері
Файлдық енгізу-шығару.
Файлдық типті айнымалыларды сипаттау. Файлды қолдану режимдері
Файлдан оқу және файлға енгізу үшін ең алдымен файл fopen функциясының көмегімен ашылуы тиіс. Бұл функция операциялық жүйе арқылы орындалатын әрекеттерді ұйымдастыру жұмысын орындайды және файлмен мәлімет алмасуға арналған көрсеткішті қайтарады.
Ал, файлға көрсеткіш файл туралы информациялардан тұратын құрылымға (жазбаға) сілтейді. Мұндағы информация мынадай сұрақтарының жауабынан тұрады:
буфер адресі,
буфердегі ағымды литердің күйі,
файлдан оқуға немесе жазуға ашық па?,
файлдың соңғы таңбасы кездесті ме?
Мұндай құрылым сипаттамасы кітапханасындағы FILE типіндеберіледі. Қолдану үшін мынадай декларация берілсе жеткілікті:
FILE * fp;
FILE * fopen (char * name, char * m);
Мұндағы: fp – FILE типіндегі көрсеткіш, ал fopen FILE – ге көрсеткішті қайтарады. Fopen функциясы мына түрде қолданылады:
fp = fopen (name, m);
Мұндағы: name – файлдың атын меншіктейтін жол; ал, m – файлды қолдану режимі; яғни бұл да жол, қолданушы файлды қалай қолданатынын білдіреді, төмендегідей мәндердің бірін иелене алады:
" r " – (read) оқу режимі;
" w "- ( write) жазу;
" a "- ( apprnd) толықтыру;
Кейбір жүйеде тексттік және бинарлық файлдар болып жіктеледі, бұл жағдайда режим жолына "в" (binary – бинарлық) немесе “t”(тексттік) таңбасы тіркеледі. Файлмен жұмыс жасау барысында қате кездессе, онда fopen функциясы NULL мәнін қайтарады.
Мысалы, FILE*fin, * fout;
fin=fopen (“PRIMER.dat”,”’r”);
fout=fopen (“RESULT.dat”, “w”);
1-ші жолда 2:fin,fout – файл көрсеткіші құрылады, ал төменгі жолдарда сәйкесінше оқуға және жазуға арналған файлдар ашылады.
Fopen() функциясы файлдың аталған көрсеткішін қабылдайды, программаның орындалу барысында олардың мәндері жасанды өзгертілмеуі тиіс. Мұндай файлдағы 2-ші параметр файлдарымен мәлімет алмасу режимін анықтайды. Файл мынадай режимдерде ашылуы мүмкін:
- текстік;
- екілік;
Текстік режимде ашу үшін режимді көрсеткенде қасына «t» символын тіркеу арқылы жүзеге асады;
Режимдер кестесі:
Режим
|
Сипаты
|
а
а+
r
r+
w
w+
|
Файл мәндерімен толықтырылуы үшін ашылады. Егер файл
жоқ болса, ол құрылады. Жаңа мән соңына тіркеледі;
Жоғарыдағы секілді, тек оқұға да болады;
Файлды тек оқу үшін ашады, файл жоқ болса, ашылмайды;
Файлды оқуға да, жазуға да болады;
Жаңа файл ашады, бұрын бар болса, мәнін өшіреді.
Жаңа файлды мән жазуға да, одан оқуға да мүмкіндік
береді. Файл болса, мәні тазартылады.
|
R+,w+,a+ режимдерін қолдануда, яғни оған оқуды және жазуды бір уақытта орындалу барысында файл көрсеткішінің Fsetpos(), fseek(), немесе rewind()файлдары көмегімен ағымды позицияларын модификациялау керек. Программа жұмысы аяқталғанда Си-де автоматты түрде барлық ашық файлдар жабылады, ал файлды жабу үшін fclose(fin) қолданылады.
С++ тілінде:
Файлмен мәлімет алмасу мақсатында ifstream және ofstream кластарын қолданған тиімді. Ол үшін < fstream. h > тақырыптық файлы ашылуы тиіс. Мұнда, сәйкесінше, ifstream класының объектісі myof және ostream класының mygf лектері құрылып көрсетілген файлмен байланысады.
Мысалы,
Ifstream myof(“prim.in”,ios::in);
Ofstream mygf(“prim.out”,ios::out);
Бір объектімен тізбектеп бірнеше лекті байланыстыру қажет болса, онда ол төмендегідей ретпен орындалады:
Ifstream myof;
. . .
myof(“prim.in”);
. . .
myof.close();
myof.open (“prim2.in”);
. . .
myof.close();
Файлмен мәлімет алмасу мүмкіндігінің режимін өзгерту – файлдық объектінің сипатындағы екінші аргументін өзгерту арқылы жүзеге асады.
Мысалы, Ofsetream myof ( “prim.in”,ios::app | ios::nocreate); - мұндағы файл бар болса ғана myof объектісі құрылып, байланыс орнатылады, себебі ios::nocreate аргументі берілген, яғни файл болмаса, объект құрылмайтынын білдіреді. Ал, ios::app аргументі файлға шығарылатын мәндер файлдың соңына қосылатынын анықтайды.
Флаг-аргументтер биттік | - «немесе» амалының көмегімен біріктіріліп анықтала алады.
Файлдық лекті анықтау барысында қолданылатын аргументтерді анықтайтын флагтар төмендегідей:
флаг
|
Мағынасы
|
ios::in
|
Файл оқуға ашылады
|
ios::out
|
Файл жазуға ашылады
|
ios::ate
|
Объект құрылған соң, ағымды көрсеткіш файлдың
соңына орнатылады
|
ios::app
|
Мәндер файлдың соңына жазылады
|
ios::trunc
|
Егер файл бар болса, ол тазартылады
|
ios::nocreate
|
Файл болмаса, онда объект құрылмайды
|
ios::noreplace
|
Файл бар болса, онда объект құрылмайды
|
ios::binary
|
Файл екілік режимде ашылады (қалыпты жағдайда
тексттік режим)
|
feоf (FILE * fp) – функциясы файлдың соңын анықтайды.
Файлды жабу үшін:
Int fclose(FILE *fp) функциясы қолданылады, яғни файлдық көрсеткішпен орнатылған байланысты үзеді.
Файлмен мәлімет алмасу үшін fstream класының объектісі де қолданылады: Fstream io(“update.dat”, ios::in|ios::app); - бұл жағдайда көрсетілген файл мәліметті оқуға және жазуға ашылады.
Seekg() файлдан оқу ал, seekp() файлға жазу барысында функциялары файлдың ағымды позициясының маркерін басқаруға қолданылады.
Мысалы, io.seekg(5, ios::cur) – оқу барысында маркерді ағымды орынынан 5 байтқа жылжыту;
io.seekg(-7, ios::end)- маркерді соңынан бастап 7 байтқа жылжыту керектігін білдіреді.
Аргументтер:
Io::cur – ағымды орынынан; Io::beg – файл басынан;
Io::end - файл соңынан жылжытылатынын білдіреді.
Файлдың лектік күйін анықтау функциялары:
Функция
|
Түсініктеме
|
eof()
|
Файл соңын кездестірсе, 0-дік емес мән қайтарады
|
fail()
|
Лекте қате кездессе 0- ден өзге мән қайтарады
|
bad()
|
Енгізу-шығару барысында мағыналы қате кетсе, нөлден өзге
мән қайтарады, онда лекпен жұмыс тоқтатылғаны дұрыс. Лек
күйінің биттік мәндері анықталмаса, 0-ге тең емес мән береді.
|
rdstate()
|
Мына тұрақтылардың бірін, яғнм лектің ағымды күйін
анықтайтын мәнді қайтарады:
Ios::goodbit - қате жоқ
Ios::eofbit – файл соңына жетті
Ios::failbit – форматтау немесе түрлендіру қатесі
Ios::badbit - маңызды қате
|
clear()
|
0-ге тең болса тазарту
|
Файлдық енгізу-шығару.
Файлдан оқығанда Pascal-дағы секілді,
fprinf(fin,’формат’, <айнымалы>);
fscanf(fin,'формат', <айнымалы>);
fseek() функциясы:
Жалпы форматы:
Int fseek (FILE *str, long offset, int orig)
М, fseek (f, K, r)
Fseek функциясы f Көрсеткіші арқылы берілген файлдағы ағымды көрсеткішті К байтқа жылжытады. Жылжыту:
- файлдың басынан (r=0)
- ағымды көрсеткіш тұрған (r=1)
- файлдың аяғынан (r=1) басталуы мүмкін.
Си- де r-дің мәні ретінде көрсету үшін қолданылатын 3 const қарастырылған:
SEEK_SET (файл басынан жылжу)
SEEK_CUR(ағымдағы позициядан бастау)
SEEK_END(файл соңынан)
Fseek() функциясы қызметі сәтті аяқталса 0-ді, әйтпесе EOF мәнін қайтарады.
Ftell()-функциясы файл басынан бастап ығысқан шамамен анықталады, яғни long типті мән қайтарады, ағымды көрсеткіштің рынын анықтайды.
long ftell(FILE*str)
Ftell(f)
Rewind функциясы ағымды көрсеткішті файлдың басынан орындайды.
rewind(FILE*str);
rewind(f) мынаған сәйкес мәнді қайтарады;
fseek(f, ol, seek_set);
Мысалы:
# include
void main()
FILE *pf; “tect.dat”-да=”ABCD”
Char c;
Long l; {С тілінде 64 кб-өлшенді файлдармен жұмыс жасауға
болады, сондықтан L-long типті. }
pf=fopen (“test.dat”, “r+t”);
c=f getc (pf); {“A”-ны алады}
putchar (c);{“A”-ны экранға шығару}
с=f getc(pf);{“B”-ны оқу}
putchar (c);{“B”-ны экранға шығару}
l=ftell(pf);{ағымы көрсеткіш мәнін меншіктейді,в-оқылғандықтан,L=2}
C= f getc(pf); {c-ны оқып экранға шығару}
putchar(c);
fseek (pf,l,o);{ағымды көрсеткіш”Д”-да тұрған жерінен “С”-ны көрсетуге көшеді,себебі функция басынан 2 бт жылжиды }
с=f getc(pf);
putchar(c); {экранға ''C''-ны экранға шығарады }
fseek (pf,l,o);{ағымды көрсеткіш қайтадан “С''-ға сілтейді,енді оның орнына “Е” файлға жазылады}
fputc (‘E’,pf);
fseek (pf,l,o); {ағымды көрсеткіш файл басына l=2 байтқа байланысты жылжиды,
яғни “E”-ні көрсетеді}
с=f getc(pf); {экранға “Е''-ні шығарады}
putchar (c);
rewind (pf); {ағымды көрсеткіш файл басына көшіріледі.}
c=f getc (pf);
putchar (C);{С-ға файлдан «А» оқылады, экранға шығарады}
нәтижесінде:ABCCEA
get c () –берілген потоктан бір символды оқиды.
&&&
$$$002-013-100$Дәріс №13.Өзін-өзі тексеру сұрақтары
1.Файл дегеніміз не?
2.Файлдық лекті сәйкестендіруді қалай түсінесіз?
3.Файл бойымен жылжу, ағымдық көрсеткішті басқару функциялары қандай?
Дәріс №014. Графика
Графикалық режимде жұмыс жасау туралы.
Графикалық жүйені инициализациялау.
Қателерді өңдеу. Режимдердің ауысуы.
Графикалық режимде жұмыс жасау туралы
Дербес компьютер экраны текстік және графиктік режимдердің бірінде жұмыс істейді. Графикалық режимде жұмыстың қалай жүргізілетінін қарастырайық.
Қазіргі ДК-де, негізінен, растрлық дисплейлер қолданылады. Олардағы бейненің ең кіші элементі болып нүкте – pixel (ағылш., picture element) табылады. Дисплейдің мүмкіндігі – бұл көлденең және тік орналасқан пикселдер саны (стандартты разрешение – 640*480 нүкте). Дисплейде бейнеленетін сурет орталық процессор жадысының бейнежады (видеопамять) деп аталатын арнайы облысында кодталып сақталады. Мәліметтер периодты түрде осы облыстан оқылып, бейнесигналдарға түрлендіріледі де экранда бейнеленеді. Сурет кодтарын бейнесигналдарға түрлендіруді арнайы электрондық схема-бейнеадаптер (видеоадаптер) жүзеге асырады. Ең кең тараған адаптерлер VGA және SVGA. C++ тілінде бейнежадының дербес бөліктеріне енуге, түстерді басқаруға, әр түрлі формада графикалық бейнелер тұрғызуға, текстік хабарламалар шығаруға, курсорды басқаруға мүмкіндік беретін көптеген функциялардын тұратын графикалық кітапхана бар. Бұл функциялардың нақты бейнеадаптерлермен жұмысқа баптау қажетті графикалық драйверді қосу арқылы қол жеткізіледі. Драйвер – бұл ДК-дің құрылғыларын басқаруға арналған арнайы программа. Адаптерлердің барлық түрлері үшін графикалық драйверлер Borland International фирмасымен құрастырылған. Олар BGI (Borland Graphics Interface) кеңеймесімен жеке файлдарда орналасқан. Графикалық драйверді қосу үшін арнайы initgraph() функциясы қолданылады.
Көптеген графикалық функциялар ағымдағы позиция көрсеткіші деген ұғымды қолданады. Ол таңдалған пикселді білдіреді және екі бүтін сан арқылы сипатталады: экранның горизонталь және вертикаль координаттары. Нумерация солдан оңға және жоғарыдан төмен қарай жүргізіледі (нольден бастап).
Мысалы, EGA үшін 640*480 режимінде экран бұрышы мен оның центрінің координаттары мынадай болады
Графикалық жүйені инициализациялау.
1. Драйверді және графикалық режимді таңдау detectgraph (&gd, &gm) функция арқылы орындалады.
2. Драйверді жүктеу, графикалық жүйені инициализациялауды initgraph (&gd, &gm, "BGI-файлдың жолы") функциясы атқарады, мұндағы gd және gm айнымалылары қажет драйвер мен
графикалық режимнің номерлері. Егер ВGI-файлдар ағымдағы директорияда орналасса, онда initgraph()функциясының үшінші параметрі ретінде бос жолды беруге болады initgraph (&gd, &gm, " ");
Графикамен жұмыс жаса барысында мына әрекеттер тізбегі арқылы графиктік режимді орнату жолдары жазылады:
#include
#include
#include
void main ( )
{ int gd, gm, error;
detectgraph (&gd, &gm);
initgraph (&gd, &gm,” ”);
error=graphresult ( );
if (error !=grOk )
{ puts ("ошибка графики");
puts (grapherrormsg (error));
exit (1);
}
……………………………. // Программа денесі
closegraph ( );
exit (0) ;
}
Қателерді өңдеу. Режимдердің ауысуы.
1.Графикамен жұмыс жасағанда қате жағдайларды өңдеу үшін graphresult ( ); функциясы қолданылады. Ол соңғы қолданылып отырған графикалық функцияның аяқталу кодын қайтарады. Қате болмаса, «0» қайтарылады. Әр түрлі қателер типі үшін өздерінің аяқталу коды қарастырылған:
Тұрақтылар
|
Қате коды
|
Хабарлама
|
GrOK
|
0
|
Қате жоқ
|
GrNoInitGraph
|
-1
|
Графика инициализацияланбаған
|
GrNoLoadMcm
|
-5
|
Драйверді жүктеуге жадының
жеткіліксіздігі
|
GrFontNotFound
|
-8
|
Шрифт файлы табылмаған
|
Қате кодының сәйкес мәнін экранға шығару мүмкіндігі бар. Бұл үшін grapherrormsg (қате коды) функциясы қолданылады. Ол аргумент ретінде берілген аяқталу кодының сипаттамасынан тұратын жолға көрсеткіш қайтарады.
2. Режимдерді ауыстыру. Дисплейлік адаптердің текстік режиміне уақытша ауысу үшін мына функция қолданылады:
restorecrtmode ();
Қайтадан графикалық режимге ауысу setgraphmode (gm) функциясымен жүзеге асырылады.
Ағымдағы драйвер үшін графикалық режимнің максимал мәнінің номерін getmaxmode ()
функциясы арқылы анықтауға болады.
Графикалық жүйемен жұмыс жасап болған соң, графикаға бөлінген жадыны босату, бейнеадаптер буферін тазарту, алдыңғы текстік режимді қалпына келтіру керек. Барлық әрекеттерді closegraph () функциясы жүзеге ауыстырады.
3. Түстерді, шрифттерді сызықтардың стилін және бояу стилін тағайындау. Түстерді көрсету үшін констандаларды пайдалануға болады. Стандартты түстер палитрасы:
BLACK
|
0
|
Қара
|
DARKGRAY
|
8
|
Қара сұр
|
BLUE
|
1
|
Көк
|
LIGHTBLUE
|
9
|
Ашық көк
|
GREEN
|
2
|
Жасыл
|
LIGHTGREEN
|
10
|
Ашық жасыл
|
GRAY
|
3
|
Сұр
|
LIGHTCYAN
|
11
|
Ашық бирюза
|
RED
|
4
|
Қызыл
|
LIGHTRED
|
12
|
Ашық қызыл
|
MAGENTA
|
5
|
Қызғылт (таңқурай)
|
LIGHTMAGENT
A
|
13
|
Ашық қызғылт (ашық таңқурай)
|
BROWN
|
6
|
Қоңыр
|
YELLOW
|
14
|
сары
|
LIGHTGRA
Y
|
7
|
Ашық сұр
|
WHITE
|
15
|
ақ
|
Графиктік мәліметтер нақты бір бейнелер арқылы берілетіні мәлім. Тілде бейнелерді тұрғызуға арналған арнайы функциялар қолданылады.
Дәріс №015.Өзін-өзі тексеру сұрақтары
1. Растрлық графика дегеніміз не?
2. Растрлық және векторлық графика айырмашылығы неде?
Дәріс №15. ОБЪЕКТІЛІ-БАҒЫТТАЛҒАН ПРОГРАММАЛАУ (ОБП)
Объектілі-бағытталған программалау негізі.
Кластар иерархиясы.
Объект қасиеттері: инкапсуляция, тұқым қуалау, полиформизм.
Конструкторлар мен деструкторлар.
Объектілі-бағытталған программалау негізі.
{Дәріс конспекті)
ОБП элементтері 70-ші жылдарда Симула тілінде модельдеуде қолданылды. Қазірде кең құлаш жайған программалау технологиясына айналып отыр. ОБП негізгі мақсаты – программа құруда деңгейін көтеру. С++ тіліндегіі ОБП негізін қалаушы – Бьярне Страуструн, 80-жылдары Bell Labs компаниясында өңдеген.
С++ тілі объектілермен жұмыс жасауға бағытталған, ал С тілі – структуралық программалауға бағытталған. С++тілінде объект класы тұрақтылар мен айнымалылардан және оларға қолданылатын амалдардан тұрады. ОБП -ды қолданудың негізгі үш ерекшелігі бар:
1. Программа коды ықшамдалады және құрылымы жақсарады.
2. Программаға программалық бағыттарды қосу және алып тастау жеңіл орындалады (программаны модернизациялау жеңіл, яғни онда бар кластың ұрпақ класын құру арқылы жүзеге асырылады).
3. Тиімді құрылған класты кітапханалық файлдар сақтап, оны қажетінше қолдану мүмкіндігі бар. ОБП-да объектілердің байланысы мен өзара әрекеттестігінің схемасын сипаттау арқылы есеп пен оның шешімі қарастырылады.
Кластар иерархиясы.
С++-тегі класс структураның кеңейтілген түрі және объект құруға арналған. С++-тегі класс шаблон секілді, оның негізінде объектілер құрылады. Кез-келген кластың бірнеше ішкі кластары болуы мүмкін. Кластар иерархиясы құрылады, баба класы жалпы сипаттаға әдістерден тұрады. Кластың құрамын арнайы кілттік сөздердің көмегімен реттеуге болады. Олар: public - «ашық», «көрінетін» бөлігі private - «тасаланған» бөлігі («жабық») protected - «қорғалған» бөлігі. «Көрінетін» бөлігіндегі сипатталған әдістер класты қолданатын кез-келген программадан шақырылады, яғни кластың интерфейсін құрайды. «Тасаланған» бөлігіндегі элементтер тек өзінің әдістерінде қолданылады, ал«қорғалған» бөлігіндегі элементтер өз әдістері мен ұрпақ кластарда қолданылады
Объект қасиеттері: инкапсуляция, тұқым қуалау, полиформизм.
Объект – класс экземпляры. Объектінің қасиеттері бар. Оның күйі, оның белгілерінің мәндері арқылы беріледі. Объектінің негізгі қасиеті – инкапсуляция.
Инкапсуляция дегеніміз – бір структурада мәліметтермен қатар оларды өңдеуге арналған функциялардың берілуі (әдістердің).
● Тұқым қуалау қасиеті деп баба класынан ұрпақтарына мәліметтер мен әдістердің берілуін атайды.
Егер кластың атрибуттары бір баба кластан берілсе, онда жалғыздық (одиночный) тұқым қуалау деп атайды.
Полиморфизм
Полиморфизм класс иерархиясымен байланысты, иерархиядағы бірнеше класқа бірдей хабарлама беру мүмкіндігінің болуы, яғни қандай кластың қайсысы келген хабарды өңдеу құқығын алатынын анықтау – полиморфизм деп аталады. Бір иерархиядағы әртүрлі класта болатын және бір атпен аталған және virtual қызметші сөзімен сипатталған әдіс виртуальді әдіс деп табылады.
С++ тіліндегі программаның орындалуы барысында объектінің типі алдын-ала анықталмаса да оны сұрауға болады, және бұл функция адресін динамикалық түрде анықтауға болады, яғни кеш байланыстыру ішкі жүйесі арқылы орындалады. Виртуальді әдісті (функцияларды) шақырғанда виртуальді кесте – функциялар адрестерінің кестесі қолданылады. Бұл кесте объект класс конструкторлары арқылы құрылуы барысында анықталады.
Конструктор ролі виртуальді әдісті дұрыс адрестер кестесімен байланыстыру.
Программаны компиляциялау барысында виртуальді функциялар адресі белгісіз, ал виртуальді кесте ұяшықтары белгілі болады да программа орындалу барысында сол ұяшықтарға адрестер жазылады.
Кластың сипатталуы:
class < Аты > {
< тип 1 > < айн 1 >
< тип 2> < айн 2 >
public:
әдіс 1
әдіс 2
әдіс n;
};
<сипаттаушы> <кл. аты> [:базалық тізім] {элементтер тізімі}
Мұндағы - <сипаттаушы> – class, struct, union қызметші сөздернің бірі. Класс аты – идентификатор;
< базалық тізім > -қасиеттері тұқым қуалауға тиісті базалық класс немесе кластар тізімі болады;
{элементтер тізімі} – осы кластың өзіне тән элементтер тізімі беріледі. С++ тілінде класты құрғанда элементтерді бермей-ақ сипаттауға болады,
u class Sorun.
Бұларды класс аттарына сілтеме жасау үшін қолданады, ал объектімен нақтыжұмыс жасауда толық анықталуы тиіс. Автоматты түрде кластың барлық элементтері «жабық» деп есептеледі және олар тек осы класс функцияларында қолданылады. Ал, оларды «ашық» түрдесипаттау үшін public, protected, private қызметші сөздерінің бірін қолдану керек.
Қарапайым класс мысалы:
# include <
# include
class obj_type
{
double data;
public:
void set_v(double ang);
double get_sin(void);
}
obj;
void obj_type :: set_v(double ang) {
data = ang;
}
double obj_type :: get_sin(vold) {
return (sin(0.01*data);
«Комплекс сандар» класын құрайық: Комплекс сандар мен матрицаларын анықтайық:
#include
#include
{exit( ); }
class Complex
{ float Re;
float Im;
public:
void sum (complex, complex);
void Minus (complex, complex);
void Mult (complex, complex);
void Div (complex, complex);
void Get ( );
void Put ( );
};
void complex :: Minus(complex X, complex Y)
{
Re = x.Re – y.Re;
Im = x.Im – Y.Im;
}
Void Complex :: Mult (complex X, complex Y)
{
Re = x.Re*Y.Re – x.Im*Y.Im;
Im = x.Re – Y.Im+x.Im*Y.Re;
}
void Complex :: Div (complex X, complex Y)
{
if (Y.Re\\y.Im)) {
Cout << “0-ге бөлінгендік”;
exit(12); }
Re = x.Re*Y.Re – x.Im*Y.Im;
Im = x.Re* Y.Im + x.Im* Y.Re;
}
void Complex :: Get ( ) {
cont << «Комплекс санның нақты бөлігін енгіз:»;
cin >>Re
cout << «Комплекс санның жорамал бөлігін енгіз»;
cin>>Im
}
void main ( ) {
complex a, b, c;
a. Get ( );
b. Get ( );
c. Sum (a, b);
c. Put ( );
}
Конструкторлар мен деструкторлар.
Конструкторлар класс айнымалыларын инициализациялауға және жадыдан орын бөлуге арналған айрықша функция болып табылады. Конструктор аты өзі тиісті класс атымен бірдей болады. Класс объектісін құру барысында қажетті конструктор автоматты түрде шақырылады. Егер класс сипатында конструктор сипатталмаған болса, онда компилятор стандартты класс құрады.
Деструктор – бұл да айрықша функция, жойылатын объект алып тұрған динамикалық жадыны босату қызметін атқарады. Деструктордың да аты класс атымен бірдей, тек алдында ~ (тильда) жазылады. Деструктор – класс объектісіне сілтейтін көрсеткіш арқылы анықталған delete операторы кездескенде шақырылады. Деструктордың конструктордан айырмашылығы ешқандай аргументтен тәуелді емес. Егер деструктор айқын түрде анықталмаса, компилятор класс үшін стандартты деструктор бөледі. Класс деструкторы мен конструкторы С++ тілінде динамикалық жадыны үлестіру және босату үшін сәйкесінше Nen, delete қолданылады.
# include
# include
class string
char * Q string;
int strieng;
public
string (char*);(конструктор)
~ string ( ); }(деструктор)
string ::string (char*init str) {
Q string = new (Q string, init str);
if (!Q string) cont << «Жады жетіспейді»;
strieng:=streen (Q string);
}
string :: ~ string ( );
{
cout << «Жол»
delete Q string;
Q string = (Char *) 0;
cout << “Босатылды \n”; }
void main ( ) {
string First («Алғашқы жол»); First - конструкторды шақыру}
{
string second («Екінші жол»); Second - үшін конструктор шақыру }
Дәріс №15.Өзін-өзі тексеру сұрақтары
ОБП дегеніміз не?
Класс экземпляры дегеніміз не?
Әдістерді қайта анықтаудың қандай тәсілдері бар?
3. ТӘЖІРИБЕЛІК ЖӘНЕ ЗЕРТХАНАЛЫҚ САБАҚТАР
Тәжірибелік сабақтар
1 апта
Тәжірибелік сабақ№1
Тақырып 1. Дербес компьютердің программалық құралдары
Тақырып 2. Программалау әдістемесі
Сабақтың мақсаты:
Мына ұғымдармен танысу:
Программалық қамсыздандыру (ПҚ) ;
ПҚ түрлері;
Программалау тілдері;
Программалау тілдерінің классификациясы;
трансляция, трансляторлар: компиляторлар, интерпретаторлар;
Программалау тілдерінің ұрпақтары;
Алгоритмдік программалау;
Нысанды - бағытталған программалау
Программалау жүйесі;
Программа құру кезеңдері.
Ұғымдарды қайталау:
алгоритм;
алгоритмдердің қасиеті;
алгоритмдерді жазу тәсілдері;
алгоритм типтері.
Тәжірибелік сабаққа дайындалу сұрақтары
Программа деген не?
ДК по деген не?
Қандай по түрлері бар?
Программалау тілі деген не?
«Төменгі деңгейдегі тіл» және «жоғары деңгейдегі тіл» терминдарін түсіндір?
Трансляция, трансляторлар деген не?
Компиляторлар мен интерпретаторлардың арасында қандай айырмашылық бар?
Программалау тілдерінің қандай кезеңдері бар?
Программалау жүйесі деген не?
Программа құрудың қандай кезеңдері бар?
Алгоритмдік программалау деген не?
Құрылымды программалау деген не?
Әдебиеттер:
Информатика. Базовый курс. 2-е издание / Под ред. С.В. Симоновича. – СПб.: Питер, 2005 стр. 568-616
2 апта
Тәжірибелік сабақ№2
Тақырып 3. Программалау технологиясының негізі
Сабақтың мақсаты:
Мына ұғымдармен танысу:
Программалық қамтамасыздауды жобалау әдістемесі;
нисходящее и восходящее жобалау;
Құрылымдық программалау;
Модульді программалау;
Программалау стилі;
Программаны түзету және сынақтан өткізу кезеңдері;
Программалау сапасының көрсеткіштері
Тәжірибелік сабаққа дайындалу сұрақтары
Құрылымды программалау деген не?
Объяснить понятия "нисходящее проектирование" и "восходящее проектирование".
Программалаудың экономикалық аспектісі қандай?
по құрудың периодына қандай кезеңдер кіреді?
Программаның сапасын бақылау кезеңінде не болады?
Әдебиеттер:
Информатика. Базовый курс. 2-е издание / Под ред. С.В. Симоновича. – СПб.: Питер, 2005 стр. 568-616
3 апта
Тәжірибелік сабақ №3
Тақырып 4. Си тілінің жалпы характеристикасы. Си программалау жүйесіне кіріспе
Сабақтың мақсаты:
Си тілінің алфавитімен танысу.
Мына ұғымдармен танысу:
идентификатор;
айнымалылар, константалар;
деректер типтері;
препроцессор директивасы.
Си тілінде стандартты типтегі деректермен танысу.
Деректер типін анықтауды үйрену.
СИ тіліндегі программаның құрылымымен танысу.
Си программалау жүйесінде жұмыс істеу.
Тәжірибелік сабаққа дайындалу сұрақтары
Си алфавитіне қандай символдар кіреді?
Идентификатор деген не? Идентификаторларды рәсімдеудің ережелері?
Константалар деген не?
Айнымалылар деген не?
Какие существуют стандартные типы данных в языке Си?
Препроцессор директивасы деген не? Қандай препроцессор директивалары бар?
Си тіліндегі программаның құрылымы қандай?
Си программалау жүйесінің файлдар құрамы қандай?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
4 апта
Тәжірибелік сабақ №4
Тақырып 5. Меншіктеу операторы. Енгізу-шығаруды ұйымдастыру
Сабақтың мақсаты:
Мына ұғымдармен танысу:
өрнек;
операциялар;
меншіктеу операторлары;
стандартты функциялар.
Си тілінде математикалық өрнекті жазып үйрену.
Логикалық өрнектің мәнін анықтап үйрену.
Мына ұғымдармен танысу:
оператор;
оператордың жазылу форматы.
Меншіктеу операторы, Енгізу – шығару функциялары.
Сызықтық құрылымды алгоритмдерге программа құру.
Тәжірибелік сабаққа дайындалу сұрақтары
Өрнек деген не?
Деректермен қандай операциялар жүргізуге болады?
Меншіктеу операторларының түрлері?
Меншіктеу операторының негізгі қызметі және жазылу форматы?
Типтердің келтірілудің қандай ережелері бар?
Деректерді енгізу – шығару деген не?
Қандай енгізу функциялары бар?
Қандай шығару функциялары бар?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
5 апта
Тәжірибелік сабақ№5
Тақырып 6. Шартсыз және шартты көшу операторлары
Сабақтың мақсаты:
Мына ұғымдармен танысу:
операторлардың міндетімен, жазылу форматымен, пайдалану ережелерімен танысу:
goto
if…then…else…
оператор выбора
Тармақталған алгоритмді программа құру.
Тәжірибелік сабаққа дайындалу сұрақтары
Тармақталған алгоритм деген не?
Метка деген не?
goto шартсыз көшу операторының жазылу форматы және қызметі?
if… шартты операторының жазылу форматы және қызметі?
Қысқа форматта жазылған шартты көшу операторы қалай жұмыс істейді?
Толық форматта жазылған шартты көшу операторы қалай жұмыс істейді?
Жай оператор деген не?
Құрамды оператор деген не? Құрамды оператор не үшін қолданылады?
Таңдау операторының жазылу форматы және қызметі?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
6 апта
Тәжірибелік сабақ№6
Тақырып 7. Цикл операторлары
Сабақтың мақсаты:
операторлардың міндетімен, жазылу форматымен, пайдалану ережелерімен танысу:
Циклдық алгоритмді программа құрып үйрену.
Тәжірибелік сабаққа дайындалу сұрақтары
Циклдық алгоритм деген не?
Шарты алдын ала берілген цикл операторының жазылу форматы және оның қызметі? Шарты алдын ала берілген цикл операторының жұмысының блок - схема түрінде қалай көрсетуге болады?
Шарты соңынан берілген цикл операторының жазылу форматы және оның қызметі? Шарты соңынан берілген цикл операторының жұмысының блок - схема түрінде қалай көрсетуге болады?
Параметрлі цикл операторының жазылу форматы және оның қызметі? Параметрлі цикл операторының жұмысының блок - схема түрінде қалай көрсетуге болады?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
7 апта
Тәжірибелік сабақ№7
Тақырып 8. Функциялар
Сабақтың мақсаты:
Ішкіпрограмма ұғымымен танысу.
Функцияны қалай сипаттау ережелерімен танысу.
Мына ұғымдармен танысу:
Формальды және фактілі параметрлер;
Глобальды және локальды айнымалылар.
Негізгі программада функцияны шақыру тәсілдерімен танысу.
Ішкіпрограмманы пайдаланып программа құрып үйрену.
Тәжірибелік сабаққа дайындалу сұрақтары
Ішкіпрограмма деген не?
Функция деген не?
Функцияны қалай сипаттауға болады?
Негізгі программада функцияны қалай шақырады?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
8 апта
Тәжірибелік сабақ №8
Тақырып 9. Жады кластары
Сабақтың мақсаты:
Мына ұғымдармен танысу:
Жады кластары;
Автоматты айнымалылар;
статистік айнымалылар;
сыртқы айнымалылар;
регистрлі айнымалылар;
нұсқауыштар және адрестік арифметика.
Әртүрлі жады кластарының объектілерімен программа құруды үйрену.
Тәжірибелік сабаққа дайындалу сұрақтары
Жадының қандай кластары бар?
Автоматты жады деген не?
Динамикалық жады деген не?
Статистикалық ішкі жады деген не?
Қандай жады кластарының классификаторлары қолданылады?
Автоматты айнымалылар деген не?
Статикалық айнымалылар деген не?
Сыртқы айнымалылар деген не?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
9 апта
Тәжірибелік сабақ№9
Тақырып 10. Деректердің күрделі типтері: массивтер
Сабақтың мақсаты:
Мына ұғымдармен танысу:
массив;
Массивтің өлшемділігі;
Массивті сипаттау тәсілдері.
Бірөлшемді массивтерді пайдаланып программа құру.
Тәжірибелік сабаққа дайындалу сұрақтары
Массив деген не?
Массивтің өлшемділігі деген не?
Программада бірөлшемді және екіөлшемді массивті қалай сипаттауға болады?
Массив элементіне қалай қатысуға болады?
Массивті қалай толтырады
Массивті қалай экранға шығарады?
Бірөлшемді массивтер және көрсеткіштер.
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
10 апта
Тәжірибелік сабақ№10
Тақырып 10. Деректердің күрделі типтері: массивы
Сабақтың мақсаты:
Деректердің типімен танысу: шектелген, диапазондық.
шектелген және диапазондық типті айнымалыларды сипаттаумен танысу.
Мына ұғымдармен танысу:
массив;
Массивтің өлшемділігі;
Массивті сипаттау тәсілдері.
Бірөлшемді массивтерді пайдаланып программа құру.
Тәжірибелік сабаққа дайындалу сұрақтары
Екіөлшемді массивті қалай сипаттайды?
Екіөлшемді массивтер элементіне қалай қатынасады?
Екіөлшемді массивтерді қалай толтырады?
Екіөлшемді массивтерді экранға шығару?
Екіөлшемді массивтер үшін көрсеткіштерді пайдалану.
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
11 апта
Тәжірибелік сабақ№11
Тақырып 11. Жолдар
Сабақтың мақсаты:
Жолдық деректермен танысу.
Жолдық деректерді сипаттау тәсілдерімен танысу.
Жолдармен жұмыс істейтін стандартты функциялармен танысу.
Жолдық деректерді пайдаланып программа құру.
Тәжірибелік сабаққа дайындалу сұрақтары
Жол деген не?
Программада жолды қалай сипаттайды?
Жолдық деректермен қандай амалдар жасалады?
Жолдың жеке символына қалай қатысуға болады?
Жолдармен жұмыс істейтін қандай функциялар бар?
Екі жолды қалай салыстырады?
Жолдық айнымалыға мәнді қалай меншіктейді?
Жолдың ұзындығын қалай анықтайды?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
12 апта
Тәжірибелік сабақ№12
Тақырып 12. Деректер құрылымы
Сабақтың мақсаты:
Деректердің құрылымдалған типімен танысу және осы типтің программада сипатталуымен танысу.
Құрылымдарды пайдаланып программа құру.
Тәжірибелік сабаққа дайындалу сұрақтары
Деректердің құрылымдалған типі қайда қолданылады?
Құрылымды қалай анықтайды
Құрылымдық айнымалы және құрылымды жазу типінің арасындағы айырмашылық неде?
Құрылымның элементіне қалай қатысуға болады?
құрылым бір тптегі элементтерді қамти ала ма?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
13 апта
Тәжірибелік сабақ№13
Тақырып 13. Файлы
Сабақтың мақсаты:
Файл ұғымымен танысу.
Файлдармен жұмыс істейтін функциялармен танысу.
Сыртқы файлдарды пайдаланып программа құруды үйрену.
Тәжірибелік сабаққа дайындалу сұрақтары
Файл деген не?
Өңдеу үшін деректер файлын пайдаланудың қандай артықшылықтары бар?
Программаларда файлға көрсеткіштер не ішін пайдаланылады?
Файлдың ашылу, жабылуын қалай орындайды?
Файлдармен жұмыс істеуге арналған қандай енгізу – шығару функциялары бар?
Файлдарды жаңа деректермен қалай толтырады?
Файлдардың тестілік және екілік форматы.
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
14 апта
Тәжірибелік сабақ№14
Тақырып 14. Модульдер
Сабақтың мақсаты:
Модуль және стандартты модуль ұғымдарымен танысу.
Тәжірибелік сабаққа дайындалу сұрақтары
Модуль деген не?
Қандай стандарттық модульдер бер және олар не үшін арналған?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
15 апта
Тәжірибелік сабақ№15
Тақырып 15. Графика
Сабақтың мақсаты:
Графикалық объектілерді тұрғызуға арналған функциялармен танысу.
Графикалық бейнелерді тұрғызу және қозғалуына программа құруды үйрену.
Тәжірибелік сабаққа дайындалу сұрақтары
Экранмен жұмыс істеудің қандай графикалық мүмкіндіктері бар?
Графикалық объектілерді сызу үшін қандай функциялар қолданылады?
Әдебиеттер:
Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995 стр. 37-71
Н. Джекан «Програмирование на языке Си».
Франка П. Си: Учебный курс.
Фомин Т. «Програмирование на языке Си»
Культин Р. «Програмирование на языке Си»
Зертханалық сабақтар
1 апта
Зертханалық сабақ №1
Тақырып 1. Дербес компьютердің программалық құралдары
Тақырып 2. Программалау әдістемесі
Сабақ мақсаты
Мына ұғымдармен танысу
программалық қамсыздау;
по түрлері;
программалау тілі;
программалау тілдерінің классификациясы;
трансляция, трансляторлар: компиляторлар, интерпретаторлар;
программалау тілдерінің кезеңдері;
алгоритмдік программалау;
объектілі - бағытталған программалау
программалау жүйесі;
программа құру кезеңдері.
Ұғымдарды қайталау:
алгоритм;
алгоритмдер қасиеттеріов;
алгоритмдерді жазу тәсілдері;
алгоритмдер типтері.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
2 апта
Зертханалық сабақ №2
Тақырып 3. Программалау технологиясының негізі
Сабақ мақсаты
Мына ұғымдармен танысу
ПҚ жобалау әдістері;
нисходящее и восходящее жобалау;
құрылымды программалау;
модульді программалау;
программалау стилі;
программаны түзету және сынау;
программаның сапасын тексеру
Сабақ барысы:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
3 апта
Зертханалық сабақ №3
Тақырып 4. Си тілінің жалпы характеристикасы. Си программалау жүйесіне кіріспе
Сабақ мақсаты
Си тілінің алфавитімен танысу.
Мына ұғымдармен танысу
идентификатор;
айнымалылар және константалар;
деректер типі;
препроцессор директивасы.
Си деректердің стандартты типтерімен танысу.
Деректер типін анықтауды үйрену.
Си тілінде программаның құрылымымен танысу.
Си программалау жүйесі ортасында жұмыс істеуді үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
4 апта
Зертханалық сабақ №4
Тақырып 5. Меншіктеу операторы. Енгізу-шығаруды ұйымдастыру
Сабақ мақсаты
Мына ұғымдармен танысу
өрнек;
операциялар;
меншіктеу операторлары;
стандартты функциялар.
Си тілінде өрнектерді жазып үйрену.
Логикалық өрнектің мәнін анықтауды үйрену.
Мына ұғымдармен танысу
оператор;
операторды жазу форматы.
Меншіктеу операторын, енгізу функциясын, шығару функциясын пайдалануды үйрену.
Сызықты құрылымды программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
5 апта
Зертханалық сабақ №5
Тақырып 6. Шартсыз және шартты көшу операторлары
Сабақ мақсаты
Мына ұғымдармен танысу
Құрылымды оператор;
метка.
Мына операторлардың, міндетін, жазылу форматымен және қолдану ережелерімен танысу:
goto
if…then…else…
оператор выбора
Тармақталған құрылымды программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
6 апта
Зертханалық сабақ №6
Тақырып 7. Цикл операторы
Сабақ мақсаты
Мына операторлардың, міндетін, жазылу форматымен және қолдану ережелерімен танысу:
Циклдық құрылымды программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
7 апта
Зертханалық сабақ №7
Тақырып 8. Функциялар
Сабақ мақсаты
Ұғымымен танысу: подпрограммалар.
Функцияны сипаттау ережелерімен танысу.
Мына ұғымдармен танысу
Формальды және фактылы параметрлер;
глобальды және локальды айнымалылар.
Негізгі программада функцияны шақыру тәсілдерімен танысу.
подпрограммаларды пайдаланып программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
8 апта
Зертханалық сабақ №8
Тақырып 9. Жады кластары
Сабақ мақсаты
Мына ұғымдармен танысу
классы памяти;
автоматты айнымалылар;
статикалық айнымалылар;
сыртқы айнымалылар;
регистрлі айнымалылар;
көрсеткіштер және адрестік арифметика.
Жадының әртүрлі кластарының объектілерімен программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
9 апта
Зертханалық сабақ №9
Тақырып 10. Деректердің күрделі типтері: массивтер
Сабақ мақсаты
Мына ұғымдармен танысу
массив;
массивтің өлшемділігі;
массивті сипаттау тәсілдері.
Бірөлшемді массивтерді пайдаланып программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
10 апта
Зертханалық сабақ №10
Тақырып 10. Деректердің күрделі типтері: массивтер
Сабақ мақсаты
Деректер типтерімен танысу: шектелген, диапазонды.
Шектелген және диапазонды типті айнымалыларды сипаттау тәсілдерімен танысу.
Мына ұғымдармен танысу
массив;
массивтің өлшемі;
массивті сипаттау тәсілдері.
Бірөлшемді массивтерді пайдаланып программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
11 апта
Зертханалық сабақ №11
Тақырып 11. Жолдар
Сабақ мақсаты
Жолдық деректермен танысу.
Жолдық деректерді сипаттау тәсілдерімен танысу.
Жолдармен жұмыс жасайтын стандарттық функциялармен танысу.
Жолдық деректерді пайдаланып программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
12 апта
Зертханалық сабақ №12
Тақырып 12. Деректердің құрылымдары
Сабақ мақсаты
Деректердің құрылымдық типімен танысу және программада осы типтің сипатталуымен танысу.
Құрылымдарды пайдаланып программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
13 апта
Зертханалық сабақ №13
Тақырып 13. Файлдар
Сабақ мақсаты
Файл ұғымымен танысу.
Файлдармен жұмыс жасайтын функциялармен танысу.
Сыртқы файлдарды пайдаланып программа құруды үйрену.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
14 апта
Зертханалық сабақ №14
Тақырып 14. Модульдер
Сабақ мақсаты
Модуль ұғымымен және стандартты модульдермен танысу.
Сабақ барысы:
Сабақ тақырыбы бойынша тәжірибелік тапсырмаларды орындау.
15 апта
Зертханалық сабақ №15
Тақырып 15. Графика
Сабақтың мақсаты:
Графикалық бейнелерді тұрғызу үшін функциялармен танысу.
Графикалық бейнелерді тұрғызу және қоларды қозғалту үшін программа құру.
Сабақтың барысы:
Сабақтың тақырыбы бойынша тәжірибелік тапсырма орындау.
4. сТУДЕНТТІҢ ӨЗДІК ЖҰМЫСЫ
4.1 Студенттің өздік жұмысын ұйымдастыруға арналған әдістемелік нұсқаулар
СӨЖ және ОБСӨЖ үй тапсырмасы ретінде дәптерге не А4 форматтағы қағазға орындалып, оқытушыға тапсырылады. СӨЖ және СОӨЖ программасы оқытушыға электронды түрде өткізіледі.
Өздік жұмысын бақылау келесі түрде болуы мүмкін:
– орындалған жұмыстың презентациясы;
– өзбетімен оқылған тақырыптың баяндамасы;
– оқытушының ауызша сұрауы;
– жазбаша түрде;
Ескерту: Жақсы бағада аттестация алу үшін СОӨЖ, СӨЖ тапсырмалары оқытушыға 1 апта бұрын тапсырылуы қажет.
4.1.1. Оқытушы басшылығымен студенттердің өздік жұмысының жоспары
ОБСӨЖ №1.
Программаны құрудың техникалық тапсырмасы.
Программаларды техникалық жобалау кезеңдері.
Алгоритмдердің құрылымдық схемесын дайындау.
Деректерді ұйымдастыру.
ОБСӨЖ №2.
Программаларды құжаттау.
МЕМСТ пен бекітілген программалық құжаттаудың түрлері.
Программалық құжаттаудың біріңғай жүйесі.
ОБСӨЖ №3.
Си тілінде құрылған программаның құрылымы қандай?
Си программалау жүйесінің файлдарының құрамы қандай?
ОБСӨЖ №4.
Есептеу үшін қандай формулаларды қолдануға болады:
ctg x
arcsin x
arccos x
arcctg x
loga x
ОБСӨЖ №5.
Кездейсоқ айнымалы ұғымы.
Кездейсоқ айнымалымен жұмыс істейтін процедуралар мен функциялар.
Тармақталу алгоритмін орындайтын программаны құру.
ОБСӨЖ №6.
Кіріктірілген циклдардың құрылымын ұйымдастыру.
Циклдық алгоритмдерді орындайтын программа құру.
ОБСӨЖ №7.
TP және Си подпрограммаларды пайдалануды салыстыру.
Ішкі программаларды пайдаланатын программалар құру.
ОБСӨЖ №8.
Жады кластарын пайдаланатын программа құру.
ОБСӨЖ №9.
Бірөлшемді массивтерді пайдаланатын программа құру.
ОБСӨЖ №10.
Екіөлшемді массивтерді пайдаланатын программа құру.
ОБСӨЖ №11.
Жолдарды пайдаланатын программа құру.
ОБСӨЖ №12.
Құрылымды пайдаланатын программа құру.
ОБСӨЖ №13.
Файлдарды пайдаланатын программа құру.
ОБСӨЖ №14.
ТР және Си программалау жүйелеріндегі модульдерді салыстыру.
Модульдерді пайдаланатын программа құру.
ОБСӨЖ №15.
Графиканы пайдаланатын программаны құру.
4.1.2. Студенттің өздік жұмысының жоспары
Студенттер өздік жұмысын реферат түрінде жазу керек. Орындалған өздік жұмыс нәтижесінің есебі А4 форматында терілген болу керек. Шрифт Times New Roman, өлшем -12 пн., аралық интервал – 1,5, мәтінді түзету – беттің ені бойынша.
Бет параметрі: жоғарғы өріс (см.) – 2, төменгі – 2, сол жақ – 2,5, оң жақ – 1,5 см. Бетті нөмірлеу – беттің жоғарғы, оң жағында.
Төменгі колонтитулға өз Фамнемесеяңызды Атыңызды Отчествоңызды және топ нөмірін қойыңыз.
СӨЖ №1.
Программаны құрудың техникалық тапсырмасы.
Программаларды техникалық жобалау кезеңдері.
Алгоритмдердің құрылымдық схемесын дайындау.
Деректерді ұйымдастыру.
СӨЖ №2.
Программаларды құжаттау.
МЕМСТ пен бекітілген программалық құжаттаудың түрлері.
Программалық құжаттаудың біріңғай жүйесі.
СӨЖ №3.
Си тілінде құрылған программаның құрылымы қандай?
Си программалау жүйесінің файлдарының құрамы қандай?
СӨЖ №4.
Есептеу үшін қандай формулаларды қолдануға болады:
ctg x
arcsin x
arccos x
arcctg x
loga x
СӨЖ №5.
Кездейсоқ айнымалы ұғымы.
Кездейсоқ айнымалымен жұмыс істейтін процедуралар мен функциялар.
Тармақталу алгоритмін орындайтын программаны құру.
СӨЖ №6.
Кіріктірілген циклдардың құрылымын ұйымдастыру.
Циклдық алгоритмдерді орындайтын программа құру.
СӨЖ №7.
TP және Си подпрограммаларды пайдалануды салыстыру.
Ішкі программаларды пайдаланатын программалар құру.
СӨЖ №8.
Жады кластарын пайдаланатын программа құру.
СӨЖ №9.
Бірөлшемді массивтерді пайдаланатын программа құру.
СӨЖ №10.
Екіөлшемді массивтерді пайдаланатын программа құру.
СӨЖ №11.
Жолдарды пайдаланатын программа құру.
СӨЖ №12.
Құрылымды пайдаланатын программа құру.
СӨЖ №13.
Файлдарды пайдаланатын программа құру.
СӨЖ №14.
ТР және Си программалау жүйелеріндегі модульдерді салыстыру.
Модульдерді пайдаланатын программа құру.
СӨЖ №15.
Графиканы пайдаланатын программаны құру.
4.2.1. «Программалау технологиясы» курсы бойынша емтихан сұрақтары
Дербес компьютердің программалық құралдары.
Программалау әдістемесі.
Программалау технологиясының негізі.
Си тілінің жалпы характеристикасы. Си программалау жүйесіне кіріспе.
Меншіктеу операторы. Енгізу – шығаруды ұйымдастыру.
Шартты және шартсыз көшу операторлары.
Цикл операторлары.
Функциялар.
Жады кластары.
Деректердің күрделі типтері: массивтер.
Жолдар.
Деректердің құрылымы.
Файлдар.
Модульдер.
Графика.
Достарыңызбен бөлісу: |