Орацле ПЛ / СКЛ АКО ЈЕ ОНДА ДРУГО Изјава: ЕЛСИФ, НЕСТЕД-ИФ

Преглед садржаја:

Anonim

Шта су изјаве за доношење одлука?

Наводи за доношење одлука су они који ће одлучити о контроли протока СКЛ израза на основу услова. Пружа програмеру бољу контролу спречавања извршења одређеног кода (дијаграм 1) или одабира жељеног кода на основу услова (дијаграм 2). Испод је сликовити приказ „Изјаве о доношењу одлука“.

Дијаграм изјаве о одлучивању

Врсте изјава за доношење одлука:

Орацле пружа следеће типове изјава за доношење одлука.

  • АКО ОНДА
  • АКО ТАДА ЈОШ
  • АКО-ОНДА-ЕЛСИФ
  • НЕСТЕД-ИФ
  • СЛУЧАЈ
  • ПРЕТРАЖЕНИ СЛУЧАЈ

У овом упутству ћете научити-

  • Увод у изјаве о доношењу одлука
  • АКО-ОНДА Изјава
  • ИФ-ТХЕН-ЕЛСЕ изјава
  • ИФ-ТХЕН-ЕЛСИФ Изјава
  • Изјава НЕСТЕД-ИФ

АКО-ОНДА Изјава

Израз ИФ-ТХЕН углавном се користи за извршавање одређеног одељка кодова само када је услов задовољен.

Услов треба да даје логичко (тачно / нетачно). То је основна условна изјава која ће ОРАЦЛЕ-у омогућити извршавање / прескакање одређеног дела кода на основу унапред дефинисаних услова.

Синтакса за изјаве ИФ ТХЕН:

IF THEN-executed only if the condition returns TRUEEND if;
  • У горњој синтакси, кључну реч „ИФ“ пратиће услов који има вредност „ТРУЕ“ / „ФАЛСЕ“.
  • Контрола ће извршити <ацтион_блоцк> само ако услов врати <ТРУЕ>.
  • У случају да се стање процењује на <ФАЛСЕ>, тада ће СКЛ прескочити <ацтион_блоцк> и започет ће извршавање кода поред блока 'ЕНД ИФ'.

Напомена: Кад год се стање процењује на 'НУЛЛ', тада ће СКЛ третирати 'НУЛЛ' као 'ФАЛСЕ'.

Пример 1 : У овом примеру ћемо исписати поруку када је број већи од 100. За то ћемо извршити следећи код

Да бисмо одштампали поруку када број има вредност већу од 100, извршавамо следећи код.

DECLAREa NUMBER :=10;BEGINdbms_output.put_line(‘Program started.' );IF( a> 100 ) THENdbms_output.put_line('a is greater than 100');END IF;dbms_output.put_line(‘Program completed.');END;/

Објашњење кода:

  • Линија кода 2: Проглашавање променљиве „а“ типом „БРОЈ“ и иницијализација вредности „10“.
  • Линија кода 4: Штампање изјаве „Програм је покренут“.
  • Кодни ред 5: Провера стања, да ли је променљива „а“ већа од „100“.
  • Редак 6: Ако је „а“ веће од „100“, исписат ће се „а веће од 100“. Ако је „а“ мање или једнако 100, услов не успева, па се горњи испис занемарује.
  • Кодни ред 8: Штампање изјаве „Програм завршен“.

Излаз кода:

Program started.Program completed. 

Пример 2: У овом примеру ћемо одштампати поруку ако је дата абецеда присутна у енглеским самогласницима (А, Е, И, О, ​​У).

Да бисмо исписали поруку када је дати знак самогласник, извршавамо следећи код.

DECLAREa CHAR(1) :=’u’;BEGINIF UPPER(a) in ('A’,'E','I','0','U' ) THENdbms_output.put_line(‘The character is in English Vowels');END IF;END;/

