センター試験 山中和義 2008/01/21 10:52:40 ├問題文のアルゴリズムを素直に書くと 白石 和夫 2008/01/21 11:20:55 │└余りを求めるのに 白石 和夫 2008/01/21 11:30:29 │ ├あえて試験だから、このようにコード化する... 山中和義 2008/01/21 11:54:42 │ │└みごとなスパゲッティ・プログラムです。 白石 和夫 2008/01/21 17:59:57 (修正1回) │ │ └過去問題をいくつか見てみると、パターンが... 山中和義 2008/01/22 20:52:21 │ └ユークリッドのアルゴリズムは除算を用いな... 白石 和夫 2008/01/21 11:54:53 (修正1回) ├全文を、書かせる出題方法は、とれないもの... SECOND 2008/01/21 15:17:01 │└!整理すると、こんなに短いものです。 SECOND 2008/01/21 21:09:19 (修正4回) └素朴な疑問 小塚貞典 2008/01/21 22:02:59 └問題点と背景について私見 小塚貞典 2008/01/23 10:20:03
センター試験 山中和義 2008/01/21 10:52:40 ツリーへ
センター試験 |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2008/01/21 10:52:40 | |
最近の掲示板のテーマでした。
文法は、N88ではなくFULL BASICなんですね。 解答のプログラム 10 !センター試験 数学U・数学B 2008.1.20 20 !ユークリッドの互除法による自然数x,yの最大公約数(GCD)、最小公倍数(LCM)を求める 30 !関係式 LCM*GCD=x*y 100 INPUT PROMPT "x=": X 110 INPUT PROMPT "y=": Y 120 IF X<Y THEN 130 LET Z=X !※作業変数Zを介して、x,yの交換 swap x,y 140 LET X=Y !※ 150 LET Y=Z !※ 160 END IF LET T=X*Y 170 IF Y=0 THEN 180 PRINT X !GCD PRINT T/X !LCM 190 GOTO 270 200 END IF 210 LET R=X !※余りRを求める R=X-INT(X/Y)*Y=MOD(X,Y) 220 LET R=R-Y !※割り算は引き算の繰り返し 230 IF R>=Y THEN GOTO 220 !※ 240 LET X=Y !互除法より 250 LET Y=R 260 GOTO 170 270 END |
├問題文のアルゴリズムを素直に書くと 白石 和夫 2008/01/21 11:20:55 ツリーへ
Re: センター試験 |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/01/21 11:20:55 | |
問題文のアルゴリズムを素直に書くと
100 INPUT PROMPT "x=": X 110 INPUT PROMPT "y=": Y 120 IF X<Y THEN 130 LET Z=X 140 LET X=Y 150 LET Y=Z 160 END IF 170 DO UNTIL Y=0 210 LET R=X 215 DO 220 LET R=R-Y 230 LOOP WHILE R>=Y 240 LET X=Y 250 LET Y=R 260 LOOP 265 PRINT X !元の180行 270 END になると思います。 |
│└余りを求めるのに 白石 和夫 2008/01/21 11:30:29 ツリーへ
Re: 問題文のアルゴリズムを素直に書くと |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/01/21 11:30:29 | |
余りを求めるのに
210 LET R=X 220 LET R=R-Y 230 IF R>=Y THEN GOTO 220 すなわち 210 LET R=X 215 DO 220 LET R=R-Y 230 LOOP WHILE R>=Y の形の繰り返しによっているので,120〜160行の前処理でX≧Yにしておかないと具合が悪いというアルゴリズムです。 余りを求めるのを 220 LET R=X 215 DO WHILE R>=Y 220 LET R=R-Y 230 LOOP あるいは, 220 LET R=X 215 IF R<Y THEN 240 220 LET R=R-Y 230 GOTO 215 に変えれば,120〜160行は不要です。 |
│ ├あえて試験だから、このようにコード化する... 山中和義 2008/01/21 11:54:42 ツリーへ
Re: 余りを求めるのに |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2008/01/21 11:54:42 | |
あえて試験だから、このようにコード化するのでしょうか。
170〜260、220〜230の繰り返しなどのように、「判断(IF)」を「繰り返し」に使った流れ図は、 構造化の命令にコード化しづらいです。 センター試験の出題範囲にDO WHILE/DO UNTILなどはないのですかね。 ●出題の元になる流れ図(たぶん?) 過去掲示板のプログラム 流れ図を描く http://freebbs.around.ne.jp/article/b/basic/103/dkoxkw/dkoxkw.html#dkoxkw を使って(プログラムの終りにあるDATA文の差し替える)流れ図を描くことができます。 10 DATA 1,"3","開始","第6問" DATA 8,"3","X","x=" DATA 8,"3","Y","y=" DATA 5,"0<","3≧","X:Y","" DATA 13,"3","│","" DATA 3,"3","X*Y→T","" DATA 2,"","1","" DATA 0,"","","" DATA 0,"","","" DATA 0,"","","" DATA 3,"3","X→Z","" DATA 3,"3","Y→X","" DATA 3,"2","Z→Y","" DATA 0,"","","" DATA 2,"3","1","170" DATA 5,"3=","0≠","Y:0","" DATA 9,"3","X","GCD" DATA 9,"3","T/X","LCM" DATA 1,"","終了","" DATA 0,"","","" DATA 0,"","","" DATA 0,"","","" DATA 13,"0","─","" DATA 13,"0","┌","" DATA 13,"1","└","" DATA 0,"","","" DATA 0,"","","" DATA 0,"","","" DATA 0,"","","" DATA 3,"3","X→R","210" DATA 3,"3","R-Y→R","220" DATA 5,"2>=","3<","R:Y","230" DATA 3,"3","Y→X","" DATA 3,"3","R→Y","" DATA 2,"","1","" |
│ │└みごとなスパゲッティ・プログラムです。 白石 和夫 2008/01/21 17:59:57 (修正1回) ツリーへ
Re: あえて試験だから、このようにコード化する... |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/01/21 17:59:57 ** この記事は1回修正されてます | |
みごとなスパゲッティ・プログラムです。
コンピュータ嫌いを増やすことにならなければいいのですが。(教員,生徒ともに) |
│ │ └過去問題をいくつか見てみると、パターンが... 山中和義 2008/01/22 20:52:21 ツリーへ
Re: みごとなスパゲッティ・プログラムです。 |
返事を書く ノートメニュー |
山中和義 <drdlxujciw> 2008/01/22 20:52:21 | |
過去問題をいくつか見てみると、パターンが見えてきます。
●DO〜LOOP WHILEのパターン ※平成17年度 データ入力 nnn ループ内の処理 IF 繰り返し条件 THEN GOTO nnn PRINT 結果 END ●DO UNTIL〜LOOPのパターン ※平成18年度 データ入力 nnn IF 終了条件 THEN PRINT 結果 GOTO eee !文末へ END IF ループ内の処理 GOTO nnn !次の回へ eee END 繰り返し(DO〜LOOP)のコーディングルールが決まっているようです。 今回は、この組み合せになっています。 他のDO〜LOOPは、以下のようになると予想されます。 ●DO WHILE〜LOOPのパターン データ入力 nnn IF 繰り返し条件 THEN ループ内の処理 GOTO nnn !次の回へ END IF PRINT 結果 END ●DO〜LOOP UNTILのパターン データ入力 nnn ループ内の処理 IF 終了条件 THEN PRINT 結果 GOTO eee !文末へ END IF GOTO nnn !次の回へ eee END ●DO〜LOOPのパターン(判定なし) データ入力 nnn ループ内の処理前半 IF 終了条件 THEN PRINT 結果 GOTO eee !文末へ END IF ループ内の処理後半 GOTO nnn !次の回へ eee END |
│ └ユークリッドのアルゴリズムは除算を用いな... 白石 和夫 2008/01/21 11:54:53 (修正1回) ツリーへ
Re: 余りを求めるのに |
返事を書く ノートメニュー |
白石 和夫 <ynwythjfwu> 2008/01/21 11:54:53 ** この記事は1回修正されてます | |
ユークリッドのアルゴリズムは除算を用いないで減算だけで書かれていたといわれています。BASICで書くと,
100 INPUT a,b 110 DO UNTIL b=0 120 DO WHILE a>=b 130 LET a=a-b 140 LOOP 150 ! a,bの交換 160 LET r=a 170 LET a=b 180 LET b=r 190 LOOP 200 PRINT a 210 END みたいに, 引ける間は引くことを繰り返し,引けなくなったら2数を入れ替えて,減算の結果が0になるまで繰り帰すというのが,本来のユークリッドの算法であったといわれています。それをネタに使った出題と思われます。 |
├全文を、書かせる出題方法は、とれないもの... SECOND 2008/01/21 15:17:01 ツリーへ
Re: センター試験 |
返事を書く ノートメニュー |
SECOND <jjqdmekgpt> 2008/01/21 15:17:01 | |
全文を、書かせる出題方法は、とれないものでしょうか。
枠の中に、入る物を探す問題では、目がチカチカして、 わたしなどは、試験アレルギーなので、間違える事、必致です。 短くても、できるアルゴリズムを探す、好奇心など 吹き飛ぶ感じが、します。 こんな方法で、何かが育つのでしょうか? |
│└!整理すると、こんなに短いものです。 SECOND 2008/01/21 21:09:19 (修正4回) ツリーへ
Re: 全文を、書かせる出題方法は、とれないもの... |
返事を書く ノートメニュー |
SECOND <jjqdmekgpt> 2008/01/21 21:09:19 ** この記事は4回修正されてます | |
!整理すると、こんなに短いものです。
!欄外にこんな答案を書いた生徒は、どうなりますか・・ !---- x,y のGCD ---- INPUT PROMPT "x=": X INPUT PROMPT "y=": Y LET T=X*Y DO WHILE Y<>0 DO WHILE X=>Y LET X=X-Y LOOP swap X,Y LOOP PRINT X, T/X ! GCD, LCM !END ! 入力に、Y<>0 の条件があれば、以下でも。 !---- x,y のGCD ---- INPUT PROMPT "x=": X INPUT PROMPT "y=": Y LET T=X*Y GOTO 230 220 LET X=X-Y 230 IF X=>Y THEN 220 swap X,Y IF Y=0 THEN PRINT X,T/X ELSE GOTO 220 ! GCD, LCM END !入力、X=0 Y=0 では、模範解答でも、問題がありそうです。 |
└素朴な疑問 小塚貞典 2008/01/21 22:02:59 ツリーへ
Re: センター試験 |
返事を書く ノートメニュー |
小塚貞典 <lpgxypjsxi> 2008/01/21 22:02:59 | |
素朴な疑問
なぜ文法が変わる必要があったか? |
└問題点と背景について私見 小塚貞典 2008/01/23 10:20:03 ツリーへ
Re: 素朴な疑問 |
返事を書く ノートメニュー |
小塚貞典 <lpgxypjsxi> 2008/01/23 10:20:03 | |
問題点と背景について私見
1.ウィンドウズの普及でウィンドウズで計算機の基礎をする必要がある。 2.数学というカテゴリーでの出題であること。 3.ms社の経済的シェアーを意識しなければならないこと。 4.学習の成果であること、など、試験の結果が人生の評価ではないから 5.学校、職場、家庭という生活の中の課程であること。 6.あと何でしょう、ビートルズとか? |