教學試題生成腳本: 根據溫度差選用適當用語

4 views
Skip to first unread message

胡松涛

unread,
May 26, 2011, 11:12:55 PM5/26/11
to figt...@googlegroups.com, cn...@googlegroups.com
各位前輩好,

末學今天備課的時候,發現一道英文題是 根據溫度差選用適當用語,
感覺可以寫成Forth腳本。并且批量生成習題。貼出來分享。(附件是腳本和生成後的習題)


\ A Gforth script to generate exam for wasn't as ... as, the same as.

\ format example
\ wasn't as cool as \ keys
\ Beijing is 7˚C. Athens is 15˚C, it ____ Beijing. \ question
\ wasn't as warm as \ wrong key

\ judgement rules:
\ if 2ed - 1st >= 8 means cool
\ if 2ed - 1st < 8 means warm

\ source data of cities and tempretures
: Beijing s" Beijing" 7 ;
: Athens s" Athens" 15 ;
: Delhi s" Delhi" 34 ;
: Madrid s" Madrid" 15 ;
: Mexico_City s" Mexico City" 23 ;
: Moscow s" Moscow" -1 ;
: RDJ s" Rio de Janeiro" 29 ;
: Rome s" Rome" 13 ;
: Sydney s" Sydney" 22 ;
: Tokyo s" Tokyo" 10 ;
: Vancouver s" Vancouver" 6 ;

\ rule judgement
: keys ( n1' n2' -- )
." wasn't as "
swap -
8 >= if
." cool "
else
." warm "
then
." as " cr
;

\ print out key and question
: generate ( addr1 n1 n1' addr2 n2 n2' )
( addr1 n1 n1' addr2 n2 ) >R
( addr1 n1 addr2 n2 n1' ) rot
( addr1 n1 addr2 n2 n1' n2' ) R>
( addr1 n1 addr2 n2 n1' n2' ) 2dup keys
\ print 1st city: Beijing
( addr1 n1 addr2 n2 ) 2>R
( addr2 n2 addr1 n1 ) 2swap
( addr2 n2 addr1 n1 ) 2dup type
\ print degree of Beijing
( addr2 n2 addr1 n1 n1' n2' ) 2R>
( addr2 n2 addr1 n1 n2' n1' ) swap
( addr2 n2 addr1 n1 n2' ) ." is " . ." ˚C. "
\ print 2ed city: Athens
( addr2 n2 addr1 n1 ) >R
( addr1 n1 addr2 n2 ) 2swap
( addr1 n1 ) type ." is "
( addr1 n1 n2' ) R>
( addr1 n1 ) . ." ˚C, it ____ "
( ) type ." ." cr
;

\ generate wrong key
: wrongkey ( addr1 n1 n1' addr2 n2 n2' )
( addr1 n1 n2 n2' n1' addr2 ) 2swap
( addr1 n1 n2 n2' n1' ) drop
( addr1 n1 n2 ) keys
2drop drop
;

\ generate all questions
Beijing Athens generate
Beijing Athens wrongkey
cr
Beijing Delhi generate
Beijing Delhi wrongkey
cr
Beijing Madrid generate
Beijing Madrid wrongkey
cr
Beijing Mexico_City generate
Beijing Mexico_City wrongkey
cr
Beijing Moscow generate
Beijing Moscow wrongkey
cr
Beijing RDJ generate
Beijing RDJ wrongkey
cr
Beijing Rome generate
Beijing Rome wrongkey
cr
Beijing Sydney generate
Beijing Sydney wrongkey
cr
Beijing Tokyo generate
Beijing Tokyo wrongkey
cr
Beijing Vancouver generate
Beijing Vancouver wrongkey
cr

bye


末學 胡松濤

--
Hu Songtao
works as an English Teacher in weekends
Skype: idisblueflash
Beijing, China

13.1-G-as..as.fs
13.1-G-as..as.txt

xiaohao

unread,
May 27, 2011, 12:27:26 AM5/27/11
to Forth中国社区
刚测试了下,很好用!:)

>  13.1-G-as..as.fs
> 3K查看下载
>
>  13.1-G-as..as.txt
> 1K查看下载

胡松涛

unread,
May 27, 2011, 12:33:15 AM5/27/11
to cn...@googlegroups.com
在 Fri, 27 May 2011 12:27:26 +0800,xiaohao <superc...@gmail.com> 写道:

> 刚测试了下,很好用!:)


程序還是可以再簡化:
比如
1. 隨機生成兩個程式,再對比。
2. Beijing Delhi generate Beijing Delhi wrongkey
應該可以簡化成 Beijing Delhi generate-all
3. 可以用中文改寫,意思更明確
4. 加上細節的判斷,區分 冷,熱,涼爽和溫暖。

不過,不急。

4tH的設計者常說:
"First make it work, then improve it."
先實現,再優化。

這句很贊。

xiaohao

unread,
May 27, 2011, 12:59:56 AM5/27/11
to Forth中国社区
啊哈,我通过你这个小程序温习了遍英语,嘿嘿~

胡松涛

unread,
May 27, 2011, 3:45:05 AM5/27/11
to cn...@googlegroups.com
在 Fri, 27 May 2011 12:59:56 +0800,xiaohao <superc...@gmail.com> 写道:

> 啊哈,我通过你这个小程序温习了遍英语,嘿嘿~

還有這個效果? 哈哈。 贊
Reply all
Reply to author
Forward
0 new messages