小学生・中学生向けのICT教室/
イフキッズプログラミング日暮里

03-6806-6861
(平日10:00~18:30)

小学生・中学生向けのICT教室/
イフキッズプログラミング日暮里

03-6806-6861
(平日10:00~18:30)TOPへ戻る
メニュー
最近のブログ一覧




最近の生徒様の声


お知らせ一覧




タグ

【木2】長いものを短くするには??

2020/10.24

こんにちは!
キッズプログラミング教室「イフキッズアカデミー」
池ちゃん先生です!


※クラス分け
【火1】・・・火曜日16:00〜17:30
【火2】・・・火曜日17:40〜19:10
【木1】・・・木曜日16:00〜17:30
【木2】・・・木曜日17:40〜19:10
【土】・・・土曜日10:00〜11:30
【日】・・・日曜日10:00〜11:30

今回は木曜後半のレッスンを報告します!

本日の先生は、えりちゃん先生。
来てくれた生徒さんは、Tくん(小4)、Kくん(小2)、Hくん(中3)でした。

それではえりちゃん先生よろしくお願いします!

こんにちは、えりちゃん先生です。
それでは報告を始めていきます!

始めはロジカルコースのTくん(小4)から。

Tくんは前回からじゃんけんゲームの課題に挑戦しています。
今回は、あいこの時に相手が「じゃーんけーん…」という処理と、「○勝×敗」と表示する処理を作っていきます。

まずは○勝×敗と表示する処理を作っていきます。
じゃんけんの処理は一つ一つ書くと膨大な量になるので、作りながら少し混乱している様子…。
何とか頑張って条件を作り、全部の処理を書いてくれました。

それがこちら↓

まだまだ下に続いています…!頑張った!

処理は作れたのですが、実行してみるとスプライトは○勝×敗と言ってくれません。
これはプログラムを開始するときにしてほしい大事な処理がないことが原因なのですが、今回は一旦置いておきます。

というのも、この長い処理を書いた後T君がひらめきました。

T「この長いのさ、もしかして変数使ったら短くなるんじゃないかな?」
え「おっ、そうだね!変数に勝った数・負けた数が入ってるからそれをうまく使えばもっと短くできそうだね。」
T「どうやるんだ~?」

そういいながらそのやり方を考えていきます。
しかしなかなかに変数は難しいようで、気分転換に違う処理を作ってみることに。

あいこの時の処理ができていなかったのでそちらに取り組みます。
そちらはするすると解けて、相手が「じゃーんけーん…」と言ってくれるようになりました。
相手と自分の出した手の判別もうまくできていましたね!

え「じゃーんけーんっていうのに追加して、相手が何を出したのかも言ってほしいな。」
T「んー、わかんない。」
え「ちょきを出してあいこだったらここの処理を通るんだよね。ここで「じゃーんけーん」って言ってるからその前に出した手を言ってもらえたらうまく表示されそう。」
T「あー、そっか!」

ちょきであいこだった場合、相手が「ちょき」と、出した手を言ってくれるようになりました!
やり方がわかったTくん、すべてのじゃんけん処理に出した手を表示するブロックを追加してくれます。

そこまで出来たところで今日はタイムアップ!
あいこの処理ができましたね!
最後、「あいての手」という変数にグーチョキパーが入っているからそれを使うだけで入っている文字が表示できる、ということがわかったTくん。
それがわかると、途中で悩んでいた「長い処理を短くする方法」の答えが見えてくると思います。
次回、そこを完成させていきましょうね!

続いては、同じくロジカルコースのKくん(小2)。

Kくんは今回ボールをキャッチする課題に挑戦しました。

①スプライトが真ん中よりも右側にいるときに「右」と答えた場合は「キャッチ」と表示する。
②スプライトが真ん中よりも左側にいるときに「左」と答えた場合は「キャッチ」と表示する。
③上の①・②に当てはまらない場合は「失敗だあ…」と表示する。

この3つの条件を作っていきます。

まずは「右」と答えたら「キャッチ」と表示する処理を作っていきます。
最初から一気に正解を作るのではなく、できるところから作っていくことはとても大切です。いい滑り出しです。

もし~なら、というブロックを使って上手に条件を作ることができました!
それがこちら↓

これで実行してみますが…「右」と答えた時は「失敗だあ・・・」が表示されてしまいます。

え「ブロックの上から順番にやってくれるのは覚えてる?」
K「うん。」
え「じゃあ、もし左だったらどのブロックを実行してくれる?」
K「(もし左=答えならのすぐ下の)紫のキャッチってやつ。」
え「そうだよね。右はどこの中に入ってる?」
K「左?」
え「そうだね、ってことは右のブロックを実行するには左って答えてからじゃないと通れないじゃないかな?」
K「そうかも」
え「もし左だったら、そうじゃなくてもし右だったら、そうじゃなくてそれ以外だったらっていう3つの条件を作ってみよう。」

なかなか難しい問題ですが、何とか条件を分岐させるブロックを組み合わせて処理を作ることができました!
確認してみると正しく動いているようです。

では残りの真ん中より左or右だったら、という処理を付け足していきます。

え「真ん中が0だとしたら、左は0より大きい?小さい?」
K「小さい!」
え「正解!じゃあ右は?」
K「大きい!」
え「そうだね!大きさを比べるブロックはどれかな?」
K「演算!」

ここはとてもはっきり答えてくれました!
演算ブロックから大小を比べるブロックを見つけて、X座標と0を比べてくれました。どっちが大きいかをしっかり考えながら組み立てます。

え「誰が0より大きいときにしたいんだっけ?」
K「猫。」
え「そうだね。じゃあ猫は0より大きいってするには何を使うかな?」
K「猫は、だからこれ(=のついた演算ブロック)!」
え「正解!猫はX座標が0より大きいになるように組み立ててみよう!」

そして出来上がったのがこちら↓

見事正解できました!

クリアしたところで今日はタイムアップ。
条件作りが難しかったと思いますが、とっても頑張りました!
次の新しい問題も頑張っていきましょうね!

最後はプロフェッショナルコースのHくん(中3)。

今日もVisual Studioを使ってアプリケーションを作成していきます。

すらすらと問題を解いていくHくん。
四則計算をしてくれるアプリケーションを作成したときも、ばっちり条件が作れていました。

それがこちらの問題↓

好きな数字を入れて「掛ける」か「割る」のどちらかのボタンを押すとその計算をしてくれるというアプリケーション。

注意する点は「0では数を割れない」という点。
何も考慮せずに処理を作るとエラーになっていしまうんです。

しかしHくん、もし割る数が0だったらメッセージでできないことを知らせる、という処理を付けてくれました!
しっかり考慮出来てて素晴らしいです。

基本自力で調べてどんどん先に進んでいけるHくん。
そんなHくんでも本日最後の問題は少してこずりました。

それがこちらの問題↓

5つの整数を入力すると…↓

その中から最大値を見つけるアプリケーションです。
この最大値を見つける、という処理をどのようにしたらよいかがピンとこなかったようです。

え「いくつか方法はあると思うけど、1つは最大値を見つけてくれる関数を使ってみること。」
H「関数…。(ネットで調べてみるHくん)」
え「そうそう、そのページにも書いてあるんだけど、そういうのを使うのもありだね。」
H「うーん。」
え「2つ目は1つ目の数字と2つ目の数字の大小を比べて、大きかった方と3つ目の数字の大小を比べて…っていうように最後まで比べていくっていうやり方かな」
H「あー、なるほど。」
え「最初の数を暫定一位にして他と比べるって感じでイメージ沸くかな?」
H「やってみます。」

その後見てみると、5つの数を順番に比べ、その中で一番大きい数というのを見つけられていました。どうしてそのような処理にしたのか説明もできていました。素晴らしい!

ただ実行してみるとエラーが…!

H「なんかエラーが出ちゃってて…」
え「なんていうエラー?」
H「インデックスが境界外です、みたいなやつです。」

それがこちら↓

H君の繰り返しの条件範囲は「6より小さい場合」でした。
今回は5つの数を調べるので条件範囲は「5より小さい場合」でなくてはいけません。

H「5個だから0から数えて…あっ!」

先生に自分が考えた条件を説明してくれているときに間違いに気づいたようで、範囲を5より小さい場合に修正してくれました!
動かしてみると正常に動きます。

え「考え方はとてもいいね。ただ一つだけ惜しいところが…。」
H「はい。」
え「今最大値の暫定一位を0にしてくれてるよね、これだと最初の数字は0と比べるから負の数しか入ってない場合どうなるかな。」
H「えーと、あぁそっか。0に。」
え「そうそう、入力してない0が最大値になっちゃうよね。」
H「てことは、えーと、この処理をここじゃなくてもう一個後に…。」

最初は条件を書き換えたりしたりしていましたが、条件ではなく、処理を書く位置が違うということに気づき修正。
全て負の数で入力して実行してみるとちゃんと負の数の中から最大値を見つけることができました!

クリアしたところでタイムアップ!
今日もたくさん進められていました。自力で答えまでたどり着けていてすごいです!
次回からはまたちょっと違った問題が出てきます。
少し難しいかもしれませんが、H君なら大丈夫!
一緒に頑張っていきましょうね!

えりちゃん先生ありがとうございました。
Tくんは順番にじゃんけんの結果を並べましたねぇ。素直に考えると確かにそうなのですが、これが出来るのは数が決まっていて、少ない場合。例えば、これが100回じゃんけんして、その勝敗を!ってなったら、まぁ、結果を並べない方法考えますよね。ちゃんとその方法に気付いたようなので、次回は短いプログラムになるはず?!
Kくんはもしブロックを使ってキャッチボール。もしブロックの組み合わせが出てきたので、うまく組み合わせないと、思い通りに動いてくれません。
先生のサポートを受けつつ、無事完成までいけましたので、今回覚えたことをうまく使おうね。
最後は2回連続レッスンのHくん。0で割ったらエラーになるところを覚えていたのはかなりよかったです。プログラムを作る上で人間の間違った入力に対して、「間違ってるよ」ってプログラムが書けるのはすごく重要なので。
その次の最大値を探すは先生の力を借りつつも、最後まで出来ましたね。
2箇所で詰まってしまいましたが、そこは大人でもよくある躓き。
繰り返す数を間違ってしまったところと、最大値を入れるための変数を0で初期化してしまったところ。でもこれで覚えてくれれば、同じようなことが出てきても大丈夫だよね?!


次回のレポートもお楽しみに!

無料体験授業実施中!
毎週火曜日 16:00~17:30、17:40~19:10
毎週木曜日 16:00~17:30、17:40~19:10
毎週土曜日 10:00~11:30、11:40~13:10
※日曜日も臨時で実施していることがあります
 お気軽にお問い合わせください

お申し込み・お問い合わせは、こちら



お電話でも受け付けております。
03-6806-6861
(平日10:00~18:00)

イフキッズLINE@お友だち募集中!
新着授業レポートの通知、無料説明会やイベントの案内など、
耳よりな情報を配信中です。
加えて、お友だち登録されている方には、
イベント参加費の割引、
入会の際の割引、プレゼントなどの特典も!


友だち追加






   お問い合わせボタン|プログラミングスクール・習い事のイフキッズプログラミング(IF Kids Programming) お問い合わせボタン|プログラミングスクール・習い事のイフキッズプログラミング(IF Kids Programming)