2022情報I 2学期
第14回 授業の振り返りより

質問より

先生はよく他のプログラミング言語が~といいますが実際世の中にはどれくらいのプログラミング言語があるのでしょうか。また言語が統一されてたほうが覚えやすいのに何故いくつもプログラミング言語があるのでしょうか?
たくさんあります。数えるのが無駄なほどあります。目的によってプログラミング言語が違うのですから、目的の数だけあります。プログラムの作り方はプログラミング言語が変わってもたいして変わらないのです。違うのは文法だけです。
randomのようなモジュールとは何ですか。また、それはすべてのプログラミング言語で共通して使えるのですか。
授業中口頭で説明しました。Pythonの標準機能にはない便利な関数群です。その程度の理解で良いかと思います。Pythonのモジュールですから、Python以外では使えません。
Pythonにint文があるように、コンピュータに処理できるのは数字だけなのか、もしそうなら文字や記号を数字に直して処理させることは可能なのかが気になりました。
情報のデジタル化、やりましたよね。何度も書いていて飽きてきましたが、コンピュータは超高速二進法計算機です。文字を入力しても数値に変換されます。文字や記号は数字に直して処理しています。たとえば、0という数を入力したら、内部的には(4ビットだとしたら)二進法で0000と記録されます。0という文字を入力したら、文字コードとして0110000と記録されます(教科書41ページ図3参照)。
pythonとGoogleコラボラトリは同じプログラム言語なんですか
同列に比べられるものではないですね。GoogleコラボラトリーはPythonというプログラミング言語でプログラムを作るツールです。
乱数のプログラムを書いたのですがうまく実行されませんでした。
「うまく」というのがわかりませんが、うまく動くまでエラーを修正して下さい。1行全部消してからもう一度打ち直すと動くこともあります。エラーが出ないのなら、動作していない可能性もあります。こういうのは、授業中に質問しないと解決できませんよね。
乱数でiをつかうことできますか。
iを使うというのはどういうことでしょう?for文で繰り返しを書くときのカウンタとして用いるiのことでしょうかね。乱数は何度でも繰り返して使えます。
コンピュータにランダム関数を打ち込んだ時、コンピュータはどんな基準でランダムにしているのですか?
いい質問ですね。コンピュータは正確に計算するのがウリですから、乱数なんて作れないのです。そのため、「擬似乱数」という手法で乱数とみなしても概ね問題がないような乱数を生成するプログラムを作り、モジュールとして添付してくれています。
なぜフラグを回収するという言い方は間違っているのですか。
フラグは立てるか倒すことによって状態を識別するものです。回収したら識別できなくなっちゃいますよね。回収するが妥当な使い方だとするなら、フラグという言葉の使い方が間違っているのです。
rangeなどは()の中でくくられている数の終了値を含まないのに対し、randomは含まれると今回の授業で学びました。なぜこのような違いが生まれているのですか。統一されている方が使い勝手がいいと思うのですが...。
そう決めたからです。何らかの意図があるのだと思います。私はいつも忘れていて間違えますが、実行してみて違うことに気づいて修正するので、なんら面倒なことはありません。間違えずにプログラミングして、初回から正確に動くプログラムを作るなんて幻想は忘れましょう。難解間違えても修正して、正しく動くプログラムに直せることが重要なのです。
スライドにあった、def関数の中の構造がどのようになっているのかがわかりません。/return meがよく分からなかった。
関数については、あまり使うことがないので省略したいと思い、紹介だけにとどめました。ただ、大学入学共通テストの「情報」の問題には、関数の考え方が必要となりそうなので、別の機会に一度ちゃんとやろうと思っています。
スライドの例は、一つ前のスライドと見比べるとわかりますよ。
me=random.randint (1,6)
とすると、変数meに1~6の整数が代入されます。print(me)とすれば、変数meの値が表示されますし、return me とすると、変数meの値を関数の計算結果として元のプログラムに返すことができます。returnって戻るって意味ですよね。
プログラミングで使える関数は今までに出てきたので全部ですか?もっと効率化を図ったものはありますか?
効率化?がよくわかりませんが、授業で利用しているPythonの関数は本当に基本的なものばかりで、日本語のレベルでいうと3歳児程度だと思って下さい。さまざまなモジュールをインポートすれば、さらに関数を増やすことができます。私もすべて知っているわけではありません。
アンケートを送る際、「回答を完了する」ボタンを押しても何も反応がなく送られないことがあるのですがどう対処すれば良いでしょうか?
ログインがタイムアウトしているからです。あらためてClassiを開き直し、アンケートで[回答を完了]してください。
授業内で「Jupiterの黒い画面を全画面表示していると“危険”」と仰っていましたがなぜですか。
授業中口頭で説明しました。JupyterNotebookとして皆さんがプログラミングしているブラウザの画面はプログラムを入力するインターフェイスだけであって、プログラムが実際に動作しているのはあの黒い画面なのです。何も表示されていないからといって[×]ボタンをクリックし、「プログラムが動きません」という人が後を絶ちません。直接使うことはないので最小化[_]ボタンを押しておいて下さい。

感想より

ランダム関数がゲームのほかにどのような用途で使われるのか疑問に思った。
世の中に不確定な要素ってたくさんありますよね。そういったことをシミュレーションするのに使われます。また、一定だと困るパスワードの生成など、利用場面は多数あります。
立川高校前の教科書会社を尋ねたところオフィスが紙でいっぱいでした。教科書番号の用紙や、取引先の名前の紙などでした。CPに入れ込んでしまえばいいのにと最近の情報の授業を受けていておもいます。
私も研究のために教科書を買ったりするので、よく「グレーの扉の2階」に行くことがあります。教科書自体は紙ですし、いろいろな学校とやり取りしなければならない教科書会社さんはどうしても伝票を使う必要があるのだと思います。
何をしているのか理解できないことが多い。友達に教えて貰ってもなかなか理解できない。
プログラミングは自分でやってみないとなかなか理解できないと思います。「基本的なプログラミング」を丁寧にやり直してみることをお勧めします。
プログラミングにおける乱数が実は完全な乱数ではなく気にならない程度の規則性があるということが気になった。現実世界ではサイコロなどで簡単に乱数を生み出せるのにコンピュータにはそれができないのか。自分なりの考察だが、コンピュータは超高速計算機にすぎず、定められた行動しか起こせないので、「何が出るかわからない」という乱数は扱えないのだと思う。
プログラミングで使われる乱数は、疑似乱数といい完全な乱数ではないですが、一般的な用途であれば、規則性が気になるようなことは無いようになっています。
リストにわざと0を入れておいて数えるやり方、すごいと思いました。リストをそんなふうに使うなんて思いつきもしないと思います。
プログラミングって色々な思い付きも必要ですが、ほかの人が使っている技をまねすることもとても大切です。Pythonは使っている人が多数いるので、ネットを検索すると記事やプログラムがたくさん出てきます。どうなっているのか読んでみたり、コピーしたり自分で打ち直してみるとそういった「テクニック」が身に付きます。
前回まではフローチャートが用意されていたのでその通りにプログラミングを打てばよかったが、一から自分で考えるとなると、とても難しかった。
そうですね。プログラミングはアルゴリズムをプログラミング言語で表現することですから、最初にアルゴリズムを考える必要があります。フローチャートがあればそれを参考にすればよいのですが、ないときは自分なりに手順を整理して考える必要がありますよね。なれないとちょっと難しいかもしれませんね。
同じ形で表現すると繰り返しで行うことができて、手間を省くことができると知った。乱数は色々なところで使われていて日常に生かされていることが分かった。自分で簡単なゲームを作るのが何にしようかすごく迷っているけれど今まで習ったプログラミングを活かして作れたらいいなと思った。
これ、とても大切な考え方で、どこが同じでどこが違うかを正確に把握して、変化する部分だけを繰り返し処理にすると短く正確なプログラムが書けますよね。ここができないとif文やelif文を大量に書くことになったりします。
・とても初歩的な気づきなのだが、「break」と「count」はどちらも5文字なのにもかかわらず、「count」のほうだけ省略されて「cnt」になっている。「break」のほうは、スペルの似たプログラムがあるため省略していない ということなのだろうか。
困りましたね。式の形から変数だと見分けられないのはマズいですよ。breakは命令でPythonの言語として定められたものです。当然省略はできません。cntはカウンタとして利用している変数で、私が勝手に決めたものです。countでもcntでもkauntaでもAでもBでも何でもいいのです。
今回、プログラムをつくりました。小さい頃に、文部科学省が公開している「プログラミン」というスクラッチに似たものでプログラミングをしていました。その時に、プログラミングはパズルだという感覚を持ち、楽しく作っていました。今回pythonを使っていると、一文字単位でプログラムを見てしまい、ひたすら変な言語を書いてどういう仕組みで動いているのかなんだかわからなくなっていました。しかし今回作ってみたところ、プログラム命令の文型を理解したのもあり、大きな括りでプログラムを読めるようになりました。そして「プログラミン」の感覚でプログラムを書くことができ、楽しく作業ができました。
Pythonのような文字で入力するプログラミングもブロックも同じようなものなんです。慣れてくると、文字の塊がブロックに見えて構造がわかりやすくなるはずです。
AIとじゃんけんをして、先に30勝すると勝ちというゲームがある。(AIは自分の手の出しやすさやパターンを分析してだんだん勝ちにくくなるらしい)そのゲームにランダムで手を出したらどうなるのか試す時、Pythonでランダムにグーとチョキとパーを表示させるプログラムを書いてやった。Pythonのプログラムが素早く書けると、自分がやってみたいことがはやくできるので便利だなと感じた。ジャンケンをお互いランダムで対戦させるとどうなるのか(1/3になるのか)など、そんなに難しくないプログラムでいろいろなことが確かめられるなと感じた。
AIってほどではなくても、勝つと成功報酬が得られ、成功報酬を最大化するようなプログラムもかけますよね。原始的なAIですけど。作ってみると仕組みが分かって面白いですよね。まずは作ることが大事かもしれません。
プログラミングでは間違えたところを直すことが大切だから間違えることを恐れてはいけないと思った。
夏休みとここ何週間かでプログラミングに触れていて、数学のチャートなどとはとは違って正しく書かれたものを読むだけではなにも頭に入ってこないなと毎回感じていたので、今日先生がおっしゃっていた「こうかなと思ったらとりあえず書いてみる、どんどん間違える」という精神が本当に大事だと思った。1行1行に深い意味があり、少しでも間違えたらうまく動かないため、1行ずつ丁寧に意味を確認するには実際に打ち込んでみるしかないなと思えるようになった。今日新たに学習したrandomも正直見ただけではよくわからなかったけれど、サイコロの例を自分で写してみることで分解して考えることができて理解に一歩近づいた気がした。
授業の中で、プログラムを読めるようにするために書いていると聞いて納得した。確かに、英単語を覚えるときは眺めるよりも、書い方が頭に入ってくるなと思った。
とりあえず思ったように書いて実行し、エラーが出たらどこが間違いか全力で理解することが大切だと思った。思いついて書いて、実行して、直して、付け加えてという流れでの作業で、頭の中でなんとなくのフローチャートがあるとやりやすいなと感じた。
プログラミングは楽しい。今気づいた。学んだことをすぐに活用できて、楽しく感じる。エラーが出れば何が違うのか考えて、作り直すことで頭に定着していってる感じがする。先生の言う、「とりあえずやってみる」の大切さが分かった気がする。
プログラミングを自分で行うには、フローチャートやアクティビティ図に考えを整理するとやりやすいと思った。
プログラムによってさいころを振った時の出目を数を記録したり、大きな数が素数かそうでないかを識別することを即座にできて、とても便利に感じた。だからこそ、それらを今後一種の道具として使えるか使えないかどうかで作業効率が変わってくるのではないかと思った。
マイクロビットで関数を使ったゲーム作りをしたことがあるが、その関数を作るためにrandomやrandintにwhileを使ってプログラミングを組んでいたことが分かり、日本語の命令でプログラミングをするソフトは子供でも使いやすいようにかなり簡略化されていると感じた。乱数を使うときも膨大な数を扱うことが多いからコンピュータが適していると分かった。
リストをどのような場面で活用するのかわからずに覚えていたが、点数一覧など、膨大なデータの管理に使えることを知り、将来コンピュータを使い従える人間になるために役立ちそうだと思った。また、乱数が身近なゲームのほぼ全てに使われていたことを知って、私も上手に使いこなしたいと思った。
今回になってやっとfor文の仕組みを理解できたが自分が作っているもの(じゃんけん)を考えると特定の回数繰り返すfor文より条件の間動き続けるwhile分の方があっているなと気づいた
自分がこんなものを作りたいと思った時その為には何が必要かを逆算して考えてそれをプログラミングしていく。それは少し思考過程図に似ていた逆算して考えてどのようにコードを組み合わせていくかが重要だと思った
前回の授業でプログラミングが全然出来なかったので、夏課題だった基本的なプログラミングをもう一度最初からやり直した。前回よりスムーズに先生の説明がわかった。簡単で正確なプログラミングで面白くなるように、プログラミングを考えていきたい。
乱数と関数を理解し、活用することができた。自分でプログラムをかけてうれしかった。フラグやループを活用できるようにしたい。
良いプログラムは、コンピューターの多くの作業と、人間の少しの閃きでできている。

自己評価集計

自己評価集計

ワードクラウド

3つのキーワード

3つのキーワード
感想や気づき

感想や気づき
テキストマイニング 無料ツール by ユーザーローカル
前のページに戻る