Құрамы Мәліметтердің базалық типтері мен олардың көлемі



Дата20.12.2019
өлшемі55,77 Kb.
#53881
Байланысты:
Жулдыз С тілі туралы жалпы мағлұматтар

Мазмұны

 

Кіріспе



І бөлім. С++ тілі туралы жалпы мағлұматтар

1.1.  С++ тілінің негізгі түсініктемелері

1.2.  С++ тіліндегі бағдарламаның құрамы

1.3.Мәліметтердің базалық типтері мен олардың көлемі.

Типтерді түрлендіру

1.4. Айнымалылар, тұрақтылар, символдар

1.5. Өрнектер, операциялар, операторлар

ІІ бөлім.Сызықты құрылымды және тармақталып   құрылған

алгоритмдерді бағдарламалау

 2.1. Сызықты құрылымды алгоритм және енгізу-шығару

операторлары

2.2. Тармақталып құрылған алгоритмдер және басқаруды

беру операторлары

Қорытынды

Пайдаланылған әдебиеттер тізімі және дереккөздер

Кіріспе


 С++ бағдарламалау тілі нысанды-бағытталған тіліне қажетті құралдармен С бағдарламалау тілін кеңейту мен қосу нәтижесінде АҚШ-та Bell Laboratories компаниясының қызметкері Бьерн Страуструппен (Bjarne Stroustrup) 80-ші жылдардың (20 ғ.) басында өңделген.  Коммерциялық бағдарламалық өнімдерді қолданатын қазіргі тілдер арасында С++ тілі басты және әмбебап тілі болып табылады. Тек қана Java тілі оған бәсекелес бола алады деп есептеуге болады. С++ тілінің бір түрі Microsoft фирмасымен желілік платформаға өңделген С# тілі болады. Кейбір принципиалды айырмашылықтарына қарамай С++ пен С# тілдері 90% -ға сәйкес болады.

Курстық жұмыстың өзектілігі:

- блок-сұлбаларды жасауды және практикалық бағдарламалауды үйренеді, тіл операторларын тиімді қолдануды, алынған нәтижелерді талдауды үйренеді;

- оның бейнелеуімен ұқыпты танысып, ұсынылатын теориялық тақырыптарды оқиды (қажет болса, қосымша әдебиетті қарап шығу керек), отчет бланкі дайындалады, оған орнатылған түрі бар титулды бет, жұмыс мақсаты, тапсырма вариантының мәтіні, блок-сұлба, бағдарлама листингі, бақылау сұрақтарға жауаптар кіреді.

Курстық жұмыстың мақсаты:  

- тілдің алфавитімен, идентификаторларымен, қызмет сөздерімен, препроцессор директиваларымен, мәліметтердің стандартты типтерімен, бағдарлама құрамымен, арифметикалық өрнектерді жазу ережелер мен меншіктеу операторын қолданудың өзгешеліктерімен танысу;

- мәліметтерді енгізу-шығару және басқаруды беру операторларымен сонымен бірге сызықты және тармақталып   құрылған алгоритмдерді бағдарламалау ерекшеліктерімен танысу;
 
І бөлім. С++ жалпы мағлұматтар

1.1.  С++ тілінің негізгі түсініктемелері

 С++ тілінде бағдарламаны жазғанда келесі түсініктемелер қолданылады: алфавит, тұрақтылар, идентификаторлар, қызмет сөздер, түсініктемелер, директивалар.

Тілдің барлық конструкцияларын құрамдастыратын осы тілдің символдар жиынын алфавит деп аталады. С++ тілі келесі символдар жиынын қолданады;

- латын үлкен және кіші әріптер (А, В, С, ..., х, у, z);

- араб цифрлары (0, 1, 2, ..., 7, 8, 9);

- астынан сызып қою символы («_»);

- арнайы символдар (С++ тілінің арнайы символдар тізімі А1-кестеде келтірілген);

- бөлгіш символдары (бос орын, түсініктемелер, жол аяқталуы, т.б.).

Аталып кеткен символдар көмегімен аттаркілттік (қызмет) сөздерсандарсимволдар жолдары және белгілер құрастырылады.



Идентификаторлар (аттар) бағдарламаға енгізілетін барлық нысандарды (айнымалылар аттары, тұрақтылар, функциялар, типтер, белгілер, т.б.) белгілеу (идентификациялау) үшін қолданылады. Аттар міндетті түрде латын әріпінен немесе астынан сызып қою символынан «_» басталады, олардан кейін кез-келген комбинацияда латын әріптері мен цифрлер орнатылады. С++ үлкен және кіші әріптерді бөледі. Аттарда арнайы символдарды және бөлгіш символдарды қолдануға болмайды. Мысалы,

_х, В12, Stack              - дұрыс;

Label.4, Root-3             - дұрыс емес.

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

Компиляторға арнайы мәні бар кейбір идентификаторлар кілттік сөздер ретінде қолданылады. Оларды қолдану тура анықталған, олар басқа жерде қолданылмайды. С++ тілінің резервіленген сөздер тізімі А2-кестеде келтірілген. Әр компилятор кілттік сөздердің санын көбейте алады, себебі өзі міндеттелген компьютердің қосымша мүмкіндіктерін есепке алады.

Көшу белгілері символдық-цифрлық конструкция болады, мысалы, metkalpasscross. С++ тілінде белгілер жарияланбайды.

Символдар жолы  - қос тырнақшаға алынған символдар тізбегі. Мысалы, «Символдар жолы».

Компилятор есепке алмайтын, бағдарламаның бастапқы мәтіні оқуға ыңғайлы болу үшін орнатылатын бағдарламаның бөлігі - түсініктеме болады (белгілі ережемен орнатылған түсініктемелеу мәтін). Компиляция кезінде түсініктеме бос жолмен алмастырылады, сондықтан ол бағдарламаның бос жол рұқсат етілген кез-келген жерінде орнатылады.  С және С++ тілдерінде кез-келген /* */ шектеу жақшаларға алынған символдар тізбегі көпжолды түсініктеме ретінде қарастырылады, Мысалы,

/*Бас бағдарлама*/.

С++ тілінде қосымша тағы бір – бір жолды түсініктеме түрі бар: // (екі слеш) белгісінен кейін орнатылған барлық символдар  түсініктеме ретінде қабылданады, мысалы,



//Бас бағдарлама.

Бағдарламалаушылардың көбісі С++ тілінің (//) түсініктемесін қолданады, ал С тілінің түсініктемесі (/* */) бағдарламаның үлкен бөліктерін уақытша өшіру үшін қолданады. Бірақ түсініктемелер бағдарлама шарттаңбасының аудармасы болмау керек, ал түсінікті жерді түсіндіретін түсініктемелердің пайдасы жоқ. Түсініктемелер операторларды емес, олар не үшін бұл жерде қолданылатынын түсіндірулері керек.

Бүтін және нақты мәндерді көрсететін сандар ондық есептеу жүйеде жазылады. Кез-келген санның алдында «+» немесе «-» болуы мүмкін. Нақты санды оның бүтін бөлігі бөлшек бөлігінен нүктемен бөледі. Ондық нүктесі бар нақты санның нүктесінің алдында немесе одан кейін ең кемінде бір цифр болуы керек.

Препроцессор директивасы – С-бағдарламаның бастапқы мәтінінде жазылған, препроцессормен орындалатын нұсқау.

 

1.2.  С++ тіліндегі бағдарламаның құрамы



С++ тілінде жазылған бағдарлама әдетте бір немесе бірнеше функциялардан тұрады. Белгілі есепті шешуге негізделген, мәліметтермен әрекеттесіп, нәтижені қайтаратын бағдарламаның өз бетінше жұмыс істейтін бөлігі.

С++ тіліндегі бағдарламаның құрамы 1.1 - суретте келтірілген.

С++ тілінде кез-келген бағдарлама басты файлды (*.h) қосатын  #include директивасынан басталады. Басты файл компиляторға функцияның синтаксисі туралы хабар беретін функциялардың прототиптерінен тұрады, мысалы,

# include   

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

Кез-келген С++ тіліндегі бағдарлама ең кемінде бір main ()  функциядан тұрады. Бұл функция бағдарламаны жұмысқа қосқанда автоматты түрде шақырылады және бағдарламаның басқа функцияларын шақыра алады. Функция келесі түрде жазылады:

void main ( )

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

Басты функцияны анықтағаннан кейін топтастыратын { } жақшаларда бағдарлама операторлары орнатылады. Әр оператор үтірлі нүктемен (;) аяқталады. Бағдарлама жолдар бойынша олардың бастапқы шарттаңбада орнатылу ретімен тізбектеліп орындалады, орындалу әлдеқандай функция кездескенше жалғасады, кері жағдайда басқару осы функцияның жолдарына тапсырылады. Функция орындалып болғаннан кейін басқару функцияны шақыру жолдан кейінгі бағдарламаның жолына тапсырылады. Функциялар толық кейінірек қарастырылады.


        #include <имя.h>



Басты файлдарды қосу

function1 ( )

{

  оператор;



}

 function2 ( )



{

  оператор;



}





Бағдарламаның функцияларын анықтау

void main ( )



Басты функцияны анықтау

{



Бас функцияның денесінің басы

  оператор 1;

  оператор 2;

  …

  оператор 3;





Функцияның операторлары

function1 ( );

function2 ( );





Бағдарлама функцияларын шақыру

}



Бас функциясының денесінің соңы

1.1 сурет. С++ тіліндегі бағдарламаның құрамы

1.3.Мәліметтердің базалық типтері мен олардың көлемі.

Типтерді түрлендіру

Мәліметтерді анықтағанда компиляторға олардың типтері туралы ақпаратты беру қажет. Осы ақпаратқа байланысты компилятор мәліметтерді сақтауға қажет орын көлемін анықтайды және онда қандай мән болатынын біледі.

С++ тілінде мәліметтердің бес базалық типтері анықталған: символдық (char), бүтін (int), жылжымалы үтірі бар нақты (float), екі еселі ұзындығы бар жылжымалы үтірі бар нақты (double) және бос, мәні жоқ тип (void).

Аталып кеткен типтер негізінде барлық қалғандары құрастырылады. Сәйкес типтің алдында қойылатын типтердің модификаторларын қолдану құрастырудың қарапайым әдісі болады: белгілік (signed), белгісі жоқ (unsigned), ұзын (long) және қысқа (short). А3-кестеде модификаторларының әртүрлі комбинацияларымен, өзгеру диапазонымен және байтпен көрсетілген алатын орын өлшемімен мүмкін болатын типтердің барлығы келтірілген.

Бағдарламада қайта-қайта мәліметтер типтерінің модификаторларының әртүрлі комбинацияларын, мысалы,  unsigned short int қайта-қайта қолданғанда синтаксис қателер жеңіл пайда болуы мүмкін. Оларды жою үшін С++ тілінде typedef қызмет сөзі көмегімен псевдонимдерді (синонимдерді) жасау мүмкіндігі бар. Мысалы, typedef unsigned short int USHORT; жолы жаңа USHORT псевдонимді құрастырады, ол unsigned short int жолды жазу керек болатын барлық жерде қолданылады.

Өрнектерде айнымалылардың бір типін қолданған дұрыс, бірақ С++ типтерді түрлендіруіне мүмкіндік береді. Басқа сөзбен айтқанда операндтар әртүрлі типті болса, олар бір жалпы типке келтіріледі. Ол келтіру келесі ережелер бойынша орындалады:

)                     мәндерінің кіші диапазондары бар операндтар үлкен диапазондары бар операндтарға автоматты түрде түрленеді, себебі бұл кезде ақпарат жойылмайды;

)                     мағынасы жоқ өрнектер (мысалы, индекс рөліндегі орны өзгеретін нүктесі бар сан) компилятормен трансляциялау кезінде жіберілмейді;

)                     ақпарат жойылуы мүмкін болатын өрнектер (мысалы, ұзын бүтін мәндерді қысқа мәндерге немесе нақты мәндерді бүтін мәндерге меншіктегенде) ескертулерді (warning) тұдырады, бірақ оларға рұқсат бар.

Басқа бағдарламалау тілдерден ерекше С++ тілінде кез-келген өрнек үшін оның типін түрлендіруді типтерді келтіру деп аталатын унарлық операцияны қолданып анық көрсетуге болады. Өрнек аталған типке айтылған ережелер бойынша келесі конструкциямен келтіріледі



(тип аты) өрнек;

Мысалы,  (int) i=2.5*3.2;

Бірақ бұл операторды тек қана түрлендірудің мақсаты мен оның салдарлары түсінікті болса қолдануға болады.

1.4. Айнымалылар, тұрақтылар, символдар

Сақталынатын мәнді уақытша орнатуға және соңынан сол арадан алуға бөлінген жады аймағымен байланысқан ат айнымалы деп аталады. Айнымалылардың мәндерін ұзақ (тұрақты) сақтау үшін мәліметтер қорлары немесе файлдар қолданылады. С++ тілінде пайдалану алдында барлық айнымалыларды жариялап кету қажет. Жариялау дегеніміз айнымалының аты мен оның типін көрсету. Бірақ, void типті айнымалыны жасауға болмайды. Айнымалыларды жариялаудың негізгі түрі келесі

Типі <айнымалылар_тізімі>;

Бұл жариялауда: типі – бар болатын типтердің біреуі; <айнымалылар_тізімі>  жалғыз немесе үтірлермен бөлінген бірнеше айнымалылардан тұрады. Мысалы;



int x, e, z;

float radius;

long double integral;

Айнымалыны жариялаумен бірге оларға мәндерді меншіктеуге яғни инициализациялауға болады. Айнымалыға бастапқы мәндерді меншіктеу инициализациялау деп аталады. Мысалы,



int min=15; float p1=1.35;

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

-         екі ауқымды айнымалының аттары бірдей болмауы керек;

          -  бірдей емес функциялардың жергілікті айнымалыларының аттары бірдей болуы мүмкін;

- бір блоктың екі жергілікті айнымалыларының бірдей аттары болмауы керек.

Бағдарламалау тілдерде мәліметтер тұрақтылар түрінде көрсетілуі мүмкін.  Кейбір айнымалының мәнін бағдарламада өзгертуге болмаса тұрақтылар қолданылады. Тұрақтыны анықтау үшін әдетте мәтіндік ауыстыруды орындайтын #define қызмет сөзін қолдануға болады. Мысалы,



#define StudentsOfGroup 15

Мысалда StudentsOfGroup тұрақтының белгілі мәні жоқ, препроцессор осы атты кездескен сайын оны 15 литералға алмастырады. Препроцессор компилятордан бұрын жұмысқа қосылатын болғандықтан, компилятор тұрақтыны көрмейді, тек 15 санын көреді.

Тұрақтыны анықтаудың ең ыңғайлы жолы келесі:

const типі  тұрақты _аты = тұрақты _мәні;

Бұл әдіс қателерді қақпайлайды және бағдарламаның жанамалауын жеңілдетеді. Тұрақтыны жариялауда оның типі орнатылады, сондықтан компилятор оның айтылған типі бойынша қолдануын аңдыйды. Мысалы,



const int Diapazon=20;

Тікелей бағдарлама мәтініне енгізілетін мәндер литералдық тұрақтылар (литералдар) болып табылады. Компиляциядан кейін литералдардың мәндерін өзгертуге болмайды, сондықтан оларды да тұрақтылар деп атайды. Мысалы,



int MyAge=19; өрнекте MyAge аты int типті айнымалы болады, ал 19 саны – литералды тұрақты, оған ешқандай басқа мәнді меншіктеуге болмайды.

Символдық тұрақты апострофтар (жалғыз тырнақшалар) ішіндегі жалғыз символдан тұрады: ‘q’, ‘2’, ‘$’. Мысалы,

const char month=’December’;

Символдық тұрақтыларға арнайы символдар қатысады (соның ішінде тізімі А1-кестеде келтірілген басқару символдары).



Жолдық тұрақтылар тырнақшаға алынған, нөлдік байтпен аяқталатын, ASCII шарттаңба символдарының тізбектерінен тұрады. Символдық жолдың соңы (нөлдік байт) NULL ('\0') символымен белгіленеді.

Санап шығу тұрақтылар мәліметтердің жаңа типтерін жасауға, содан кейін мәндері тұрақты мәндерінің жиындарымен шектелген мәндері бар осы типті айнымалыларды анықтауға  мүмкіндік береді. Санап шығу тұрақтыны жасау үшін enum қызмет сөзі қолданылады, ал жазбаның түрі келесідей болады

enum тұрақты_аты {тұрақтының_мәндер_тізімі};

Тұрақтылардың мәндері мәндер тізімінде үтірмен бөлінеді. Мысалы,



enum COLOR {RED, BLUE, GREEN, WHITE, BLACK};

Санап шығу тұрақтының әр элементіне белгілі мән сәйкес болады. Үнсіз келісім бойынша бірінші элементтің мәні 0 болады, ал әрбір келесі элемент бірге көп. Тұрақтының әр элементіне кез-келген мәнді меншіктеуге болады, онда келесілердің мәндері алдыңғы элементтің мәнінен бірге көп болады. Мысалы,



enum COLOR {RED=100, BLUE, GREEN=200, WHITE=300, BLACK};

Бұл мысалда RED=100BLUE=101GREEN=200, WHITE=300, BLACK=301 болады.

Суффикстер көмегімен тұрақтылардың типтерін ашық беру механизмі бар. Бүтін типті тұрақтылар үшін суффикстер ретінде u, l, h, L, H, ал орнын өзгертетін нүктесі бар сандар үшін -  l, L, f, F әріптерін қолдануға болады.  Мысалы,

12h 34H                                 - short int

23L -273l                               - long int

23.4f 67.7E-24F                     - float

89uL 89Lu 89ul 89 LU                  - unsigned short

 

1.5. Өрнектер, операциялар, операторлар



С++ тілінде операциялар мен операндтардың (тұрақтылар, айнымалылар және функциялар) кейбір рұқсат етілген комбинациясы өрнек болады. С++ тілінің операциялар тізімі А4-кестеде келтірілген. Бөлу операциядан басқасының бәрі дәстүрлі әдісімен орындалады. Бөлу операцияның ерекшелігі келесіде болады: егер де операндтардың екеуі де бүтін типті болса, нәтижесі бүтін типті болады, мысалы 3/2 нәтижесі 1. Нақты нәтижені алу үшін, операндтың ең кемінде біреуі нақты типті болуы керек, мысалы, 3/2.0 нәтижесі 1.5.

Тілдің әрбір операциясы үшін операндтар саны белгіленген:

)                     белгіні өзгертетін унарлық операциясы үшін – жалғыз операнд; мысалы, унарлық минус –х; 

)         бинарлық операциясы үшін – екі операнд; мысалы қосу операциясы х+у;

)         Шарт ?:  операциясы үшін – үш операнд; бұл операция жалғыз.

Әрбір операцияның операндтарының белгілі типі болады. Әрбір бинарлық операцияның белгілі орындау тәртібі бар: солдан оңға немесе оңнан солға. Сонымен бірге әр операцияның өзінің приоритеті бар. Операциялардың приоритеті мен орындау тәртібі А4-кестеде келтірілген.

INCLUDE каталогында орнатылған math.h библиотекасындағы С++ тілінің математикалық функциялары өрнектерде жиі қолданылады. Осы функцияларды пайдалану үшін бағдарлама басына #include  бас файлын қосу керек. Негізгі математикалық функциялар А5-кестеде келтірілген.

Барлық өрнектер операторлар болып табылады.

С++ тілінде операторлар әрекеттерді бейнелеуге негізделген. Кез-келген оператор белгімен белгіленуі мүмкін. Операторлар бір-бірінен үтірлі нүктемен (;) бөлінеді.

Бағдарламаның кез-келген жалғыз оператор орнатылатын жеріне, блок деп аталатын құрамды операторды орнатуға болады. Блоктың бейнелі жақшаларға алынған ({}), бірақ үтірлі нүктемен (;) аяқталмайтын бір оператор ретінде орындалатын бірнеше операторы болады.

Айнымалыны жариялау - бұл компьютер жадысында оған орын бөліп қою. Ал бағдарлама тек қана мәліметтермен әрекет жасауға мүмкіндік береді. Бұл процесте меншіктеу операторы өте маңызды. Оның түрі:

айнымалы = өрнек;

Мешіктеу операторы «=» белгісінің сол жағындағы операнд мәнін, оң жақтағы есептелген мәнмен алмастырады. Сонымен бірге ашық емес типтерді түрлендіру орындалуы мүмкін. С++ тілінде «=» белгісі теңдікті емес, меншіктеуді білдіреді.

Басқа бағдарламалау тілдерінде меншіктеу – анықтама бойынша оператор болады, С++ тілінің ерекшелігі – бұл тілде «меншіктеу операциясы» және  «меншіктеу операторы» түсініктемелері бар.  Егер өрнек соңында үтірлі нүкте орнатылса, операция операторға «түрленеді», мысалы  ++x – өрнек болып табылады, ал ++х; - оператор болады. Меншіктеу операторды айнымалыны инициализациялаған кезде қолдану ыңғайлы, мысалы, j=k;. Сонымен бірге С++ тілінде меншіктеу операторды құрамдарында салыстыру немесе логикалық операторлары бар өрнектерде қолдануға болады, мысалы,

if ((x=x+5)>0) cout<<"Шығару";

Бұл мысалда әуелі айнымалының мәні 5-ке көбейеді, содан кейін оның мәні нөлмен салыстырылады.

Меншіктеу операторының С++ тілінде қолданудың тағы бір ерекшелігі оңнан солға қарай орындалатын көпретті меншіктеуді қолдану мүмкіншілігі. Мысалы, 2*k мәнін бірнеше айнымалыларға меншіктеу үшін, келесі меншіктеу операторын қолдануға болады: x=y=z=2*k.

С++ тілінде қосымша меншіктеу операторлары бар: +=-=*=/= и %=.  Бұл операторларда оң жақтағы мән сол жақтағы мәнге қосылады (алынады, көбейтіледі, бөлінеді немесе модуль бойынша бөлінеді). Мысалы, х=х+5; оператордың орнына х+=5;  деп жазуға болады. х+=5 операциясы х=х+5операциясынан тез орындалады.

Бағдарламаларда жиі қолданылатын әрекет - айнымалыларға бір мәнін қосу немесе алу. С++ тілінде бірлікке өсіру инкремент (++), ал бірлікті алу – декремент (--) деп аталады. Мысалы, с=с+1; операторы с++; операторына, ал

с=с-1; операторы с--; операторына эквивалентті.

Инкремент және декремент операторлары екі вариантта болады: префиксті және постфиксті.



Префиксті операциялар айнымалының мәнін бірге өсіреді (немесе кемітеді), содан кейін алынған мәнді қолданады. Мысалы, х=++у; операторы келесі у=у+1; х=у; екі операторды орындағанға эквивалентті. Бұл мысалда, әуелі у мәні бірге өседі, содан кейін алынған мән х айнымалысына меншіктеледі.

Постфиксті операциялар әуелі айнымалы мәнін қолданады, содан кейін оны өсіреді (кемітеді).  Мысалы, х=у--; операторы х=у; у=у-1; операторларды орындағанға эквивалентті. Мысалда х айнымалысы у мәнін қабылдайды, содан кейін у мәні бірлікке кемиді.

 


ІІ бөлім.Сызықты құрылымды және тармақталып   құрылған алгоритмдерді бағдарламалау

 2.1. Сызықты құрылымды алгоритм және енгізу-шығару операторлары


Кез-келген құрамды бағдарламада сызықты фрагменттерін табуға болады. Егер барлық амалдар бірінен соң бірі тізбектеліп орындалса және меншіктеу операторларынан, математикалық функцияларынан, арифметикалық операцияларынан, мәліметтерді енгізу-шығару функцияларынан және басқа операторларынан тұрса, бағдарлама фрагментінің құрылымы сызықты болып табылады. 

Әдетте бағдарламаларда міндетті түрде енгізу-шығару операторлары болады. С++ тілінде авторлары екі жаңа идеяларды іске асырды: енгізу-шығарудың құралдары тілден бөлініп, бөлек stdio библиотекасына орнатылған (С/С++ стандарттарына кіретін енгізу-шығарудың стандартты библиотекасы), сонымен бірге енгізу-шығару үрдісінің құрылғыдан тәуелсіз концепциясы өңделіп, іске асырылған. Сонымен, С++ тілінде мәліметтердің әртүрлі типтерінің енгізу-шығаруын жасайтын функцияларының кең жиынтығы бар.

Форматты енгізу-шығаруды орындау үшін #include  басты файл көмегімен қосылатын printf және scanf екі функциясы жиі қолданылады. С++ тілінде бұл функцияларды қолдану С тілінен қалған.

Printf функциясын символдар, бүтін және нақты сандар, жолдар, белгілері жоқ бүтін сандар, ұзын бүтін сандар және белгілері жоқ ұзын бүтін сандардың кез-келген комбинациясын шығаруға қолдану болады. Бұл функция келесі түрде бейнеленеді:

printf (“басқару_жолы”, аргументтер_тізімі);

Тұрақтылар, айнымалылар және өрнектер тізбегі аргументтер_тізімі болады. Олардың мәндері әдетте аргументтерінің санын және типін белгілейтін басқару жол форматына сәйкес экранға шығарылады; басқару жолдың келесідей нысандары болады:

 - экранға өзгертілмей шығарылатын әдеттегі символар;

 - түрлендірудің спецификациялары; әдетте олардың әрқайсысы

аргументтер тізімінен ретті аргументті экранға шығарады;

 - басқару символдық тұрақтылар (жиі қолданылатын тұрақтылар тізімі А1-кестесінде келтірілген).

Түрлендіру спецификациялары % символынан басталады және түрлендіру символымен (А6-кестесі) аяқталады, олар арасында келесі символдар орнатылуы мүмкін:

  - шығарылатын мәтін сол жақ шегімен түзетілуін көрсететін «минус» белгісі, үнсіз келісімдер  бойынша түзетілу оң жақтағы шекте болады;

- шығару өрісінің минималды өлшемін анықтайтын цифрлер жолы;

- бөліндіруді көрсететін нүкте;

- шығару дәлдігін көрсететін цифрлер жолы;

- сәйкес аргументтің типі long болатынын көрсететін l символы.

 Мысалы,

 printf ("\nЭриктің жасы - %d. Оның табысы $%.2f ", age, income);