Објашњење кода:

  • Линија 2: Проглашавање променљиве „а“ као „ЦХАР“ типа података величине „1“ и иницијализација вредности „у“.
  • Кодни ред 4: Провера стања, да ли је променљива „а“ присутна на листи („А“, „Е“, „И“, „О“, „У“).
  • Вредност „а“ је претворена у велика слова пре упоређивања како би упоређивање разликовало мала и велика слова.
  • Линија 5: Ако је на списку присутно „а“, исписат ће се изјава „Лик је у енглеским самогласницима“. Ако услов није успио, овај програм неће дати излаз, јер изван блока ИФ-ТХЕН нисмо издали изјаву за штампање.

Излаз кода:

The character is in English Vowels

ИФ-ТХЕН-ЕЛСЕ изјава

  • Израз ИФ-ТХЕН-ЕЛСЕ углавном се користи за одабир између две алтернативе на основу стања.
  • Испод је синтаксни приказ израза ИФ-ТХЕН-ЕЛСЕ.

Синтакса за изјаве ИФ-ТХЕН-ЕЛСЕ:

IF THEN -executed only if the condition returns TRUE ELSE -execute if the condition failed (returns FALSE) END if;
  • У горњој синтакси, кључну реч „ИФ“ пратиће услов који има вредност „ТРУЕ“ / „ФАЛСЕ“.
  • Контрола ће извршити <ацтион_блоцк1> само ако услов врати <ТРУЕ>.
  • У случају да услов има вредност <ФАЛСЕ>, тада ће СКЛ извршити <ацтион_блоцк2>.
  • У сваком случају, извршиће се један од два акциона блока.

Напомена: Кад год услов процени на „НУЛЛ“, тада ће СКЛ третирати „НУЛЛ“ као „ФАЛСЕ“.

Пример 1 : У овом примеру ћемо исписати поруку да ли је дати број непаран или паран.

DECLAREa NUMBER:=11;BEGINdbms_output.put_line (‘Program started');IF( mod(a,2)=0) THENdbms_output.put_line('a is even number' );ELSEdbms_output.put_line('a is odd number1);END IF;dbms_output.put_line (‘Program completed.’);END;/

Објашњење кода:

  • Линија кода 2: Проглашавање променљиве „а“ типом „БРОЈ“ и иницијализација вредности „11“.
  • Линија кода 4: Штампање изјаве „Програм је покренут“.
  • Кодни ред 5: Провера стања, да ли је модул променљиве 'а' са '2' 0.
  • Кодни ред 6: Ако је '0', тада ће се исписати "а је паран број".
  • Редак кода 7: Ако вредност модула није једнака '0', тада ће се вратити <ФАЛСЕ>, па ће се исписати порука "а је непаран број".
  • Шифра 10: Штампање изјаве „Програм завршен“

Излаз кода:

Program started.a is odd numberProgram completed. 

ИФ-ТХЕН-ЕЛСИФ Изјава

  • Изјава ИФ-ТХЕН-ЕЛСИФ углавном се користи тамо где треба изабрати једну алтернативу из низа алтернатива, где свака алтернатива има своје услове које треба задовољити.
  • Први услови који врате <ТРУЕ> ће се извршити, а остали услови ће се прескочити.
  • Израз ИФ-ТХЕН-ЕЛСИФ може у себи садржати блок „ЕЛСЕ“. Овај блок „ЕЛСЕ“ извршиће се ако није испуњен ниједан од услова.

Напомена : ЕЛСЕ блок није обавезан у овом условном изразу. Ако нема ЕЛСЕ блока и ниједан од услова није задовољен, тада ће контролер прескочити сав акциони блок и започети извршавање преосталог дела кода.

Синтакса за изјаве ИФ-ТХЕН-ЕЛСИФ:

IF THEN-executed only if the condition returns TRUE ELSIF  ELSIF  ELSE -optionalEND if;
  • У горњој синтакси, контрола ће извршити <ацтион_блоцк1> само ако услов1 врати <ТРУЕ>.
  • Ако увјет1 није задовољен, тада ће контролер провјерити стање2.
  • Контролер ће изаћи из ИФ-изјаве у следећа два случаја.
    • Када је контролер пронашао било који услов који враћа <ТРУЕ>. У том случају, извршиће се одговарајући блок_акције и контролер ће изаћи из овог блока ИФ-изјаве и започети извршавање преосталог кода.
    • Када ниједан од услова није задовољен, тадашњи контролер ће извршити ЕЛСЕ блок ако постоји, а затим ће изаћи из ИФ-изјаве.

