Логикалық операциялар.

Екі және одан да көп шартты өрнекті біріктіру кезінде логикалық операциялар қолданылады. Си тілінде үш логикалық операция бар: &&(және), ||(немесе), !(“жоқ” немесе “емес”).

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 тг.