Алфавит, базалық типтері және деректерді сипаттау
Тілдің алфавитіне ДЭЕМ стандартты пернелік тақтасында болатын барлық символдар енеді.
• A...Z, a...z латын әріптері;
• 0...9 сандары;
• операциялар таңбалары және бөлгіштері.
{}[]().,->&* + - ~ !/%?:; = <> | # А
Кейбір операциялар символдардың комбинацияларымен белгіленеді, операциялар символдарының шамасы біршама жағдайда колданатын контекстке байланысты болады.
Деректердің базалық (алдын-ала анықталған) типтері екі топқа бірі ктірілген: бүтін типтегі деректер және өзгермелі нүктемен деректер (бөлшекті).
Бүтін типтің деректер (signed) таңбасы бар және (unsigned) таңбасы жоқ кәдімгі бүтіндер. Деректі көрсету үшін (шамаларды диапазонына) қолданатын разрядтардың саныбойынша кәдімгі бүтіндер (int), қысқа бүтіндер (sһоrt int) және ұзын бүтіндер (long int) болып бөлінеді. Символды деректер (char) бүтіндер сияқты қаралады, таңбамен және таңбасыз болады.
Айнымалының const сипаттамасымен жарияланған идентификаторын жариялағанда анықталған шамадан басқаны беруге болмайды. Константаны жариялағанда инициализацияланған шамалар міндетті болып табылады.
Программада программистермен анықталатын типтердің деректері жарияланады және қолданылады, мысалы, нұсқауыштар, сілтемелер, деректер агрегаттары, деректердің санап -шығу типтері.
№4 лекция. Си-де Си++- ке қосымшалар. Функциялар. Си++ қосымшасы. Орындаудың уақыт библиотекасы (Run-time library)
Деректердің базалық типтерінің шамалы жиынтығына қарамастан (бүтін және бөлшекті арифметикалық деректер және жолдық литералды) C++ тілінде деректермен операция жасаудың көлемді жиынтығы анықталған, олардың ішіндегі бөліктер тікелей машиналық командаларға сәйкес келеді. Барлық программалау тілдері сияқты операциялар өрнектерді құру үшін қызмет атқарады. Өрнектер операндтардың реті және операциялардың белгілері болып табылады және кейбір шамаларда есептеу үшін қызмет аткарады.
Жоғарыда көрсетілген негізгі операцияларды қолдану ерекшеліктерін қарайық.
"::" (екі кос нүкте ) программада екі бірдей ат белгілі болған жағдайда сол жердегі программа объектінің атын анықтау үшін қолданады, мысалы, егер бір ат глобалды, ал екіншісі ат функцияның ішінде жарияланған. Егер бір атқа екі қос нүкте келетін болса, онда бұл глобалды ат болады.
анықтауға мүмкіндік жасады. Жаңаша орнектерді мына түрде (x=2)*(y=3)+(z=4) құруға болады, бірақ бұл программаның көрнектілігін төмендетеді. Осы орнектің нәтижесі 24-тең болады, бірақ сол уақытта айнымалылар x,y,zжаңа шамалар алады.
Жай беруден басқа да құрамдас операциялардың жиынтығымен беру де болады, бұнда беру өрнегі екі орынды операциямен бірігеді. х+=у жазуы х=х +у өрнегіне эквивалентті. Бүтін операндтар үшін солға және оңға жылжу операциясы анықталған. Операция el<<2 орындағанда бірінші операндының биттері солға elразрядына жылжиды және бірінші операндтың типі болады, босатылған оң разрядтар нольмен толтырылады. el>>e2 оңға жылжығанда, егер elunsignedтипі болса, босатылған сол разрядтар нольмен толтырылады, алsignedтипінің el босатылған сол разрядтарына белгіленген разрядтар қайталанады.
Бүтін операндыларының үстінен разрядты логикалық көбейту , логикалық қосу және шығарып тастайтын (немесе бір шамалылық жаққа шығару) операциялары болу мүмкін. Бұл операцияларда операндтар биттердің реті түрінде қаралады және операция екі
операндпен сәйкес разрядтың әр жұбының үстінен орындалады. Мысалы, өрнектің ( х >> ( р - п + 1 ) ) & ( ~(~0 <<п )) нәтижесі ретінде нөмірі р биттен бастап, бүтін unsigned х-тен п биттерді белгілеу және белгіленген биттерді оңға жылжуы көрсетіледі.
C/C++ -де шартты өрнек деп аталатын конструкция бар. Шартты өрнек схема бойыша құрылады:
шарт ? өрнек 1: өрнек 2;
Кезкелген скалярлы өрнек шартты өрнек ретінде бола алады. Егер шартты өрнектің есептеу нәтижесі нольге тең емес болса, онда барлық өрнектің шамасы - 1 болады, шартты өрнектің нольдік шамасында барлық өрнектің шамасы - 2 болып анықталады, Шартты өрнектің екінші және үшінші операндтары не екі арифметикалық тип, не біртипті құрылымдар немесе біріктірмелер, не бірдей типтің нұсқауыштары, не біреуі бір типке нұсқауыш, ал екіншісі операнд - NULL немесе void* типі болады.
х > 0 ? 1 : 0 - өрнегі 1 қайтарады, егер х нөлден үлкен болса, қарама-қарсы жағдайда 0 қайтарады.
Өрнек үтірмен бөлінген өрнектердің реті түрінде болады. Бұл жағдайда барлық өрнектер солдан оңға қарай есептеледі және тізімдегі соңғы өрнектің шамасы қайтарылады. Мысалы, өрнектің х = 2, е * 3, х +1 нәтижесінде шама 3 алынады және х шамасы 2 болады. Көбейту е * 3 нәтижесі пайдаланбайды.
2.5. Си/Си++ операторлары
Операторлар - бұл синтаксистік конструкция, ол программада орындалатын істерді анықтайды. С /С++-де келесі операторлардың типтері бар: оператор-өрнектер, таңдау операторлары, цикл-операторлар және өткізу-операторлар. Кейбір операторлардың синтаксисіістердің сол немесе басқа орындау ретін таңдайтын жағдайларға қызмет атқаратын өрнектерден тұрады. С -де булевалық өрнектер жоқ болғандықтан, жағдайлар ретінде скалярлық шамалар беретін кезкелген өрнектер қолданылады, егер осы шамалар нөльге тең емес болса, жағдай орындалды деп саналады, егер ол нөльге тең емес болса, жағдай орындалмайды. Бірнеше операторлар фигуралық (операторлық) жақшамен қоршалып , бір құрамдас операторға, жинақталады. Оператордың бітуінің белгісіне (құрамдас оператордан басқа) нүкте үтір қызмет атқарады, бұл жағдайда ол оператордың бөлігі болып табылады. Кез келген оператордың алдында идентификатор түрінде қос нүктемен бөлініп таңба қойылады. Таңба, тек өткізу операторында, оны көрсету үшін қолданылады. Ең қарапайым түрі нүкте үтірмен бітетін толық өрнекті көрсететін оператор-өрнек болып табылады, мысалы, х = 3; у = (х +1) * t; i++;
Оператор түрінде жасалған өрнек есептеледі, бірақ оның шамасы жоғалады және өрнек-оператордың ісі есептеуді алып жүретін қосымша эффекттерден тұрады. Мысалы, меншіктеу, автоүлкею, автокішірею операцияларын орындау.
С/С++-де таңдау операторлары шартты-оператор және ауыстырмалы қосқыштан тұрады. Шартты-оператор программалаудың басқа тілдерінің шартты-операторларымен ұқсас болады, қысқарған және толық түрде қолданыла алады, оған сәйкес келесі схемалар болады: