№4 Дәріс_Шартты және шартсыз операторлары. Нұсқаны таңдау операт. Дріс 4 С программалау тілінде шартты жне шартсыз операторлары. Нсаны тадау операторы
Скачать 76.5 Kb.
|
Дәріс №4 «С++ программалау тілінде шартты және шартсыз операторлары. Нұсқаны таңдау операторы» Дәрістің мақсаты: Шартты оператордың және шартсыз оператордың жұмысымен танысу. Нұсқаны таңдау операторын зерттеу. Программаны құру кезінде соларды қолдануды үйрену. IF шартты операторы Қарастырылып отырған операторлар тобы программаның бұтақтануын ұйымдастыруға мүмкіндік береді. Жиі нәтижеге байланысты операторлар тобын іске асыру керек. С++ тілінде осы мақсатта if (егер) – else (болмаса), switch goto операторлары қолданылады. IF операторының жалпы көрінісі: Шартты оператордың толық түрі: if (шарт) операторлар 1; else операторлар 2; Шартты оператордың қысқа түрі: if (шарт) операторлар; Егер жақша ішіндегі шарт ақиқат болса, онда операторлар 1 орындалады, ал егер жалған мәнді қабылдаса, онда операторлар 2 орындалады. Салыстыру операциялары 1 кестеде берілген 1 кесте
Шартты оператордың толық түріне мысалдар: 1) a=12.7; b=15.2; if (a>b) z=a; else z=b; z=(a>b)?а:b; Широкое распространение находят также выражения с еще одной нетрадиционной терпарной операцией ?: . В выражении у=(х!=0)?а:b, у=а, если х не равно нулю, и у=b, если х равно нулю. Следующее выражение у=(а>b)?a:b; позволяет присвоить переменной y значение большей переменной (а или b), т.е. y=max(a,b). 2) a=12.7; b=15.2; if (a>b) z=a; else z=b; z=a-дан кейінгі нүктелі үтірге назар аудару керек. Бұл жерде ол міндетті түрде қойылу керек, себебі if-тан кейін үнемі нүктелі үтірмен аяқталатын инструкция жазылады. If операторында else сөзі болмауы мүмкін. Бұл кезде, егер жақша ішіндегі шарт шын мәнді қабылдаса, онда инструкция 1 орындалады, ал жалған болса, онда инструкция 1 өткізіліп жіберіледі және басқару программаның мәтіні бойынша келесі операторға беріледі. Шартты оператордың қысқа түріне мысалдар: 1) num= 15; if (num>10) num=2*num; сout<<”num=”< num= 5; if (num>10) num=2*num; сout<<”num=”< Меншіктеу операторымен «=» қатынас операциясын «= =» шатастырмау керек! Қарапайым программаны қарап көрейік. #include int main() { int a,b; cout<<“a-ның мәнін енгізіңіз”; cin>>a; cout<<“b-ның мәнін енгізіңіз ”; cin>>b; if (a>b) cout<<“a үлкен b”; else cout<<“ a кіші немесе тең b”; /* if – else операторының демонстрациясы*/ if (a= =b) cout<<“ a тең b ”; /* if оператордың else сөзісіз демонстрациясы*/ return 0; } Егер программа орындалуы үшін 5 және 3 сандарын енгізсек, онда экранға а үлкен b деген қатар шығады. 5 және 5 сандарын енгізсек, экранға мынадай екі қатар шығады: a кіші немесе тең b a тең b Кейде шарт операторында if немесе else өзекті сөздерінен кейін if инструкциясы жазылады, оны қабаттасқан деп атайды. else сөзі үнемі оның алдында жазылатын if сөзіне қатысты болады. Сондай-ақ if және else өзекті сөздерінен кейін бір инструкцияның орнына фигуралық жақшаның ішіне жазылуы міндетті бірнеше инструкциялар жазылуы мүмкін. Мысалы: 1) n=25; a=12.7; b=5.2; if (n>0) if (a>b) z=a; else z=b; 2) n=25; a=12.7; b=15.2; if (n>0) if (a>b) z=a; else z=b; else ішкі if-ке қатысты, бұл шегіністермен көрсетілген. Егер басқа интерпретация қажет болса, онда фигуралық жақшаларды дұрыс қою керек: 3) n=25; a=12.7; b=5.2; if (n>0) { if (a>b) z=a; } else z=b; 4) n=-38; a=12.7; b=5.2; if (n>0) { if (a>b) z=a; } else z=b; Бұл мысалда else сыртқы if-ке қатысты. Құрамында if және else көп болатын күрделі конструкцияларда қабаттасқан if-терді фигуралық жақшаларға алу керек. if–else қабаттасқан конструкцияларының орнына шартты тексеру үшін күрделі өрнектерді қолдануға болады. Күрделі өрнектер бірнеше жай қатынастарды логикалық операциялардың көмегімен біріктіру жолымен алынады. С++ тілінде 3 логикалық амал бар, олар 2-ші кестеде көрсетілген: 2 кесте
Мысалы: x€[21,5;45,2) (21.5<=x)&&(x<45.2) !(21.5<=x) осы шарттар сәйкес x<21.5 !((21.5<=x)&&(x<45.2)) осы шарттар сәйкес (x<21.5)&&(x>=45.2) ! операциясының басымдығы көбейтуден жоғары және тек жай жақшалардың ғана басымдығы одан жоғары болып табылады. && операциясының басымдығы || операциясының басымдығынан жоғары және екеуінің де басымдығы қатынас операциясының басымдығынан әлде қайда төмен. a>b&&b>c||b>d былай интерпретацияланады: ((a>b)&&(b>c))||(b>d), яғни b a мен c-ның аралығында жатады немесе b d-дан үлкен. Мысал: #include int main ( ) { float x,y; cin>> x; if (x > 0) y = x*x + 1; else y = x + 4; cout<<” x=”< return 0; } Шартсыз өту операторы Оны келесі түрде жариялауға болады. goto белгі; Белгі – бұл кез - келген идентификатор. Мысалы: goto a2; goto операторы одан кейін жазылған инструкциядан бастап программаның жалғасуы керектігін көрсетеді. Программада міндетті түрде белгісі, одан кейін қойылған қос нүкте және өткел орындалуы тиіс инструкциясы бар жол болуы керек. Мысалы: a2: k=5; Программада белгілерді қарастыру қажет емес. С++ тілінде шартсыз көшу операторын қолдану міндетті емес, себебі ол программаның құрылымдық түрін құртады. Switch таңдау операторы Switch операторы бірнеше баламалардың ішінен біреуін таңдауға мүмкіндік береді. Және ол келесі түрде жазылады: switch (өрнек) {case константа1: нұсқа 1; break; . . . case константа n: нұсқа n; break; default: нұсқа: break;} 2-суретт е сәйкес иллюстрация көрсетілген: switch операторында бүтін өрнек жақша ішінде есептелінеді (оны селектор деп атайды), және оның мәні барлық константалармен салыстырылады. Сәйкестік болған жағдайда керекті нұсқа орындалады (бір немесе бірнеше инструкциялар). Оператордың жазылуындағы барлық константалар әртүрлі болуы қажет. default (басқалар) өзекті сөзі бар нұсқа басқа бірде-бірі сәйкес келмегенде орындалады (егер default сөзі болмаса және салыстыру нәтижелері теріс болса, онда бірде-бір нұсқа орындалмайды). Қандай да бір нұсқаның таңдалуынан кейін келесі тексерулерді тоқтату үшін switch операторынан шығуды қамтамасыз ететін break операторы қолданылады. |