Операциялар
Мазмұны:
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
1. БӨЛІМ. Операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..4
1.1. Операциялар туралы жалпы түсінік ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
1.2. Логикалық операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...13
1.3. Операциялық терістеу және қосымшалар ... ... ... ... ... ... ... ... ... ... ... ... ..16
1.4. С++ тіліндегі логикалық операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
1.5. Шартты операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 21
2. БӨЛІМ. Логикалық операциялар және логикалық қатынастар ... ... ... ... ..23
2.1. С++ тілінде қолданылуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..23
2.2. С++ тіліндегі Булевстік өрнек ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .24
2.3. С++ тілінде логикалық if операторының қолданылуы ... ... ... ... ... ... ... .25
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...28
Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .30
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...4
1. БӨЛІМ. Операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..4
1.1. Операциялар туралы жалпы түсінік ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 4
1.2. Логикалық операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...13
1.3. Операциялық терістеу және қосымшалар ... ... ... ... ... ... ... ... ... ... ... ... ..16
1.4. С++ тіліндегі логикалық операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
1.5. Шартты операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... 21
2. БӨЛІМ. Логикалық операциялар және логикалық қатынастар ... ... ... ... ..23
2.1. С++ тілінде қолданылуы ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..23
2.2. С++ тіліндегі Булевстік өрнек ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .24
2.3. С++ тілінде логикалық if операторының қолданылуы ... ... ... ... ... ... ... .25
Қорытынды ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...28
Қолданылған әдебиеттер ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... .30
С++ тілін 1980 жылдың басында Bell Laboratories фирмасының қызметкері Бьерн Страуструп өз ықпалымен ойлап тапты. С++ тілінің версиялары «С класстарымен» 1980 жылы ең алғашқы танымал болды. Жаңа тіл құру идеясы Страуструптың диссертация үшін программалау тәжірибесінен бастау алады.
1983 жылы «Си класстарының» атын С++ тіліне ауыстыру болды. Сонымен қатар оған жаңа мүмкіндіктер, виртуальды функциялар, қайта жүктелетін функциялар мен операторлар, тұрақтылар, жады арқылы басқарылатын қолданушы бақылауы, типті тексеру және жаңа коментарий стильдері // қосылды. Оның алғашқы тарылымы 1985 жылы қазан айында болды. 1985 жылы «С++ программалау тілінің» алғашқы басылымы шықты. Стандартты кітапхана С++ тілімен бірге қосылды. Стандартты кітапханада С++ тілі алғаш енгізу / шығару ауыстыруды қамтамасыз ететін Си функциялары printf және scanf-ті қосты.
«С++» атын Риком Масситти (Rick Mascitti) ойлап тапты және 1983 жылы желтоқсанда алғаш қолдануға ұсынылды.
С++ тіліндегі ең көп таралған синтаксистік конструкциялардың өрнектері болады. Үлкен қолданыста жүрген арифметикалық операторлардың өрнектері мыналар: қосу (+), алу (-) және көбейту (*). Барлық бөлімдерде де өрнек түрлері сипатталған. Бұлардың арифметикалық операторлардан айырмашылығы операторлардың түрлерінің көпшілігі операторлар сияқты қабылдай алады.
Логикалық операторлардың екі түрі болады, олар: ЖӘНЕ, НЕМЕСЕ. ЖӘНЕ, НЕМЕСЕ операторлары қарапайым логикалық операторлар деп аталады. Операторлардың екінші түрі немесе бит бойынша операторлар уникалды болады, тек қана программалауда қолданылады. Бұл операторлардың түрлері жұмыс жасаған кезде басқа да машиналарда, биттерде саны бойынша ұсынылады. Қолданушы логикалық операторларды бөлініске салмайды. ЖӘНЕ, НЕМЕСЕ операторларының мәндері әр уақытта есептеліп отырады.
Қарапайым логикалық операторлардың екі мәні болады: true (ақиқат) және false ( жалған). Қарапайым логикалық операторлардың мынадай түрлері болады:
= = тең, ақиқаттың қашанда мәні сол аргументтегі оң мәнге сәйкес келуі
керек, яғни тең болады.
! = тең емес, яғни теңдік теріс болу керек.
> ,< үлкен, кіші ақиқаттың қашанда мәні сол өрнектегіден оң мәніне
қарағанда үлкен болуы керек (немесе кіші).
> = , < = үлкен немесе тең, кіші немесе тең; егер мән ақиқат болса, онда ақиқат болады немесе = = ( лайықты екі немесе= = ).
&& және; егер аргумент сол немесе оң болса, онда ақиқат болады.
// НЕМЕСЕ ақиқат, егер немесе сол, немесе оң болса, онда ақиқат болады.
! ЕМЕС егер оның аргументі жалған мәнді қабылдаса, онда ақиқат болады.
Курстық жұмыстың негізгі мақсаты- логикалық операциялардың түрлерін немесе логикалық қатынастардың программада жүзеге асырылуы және қолданылуы.
Курстық жұмыстың негізгі көздеген міндеттері:
• Логикалық операциялар және логикалық қатынастар;
• Логикалық операциялар және логикалық қатынастардың түрлерін қарастыру;
• Оларды программада жүзеге асыру;
Курстық жұмыс екі бөлімнен, кіріспе, қорытынды және қолданылған әдебиеттер тізімінен тұрады.
1983 жылы «Си класстарының» атын С++ тіліне ауыстыру болды. Сонымен қатар оған жаңа мүмкіндіктер, виртуальды функциялар, қайта жүктелетін функциялар мен операторлар, тұрақтылар, жады арқылы басқарылатын қолданушы бақылауы, типті тексеру және жаңа коментарий стильдері // қосылды. Оның алғашқы тарылымы 1985 жылы қазан айында болды. 1985 жылы «С++ программалау тілінің» алғашқы басылымы шықты. Стандартты кітапхана С++ тілімен бірге қосылды. Стандартты кітапханада С++ тілі алғаш енгізу / шығару ауыстыруды қамтамасыз ететін Си функциялары printf және scanf-ті қосты.
«С++» атын Риком Масситти (Rick Mascitti) ойлап тапты және 1983 жылы желтоқсанда алғаш қолдануға ұсынылды.
С++ тіліндегі ең көп таралған синтаксистік конструкциялардың өрнектері болады. Үлкен қолданыста жүрген арифметикалық операторлардың өрнектері мыналар: қосу (+), алу (-) және көбейту (*). Барлық бөлімдерде де өрнек түрлері сипатталған. Бұлардың арифметикалық операторлардан айырмашылығы операторлардың түрлерінің көпшілігі операторлар сияқты қабылдай алады.
Логикалық операторлардың екі түрі болады, олар: ЖӘНЕ, НЕМЕСЕ. ЖӘНЕ, НЕМЕСЕ операторлары қарапайым логикалық операторлар деп аталады. Операторлардың екінші түрі немесе бит бойынша операторлар уникалды болады, тек қана программалауда қолданылады. Бұл операторлардың түрлері жұмыс жасаған кезде басқа да машиналарда, биттерде саны бойынша ұсынылады. Қолданушы логикалық операторларды бөлініске салмайды. ЖӘНЕ, НЕМЕСЕ операторларының мәндері әр уақытта есептеліп отырады.
Қарапайым логикалық операторлардың екі мәні болады: true (ақиқат) және false ( жалған). Қарапайым логикалық операторлардың мынадай түрлері болады:
= = тең, ақиқаттың қашанда мәні сол аргументтегі оң мәнге сәйкес келуі
керек, яғни тең болады.
! = тең емес, яғни теңдік теріс болу керек.
> ,< үлкен, кіші ақиқаттың қашанда мәні сол өрнектегіден оң мәніне
қарағанда үлкен болуы керек (немесе кіші).
> = , < = үлкен немесе тең, кіші немесе тең; егер мән ақиқат болса, онда ақиқат болады немесе = = ( лайықты екі немесе= = ).
&& және; егер аргумент сол немесе оң болса, онда ақиқат болады.
// НЕМЕСЕ ақиқат, егер немесе сол, немесе оң болса, онда ақиқат болады.
! ЕМЕС егер оның аргументі жалған мәнді қабылдаса, онда ақиқат болады.
Курстық жұмыстың негізгі мақсаты- логикалық операциялардың түрлерін немесе логикалық қатынастардың программада жүзеге асырылуы және қолданылуы.
Курстық жұмыстың негізгі көздеген міндеттері:
• Логикалық операциялар және логикалық қатынастар;
• Логикалық операциялар және логикалық қатынастардың түрлерін қарастыру;
• Оларды программада жүзеге асыру;
Курстық жұмыс екі бөлімнен, кіріспе, қорытынды және қолданылған әдебиеттер тізімінен тұрады.
Қолданылған әдебиеттер
1. Андрей Боровский «С++ и Borland C++ Builder »
2. Скотт Майерс «Эффективное С++использование 35новых способов улучшить стиль программиравания»
3. Скотт Майерс «Эффективное С++ использование 50 рекомендации по улучшению ваших программ и проектов»
4. Стефан Р. Дэвис «С++ для «Чайников»»
5. Джермм Сик, Лай-Кван Ли «С++ Boost Craph Library»
6. Ален и Голуб Бином «С&С++ Правила программирования»
7. П.Франка «С++ учебный курс»
8. Г.Шилдт «С# учебный курс»
9. В.В. Подбельский «Язык Си ++»
10. Елена Кондратюк «С++ трюки & эффекти»
11. Т. А. Павловская «С/С++ Программирование на языке высокого уровня»
12. Т. А. Павловская «С/С++ Структурное программирование »
13. Б. Морис HTML в действии
14. Т. Бадд «Обьектно-ориентировочное программирование »
15. Д. Рик «HTML 4 Энциклопедия пользователя. Borland C++Builder»
16. Л. Б. Атымтаева «Объектіге бағытталған программалау негіздері»
17. Вирт И. «Алгоритмы и структуры данных» М.: Мир, 1989.
18.Зелковиц М. Шоу А.Гэннон Дж. «Принципы разработки программного обеспечения» М.: Мир, 1982.
19. Мик Б. и др. «Практическое руководство по программированию» М.: Радио и связь, 1986.
20. Фокс Дж. «Программное обеспечение и его разработка» М.: Мир, 1985.
21. Курочкина В. М. «Язык компьютера» М.: Мир, 1989.
22. Уэит, Мартин Д. «Язык Си» М.:1988ж.
23. Керниган Б. Ритчи Д. Фьюэр А. «Язык программирования Си» М.: Финансы и статистика, 1985.
1. Андрей Боровский «С++ и Borland C++ Builder »
2. Скотт Майерс «Эффективное С++использование 35новых способов улучшить стиль программиравания»
3. Скотт Майерс «Эффективное С++ использование 50 рекомендации по улучшению ваших программ и проектов»
4. Стефан Р. Дэвис «С++ для «Чайников»»
5. Джермм Сик, Лай-Кван Ли «С++ Boost Craph Library»
6. Ален и Голуб Бином «С&С++ Правила программирования»
7. П.Франка «С++ учебный курс»
8. Г.Шилдт «С# учебный курс»
9. В.В. Подбельский «Язык Си ++»
10. Елена Кондратюк «С++ трюки & эффекти»
11. Т. А. Павловская «С/С++ Программирование на языке высокого уровня»
12. Т. А. Павловская «С/С++ Структурное программирование »
13. Б. Морис HTML в действии
14. Т. Бадд «Обьектно-ориентировочное программирование »
15. Д. Рик «HTML 4 Энциклопедия пользователя. Borland C++Builder»
16. Л. Б. Атымтаева «Объектіге бағытталған программалау негіздері»
17. Вирт И. «Алгоритмы и структуры данных» М.: Мир, 1989.
18.Зелковиц М. Шоу А.Гэннон Дж. «Принципы разработки программного обеспечения» М.: Мир, 1982.
19. Мик Б. и др. «Практическое руководство по программированию» М.: Радио и связь, 1986.
20. Фокс Дж. «Программное обеспечение и его разработка» М.: Мир, 1985.
21. Курочкина В. М. «Язык компьютера» М.: Мир, 1989.
22. Уэит, Мартин Д. «Язык Си» М.:1988ж.
23. Керниган Б. Ритчи Д. Фьюэр А. «Язык программирования Си» М.: Финансы и статистика, 1985.
Пән: Информатика, Программалау, Мәліметтер қоры
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 29 бет
Таңдаулыға:
Жұмыс түрі: Курстық жұмыс
Тегін: Антиплагиат
Көлемі: 29 бет
Таңдаулыға:
Мазмұны:
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ...4
1- БӨЛІМ.
Операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... .4
1.1. Операциялар туралы жалпы
түсінік ... ... ... ... ... ... ... ... ... ... ... ... . ... ... ...4
1.2. Логикалық
операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ..13
1.3. Операциялық терістеу және
қосымшалар ... ... ... ... ... ... . ... ... ... ... ... ... .16
1.4. С++ тіліндегі логикалық
операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
1.5. Шартты
операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ...21
2- БӨЛІМ. Логикалық операциялар және логикалық
қатынастар ... ... ... ... ..23
2.1. С++ тілінде
қолданылуы ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... 23
2.2. С++ тіліндегі Булевстік
өрнек ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... 24
2.3. С++ тілінде логикалық if операторының қолданылуы
... ... ... ... ... ... ... .25
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... .28
Қолданылған
әдебиеттер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ...30
Кіріспе
С++ тілін 1980 жылдың басында Bell Laboratories фирмасының қызметкері
Бьерн Страуструп өз ықпалымен ойлап тапты. С++ тілінің версиялары С
класстарымен 1980 жылы ең алғашқы танымал болды. Жаңа тіл құру идеясы
Страуструптың диссертация үшін программалау тәжірибесінен бастау алады.
1983 жылы Си класстарының атын С++ тіліне ауыстыру болды. Сонымен
қатар оған жаңа мүмкіндіктер, виртуальды функциялар, қайта жүктелетін
функциялар мен операторлар, тұрақтылар, жады арқылы басқарылатын қолданушы
бақылауы, типті тексеру және жаңа коментарий стильдері қосылды. Оның
алғашқы тарылымы 1985 жылы қазан айында болды. 1985 жылы С++ программалау
тілінің алғашқы басылымы шықты. Стандартты кітапхана С++ тілімен бірге
қосылды. Стандартты кітапханада С++ тілі алғаш енгізу шығару ауыстыруды
қамтамасыз ететін Си функциялары printf және scanf-ті қосты.
С++ атын Риком Масситти (Rick Mascitti) ойлап тапты және 1983 жылы
желтоқсанда алғаш қолдануға ұсынылды.
С++ тіліндегі ең көп таралған синтаксистік конструкциялардың өрнектері
болады. Үлкен қолданыста жүрген арифметикалық операторлардың өрнектері
мыналар: қосу (+), алу (-) және көбейту (*). Барлық бөлімдерде де өрнек
түрлері сипатталған. Бұлардың арифметикалық операторлардан айырмашылығы
операторлардың түрлерінің көпшілігі операторлар сияқты қабылдай алады.
Логикалық операторлардың екі түрі болады, олар: ЖӘНЕ, НЕМЕСЕ. ЖӘНЕ,
НЕМЕСЕ операторлары қарапайым логикалық операторлар деп аталады.
Операторлардың екінші түрі немесе бит бойынша операторлар уникалды болады,
тек қана программалауда қолданылады. Бұл операторлардың түрлері жұмыс
жасаған кезде басқа да машиналарда, биттерде саны бойынша ұсынылады.
Қолданушы логикалық операторларды бөлініске салмайды. ЖӘНЕ, НЕМЕСЕ
операторларының мәндері әр уақытта есептеліп отырады.
Қарапайым логикалық операторлардың екі мәні болады: true (ақиқат)
және false ( жалған). Қарапайым логикалық операторлардың мынадай түрлері
болады:
= = тең, ақиқаттың қашанда мәні сол аргументтегі оң мәнге сәйкес келуі
керек, яғни тең болады.
! = тең емес, яғни теңдік теріс болу керек.
, үлкен, кіші ақиқаттың қашанда мәні сол өрнектегіден оң мәніне
қарағанда үлкен болуы керек (немесе кіші).
= , = үлкен немесе тең, кіші немесе тең; егер мән ақиқат болса,
онда ақиқат болады немесе = = ( лайықты екі немесе= = ).
&& және; егер аргумент сол немесе оң болса, онда ақиқат болады.
НЕМЕСЕ ақиқат, егер немесе сол, немесе оң болса, онда ақиқат болады.
! ЕМЕС егер оның аргументі жалған мәнді қабылдаса, онда ақиқат болады.
Курстық жұмыстың негізгі мақсаты- логикалық операциялардың
түрлерін немесе логикалық қатынастардың программада жүзеге асырылуы және
қолданылуы.
Курстық жұмыстың негізгі көздеген міндеттері:
• Логикалық операциялар және логикалық қатынастар;
• Логикалық операциялар және логикалық қатынастардың түрлерін қарастыру;
• Оларды программада жүзеге асыру;
Курстық жұмыс екі бөлімнен, кіріспе, қорытынды және қолданылған әдебиеттер
тізімінен тұрады.
1- БӨЛІМ. Операциялар
1.1. Операциялар туралы жалпы түсінік
Операция- бұл комбинациялық символ, анықталатын әрекетіне қарағанда
оның өрнегі басым болады. Си тілінде анықтайтын 5 арифметикалық операция
бар( қосынды операцияның белгілену белгісі ("+"), алынды ("-"), көбейтінді
("*"), бөлінді ("") және бөліндінің қалған қалдығы ("%"). Операцияның
жұмысы және приоритеті қарапайым болады. Орындалу приоритеті бойынша
қосынды мен алындыға қарағанда, көбейтінді, бөлінді және бөліндінің қалған
қалдығы өзара тең және жоғары болады. Олар ассоциативтік (орындалу реті)
арифметикалық операция сияқты солдан оңға қарай қабылданады. Жазылған
өрнектерде келесі символдар (*), (&), (! ), (+ ), ( ) унарлы және бинарлы
операциялар екенін көрсетеді.
% операциясы тек бүтін операндылармен анықталады, бөлінді операциясының
нәтижесі операнд типіне байланысты болып келеді. Си-да бөліндінің бүтін
бөлігі әрқашан бүтін сан береді. Егер біреуінің ғана операнды нақты
болса, онда нәтижесі де нақты типті болады:
3%2нәтиже =1
32нәтиже=1,5
Си тілінде өте жоғары меншіктеу операторы арқылы анықталады, және "="
қарапайым меншіктеу операторы арқылы орындалады.
x=y+z;
Меншіктеуді басқа операторлармен біріктіруге болады, меншіктеу
көшірмесі қысқартылған формада қолданылады, айнымалы өрнек өзгертіледі:
x+=3; эквивалентті x=x+3;
p*=s; эквивалентті p=p*s;
Меншіктеу жалғамалы болуы мүмкін, сондықтан жалғанған есептеулер оңнан
солға қарай орындалады.
i=j=0;
c=1;a=b=c+1;a=b=2;
Айнымалы өрнек бастапқы меншіктеу сияқты орындалуы қажет:
int k=5;
С++ тілінде жиі қолданылатын операциялар инкремента (1-ге арттыру)
және декремента (1-ге кеміту); арнайы белгілері + +және - - болады:
i++; эквивалентті i+=1; немесе i=i+1;
Инкремента және декремента операндтары бүтін немесе нақты типте және
көрсеткіш түрінде болады. Инкремента және декремента операциялары өзінің
операнды сияқты көшіре алады (префикстік форма көшірмесі ), осылай келесіге
жалғасады (постфикстік көшірме). Операциялардың префикстік формадағы
операнды бастапқыда өзгереді, содан кейін жаңа өрнек келесі есептелетін
өрнекте шығады. Келесі операциялардың постфикстік формасындағы операнды
алдыңғы өзгергендей өзгереді және де бұнда жаңа өрнек емес, яғни ескі өрнек
есептеледі:
int i=3;
printf (“\n%d”,i++);мән шығару i=3;
printf (“\n%d”,++i);мән шығару i=4;
Меншіктеудің адрес типінің қорытындысы дөңгелек жақшалардағы
типтерінің атауы арқылы қолданылады, сондықтан нәтижесін өзгертуіміз қажет:
float f1=4.f2=3;
int a=(int)(f1f2); a=1
f2=(float)a+1.5; f2=2.5
Си тілінде логикалық операциялар 2-классқа бөлінеді. Біріншіден, бұл
логикалық функция, шарт қызметкерінің бірлестігі, екіншіден, разрядталған
логикалық операциялар. Логикалық операцияның операнды бүтін типте, нақты
типте, кейбір жағдайда көрсеткіш ретінде де бола алады. Бірінші және
екінші типтегі операндылар өзгеше болуы мүмкін. Алдымен бірінші жағдайда
бірінші операнд есептеледі, егер оның мәні анықталатын операцияның нәтижесі
жеткілікті болса, онда екінші операнд есептелмейді.
Бұлар өзінің операндыларын 1-ге қоса есептейді және оларды 0-ге
теңестіреді. Логикалық операцияның нәтижесі 0 болып табылады, яғни жалған,
немесе 1 мән болса, ақиқат болғанын түсінеміз. Шындығында Си тілінде арнайы
логикалық типтерінің берілгендері және логикалық операция типінің нәтижесі
жоқ, ол бүтін сан болып келеді.
ЖӘНЕ логикалық функциясы, && белгіленеді, НЕМЕСЕ (or ) белгіленуі
, унарлы функция көшіргенде ! алдындағы операнды терістеледі:
if (xy&&yz) min=x;
if(!(x=a && x=z))
printf(“\nx ұсынылады [a,b]”);
Логикалық функцияның приоритеті жақсы: && операциясына қарағанда !
операциясы жоғары болып келеді. Приоритеттерді дөңгелек жақша көмегімен
өзгертуге болады. Разрядталған логикалық операция өзінің операндысының жеке
биттерімен (разрядтарымен) орындалады.
1-кесте. 3 бинарлы және 1 унарлы разрядталған операциялар.
Операнд x 0 0 1 1 Сипаттамасы
Операнд y 0 1 0 1
xy 0 1 1 1 Бит бойынша НЕМЕСЕ
x&y 0 0 0 1 Бит бойынша ЖӘНЕ
x^y 0 1 1 0 Бит бойынша алып
НЕМЕСЕ
~x 1 0 Бит бойынша теріс
Мысалы:
char x=1,y=3; char z=x&y; z=1
char x=0x00; x=x^0x01; не былай x^=1;
ұйымдастыру жалауша ауыстырып қосу
0 және 1 аралығында
ЖӘНЕ операциясы бит бойынша жылжыту болып табылады, сондықтан 2-лік
мәні өзінің операндысын солға және оңға жылжыту арқылы сандық битінің
екінші операндысын анықтайды. Сондықтан солға жылжытатын бос орын болады
да, оңға жылжыту 0-дік мән арқылы орындалады. Осындай оңға жылжытудың
нәтижесі бастапқы мәнді береді, яғни бірінші операндыдағы сұранысты береді.
Егер бұл белгісіздік тип болса, онда солға жылжыту 0-дік мәні бос орын
бола алады. Бұлар қайтадан қайталанып, олардың таныстығы бит арқылы
көшіріледі. Егер екінші операнд теріс болса, онда нәтиже операциясы
белгісіздікке жылжиды. Орындалған жылжытулар өздерінің нүктелерін жоғалтып,
өздеріне жауап бере алмайды. Егер жылжыту мүмкін болмаса, бірінші
операндыдағы тип беріледі де, келесі типтегі ақпарат жойылады.
Мысалы: x=1;сәйкес x*=2;
Басқа операция тілдерінің қатынасы бірінші, екінші операндылар арқылы
теңестіріледі, бүтін мәні 1(ақиқат) және 0 (жалған) болады.
2-кесте. Қатынас операциялары.
Операция Тексеру қатынастары
Бірінші операнд кіші,екіншісіне қарағанда
Бірінші операнд үлкен,екіншісіне қарағанда
Бірінші операнд кіші немесе тең екіншісінен
Бірінші операнд үлкен немесе тең екіншісінен
= Бірінші операнд тең тең екіншісінен
Бірінші операнд тең емес екіншісінен
=
==
!=
Меншіктеудің айырмашылығы "=" екілік белгісі арқылы ережеге міндетті
түрде теңестірілуі керек. Жүйелі түрде операция орындалып, өзінің кезінде 2
операндыдан кейін есептелінеді және де алдымен бірінші операнды, содан соң
екінші операнды орындалады. Операнды өрнек болып, ","- символы белгі
операциясы болады.
i=0, j=0;
Шектеулер типінің операндысы таңдалмай, сұрастырылған типте
орындалмайды. Операция қарапайым есептелген бірнеше өрнектермен
ауыстырылады.
Си тілінде программалауда шарт операциясы екілік емес, үштік емес
операндымен жұмыс істейді, олар келесі формат түрінде болады:
операнд 1? операнд 2: операнд 3.
Операнд 1 есептеліп, 0-ге теңестіріледі. Сондықтан ол бүтін типті,
қалқымалы типті немесе кей-кезде көрсеткіш те болады. Егер операнд 1 тең
емес 0 деп есептелінсе, операнд 2 нәтижесінің мәні пайда болады. Қайта
қайталанатын операнд 3 есептеліп, операция мәнді болады.
Мысалы:
#define max (a,b) (ab ? a:b)
y=(x0?1 : (x==0?0:-1)); y= сан белгісі x
Си тіліндегі приоритет және ассоциативтік операциясының ретінде
топтастырылған операнд және өрнек арқылы есептелінеді. Кестеде
көрсетілгендей Си тіліндегі операция ретінің приоритеті кемиді.
3-кесте. Бір ұйымда орналасқан бірдей приоритет және ассоциативтілік
операциялар.
Операция белгілері Атауы Ассоциативтілік
() [] . - бастапқы солдан оңға
+ - ~ ! * & ++ -- унарлы оңнан солға
sizeor(типі)
тәртіпке келтіру
типі
* % мультипликативтік солдан оңға
+ - аддитивтік солдан оңға
өзгеріс,алға басу солдан оңға
= = қатынас солдан оңға
== != қатынас солдан оңға
& разрядталған ЖӘНЕ солдан оңға
^ разрядталған шығару солдан оңға
НЕМЕСЕ
разрядталған қосу НЕМЕСЕсолдан оңға
&& логикалық ЖӘНЕ солдан оңға
логикалық НЕМЕСЕ солдан оңға
?: шартты оңнан солға
= * = =% = + =-= Қарапайым және күрделі оңнан солға
= =& = =^= меншіктеу
, реттілік есептеу солдан оңға
Келесі айтып кететін приоритеттердің бірнеше операциялары әдетте
сәтсіз болады, сондықтан да разрядталған логикалық операциялар өзгеріс
арқылы жүріп отырады. Олардың приоритеті арифметикалық әрекеттерге
қарағанда төмен болады. Сондықтан өрнек былай есептеледі: a=b&0xF0+1, a=b&
(0xF0+1), a a+b1, (a+b)1.
Операциялар және операндылардың комбинациялық белгілерінің
анықталатын мәндерінің қай-қайсысы олардың өрнегінің нәтижесі болады.
Операция белгісі әрекет болып анықталады, және қай-қайсының да орындалатын
операнды болуы тиіс. Әрбір операндының өрнегі болады. Өрнектің мәнінің
тәуелділігі операция белгісінің орналасуы мен дөңгелек жақшалардағы
өрнектер операцияның приоритеттерінде орындалады. С++ тілінде өрнектер
меншіктеудегі өрнек мәнінің шамасын меншіктей алады. Өрнектерде есептелетін
әрбір операндының типі басқасына қарағанда түрліше болады.
Операнд – бұл констант, литерал, идентификатор, функцияның қоңырауы,
индекстік өрнек, құрылымы құрамдастырылған операнд, операция белгісі және
дөңгелек жақша болып табылады. Басқа операнд қай-қайсысында да константылық
мән де, өрнек те және әрбір операндының типі де болады. Егер операндының
сапасы константыда қолданылса, тұрақтыға және тұрақтының типіне сәйкес мән
береді. Барлық тұрақтылардың типіне int, long, unsigned int, unsigned long
бола алады. Мәндерінің тәуелділігі форманың көшірмесіне тең болып келеді..
Символдық тұрақтының типі int болып, тұрақтының нүктелер жүретін типі
double болады. Жоларалық литерал реттілік символдардан тұрады және олар
тырнақшаға алынады. Char типінің массивтік элементін жадыға ұсынып,
көрсетілген реттілік символы иницилизацияланады.
Жоларалық литералдың мәні бірінші адрес элементінің жолында болады
және синтаксистік жоларалық литерал көрсетілген сhar типінің
түрлендіруінде болады. Жоларалық литерал операнд өрнегінің сапасы көрсеткіш
типінің көлемінде қолданылады. Осындай бірдей жол ауыстырылмауы тиіс,
себебі олардың бөлімдерінде операцияларды меншіктеуге болмайды. Символдар
әр уақытта нөльдік символдар болады, және автоматтандырылған қосу кезінде
жолдардың жадысында сақталады.
Идентификаторлар функцияға ауыстырылады, әрбір идентификатордың типі
болады, оларда орнатылған хабарламалар болады. Идентификаторлардың мәнінің
тәуелділігі келесідей болады:
- Идентификаторлардың обьектілері бүтін және қалқымалы типте болады,
және мәнінің тәуелділігі типіне беріледі;
- Идентификатор обьектісінің типі enum тұрақтысының типінің бір ғана
мәнін береді, олардың көпшілік мәндерінің тұрақтылары алынып тасталынады.
Идентификаторлардың мәні тұрақты мән бола алады. Тип мәні int болады да,
анықталатын мәндері алынып тасталынады.
Меншіктеу операциялары өрнек болуы тиіс, осындай өрнектердің атауы
келесідей болады:
- Идентификаторлардың мәндері бүтін және қалқымалы типтерде, көрсеткіш
типінде, құрылымдар, бірлестіктер болуы керек;
- Индекстік өрнектер массив типінің атауына қатысатын өрнектер немесе
функциясы болуы керек;
- Элемент өрнегінің таңдауы (-) және (,) болса, онда таңдалған элемент
бос болып қатысады;
- Унарлы операцияның өрнегі адрестік (* ) қатысатын өрнекте массив
немесе функция болуы керек;
- Өрнек типінің нәтижесінде бастапқы типінің өлшеміне қарағанда жоғары
болуы керек.
Тұрақтылар өрнегі – бұл өрнек, тұрақтылардың нәтижесі болады. Өрнек
тұрақтысының операндысы бүтін тұрақты, символдық тұрақты, қалқымалы
нүктесіндегі тұрақты, алынып тасталынған тұрақты, өрнегінің көрсетілген
түрі, sizeof операндысының өрнегі және басқада тұрақтылар өрнегі болуы
тиіс. Бұл белгі операциясында қолданылады, және тұрақтылық өрнектер
келесідей болып бөлінеді:
1) Тұрақтылық өрнектерінде меншіктеу операциясын және есептеу реттілігін
қолдануға болмайды (, ).
2) (&) адрес операциясы тек қана бірнеше иницилизацияларда қолданылады.
Операция өрнегінің белгісі операндының өрнегі болып шығады. Операция
өрнегінің белгісі унарлы (бір операндадан ), бинарлы ( екі операндыдан)
және тернарлы (үш операндыдан) болуы мүмкін.
Унарлы өрнектің операндысы бұдан бұрынғы унарлы операциялардың
белгілерінен тұрады және келесідей түрде болады:
белгі –унарлы- операциялық операнд
Бинарлы өрнек екі операндыдан тұрады, бинарлы операциялар мынадай
белгілерге бөлінген:
операнд 1 белгі-бинарлы-операциялық операнд 2
Тернарлы өрнек үш операндыдан тұрады. Тернарлы операциялар мынадай
белгілерге бөлінген, (?) және (:) белгілері келесідей түрде болады:
операнд 1? операнд 2: операнд 3
Сандық операндыларға қатысатын операциялар унарлы, бинарлы, тернарлы
болып бөлінеді.
С++ тілінде келесідей унарлы операциялар болады:
- арифметикалық терістеу (теріс және қосымша);
~ бит бойынша логикалық терістеу (қосымша);
! логикалық терістеу;
* адрестік (жанама адресация);
& есептелетін адрес;
+ унарлы қосу;
++ арттыру (инкремента);
- - азайту (декремента);
Унарлы операция оңнан солға қарай орындалады. Арттыру және азайту
операциясының мәні операндысына арттырылады және азайтылады. Операндылар
оңнан солға қарай бірлік ретінде жазылуы мүмкін. Егер операция белгісі
операндының алдында жазылса, мұндай жағдайда префикстік форма деп аталады,
онда орындалған операндының өзгерісі өрнектерде қолданылады. Егер
операндының белгісі операндыдан кейін жазылса, мұндай жағдайда постфикстік
форма деп аталады, онда операндының басындағы өрнекте қолданылады, содан
кейін оның мәнінің өзгерісі пайда болады. Орындалатын операциялардың
автоматтандырылған типі беріліп, олардың операндыларының өрнегіне барлық
түрлері қатысады және қысқаша көлемі, бүтін шама өлшемі деп бөлінді.
Орындалатын түбегейлі түрлендірулердің тәуелділігінің операндысының типі
немесе операндылардың операциясының өзгешілігінде жалпы арифметикалық
өзгерістер болған. Оларға мына өзгерістер жатады:
1. Егер float типінің операндысы double типіне өзгереді.
2. Егер бірінші операнды long double болса, онда екінші типі осылай
өзгереді.
3. Егер бірінші операнды double болса, онда екінші операнд типі double
типіне өзгереді.
4. Char типі басқа операндылар сияқты short int типіне өзгереді.
5. Unsigned char басқа операндылар сияқты unsigned short типіне
өзгереді.
6. Егер бірінші операнд типі unsigned long болса, онда екінші операндының
типі unsigned long типіне өзгереді.
7. Егер бірінші операнд типі unsigned int болса, онда екінші операнды да
осындай типте өзгереді.
8. Егер бірінші операнд типі long болса, онда екіншісі де long типіне
өзгереді.
Бұндай үлгідегі есептелетін өрнектің операндысы түрлендіру типінің
операндысына қарағанда үлкендеу өлшемде болады.
Мысалы: double ft,sd;
unsigned char ch;
unsigned long in;
int I;
...
sd=ft*(i+chin);
Меншіктеу операторының орындалуы түрлендіргіш бола алады және оны
қолдануға болады. Операнд ch unsigned int типіне өзгереді, одан кейін
unsigned long типіне өзгереді. Сондықтан типтердің өзгерісі unsigned
long типіне өзгереді, және де unsigned long типі бола алады.
Сондықтан double типіне өзгереді және өрнектің барлық нәтижесі double
типі болады.
Операциялар белгілі бір шаманың мәнін бір бірлікке арттыруға немесе
азайтуға мүмкіндік береді. Арттыру және азайту операцияларының екі түрі
бар: постфикстік және префикстік. Олар бір-бірінен тек арттыру немесе
азайту амалының орындалу реттілігіне байланысты ажыратылады. Арттыру және
азайту операциялары өрнектің есептелу барысында, және өрнек есептелгеннен
кейін, немесе өрнек есептелмей тұрып та орындалуы мүмкін. Арттыру (++) және
азайту (--) операциялары унарлы операциялық меншіктеу болады. Олардың
арттыру және азайту операцияларының көпшілігі сәйкес болып келеді. Операнд
бүтін типті және қалқымалы типті болады, немесе көрсеткіші
модификацияланады. Операндының көпшілігі бүтін типті болады. Нәтижесінің
типі операндының типіне сәйкес болады. Арттыру және азайту операцияларына
префикстік немесе постфикстік формалары да жатады, себебі өрнек мәні
арттыру операциясының тәуелділігінде қолданылса, онда көрсеткіш
операциясының формасында қолданылады.
Егер операцияның белгісі операндының алдында тұрса (префикстік
формада), онда операндының өзгерісі оны өрнекте қолданғанға дейін болады
және операциясы нәтижесі операндының мәні арттыру немесе азайту болады.
Операция белгісі операндыдан кейін тұрса (постфикстік формада), онда
операндының басында өрнектің мәні есептеледі және операндының өзгерген түрі
пайда болады.
Мысалы:
int t=1, s=2, z, f;
z=(t++)*5;
Бастапқы көбейту t*5 шығады, содан кейін t-ға арттыру. Нәтижесінде
t=5, t=2 мәнін алады.
f=(++s)3;
Бастапқы мәні s-қа көбейтіледі, содан кейін бөліну операциясы
қолданылады. Нәтижесінде s=3, s=1 мәнін алады.
Көп кездесетін арттыру және азайту операциясының ретімен қолданылады
және өз бетімен жүретін операторлардың эквиваленттілігі префикстік және
постфикстік форма да жазылып тұрады.
z++; * эквиваленттілік * ++z;
Қарапайым меншіктеу операциясы әрбір операндылардың мәнінің ауысымдары
болып, операндының мәні дұрыс болады. Оң операндының типінің өзгерісі сол
операндының дұрыстығына меншіктеу арқылы шығады. Сол операнд
модифицирияланған болуы керек.
Мысалы :
int t;
char f;
long z;
t=f+z;
F айналымының мәні long типіне өзгеріп, f+z есептеледі және
нәтижесінің өзгерісі int типіне немесе t айналымына меншіктеледі. Қарапайым
меншіктеуге қарағанда меншіктеу операциялары барлық топтарда болады.
Қарапайым меншіктеудің операциясы бір бинарлы операциясымен анықталады.
Құрамды меншіктеу операциясының түрі мынадай болады:
(операнд -1) (бинарлы операция ) = (операция -2)
Құрамды меншіктеу операциясының эквивалентілігі келесі қарапайым
меншіктеу сияқты болады:
(операнд-1) = (операнд-1) (бинарлы операция) (операнд-2)
Құрамды меншіктеу өрнегінің нүктелері эквиваленттілік қарапайым
меншіктеу операнд сияқты болады, және соңғы операнд-1 екі рет есептеледі.
Әрбір құрамды меншіктеу операциясының өзгерістерімен орындалып, бинарлы
операцияға сәйкес жүзеге асырылады. Операндылардың операциялары (+ =),
(- =) көрсеткіш болуы мүмкін.
Мысалы:
double arr[4]={ 2.0, 3.3, 5.2, 7.5 } ;
double b=3.0;
b+=arr[2]; * эквиваленттілігі b=b+arr[2] *
arr[3]=b+1; * эквиваленттілігі arr[3]=arr[3](b+1) *
С++ тілінде бір ғана тернарлық операция болады. Ол шартты операция
келесідей форматта болады:
операнд-1? операнд-2: операнд -3
Операнд-1 бүтін типті, қалқымалы типті немесе көрсеткіш типті бола
алады. Оның эквиваленттілігінің нүктесін 0 деп бағалайды. Егер операнд-1 0-
ге тең деп алса, операнд-2 есептеледі және де оның мәні операция нәтижесі
бола алады. Егер операнд-1 0-ге тең деп алынса, операнд-3 есептеледі және
де мәні операция нәтижесі болады да, операнд-2 немесе операнд-3
есептеледі.
Операнд-2 және операнд-3 нәтижесінің артықшылығы келесідей болады:
1) Егер операнд-2 немесе операнд-3 бүтін типті болса, онда қарапайым
арифметикалық өзгерістер орындалады. Нәтижесінің типі операциясының
типінен кейін өзгереді;
2) Егер операнд-2 немесе операнд -3 бір типтің құрылымы болса, онда
көрсеткіші сияқты бола алады;
3) Егер операнд типі void болса, нәтижесінің типі де void болады;
4) Барлық типтегі операнд-1 көрсеткіштер болады және операнд көрсеткіші
void болып, онда нәтижесінде тип болады.
5) Егер операнд-1 көрсеткіш болса, онда басқа константының өрнектерінің
мәні 0 деп алса, нәтижесінде көрсеткіш типі болады.
Мысалы:
max = (d=b) ? b : d;
Максимальдық d және b мәні max мәніне ауыстырылуы арқылы
меншіктеледі.
1.2. Логикалық операциялар
Екі және одан да көп шартты өрнекті біріктіру кезінде логикалық
операциялар қолданылады. Логикалық операцияларға ЖӘНЕ (&&) логикалық
операциясы және НЕМЕСЕ () логикалық операциясы жатады. Логикалық
операциялардың операндылары бүтін типті, қалқымалы типті немесе көрсеткіш
типті болуы мүмкін. Сонымен қатар әрбір операциялар қатысатын операндылар
әртүрлі типте болады.
Логикалық өрнек операндылары солдан оңға қарай есептеледі. Егер
бірінші операндылардағы мән жеткілікті болса, онда операция нәтижесі
анықталып, екінші операнды есептелмейді. Логикалық операциялар стандартты
арифметикалық түрлендіруді шақырмайды. Олар әрбір операндың 0-ге
эквиваленттілігі жағынан бағалайды. Логикалық операциялардың нәтижелері 0
және 1 болғандықтан int типті болады.
ЖӘНЕ (&&) логикалық операциясының операндылары кемінде біреуі 0-ге
тең болса, нәтижесін де 0-ге тең болады. Егер бірінші операндының мәні 0-ге
тең болса, екінші операнд есептелмейді.
НЕМЕСЕ () логикалық операциясы операндыларының мәндерінің екеуіде
0-ге тең болады және нәтижесі 0 болатын логикалық операция. Егер
операндының біреуі 0-дік емес мәнді қабылдайтын болса, операция нәтижесі 1-
ге тең болады. Егер бірінші операнд 0-дік емес мәнді қабылдайтын болса,
екінші операнд есептелмейді.
С++ тіліндегі программалаудың логикалық операциясы күрделі құрылымдағы
шарт болып келеді, оны құрамдастырылған қарапайым шарт ретінде қолдануға да
болады. С++ тіліндегі логикалық операцияларға логикалық ЖӘНЕ, логикалық
НЕМЕСЕ, ! логикалық ЕМЕС операциялары қатысады. Көптеген программаларда
нүктелік жобалауды қамтамасыз етеді, бұндай жағдайда бір ғана есептелетін
есептеулермен анықталады. Қашанда 2 шарттан 1 ғана ақиқат пайда болады.
Сондықтан логикалық операция беріледі:
if (gender==1) && age=65)++seniorFemales;
Бұндағы if операторының мазмұны екі қарапайым шарттан тұрады. Шарт
gender==1, age=65 мүмкін болатын мәндерді тексереді. Қарапайым шарттың сол
жағындағы && опеараторы бірінші тұрған бірнеше приоритеттерді тексереді, ал
== && приоритетіне қарағанда жоғары тұрады. Қарапайым шарттың оң жағындағы
&& келесідей етіп тексергенді қажет етеді, себебі = жоғары &&
приоритетінің оң бөлімінде, ал сол бөлімі true-ға тең болса, логикалық
өрнек AND тексереді. Сондықтан if операторын құрамдастырылған шарт түрін
қарастырайық:
gender==1 && age=65 бұл шарт true-ға тең болады. Егер
құрамдастырылған шартты true-ға тең деп алса, онда есептік seniorFemales
біреуін ғана үлкейтеді. Егер біреуі немесе false шарты программаның
инкрементін жойып алады да, бірақ келесі if операторында қайтып келеді.
Құрамдастырылған шарт көбірек оқу жағынан жақсы жасалады да,
дөңгелек жақшаға алынады:
(gender==1 && age=65)
(логикалық НЕМЕСЕ) операциясына қарайық. Программаларда қамтамасыз
ететін нүктелерімен қатар тек кездейсоқ есептелетін есептеулермен
анықталады. Қашанда бір немесе екі шарт ақиқат болады. логикалық
опрациясын келесідей ауыстыруға болады:
if (semesterAverage = 90 finalExem =90 )
cout “студент бағасы -А” endl;
Бұл оператордың екі қарапайым шарты болады. semesterAverage = 90
тексеріліп анықталады да, студенттің бағасы А деп семестрдің аяғында
көрсетіледі. finalExem =90 шарты тексеріліп анықталады, студенттің бағасы
А- деп экзаменнің соңында көрсетіледі. if операторының құрамдастырылған
шарты мынадай:
semesterAverage = 90 finalExem =90
Егер басқа шарт ақиқат болған жағдайда, А бағасы қойылады. Бұл
хабарлама студент бағасы А-деп қойылмайды, тек қарапайым шарт жалған
болғанда, (егер олардың мәні нөльге тең болса). && осы операциясы
операциясына қарағанда жоғарғы приоритетті болады. Солдан- оңға қарай
ассоция типті операция болады. && және операциясы осы уақытқа дейін
өрнек ретінде бағаланады, және олардың ақиқат немесе жалған екені көрініп
тұрады. Осындай өрнектің үлгісі мынадай болады:
gender==1 && age=65
Сондықтан gender мәні 1-ге тең болмаса, жалғастырмай тоқтатуымыз
керек, егер мәні бірге тең болған жағдайда жалғасады.
&& операциясы өрнекте қолданылудан бас тартады, бірақ бірінші шарттың
түсінігінің тәуелділігі талап етіледі. Осылай басқа шарт келесі шартқа
көмектесе алуы керек. Бұл жағдай көп кездеседі, ... жалғасы
Кіріспе ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... ... ...4
1- БӨЛІМ.
Операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... .4
1.1. Операциялар туралы жалпы
түсінік ... ... ... ... ... ... ... ... ... ... ... ... . ... ... ...4
1.2. Логикалық
операциялар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ..13
1.3. Операциялық терістеу және
қосымшалар ... ... ... ... ... ... . ... ... ... ... ... ... .16
1.4. С++ тіліндегі логикалық
операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... 18
1.5. Шартты
операторлар ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ...21
2- БӨЛІМ. Логикалық операциялар және логикалық
қатынастар ... ... ... ... ..23
2.1. С++ тілінде
қолданылуы ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... 23
2.2. С++ тіліндегі Булевстік
өрнек ... ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... 24
2.3. С++ тілінде логикалық if операторының қолданылуы
... ... ... ... ... ... ... .25
Қорытынды ... ... ... ... ... ... .. ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ... ... ... ... ... ... .28
Қолданылған
әдебиеттер ... ... ... ... ... ... . ... ... ... ... ... ... ... ... ... ... ..
... ... ... ... ...30
Кіріспе
С++ тілін 1980 жылдың басында Bell Laboratories фирмасының қызметкері
Бьерн Страуструп өз ықпалымен ойлап тапты. С++ тілінің версиялары С
класстарымен 1980 жылы ең алғашқы танымал болды. Жаңа тіл құру идеясы
Страуструптың диссертация үшін программалау тәжірибесінен бастау алады.
1983 жылы Си класстарының атын С++ тіліне ауыстыру болды. Сонымен
қатар оған жаңа мүмкіндіктер, виртуальды функциялар, қайта жүктелетін
функциялар мен операторлар, тұрақтылар, жады арқылы басқарылатын қолданушы
бақылауы, типті тексеру және жаңа коментарий стильдері қосылды. Оның
алғашқы тарылымы 1985 жылы қазан айында болды. 1985 жылы С++ программалау
тілінің алғашқы басылымы шықты. Стандартты кітапхана С++ тілімен бірге
қосылды. Стандартты кітапханада С++ тілі алғаш енгізу шығару ауыстыруды
қамтамасыз ететін Си функциялары printf және scanf-ті қосты.
С++ атын Риком Масситти (Rick Mascitti) ойлап тапты және 1983 жылы
желтоқсанда алғаш қолдануға ұсынылды.
С++ тіліндегі ең көп таралған синтаксистік конструкциялардың өрнектері
болады. Үлкен қолданыста жүрген арифметикалық операторлардың өрнектері
мыналар: қосу (+), алу (-) және көбейту (*). Барлық бөлімдерде де өрнек
түрлері сипатталған. Бұлардың арифметикалық операторлардан айырмашылығы
операторлардың түрлерінің көпшілігі операторлар сияқты қабылдай алады.
Логикалық операторлардың екі түрі болады, олар: ЖӘНЕ, НЕМЕСЕ. ЖӘНЕ,
НЕМЕСЕ операторлары қарапайым логикалық операторлар деп аталады.
Операторлардың екінші түрі немесе бит бойынша операторлар уникалды болады,
тек қана программалауда қолданылады. Бұл операторлардың түрлері жұмыс
жасаған кезде басқа да машиналарда, биттерде саны бойынша ұсынылады.
Қолданушы логикалық операторларды бөлініске салмайды. ЖӘНЕ, НЕМЕСЕ
операторларының мәндері әр уақытта есептеліп отырады.
Қарапайым логикалық операторлардың екі мәні болады: true (ақиқат)
және false ( жалған). Қарапайым логикалық операторлардың мынадай түрлері
болады:
= = тең, ақиқаттың қашанда мәні сол аргументтегі оң мәнге сәйкес келуі
керек, яғни тең болады.
! = тең емес, яғни теңдік теріс болу керек.
, үлкен, кіші ақиқаттың қашанда мәні сол өрнектегіден оң мәніне
қарағанда үлкен болуы керек (немесе кіші).
= , = үлкен немесе тең, кіші немесе тең; егер мән ақиқат болса,
онда ақиқат болады немесе = = ( лайықты екі немесе= = ).
&& және; егер аргумент сол немесе оң болса, онда ақиқат болады.
НЕМЕСЕ ақиқат, егер немесе сол, немесе оң болса, онда ақиқат болады.
! ЕМЕС егер оның аргументі жалған мәнді қабылдаса, онда ақиқат болады.
Курстық жұмыстың негізгі мақсаты- логикалық операциялардың
түрлерін немесе логикалық қатынастардың программада жүзеге асырылуы және
қолданылуы.
Курстық жұмыстың негізгі көздеген міндеттері:
• Логикалық операциялар және логикалық қатынастар;
• Логикалық операциялар және логикалық қатынастардың түрлерін қарастыру;
• Оларды программада жүзеге асыру;
Курстық жұмыс екі бөлімнен, кіріспе, қорытынды және қолданылған әдебиеттер
тізімінен тұрады.
1- БӨЛІМ. Операциялар
1.1. Операциялар туралы жалпы түсінік
Операция- бұл комбинациялық символ, анықталатын әрекетіне қарағанда
оның өрнегі басым болады. Си тілінде анықтайтын 5 арифметикалық операция
бар( қосынды операцияның белгілену белгісі ("+"), алынды ("-"), көбейтінді
("*"), бөлінді ("") және бөліндінің қалған қалдығы ("%"). Операцияның
жұмысы және приоритеті қарапайым болады. Орындалу приоритеті бойынша
қосынды мен алындыға қарағанда, көбейтінді, бөлінді және бөліндінің қалған
қалдығы өзара тең және жоғары болады. Олар ассоциативтік (орындалу реті)
арифметикалық операция сияқты солдан оңға қарай қабылданады. Жазылған
өрнектерде келесі символдар (*), (&), (! ), (+ ), ( ) унарлы және бинарлы
операциялар екенін көрсетеді.
% операциясы тек бүтін операндылармен анықталады, бөлінді операциясының
нәтижесі операнд типіне байланысты болып келеді. Си-да бөліндінің бүтін
бөлігі әрқашан бүтін сан береді. Егер біреуінің ғана операнды нақты
болса, онда нәтижесі де нақты типті болады:
3%2нәтиже =1
32нәтиже=1,5
Си тілінде өте жоғары меншіктеу операторы арқылы анықталады, және "="
қарапайым меншіктеу операторы арқылы орындалады.
x=y+z;
Меншіктеуді басқа операторлармен біріктіруге болады, меншіктеу
көшірмесі қысқартылған формада қолданылады, айнымалы өрнек өзгертіледі:
x+=3; эквивалентті x=x+3;
p*=s; эквивалентті p=p*s;
Меншіктеу жалғамалы болуы мүмкін, сондықтан жалғанған есептеулер оңнан
солға қарай орындалады.
i=j=0;
c=1;a=b=c+1;a=b=2;
Айнымалы өрнек бастапқы меншіктеу сияқты орындалуы қажет:
int k=5;
С++ тілінде жиі қолданылатын операциялар инкремента (1-ге арттыру)
және декремента (1-ге кеміту); арнайы белгілері + +және - - болады:
i++; эквивалентті i+=1; немесе i=i+1;
Инкремента және декремента операндтары бүтін немесе нақты типте және
көрсеткіш түрінде болады. Инкремента және декремента операциялары өзінің
операнды сияқты көшіре алады (префикстік форма көшірмесі ), осылай келесіге
жалғасады (постфикстік көшірме). Операциялардың префикстік формадағы
операнды бастапқыда өзгереді, содан кейін жаңа өрнек келесі есептелетін
өрнекте шығады. Келесі операциялардың постфикстік формасындағы операнды
алдыңғы өзгергендей өзгереді және де бұнда жаңа өрнек емес, яғни ескі өрнек
есептеледі:
int i=3;
printf (“\n%d”,i++);мән шығару i=3;
printf (“\n%d”,++i);мән шығару i=4;
Меншіктеудің адрес типінің қорытындысы дөңгелек жақшалардағы
типтерінің атауы арқылы қолданылады, сондықтан нәтижесін өзгертуіміз қажет:
float f1=4.f2=3;
int a=(int)(f1f2); a=1
f2=(float)a+1.5; f2=2.5
Си тілінде логикалық операциялар 2-классқа бөлінеді. Біріншіден, бұл
логикалық функция, шарт қызметкерінің бірлестігі, екіншіден, разрядталған
логикалық операциялар. Логикалық операцияның операнды бүтін типте, нақты
типте, кейбір жағдайда көрсеткіш ретінде де бола алады. Бірінші және
екінші типтегі операндылар өзгеше болуы мүмкін. Алдымен бірінші жағдайда
бірінші операнд есептеледі, егер оның мәні анықталатын операцияның нәтижесі
жеткілікті болса, онда екінші операнд есептелмейді.
Бұлар өзінің операндыларын 1-ге қоса есептейді және оларды 0-ге
теңестіреді. Логикалық операцияның нәтижесі 0 болып табылады, яғни жалған,
немесе 1 мән болса, ақиқат болғанын түсінеміз. Шындығында Си тілінде арнайы
логикалық типтерінің берілгендері және логикалық операция типінің нәтижесі
жоқ, ол бүтін сан болып келеді.
ЖӘНЕ логикалық функциясы, && белгіленеді, НЕМЕСЕ (or ) белгіленуі
, унарлы функция көшіргенде ! алдындағы операнды терістеледі:
if (xy&&yz) min=x;
if(!(x=a && x=z))
printf(“\nx ұсынылады [a,b]”);
Логикалық функцияның приоритеті жақсы: && операциясына қарағанда !
операциясы жоғары болып келеді. Приоритеттерді дөңгелек жақша көмегімен
өзгертуге болады. Разрядталған логикалық операция өзінің операндысының жеке
биттерімен (разрядтарымен) орындалады.
1-кесте. 3 бинарлы және 1 унарлы разрядталған операциялар.
Операнд x 0 0 1 1 Сипаттамасы
Операнд y 0 1 0 1
xy 0 1 1 1 Бит бойынша НЕМЕСЕ
x&y 0 0 0 1 Бит бойынша ЖӘНЕ
x^y 0 1 1 0 Бит бойынша алып
НЕМЕСЕ
~x 1 0 Бит бойынша теріс
Мысалы:
char x=1,y=3; char z=x&y; z=1
char x=0x00; x=x^0x01; не былай x^=1;
ұйымдастыру жалауша ауыстырып қосу
0 және 1 аралығында
ЖӘНЕ операциясы бит бойынша жылжыту болып табылады, сондықтан 2-лік
мәні өзінің операндысын солға және оңға жылжыту арқылы сандық битінің
екінші операндысын анықтайды. Сондықтан солға жылжытатын бос орын болады
да, оңға жылжыту 0-дік мән арқылы орындалады. Осындай оңға жылжытудың
нәтижесі бастапқы мәнді береді, яғни бірінші операндыдағы сұранысты береді.
Егер бұл белгісіздік тип болса, онда солға жылжыту 0-дік мәні бос орын
бола алады. Бұлар қайтадан қайталанып, олардың таныстығы бит арқылы
көшіріледі. Егер екінші операнд теріс болса, онда нәтиже операциясы
белгісіздікке жылжиды. Орындалған жылжытулар өздерінің нүктелерін жоғалтып,
өздеріне жауап бере алмайды. Егер жылжыту мүмкін болмаса, бірінші
операндыдағы тип беріледі де, келесі типтегі ақпарат жойылады.
Мысалы: x=1;сәйкес x*=2;
Басқа операция тілдерінің қатынасы бірінші, екінші операндылар арқылы
теңестіріледі, бүтін мәні 1(ақиқат) және 0 (жалған) болады.
2-кесте. Қатынас операциялары.
Операция Тексеру қатынастары
Бірінші операнд кіші,екіншісіне қарағанда
Бірінші операнд үлкен,екіншісіне қарағанда
Бірінші операнд кіші немесе тең екіншісінен
Бірінші операнд үлкен немесе тең екіншісінен
= Бірінші операнд тең тең екіншісінен
Бірінші операнд тең емес екіншісінен
=
==
!=
Меншіктеудің айырмашылығы "=" екілік белгісі арқылы ережеге міндетті
түрде теңестірілуі керек. Жүйелі түрде операция орындалып, өзінің кезінде 2
операндыдан кейін есептелінеді және де алдымен бірінші операнды, содан соң
екінші операнды орындалады. Операнды өрнек болып, ","- символы белгі
операциясы болады.
i=0, j=0;
Шектеулер типінің операндысы таңдалмай, сұрастырылған типте
орындалмайды. Операция қарапайым есептелген бірнеше өрнектермен
ауыстырылады.
Си тілінде программалауда шарт операциясы екілік емес, үштік емес
операндымен жұмыс істейді, олар келесі формат түрінде болады:
операнд 1? операнд 2: операнд 3.
Операнд 1 есептеліп, 0-ге теңестіріледі. Сондықтан ол бүтін типті,
қалқымалы типті немесе кей-кезде көрсеткіш те болады. Егер операнд 1 тең
емес 0 деп есептелінсе, операнд 2 нәтижесінің мәні пайда болады. Қайта
қайталанатын операнд 3 есептеліп, операция мәнді болады.
Мысалы:
#define max (a,b) (ab ? a:b)
y=(x0?1 : (x==0?0:-1)); y= сан белгісі x
Си тіліндегі приоритет және ассоциативтік операциясының ретінде
топтастырылған операнд және өрнек арқылы есептелінеді. Кестеде
көрсетілгендей Си тіліндегі операция ретінің приоритеті кемиді.
3-кесте. Бір ұйымда орналасқан бірдей приоритет және ассоциативтілік
операциялар.
Операция белгілері Атауы Ассоциативтілік
() [] . - бастапқы солдан оңға
+ - ~ ! * & ++ -- унарлы оңнан солға
sizeor(типі)
тәртіпке келтіру
типі
* % мультипликативтік солдан оңға
+ - аддитивтік солдан оңға
өзгеріс,алға басу солдан оңға
= = қатынас солдан оңға
== != қатынас солдан оңға
& разрядталған ЖӘНЕ солдан оңға
^ разрядталған шығару солдан оңға
НЕМЕСЕ
разрядталған қосу НЕМЕСЕсолдан оңға
&& логикалық ЖӘНЕ солдан оңға
логикалық НЕМЕСЕ солдан оңға
?: шартты оңнан солға
= * = =% = + =-= Қарапайым және күрделі оңнан солға
= =& = =^= меншіктеу
, реттілік есептеу солдан оңға
Келесі айтып кететін приоритеттердің бірнеше операциялары әдетте
сәтсіз болады, сондықтан да разрядталған логикалық операциялар өзгеріс
арқылы жүріп отырады. Олардың приоритеті арифметикалық әрекеттерге
қарағанда төмен болады. Сондықтан өрнек былай есептеледі: a=b&0xF0+1, a=b&
(0xF0+1), a a+b1, (a+b)1.
Операциялар және операндылардың комбинациялық белгілерінің
анықталатын мәндерінің қай-қайсысы олардың өрнегінің нәтижесі болады.
Операция белгісі әрекет болып анықталады, және қай-қайсының да орындалатын
операнды болуы тиіс. Әрбір операндының өрнегі болады. Өрнектің мәнінің
тәуелділігі операция белгісінің орналасуы мен дөңгелек жақшалардағы
өрнектер операцияның приоритеттерінде орындалады. С++ тілінде өрнектер
меншіктеудегі өрнек мәнінің шамасын меншіктей алады. Өрнектерде есептелетін
әрбір операндының типі басқасына қарағанда түрліше болады.
Операнд – бұл констант, литерал, идентификатор, функцияның қоңырауы,
индекстік өрнек, құрылымы құрамдастырылған операнд, операция белгісі және
дөңгелек жақша болып табылады. Басқа операнд қай-қайсысында да константылық
мән де, өрнек те және әрбір операндының типі де болады. Егер операндының
сапасы константыда қолданылса, тұрақтыға және тұрақтының типіне сәйкес мән
береді. Барлық тұрақтылардың типіне int, long, unsigned int, unsigned long
бола алады. Мәндерінің тәуелділігі форманың көшірмесіне тең болып келеді..
Символдық тұрақтының типі int болып, тұрақтының нүктелер жүретін типі
double болады. Жоларалық литерал реттілік символдардан тұрады және олар
тырнақшаға алынады. Char типінің массивтік элементін жадыға ұсынып,
көрсетілген реттілік символы иницилизацияланады.
Жоларалық литералдың мәні бірінші адрес элементінің жолында болады
және синтаксистік жоларалық литерал көрсетілген сhar типінің
түрлендіруінде болады. Жоларалық литерал операнд өрнегінің сапасы көрсеткіш
типінің көлемінде қолданылады. Осындай бірдей жол ауыстырылмауы тиіс,
себебі олардың бөлімдерінде операцияларды меншіктеуге болмайды. Символдар
әр уақытта нөльдік символдар болады, және автоматтандырылған қосу кезінде
жолдардың жадысында сақталады.
Идентификаторлар функцияға ауыстырылады, әрбір идентификатордың типі
болады, оларда орнатылған хабарламалар болады. Идентификаторлардың мәнінің
тәуелділігі келесідей болады:
- Идентификаторлардың обьектілері бүтін және қалқымалы типте болады,
және мәнінің тәуелділігі типіне беріледі;
- Идентификатор обьектісінің типі enum тұрақтысының типінің бір ғана
мәнін береді, олардың көпшілік мәндерінің тұрақтылары алынып тасталынады.
Идентификаторлардың мәні тұрақты мән бола алады. Тип мәні int болады да,
анықталатын мәндері алынып тасталынады.
Меншіктеу операциялары өрнек болуы тиіс, осындай өрнектердің атауы
келесідей болады:
- Идентификаторлардың мәндері бүтін және қалқымалы типтерде, көрсеткіш
типінде, құрылымдар, бірлестіктер болуы керек;
- Индекстік өрнектер массив типінің атауына қатысатын өрнектер немесе
функциясы болуы керек;
- Элемент өрнегінің таңдауы (-) және (,) болса, онда таңдалған элемент
бос болып қатысады;
- Унарлы операцияның өрнегі адрестік (* ) қатысатын өрнекте массив
немесе функция болуы керек;
- Өрнек типінің нәтижесінде бастапқы типінің өлшеміне қарағанда жоғары
болуы керек.
Тұрақтылар өрнегі – бұл өрнек, тұрақтылардың нәтижесі болады. Өрнек
тұрақтысының операндысы бүтін тұрақты, символдық тұрақты, қалқымалы
нүктесіндегі тұрақты, алынып тасталынған тұрақты, өрнегінің көрсетілген
түрі, sizeof операндысының өрнегі және басқада тұрақтылар өрнегі болуы
тиіс. Бұл белгі операциясында қолданылады, және тұрақтылық өрнектер
келесідей болып бөлінеді:
1) Тұрақтылық өрнектерінде меншіктеу операциясын және есептеу реттілігін
қолдануға болмайды (, ).
2) (&) адрес операциясы тек қана бірнеше иницилизацияларда қолданылады.
Операция өрнегінің белгісі операндының өрнегі болып шығады. Операция
өрнегінің белгісі унарлы (бір операндадан ), бинарлы ( екі операндыдан)
және тернарлы (үш операндыдан) болуы мүмкін.
Унарлы өрнектің операндысы бұдан бұрынғы унарлы операциялардың
белгілерінен тұрады және келесідей түрде болады:
белгі –унарлы- операциялық операнд
Бинарлы өрнек екі операндыдан тұрады, бинарлы операциялар мынадай
белгілерге бөлінген:
операнд 1 белгі-бинарлы-операциялық операнд 2
Тернарлы өрнек үш операндыдан тұрады. Тернарлы операциялар мынадай
белгілерге бөлінген, (?) және (:) белгілері келесідей түрде болады:
операнд 1? операнд 2: операнд 3
Сандық операндыларға қатысатын операциялар унарлы, бинарлы, тернарлы
болып бөлінеді.
С++ тілінде келесідей унарлы операциялар болады:
- арифметикалық терістеу (теріс және қосымша);
~ бит бойынша логикалық терістеу (қосымша);
! логикалық терістеу;
* адрестік (жанама адресация);
& есептелетін адрес;
+ унарлы қосу;
++ арттыру (инкремента);
- - азайту (декремента);
Унарлы операция оңнан солға қарай орындалады. Арттыру және азайту
операциясының мәні операндысына арттырылады және азайтылады. Операндылар
оңнан солға қарай бірлік ретінде жазылуы мүмкін. Егер операция белгісі
операндының алдында жазылса, мұндай жағдайда префикстік форма деп аталады,
онда орындалған операндының өзгерісі өрнектерде қолданылады. Егер
операндының белгісі операндыдан кейін жазылса, мұндай жағдайда постфикстік
форма деп аталады, онда операндының басындағы өрнекте қолданылады, содан
кейін оның мәнінің өзгерісі пайда болады. Орындалатын операциялардың
автоматтандырылған типі беріліп, олардың операндыларының өрнегіне барлық
түрлері қатысады және қысқаша көлемі, бүтін шама өлшемі деп бөлінді.
Орындалатын түбегейлі түрлендірулердің тәуелділігінің операндысының типі
немесе операндылардың операциясының өзгешілігінде жалпы арифметикалық
өзгерістер болған. Оларға мына өзгерістер жатады:
1. Егер float типінің операндысы double типіне өзгереді.
2. Егер бірінші операнды long double болса, онда екінші типі осылай
өзгереді.
3. Егер бірінші операнды double болса, онда екінші операнд типі double
типіне өзгереді.
4. Char типі басқа операндылар сияқты short int типіне өзгереді.
5. Unsigned char басқа операндылар сияқты unsigned short типіне
өзгереді.
6. Егер бірінші операнд типі unsigned long болса, онда екінші операндының
типі unsigned long типіне өзгереді.
7. Егер бірінші операнд типі unsigned int болса, онда екінші операнды да
осындай типте өзгереді.
8. Егер бірінші операнд типі long болса, онда екіншісі де long типіне
өзгереді.
Бұндай үлгідегі есептелетін өрнектің операндысы түрлендіру типінің
операндысына қарағанда үлкендеу өлшемде болады.
Мысалы: double ft,sd;
unsigned char ch;
unsigned long in;
int I;
...
sd=ft*(i+chin);
Меншіктеу операторының орындалуы түрлендіргіш бола алады және оны
қолдануға болады. Операнд ch unsigned int типіне өзгереді, одан кейін
unsigned long типіне өзгереді. Сондықтан типтердің өзгерісі unsigned
long типіне өзгереді, және де unsigned long типі бола алады.
Сондықтан double типіне өзгереді және өрнектің барлық нәтижесі double
типі болады.
Операциялар белгілі бір шаманың мәнін бір бірлікке арттыруға немесе
азайтуға мүмкіндік береді. Арттыру және азайту операцияларының екі түрі
бар: постфикстік және префикстік. Олар бір-бірінен тек арттыру немесе
азайту амалының орындалу реттілігіне байланысты ажыратылады. Арттыру және
азайту операциялары өрнектің есептелу барысында, және өрнек есептелгеннен
кейін, немесе өрнек есептелмей тұрып та орындалуы мүмкін. Арттыру (++) және
азайту (--) операциялары унарлы операциялық меншіктеу болады. Олардың
арттыру және азайту операцияларының көпшілігі сәйкес болып келеді. Операнд
бүтін типті және қалқымалы типті болады, немесе көрсеткіші
модификацияланады. Операндының көпшілігі бүтін типті болады. Нәтижесінің
типі операндының типіне сәйкес болады. Арттыру және азайту операцияларына
префикстік немесе постфикстік формалары да жатады, себебі өрнек мәні
арттыру операциясының тәуелділігінде қолданылса, онда көрсеткіш
операциясының формасында қолданылады.
Егер операцияның белгісі операндының алдында тұрса (префикстік
формада), онда операндының өзгерісі оны өрнекте қолданғанға дейін болады
және операциясы нәтижесі операндының мәні арттыру немесе азайту болады.
Операция белгісі операндыдан кейін тұрса (постфикстік формада), онда
операндының басында өрнектің мәні есептеледі және операндының өзгерген түрі
пайда болады.
Мысалы:
int t=1, s=2, z, f;
z=(t++)*5;
Бастапқы көбейту t*5 шығады, содан кейін t-ға арттыру. Нәтижесінде
t=5, t=2 мәнін алады.
f=(++s)3;
Бастапқы мәні s-қа көбейтіледі, содан кейін бөліну операциясы
қолданылады. Нәтижесінде s=3, s=1 мәнін алады.
Көп кездесетін арттыру және азайту операциясының ретімен қолданылады
және өз бетімен жүретін операторлардың эквиваленттілігі префикстік және
постфикстік форма да жазылып тұрады.
z++; * эквиваленттілік * ++z;
Қарапайым меншіктеу операциясы әрбір операндылардың мәнінің ауысымдары
болып, операндының мәні дұрыс болады. Оң операндының типінің өзгерісі сол
операндының дұрыстығына меншіктеу арқылы шығады. Сол операнд
модифицирияланған болуы керек.
Мысалы :
int t;
char f;
long z;
t=f+z;
F айналымының мәні long типіне өзгеріп, f+z есептеледі және
нәтижесінің өзгерісі int типіне немесе t айналымына меншіктеледі. Қарапайым
меншіктеуге қарағанда меншіктеу операциялары барлық топтарда болады.
Қарапайым меншіктеудің операциясы бір бинарлы операциясымен анықталады.
Құрамды меншіктеу операциясының түрі мынадай болады:
(операнд -1) (бинарлы операция ) = (операция -2)
Құрамды меншіктеу операциясының эквивалентілігі келесі қарапайым
меншіктеу сияқты болады:
(операнд-1) = (операнд-1) (бинарлы операция) (операнд-2)
Құрамды меншіктеу өрнегінің нүктелері эквиваленттілік қарапайым
меншіктеу операнд сияқты болады, және соңғы операнд-1 екі рет есептеледі.
Әрбір құрамды меншіктеу операциясының өзгерістерімен орындалып, бинарлы
операцияға сәйкес жүзеге асырылады. Операндылардың операциялары (+ =),
(- =) көрсеткіш болуы мүмкін.
Мысалы:
double arr[4]={ 2.0, 3.3, 5.2, 7.5 } ;
double b=3.0;
b+=arr[2]; * эквиваленттілігі b=b+arr[2] *
arr[3]=b+1; * эквиваленттілігі arr[3]=arr[3](b+1) *
С++ тілінде бір ғана тернарлық операция болады. Ол шартты операция
келесідей форматта болады:
операнд-1? операнд-2: операнд -3
Операнд-1 бүтін типті, қалқымалы типті немесе көрсеткіш типті бола
алады. Оның эквиваленттілігінің нүктесін 0 деп бағалайды. Егер операнд-1 0-
ге тең деп алса, операнд-2 есептеледі және де оның мәні операция нәтижесі
бола алады. Егер операнд-1 0-ге тең деп алынса, операнд-3 есептеледі және
де мәні операция нәтижесі болады да, операнд-2 немесе операнд-3
есептеледі.
Операнд-2 және операнд-3 нәтижесінің артықшылығы келесідей болады:
1) Егер операнд-2 немесе операнд-3 бүтін типті болса, онда қарапайым
арифметикалық өзгерістер орындалады. Нәтижесінің типі операциясының
типінен кейін өзгереді;
2) Егер операнд-2 немесе операнд -3 бір типтің құрылымы болса, онда
көрсеткіші сияқты бола алады;
3) Егер операнд типі void болса, нәтижесінің типі де void болады;
4) Барлық типтегі операнд-1 көрсеткіштер болады және операнд көрсеткіші
void болып, онда нәтижесінде тип болады.
5) Егер операнд-1 көрсеткіш болса, онда басқа константының өрнектерінің
мәні 0 деп алса, нәтижесінде көрсеткіш типі болады.
Мысалы:
max = (d=b) ? b : d;
Максимальдық d және b мәні max мәніне ауыстырылуы арқылы
меншіктеледі.
1.2. Логикалық операциялар
Екі және одан да көп шартты өрнекті біріктіру кезінде логикалық
операциялар қолданылады. Логикалық операцияларға ЖӘНЕ (&&) логикалық
операциясы және НЕМЕСЕ () логикалық операциясы жатады. Логикалық
операциялардың операндылары бүтін типті, қалқымалы типті немесе көрсеткіш
типті болуы мүмкін. Сонымен қатар әрбір операциялар қатысатын операндылар
әртүрлі типте болады.
Логикалық өрнек операндылары солдан оңға қарай есептеледі. Егер
бірінші операндылардағы мән жеткілікті болса, онда операция нәтижесі
анықталып, екінші операнды есептелмейді. Логикалық операциялар стандартты
арифметикалық түрлендіруді шақырмайды. Олар әрбір операндың 0-ге
эквиваленттілігі жағынан бағалайды. Логикалық операциялардың нәтижелері 0
және 1 болғандықтан int типті болады.
ЖӘНЕ (&&) логикалық операциясының операндылары кемінде біреуі 0-ге
тең болса, нәтижесін де 0-ге тең болады. Егер бірінші операндының мәні 0-ге
тең болса, екінші операнд есептелмейді.
НЕМЕСЕ () логикалық операциясы операндыларының мәндерінің екеуіде
0-ге тең болады және нәтижесі 0 болатын логикалық операция. Егер
операндының біреуі 0-дік емес мәнді қабылдайтын болса, операция нәтижесі 1-
ге тең болады. Егер бірінші операнд 0-дік емес мәнді қабылдайтын болса,
екінші операнд есептелмейді.
С++ тіліндегі программалаудың логикалық операциясы күрделі құрылымдағы
шарт болып келеді, оны құрамдастырылған қарапайым шарт ретінде қолдануға да
болады. С++ тіліндегі логикалық операцияларға логикалық ЖӘНЕ, логикалық
НЕМЕСЕ, ! логикалық ЕМЕС операциялары қатысады. Көптеген программаларда
нүктелік жобалауды қамтамасыз етеді, бұндай жағдайда бір ғана есептелетін
есептеулермен анықталады. Қашанда 2 шарттан 1 ғана ақиқат пайда болады.
Сондықтан логикалық операция беріледі:
if (gender==1) && age=65)++seniorFemales;
Бұндағы if операторының мазмұны екі қарапайым шарттан тұрады. Шарт
gender==1, age=65 мүмкін болатын мәндерді тексереді. Қарапайым шарттың сол
жағындағы && опеараторы бірінші тұрған бірнеше приоритеттерді тексереді, ал
== && приоритетіне қарағанда жоғары тұрады. Қарапайым шарттың оң жағындағы
&& келесідей етіп тексергенді қажет етеді, себебі = жоғары &&
приоритетінің оң бөлімінде, ал сол бөлімі true-ға тең болса, логикалық
өрнек AND тексереді. Сондықтан if операторын құрамдастырылған шарт түрін
қарастырайық:
gender==1 && age=65 бұл шарт true-ға тең болады. Егер
құрамдастырылған шартты true-ға тең деп алса, онда есептік seniorFemales
біреуін ғана үлкейтеді. Егер біреуі немесе false шарты программаның
инкрементін жойып алады да, бірақ келесі if операторында қайтып келеді.
Құрамдастырылған шарт көбірек оқу жағынан жақсы жасалады да,
дөңгелек жақшаға алынады:
(gender==1 && age=65)
(логикалық НЕМЕСЕ) операциясына қарайық. Программаларда қамтамасыз
ететін нүктелерімен қатар тек кездейсоқ есептелетін есептеулермен
анықталады. Қашанда бір немесе екі шарт ақиқат болады. логикалық
опрациясын келесідей ауыстыруға болады:
if (semesterAverage = 90 finalExem =90 )
cout “студент бағасы -А” endl;
Бұл оператордың екі қарапайым шарты болады. semesterAverage = 90
тексеріліп анықталады да, студенттің бағасы А деп семестрдің аяғында
көрсетіледі. finalExem =90 шарты тексеріліп анықталады, студенттің бағасы
А- деп экзаменнің соңында көрсетіледі. if операторының құрамдастырылған
шарты мынадай:
semesterAverage = 90 finalExem =90
Егер басқа шарт ақиқат болған жағдайда, А бағасы қойылады. Бұл
хабарлама студент бағасы А-деп қойылмайды, тек қарапайым шарт жалған
болғанда, (егер олардың мәні нөльге тең болса). && осы операциясы
операциясына қарағанда жоғарғы приоритетті болады. Солдан- оңға қарай
ассоция типті операция болады. && және операциясы осы уақытқа дейін
өрнек ретінде бағаланады, және олардың ақиқат немесе жалған екені көрініп
тұрады. Осындай өрнектің үлгісі мынадай болады:
gender==1 && age=65
Сондықтан gender мәні 1-ге тең болмаса, жалғастырмай тоқтатуымыз
керек, егер мәні бірге тең болған жағдайда жалғасады.
&& операциясы өрнекте қолданылудан бас тартады, бірақ бірінші шарттың
түсінігінің тәуелділігі талап етіледі. Осылай басқа шарт келесі шартқа
көмектесе алуы керек. Бұл жағдай көп кездеседі, ... жалғасы
Ұқсас жұмыстар
Пәндер
- Іс жүргізу
- Автоматтандыру, Техника
- Алғашқы әскери дайындық
- Астрономия
- Ауыл шаруашылығы
- Банк ісі
- Бизнесті бағалау
- Биология
- Бухгалтерлік іс
- Валеология
- Ветеринария
- География
- Геология, Геофизика, Геодезия
- Дін
- Ет, сүт, шарап өнімдері
- Жалпы тарих
- Жер кадастрі, Жылжымайтын мүлік
- Журналистика
- Информатика
- Кеден ісі
- Маркетинг
- Математика, Геометрия
- Медицина
- Мемлекеттік басқару
- Менеджмент
- Мұнай, Газ
- Мұрағат ісі
- Мәдениеттану
- ОБЖ (Основы безопасности жизнедеятельности)
- Педагогика
- Полиграфия
- Психология
- Салық
- Саясаттану
- Сақтандыру
- Сертификаттау, стандарттау
- Социология, Демография
- Спорт
- Статистика
- Тілтану, Филология
- Тарихи тұлғалар
- Тау-кен ісі
- Транспорт
- Туризм
- Физика
- Философия
- Халықаралық қатынастар
- Химия
- Экология, Қоршаған ортаны қорғау
- Экономика
- Экономикалық география
- Электротехника
- Қазақстан тарихы
- Қаржы
- Құрылыс
- Құқық, Криминалистика
- Әдебиет
- Өнер, музыка
- Өнеркәсіп, Өндіріс
Қазақ тілінде жазылған рефераттар, курстық жұмыстар, дипломдық жұмыстар бойынша біздің қор #1 болып табылады.
Ақпарат
Қосымша
Email: info@stud.kz