Бұл мысалда age (жасыбүтін және income (табысы) нақты айнымалыларына кейбір мәндер меншіктелген деп есептелінеді.  \n символдар тізбегі көрсеткішті жаңа жолға түсіреді, сондықтан «Эриктің жасы» символдар тізбегі жаңа жолдың басынан шығарылады. %d символдар age айнымалының форматын түрлендіру символдары (спецификациялары) болады. Одан соң «Оның табысы $» литерлық жолы және %.2f  символдары (income айнымалының мәндерінің спецификациясы) символда орнатылады және ондық нүктеден кейін екі цифрдs шығару керек деген формат көрсетіледі.

Шығару функциясы scanf енгізу printf функциясы сияқты бейнеленеді:



scanf (“басқару_жол”, аргументтер_тізімі);

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



scanf (“%d %f %c”, &i, &a, &ch);

1.1 мысалы – Берілген сыртқы R және ішкі r радиустерін қолданып, бос шардың бетінің аймағын S және көлемін V есептейтін бағдарламаны құрастырыңыз. S және V есептеу формулалары S = 4 (R2-r2), V = 4/3 (R3-r3).



#include                                     //басты файлдарды қосу

#include

#define Pi 3.1415926                                // Pi тұрақтысын анықтау

void main ( )

{

double S, V;

float R, r;

printf (“Сыртқы R және ішкі r радиустерді енгізіңіз:”);

scanf (“S=%g,V=%f\n”,S=4*Pi*(R*R-r*r),V=4/3*Pi*(pow(R,3)-pow(r,2)));

}

С/С++ тілдердегі бағдарламалар құрылғылар және файлдармен емес, ағындармен жұмыс істейді. Ақпаратты енгізу кірістегі ағыннан, шығару – шығудағы ағыннан орындалады, ал ағындар құрылғымен немесе файлмен байланысты болады. С++ тілінде құрылғыдан тәуелсіз енгізу-шығарудың концепциясы нысанды-бағытталған iostream енгізу-шығарудың библиотекасы ретінде әрі қарай дамыды. Осы библиотекаға мәліметтерді экранға шығаруға негіздеген coutжәне  ақпаратты енгізуге негізделген cin нысандары орнатылған.

Шығару cout операторының түрі келесідей болады:

cout<<1айнымалы<<...<

<<” белгісі шығу ағынына символдарды қосатын қоспалау операциясы деп аталады. Курсорды жаңа жолдың басына көшіру үшін cout операторында endl(жол соңы) символы жиі қолданылады, мысалы, cout<. Шығару операторында арнайы символдарды қолдануға болады, егер де олар өз бетінше қолданылса, апострофқа орнатылуы керек, мысалы, соut<<'\а'<<"Қоңырау";. Егер де арнайы символар тырнақшалардың ішінде орнатылса, апострофтар қолданылмайды. Мысалы, cout<<"Шығару\tx="<

Үнсіз келісім бойынша, С++ тілінде сандар ондық санау жүйесімен шығарылады. Сегіздік немесе оналтылық санау жүйесін қолдану үшін шығу ағында oct немесе hex модификаторларын орнату қажет. Ондық санау жүйеге қайту үшін dec модификаторы қолданылады.

Мысалы,


cout<<”8-cc:    “<

cout<<”16-cc:  “<

cout<<”10-cc:  “<

Сандардың форматты шығаруын cout операторы көмегімен орындау үшін, бағдарламаға #include  басты файлын қосып,  iomanipбиблиотекасы ұсынатын функцияларды қолдануға болады:

)                     санға бөлінетін позицияларының санын (шығару енін) setw модификаторы көмегімен нақты түрде көрсетуге болады, мысалы,

cout<<"Сан"<

Бұл оператор орындалу нәтижесінде дисплей экранына келесілер шығарылады:



Сан          5

Осы нәтижені cout.width функция көмегімен алуға болады:



cout<<"Сан";

cout.width (10);

cout<<5<

)                     setw модификатор көмегімен мәліметтерді шығарғанда cout операторының немесе cout.width функциясының бос кеңістікті толтыратын бос орын орнына қолданатын символдарын cout.fill функциясымен көрсетуге болады, мысалы,



cout. fill ('.') ;

cout<<"Сан"<

Операторларды орындау нәтижесінде дисплей экранына келесі шығады:



Сан…..5

)                     сандарды шығару форматын басқару үшін, ондық нүктеден кейін цифрлер санын анықтайтын setprecision манипуляторды қолдануға болады, мысалы,



float   x=3.14159265359;

cout<

Оператордың орындалу нәтижесінде экранда 3.14159 орнатылады;

)                     экранға мәтін символдарын кезекпен шығару үшін cout.put функциясы қолданылады, мысалы,

char с[ ]="С++";

cout.put (c[0]);

cout.put (c[2]) ;

cout.put (c[3]);

         Блоктың операторларын орындау нәтижесінде: C++ мәтіні орнатылады.

         Енгізу cin операторы келесі түрде болады:

cin>>1айнымалы>>...>>Nайнымалы;

>>” белгісі шығару операциясы деп аталады, бұл операция аталған айнымалыға мәнін меншіктеп, мәліметтерді кірудегі ағынынан шығарады.  Енгізілетін айнымалылардың мәндері жариялау операторларында көрсетілген айнымалылар типтеріне сәйкес болуы керек, ал пернетақтадан енгізгенде, бір- бірінен ең кемінде бір бос орынмен бөлінеді, мысалы 1.5 2.15 -1.1 25.

Символдық айнымалылар мен жолдардың мәндері кірудегі ағынында апострофсыз және тырнақшасыз жазылады. Оларды енгізу үшін С++ тілі қосымша екі функцияны ұсынады: cin.get және cin.getline. Егер де жалғыз символдан оқу қажет болса, cin.get функциясы қолданылады, мысалы, cl=cin.get();. Онда char cl деп жарияланған айнымалы пернетақтадан енгізілген символдың мәнін қабылдайды. Егер де пернетақтадан символдар жолын енгізу қажет болса, cin.getlineфункциясы қолданылады, символдық   жол аты және оның ұзындығы (нөлдік байтты есепке алып) көрсетіледі, мысалы, cin.getline(c2,11);. Бұл кезде char с2 [64] деп жарияланған символдық жолға пернетақтадан енгізілген 10 символ жазылады.