Напомена: Кад год услов процени на „НУЛЛ“, тада ће СКЛ третирати „НУЛЛ“ као „ФАЛСЕ“.

Пример 1: Без ЕЛСЕ блока

У овом примеру ћемо штампати оцену на основу задатих оцена без другог услова (оцена> = 70 оцена А, оцена> = 40 и оцена <70 оцена Б, оцена> = 35 и оцена <40 оцена Ц).

DECLAREmark NUMBER :=55;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C’);END IF;dbms_output.put_line(‘Program completed.’);END;/

Објашњење кода:

  • Линија кода 2: Проглашавање променљиве „марк“ типом података „БРОЈ“ и иницијализација вредности „55“.
  • Линија кода 4: Штампање изјаве „Програм је покренут“.
  • Линија 5: Провера стања1, да ли је „оцена“ већа или једнака 70.
  • Линија кода 7: С обзиром да услов1 није успео, тада се проверава стање 2 '70> ознака> = 40 '.
  • Редак кода 8: Услов2 враћа <ТРУЕ>, стога ће се исписати порука 'Оцена Б'.
  • Шифра 12: Штампање изјаве „Програм је завршен“.
  • У овом случају прескочит ће се ознака 'ознака <35', јер је контролер пронашао један услов који враћа <ТРУЕ> прије услова3.

Излаз кода:

Program started.Grade BProgram completed.

Пример 2 : Са ЕЛСЕ блоком

У овом примеру ћемо исписати оцену на основу задатих оцена са елсе цондитион (оцена> = 70 оцена А, оцена> = 40 и оцена <70 оцена Б, оцена> = 35 и оцена <40 оцена Ц, остало „Без оцене“).

DECLAREmark NUMBER :=25;BEGINdbms_output.put_line(‘Program started.’ );IF( mark >= 70) THENdbms_output.put_line(‘Grade A’);ELSIF(mark >= 40 AND mark < 70) THENdbms_output.put_line(‘Grade B');ELSIF(mark >=35 AND mark < 40) THENdbms_output.put_line(‘Grade C);ELSEdbms_output.put_line(‘No Grade’);END IF;dbms_output.put_line(‘Program completed.' );END;/

Објашњење кода:

  • Линија 2: Проглашавање променљиве „марк“ типом „БРОЈ“ и иницијализација вредности „25“.
  • Линија кода 4: Штампање изјаве „Програм је покренут“.
  • Линија 5: Провера услова 1, да ли је „оцена“ већа или једнака 70.
  • Линија кода 7: С обзиром да услов1 није успео, тада се проверава стање 2 '70> ознака> = 40 '.
  • Редак кода 8: Пошто услов2 није успео, тада се проверава услов3 '40> ознака> = 35 '.
  • Линија 11: Пошто сви услови нису успели, контрола ће сада проверити присуство ЕЛСЕ блока и исписат ће поруку 'Но Граде' из блока ЕЛСЕ.
  • Шифра 14: Штампање изјаве „Програм је завршен“.

Излаз кода:

Program started.No GradeProgram completed.

Изјава НЕСТЕД-ИФ

  • Израз НЕСТЕД-ИФ у основи дозвољава програмерима да поставе један или више услова 'ИФ' унутар <ацтион_блоцк> другог услова 'ИФ' осим уобичајених израза.
  • Сваки услов „ИФ“ треба да има засебну изјаву „ЕНД ИФ“ која означава крај домета тог одређеног <ацтион_блоцк>.
  • Израз „ИФ“ сматрат ће најближи израз „ЕНД ИФ“ крајњом тачком за тај одређени услов.
  • Сликовни приказ за НЕСТЕД-ИФ приказан је испод дијаграма.
IF THEN -executed only if the condition returns TRUE  IF  THEN  END IF; -END IF corresponds to condition2END IF; -END IF corresponds to condition1
Објашњење синтаксе:
  • У горњој синтакси, спољни ИФ садржи још један израз ИФ у свом блоку акције.
  • Услов1 враћа <ТРУЕ>, тада ће контрола извршавати <ацтион_блоцк1> и проверавати стање2.
  • Ако цондитион2 такође врати <ТРУЕ>, тада ће се извршити и <ацтион_блоцк2>.
  • У случају да увјет2 има вриједност <ФАЛСЕ>, тада ће СКЛ прескочити <ацтион_блоцк2>.

Овде ћемо видети пример угнеждених ако -

Пример изјаве угнежђеног - ако: највећи од три броја

У овом примеру ћемо исписати највећи од три броја помоћу израза Нестед-Иф. Бројеви ће бити додељени у декларираном делу, као што можете видети у доњем коду, тј. Број = 10,15 и 20, а максималан број ће бити дохваћен помоћу изјава угнеждених-ако.

DECLAREa NUMBER :=10;b NUMBER :=15;c NUMBER :=20;BEGINdbms_output.put_line(‘Program started.' );IF( a> b)THEN/*Nested-if l */dbms_output.put_line(’Checking Nested-IF 1');IF( a> c ) THENdbms_output.put_line(‘A is greatest’);ELSEdbms_output.put_line(‘C is greatest’);END IF;ELSE/*Nested-if2 */dbms_output.put_line('Checking Nested-IF 2' );IF( b> c ) THENdbms_output.put_line(’B is greatest' );ELSEdbms_output.put_line(’C is greatest' );END IF;END IF;dbms_output.put_line(‘Program completed.’ );END;/

Објашњење кода:

  • Линија кода 2: Проглашавање променљиве „а“ типом „БРОЈ“ и иницијализација вредности „10“.
  • Линија 3: Проглашавање променљиве „б“ типом „БРОЈ“ и иницијализација вредношћу „15“.
  • Линија кода 4: Проглашавање променљиве „ц“ типом „БРОЈ“ и иницијализација вредности „20“.
  • Кодни ред 6: Штампање изјаве „Програм је покренут“ (ред 6).
  • Кодни ред 7: Провера стања1, да ли је „а“ веће од „б“ (ред 7).
  • Редак кода 10: Ако је „а“ веће од „б“, тада ће услов „нестед-иф 1“ проверити да ли је „а“ већи од „ц“ (ред 10).
  • Редак кода 13: Ако је и даље „а“ већи, исписат ће се порука „А је највеће“ (ред 11). У супротном, ако услов2 не успе, биће исписано „Ц је највеће“ (ред 13).
  • Редак кода 18: У случају да увјет1 врати фалсе, тада ће стање у 'угнијежђено-ако 2' провјерити да ли је 'б' веће од 'ц' (ред 18).
  • Линија кода 21: Ако је „б“ веће од „ц“, тада ће се исписати порука „Б је највећа“ (ред 19), у супротном ако услов2 не успе, исписат ће се „Ц је највећа“ (ред 21).
  • Линија кода 24: Штампање изјаве „Програм је завршен“ (ред 24).

Излаз кода:

Program started.Checking Nested-IF 2C is greatestProgram completed.

Резиме

У овом поглављу смо научили различите изјаве о доношењу одлука и њихову синтаксу и примере. Испод табеле дат је резиме различитих условних изјава о којима смо разговарали.

ТИП

ОПИС

УПОТРЕБА

АКО ОНДА

Проверава логички услов ако се извршава ТРУЕ код у блоку 'ТХЕН'.

Да бисте прескочили, / извршили одређени код на основу услова.

АКО ТАДА ЈОШ

Проверава логички услов ако се извршава ТРУЕ код у блоку 'ТХЕН', ако се извршава лажни код у блоку 'ЕЛСЕ'.

Најприкладније у стању „ОВО ИЛИ ОНО“.

АКО-ОНДА-ЕЛСИФ

Проверава логички услов у редоследу. Извршит ће се први блок у низу који враћа стање ТРУЕ. Ако ниједан од услова у низу није ТРУЕ, тада се извршава код у блоку 'ЕЛСЕ'.

Углавном се бира између више од две алтернативе.

НЕСТЕД-ИФ

Омогућава једну или више изјава ИФ-ТХЕН или ИФ-ТХЕН-ЕЛСИФ унутар друге изјаве ИФ-ТХЕН или ИФ-ТХЕН-ЕЛСИФ.

Углавном се користи у ситуацији угнежђеног стања.