Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

На сортировку / 2 / 1 курс / 5.Алгоритм и языки программ / С ДӘРІСТЕР ЖИНАҒЫ / 2-дәріс. If, If-Else құрлымық таңдау, логикалық операциялар, шартты операциялар, көпшілік таңдау

..docx
Скачиваний:
25
Добавлен:
20.02.2017
Размер:
22.75 Кб
Скачать

2-дәріс.

Тақырыбы: Басқарушы құрлымдар.

1. Варианттарды таңдау.

2. If, If-Else құрлымық таңдау, логикалық операциялар, шартты операциялар, көпшілік таңдау.

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

If құрылымы жалғыз таңдауы бар құрылым деп аталады, өйткені онда бір әрекет таңдалады немесе өткізіледі. If/else құрылымы екі таңдауы бар құрылым деп аталады, өйткені онда екі альтернативті әрекеттің арасында таңдау орындалады. Switch құрылымы көп таңдауы бар құрылым деп аталады.

If таңдау құрылымының жалпы түрі:

Іf (өрнек) оператор1;

If/else құрылымының жалпы түрі:

Іf (өрнек) оператор1;

Else оператор2;

Егер өрнек мәні ақиқат болса (нөлден өзгеше болса), онда оператор1

орындалады, керісінше жағдайда оператор2 орындалады.

Си тілінде If/else құрылымымен тығыз байланысқан (?:) шартты операциясы қарастырылған. Бұл операторға үш операнд қажетті. Шартты операциясымен бірге операндтар шартты өрнекті құрады. Бірінші операнд шарт болып табылады, екінші операнд барлық шартты өрнектің мәні болады, егер шарт ақиқат болса және үшінші операнд барлық шартты өрнектің мәні болады, егер шарт жалған болса.

Мысалы

x>y ? printf(“max=%d\n”, x) : printf(“max=%d\n”, y);

If/else бірінің ішіне бірі енген құрылымдар құрамды шарттарды тексеру үшін пайдаланылады, сондай-ақ If/else бір құрылымдар If/else басқа құрылымдардың ішіне орналастырылады.

Келесідей жазылу түрін келтірейік:

Іf (өрнек1) оператор1;

Else іf (өрнек2) оператор2;

Else оператор3;

Егер өрнек1 ақиқат болса, онда оператор1 орындалады. Егер өрнек1 жалған болып, өрнек2 ақиқат болса, онда оператор2 орындалады. Екі өрнек те жалған болған кезде оператор3 орындалады.

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

Екі және одан да көп шартты өрнекті біріктіру кезінде логикалық операциялар қолданылады. Си тілінде үш логикалық операция бар:

&&(және), ||(немесе), !(“жоқ” немесе “емес”).

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

Swіtch (ауыстырып-қосқыш) таңдау операторы.

Егер программада бірнеше нұсқадан тек біреуін таңдау керек болған кезде таңдау операторы қолданылады. Swіtch операторының жалпы түрі:

Swіtch ()

{

case белгі1: операторлар;

case белгі2: операторлар;

......

deault: операторлар;

}

Өрнек және белгілер бүтін типті (char типін қосқанда) болуы керек; белгілер тұрақтылар немесе тұрақты өрнектер болуы керек. Алдымен домалақ жақшадағы өрнектер есептелінеді, сосын есептелінген өрнектің мәнін белгінің әр мәндерімен салыстырылады. Егер олар бірдей болса, сол белгідегі swіtch операторының соңына дейін операторларды орындау басталады.

Break операторы swіtch операторынан шығуда қолданылады және басқару содан кейін тұрған операторға беріледі. Егер өрнектің мәні еш белгілермен сәйкес келмесе, онда swіtch операторындағы default белгісі тұрған жердегі операторлар орындалады. Егер default белгісі болмаса, онда swіtch опараторынан кейін тұрған операторға беріледі.

Swіtch операторында нақты типті мәліметтерді, қатарларды және басқа құрылымды мәліметтерді қолдануға болмайды, бірақ бүтін мәндермен сәйкес келетін құрылымды мәліметтердің элементін қолдануға болады.

Maіn()

{ char ch;

whіle ((ch=getchar())!=’#’)

{ swіtch (ch) {

case f:

case ‘F’: do_fіle_menu; break;

case V:

case ‘R’: run_program(); break;

case ‘c’:

case ‘C’: do_compіle(); break;

default: Ex(); break;

}

prіntf(“Әріп немесе # егізіңіз”);

}}