Логикалық операциялар.
Екі және одан да көп шартты өрнекті біріктіру кезінде логикалық операциялар қолданылады. Си тілінде үш логикалық операция бар: &&(және), ||(немесе), !(“жоқ” немесе “емес”).
1. f11&&f12 ақиқат, тек екі өрнектің де f11 және f12 мәндері ақиқат болса.
2. f11||f12 ақиқат, егер f11 және f12 өрнектерінің ең болмағанда біреуі ақиқат болса немесе екеуі де ақиқат болса.
3. !f11 ақиқат, егер f11 өрнегі жалған болса және керісінше.
Мысал:
15>12&&8>10 - жалған (тек қана бір өрнекше мәні ақиқат)
15>12||8>10 - ақиқат (әйтеуір бір өрнекше мәні ақиқат).
! операциясы өте жоғары үстемдікке ие, тек домалақ жақшалар одан жоғары үстемдікке ие. && операциясының үстемдігі || операциясының үстемдігінен жоғары, алайда бұл екі операция үстемдігі меншіктеу операциясының үстемдігінен төмен.
&& және || операцияларын қолдану кезінде төмендегілерді білу қажет:
Бұл операциялардың орындалуы нәтиже мәні ақиқат немесе жалған болған кезде тоқтайды. Мысалы, f11&&f12 өрнегі берілсін. Егер f11 жалған болса, яғни барлық өрнек жалған, сондықтан f12 есептелінбейді. Осыған ұқсас, егер бізге f11||f12 өрнегі берілді делік. Онда f11-ақиқат болса, f12 есептелінбейді.
Келесі программада екі таңдауы бар if/else құрылымының қолдану мысалы келтірілген.
// Жеңілдік есебімен сатып алу бағасы есептеледі
#include <stdio.h>
#include <conio.h>
void main()
{
float sum; /* сатып алудың бағасы */
printf(“\n Жеңілдік есебімен сатып алу бағасы ”);
printf(“есептеледі \n”);
printf(“Сатып алу бағасын енгіз ->”);
scanf(“%f”, &sum);
if (sum<1000) printf(“Жеңілдік берілмейді.\n”);
else { printf(“Сізге жеңілдік беріледі ”);
if (sum>3000) { printf(“5%\n”);
sum = 0.95 * sum; }
else { printf(“3%\n”);
sum = 0.97 * sum; };
printf(“Жеңілдікпен берілетін бағасы %.2f тг\n”, sum); }
printf(“\nАяқталу үшін <Enter> басыңыз”);
getch(); }
Программаның нәтижесі:
Жеңілдік есебімен сатып алу бағасы есептеледі
Сатып алу бағасын енгіз -> 2250
Сізге жеңілдік беріледі 3%.
Жеңілдікпен берілетін бағасы: 2182.50 тг.