奇狐社區論壇 總頁數 (2): [1] 2 »
在這個頁面顯示本主題全部的 18 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- If ..Then 寫法的問題 (已看過教學) (http://www.chiefox.com.tw/bbs/showthread.php?threadid=9991)


由 xbeyoung 在 2008-07-18 02:15 發表:

If ..Then 寫法的問題 (已看過教學)

myHour := HOUR;
myMin := MINUTE;

If ((myHour = 9) And (myMin = 1)) Then Begin

Exp1;
Exp2;
:
:
Exp100;
End;

編譯結果是 "語法錯誤" , 好像是錯在 序列變數上,
但是, 類似的程式區塊, 如何改寫呢 ?


由 cgjj 在 2008-07-18 08:34 發表:

回覆: If ..Then 寫法的問題 (已看過教學)

引用:
最初由 xbeyoung 發表
myHour := HOUR;
myMin := MINUTE;

If ((myHour = 9) And (myMin = 1)) Then Begin

Exp1;
Exp2;
:
:
Exp100;
End;

編譯結果是 "語法錯誤" , 好像是錯在 序列變數上,
但是, 類似的程式區塊, 如何改寫呢 ?



myHour 和 myMin 均為數列, 不能直接帶進 IF... THEN ... 中
需搭配迴圈

for i=1 to datacount do begin
if myHour[i]=9 and myMin[i]=1 then begin
........
end;
end;

若算的東西簡單, 可用 if(cond,a,b) 的語法, 例如:
x:=if(myHour = 9 And myMin = 1, 算式A, 算式B);


由 xbeyoung 在 2008-07-18 13:15 發表:

個人覺得 奇狐的 "if ... then ... else" 根本是個沒用的東西, 直言感覺, 若有得罪, 請見諒 !!


由 cgjj 在 2008-07-18 13:50 發表:

引用:
最初由 xbeyoung 發表
個人覺得 奇狐的 "if ... then ... else" 根本是個沒用的東西, 直言感覺, 若有得罪, 請見諒 !!


用心學習吧
你將會發現 if ... then ... else 的優點
和它能發揮之處
它是非常重要的功能

沒有 if ... then ... else
很多複雜的公式將難以撰寫出來

論壇上很多公式都有用到 if ... then ... else
您可多多利用論壇搜尋的功能, 來找尋相關資料


由 xbeyoung 在 2008-07-18 14:10 發表:

謝謝版主的耐心回應, 只是個人覺得 if 後面的條件裡的限制規則,
真是綁手綁腳 , 而他的精簡版 if 函數, 卻無如此限制, 當然我無從知道此程式語言內部的實作, 但是他真的讓程式邏輯無法像一般程式語言一樣順暢


由 cgjj 在 2008-07-18 14:18 發表:

引用:
最初由 xbeyoung 發表
謝謝版主的耐心回應, 只是個人覺得 if 後面的條件裡的限制規則,
真是綁手綁腳 , 而他的精簡版 if 函數, 卻無如此限制, 當然我無從知道此程式語言內部的實作, 但是他真的讓程式邏輯無法像一般程式語言一樣順暢



用途出發點並不相同

if(cond,a,b) 主要是針對數列

if ...then ... else .... 是針對常數或數列中的單一元素(單值)
故 if ...then ... else ... 常與迴圈搭配來應用

您到 [指標公式\進階教學] 中, 將我們安排的學習項目
按次序看完, 應就能體會其中的道理....


由 alpha 在 2008-07-18 18:04 發表:

呵呵

if ... then ... else 是極具威力的東西之一啊

另外 其它語言中 C , C++ , VB , Java .... 你所可以找到的語言中 , 哪裡會看不見他的身影

針對數列的 if(cond,a,b) 是為了簡化一些 "經常用到" 的功能 , 而再去延生出來的功用函數
它把迴圈步驟 , 判斷式包覆了起來 , 因而簡化了程式碼

__________________
偶而是不是也感覺有些老
像個大人般的戀愛
有時心情糟
請你相信我在你身邊別忘了


由 xbeyoung 在 2008-07-19 00:40 發表:

引用:
最初由 alpha 發表

if ... then ... else 是極具威力的東西之一啊

另外 其它語言中 C , C++ , VB , Java .... 你所可以找到的語言中 , [/B]


我沒有否定 "If ... Then ... else" 的意思, 畢竟這個語法我自己也用了二三拾年了, 沒有任何程式語言可以沒有他, 我只單就 "奇狐" 在此語法加了一些限制, 覺得很不滿而已, 要能博大精深, 限制還是少一些好 !! 不過, 也謝謝你的指教 !!


由 kway 在 2008-07-20 23:05 發表:

if ... then ... else 是極具威力的東西之一啊
===================================
沒錯.....可是再在奇狐裡面簡直無用武之地
原因為使用者求出來的值都是列數
跟本無法使用於極具威力的東西........可惜ㄚ

建議改善.....提供一個能從列數求取整數值的功能
整數值A:H;
整數值B:C;
整數值C:O;
就能使用... if 整數值B> 整數值C then ... else
這將使奇狐的公式活用度大增百倍


由 kway 在 2008-07-20 23:14 發表:

引用:
最初由 kway 發表
if ... then ... else 是極具威力的東西之一啊
===================================
沒錯.....可是再在奇狐裡面簡直無用武之地
原因為使用者求出來的值都是列數
跟本無法使用於極具威力的東西........可惜ㄚ

建議改善.....提供一個能從列數求取整數值的功能
整數值A:H;
整數值B:C;
整數值C:O;
就能使用... if 整數值B> 整數值C then ... else
這將使奇狐的公式活用度大增百倍



我想版主應該會說.....用....
if(C>O,.....,......);
這樣就可以了...其實整數的功能在有邏輯運算時才能用.....


由 cgjj 在 2008-07-21 16:57 發表:

引用:
最初由 kway 發表
我想版主應該會說.....用....
if(C>O,.....,......);
這樣就可以了...其實整數的功能在有邏輯運算時才能用.....



有沒有搞錯呀
這問題與是不是 [整數] 一點關係都沒有


由 cgjj 在 2008-07-21 17:06 發表:

引用:
最初由 kway 發表
if ... then ... else 是極具威力的東西之一啊
===================================
沒錯.....可是再在奇狐裡面簡直無用武之地
原因為使用者求出來的值都是列數
跟本無法使用於極具威力的東西........可惜ㄚ

建議改善.....提供一個能從列數求取整數值的功能
整數值A:H;
整數值B:C;
整數值C:O;
就能使用... if 整數值B> 整數值C then ... else
這將使奇狐的公式活用度大增百倍



用途看人如何運用?
對一般簡易的公式而言 if(cond,a,b) 就已經很夠用了
但對許多複雜的公式而言並不夠

if...then .... else ....
的最大特點在於能對單值或數列中的單值
一次做多個動作的連續處理, 甚至是巢狀式組合
而 if(cond,a,b) 一次僅能做一種動作
將 if...then .... else ....
搭配迴圈威力更是強大

運用上彈性差很多的


由 cgjj 在 2008-07-21 17:18 發表:

引用:
最初由 xbeyoung 發表
我沒有否定 "If ... Then ... else" 的意思, 畢竟這個語法我自己也用了二三拾年了, 沒有任何程式語言可以沒有他, 我只單就 "奇狐" 在此語法加了一些限制, 覺得很不滿而已, 要能博大精深, 限制還是少一些好 !! 不過, 也謝謝你的指教 !!


限制?? 這麼說吧
每種程式語言都有它的運算基礎方式
因而產生一些特點和特性

當您了解它特性時就能充份組合發揮
就無這邊所謂的限制了吧

不要把之前的程式觀念硬是套到奇狐來
這樣您會學的很痛苦


由 cgjj 在 2008-07-21 17:33 發表:

以前說明過, 在此
我再舉例說明一次

運算式 X=A+B+C , 其中 A,B,C,X 均為數列

一般而言程式語言有兩種方法處理這樣的運算

第一種
 步驟1: X[1]=A[1]+B[1]+C[1]
 步驟2: X[2]=A[2]+B[2]+C[2]
 如此一直算下去
第二種
 步驟1: 先計算整個 A+B 的結果
 步驟2: 算完後再加入 C
 最終再將結果給X

在奇狐中採用的是第二種算法

這兩種算法各有利弊的地方
有些 第一種可寫的很精簡,第二種很麻煩
有些 第二種可寫的很精簡,第一種很麻煩
沒有絕對的對錯和好壞

算法基礎的不同
很自然就會影響到語言的結構用法

當你了解這其中的特性和道理時, 前面的問題就不是問題了
就能體會出設計者的精心巧妙安排了

若將觀念死放在第一種來寫奇狐程式
將會處處碰壁


由 kway 在 2008-07-21 18:24 發表:

請問版主?
if(C>O,.....,......);這樣可以
if C>O then .....;這樣不行,語法錯誤(因為是c及o數列)
若想運用到C及O及H及L來做迴圈控制該如何做?


全部時間均為台灣時間, 現在時間為01:08 總頁數 (2): [1] 2 »
在這個頁面顯示本主題全部的 18 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.