Қарапайым программаның құрылымы мен компоненттері


Препроцессор

Препроцессор – программа мәтінін оның компиляциясына түрлендіретін транслятордың арнайы компоненті.

Препроцессорлы өңдеудің ережесін программист препроцессор дерективасы көмегімен анықтайды.  Препроцессордың әр  дерективасы '#' символынан басталады.  Программаның әр жолында тек бір ғана деректива болады. Препроцессор программаның мәтінін түрлендіру әрекетін анықтайтын дерективаны іздеп программаның негізгі мәтінін "сканерлейді".

Программаның мәтіні

            Си тіліндегі әр программа препроцессорлық дерективалардың, сипаттамалардың және глобальді обьектілерінің кезектілігі. Препроцессорлық дерективалар программа мәтінін оның компеляциясына дейін түрлендіруді басқарады.  Анықтамалар функциялар мен обьектілерді енгізеді.  Объектілер программада берілгендерді өңдеуді жариялауда қажет. Функциялар программаның потенциялды мүмкін әрекеттерін анықтайды. Сипаттау программаның басқа бөлігінде (мысалы, оның мәтінінен төменде немесе басқа файлда) анықталған обьектілер мен функциялардың аты мен қасиетін компиляторға ескертеді.

 Си тіліндегі программа бір немесе бірнеше мәтіндік файл түрінде рәсімделуі керек. Мәтіндік файл жолдарға бөлінген.

Программа құрылымы. Программа мәтінінде препроцессорлы өңдеуден кейін бір де бір препроцессорлы деректива қалмайды.Енді программа сипаттамалар мен функциялар жиынынан тұрады. Бұл функциялардың арсында әрқашан фиксирленген main функциясы болуы керек.  Осы функция онсыз программа орындалмайтын программаның негізгі функциясы болып табылады. Бұл негізгі функцияның аты барлық программа үшін бірдей (әрқашан main ) және өз бетінше таңдалына алмайды. Сөйтіп, программаның негізгі мәтіні қарапайым жағдайда (программа бір ған функциядан тұрған жағдайда ) келесідей:

Препроцессор директивасы

main( )

{

Обьектілерді _ сипаттау;

Орындалатын _операторлар;

}

Препроцессордың дерективалары тек программаның басында ғана орналаспайды. Олар қажеттілік жағдайында программа мәтінінің кез келген бөлігінде орналаса алады. Бірақ, жұмыс істеуге арналған тақырыптық файлдарды  программаның мәтінінің басында орлаластыру ұсынылады.

#include <...> дерективасы программаның мәтініне компилятордың стандатты библеотекасымен бірге берілетін  "тақырыптық файлы " каталогынан файл мәтінін қосуға арналған.

Си тілінің стандартымен анықталған әр библеотекалық функция сәйкес библеотекалық функция прототипін сипаттаудан плюс бір тақырыптық фйлдардың ішіндегі типтер, айнымалылар, макросипаттамалар, тұрақтылар  сипаттамасынан тұрады.  Стандартты библеотекалар үшін тақырыптық файлдар тізімі тілдің стандартымен анықталған. Программада 

#include <тақырыптық_файл_аты >

препроцессорлы дерективасын қолдану программаға сәйкес стандартты библеотекасын қоспайды.Препроцессорлық өңдеу программаның негізгі мәтіні дәрежесінде орындалады.  #include  дерективасы программаның мәтініне нұсқалған тақырыптық файлдан сипаттауды қоюға мүмкіндік береді.Программаға библеотекалық функциялар кодын қосу байланыстарды редактрлеу сатысында, компиляциядан кейін, яғни, программаның машиналық коды алынғаннан кейін орындалады (компановка сатысы)  .Стандартты библеотекалардың библеотекалық  функцияларын сипаттаудан тұратын,  файлдарда қолданылатын "тақырыптық  файл" (header file) термині кездейсоқ емес. Ол бұл файлдарды программаның басында іске қосуды, яғни, сәйкес библеотекаларға ертерек байланысуды жөн көреді.

Программаның  әр  функциясының атының алдында функция қайтаратын мәннің типін  (нәтиже типін) көрсету керек.  Егер функция ештеме қайтармаса, онда void типі көсетіледі. main()  функциясы  операциондық жүйе командасымен орындалуға жіберілетін программаның функциясы  болып табылады.  main()  функциясымен қайтарылатын мән операциондық жүйеге беріледі. Егер программист операциондық жүйе оның програмасының орындалу нәтижесін талдайды деп санамаса, онда қайтарылатын мін жоқ деп көрсетуі керек,  яғни void типті. Егер нәтиже типі жоқ болса, онда үнсіздік бойынша    main функциясы int типті бүтін санды қайтарады.

Си тіліндегі әр функция (сонымен бірге mainпараметрлер терілімінен тұрады. Бұл жиын бос болуы да мүмкін, ондай жағдайда жақш ішіндегі функция атынан кейін void қызметтік сөзі жазылады немесе жақша бос қалады.Қарапайым функциялардан қарағанда  main() негізгі функциясы параметрлермен де оларсыз да жазыла алады. main() функциясының параметрі берілгендерді орындалу ортасынан құралдардан өтіп, енгізу-  шығару стандартты функциясынан орындалу программасына беруді ұйымдастырады. Функцияның денесі – фигуралық жақшаларға алынған, сипаттамалар, анықтамалар және орындалатын  операторлар кезектілігінен тұратын  блог. Әр анықтама, сипаттама және әр оператор ';'  символымен аяқталады. Анықтамалар программада берілгендерді өңдеуді жариялауға қажетті обьектілерді енгізеді. Бұндай обьектінің мысалы ретінде атаулы тұрақтылар және түрлі типтегі айнымалылар.Анықтамалар компиляторға программаның басқа бөлімінде анықталған  функциялар мен обьектілердің аты мен сипаттамаларының қасиетін ескертеді. Операторлар программаның әр орындалу қадамындағы   әрекетін анықтайды.