Лекпен жұмыс жасауды бастамас бұрын, оны инициялизациялау керек, яғни ашу керек. Сонда лек орындалатын программада FILE типті алдын ала анықталған құрылыммен байланысады. FILE құрылымдық типінің сипатталуы stdio.h тақырыптық файлында орналасқан. FILE құрылымында лекпен жұмыс жасуға арналған компонентер орналасқан, дербес жағдайда, буферге нұсқаушы, лектегі ағымдағы позициядағы нұсқаушы(индикатор) және басқа ақпарат.
FILE *fp;
Лекке нұсқаушы лекті ашу функциясының орындалуы нәтижесінде:
fp = fopen (файл _аты,ашылу- режим);
файл _аты және ашылу- режим параметрлері лекпен байланысты және режимдер жолымен байланысты файл атынан тұратын символдар массивіне нұсқаушы болып табылды. Бірақ, бұл параметрлер фацлды ашу функциясын шақыранда жол түрінде және берілуі мүмкін:
fp = fopen("t.txt", "r") ;
мұндағы t. txt – лекпен байланысты қандай да бір файл аты;
r – файлмен жұмыс режимдерінің бір белгіленуі (лекке рұқсат алу типі).
Лекпен байланысты, стандартты файлды келесі алты режимнің біреуімен ашуға болады:
"w" – жаңа мәтіндік файлы жазу үшін ашылады. Егер файл бар болған болса, онда алдынғы мазмұны тазаланып, жаңадан қайта құрылады;
"r" – бар мәтіндік файл оқу үшін ғана ашылады;
"а" – мәтіндік файл оған жаңа ақпарат қосу үшін (файл соңына) ашылады (немесе егер файл жоқ болса, құрылады) . V режиміне қарағанда "а" режимі бар файлдарды олардың алдындағы версияларын жоймай ашады және оған ары қарай жазуға болады;
"w+" – жаңа мәтіндік файл жазу үшін және ары қарай бірнеше рет қолдану үшін ашылады.Егер файл бар болса, онда оның мазмұны тазарады. Файлдардың келесі ашылуы жазу мен одан оқу файлдың кез келген жерінде рұқсат етілген, сонымен қатар файлдың соңына да жазу қосуға болады, яғни, файл көлемі үлкейе алады (көбейе);
"r+" – бар мәтіндік файл оқу үшін де жіне файлдың кез келген жеріне жазу үшін де ашылады. Бірақ, бұл режимде файлдың соңына жазу мүмкін емес, яғни, файл өлшемін кеңейту мүмкін емес.;
"а+" – мәтіндік файл өзгертуге болатындай ашылады немесе құрылады (егер ол жоқ болса) яғни, кенз келген жерден оқу мен жазу мүмкін болатындай; Сонымен қатар "w+" режиміне қарағанда бар файлды оның мазмұнын жоймай ашу мүмкін; "г+" режиміне қарағанда "а+" режимінде файл соңына жазу енгізуге болады, яғни, оның көлемін өзгертуге болады.
Лекті мәтіндік немесе екілік(бинарлық) режимде ашуға болады.
Мәтіндік режимде лектен оқылған символдар комбинациясы CR (13 мәні ) және LF (10 мәні) , яғни, " каретканы қайтару" және "жолды тасымалдау" басқарушы кодтары жаңа жолдың бір символына '\n' (LF) , CR және LF кезектілігін ауыстыру арқылы түрленеді.
Егер лекпен байланысты файл мәтіндік емес, өзіндік екілік ақпараттан тұрса, онда көрсетілген түрлендірулер керек емес және зиянды болуы да мүмкін. Бұндай түрлендірусіз алмасу b әрпімен белгіленетін, екілік немесе бинарлық режимде орындалады. Мысалы, "r+b" немесе "wb". Кейбір компиляторларда мәтіндік файл t әрпімен белгіленеді, яғни, "a+t" немесе "rt" түрінде жазылады.
Егер лек өзгерту үшін шылған болса, яғни, режим параметрінде "+", символы бар болса, онда лекке шығарумен қатар одан оқу да мүмкін. Бірақ, режимді ауыстыру (оқудан жазуға өту немесе керісінше) лек нұсқаушысын керекті позицияға орналасырғаннан кейін ғана орындалуы керек.
Лекті ашуда келесідей қателер пайда болуы мүмкін: лекпен байланысқан нұсқалған файл табылған жоқ (оқу режимі үшін); диск бос емес немесе дискіге жазуға рұқсат жоқ және т.б. fopen() функциясының орындалуы кезінде динамикалық жадының бөлінуі орындалатынын ескерте кету керек. Ол жоқ болған жағдайда "Not enough memory" (жадыда орын жоқ) қате белгісі шығады. Аталған жағдайларда, лекке нұсқаушы NULL мәніне ие болады.
Лекпен байланысқан файлдарды ашуда қолданылатын операторлар кезектілігіне мысал келтірейік:
if ((fp=fopen("t.txt", "w"))==NULL)
{
perror("файлды ашуда кеткен өателік t.txt \n");
exit(0);
}
Мұндағы NULL - stdio.h файлында анықталған нөлдік нұсқаушы.
Лекті ашқандағы қате туралы хабарламаны экан дисплейіне шығару үшін реггог() библеотеекалық функциясы қолданылады, оның stdio.h –тағы пототипінің түрі келесідей:
void perror (const char * s);
perror() функциясы s нұсқаушысымен адрестелген символдар жолын шығарады, одан кейін: қос нүкте, пробел және қате туралы хабарлама орналасады. Қатенің мазмұны мен форматы программалау жүйесінің жүзеге асуымн анықталады. Қате туралы хабарламаның мәтіні қате нөміріне байланысты реггог() фуекциясымен таңдалады. Қате нөмірі Си тілінің библеотекасының жанындағы, сонымен қатар енгізу – шығару функциялары жанындағы int errno(int errno тақырыптық файлында анықталған ) айнымалысына енгізіледі. Файл ашылғаннан кейін, оған ақпарат жазу арқылы намесе оқу арқылы (режимге байланысты) онымен жұмыс істеуге болады.
Фйлдармен жұмыс істеп болған соң дискіде ашылған файлдарды міндетті түрде жабу керек. Ол үшін мына библеотекалық функция қолданылады
int fclose (лекке_нұсқаушы);
Ашылған файлды оны fclose( ) функциясы көмегімен жапқаннан кейін ғана қайта ашуға болады (мысалы онымен жұмыс істеу режимін өзгертіу үшін).
Дискідегі файлдармен жұмыс
Дискідегі фйлдармен жұмыс істеу үшін Си тілінің библеотекасына келесі функциялар қосылған:
fgetc(), getc() – енгізу (файлдан бір символды оқу;
fputc(), putc() – файлға бір символды жазу;
fprintf() – файлға форматталған шығару;
fscanf() – файлдан фоматталған шығару (оқу);
fgets() – файл жолын енгізу (оқу);
fputs() – жолды файлға жазу.
Файлдарды алмастырудың екілік (бинарный) режимі
Екілік алмасу getc() және putc()функцияларының көмегімен жүзеге асады. Олардың форматтары:
c=getc(fp);
putc(c,fp);
мұндағы fp – ағымға нұсқаушы; c – келесі символды файлдан қабылдап оның мәнін файлға жазуға арналған int типті айнымалы.
Функциялардың прототипі:
int getc(FILE *stream);
int putc(int c, FILE *stream);
Файлдармен жолдық алмасу
Мәтіндік файлдармен жұмыс істегенде fgets() және fputs() функцияларын қолдану тиімді
fgets(s, n, f);
s –жол, f – лекке нұсқаушы.
fgets() функциясы нұсқаушы анықтаған f файлынан (n-1) символдан кем емес симводы жазады және оны s жолына жазады. (n-1) символды оқығаннан кейін немесе жаңа жллға көшіретін '\n' символын кездестіргеннен кейін функция жұмысын тоқтатады . Қосымша әр жолдың соңында жолдың аяқталу белгісі '\0' жазылады.Нәтижелі аяқталу жағдайында функция s жолын қайтарады. Қате болған немесе файл соңына жеткенде, бір де бір символ оқылмаса функция NULL мәнін қайтарады.Бұндай жағдайда жолдың мәні өзгерусіз болып қалады.
fputs(s, f);
s – строка, f – указатель на поток.
fputs() функциясы '\0' символымен шектелген жолды лекке нұсқаушы анықтаған f файлына жазады және оң бүтінді қайтарады.
Қате жағдайында fputs() функциясы EOF қайтарады. '\0' символы тасымалданбайды және '\n' символы '\0' символының орнына жазылмайды.
Файлдармен форматты алмасудың режимі
Кейбір жағдайлрда ақпаратты файлға жазуда монитор экранында бейнелеуге жарамды етіп жазу ыңғайлы.Бұндай жағдайда, fpritf(), fscanf() файлға форматты енгізу (шығару) функциясының прототипін қолданады:
int fprintf(лекке_нұсқаушы, форматты_жол,айнымалылар _тізімі);
int fscanf(лекке_нұсқаушы, форматты_жол,айнымалылар_адресінің_тізімі);
Лектегі позциялау
Си тілінің библеотекасында ағымдағы позициядағы нұсқаушыны лектегі қажет байтқа нұсқайтын fseek() функциясы іске қосылған. Ол келесі прототиптен тұрады:
int fseek(лекке_нұсқаушы,бірігу, есеп берудің_басу);
Өзін-өзі тексеру сұрақтары
Файл деген не?
Өңдеу үшін берілгендер файлдарын қолданудың қандай маңызы бар?
Программада файлға нұсқаушы не үшін қолданылады?
Файлдарды ашу мен жабу қалай орындалады?
Файлдармен жұмыс істеу үшін енгізу мен шығарудың қандай функциялары бар?
Файлдарды жаңа фйлдармен қала толтыруға болады?
Файлдардың мәтіндік және екілік форматы.
8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995
2. Подбельский В.В., Фомин С.С. Программирование на языке СиЖ Учеб. пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание / Под ред. С.В. Симоновича. – СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984
14 тақырып. Модулдер
Дәріс жоспары
Файлдан мәтіннің қосылуы. #include директивасы.
Стандартты модулдер.
Программалау кезінде кітапхана функциясын қолдану.
Дәрістің қысқаша конспектісі
Файлдардағы мәтіндерді қосу
Файлдан мәтінді қосылу үшін #include директивасы қолданылады. Оны жазудың үш түрі бар. Олар:
#include <имя_файла>
#include "имя_файла'
#include имя_макроса
Егер файлдың аты үшбұрышты жақшада болса, онда препроцессор файлды стандартты жүйелік каталогтан іздейді. Егер файлдың аты жақшаға алынған болса, онда препроцессор бірінші қолданушының ағымдағы каталогын қарастырады содан кейін барып стандартты жүйелік каталогқа хабарласады.
Выполняя у #include директивтивасын орындау кезінде препроцессор программаға енгізу-шығару кітапханасымен байланыс құралын қосады. stdio.h файлын іздеу стандартты жүйелік каталогтарда орындалады.
Келісілген келісім бойынша Һ библеотекалық функциялардың прототипі болатын функцияларға , содай-ақ библеотека компиляторларымен жұмыста қолданылатын типтер мен тұрақтыларды сипаттауларда жазылады.
Бұл файлдарды тақырыптық деп атайды. Программаның тақырыбына кез келген файлдар кіруі мүмкін (стандартты немесе арнайы дайындалған).
Компильятор кітапханасымен жұмыс істеуге арналған тақырыптық файлдардың сипатталуының жиынтығы стандартты тілмен бекітілген:
assert.h
|
программа диагностикасы
|
ctype.h
|
Символдарды түрлендіру және тексеру
|
errno.h
|
Қателерді тексеру
|
float.h
|
Нақты берілгендермен жұмыс
|
limits.h
|
Бүтін санды берілгендердің соңғы мәні
|
locate.h
|
Ұлттық ортаны қолдау
|
math.h
|
Математикалық есептеулер
|
setjump.h
|
Локальді емес ауысулардың мүмкіндіктері
|
signal.h
|
Дербес оқиғаларды өңдеу
|
stdarg.h
|
Параметрлар саны айнымалысын қолдау
|
stddef.h
|
Қосымша анықтамалар
|
stdio.h
|
Кіріс-шығыс ортасы
|
stlib.h
|
Жалпы пайдаоану функциялары (жадымен жұмыс)
|
string.h
|
Символдар жолымен жұмыс
|
time.h
|
Күн мен уақытты анықтау
|
Әрбір ОЖ-де сәйкес тақырыптық файлды енгізу байланысы үшін графикалық функция кітапханасы бар. #include <…> директивасын программада қолданғанда ол программаға сәйкес стандарттыы кітапхананы қоспайтынын есте сақтау қажет.
Препроцессорлық өңдеу программаның негізгі мәтіні деңгейінде орындалады. #include директивасы тек қана программаның мәтініне көрсетілген тақырыптық файлдан жазуды қоюға мүмкіндік береді. Программаға кітапханалық функциялар кодын қосу тек байланысты редактрлеу этабында іске асырылады, яғни программаның машиналық коды алынғанда , компиляциядан кейін.
Қосылған тақырыптық файлдың іс-әрекеті программаның мәтініне тек бір модуль аралығында ғана, #include директивасы орналасқан жерден мәтіндік файлдың соңына дейін таралады (және программадағы барлық мәтіндерде).
Стандартты емес тақырыптық файлдар үлкен көлемдегі программаны модульдік өңдегенде тиімді болып табылады. Әр түрлі файлдарда орналасқан модульдер арасындағы байланыс параметрлер көмегімен ғана іске асырылмайды, сонымен қатар бірнеше немесе барлық модульдерде глобальді ішкі обьектілер арқылы жүзеге асады.
Сондай ішкі объектілер(айнымалылар, массивтер және т.б) сипаттамасы және функция прототиптері бір файлда орналасады, олар #include дерективасы көмегімен ішкі объектілер қажет жерлерде барлық модульдерге қосылады. Егер пограммада бірнеше функциялар қолданылса, онда олардың әрбіреуінің мәтінін жеке файлда сақтаған ыңғайлы. Программады бір модуль түрінде дайындағанда программист #include "…" командасының көмегімен оған барлық функциялардың мәтіндерін қосады.
Файлдар модуль ретінде
.h файлы программаның басқа бөліктері қолданатын интерфейс болып табылады; .c файлы жүзеге асыруды білдіреді. Мұндай обьектілерді көбіне модуль деп атайды. Қолданушыға қажетті атауларға ғана рұқсат болады, ал қалған атаулар жасырынған. Бұл қасиетті көбіне берілгендерді жасыру деп атайды. Модульдердің мұндай түрі жұмсақ болады. Мысалы, жүзеге асыру бір немесе бірнеше .c файлдардан тұруы мүмкін және .h файл түрінде бірнеше интерфейс ұсынылуы мүмкін. Қолданушыға қажет емес ақпараттар жасырынған. Егер қолданушы .c файлында не жасырынғанын білмеу керек болса, оларға рұқасат бермеу керек. Оларға компилятордың эквивалентті шығатын файлдары да жеткілікті.
Кейде келесілерден тұратын қиындықтар туады, мұндай жұмсақтық формалдық құрылымсыз жүзеге асырылады. Тілдің өзі объект сияқты модульдерді танымайды және компиляторда басқа (экспортталатын) модулдар қолдануы қажет атауларды анықтайтын .h файлдарын, басқа (импортталатын) модульдерден атауларды сипаттайтын .h файлдарынан ажырата алатын мүмкіндігі жоқ.
Басқа жағдайларда сол мәселе туындауы мүмкін, яғни модуль жаңа типті емес объектілер жиынын анықтайды. Мысалы, table модульі бір кестені анықтайды, ал егер сізге екі кесте керек болса, онда модуль анықтамасының көмегімен екінші кестені берудің қарапайым тәсілі жоқ.
Әр статистикалық үнсіздік бойынша енгізілген объект нолмен инициализирленеді, программист басқа (константты) мәндер бере алады. Бұл инициализацияның тек өте примитивті түрі. Модуль қандай да түрде қолданылар алдында кластар көмегімен инициализация үшін орындалатын код құруға болады, және/немесе коды, соңғы қолданылған модульден кейін тазарту үшін қолданылады.
Кітапхананы құру
"кітапханаға орналасқан" және "кез келген бір кітапханада ізделініп жатыр" типті фразалар жиі қолданылады, бірақ мұның C++ программасында мәні қандай? Өкінішке орай бұл сұраққа жауап қандай операциялық жүйе қолданылып отырғанына тәуелді; бұл тарауда UNIX операциялық жүйесінің 8-ші нұсқасында кітапхананы құруды қарастырамыз. Басқа операциялық жүйелер аналогтық мүмкіндіктерін қарастырады. Кітапхана өзінің негізінде сәйкес .c файлдар жиынының компиляциялау нәтижесінде алынған .o файлдар жиыны болып табылады. Әдетте, .o файлдарды қалай пайдалану керектігі туралы мағлұматы бар бір немесе бірнеше .h файлдар болады. Мысал ретінде, келесі жағдайды қарастырайық, кейбір анықталмаған қолданушылар жиынына бізге математикалық функциялар тобын беру керек болсын. Тақырыптық файл келесідей :
extern double sqrt(double); // жиынүсті
extern double sin(double);
extern double cos(double);
extern double exp(double);
extern double log(double);
бұл функциялардың анықтамалары сәйкес файлдарда сақталған sqrt.c, sin.c, cos.c, exp.c и log.c.
math.h атты кітапхананы құруға болады, мысалы:
$ CC -c sqrt.c sin.c cos.c exp.c log.c
$ ar cr math.a sqrt.o sin.o cos.o exp.o log.o
$ ranlib math.a
Бірінші шығатын файлдар өздеріне эквивалентті обьектілік файлдарға компиляцияланады. Содан кейін math.a. атты архив құру үшін ar командасы қолданылады. Аяғында архив рұқсатты жылдамдату үшін индекстеледі.
Енді .o файлына қарағанда math.a файлының артықшылығы қандай екенін қарастырамыз, мысалы:
$ CC myprog.c sqrt.o sin.o cos.o exp.o log.o
Көптеген программалар үшін .o файлдарының дұрыс тобын анықтау оңай емес. Жоғарыда келтірілген мысалда олардың барлығы қосылған, бірақ егер функциялар myprog.c –да тек қана sqrt() және cos() функцияларын шақырса, онда бұл жеткіліксіз болады.
$ CC myprog.c sqrt.o cos.o
Бірақ бұл олай емес, cos.c sin.c-ны қолданғандықтан.
.a файлын өңдеу үшін СС командасымен шақырылған компоновщик .a файлдарды құру үшін қолданылған жиындағы сияқты тек қажетті .o файлдарды архивтан шығаруды біледі. Басқа сөзбен айтқанда, кітапхананы қолдана отырып бір аттың (имени) көмегімен көптеген анықтамаларды қосуға болады, және, сонымен қатар, нәтижесінде программаға анықтамалардың минималды санын қосуды қамтамасыз етеді.
Өзін-өзі тексеруге арналған сұрақтар
Модуль деген не?
Қандай стандартты модулдер бар және олар неге арналған?
8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995
2. Подбельский В.В., Фомин С.С. Программирование на языке СиЖ Учеб. пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание / Под ред. С.В. Симоновича. – СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984
15 апта
Тақырып 15. Графика
Дәріс жоспары
Экранмен жұмыс істеуге арналған графикалық режимдер.
Графикалық обьектілерді сызу.
Дәрістің қысқаша конспектісі
Графикамен жұмыс
1. Адаптер, адаптер типтері, драйверлер және режимдер түсінігі
Графикалық режимдегі кез келген бейне монитор экранында пикселдер жиынынан тұрады. Графикалық режимде монитордың жұмыс істеу мүмкіндігі графикалық адаптер деп аталатын арнайы электрондық сызбамен қамтамасыз етіледі. Адаптерлердің негізгі типтері: CGA, EGA, VGA SVGA. Графикалық адаптердің жұмысын драйвер деп аталатын арнайы программа іске асырады. Драйверлер BGI кеңейтіліміндегі файлдарда сақталады. Қолданылып отырған драйвер әр түрлі режимдерде қызмет ете алады.
Видеорежимдер
адаптер типі
| Режим | Түстің саны | Рұқсат етілген | драйвер файлы |
Константа аты
|
Константа мәні
|
CGA
|
1
|
CGAC0
|
4
|
320x200
|
CGA.BGI
|
CGAHi
|
2
|
640x200
|
EGA
|
3
|
EGALo
|
16
|
640x200
|
EGAVGA.BGI
|
EGAHi
|
16
|
640x350
|
VGA
|
9
|
VGALo
|
16
|
640x200
|
EGAVGA.BGI
|
VGAHi
|
16
|
640x350
|
Графикалық режимде монитор экранымен жұмыс істеуге арналған функцияларды қолдану үшін graphics.h тақырыптық файлын қосу керек.
2. Инициализация және графикалық режимнен шығу
Мүмкін графикалық режимдердің біреуін орнататын функция.
initgraph(&d,&m,p);
мұндағы d –драйверді береді, m –режимді береді, p – драйвер файлына жолды береді, яғни BGI кеңейтіліміндегі сәйкес файлға (Ескерту: Егер драйвер файлы ағымдағы каталогта болса, онда жол ретінде келесіні береді "").
Мысал:
initgraph(9,VGALo,"c:\");
Бұл функция 16 әр түрлі түстерді көрсету мүмкіндігімен 640х200 пикселді рұқсатымен режимді орнатады.
Ескерту: Сонымен қатар, Detect стандартты константасы бар. Оны драйвер түрінде көрсеткенде автоматты түрде қажетті драйверді және мониторға сәйкес келетін режимді орнатады.
Мысал:
Графикалық режимді инициализациялау
int d,m;
d=DETECT;
initgraph(&d,&m,"");
Графикалық режимнен шығу үшін closegraph функциясы қолданылады;
3. Координат жүйесі
Бейнені экранда бейнелеу үшін координат жүйесі қолданылады.
Графикалық режимде көрініп тұратын курсор жоқ, бірақ көрінбейтін ағымдағы нұсқағыш бар. Ағымдағы нұсқағыштың орынын ауыстыру үшін келесі функцияларды қолдануға болады:
moveto(x,y); - ағымдағы нұсқағышты (x,y)координатындағы нүктеге әкеледі
moverel(x,y); - ағымдағы нұсқағышты горизонтал бойынша х нүктеге, вертикал бойынша у нүктеге әкеледі.
Орнатылған режимге рұқсаты бар вертикал және горизонтал бойынша нүктелердің максималды санын анықтау үшін келесі функцияларды қолдануға болады:
getmaxx() – Орнатылған режим үшін х-тің максималды мүмкін мәнін анықтайды.
getmaxy() - Орнатылған режим үшін у-тің максималды мүмкін мәнін анықтайды.
4. Негізгі фигураларды құру
1. putpixel(x,y,c);
(x,y) координаттарымен нүкте салу, c түсті білдіреді.
2. Сызық салу
line(x1,y1,x2,y2);
(x1,y1)нүктесінен (x2,y2) нүктесіне дейін сызық сызады.
lineto(x,y);
ағымдағы көрсеткіштен (x,y)нүктесіне дейін сызық сызады.
Сызықтың түсі келесі функциямен беріледі
setcolor(c);
Сызықтың стилі келесі функциямен беріледі
setlinestyle(l,p,t);
l тұрған жерге сызықтың стилін береді;
Сызық стилдерінің кестесі
Константа аты
|
Константа мәні
|
Жазылуы
|
SolidLn
|
0
|
|
DottedLn
|
1
|
|
CrnterLn
|
2
|
|
DashedLn
|
3
|
|
UserBitLn
|
4
| Қолданушы типі |
t сызықтың қалыңдығын көрсетеді;
сызықтың қалыңдығының кестесі
Константа аты
|
Константа мәні
|
Жазылуы
|
NormWidth
|
1
|
орташа(1 пиксель)
|
ThickWidth
|
3
|
қалың (3 пикселя)
|
P үлгіні береді
Егер қолданушы стандартты стиль қолданылса, онда р-ның мәні 0-ге тең.
Егер қолданушы өз стильін қолданса, онда р-ның мәні 4-ке тең.
3. Төртбұрыш салу
rectangle(x1,y1,x2,y2);
Боялмаған тіктөртбұрыш салу, мұндағы
Төртбұрыштың сызығын бояу үшін setcolor функциясын қолданамыз, ал қалыңдығы мен стилін өзгерту үшін setlinestyle функциясын қолданамыз.
bar(x1,y1,x2,y2);
Боялған тіктөртбұрыш салу
Бояғанда келесі функциямен өрнектелетін шаблон және түс қолданылады:
setfillstyle(n,c);
мұндағы, n- толтыру стилі, c – түсі.
толтыру стилі кестесі
Константа аты
|
Константа мәні
|
жазылуы
|
EmptyFill
|
0
|
Фон түсімен боялады
|
SolidFill
|
1
|
Ағымдағы түспен боялады
|
LineFill
|
2
|
|
LtslashFill
|
3
|
|
SlashFill
|
4
|
|
BkslashFill
|
5
|
|
LtbkslashFill
|
6
|
|
HatchFill
|
7
|
|
XhatchFill
|
8
|
|
InterLeaveFill
|
9
|
|
WideDotFill
|
10
|
|
CloseDotFill
|
11
|
|
UserFill
|
12
|
Қолданушының анықтауы бойынша толтырылады
|
4. Параллелепипед салу
bar3d(x1,y1,x2,y2,d,t);
мұндағы,
d үш өлшемді контурдың тереңдігін береді, t тік төртбұрышты параллелепипедке төбені қосу(t=1) керек пе, жоқ (t=0) па соны анықтайды.
Сызықтың түсі setcolor функциясымен анықталады. Сызықтың стилі setlinestyle функциясымен анықталады. Бояудың стилі мен түсі setfillstyle функциясымен анықталады.
5. Дөңгелек,дога,, эллипс салу
circle(x,y,r);
радиусы r, центрі (x,y) нүктесінде орналасқан дөңгелек салу.
түс setcolor функциясымен беріледі.
arc(x,y,b,e,r);
b бастапқы бұрыштан e соңғы бұрышына дейін,
радиусы r, центрі (x,y) нүктесінде орналасқан
дога салу.
Ескерту: Егер b=0, e=360 болса, онда дөңгелек сызылады.
ellipse(x,y,b,e,xr,yr);
b бастапқы бұрыштан e соңғы бұрышына дейін(x,y) нүктесінде центрі орналасқан эллипс салу, xr – X бойынша радиус, yr –Y бойынша радиус.
6. Бояу түсі және фон түсі
setbkcolor(c);
Графикалық режимде фонның түсін анықтайды.
cleardevice();
Графикалық режимде экранды тазалау функциясы.
floodfill(x,y,c);
setfillstyle функциясымен анықталатын ағымдағы түспен және толтыру стилімен белгіленген аймақты бояйды.
(x, y) – белгіленген аймақтың ішінде орналасқан нүкте, c – белгіленген аймақтың шекарасының түсі.
7. Графикалық режимде мәтін шығару
outtext(s);
Нұсқағыштың ағымдағы орынынан бастап мәтіннің жолын шығарады.
s – жолдық типтің айнымалысы немесе тұрақтысы.
outtextxy(x,y,s);
(x, y) – мәтіннің басы орналасатын нүкте.
Ескерту: Экранға сандық берілгендерді шығару үшін алдымен санды жолға айландыру қажет.
Өзін-өзі тексеруге арналған сұрақтар
Экранмен жұмыс істеуге арналған қандай графикалық режимдер бар?
Графикалық обьектілерді сызуға арналған қандай функциялар бар?
8.1. Негізгі әдебиеттер
1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995
2. Подбельский В.В., Фомин С.С. Программирование на языке СиЖ Учеб. пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999
3. Информатика. Базовый курс. 2-е издание / Под ред. С.В. Симоновича. – СПб.: Питер, 2005
8.2. Қосымша әдебиеттер
1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000
2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984
2. практикалық сабақ
1 апта
№1, №2 практикалық сабақ
1 тақырып. Дербес компьютердің программалық құралдары
2 тақырып. Программалаудың методологиясы
Сабақтың мақсаты:
Түсініктермен танысу:
программалық қамтамасыз ету;
ПҚ түрлері;
программалау тілі;
программалау тілдерінің классификациясы;
трансляция, трансляторлар: компиляторлар, интерпретаторлар;
программалау тілдерінің ұрпағы;
алгоритмдік программалау;
обьектілі-бағытталған программалау;
программалау жүйелері;
программаны өңдеу этаптары.
Түсінікті қайталау:
алгоритм;
алгоритм қасиеті;
алгоритмдерді жазудың әдістері;
алгоритм типтері.
Практикалық сабаққа дайындалуға арналған сұрақтар
программа деген не?
ДК дің ПҚ-уы деген не?
ПҚ-дың қандай түрлері бар?
Программалау тілі деген не?
"төмен дәрежелі тіл" және "жоғары дәрежелі тіл" терминдерінің мағынасын анықта?
Трансляция, трансляторлар деген не?
компиляторлар мен интерпретаторлардың айырмашылығы?
Прогаммалау тілдерінің қандай ұрпақтары бар?
Программалау жүйесі деген не?
Программаны өңдеудің қандай этаптары бар?
Алгоритмдік программалау деген не?
Құрылымдық программалау деген не?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программаны өңдеуге арналған техникалық тапсырма.
Программаны техникалық проектілеу этабы.
Алгоритмдердің құрылымдық сызбасын өңдеу.
Берілгендерді ұйымдастыру.
2 апта
№3, №4 практикалық сабақ
3 тақырып. Программалау технологиясының негізі
Сабақтың мақсаты:
1Түсініктермен танысу:
ПҚ-ды проектілеу әдісі;
құрылымдық программалау;
модульдік программалау;
программалау стилі;
жөндеу және программаны сынақтан өткізу
программаның сапасын бақылау.
Практикалық сабаққа дайындалуға арналған сұрақтар
Құрылымдық программалау деген не?
Программалаудың экономикалық аспектілері қандай?
өңдеу периодына қандай этаптар кіреді?
Программаның сапасын тексеру этабында не болады?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
СОӨЖ, СӨЖ сұрақтары
Программаны құжаттау.
ГОСТ пен мақұлданған программалық құжаттау түрі.
Программалық құжаттаудың бірлік жүйесі.
3 апта
№5, №6 практикалық сабақ
4 тақырып. Си тілінің жалпы сипаттамасы. Си программалау жүйесіне кіріспе.
Сабақтың мақсаты:
Си тілінің алфавитімен танысу.
Түсініктермен танысу:
идентификатор;
айнымалылар және константалар;
берілгендер типі;
препроцессор директивалары.
Си тілінің берілгендерінің стандартты типтерімен танысу.
Берілгендер типін анықтауды үйрену.
Си тіліндегі программаның құрылымымен танысу.
Си программалау жүйесі ортасында жұмыс істеуге үйрену .
Практикалық сабаққа дайындалуға арналған сұрақтар
Си тілінің алфавитіне қандай символдар кіреді?
Идентификатор деген не? Идентификаторларды рәсімдеудің қандай ережелері бар?
Константа деген не?
Айнымалылар деген не?
Си тілінде берілгендерінің қандай стандартты типтері бар?
Препроцессор директивасы деген не? Препроцессордың қандай директивасы бар ?
Си тіліндегі программаның құрылымы қандай?
Си программалау жүйесінің файылдарының құрамы қандай?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
4 апта
№7, №8 практикалық сабақ
5 тақырып. Меншіктеу операторы. Енгізу-шығаруды ұйымдастыру.
Сабақтың мақсаты:
Түсініктермен танысу:
өрнек;
операциялар;
меншіктеу операциялары;
стандартты функциялар.
Си тілінде математикалық өрнектерді жазуды үйрену.
Логикалық өрнектердің мәнін анықтауды үйрену.
Түсініктермен танысу:
оператор;
операторды жазу форматы.
Меншіктеу операцияларын, енгізу функцияларын, шығару функцияларын қолдануды үйрену.
Сызықты құрылымды программаларды құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Өрнек деген не?
Берілгендерге қандай операциялар қолданылады?
Қандай меншіктеу операциялары бар?
Меншіктеу операторының жазылу форматы мен тағайындауы қандай?
Типтерді келтірудің қандай түрлері бар?
Берілгендерді енгізу және шығару деген не?
Қандай енгізу функциялары бар?
Қандай шығару функциялары бар?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Есептеу жүргізу үшін қандай формулаларды қолдануға болады:
ctg x
arcsin x
arccos x
arcctg x
loga x
5 апта
№9, №10 практикалық сабақ
6 тақырып. Шартты және шартсыз өту операторлары
Сабақтың мақсаты:
Түсініктермен танысу:
Операторларды қолданудың жазу форматымен және ережесін тағайындаумен танысу:
goto
if…then…else…
таңдау операторы
тармақталған құрылымдағы программаны құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
тармақталған алгоритм деген не?
Белгі деген не?
goto шартсыз өту операторының тағайындалуы және жазылу форматы қандай?
if… шартты өту операторының тағайындалуы және жазылу форматы қандай?
Қысқа формада жазылған шартты өту операторы қалай жұмыс істейді?
Толық формада жазылған шартты өту операторы қалай жұмыс істейді?
Қарапайым оператор деген не?
Құрама оператор деген не? Құрама оператор не үшін қолданылады?
Таңдау операторының тағайындалуы және жазылу форматы қандай?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Кездейсоқ өлшем түсінігі.
Кездейсоқ өлшеммен жұмыс істеуге арналған процедуралар мен функциялар.
6 апта
№11, №12 практикалық сабақ
7 тақырып. Цикл операторлары
Сабақтың мақсаты:
Жазу форматымен және операторларды қолдану ережесімен, тағайындауымен танысу:
Циклдік құрылымдағы программа құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Циклдік алгоритм деген не?
Шарты алдын ала берілген циклдік операторының тағайындалуы мен жазылу форматы қандай? Шарты алдын ала берілген циклдік операторы жұмысының блог –схемасын қалай көрсетуге болады?
Шарты соңынан берілген циклдік операторының тағайындалуы мен жазылу форматы қандай? Шарты соңынан берілген циклдік операторы жұмысының блог –схемасын қалай көрсетуге болады?
Параметрлік цикл операторының тағайындалуы мен жазылу форматы қандай? Параметрлік цикл операторының жұмысының блог –схемасын қалай көрсетуге болады?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
7 апта
№13, №14 практикалық сабақ
8 тақырып. Функции
Сабақтың мақсаты:
Ішкі программа ұғымымен танысу.
Функцияны жазу ережесімен танысу.
Түсініктермен танысу:
Формалды және фактлік параметрлер;
Глобальді және локальді айнымалылар.
Негізгі программаға функцияны шақыру әдістерімен танысу.
Ішкі программаны қолдану арқылы программа құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Ішкі программа деген не?
Функция деген не?
Функцияны қалай жазады?
Негізгі программаға функцияны шақыруды қалай жүзеге асырады?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
TP және Си программаларының қолданылуын салыстыру.
8 апта
№15, №16 практикалық сабақ
9 тақырып. Жады кластары
Сабақтың мақсаты:
Түсініктермен танысу:
Жады кластары;
Автоматты айнымалылар;
статистикалық айнымалылар;
сыртқы айнымалылар;
регистрациялық айнымалылар;
нұсқағыштар және адрестік арифметика.
Жадының әр түрлі класының обьектілерімен программа құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Жадының қандай кластары бар?
Автоматты жады деген не?
Динамикалық жады деген не?
Статистикалық ішкі жады деген не?
Жады кластарының қандай спецификациясы қолданылады?
Автоматты айнымалы деген не?
Статистикалық айнымалы деген не?
Ішкі айнымалы деген не?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.
9 апта
№17, №18 практикалық сабақ
10 тақырып. Берілгендердің күрделі типі: массивтер
Сабақтың мақсаты:
Түсініктермен танысу:
массив;
массивті;
массивті жазудың әдістері.
Бір өлшемді массивті қолдану арқылы программалар құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Массив деген не?
Массивтің өлшемі деген не?
Программада бір өлшемді, екі өлшемді массивтерді қалай жазамыз?
Массив элементіне қалай рұқсаталамыз?
Массивті қалай толтырамыз?
Массивті экранға қалай шығарамыз?
бір өлшемді массив және нұсқағыштар.
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.
10 апта
№19, №20 практикалық сабақ
10 тақырып. Берілгендердің күрделі типі: массивтер
Сабақтың мақсаты:
Берілгендер типімен танысу: шектелген, диапазондық.
Шектелген және диапазондық типтердің жазылу әдісімен танысу .
Түсініктермен танысу:
массив;
массивтің өлшемі;
массивтің жазылу әдісі.
Бір өлшемді массивті қолдану арқылы программалар құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Екі өлшемді массив қалай жазылады?
Екі өлшемді массивтің элементіне қалай рұқсат аламыз?
Екі өлшемді массивті қалай толтырады?
Екі өлшемді массивті экранға қалай шығарады?
Екі өлшемді массивке нұсқағыш қалай қолданады?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.
11 апта
№21, №22 практикалық сабақ
11 тақырып. Жолдар
Сабақтың мақсаты:
Жолдық берілгендермен танысу.
Жолдық берілгендерді жазудың әдісмен танысу.
Жолдармен жұмыс істеуде стандартты функциялармен танысу.
Жолдық берілгендерді қолдану арқылы программа құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Жол деген не?
Жолды программада қалай жазуға болады?
Жолды берілгендерде қандай операциялар рұқсат етілген?
Жолдың жеке символына қалай рұқсат алуға болады?
Жолдармен жұмыс істеуге арналған қандай функциялар бар?
Екі жолды қалай салыстырады?
Жолдық айнымалыға мәнді қалай меншіктейді?
Жолдың ұзындығын қалай анықтайды?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.
12 апта
№23, №24 практикалық сабақ
12 тақырып. Берілгендер құрылымы
Сабақтың мақсаты:
Берілгендердің құрылымдық типімен және осы типтің прогрммада жазылуымен танысу.
Құрылымды пайдалану арқылы программа құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Берілгендердің құрылымдық типі қайда қолданылуы мүмкін?
Құрылымды қалай анықтайды?
Құрылымды жазу типі мен құрылымдық айнымалының арасындағы айырмашылық неде?
Құрылым элементіне қалай?
Құрылымда бір типтің элементтері болуы мүмкін бе?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.
13 апта
№25, №26 практикалық сабақ
13 тақырып. Файлдар
Сабақтың мақсаты:
Файл түсінігімен танысу.
Файлдармен жұмыс істеу функцияларымен танысу.
Ішкі файлдарды қолдану арқылы программа құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Файл деген не?
Берілгендер файлын өңдеу үшін қолданудың қандай артықшылықтары бар?
Программаларда файлға нұсқағыш не үшін қолданылады?
Файлдың ашылуы және жабылуы қалай орындалады?
Файлдармен жұмыс істеу үшін қандай енгізу және шығару функциялары бар?
Файлды жаңа берілгендермен қалай толықтырады?
Файлдардың тестілік және екілік форматтары.
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.
14 апта
№27, №28 практикалық сабақ
14 тақырып. Модулдер
Сабақтың мақсаты:
Модуль және стандартты модуль ұғымымен танысу.
Практикалық сабаққа дайындалуға арналған сұрақтар
Модуль деген не?
Қандай стандартты модульдер бар және олар неге арналған?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
TP және Си модульдерінің қолданылуын салыстыру.
Программа құру.
15 апта
№29, №30 практикалық сабақ
15 тақырып. Графика
Сабақтың мақсаты:
Графикалық бейнелерді салуға арналған функциялармен танысу.
Графикалық бейнелерді салу және қозғалту программаларын құруды үйрену.
Практикалық сабаққа дайындалуға арналған сұрақтар
Экранмен жұмыс істеуге арналған қандай графикалық режимдер бар?
Графикалық обьектілерді сызуға арналған қандай функциялар бар?
Сабақтың жүруі:
Сабақ тақырыбы бойынша теориялық сұрақтарды қарастыру.
Сабақ тақырыбы бойынша практикалық тапсырмаларды орындау.
СОӨЖ, СӨЖ сұрақтары
Программа құру.
3. студенттердің өздік жұмыстары тақырыптарының тізімі:
СОӨЖ тапсырмалары
СОӨЖ №1. Программаны өңдеуге арналған техникалық тапсырма.
СОӨЖ №2. Программаны техникалық проектілеу этабы.
СОӨЖ №3. Алгоритмдердің құрылымдық сызбасын өңдеу.
СОӨЖ №4. Берілгендерді ұйымдастыру.
СОӨЖ №5. Программаны құжаттау.
СОӨЖ №6. мақұлданған программалық құжаттау түрі.
СОӨЖ №7. Программалық құжаттаудың бірлік жүйесі.
СОӨЖ №8. Есептеу жүргізу үшін қандай формулаларды қолдануға болады:
Сандардың дәрежесі;
ctg x
arcsin x
arccos x
arcctg x
loga x
СОӨЖ №9. Кездейсоқ өлшем түсінігі.
СОӨЖ №10. Кездейсоқ өлшеммен жұмыс істеуге арналған процедуралар мен функциялар.
СОӨЖ №11. TP және Си программаларының қолданылуын салыстыру.
СОӨЖ №12. Программа құру.
СОӨЖ №13. Программа құру.
СОӨЖ №14. Программа құру.
СОӨЖ №15. Программа құру.
СӨЖ тапсырмалары
СӨЖ 1. Сызықтық программалау есебі түсінігіне анықтама беру.
СӨЖ 2. Конструктивті және сапалы есептер.
СӨЖ 3. Берілгендер түсінігі.
СӨЖ 4. Ақпарат туралы түсінік.
СӨЖ 5. Ақпарат моделі.
СӨЖ 6. Ақпарат типі. Ақпарат өлшемі.
СӨЖ 7. Түрлендіру: логикалық, структуралық, процедуралық
СӨЖ 8. Представление знаний правилами и логический вывод.
СӨЖ 9. Білім тілі
СӨЖ 10. Объектті-бағыттау программалауда берілгендер және білім анықтамалары
СӨЖ 11. Білім технологиясы
СӨЖ 12. Білім түсінігі проблемасы
СӨЖ 13. Берілгендермен білімнің арасындағы қатынас
СӨЖ 14. Білім түсінігін құру
“Программалау тілдерінің технологиясы” пәні бойынша емтиханға дайындалуға арналған сұрақтар тізімі.
Дербес компьютердің программалық ортасы.
Программалау әдісі.
Программалау технологиясының негізі.
Си тілінің жалпы сипатталуы. Си программалау жүйесіне кіріспе.
Меншіктеу операторы. Енгізу-шығаруды ұйымдастыру.
Шартты және шартсыз өтуоператорлары.
Цикл операторлары.
Функциялар.
Жады кластары.
Берілгендердің күрделі типі: массивтер.
Жолдар.
Берілгендердің құрылымы.
Файлдар.
Модулдер.
Графика.
Достарыңызбен бөлісу: