Қазақстан Республикасының ауылшаруашылық министрлігі


Тегтер. Шартсыз өту операторы



бет8/14
Дата15.12.2023
өлшемі104,78 Kb.
#138073
1   ...   4   5   6   7   8   9   10   11   ...   14
Байланысты:
Нағашибай Ерсұлтан 23-02 пдф()

Тегтер. Шартсыз өту операторы.

Көшедегі әрбір үйдің өз нөмірі бар, барлық адамдардың өз есімдері бар, тіпті компьютердің жады ұяшықтарының әрқайсысының өз мекенжайы бар. Мұның бәрі анықталатын объектіні бір мәнді түрде көрсете алу үшін алынады. Сол сияқты, белгілер бағдарламалардағы мәлімдемелерді көрсету үшін қолданылады.
Паскаль тілінің стандартындағы белгі теріс емес бүтін сан болып табылады. Бағдарламада қолданылатын барлық белгілер жапсырманың сипаттамасы бөлімінде Label қызмет сөзінен бастап көрсетілуі керек, мысалы:
1, 2, 8 жапсырмасы;
Тек бір операторды бір белгімен белгілеуге болады. Белгі қойылған мәлімдемеден қос нүкте арқылы бөлінеді.
Мысалы:
6: Жазбаша(14/2);
Бұрын берілген барлық бағдарламаларда операторлар мәтінде жазылу реті бойынша бірінен соң бірі орындалды. Бұл алгоритмдік құрылым тікелей сукцессия деп аталады. Бірақ Паскаль тілінде бастапқыда басқаруды ерікті нүктеге ауыстырып, программаның сызықтық орындалуын бұзатын оператор бар. Бұл нұсқау шартсыз секіру деп аталады және келесі пішімге ие:

Шартты оператор

Негізгі алгоритмдік құрылымдардың бірі тармақталу (балама).
Егер шарт орындалса, онда «1» нұсқауы орындалады, егер орындалмаса, «2» нұсқауы орындалады. Тізбекте екі әрекет болса да, тек біреуі ғана орындалады, себебі шарт жалған немесе ақиқат. Үшіншісі жоқ. Бұл схема қалыптасқан жағдайларға байланысты бір немесе басқа әрекетті орындау қажет мәселелерді шешуге мүмкіндік береді. Мұндай мәселелердің саны өте көп екені даусыз. Оның үстіне, орындау алгоритмі командалардың қарапайым тізбегін қамтитын шынымен маңызды тапсырманы табу өте қиын. Математика курсынан алынған қарабайыр мысалдың өзі, көріп отырғаныңыздай, тармақталусыз шешілмейді. Сонымен, y=1/x өрнегінің мәнін есептеу керек. Берілген функция әрқашан мәнге ие болмайтынын білесіз, яғни барлық аргумент мәндерінің нәтиже мәні бола бермейді. Біздің міндетіміз алгоритмді дәлел ретінде нөлді алған кезде де орындаушы ешқашан тұйыққа тірелмейтіндей етіп құрастыру. Мұны табиғи тілде тұжырымдау қиын емес:
1. x мәнін алыңыз.
2. Егер x=0 болса, онда өрнектің мәні жоқ екенін хабарлаңыз, әйтпесе у-ны 1/x деп есептеңіз.
Жоғарыдағы алгоритмдік құрылым осылайша қолданылады. Оны қарапайым сөздермен көрсетуге болады:
Егер <шарт> {Егер шарт орындалса}
содан кейін <1-әрекет> {содан кейін №1 әрекетті орындаңыз}
әйтпесе <2-әрекет> {else - №2 әрекетті орындау}
Барлық
Мұны Паскаль тілінде қалай жазуға болады? Иә, дәл солай, тек ағылшын тілінде.
Паскаль тіліндегі шартты оператордың форматы:
Егер <шарт>
Содан кейін <1-мәлімдеме>
Else <2-мәлімдеме>;
Содан кейін және Else бөлімдерінде бір ғана мәлімдеме бар екенін ескеріңіз. Бірақ шартты қанағаттандыру немесе орындамау үшін бір емес, бірнеше әрекетті орындау қажет болатын мәселені шешу үшін не істеу керек? Бұл жерде сізге бұрыннан таныс құрама оператор көмекке келеді. Операторлардың кез келген санын оператор жақшаларына қоюға болады.
Бұл жағдайда шартты оператордың нұсқасы:
Егер <шарт>
Содан кейін Begin <1-топ мәлімдемесі> соңы
Else Begin <2 оператор тобы> соңы;
Нүктелі үтір Else функция сөзінің алдына қойылмайды, бірақ топтардағы мәлімдемелер табиғи түрде бір-бірінен осы нүктелі үтір арқылы бөлінеді.
Енді шарттарға тоқталайық. Паскаль тіліндегі бағдарламаларда шарттар мәні логикалық мән болатын өрнектер болып табылады. Бұл көрсетілген түрдегі қарапайым айнымалы немесе логикалық операциялармен байланыстырылған мәлімдемелердің күрделі тізбегі болуы мүмкін.
Қарапайым жағдайларда салыстыру операторының белгілерін қолдануға болады: >(үлкен), <(кіші), =(тең), <>(тең емес), >=(үлкен немесе тең), <=(кіші немесе тең).
Қарапайым шарттар мысалдары: A=5 {A айнымалысының мәні 5}
(C+D3)>=(D1*(45-2)) {Сол жақтағы өрнектің мәні оң жақтағы өрнектің мәнінен үлкен немесе оған тең}
S<>'ABC' {S айнымалысының мәні 'ABC' жолдық тұрақтысына тең емес}
Басқа есепті шешуге мысал келтірейік: «Екі санның ең үлкенін таңдаңыз».
Бір қарағанда, шешім анық, бірақ ол көрінгендей тривиальды емес.
Бағдарлама мысалы;
Var A,B,C : Real; {A,B - аргументтерді сақтау үшін, C - нәтиже}
БАСТА
Writeln('Екі санды енгізіңіз');
Readln(A,B); {Аргументтерді пернетақтадан енгізіңіз}
Егер A>B болса, онда C:=A Басқа C:=B; {Егер A>B болса, нәтиже А, әйтпесе нәтиже В болады}
WriteIn(C); {Нәтижені экранда көрсету}
Соңы.
Тағы бір классикалық мысал: «Квадрат теңдеуді берілген коэффициенттерді пайдаланып шеш». Бұл тапсырма күрделірек, сондықтан бағдарламаны жазбас бұрын блок-схема түрінде жазу арқылы алгоритмін құрайық.
Алдымен коэффициенттерді енгіземіз, содан кейін дискриминантты есептейміз. Енді екі мүмкіндік туындайды: не теріс дискриминант жағдайында нақты түбірлер жоқ, немесе бұл түбірлерді әлі де теріс емес дискриминант жағдайында есептеуге және көрсетуге болады (дискриминант нөлге тең болған жағдай осы жерде қамтылған). , екі түбір бар, тек олар бірдей J).
Алгоритмді программалау тілінде жазғанда «жоқ» тармағында бір емес, үш әрекет болатынын ескеру керек, сондықтан құрама операторды қолдану керек. Паскаль тілінің ережелеріне сәйкес арифметикалық өрнектерді жазуды ұмытпаңыз. Әйтпесе, бұл бағдарлама алдыңғыға қарағанда күрделі емес.
Бағдарлама Sq1;
Var A, B, C, D, X1, X2 : Real;
БАСТА
Writeln('Квадрат теңдеудің коэффициенттерін енгізіңіз');
Readln(A,B,C);
D:=B*B-4*A*C;
Егер D<0 болса, онда Writeln («Түбірлер жоқ!»)
Басқа
БАСТА
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
Жазу('X1=', X1:8:3, 'X2=',X2:8:3)
Соңы
Соңы.
Бір қызығы, шартты оператор шарт орындалғанда немесе орындалмағанда орындалатын оператор ретінде әрекет ете алады. Бұл жағдайда біз шартты мәлімдемелерді ұя салу туралы айтамыз. Осындай есептерді шешу кезінде мен блокнотқа алгоритмнің блок-схемасын құруды ұсынамын. Содан кейін ғана, бағдарламаны құрастырған кезде, алдымен содан кейін бөлігін мұқият жазып, содан кейін Else бөлігіне көшу керек. Әдетте Паскаль тілінде шартты операторларды жазғанда (әсіресе бірнеше тармақтары бар) командалар оңға және төменге шегініспен жазылады. Бұл көрінуді арттырады және маған сеніңіз, жөндеуге кететін уақытты азайтады.
Түсіндіру үшін тағы бір мәселені шешейік: «A*x^2 + B*x + C = 0 түріндегі теңдеуді шеш». А коэффициенті нөлге тең емес екенін білетін квадрат теңдеумен шатастырмаңыз. Мұндағы коэффициенттер кез келген сандар болуы мүмкін. Элементарлы математикалық пайымдауларға сүйене отырып, біз келесі алгоритмді аламыз:
Бағдарлама Sq2;
Var A, B, C, D, X, X1, X2 : Real;
БАСТА
Writeln('(A, B, C) теңдеуінің коэффициенттерін енгізіңіз');
Егер A=0 болса, онда
Егер B=0 болса, онда
Егер C=0 болса, онда Writeln('X кез келген сан')
Else Writeln('Тамырлар жоқ!')
Else Begin X:=-C/B; Writeln('X=',X:8:3) Соңы
Басқа
БАСТА
D:=B*B-4*A*C;
Егер D<0 болса, онда Writeln («Түбірлер жоқ!»)
Басқа
БАСТА
X1:=(-B+SQRT(D))/2/A;
X2:=(-B-SQRT(D))/2/A;
Жазу('X1=', X1:8:3, 'X2=',X2:8:3)
Соңы
Соңы
Соңы.




Достарыңызбен бөлісу:
1   ...   4   5   6   7   8   9   10   11   ...   14




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет