С/С++ тіліндегі программаның жалпы құрылысы. Препроцессор директивалары туралы талдап көрсетіңіз
Си тіліндегі кез-келген программа main функциясынан тұрады. Мұның орындалу барысында басқа функциялар шақырылады. Функциялар арасындағы байланыс параметрлер арқылы беріліп функция мәнін қайтарып алу арқылы жүзеге асады. Сонымен қатар, Си тілінің компиляторында мәселені бірнеше бөлікке - файлдарға бөліп, әрқайсысын жеке-жеке трансляциялап, сосын оларды жеке бір орындалатын файлға, жинау мүмкіндігі бар. Жинақтау байланыс редакторының көмегімен жүзеге асырылады. Программа құрылымы: Кез-келген программа комментарийден басталады. Комментарийді Си тілінде «/*» , «*/» белгілеріне алынып жазылған блок түрінде беруге болады. Содан кейін препроцессор дерективасы орналасады. Препроцессор директивасы берілгенде кітапханалық файлда –тақырыптық файлда орналасқан кодты программаға қою нұсқауын береді. Мұндағы .h кеңеймелі файлдар тақырыптық файлдар деп аталады. Тақырыптық файлдарда әртүрлі тұрақты мен таулар сипатталады. Функциялар прототиптері сақталады. Препроцессор дерективасынан кейін main функциясы сипатталған бөлігі орналасады. Main функциясы барлық программада міндетті түрде болуы тиіс, одан программа орындалуы басталып, Return инструкциясы шақырылғанда аяқталады. Main функциясының денесі фигуралық жақшада орналасады. Си тілінде барлық айнымалы оған программаның қандайда бір бөлігінен сілтеме жасалғанға дейін сипатталуы тиіс. Препроцессор директивалары Си тілінде жазылған программа текстінде кездесетін инструкциялар (нұсқаулар) препроцессор директивасы (ПД) деп аталады. Олар программа трансляцияланғанға дейін орындалады және программаның текстін өзгертуге мүмкіндік береді. Мысалы текстегі кейбір лексемдерді өзгерту, басқа файлдан мәтінді қосу, мәтіннің қандай да бір бөлігін орындауға, трансляциялауға шектеу қою т.б. Барлық препроцессор директивасы «#» таңбасымен басталады және соңынан нүктелі үтір (;) қойылмайды. Түрлері: 37 1) #include директивасы. Бұл программаға көрсетілген файлдағы мәліметтерді қосады. Бұл директиваның екі формасы бар: #include “файл аты“ # include Мұндағы, «Файл аты» операциялық жүйелер талабына сай көрсетіледі, яғни тек файл атынан немесе оның маршрутымен алынған атауынан тұруы мүмкін. Егер «файл аты» тырнақшада берілсе, онда файл сәйкес көрсетілген маршрутпен анықталатын орыннан, ал ол көрсетілмесе жұмысшы каталогтан ізделеді. Егер файл аты бұрыштама жақшада (< >) берілсе, онда файл операциялық жүйенің PATH командасы арқылы берілген, стандартты директориясынан ізделеді. #include директивасы іштестірілген болуы мүмкін, яғни қосылатын файлда тағы кездесуі мүмкін. Көбінесе бұл программаға тақырыптық файлдарды қосу үшін қолданады, яғни стандартты кітапханалық функциялар прототиптерінен тұратын файлдарды қосуға мүмкіндік береді. Сондықтан С тіліндегі программа осы директивадан басталады. 2) #define директивасы. #define – директивасы жиі қолданылатын тұрақтыларды, қызметші сөздерді, операторларды және өрнектерді кейбір идентификаторлармен ауыстыруға мүмкіндік береді. Сандық немесе текстік тұрақтыларды ауыстыратын идентификаторларды атаулы тұрақтылар (именованные константы) деп атайды. Программа фрагменттерін алмастыратын идентификаторларды (макроопределения) макроанықтамалар деп атайды. #define екі формасы бар: #define #define (программалар тізімі тексті) Мысалы, #define WIDTH 80 #define LENGTH (WIDTH+10) бұл директивалар программа текстіндегі әрбір WIDTH сөзін 80 санына, ал LENGTH сөзін (80+10) өрісіне ауыстырады. Макроанықтамалардағы жақшалар олардағы алмастырудың орындалу ретін анықтауға мүмкіндік береді. Мысалы, жақша болмаса мына өрнек: t=length+7 мынадай t=80+10*7 өрнекке ауыстырылады, ал қажетісі t=(80+10)*7 болатын, сондықтан жақша қойған дұрыс. 2-ші формасында формалды параметрлер тізімі көрсетіледі, мұнда тізім үтір арқылы ажыратылып көрсетіледі, және макроанықтама текстіндегі алатын позициясын анықтайды. Шақырғанда идентификатордан кейін формалды параметрлер санына сәйкес нақты аргументтер көрсетілуі тиіс.