Board logo

標題: [程式編寫] 小問題一個 [打印本頁]

作者: Zzlaz    時間: 2021-1-17 02:25 PM

假設我有3個bool value 我想問點樣用if else if else statement做得哂2^3 =8個情況的結果出來?

唔使真係寫 大約講個流程比我知

thanks.
作者: YjgfkHJj    時間: 2021-1-17 11:55 PM

寫埋比你又點話


bool b1 = true;
bool b2 = true;
bool b3 = true;
if(b1==true){
    if(b2==true){
        if(b3==true){
            //TTT
        }
        else{
            //TTF
        }
    }
    else{
        if(b3==true){
            //TFT
        }
        else{
            //TFF
        }
    }
}
else{
    if(b2==true){
        if(b3==true){
            //FTT
        }
        else{
            //FTF
        }
    }
    else{
        if(b3==true){
            //FFT
        }
        else{
            //FFF
        }
    }
}
作者: Zzlaz    時間: 2021-1-18 08:51 AM

引用:
原帖由 YjgfkHJj 於 2021-1-17 11:55 PM 發表

寫埋比你又點話


bool b1 = true;
bool b2 = true;
bool b3 = true;
if(b1==true){
    if(b2==true){
        if(b3==true){
            //TTT
        }
        else{
            //TTF
        }
     ...
thx
其實我大致都係咁寫, if...else exclusive

但想知有無得簡化.
因為段野其實頭尾係重複一次做.

同埋我好似唔太了解elseif/else if 點用...
作者: manki246    時間: 2021-1-18 04:33 PM

引用:
原帖由 YjgfkHJj 於 2021-1-17 11:55 PM 發表

寫埋比你又點話


bool b1 = true;
bool b2 = true;
bool b3 = true;
if(b1==true){
    if(b2==true){
        if(b3==true){
            //TTT
        }
        else{
            //TTF
        }
     ...
勁 !
作者: alee001    時間: 2021-1-18 05:13 PM

 試吓將b1&b2&b3組成code再用case去分流,應該會簡潔啲...
作者: form5    時間: 2021-1-19 09:01 PM

easy

[ 本帖最後由 form5 於 2021-1-19 09:02 PM 編輯 ]

圖片附件: all_true.png (2021-1-19 09:02 PM, 26.54 KB) / 該附件被下載次數 8
https://computer.discuss.com.hk/attachment.php?aid=12019188


作者: Zzlaz    時間: 2021-1-20 05:34 PM

引用:
原帖由 form5 於 2021-1-19 09:01 PM 發表

easy
!!
死火 我唔明
作者: Ireland49610    時間: 2021-1-21 04:14 PM


作者: 111x111=12321    時間: 2021-1-21 06:04 PM

引用:
原帖由 Zzlaz 於 2021-1-17 02:25 PM 發表

假設我有3個bool value 我想問點樣用if else if else statement做得哂2^3 =8個情況的結果出來?

唔使真係寫 大約講個流程比我知

thanks.
無 case 咩?  一定要 if else?
作者: 煙民母親生賤種    時間: 2021-1-22 12:40 AM

引用:
原帖由 111x111=12321 於 2021-1-21 06:04 PM 發表


無 case 咩?  一定要 if else?
其實用 case  switch  係搵自己笨實。case   唔可以有 x >= y   呢類操作。
作者: Zzlaz    時間: 2021-1-22 09:19 AM

主要我想知else if 點用, 同埋可唔可以用多過1次。。。

我理解
1. if {} only
if... 有可能做, 唔合條件唔做, 飞

if..... {}
else {}
if 同else 係exclusive, 一定會有D野做左出來
3 if...else if....else
if/else if/else , exclusive, 一定有野做左出來
問題係

if/else if x n / else
可唔可以咁用
同埋係唔係exclusive?


case 指switch...case?
但好多人唔建議用呢種

我有諗過將個3個bool value加哂佢
如果係3 TTT
如果係0 FFF
如果係2 // TTF/TFT/FTT
如果係1 // TFF/FFT/FTF
作者: Qegg    時間: 2021-1-22 06:20 PM

如果用 switch case 嘅話 可以咁樣
唔知有無得再簡潔d

圖片附件: Screenshot 2021-01-22 at 6.18.51 PM.png (2021-1-22 06:20 PM, 68.28 KB) / 該附件被下載次數 6
https://computer.discuss.com.hk/attachment.php?aid=12026463


作者: alee001    時間: 2021-1-22 09:59 PM

咁寫都會簡潔啲...
複製內容到剪貼板
代碼:
Sub check()
Dim b1 As Boolean, b2 As Boolean, b3 As Boolean
b1 = True: b2 = False: b3 = False
Select Case b1 + b2 + b3
Case -3
MsgBox "TTT"
Case 0
MsgBox "FFF"
Case -2
MsgBox "TTF/TFT/FTT"
Case -1
MsgBox "TFF/FFT/FTF"
End Select
End Sub

作者: 111x111=12321    時間: 2021-1-22 10:23 PM

引用:
原帖由 alee001 於 2021-1-22 09:59 PM 發表

咁寫都會簡潔啲...Sub check()
Dim b1 As Boolean, b2 As Boolean, b3 As Boolean
b1 = True: b2 = False: b3 = False
Select Case b1 + b2 + b3
Case -3
MsgBox "TTT"
Case 0
MsgBox "FFF"
Case -2
MsgBox "TTF/T ...
分解不足bor~
作者: kormer    時間: 2021-1-23 12:35 PM

唔用switch亦唔用if else嘅玩法。

圖片附件: f.png (2021-1-23 12:35 PM, 22.22 KB) / 該附件被下載次數 2
https://computer.discuss.com.hk/attachment.php?aid=12028172


作者: Zzlaz    時間: 2021-1-24 03:40 PM

引用:
原帖由 alee001 於 2021-1-22 09:59 PM 發表

咁寫都會簡潔啲...Sub check()
Dim b1 As Boolean, b2 As Boolean, b3 As Boolean
b1 = True: b2 = False: b3 = False
Select Case b1 + b2 + b3
Case -3
MsgBox "TTT"
Case 0
MsgBox "FFF"
Case -2
MsgBox "TTF/T ...
程式語言真係隻隻唔同
我理解T應該係1 呢到係-1
作者: form5    時間: 2021-1-24 09:23 PM

js 真係差強人意,function expect 3 個 bool, 連最基本 input type 都吾識分,照俾你output, 啲bug 多到呢
作者: 111x111=12321    時間: 2021-1-25 12:45 AM

引用:
原帖由 Zzlaz 於 2021-1-24 03:40 PM 發表


程式語言真係隻隻唔同
我理解T應該係1 呢到係-1
-1 all bits turned on.

雖然我同意程式語言隻隻唔同.
作者: Zzlaz    時間: 2021-1-25 09:40 AM

引用:
原帖由 111x111=12321 於 2021-1-25 12:45 AM 發表


-1 all bits turned on.

雖然我同意程式語言隻隻唔同.
其實成個POST都未有人答到我#11疑問...
作者: xianrenb    時間: 2021-1-25 01:11 PM

引用:
原帖由 Zzlaz 於 2021-1-22 09:19 AM 發表

主要我想知else if 點用, 同埋可唔可以用多過1次。。。

我理解
1. if {} only
if... 有可能做, 唔合條件唔做, 飞

if..... {}
else {}
if 同else 係exclusive, 一定會有D野做左出來
3 if...else if....else
if/else if/else , exclusive, 一定有野做左出來
問題 ...
一般語言都差不多。
如在 JavaScript ,可參考:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/if...else
作者: 111x111=12321    時間: 2021-1-25 01:11 PM

引用:
原帖由 Zzlaz 於 2021-1-25 09:40 AM 發表


其實成個POST都未有人答到我#11疑問...
#11是複合題, 問得唔清晰.

if  |  if else   |   if else if
是語言進化,
我會叫 test yes/no  |  binary branch  |  nested branches (structure, effectively case branches)
行interpreter一定得, 行compiler, 好早, 都已經可以nested....掛~

//可唔可以用多過1次
可以, 可能「咁都問?」, 況且只係抬頭句..... 所以無人直接答你.

case =/= switch...case
case 係 expression testing, 不順利, expression 計N次.
switch...case 係 value testing, expression 只計1次.
作者: 111x111=12321    時間: 2021-1-25 01:14 PM

您標題寫「『小問題』『一個』 」

問起上來, 都不是.
作者: 111x111=12321    時間: 2021-1-25 01:16 PM

//同埋我好似唔太了解elseif/else if 點用...

咦?  我唔識.
作者: Zzlaz    時間: 2021-1-25 03:31 PM

引用:
原帖由 111x111=12321 於 2021-1-25 01:11 PM 發表


#11是複合題, 問得唔清晰.

if  |  if else   |   if else if
是語言進化,
我會叫 test yes/no  |  binary branch  |  nested branches (structure, effectively case branches)
行interpreter一定得, 行compiler, 好早, 都已經可以nested ...
咁呢個組法
ifif
if
if
else
vs

if
else if
else if
else if
else

有無實際上分別?
如果我做到係每個if 都唔可能共同發生.
作者: 111x111=12321    時間: 2021-1-25 05:33 PM

引用:
原帖由 Zzlaz 於 2021-1-25 03:31 PM 發表


咁呢個組法
ifif
if
if
else
vs

if
else if
else if
else if
else

有無實際上分別?
如果我做到係每個if 都唔可能共同發生.
Nested structure 當作圓圈套圓圈, 兩種寫法不是同心圓,
你一個偏北、一個偏南.

偏南的是獨立的Test case, 逐個做 ....... 你情況應該選這個.
可能 elseif 作為keyword是咁來的.  (elseif = case)

偏北的是, 是將幾個條件, 由全面都要求開始, 逐個放寬, 都是test case, 但一串條件是有關聯的. ("逐個放寬")
E.g. 選幾級人材, 用這個.

[ 本帖最後由 111x111=12321 於 2021-1-25 05:34 PM 編輯 ]
作者: kormer    時間: 2021-1-25 06:37 PM

樓主係學生哥?正常學校編程科第二三四堂應該會教到if else啦。
作者: 111x111=12321    時間: 2021-1-25 07:31 PM

引用:
原帖由 kormer 於 2021-1-25 06:37 PM 發表

樓主係學生哥?正常學校編程科第二三四堂應該會教到if else啦。
教唔教都一樣, 老實講, 我學校無教 else if / 甚至無教 else (或者有指出)
"if" 就有教, decision=if.., 很重要, 哦, 原來電腦識分、會執生...
"else"已經唔使"教", 一睇已經知道乜事.

else if, 化成case, 我懷疑不是「指定課程」!
case本身複雜過if, 不同層次, cpu instruction有 if, 沒有case!

唯一特別, 可能、唔通樓主完全自修?
Walk-thru, 人腦"扮"電腦, 是重複很多次的習慣、手段.
樓主問的, 一walk-thru一次便很清楚.
所以網友只回應相關語言的特殊性、概念,  不走學校一套.
作者: YjgfkHJj    時間: 2021-1-26 12:14 AM

if
if
if
if
else
gives me a feel that the logic is loose, as these ifs may have overlapping conditions. A variable may be eligable to be in multiple ifs


But if i ise

if

else if
else if

else if
else


then i know for the given variable it can just go to one if it.



i feel safer writing this way personally
作者: Zzlaz    時間: 2021-1-26 08:11 AM

引用:
原帖由 kormer 於 2021-1-25 06:37 PM 發表

樓主係學生哥?正常學校編程科第二三四堂應該會教到if else啦。
都算係,老野學生

covid-19 關係,揾下野學
作者: Zzlaz    時間: 2021-1-26 08:17 AM

引用:
原帖由 111x111=12321 於 2021-1-25 07:31 PM 發表


教唔教都一樣, 老實講, 我學校無教 else if / 甚至無教 else (或者有指出)
"if" 就有教, decision=if.., 很重要, 哦, 原來電腦識分、會執生...
"else"已經唔使"教", 一睇已經知道乜事.

else if, 化成case, 我懷疑不是「指定課程」!
case本身複雜過if, 不同層次, cpu instruction有 if,  ...
如果係CPU instruction 也應該只有if...else (jump或者唔jump)

else if 一般書都係用一次else if
我用咁多次...唔知得唔得
作者: 111x111=12321    時間: 2021-1-26 08:30 AM

引用:
原帖由 Zzlaz 於 2021-1-26 08:17 AM 發表


如果係CPU instruction 也應該只有if...else (jump或者唔jump)

else if 一般書都係用一次else if
我用咁多次...唔知得唔得
if 係 if, 內裡可以是jump不一定jump.
if else 係 2-branch.

(lang only)
else if 用一次只係自我限制. 紅字不是"if"嗎? 自然entitled再用else, else乜?  我要else if!

「我用咁多次...唔知得唔得」這是很奇怪、不貫徹的經驗,
都「咁多次」, 竟然「唔知」?  
你每一次試完唔睇結果、or你記唔住結果記憶被reset?
作者: Zzlaz    時間: 2021-1-26 09:05 AM

引用:
原帖由 111x111=12321 於 2021-1-26 08:30 AM 發表


if 係 if, 內裡可以是jump不一定jump.
if else 係 2-branch.

(lang only)
else if 用一次只係自我限制. 紅字不是"if"嗎? 自然entitled再用else, else乜?  我要else if!

「我用咁多次...唔知得唔得」這是很奇怪、不貫徹的經驗,
都「咁多次」, 竟然「唔知」?  
你每一次 ...
用到......唔代表"語法"上係標準.
作者: 111x111=12321    時間: 2021-1-26 10:03 AM

引用:
原帖由 Zzlaz 於 2021-1-26 09:05 AM 發表


用到......唔代表"語法"上係標準.
考慮呢d, 已經偏向深入學術問題, 業界標準.
(唔關你事)

你連門口都未入, 基礎經驗仲未有.
初步完整一套, 你從來未到手.
作者: Zzlaz    時間: 2021-1-26 10:14 AM

引用:
原帖由 111x111=12321 於 2021-1-26 10:03 AM 發表


考慮呢d, 已經偏向深入學術問題, 業界標準.
(唔關你事)

你連門口都未入, 基礎經驗仲未有.
初步完整一套, 你從來未到手.
唔想學壞手勢
作者: 111x111=12321    時間: 2021-1-26 10:18 AM

引用:
原帖由 Zzlaz 於 2021-1-26 10:14 AM 發表


唔想學壞手勢
根據網友意見, 您未'學'過編程科第二三四堂(水平), 好奇怪.
我都有講, 你有「不貫徹的經驗, 都『咁多次』, 竟然『唔知』?  」------- 係一種處事上的壞手勢.

唔想學壞手勢初衷係好, 但都要邁出步伐, 你無.

[ 本帖最後由 111x111=12321 於 2021-1-26 10:20 AM 編輯 ]
作者: 鄉貢仁    時間: 2021-1-26 11:05 AM

引用:
原帖由 Zzlaz 於 2021-1-17 02:25 PM 發表

假設我有3個bool value 我想問點樣用if else if else statement做得哂2^3 =8個情況的結果出來?

唔使真係寫 大約講個流程比我知

thanks.
好簡單, 全部位元換成2進位, 已知是甚麼情況.
000, 001, 010, 011, 100, 101, 110, 111
再轉成10進制, 如果有齊0-7數值, 就啱了.

作者: 111x111=12321    時間: 2021-1-26 11:10 AM

引用:
原帖由 鄉貢仁 於 2021-1-26 11:05 AM 發表


好簡單, 全部位元換成2進位, 已知是甚麼情況.
000, 001, 010, 011, 100, 101, 110, 111
再轉成10進制, 如果有齊0-7數值, 就啱了.
都唔係「流程」,
我估係some essence, 不過我都唔明係關於乜.
作者: 鄉貢仁    時間: 2021-1-26 11:24 AM

引用:
原帖由 111x111=12321 於 2021-1-26 11:10 AM 發表


都唔係「流程」,
我估係some essence, 不過我都唔明係關於乜.
咪係, 都唔知佢想問咩

作者: xianrenb    時間: 2021-1-26 12:38 PM

樓主可能根本無看 20 樓的資料?
引用:
...
To see how this works, this is how it would look if the nesting were properly indented:

if (condition1)
  statement1
else
  if (condition2)
    statement2
  else
    if (condition3)
...
...

作者: Zzlaz    時間: 2021-1-26 05:39 PM

引用:
原帖由 xianrenb 於 2021-1-26 12:38 PM 發表

樓主可能根本無看 20 樓的資料?
睇左
要再消化下
作者: howevera    時間: 2021-1-26 07:46 PM

        void test(bool b1, bool b2, bool b3)
        {
            if (b1 & b2 & b3)
            {
                //TTT
            }
            else if (b1 & b2 & !b3)
            {
                //TTF
            }
            else if (b1 & !b2 & b3)
            {
                //TFT
            }
            else if (b1 & !b2 & !b3)
            {
                //TFF
            }
            else if (!b1 & b2 & b3)
            {
                //FTT
            }
            else if (!b1 & b2 & !b3)
            {
                //FTF
            }
            else if (!b1 & !b2 & b3)
            {
                //FFT
            }
            else if (!b1 & !b2 & !b3)
            {
                //FFF
            }
            else
            {
                //unhandle case
            }
        }
作者: Zzlaz    時間: 2021-1-31 07:52 PM

功課已交, 感謝各位良心指教~




Copyright © 2003-2021 香港討論區