第一篇:C語(yǔ)言程序設(shè)計(jì)(漢諾塔問(wèn)題)
C語(yǔ)言程序設(shè)計(jì)(漢諾塔設(shè)計(jì))
#include
/*函數(shù)聲明*/
int m;printf(“please enter the number of diskes:n”);scanf(“%d”,&m);printf(“the step of move %d diskes :”,m);tian(m,'A','B','C');
} void tian(int n,int x,int y,int z)
/*當(dāng)我選定這一行的時(shí)候 然后單擊組間選擇調(diào)試
run to_
發(fā)現(xiàn)不管輸入的x值是多少
ABC的值都是65 66 67
后來(lái)才發(fā)現(xiàn)原來(lái)是他們所代表的十進(jìn)制的值*/ {void move(int x,int y);
if(n==1)move(x,z);
/*這里是遞歸函數(shù)的結(jié)束條件*/ else
{tian(n-1,x,z,y);move(x,y);
tian(n-1,y,x,z);} } void move(int x, int y)
/*
定義move函數(shù)用來(lái)顯示移動(dòng)的路線*/ {printf(“%c——>%cn”,x,y);
} /*漢洛塔問(wèn)題:如果有N個(gè)盤子
那么可以簡(jiǎn)化為n-1個(gè)盤子和一個(gè)盤子來(lái)處理,只要先把上面的n-1個(gè)盤子從A——>B
把第n個(gè)盤子由A——>C 再把n-1個(gè)盤子由B——>C 即可;
n-1盤子
那么可以簡(jiǎn)化為n-2個(gè)盤子和一個(gè)盤子來(lái)處理
只要
把上面的n-2個(gè)盤子從A——>B
把第n個(gè)盤子由A——>C 再把n-1個(gè)盤子由B——>C 即可;
n-3盤子
那么可以簡(jiǎn)化為n-3個(gè)盤子和一個(gè)盤子來(lái)處理
只要
把上面的n-4個(gè)盤子從A——>B
把第n個(gè)盤子由A——>C 再把n-1個(gè)盤子由B——>C 即可;
N-4
.....4個(gè)盤子
那么可以簡(jiǎn)化為3個(gè)盤子和一個(gè)盤子來(lái)處理
只要 把上面的3個(gè)盤子有a 到b
把第4個(gè)盤子由a到c 再把上面的三個(gè)盤子由b到c;
3個(gè)盤子
可以簡(jiǎn)化為。。*/
第二篇:漢諾塔c語(yǔ)言程序代碼
漢諾塔c語(yǔ)言程序代碼(通過(guò)vc++6.0驗(yàn)證)(附講解)讓我們先看看代碼吧 #include
printf(“%d->%dn”,a,c);else {t=c;c=b;b=t;hj(a,b,c,i-1);printf(“%d->%dn”,a,b);t=a;a=c;c=t;t=b;b=c;c=t;hj(a,b,c,i-1);return 0;} } main(){ int a,b,c,i;a=1;b=2;c=3;printf(“請(qǐng)輸入漢諾塔的盤數(shù)”);scanf(“%d”,&i);hj(a,b,c,i);return 0;}
以上是漢諾塔的代碼,該程序主要是運(yùn)用了遞歸的思想,比如數(shù)學(xué)中的f(x)=f(x-1)+f(x-2),在本程序中為:int hj(int a,int b, int c,int i){ int t;if(i==1)
printf(“%d->%dn”,a,c);else {t=c;c=b;b=t;hj(a,b,c,i-1);也就是說(shuō),我們?cè)谶@個(gè)函數(shù)中再次調(diào)用這個(gè)函數(shù),相當(dāng)于一個(gè)循環(huán),而在再次調(diào)用的過(guò)程中,i的值變成i-1,就類似于f(x-1),這樣層層調(diào)用,最終就變成當(dāng)i=1的時(shí)候的值,然后通過(guò)運(yùn)算,計(jì)算出想要得到的值。漢諾塔的數(shù)值分析:
我們可以發(fā)現(xiàn),當(dāng)只有一個(gè)盤的時(shí)候,我們只需要做1->3(就是把第一個(gè)柱子上的最頂端的盤移動(dòng)到第三根柱子,以下不再解釋)當(dāng)有兩個(gè)盤的時(shí)候,是1->2
1->3
2->3 三個(gè)盤子是:1->3
1->2
3->2
1->3
2->1
2->3 分析一下可以得出以下結(jié)論: 初始值a=1 b=2 c=3 一個(gè)盤子就是a->c 兩個(gè)盤子與一個(gè)盤子的關(guān)系是:
第一步:b與c交換值,然后打印a->c 第二步:打印a->b 第三步:a與c交換值,b與c交換值,打印a->c 進(jìn)一步分析,便可以得出以下結(jié)論 只要盤子數(shù)量為i(i大于1),那么它就有三部分 第一部分,b與c交換值,然后運(yùn)行i-1 第二部分,打印a->b 第三部分,a與c交換值,b與c交換值,然后運(yùn)行i-1 程序表示便是: if(i==1)
printf(“%d->%dn”,a,c);else {t=c;c=b;(交換值)
b=t;hj(a,b,c,i-1);printf(“%d->%dn”,a,b);t=a;a=c;c=t;(a c交換)
t=b;b=c;c=t;(b c交換)
hj(a,b,c,i-1);不明加QQ765233918(請(qǐng)寫清備注)
1->3
第三篇:漢諾塔教學(xué)反思
師生問(wèn)答對(duì)話的探索----《漢諾塔》教學(xué)反思
山東省日照市文登路小學(xué) 劉衛(wèi)妮
漢諾塔游戲,起源于古印度的一個(gè)傳說(shuō),這一堂從游戲中開(kāi)始的數(shù)學(xué)課,將一改有些學(xué)生認(rèn)為“數(shù)學(xué)很枯燥的”的想法,通過(guò)讓學(xué)生自己動(dòng)手去體驗(yàn),不僅是在學(xué)習(xí)數(shù)學(xué)知識(shí),更是在訓(xùn)練數(shù)學(xué)思維。揭開(kāi)的不僅是謎底,更是想教給學(xué)生如何學(xué)好數(shù)學(xué)的一種方法。下面,我將對(duì)師生問(wèn)答對(duì)話進(jìn)行一下反思。
過(guò)程課中,第一,開(kāi)始通過(guò)師生會(huì)話自然導(dǎo)入,如:你喜歡玩游戲嗎?你還想繼續(xù)玩嗎?通過(guò)傳說(shuō)中關(guān)于世界末日的預(yù)言,讓學(xué)生迫不及待的想找到問(wèn)題的答案。第二,通過(guò)讓學(xué)生到黑板上貼標(biāo)題的方法,一方面自然出現(xiàn)課題,另一方面通過(guò)這種活動(dòng)又復(fù)習(xí)了游戲規(guī)則,讓學(xué)生通過(guò)活動(dòng)說(shuō)出游戲規(guī)則。如,師:孩子們,眼睛看到這兒來(lái),你發(fā)現(xiàn)了什么? 生:老師,漢諾塔這款游戲器具既有立柱,還有圓盤,我發(fā)現(xiàn)黑板上只有三根立柱,而缺少圓盤。師:孩子,你有一雙善于發(fā)現(xiàn)的眼睛。圓盤在老師手里。誰(shuí)來(lái)將這三個(gè)紙質(zhì)圓盤貼到黑板上的第一根圓柱上?生貼師:大家同意他的貼法嗎?理由是什么?師:同學(xué)們同意他的觀點(diǎn)嗎?生:。。師:是的,小盤在上,大盤在下,這是我們玩這款游戲的規(guī)則之一(PPT出示),漢諾塔僅僅這一個(gè)規(guī)則嗎?生:老師,我知道。玩漢諾塔還有一個(gè)規(guī)則是:一次只能移動(dòng)一個(gè)圓盤。師:說(shuō)的很好。請(qǐng)同學(xué)們仔細(xì)觀察,看老師的操作是否正確,并說(shuō)出理由。(師故意做錯(cuò)誤演示)生:。。第三,注重在各個(gè)環(huán)節(jié)中滲透對(duì)學(xué)生的情感目標(biāo)。比如“師:孩子們知道了游戲規(guī)則,我想征求大家的意見(jiàn),此時(shí),你最想干什么?”通過(guò)詢問(wèn),拉近和學(xué)生的距離,建立一種平等民主的教學(xué)環(huán)境。又如“師:XX同學(xué),不僅善于分析,還講述的非常清楚,跟大家分享了他的成功。孩子們,分享別人的成功,也是一種進(jìn)步?!弊寣W(xué)生知道要取長(zhǎng)補(bǔ)短,互相學(xué)習(xí)。第四,通過(guò)讓學(xué)生找最少步數(shù)之間的規(guī)律進(jìn)行拓展延伸,找到里面的數(shù)學(xué)奧秘,讓學(xué)生覺(jué)得數(shù)學(xué)是很有趣的,數(shù)學(xué)無(wú)處不在,我們可以用數(shù)學(xué)問(wèn)題解釋生活中的很多事情。如,師:要是我們一直這樣做下去,還沒(méi)有做到咱們所有的9個(gè)圓盤的游戲,就已經(jīng)下課了,來(lái),我們先一起看一下我們的研究成果,認(rèn)真看,你發(fā)現(xiàn)這些數(shù)字有什么規(guī)律了嗎?最后,作為獎(jiǎng)勵(lì)我給學(xué)生講了一個(gè)小故事,這個(gè)故事正好體現(xiàn)了本節(jié)課的數(shù)學(xué)問(wèn)題,讓學(xué)
生在課下研究探索,找到問(wèn)題的答案,寓教于樂(lè)。師:同學(xué)們,今天的這堂課老師分享了你們的成功和快樂(lè),老師有一個(gè)故事也想和大家分享一下,“百萬(wàn)富翁的破產(chǎn)”:杰米是百萬(wàn)富翁,一天,他碰到上一件奇怪的事。一個(gè)叫韋伯的人對(duì)他說(shuō),我想和你訂個(gè)合同,我將在整整一個(gè)月中每天給你10萬(wàn)元,而你第一天只需給我1分錢,以后你每天給我的錢是前一天的兩倍。杰米說(shuō),真的?!你說(shuō)話算數(shù)? 合同開(kāi)始生效了,杰米欣喜若狂。第一天杰米支出1分錢,收入10萬(wàn)元。第二天,杰米支出2分錢,收入10萬(wàn)元。到了第10天,杰米共得100萬(wàn)元,而總共才付出5元1角2分。到了第20天,杰米共得200萬(wàn)元,而韋伯才得5千元多。杰米想:要是合同訂、三個(gè)月該多好!結(jié)果杰米卻破產(chǎn)了。孩子們,原因是什么?我期待著你們能幫幫我。
漢諾塔問(wèn)題在數(shù)學(xué)界有很高的研究?jī)r(jià)值,而且至今還在被一些數(shù)學(xué)家們所研究,它可以幫助開(kāi)發(fā)智力,激發(fā)我們的思維。讓小學(xué)生接觸這款益智游戲,利用一次次不斷的探索和嘗試,可以激發(fā)他們的興趣,積極應(yīng)對(duì)困難,獲得成功體驗(yàn),鍛煉他們的思維,同時(shí),培養(yǎng)主動(dòng)探索,不服輸?shù)木瘛?shù)學(xué)磨礪孩子的思維品質(zhì)。數(shù)學(xué),是思維的體操;數(shù)學(xué)課堂應(yīng)是師生思維活動(dòng)的場(chǎng)所。數(shù)學(xué)學(xué)習(xí)的主要任務(wù),其實(shí)就是發(fā)展學(xué)生的思維,要讓學(xué)生學(xué)會(huì)思維的方式,形成良好的思維品質(zhì)。課堂里知識(shí)的學(xué)習(xí)是有形的,思維的發(fā)展是無(wú)形的。如何讓無(wú)形的思維發(fā)展轉(zhuǎn)化為外在的有形體現(xiàn),這就要求學(xué)生在掌握知識(shí)的過(guò)程中,理解掌握知識(shí)之間的內(nèi)在聯(lián)系,聯(lián)系就是思維,聯(lián)系就是方法,聯(lián)系就是能力,我們要在數(shù)學(xué)學(xué)習(xí)過(guò)程中讓孩子尋找到知識(shí)與知識(shí)之間的聯(lián)系,知識(shí)與生活之間的聯(lián)系等。只有建立聯(lián)系學(xué)生才會(huì)觸類旁通,一通百通。然而,學(xué)生的思維單靠老師是教不會(huì)的。靠的是學(xué)生自己在經(jīng)驗(yàn)中的摸索、體悟和積累,依靠學(xué)生自主地將這種摸索和體悟所得進(jìn)行內(nèi)化,逐漸學(xué)會(huì)如何思維,這個(gè)過(guò)程只有孩子自己才能實(shí)現(xiàn)。
在活動(dòng)過(guò)程中,教師應(yīng)更善于引導(dǎo)學(xué)生積極動(dòng)腦自己去找到游戲策略,讓學(xué)生更多參與,更多發(fā)現(xiàn),培養(yǎng)學(xué)生獨(dú)立思考的良好學(xué)習(xí)習(xí)慣,同時(shí),這樣也有利于學(xué)生建立學(xué)習(xí)信心。
第四篇:漢諾塔實(shí)驗(yàn)(人工智能)
實(shí)驗(yàn)二——專家系統(tǒng)一、源代碼
import javax.swing.JCheckBox;import javax.swing.JOptionPane;import javax.swing.JPanel;
public class Index extends javax.swing.JFrame {
jmilk = new javax.swing.JCheckBox();jclaw = new javax.swing.JCheckBox();jhoof = new javax.swing.JCheckBox();jbird = new javax.swing.JCheckBox();jloogLeg = new javax.swing.JCheckBox();jflyable = new javax.swing.JCheckBox();jeatMeat = new javax.swing.JCheckBox();jfur = new javax.swing.JCheckBox();jruminate = new javax.swing.JCheckBox();jswim = new javax.swing.JCheckBox();jfeather = new javax.swing.JCheckBox();jdogTooth = new javax.swing.JCheckBox();jflyest = new javax.swing.JCheckBox();jlayEgg = new javax.swing.JCheckBox();jblackWhite = new javax.swing.JCheckBox();jyellow = new javax.swing.JCheckBox();jinFlyable = new javax.swing.JCheckBox();jdarkDot = new javax.swing.JCheckBox();jhoofAnimal = new javax.swing.JCheckBox();jpredator = new javax.swing.JCheckBox();jmammal = new javax.swing.JCheckBox();jblackStrip = new javax.swing.JCheckBox();jgaze = new javax.swing.JCheckBox();jLabel1 = new javax.swing.JLabel();btnOk = new javax.swing.JButton();jloogNeck = new javax.swing.JCheckBox();private void initComponents(){ public Index(){ } initComponents();數(shù)組設(shè)置//:
checkBoxs[0] = jmilk;checkBoxs[1] = jclaw;checkBoxs[2] = jhoof;checkBoxs[3] = jbird;checkBoxs[4] = jloogLeg;checkBoxs[5] = jflyable;checkBoxs[6] = jeatMeat;checkBoxs[7] = jfur;checkBoxs[8] = jruminate;checkBoxs[9] = jswim;checkBoxs[10] = jfeather;checkBoxs[11] = jdogTooth;checkBoxs[12] = jflyest;checkBoxs[13] = jlayEgg;checkBoxs[14] = jblackWhite;checkBoxs[15] = jyellow;checkBoxs[16] = jinFlyable;checkBoxs[17] = jdarkDot;checkBoxs[18] = jhoofAnimal;checkBoxs[19] = jpredator;checkBoxs[20] = jmammal;checkBoxs[21] = jblackStrip;checkBoxs[22] = jgaze;checkBoxs[23] = jloogNeck;://數(shù)組設(shè)置
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
jmilk.setText(“u5976”);jclaw.setText(“u722a”);jhoof.setText(“u8e44”);jbird.setText(“u9e1f”);jloogLeg.setText(“u957fu817f”);jflyable.setText(“u4f1au98de”);jeatMeat.setText(“u5403u8089”);
{
jfur.setText(“u6bdbu53d1”);jruminate.setText(“u53cdu520d”);jswim.setText(“u6e38u6cf3”);jfeather.setText(“u7fbdu6bdb”);jdogTooth.setText(“u72acu9f7f”);jflyest.setText(“u5584u98de”);jlayEgg.setText(“u4e0bu86cb”);jblackWhite.setText(“u9ed1u767du8272”);jyellow.setText(“u9ec4u8910u8272”);jinFlyable.setText(“u4e0du4f1au98de”);jdarkDot.setText(“u6697u6591u70b9”);jhoofAnimal.setText(“u6709u8e44u7c7bu52a8u7269”);jpredator.setText(“u98dfu8089u52a8u7269”);jmammal.setText(“u54fau4e73u52a8u7269”);jblackStrip.setText(“u9ed1u8272u6761u7eb9”);jgaze.setText(“u773cu775bu76efu7740u524du65b9”);jLabel1.setFont(new java.awt.Font(“黑體”, 0, 24));jLabel1.setText(“u4e13u5bb6u7cfbu7edf”);btnOk.setText(“u731cu731cu662fu4ec0u4e48uff1f”);btnOk.addActionListener(new java.awt.event.ActionListener(){
public void actionPerformed(java.awt.event.ActionEvent evt)} btnOkActionPerformed(evt);});jloogNeck.setText(“u957fu8116u5b50”);
javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);layout
.setHorizontalGroup(layout
.createParallelGroup(.addGroup(layout
.createSequentialGroup().addGap(35, 35, 35).addGroup(layout
.addGroup(layout
javax.swing.GroupLayout.Alignment.LEADING).createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addComponent(jmilk).addComponent(jclaw).addComponent(jhoof)
.addComponent(jbird)).addGap(44, 44, 44).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jeatMeat).addComponent(jfur).addComponent(jflyable).addComponent(jruminate)))
.addGroup(layout
.createSequentialGroup().addComponent(jloogLeg)
.addGap(32, 32, 32).addComponent(jswim)))
.addGap(26, 26, 26).addGroup(layout
.addComponent(.addComponent(btnOk).addGroup(layout
98,jLabel1,.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE).createSequentialGroup().addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jflyest).addComponent(jdogTooth).addComponent(jfeather).addComponent(jlayEgg).addComponent(jgaze)).addGap(23, 23, 23).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).addComponent(jloogNeck).addGroup(layout
.createSequentialGroup().addGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jyellow)
.addComponent(jblackWhite)
.addComponent(jinFlyable)
.addComponent(jdarkDot))
.addGap(18, 18, 18)
.addGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addComponent(jmammal)
.addComponent(jpredator)
.addComponent(jblackStrip)
.addComponent(jhoofAnimal))))))
.addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE,Short.MAX_VALUE)));layout.setVerticalGroup(layout
.createParallelGroup(.addGroup(layout
.createSequentialGroup().addGroup(layout
.addGroup(layout
javax.swing.GroupLayout.Alignment.LEADING).createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).createSequentialGroup().addGap(81, 81, 81).addComponent(jLabel1)
.addGap(65, 65, 65).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jfeather, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE).addComponent(jfur).addComponent(jmilk).addComponent(jyellow)).addGap(18, 18,18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jdogTooth).addComponent(jeatMeat).addComponent(jclaw).addComponent(jblackWhite).addComponent(jpredator)).addGap(24, 24, 24).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING).addGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jflyable)
.addComponent(jhoof)).addGroup(layout
.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
.addComponent(jlayEgg)
.addComponent(jinFlyable)
.addComponent(jblackStrip))).addGap(18,18, 18).addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jflyest).addComponent(jbird).addComponent(jruminate).addComponent(jdarkDot).addComponent(jhoofAnimal)).addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED))
.addGroup(layout
.createSequentialGroup().addContainerGap(175,Short.MAX_VALUE).addComponent(jmammal, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE).addGap(141, 141, 141)))
.addPreferredGap(.addGroup(layout
.addGroup(layout
javax.swing.LayoutStyle.ComponentPlacement.UNRELATED).createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING).createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE).addComponent(jswim).addComponent(jgaze)
.addComponent(jloogNeck)).addComponent(jloogLeg))
.addGap(73, 73,.addGap(27, 27, 27)));73).addComponent(btnOk)pack();}// //GEN-END:initComponents
private void btnOkActionPerformed(java.awt.event.ActionEvent evt){
// TODO add your handling code here: if(jfur.isSelected()&& count()== 1){ show(“哺乳動(dòng)物”);} else if(jmilk.isSelected()&& count()== 1){ show(“哺乳動(dòng)物”);} else if(jfeather.isSelected()&& count()== 1){ 主要代碼//:
show(“鳥(niǎo)”);} else if(jflyable.isSelected()&& jlayEgg.isSelected()&& count()
show(“鳥(niǎo)”);} else if(jeatMeat.isSelected()&& count()== 1){ show(“食肉動(dòng)物”);} else if(jdogTooth.isSelected()&& jclaw.isSelected()&& show(“食肉動(dòng)物”);} else if(jmammal.isSelected()&& jhoof.isSelected()&& count()show(“有蹄類動(dòng)物”);} else if(jmammal.isSelected()&& jruminate.isSelected()&& show(“有蹄類動(dòng)物”);} else if(jmammal.isSelected()&& jpredator.isSelected()&& show(“金錢豹”);} else if(jmammal.isSelected()&& jpredator.isSelected()&& show(“虎”);} else if(jhoofAnimal.isSelected()&& jloogNeck.isSelected()&& show(“長(zhǎng)頸鹿”);== 2){ jgaze.isSelected()&& count()== 3){ == 2){ count()== 2){ jyellow.isSelected()&& jdarkDot.isSelected()&& count()== 4){ jyellow.isSelected()&& jblackStrip.isSelected()&& count()== 4){ jloogLeg.isSelected()&& jdarkDot.isSelected()&& count()== 4){
} else if(jhoofAnimal.isSelected()&& jblackStrip.isSelected()show(“斑馬”);} else if(jbird.isSelected()&& jinFlyable.isSelected()&& && count()== 2){ jloogNeck.isSelected()&& jloogLeg.isSelected()&& jblackWhite.isSelected()&& count()== 5){
//GEN-BEGIN:variables
public static void main(String args[]){
} java.awt.EventQueue.invokeLater(new Runnable(){
public void run(){ } new Index().setVisible(true);public void show(String message){ }
public int count(){
} int sum = 0;for(int i = 0;i < checkBoxs.length;i++){
} return sum;if(checkBoxs[i].isSelected()){ } sum ++;JOptionPane.showMessageDialog(this, message);}
show(“鴕鳥(niǎo)”);} else if(jbird.isSelected()&& jinFlyable.isSelected()&& show(“企鵝”);} else if(jbird.isSelected()&& jflyest.isSelected()&& count()show(“信天翁”);} else { show(“我不知道是什么。?!?;} jblackWhite.isSelected()&& jswim.isSelected()&& count()== 4){ == 2){ ://主要代碼
});
} // Variables declaration-do not modify private javax.swing.JButton btnOk;private javax.swing.JLabel jLabel1;private javax.swing.JCheckBox jbird;private javax.swing.JCheckBox jblackStrip;private javax.swing.JCheckBox jblackWhite;private javax.swing.JCheckBox jclaw;private javax.swing.JCheckBox jdarkDot;private javax.swing.JCheckBox jdogTooth;private javax.swing.JCheckBox jeatMeat;private javax.swing.JCheckBox jfeather;private javax.swing.JCheckBox jflyable;private javax.swing.JCheckBox jflyest;private javax.swing.JCheckBox jfur;private javax.swing.JCheckBox jgaze;private javax.swing.JCheckBox jhoof;private javax.swing.JCheckBox jhoofAnimal;private javax.swing.JCheckBox jinFlyable;private javax.swing.JCheckBox jlayEgg;private javax.swing.JCheckBox jloogLeg;private javax.swing.JCheckBox jloogNeck;private javax.swing.JCheckBox jmammal;private javax.swing.JCheckBox jmilk;private javax.swing.JCheckBox jpredator;private javax.swing.JCheckBox jruminate;private javax.swing.JCheckBox jswim;private javax.swing.JCheckBox jyellow;// End of variables declaration//GEN-END:variables
public JCheckBox[] checkBoxs = new JCheckBox[24];
二、結(jié)果截圖
示例1:
示例2:
三、推理樹(shù)
第五篇:漢諾塔探秘教學(xué)設(shè)計(jì) 胡小佳
數(shù)學(xué)游戲漢諾塔 教學(xué)設(shè)計(jì)
彭州市通濟(jì)鎮(zhèn)藍(lán)天小學(xué)
胡小佳
教學(xué)內(nèi)容: 教學(xué)目標(biāo): 四年級(jí)下期p37,數(shù)學(xué)游戲 漢諾塔(1課時(shí)、40分鐘)
1、讓學(xué)生在學(xué)習(xí)過(guò)程中,根據(jù)解決問(wèn)題的需要,經(jīng)過(guò)自己的探索,體驗(yàn)化繁為簡(jiǎn)找規(guī)律這一解決數(shù)學(xué)問(wèn)題的基本策略。
2、經(jīng)歷收集有用的信息、進(jìn)行歸納、類比與猜測(cè)、再驗(yàn)證猜測(cè),這一系列數(shù)學(xué)思維過(guò)程,發(fā)展學(xué)生的歸納推理能力。
3、能用有條理的、清晰的語(yǔ)言闡述自己的想法。
4、在解決問(wèn)題的活動(dòng)中,學(xué)習(xí)與他人合作,懂得謙讓,能相互幫助。
5、在老師的鼓勵(lì)與引導(dǎo)下,能積極地應(yīng)對(duì)活動(dòng)中遇到的困難,在學(xué)習(xí)活動(dòng)中獲得成功體驗(yàn)。
教學(xué)重點(diǎn): 教學(xué)難點(diǎn): 指導(dǎo)學(xué)生根據(jù)解決問(wèn)題的需要,收集有用的信息,進(jìn)行歸納、類比與猜測(cè),發(fā)展初步的合情推理能力。
在解決問(wèn)題過(guò)程中,引導(dǎo)學(xué)生進(jìn)行有條理的思考,訓(xùn)練學(xué)生對(duì)自己的結(jié)論做出條理清晰的說(shuō)明。
教學(xué)具準(zhǔn)備: 教學(xué)過(guò)程:
一、游戲引入。DELL互聯(lián)課堂設(shè)備、PPT課件、漢諾塔游戲軟件、游戲記錄表。
同學(xué)們你們都喜歡玩游戲,老師這兒就有個(gè)游戲你們想試試嗎?
(ppt在白板上展示)
它呀,叫漢諾塔。
這個(gè)游戲就是想辦法把第一根柱子上的圓盤都移到第三根柱子上。也按照上小下大的順序排列好。
老師給大家準(zhǔn)備了一個(gè)游戲的模擬軟件。在軟件上操作。
(ppt在白板上展示)可不白玩,給大家3分鐘的時(shí)間,邊玩邊琢磨琢磨這個(gè)游戲的規(guī)則。同桌的同學(xué)可以邊玩邊討論。注意相互禮讓。
你會(huì)操作這個(gè)游戲了嗎?誰(shuí)能說(shuō)說(shuō)游戲的規(guī)則?
這個(gè)游戲看起來(lái)挺簡(jiǎn)單的,其實(shí)它不簡(jiǎn)單,世界上有好多數(shù)學(xué)家都研究過(guò)它呢。
二、介紹傳說(shuō)
關(guān)于漢諾塔還有一全古老的傳說(shuō)。
(ppt在白板上展示)
傳說(shuō)中的漢諾塔上只有64個(gè)盤子,按照上面的規(guī)則移動(dòng)完成后,我們的世界怎么可能都不復(fù)存在了呢?
這中間究竟蘊(yùn)含了什么樣的奧秘呢?
今天我們也來(lái)研究一下漢諾塔,揭開(kāi)這個(gè)古老傳說(shuō)中的奧秘。好嗎?
說(shuō)到研究這個(gè)傳說(shuō),我發(fā)現(xiàn)這個(gè)漢諾塔上有64個(gè)圓盤,要是直接操作太多點(diǎn)了,干脆我們從50個(gè)圓盤開(kāi)始研究吧?為什么不呢? 那從20個(gè)開(kāi)始? 那你們說(shuō)怎么辦? 從最簡(jiǎn)單的開(kāi)始!
不錯(cuò)!對(duì)于復(fù)雜的問(wèn)題,我們可以從它最簡(jiǎn)單的形式開(kāi)始研究,在研究的過(guò)程中找到規(guī)律就好辦了。
三、演示游戲操作
盤子的個(gè)數(shù)可以在游戲界面的右邊,個(gè)數(shù)框內(nèi)更改。在游戲界面的右上方,還有對(duì)你操作步數(shù)的統(tǒng)計(jì)。
好,我們就把盤子的個(gè)數(shù)改成1個(gè),從最簡(jiǎn)單的開(kāi)始。(師板演)
剛才老師完成了1個(gè)盤子的漢諾塔的操作,現(xiàn)在我們來(lái)為做記錄。你們自己在研究操作時(shí)也要做好數(shù)據(jù)記錄哦。
(在白板上記錄)
我們要完成操作,所用步數(shù)最少的,完成得最快的,才是最棒的。
四、活動(dòng)要求說(shuō)明
好,聽(tīng)清老師的要求。(邊說(shuō)邊在白板上顯示)
同桌兩個(gè)同學(xué)輪流操作,一人操作時(shí)另一人在記錄表上為他記錄。每完成一次操作后兩人交換。
從兩個(gè)盤子開(kāi)始操作,盡量用最少的步數(shù)完成你的操作。
同桌的同學(xué)在操作相同個(gè)數(shù)的盤子時(shí)比一比,看誰(shuí)用的步數(shù)更少。記住,每完成一次操作,都要做好記錄哦。明白了嗎?開(kāi)始行動(dòng)!
五、學(xué)生在學(xué)生機(jī)上操作
師巡視,強(qiáng)調(diào)活動(dòng)要求。指導(dǎo)記錄數(shù)據(jù)。(用時(shí)5~10分鐘)
六、收集數(shù)據(jù) 時(shí)間到請(qǐng)坐直
2個(gè)盤子的操作誰(shuí)來(lái)演示?生板演 有比他步數(shù)少的操作方法嗎?
兩個(gè)盤子最少用了3步,第一步移動(dòng)到哪? 師板演(在白板上記錄)個(gè)盤子呢,你用了幾步? 請(qǐng)你上來(lái)給大家演示?生板演 有比7步更少的嗎?
你怎么保證能只用7步完成?(在白板上記錄)
4個(gè)盤子呢?最少用幾步完成? 生板演
看清楚了嗎?
(在白板上記錄)
七、觀察分析,找規(guī)律。
(白板上展示)
到現(xiàn)在為止,我們已經(jīng)研究了這四種情況的漢諾塔游戲。
要是我們一直這樣做下去,還沒(méi)有做到10個(gè)盤子的游戲就已經(jīng)下課了,觀察這個(gè)表格,開(kāi)動(dòng)你的腦筋,能不能發(fā)現(xiàn)一些規(guī)律。(生討論,交流)提示:操作時(shí)用的最少步數(shù)之間有沒(méi)有一定的規(guī)律呢?
(生演算,討論,交流,發(fā)言)
八、運(yùn)用發(fā)現(xiàn)的規(guī)律推測(cè),并驗(yàn)證。
根據(jù)你們發(fā)現(xiàn)的規(guī)律,假如盤子是5個(gè)時(shí),要想用最少的步數(shù)完成操作,下面我們就在游戲中來(lái)驗(yàn)證一下我們的推測(cè)。
驗(yàn)證的結(jié)果符合我們發(fā)現(xiàn)的規(guī)律。
如果盤子換成6 個(gè),最少用幾步?
我們?cè)賮?lái)驗(yàn)證一下。
驗(yàn)證的結(jié)果也符合我們發(fā)觀的規(guī)律。
(師運(yùn)用游戲軟件的演示功能在白板上演示)
你能運(yùn)用這個(gè)規(guī)律推算出10個(gè)盤子的漢諾塔游戲,最少要用多少步完成嗎?
九、課堂小結(jié)
當(dāng)盤子的個(gè)數(shù)不斷地增加時(shí),所用的最少步數(shù)也在不斷地增多。
同學(xué)們你們還記得開(kāi)始那個(gè)關(guān)于漢諾塔的傳說(shuō)嗎?
傳說(shuō)中的柱子上有64個(gè)圓盤,按照我們剛才找到的規(guī)律,利用計(jì)算機(jī)進(jìn)行運(yùn)算,得到最少須要移動(dòng)
***709551615
這么
多次才能完成操作。(ppt在白板上展示)
假設(shè)搬一個(gè)圓盤要用一秒鐘,1小時(shí)有3600秒,我們把這個(gè)時(shí)間換算成小時(shí),就有這么多小時(shí),1天有24小時(shí),再除以24,換算成這么多天,1年我們以365天來(lái)計(jì)算,再除以365,換算成年,大約是五千多億年。
據(jù)現(xiàn)在的科學(xué)研究,地球從誕生到現(xiàn)在,也才只有大約46億年的時(shí)間。而要完成64個(gè)圓盤的漢諾塔操作卻要5千多億年,當(dāng)這個(gè)操作完成時(shí),可能我們?nèi)祟惖氖澜缯娴亩疾粡?fù)存在了。
十、結(jié)束語(yǔ)
同學(xué)們今天老師和大家一起探索了漢諾塔的奧秘。一個(gè)小小的游戲里邊竟然包含著巨大的數(shù)學(xué)智慧。其實(shí)數(shù)學(xué)無(wú)處不在,只要我們打開(kāi)自己敏銳的數(shù)學(xué)直覺(jué)、認(rèn)真觀察,學(xué)會(huì)收集整理信息并加以歸納,我們就能在自己周圍的事物中發(fā)現(xiàn)更多的數(shù)學(xué)奧秘。
附:學(xué)生活動(dòng)記錄表