Практикалық жұмыстың орындалуы туралы есептің формасы
Есепте болуы қажет:
Кез-келген орындалған тапсырма үшін
1. Есептің шешімінің математикалық моделі;
2. Есептің шешімінің алгоритмі;
3. Есеп шешімінің алгоритмі орындалған программа.
Блиц-тест
1. Қандай көмекші сөздің көмегімен біріктіру құрылады?
a) struct;
b) swith;
c) union;
d) enum;
e) record;
2. Қандай көмекші сөздің көмегімен саналым құрылады?
a) struct;
b) swith;
c) union;
d) enum;
e) record;
3. Қандай көмекші сөздің көмегімен структура құрылады?
a) struct;
b) swith;
c) union;
d) enum;
e) record;
Бақылау сұрақтары
1. С/С++ тілдерінде қандай қосымша типтер қолданылады?
2. Саналымды типті айнымалылар қалай сипатталады?
3. Қандай көмекші сөздің көмегімен біріктіру құрылады?
4. Структура дегеніміз не?
5. typedef құралы не үшін қолданылады?
Глоссарий
Структура – бір атпен біріктірілген бір немесе бірнеше әр түрлі типті
айнымалылар тобы. Структура struct қызметші сөзімен құрылады. Структураның
жалпы құрылымы төмендегідей:
struct тег {
тип1 иден1;
тип2 иден2;
… …
типN иденN;
};
мұндағы тег мәліметтердің жаңа типі болып саналады және оны айнымалыны
сипаттауда қолдануға болады.
Сипатталған структура негізінде айнымалы құру үшін
struct <тег> <айнымалы>
С++ тілінде struct қызметші сөзін көрсетпесе де болады:
<тег> <айнымалы>
Айнымалыны структураны құру кезінде де анықтауға болады:
struct тег {
тип1 иден1;
тип2 иден2;
… …
типN иденN;
} <айнымалы>;
Егер структура типті басқа айнымалылар құрылмайтын болса, структура тегін
көрсетпеуге болады. Мұндай структура атаусыз (безымянный) деп аталады.
Структуралар іштестірілген де болуы мүмкін:
struct тег1 {
тип1 иден1;
тип2 иден2;
тип3 иден3;
};
struct тег2 {
тип1 иден1;
тип2 иден2;
struct тег1 иден3;
};
Коріп отырғанымыздай структура элементтерін нүкте операторының көмегімен
алуға болады, форматы мынадай:
<айнымалы>.<элемент>
Структура элементтері циклда енгізілгенде _flusshall() –функциясы кіріс
легіндегі жаңа жол символын өшіруге, яғни буферді тазалауға қолданылады. Жаңа
жол символы scanf( ) функциясын қолданғанда қойылады. Ал, gets( ) функциясы бұл
таңбаға дейінгі символдарды ғана оқиды.
Функцияға структура типті объектіні беру тәсілдері үш түрлі:
1.
Компоненттерін жеке-жеке беру.
2.
Структураны толығымен беру.
3.
Структураға көрсеткішті беру.
Көрсеткіш келесі түрде сипатталуы мүмкін:
struct <тег> *<айнымалы>
Бұндай жағдайда структуралық айнымалының кез-келген элементін мына
әдістердің бірімен алуға болады:
(*<айнымалы>).<элемент> немесе <айнымалы> –> <элемент>
Әртүрлі уақытта әрүрлі типті және әртүрлі өлшемді обьектілерді сақтай алатын
айнымалы –біріктіру деп аталады. Өлшемдеріне және реттеуге қатысты талаптарды
компилияция орындайды. Жадының бір аймағында әртүрлі мәндерді сақтауға
мүмкіндіктері бар.
Біріктіру синтаксисі структура синтаксисі секілді:
Union unprim {
Int iman;
Float fman;
Char *sman;
} mainun;
Си тілінде мәндер типіне жаңа атау беруге болатын құрал - typedef құралы бар.
Әдебиеттер
1. Керниган Б., Ритчи Д.,- Язык программирования Си. – М.: Финансы и
статистика, 1985 г.
2. Вирт Н. Алгоритмы и структуры данных: Пер. с анг.- М.: Мир, 1989 г.
3. Д.Кнут Искусство программирования для ЭВМ. Основные алгоритмы. М.:
Мир, 1976. 3.
4. Н.Культин., С/С++ в задачах и примерах – БХБ-Петербург, 2002 г.
5. Крис Паппас., Программирование на С и С++ - BHV, Киев, 2000 г.
6. Т. А. Павловская, А. Ю. Щупак С/С++ Структурное программирование:
Практикум- СПб.: Питер, 2005
7. Уэйт М . Язык Си. Руководство для начинающих: Пер. с англ. – М., Мир, 1988
г.
Практикалық жұмыс №9.
Тақырыбы: С++ тіліндегі графика
Сабақтың мақсаты: Графикалық режимде жұмыс жасау дағдыларын
қалыптастыру.
Материалдар және құрылғылар: тақта, бор, “графикалық жүйені басқаруға
арналған функциялар” кестесі.
Жұмыстың мазмұны және орындалу тәртібі:
1. Тапсырманы орындау мысалын қарау.
2. Ретімен келесі тапсырмаларды орындау.
3. Орындалған практикалық жұмыс туралы есепті дайындау.
Тапсырманы орындау мысалы
Графикалық программа шаблоны:
#include
#include
#define PATHODRIVER “c:\\\borlandc\\bgi\\”
void main(void)
{
int gdriver=DETECT; // Драйвер
int gmode; // режим
int errorcode; //қате коды
initgraph(&gdriver, &gmode, PATHODRIVER);
errorcode =graphresult();
if (errorcode!= grOk) //графикалық режимді инициализациялау қателігі
{
printf("қате:%d \n", errorcode);
puts("\n Аяқтау үшін Enter-ді басыңыз ");
getch();
}
// әрі қарай программа инструкциясы
closegraph(); // графикалық режимді аяқтау
}
Студенттердің өз бетімен орындауға арналған тапсырмалары
1. Экранда үйді сызатын программа құрыңыз.
2. Экранға Олимпиада ойындарының жалауын шығаратын программа құрыңыз.
3. Экранға диаметрі және түсі кездейсоқ болып келген 100 шеңберден тұратын
өрнек сызатын программа құрыңыз.
4. Экранға өлщемі және түсі кездейсоқ болып келген 50 тіктөртбұрыштан тұратын
өрнек сызатын программа құрыңыз.
5. Экранда алтыбұрыш сызатын программа құрыңыз.
6. Экранда шахмат тақтасының бейнесін сызатын программа құрыңыз.
7. Экран бойымен қозғалатын дөңгелек сызатын программа құрыңыз.
8. Экранда
5
2
x
y
функциясының графигін шығаратын программа құрыңыз.
Практикалық жұмыстың орындалуы туралы есептің формасы
Есепте болуы қажет:
Кез-келген орындалған тапсырма үшін
1. Есептің шешімінің математикалық моделі;
2. Есептің шешімінің алгоритмі;
3. Есеп шешімінің алгоритмі орындалған программа.
Блиц-тест
1.
С/С++-те closegraph функциясы:
a) TurboC ортасындағы программаның ағымдық терезесін жабу.
b) Программаны жабу және TurboC ортасынан шығу.
c) Программаны орындау режиміне көшу.
d) Жүйені мәтіндік режимге ауыстыру (графикалық режимнен).
e) Графиканы инициализациялау.
2.
С/С++-те setcolor функциясы
a) Фон түсін орнатады.
b) Бейне нүктесінің түсін орнатады.
c) Стильді орнатады.
d) Экранды фон түсімен тазартады.
e) Графиканы инициализациялау.
3.
С/С++-те cliardivice функциясы:
a) Экранды фон түсімен тазартады.
b) Фон түсін орнатады.
c) Стильді орнатады.
d) Жүйені мәтіндік режимге ауыстыру (графикалық режимнен).
e) Графиканы инициализациялау.
Бақылау сұрақтары
1. Графикалық режимді баптауға арналған енгізгі процедураларды атаңыз.
2. Фигураларды тұрғызу үшін қандай процедуралар қолданылады?
3. Графикалық режимде мәтінді шығару үшін қандай процедуралар қолданылады?
Глоссарий
С/С++ тіліндегі графика – бұл графикалық процедуралар мен функциялардың тізімі.
Барлық аргументтер графикалық процедуралар мен функциялар үшін . тек бүтін
типті бола алады. Драйвер – бұл ДК техникалық құрылғыларын басқаруды жүзеге
асыратын арнайы программа. Графикалық режимді инициализациялау – бұл
адаптер (экран) жұмысының мәтіндік режимнен графикалық режимге ауысуы.
Қазіргі ДК-де, негізінен, растрлық дисплейлер қолданылады. Олардағы
бейненің ең кіші элементі болып нүкте – pixel (ағылш., picture element) табылады.
Дисплейдің мүмкіндігі – бұл көлденең және тік орналасқан пикселдер саны
(стандартты разрешение – 640*480 нүкте).
Адаптерлердің барлық түрлері үшін графикалық драйверлер Borland International
фирмасымен құрастырылған. Олар BGI (Borland Graphics Interface) кеңеймесімен
жеке файлдарда орналасқан. Графикалық драйверді қосу үшін арнайы initgraph()
функциясы қолданылады.
Драйверді және графикалық режимді таңдау
detectgraph (&gd, &gm)
функция арқылы орындалады.
2. Драйверді жүктеу, графикалық жүйені инициализациялауды
initgraph (&gd, &gm, "BGI-файлдың жолы")
функциясы атқарады, мұндағы gd және gm айнымалылары қажет драйвер мен
графикалық режимнің номерлері.
Егер ВGI-файлдар ағымдағы директорияда орналасса, онда initgraph()
функциясының үшінші параметрі ретінде бос жолды беруге болады
initgraph (&gd, &gm, " ");
Режимдерді ауыстыру. Дисплейлік адаптердің текстік режиміне уақытша ауысу
үшін мына функция қолданылады:
restorecrtmode ();
Қайтадан графикалық режимге ауысу
setgraphmode (gm);
функциясымен жүзеге асырылады.
Ағымдағы драйвер үшін графикалық режимнің максимал мәнінің номерін
getmaxmode ();
функциясы арқылы анықтауға болады.
Графикалық жүйемен жұмыс жасап болған соң, графикаға бөлінген жадыны
босату, бейнеадаптер буферін тазарту, алдыңғы текстік режимді қалпына келтіру
керек. Барлық әрекеттерді
closegraph ();
функциясы жүзеге ауыстырады.
5. Түстерді, шрифттерді сызықтардың стилін және бояу стилін тағайындау. Түстерді
көрсету үшін констандаларды пайдалануға болады.
Әдебиеттер
1. Керниган Б., Ритчи Д.,- Язык программирования Си. – М.: Финансы и
статистика, 1985 г.
2. Вирт Н. Алгоритмы и структуры данных: Пер. с анг.- М.: Мир, 1989 г.
3. Д.Кнут Искусство программирования для ЭВМ. Основные алгоритмы. М.:
Мир, 1976. 3.
4. Н.Культин., С/С++ в задачах и примерах – БХБ-Петербург, 2002 г.
5. Крис Паппас., Программирование на С и С++ - BHV, Киев, 2000 г.
6. Т. А. Павловская, А. Ю. Щупак С/С++ Структурное программирование:
Практикум- СПб.: Питер, 2005
7. Уэйт М . Язык Си. Руководство для начинающих: Пер. с англ. – М., Мир, 1988
г.
Практикалық жұмыс №10. Файлдар
Сабақтың мақсаты: С/С++ тілдерінде файлды құру, өңдеу, оқу, жазу дағдыларын
қалыптастыру.
Материалдар және құрылғылар: тақта, бор.
Жұмыстың мазмұны және орындалу тәртібі:
1. Тапсырманы орындау мысалын қарау.
2. Ретімен келесі тапсырмаларды орындау.
3. Орындалған практикалық жұмыс туралы есепті дайындау.
Тапсырманы орындау мысалы
Бірнеше студент туралы ақпаратты файлда сақтауға мүмкіндік беретін программа
құру. Кейін бұл ақпарат өңдеу үшін қайтадан оперативті жадыға оқыла алады.
#include
struct STUDENT
{
char name[20];
int age;
};
void writeStudInfo(FILE *fp,struct STUDENT *st,int num)
{
int i;
for(i=0; ifwrite(&st[i],sizeof(STUDENT),1,fp);
}
void readStudNum(FILE *fp,struct STUDENT *st,int n)
{
int a=fseek(fp,0L,0);
a=fseek(fp,(long)(n-1)*sizeof(STUDENT),0);
fread(st,sizeof(STUDENT),1,fp);
}
void readStudInfo(FILE *fp,struct STUDENT *st,int num)
{
int i;
for(i=0; ifread(&st[i],sizeof(STUDENT),1,fp);
}
void main(void)
{
struct STUDENT st[5]={ {"name1",17},
{"name2",19},
{"name3",20},
{"name4",21},
{"name5",22} };
struct STUDENT stnew[5], stn;
FILE *fp=fopen("l9_2.dat","w");
writeStudInfo(fp,st,5);
fclose(fp);
fp=fopen("l9_2.dat","r");
readStudInfo(fp,stnew,5);
readStudNum(fp,&stn,2);
fclose(fp);
}
Студенттердің өз бетімен орындауға арналған тапсырмалары
1. Файл құратын программа жазыңыз, оның компоненттері келесі структурадан
тұрады:
Табель нөмірі
ТАӘ
Жалақы мөлшері
Файлға бес жұмысшы туралы мәлімет енгізіңіз, басқа файлға ең жоғары жалақы
алатын жұмысшы туралы мәліметті енгізіңіз.
2. ZARPL.DAT файлын құратын және экранға шығаратын программа құрыңыз,
оның компоненттері келесі структурадан тұрады:
Табель нөмірі
ТАӘ
Жалақы мөлшері
Енгізуден шығу – табель нөмірі=999. Жалақысы 45000 теңгеден асатын
жұмысшылардың табель нөмірін, ТАӘ және жалақысын экранға шығарыңыз.
3. Файл құратын программа жазыңыз, оның компоненттері келесі структурадан
тұрады:
Табель нөмірі
аванс
Енгізуден шығу – табель нөмірі=999. Экранға келесі құрылымды ведомость
шығарыңыз:
Табель нөмірі
аванс
…………………… …….
…………………… …….
Барлығы:
4. Бүтін сандар файлын құрыңыз. Файлдағы оң сандардың арифметикалық
ортасын табыңыз.
5. Бүтін сандар файлын құрыңыз. Файлдағы ең кіші элементтің реттік нөмірін
табыңыз. Егер мұндай сандар бірнешеу болса, онда біріншісінің нөмірін
табыңыз.
6. Элементтері жеке символдар болып келген файл құрыңыз. Алғашқы екі
символы цифр болып табыла ма, анықтаңыз. Егер цифр болса, онда осы
цифрлардан құралған сан тақ бола ма, анықтаңыз.
7. Элементтері жеке сөздер болып келген файл құрыңыз. Реттік нөмірі тақ болып
келген сөздерден сөйлем құраңыз.
8. Элементтері «киллобайт» сөзінің жеке әріптері болып келген файл құрыңыз.
Қатесі жоқ жаңа файл құрыңыз.
9. Текстік файл берілген. 30-дан аса символы бар жолдарды басқа файлға жазу
керек.
10. Текстік файл берілген. Барлық тақ нөмірлі жолдарды екінші файлға, ал жұп
нөмірлі жолдарды үшінші файлға жазу керек. Жолдардың жалғасу реті
сақталады.
Практикалық жұмыстың орындалуы туралы есептің формасы
Есепте болуы қажет:
Кез-келген орындалған тапсырма үшін
1. Есептің шешімінің математикалық моделі;
2. Есептің шешімінің алгоритмі;
3. Есеп шешімінің алгоритмі орындалған программа.
Блиц-тест
1. С/С++-те fopen функциясы не үшін арналған?
a) Файлды ашуға.
b) Файлды жабуға.
c) Файлды құруға және ағымдық каталогта уақытша файл ашуға.
d) Ашылған файлдан символды оқуға.
e) Графиканы инициализациялауға.
2. С/С++-те fсlose функциясы не үшін арналған?
a)
Файлды ашуға.
b)
Файлды жабуға.
c)
Файлды құруға және ағымдық каталогта уақытша файл ашуға.
d)
Ашылған файлдан символды оқуға.
e)
Графиканы инициализациялауға.
3. С/С++-те tmpfile функциясы не үшін арналған:
a)
Файлды ашуға.
b) Файлды жабуға.
c) Файлды құруға және ағымдық каталогта уақытша файл ашуға.
d) Ашылған файлдан символды оқуға.
e) Графиканы инициализациялауға.
Бақылау сұрақтары
1. Файл дегеніміз не? Файлдар қандай мақсатта қолданылады?
3. Файл атауларына қойылатын талаптар қандай?
4. Файлдармен қандай амалдар орындалады?
5. Файлдан мәліметтерді оқу үшін қандай функциялар қолданылады?
Глоссарий
С тілінде:
Файлдан оқу және файлға енгізу үшін ең алдымен файл 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() файлға жазу барысында функциялары файлдың
ағымды позициясының маркерін басқаруға қолданылады.
Достарыңызбен бөлісу: |