はじめようプログラミング
「アルゴロジック」「
1時間で学ぶソフトウエアの仕組み」を経て、
JavaScriptへ
東京都立三鷹中等教育学校
情報科
プログラミングをはじめる訳
「世界最先端
IT国家創造宣言・官民デー
タ活用推進基本計画」
平成29年5月30日 改訂
http://www.kantei.go.jp/jp/singi/it2/k
ettei/pdf/20170530/honbun.pdf
「プログラミング」で
PDFを検索するだけでも
さらに、気になる言葉が「データサイエンス」
能城茂雄 http://noshiro.shigeo.jp/社会
or 科学 -> 情報I へ
プログラミング教育は難しい?
特別なソフトウェアが必要・・・
教材がない・・・
専門家じゃないし、詳しくない・・・
だれでも、できる3時間+αプログラミング
はじめてのプログラミング(実践報告)
1.
アルゴロジック
http://home.jeita.or.jp/is/highschool/algo/
2.
1時間で学ぶソフトウェアの
仕組み
http://dolittle.eplang.jp/index.php?1h
3.
JavaScript
能城茂雄 http://noshiro.shigeo.jp/本時の目的
次回学習するプログラミングの前に
経験して欲しい 「
アルゴリズム
」を
体験・理解する
アルゴリズムとは
コンピュータを使ってある特定の目的
を達成するための処理手順
別の表現
「アルゴリズム」というのは、コンピュー
ターで計算を行うときの「計算方法」
物事を考えるときの「やり方」
キュウリを輪切りにする手順
効率よくキュウリを切るために、処理手
順を見直すと、
キュウリを輪切りにする手順2
効率よくキュウリを切るために、処理手
本日の手順
遊び方
を見る
操作方法を動画で見る(オプション)
チャレンジ問題にチャレンジ!
◎ は完ぺき(無駄なし)
5点
○ はできたけど無駄がある
2点
最後に印刷して、集計結果を見せる(検印有
)
能城茂雄 http://noshiro.shigeo.jp/「
アルゴロジック
」で
検索すると自宅でも出来ます
授業でのポイント(能城の感想)
アルゴロジックは、2時間やると飽きる
ページは、検索して開かせるのではなく、
ショートカット、ブックマークなどを利用
検索すると、答えがでてしまいます。
チェックは、手間がかかるが検印
点数の計算は、生徒に行わせる
2時間目
1時間で学ぶソフ
トウェアの仕組み
ドリトル
教育用プログラミング言語「ドリトル」
http://dolittle.eplang.jp/
オンライン版
BitArrow
オフライン(
Java版)
1時間で学ぶソフトウェアの仕組み
http://dolittle.eplang.jp/index.php?1h
http://noshiro.shigeo.jp/2017aomori/
3時間目~
JavaScript編
教科書 P.114~
JavaScriptでコーディング
メリット
ブラウザ(
Internet Explore)で動作
特別なソフトウェアがいらない
市販の解説書がたくさんある
教科書・指導書に解説がある
デメリット
デバッグが難しい
メモ帳が使いにくい
JavaScript 1時間目
本時の目的
(以下のことを理解する)
コンピュータにとってのプログラムがどの
ようなものか体験する
JavaScriptという言語を使ってみる
教科書 資料P.13も参照能城茂雄 http://noshiro.shigeo.jp/
簡単なプログラム
「
プログラム
(program)」とは
コンピュータが行う
処理手順を指示
したもの
をプログラムという
プログラムはコンピュータが動作するため
に必須
コンピュータは柔軟に判断できない
あらかじめ「こういう状況ではこうする」という
処理を人間がプログラムとして指示している
プログラム作成の手順
1.
プログラムを作成するソフトウェアを起動
例 メモ帳などのテキストエディタ
2.
プログラムを入力し保存
エディタでプログラム言語の文法に従って命令を
記述する
3.
プログラムが動作するか確認
例 ブラウザで動作確認
4.
動作しない場合にプログラムを編集
例 バグがないかデバッグする
世界初のバグ(
bug)
http://gigazine.net/news/201209
10-first-computer-bug/
具体的な作業
Zドライブ(個人用ドライブ)にフォルダ作成
js
というフォルダを作る
(
jsはJavaScriptの略
)
1.
Terapad(エディタ)を起動
2.
ファイル名を付けて保存
プログラム毎に名前を付ける
3.
プログラムを入力
動作確認&バグがあれば修正
能城茂雄 http://noshiro.shigeo.jp/
保存の時の注意点
jsとなっているか?
名前は?
moji.html
文字列を表示するプログラム
ファイル名
moji.html
<html> <body> <script> document.write(“MITAKA”); </script> </body> </html> MITAKA 実行結果ダブルクォート
セミコロン
教科書 P.114 重要 Shift を押しながら “ 2 ふ能城茂雄 http://noshiro.shigeo.jp/
注意すべき点
文字は半角(つまり
ASCII文字)で打つ
特に記号は注意する
命令の文字は正確に入力する
コンピュータは間違いを自ら訂正できない
文字列を3個表示するプログラム
ファイル名
moji2.html
<html> <body> <script> document.write(“MITAKA_”); document.write(“MITAKA_”); document.write(“MITAKA_”); </script> </body> </html> 実行結果能城茂雄 http://noshiro.shigeo.jp/
本時の目的
(以下のことを理解できた?)
コンピュータにとってのプログラムがどの
ようなものか体験する
授業のポイント
手順でつまずかないように丁寧に
日本語(日本語入力)は使わない
JavaScript 2時間目
本時の目的
(以下のことを理解する)
フローチャート(流れ図)を理解する
アルゴリズムの基本構造を学ぶ
順次処理
繰り返し
(判断分岐)
フローチャート
(flowchart)
処理手順を示した図
流れ図とも呼ばれる
記号や書き方が
JISで定められている
文字列を表示するプログラムの流れ図
ファイル名
moji.html
<html> <body> <script> document.write(“MITAKA”); </script> </body> </html> はじめ “MITAKA” おわり文字列を3個表示するプログラム
ファイル名
moji2.html
<html> <body> <script> document.write(“MITAKA_”); document.write(“MITAKA_”); document.write(“MITAKA_”); </script> </body> </html> はじめ “MITAKA_” おわり “MITAKA_” “MITAKA_”課題1 結果を予想してみよう
ファイル名
ex01.html
document.write(“103-62”)との差は?
<html> <body> <script> document.write(103-62); </script> </body> </html> はじめ 103-62 おわり 41 実行結果能城茂雄 http://noshiro.shigeo.jp/
順次処理
<html>
<body>
<script>
var a=1;
document.write(“number=”
,a
);
</script>
</body>
</html>
ファイル名
var.html
a
はじめ “number=”,a おわり var a=1 number=1 実行結果var a=1;とは?
「
var a」で、変数宣言
「
a=1は
変数
aに1を代入する
」
「;」で、文の終わり
aと1は等しいではない ※数学と違うところ
等しいを意味する記述は
a==1
a
1
能城茂雄 http://noshiro.shigeo.jp/
順次処理(入力を読み取る)
<html>
<body>
<script>
var namae=prompt(“What is your name?”);
document.write(“hello,”,namae);
</script>
</body>
</html>
ファイル名
hyouji.html
“What is your name?”
namae
hello,taka
ポップアップブロックを無効にする
ポップアップはブロックされました。
上記メッセージが出た場合は、
2か所クリック
prompt命令によってポップアップが出るため
1
2
繰り返し(文字を
4個表示)
ファイル名
juu.html
<html> <body> <script> var c; for(c=1;c<=4;c=c+1){ document.write(“TAKA_”); } </script> </body> </html> はじめ “TAKA_” おわり ループ i=1;i<=10;i++ ループ c=1;c<=4;c=c+1 TAKA_TAKA_TAKA_TAKA_ 実行結果 var cfor文
for(初期化;実行条件;増分処理){
初期化:変数
cは初期値として1が代入される
実行条件:
cが4以下の場合、{ }の間が実
行される
増分処理:1回{
}の間を実行すると変数
c
for(c=1;c<=4;c=c+1){
document.write(“TAKA_”);
}
能城茂雄 http://noshiro.shigeo.jp/
本時の目的
(以下のことを理解できた?)
フローチャート(流れ図)を理解する
アルゴリズムの基本構造を学ぶ
順次処理
繰り返し
(判断分岐)
能城茂雄 http://noshiro.shigeo.jp/
本時の目的
(以下のことを理解する)
アルゴリズムの基本構造を学ぶ2
順次処理
繰り返し
判断分岐
繰り返し(総和を求める)
ファイル名
sum.html
<html> <body> <script> var c,sum=0; for(c=1;c<=10;c=c+1){ sum=sum+c; } document.write(sum); </script> 実行結果 var c, sum=0繰り返し(奇数の総和を求める)
ファイル名
sum02.html
<html> <body> <script> var d,sum=0; for(d=1;d<=5;d=d+2){ document.write(sum,”+”,d,”=“); sum=sum+d; document.write(sum,”<br>”); } </script> </body> </html> 0+1=1 1+3=4 4+5=9 実行結果 はじめ おわり var d,sum=0 sum=sum+d sum,”<br>” ループ d=1;d<=5;d=d+2 ループ sum,”+”,d,”=“入力した数までの総和を求める
<html><body> <script>
var e,num, sum=0;
num=parseInt(prompt(“Input num->”)); for(e=1;e<=num;e=e+1){ sum=sum+e; } document.write(“sum=”,sum); </script> </body> はじめ var e, sum=0; sum=sum+e ループ e=1;e<=num;e=e+1 ループ “Input num->” num
ファイル名
sum03.html
実行結果 ※10と入力したら能城茂雄 http://noshiro.shigeo.jp/
本時の目的
(以下のことを理解できた?)
アルゴリズムの基本構造を学ぶ
2
順次処理
繰り返し
判断分岐
能城茂雄 http://noshiro.shigeo.jp/
本時の目的
(以下のことを理解する)
アルゴリズムの基本構造を学ぶ3
順次処理
繰り返し
判断分岐
<html> <body> <script> var moji; moji=prompt("Y or N ->"); if(moji=="Y"){ document.write("Y!!"); } else { document.write("N!!"); }
判断分岐(
Yかどうか判定する)
ファイル名
ifbasic.html
実行結果 ※Yと入力したら 実行結果 ※Y以外を入力したら はじめ moji “Y or N ->” moji==“Y” ”Y!!” おわり ”N!!” var mojiif文
能城茂雄 http://noshiro.shigeo.jp/
条件式がみたされた場合に文
1が実行さ
れ、条件式が満たされない場合には文2
が実行される
if(条件式){
文
1;
} else {
文
2;
}
教科書 P.119判断分岐(
Yかyであるか判定する)
ファイル名
ifbasic2.html
<html> <body> <script> var moji; moji=prompt("Y or N ->"); if(moji=="Y" || moji =="y"){document.write("Y!!"); } else { document.write("N!!"); } Shift + |¥- を2個入力 はじめ moji “Y or N ->” moji==“Y” || moji==“y” ”Y!!” ”N!!” おわり var moji
能城茂雄 http://noshiro.shigeo.jp/
偶数奇数の判定をする
ファイル名
if.html
<html> <body> <script> var kazu=parseInt(prompt(“NUMBER”)); var ans=kazu%2; if(ans==0){ document.write(“even number"); } else { document.write(“odd number"); } </script> </body> </html> NUMBER 2 even number 実行結果 ※偶数を入力したら NUMBER 3 odd number 実行結果 ※偶数以外 はじめ var kazu “NUMBER” ans==0 おわり var ans=kazu%2even number odd number
教科書 P.119
演算子
プログラムで使用
する演算子は数
学などとは異なる
配列を使ったプログラム
ファイル名
array.html
<html> <body> <script> d=new Array(31,28,31,30,31,30,31,31,30,31,30,31); m=parseInt(prompt(“Input 1-12>”)); document.write(d[m-1]); </script> </body> </html> Input 1-12> 11 30 実行結果 ※11と入力 教科書 P.120本時の目的
(以下のことを理解できた?)
アルゴリズムの基本構造を学ぶ
3
順次処理
繰り返し
判断分岐
追加で、配列
サンプル問題1(次のプログラムの結果を答えよ)
能城茂雄 http://noshiro.shigeo.jp/<html>
<body>
<script>
document.write("document");
</script>
</body>
</html>
<html> <body> <script> var red=3; document.write(red); </script> </body> </html><html>
<body>
<script>
var a;
for(a=1 ; a<=4 ; a=a+1) {
document.write(“a”);
}
</script>
</body>
</html>
サンプル問題2(次のプログラム空欄を埋めよ)
<html> <body> <script> ① </script> </body> </html> はじめ “TAKa” おわり <html> <body> <script> var a; for(a=1 ④ 3; a=a+1) { document.write("a"); } </script> </body> </html> はじめ “a” おわり ループ a=1;a<=3;a=a+1 ループ var a最後に個人的な思い。
本来、
PCの操作やファイル・ディレクトリ
の概念などは義務教育段階で修得して
ほしい。
プログラミングの基礎も。
今後、高等学校としてのプログラミング
教育は確実に現在より科学的な内容に
変化するので、私たちも準備が必要。
能城茂雄 http://noshiro.shigeo.jp/参考資料 1
情報 最新トピック集
2017高校版
社会科の資料集を意識した内容
参考資料 2
Progate
https://prog-8.com/
オンラインプログラミング学習サービス
能城茂雄 http://noshiro.shigeo.jp/