Программа бұл компьютерді басқаруға қажетті командалардың логикалық реттелген тізбегі



бет6/7
Дата16.06.2016
өлшемі0.88 Mb.
#138775
түріПрограмма
1   2   3   4   5   6   7

Әрбір ОЖ-де сәйкес тақырыптық файлды енгізу байланысы үшін графикалық функция кітапханасы бар. #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 файлдарды архивтан шығаруды біледі. Басқа сөзбен айтқанда, кітапхананы қолдана отырып бір аттың (имени) көмегімен көптеген анықтамаларды қосуға болады, және, сонымен қатар, нәтижесінде программаға анықтамалардың минималды санын қосуды қамтамасыз етеді.



Өзін-өзі тексеруге арналған сұрақтар

  1. Модуль деген не?

  2. Қандай стандартты модулдер бар және олар неге арналған?

8.1. Негізгі әдебиеттер

1. Нейбауэр А. Моя первая программа на С/С++ /Перев. с англ. – СПб: Питер, 1995

2. Подбельский В.В., Фомин С.С. Программирование на языке СиЖ Учеб. пособие. – 2-е доп. изд. – М.: Финансы и статистика, 1999

3. Информатика. Базовый курс. 2-е издание / Под ред. С.В. Симоновича. – СПб.: Питер, 2005

8.2. Қосымша әдебиеттер

1.Дейтел Х., Дейтел П. Как программировать на Си. – М.: Бином, 2000

2. Мейер Б., Бодуэн К. Методы программирования. Т. 1 и 2. – М.: Мир, 1984


15 апта



Тақырып 15. Графика
Дәріс жоспары

  1. Экранмен жұмыс істеуге арналған графикалық режимдер.

  2. Графикалық обьектілерді сызу.


Дәрістің қысқаша конспектісі

Графикамен жұмыс

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


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




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

    Басты бет