2.2 мысал - және y сандардың бөлінуінің бүтін мәнін және қалдығын есептеңіз.



#include   //басты файлдарды қосу

void main ( )

{

int x, y;                         /* бөлудің қалдығын бүтін сандарға қолданылатын  

                                                      % операциясы береді, және бүтін сандарды

                                                     бөлгенде, бөлшектері есепке алынбайды,                   

                                                     сондықтан х және у айнымалылар бүтін деп

                                                     жарияланған */

cout<<“ х және  у мәндерін енгізіңіз:”<

cin>>x>>y;

cout<<’\n’<<”Бөлудің бүтін саны:”<

cout<<’\n’<<”Бөлудің қалдығы:”<

}

Бағдарламаның сыртқы түрін суреттеу үшін #include  басты файлда жарияланатын функцияларды қолдануға болады, мысалы,

         а) мәтіннің фонының бояуын орнату келесі функция көмегімен орындалады:

void textbackground (int bkcolor);

мұнда bkcolor (фон түсі) –0-ден 7-ге дейінгі сан немесе  келесі тұрақтылардың (BLACK, BLUE, GREEN, CYAN, RED, MAGENTA, BROWN, LIGHTGRAY) біреуі;

         б) символдар бояуы келесі функциямен орнатылады:

void textcolor (int txcolor);

мұнда txcolor (мәтін бояуы) 0-ден 15-ке дейінгі бір сан немесе келесі тұрақтылардың (BLACK, …, LIGHTGRAY, DARKGRAY, LIHGTBLUE, …, LIGHTMAGENTA, YELLOW, WHITE) біреуі;

         в) экранды немесе ағынды мәтіндік терезені тазарту үшін келесі функция қолданылады:

void clrscr ();

 

2.2. Тармақталып құрылған алгоритмдер және басқаруды беру операторлары



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

Басқаруды беру операциялары болып басқа бағдарламалау тілдерде аналогтары бар (мысалы, Pascal тілінде) шартсыз өтушартпен өту, (вариантты) таңдау операторлары және үштік шартты оператор табылады.

Шартсыз өту операторының түрі келесі болады:

goto  белгі;

Өту белгісі бағдарламадағы басқару берілетін операторды көрсетеді. Goto операторы орындалғанда өту шартсыз орындалады. Мұндай өтулер бағдарламаның құрамымен есептеулердің құрамы арасындағы байланыстарды бұзады, соның себебінен бағдарламаның анықтылығы жойылып, есепті дәлелдеуі күрделіленеді сондықтан шартсыз өту операторын тек амалсыздан қолдануға болады.

Шартпен өту операторы кейбір тексерілетін шарттың мәніне қарай есептеудің екі вариантынан біреуін таңдауға негізделген, оның толық түрі келесідей:

if (шарт1оператор; else 2оператор;

Шарт ретінде орындалатын операторды таңдау шартын беретін кейбір кез-келген өрнек қолданылады; 1оператор мен 2оператор қарапайымда күрделіде болуы мүмкін. Егер де шарт ақиқат болса (TRUE немесе кез-келген нөл емес мән), 1оператор орындалады, ал егер де шарт жалған болса (FALSE немесе нөл), 2оператор орындалады. Мысалы, if (x==3) b=1; else b=0;

Шартты өту оператордың қысқаша түрі:

if (шарт) оператор;

Бұл кезде, егер де шарт ақиқат болса, опера­тор орындалады, кері жағдайда басқару бағдарламаның келесі операторына беріледі. Мысалы, if (x==3) b=1; х=у;

Көбінесе шарт операндтармен операциялар белгілерінен тұратын логикалық өрнек болып табылады. Логикалық өрнекте операциялар ретінде біріншіден салыстыру  (==, !=, <, >, <=, >=)  операциялары қолданылады.  Олардан басқа логикалық өрнектерді құратыру үшін логикалық операцияларды (!, ||, &&) қолдануға болады. Логикалық өрнектің мәні онда көрсетілген оперцияларды приоритетіне және орнатылған жақшаларға қарай орындаумен есептелінеді, мысалы,

(abs(x)<=2) – х-тің модуль бойынша мәні 2-ден артық емес;

((х>=1)&&(х<=2)) – нүкте [1,2] аралықта жатыр;

(х*х+у*у<1) - (х, у) координаттары бар нүкте ортасы координаттар басында орнатылған, радиусы бірге тең шеңберде жатыр.

С++ тілінде ақиқат нөл емес мәнмен, ал жалған нөлмен көрсетілетін болғандықтан, шартпен өту операторының басқа да қолдануы бар:



х = мән;

if (x) оператор;

Бұл кезде if операторындағы шарт логикалық өрнекті емес, алдына-ала мән меншіктелген айнымалыны көрсетеді. Егер де айнымалы мәні нөлден тыс болса, шарт ақиқат болады, егер де айнымалы мәні нөл болса шарт жалған.

Ішкі оператор есебінде if операторда кез-келген операторларды қолдануға болады, сондықтан іште орнатылған кұрамдарды жасауға болады:

if (1өрнек1оператор;

     else if (2өрнек2оператор;

             else if (Nөрнек) Nоператор;



                               else үнсіз_келісім_бойынша_операторы;   // міндетті емес

Бірақ бағдарламада қателер кетпес үшін ішкі блоктар үшін бейнелі жақшаларды қолданған жөн, осындай құрамда else қызмет сөзі алдындағы жақын ifоператорымен байланысады.

Егер де бағдарламада көп варианттың арасында таңдау керек болса, if операторының ішкі құрамдарының орнына таңдау немесе вариант операторы деп аталатын switch қайта қосу операторын қолданған дұрыс. Бұл оператордың түрі:

switch (өрнек)

{

case n1 : 1оператор; break;

case n2 : 2оператор; break;

case nk : Коператор; break;

default :  Nоператор; break;

}

Таңдау операторды орындау өрнектің (селектордың) мәнін есептеуден басталады. Содан кейін таңдау операторы осы мәнге сәйкес болатын тұрақты тұрған операторға басқаруды береді. Егер де сәйкестік табылмаса, default операторынан кейін орнатылған оператор орындалады. Мысалы,



switch (i)

{

case l: x=0; break;

case 2: x=2*x; break;

case 100: x=sin (x); break;

default: x=cos(x); break;

}

z=x; …

Мысалда, i селекторы, мысалы, 100 мәнін қабылдаса, x=sin(x) операторы орындалады, содан кейін басқару z=x операторға беріледі.

Таңдау switch операторында default операторын орнатпауға болады. Оператордың әр тармағында орнатылған break операторы ағынды операторды аяқтап басқаруды бағдарламаның келесі операторына беруді білдіреді. Егер де break операторы болмаса, бағдарлама break операторы кездескенше немесе switchоператорының аяғына дейін орындалады.

Шартпен өту операторының альтернативасы болып С++ тілінде үштік шартты ?: операторы болады. Бұл үш операндпен жұмыс жасайтын жалғыз оператор. Бұл оператор үш өрнекті қабылдап, мәнді қайтарады:



(1өрнек) ? 2өрнек: 3өрнек;

Операторды орындау 1өрнек-ті есептеуден басталады. Егер де өрнек ақиқат болса, нәтижесі 2өрнек болады, кері жағдайда нәтижесі 3өрнек болады. Мысалы, mах = (х>у) ? х: у; операторы екі х және у сандардың максималдысын анықтайды.

 

 

 



 

Қорытынды

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

Тілдің негізгі  ерекшеліктері:

- көбісі машиналық бұйрықтарға сәйкес, сондықтан тікелей машиналық шарттаңбаларға аударылатын, С++ тілінің көптеген операциялар жиынтығы бар; олардың түрлері көп болғандықтан, нәтижелі шарттаңбаны минималдау үшін әртүрлі жиындарды таңдауға болады;

-          С++-тің мәліметтерінің базалық типтері Ассемблер тілінің базалық типтерімен бірдей, типтерді түрлендіруге аз шектеулер қойылады;

-          С++ тілінің көлемі зор емес, себебі барлық орындалатын функциялар қосындыланатын библиотека түрінде дайындалған; сонымен бірге С++ тілі құрамдық бағдарламалау технологиясын толық сүйемелдейді және сәйкес операторлардың толық жиынтығын қамтамасыздандырады;

-          С++ айнымалыларға және функцияларға көрсеткіштерді кең қолданады, және көрсеткіштер арифметикасын сүйемелдейді, сондықтан жады адрестеріне тікелей қол жеткізуді және олармен жұмыс істеуге мүмкіндік береді; параметрлерді жіберуге ыңғайлы құрал – сілтемелер қолданылады;

-          С++ тілінде нысанды бағытталған бағдарламалау тілдердің негізгі қасиеттері бар: нысандар бар, мәліметтерді инкапсуляциялау, типтердің мұрагерлігі, полиморфизм және абстракциялау мүмкіндігі.

Қазіргі кезде Borland International фирмасы С++-тің бірнеше компиляторын өңдеген. Бірақ тілдің ерекшеліктерін оқу үшін компилятордың ең соңғы версиясы қажет емес, ол тек қана күрделі, үлкен бағдарламаларды жазуға қажет.

Курстық жұмыста С++ тілінде бағдарламалаудың негіздерімен бірге мысалдар және қажетті түсініктемелер қарастырылады және 90-шы жылдары Turbo Pascal 7.0 бағдарламасымен бағдарламалық өнімдер нарығында бірге пайда болған С++ компиляторының 3.1 версиясына негізделген. Қосымшаларда барлық қажетті анықтама ақпарат орнатылған.

Пайдаланылған әдебиеттер тізімі және дереккөздер

 

1. ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов и программ. Обозначения условные, графические. – М.: Издательство стандартов,1990.



         2. Ю.Аляев, О.Козлов. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004.

3. Дж.Либерти. Освой самостоятельно С++ за 21 день. – М.: Издательский дом «Вильямс», 2001.

4. И.В.Ашарина. Основы программирования на языках С и С++. – М.: Горячая линия-Телеком, 2002.

5.   Б.И,Березин, С.Б.Березин. Начальный курс С и С++. – М.: ДИАЛОГ-МИФИ, 1999.

6.   А.Б.Крупник. Самоучитель С++. – СПб.: Питер, 2005.

7.   Дж.Бентли. Жемчужины программирования. - СПб.: Питер, 2003.

8.   А.Л.Марченко. С++. Бархатный путь. - М.: Горячая линия-Телеком, 2002.

9.   А.Я.Архангельский. C++ Builder 6. Справочное пособие. Книга 1. Язык С++. – М.: Бином-Пресс, 2002.



         10. Культин Н.Б. Самоучитель С++Builder. – СПб.: БХВ-Петербург, 2004.

 

 


Достарыңызбен бөлісу:




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

    Басты бет