新・初級Aコーステキスト
学習指導案
学習指導案
■単元名
初級Aコース Unit1-2 ITの基礎を学ぼう!
■単元の学習目標
ITの基礎として以下を学習する。
PC操作に必須のタッチタイピングとファイル操作。
コンピューターの5大装置。
デジタルとアナログ
使用するツールであるProcessingの環境を整える。
■テーマ選定の理由
社会の隅々までIT化された現代社会において、最低限必要なIT知識を身に付けておくことが重要である。
■単元の学習計画
カリキュラム
PC操作の基礎 Unit1
ハードウェアとソフトウェア
コンピューターの5大装置
デジタルとアナログ
プログラムとは
Processingとは Unit2
起動しよう
使いやすくしよう
■育成したい思考力
ロジカルシンキング
■評価計画
PCの操作、特にコピー・ペーストができる。
コンピューターの5大装置について理解している。
デジタル情報の単位や進数変換について理解している。
■応用・発展
身近なところでプログラムを使用しているものを調べてみる。
継続してタッチタイピングを練習する。
講義
Unit 1
コースの紹介
「プログラミング基礎」
ITの基礎を学ぼう!
「PC操作の基礎」
「ハードウェアとソフトウェア」
「コンピューターの5大装置」
「デジタルとアナログ」
「プログラムとは」
Unit 2
準備 さあ、はじめよう!
「Processingとは」
「起動しよう」
「使いやすくしよう」
プログラミング基礎
変数を学ぼう!
「変数とは」
「変数には型がある」
「変数に名前をつけよう」
Unit 1 and 2 講義動画
学習指導案
学習指導案
■単元名
初級Aコース Unit2-12 プログラミング基礎
■単元の学習目標
プログラミングの基礎的事項として以下を学習する。
変数
座標
演算子
関数
構造化プログラミング
デバッグ
■テーマ選定の理由
最初にプログラミングの基本的な考え方を整理して習得することが必要である。英語を学ぶときに基本構文や文法を学ぶのと同じである。ここで学んだことはプログラミング一般に言えることであり、Processing以外のプログラミング言語を学ぶときにも役立つものである。
■単元の学習計画
カリキュラム
変数を学ぼう! Unit2to3
座標を学ぼう! Unit4
演算子を学ぼう! Unit5
関数を使いこなそう! 関数とは 組み込み関数を使おう Unit6
関数を使いこなそう! Unit7
構造化プログラミングを学ぼう! 構造化プログラミングとは Unit8
構造化プログラミングを学ぼう! 処理を多重に分岐しよう 処理を2重にループしよう Unit9
復習 Unit10
構造化プログラミングを学ぼう! 関数を活用しよう1 Unit11
構造化プログラミングを学ぼう! 関数を活用しよう2 Unit12
デバッグしてみよう! Unit12
■育成したい思考力
ロジカルシンキング
■評価計画
プログラミングの基礎知識が身に付いている。
簡単な構造化プログラミングができる。
■応用・発展
Processing以外の言語、例えばPythonではどのような文法になっているか調べてみる。
講義
Unit 3
プログラミング基礎
変数を学ぼう!
「変数を使おう」
「配列を使おう」
Unit 4
プログラミング基礎
座標を学ぼう!
「座標とは」
「座標の変換」
Unit 3 and 4 講義動画
Unit 5
プログラミング基礎
演算子を学ぼう!
「算術演算子と代入演算子とは」
「関係演算子とは」
「論理演算子とは」
「ベン図とは」
Unit 6
プログラミング基礎
関数を使いこなそう!
「関数とは」
「組み込み関数を使おう」
Unit 5 and 6 講義動画
Unit 7
プログラミング基礎
関数を使いこなそう!
「自分の関数を作ろう」
Unit 8
プログラミング基礎
構造化プログラミングを学ぼう!
「構造化プログラミングとは」
「順次とは」
「選択とは」
「繰り返しとは」
Unit 7 and 8 講義動画
Unit 9
プログラミング基礎
構造化プログラミングを学ぼう!
「処理を多重に分岐しよう」
「処理を2重にループしよう」
Unit 10
復習
Unit 9 and 10 講義動画
Unit 11
プログラミング基礎
構造化プログラミングを学ぼう!
「関数を活用しよう1」
Unit 12
バグフィックス用のプログラムを以下からダウンロードします。
プログラミング基礎
構造化プログラミングを学ぼう!
「関数を活用しよう2」
プログラミング基礎
デバッグしてみよう!
「デバッグとは」
「便利な機能を使おう」
まとめ
「プログラミング基礎のまとめ」
Unit 11 and 12 講義動画
新・初級A 課題
課題1 進数変換
1-1.
10進数の31を2進数に変換しなさい。下のヒントを見て手計算で行うか、Processingを用いてもよい。余りを求める演算子は%です。
1-2.
また2進数の10111を10進数に変換しなさい。下のヒントを参考にすること。計算にProcessingを用いる場合、2のn乗はpow(2, n)で計算できます。
[ヒント]
10進数の26を2進数に変換する方法を説明します。
ステップ1: 2で割り続ける
最初に、10進数の26を2で割ります。商を次のステップに持ち越し、余りを保持します。
26 ÷ 2 = 13 … 0
ステップ2: 商を2で割り続ける
次に、ステップ1で求めた商である13を2で割ります。
13 ÷ 2 = 6 … 1
ステップ3: 再び商を2で割り続ける
次に、ステップ2で求めた商である6を2で割ります。
6 ÷ 2 = 3 … 0
ステップ4: 再び商を2で割り続ける
次に、ステップ3で求めた商である3を2で割ります。
3 ÷ 2 = 1 … 1
ステップ5: 最後の商を計算する
最後に、ステップ4で求めた商である1を2で割ります。
1 ÷ 2 = 0 … 1
ステップ6: 余りを逆順に並べる
ステップ1からステップ5までの計算結果の余りを逆順に並べると、2進数の表現が得られます。
26の2進数表現: 11010
以上が、10進数の26を2進数に変換する方法です。
[ヒント]
次に2進数の11010を10進数に変換する方法を説明します。
ステップ1: 2進数の桁の重みを計算する
2進数では、右端の桁から順に2のべき乗の重みを持ちます。右端の桁から順に、2^0, 2^1, 2^2, 2^3, 2^4 のように増えていきます。2^4は2の4乗を意味します。
桁の位置: 4 3 2 1 0
桁の重み: 16 8 4 2 1
ステップ2: 桁の重みと2進数の対応する桁を掛け合わせる
各桁の重みと2進数の対応する桁の値を掛け合わせ、合計を計算します。
1 * 16 = 16
1 * 8 = 8
0 * 4 = 0
1 * 2 = 2
0 * 1 = 0
ステップ3: 合計を計算する
ステップ2で計算した値を合計します。
16 + 8 + 0 + 2 + 0 = 26
以上が、2進数の11010を10進数に変換する方法です。結果として、2進数の11010は10進数の26になります。
課題2 負の数の表現
コンピュータでは計算に2進数を用いていますが、負の数を表現する場合、補数と呼ばれる数を利用します。
例えば4ビット(2進数4桁)の世界で考えます。
2進数0101に補数1011を足すと10000になります。
ところが4ビットの世界で考えているので最初の1は無視します。すなわち0000となります。
足して0になるということは補数1011は負の数-0101を表していると言えます。
このようにある自然数に対して足すと1桁増える最も小さな数を補数といいます。
2進数の補数は次のように求めることができます。
各桁の0と1を反転する。そして1を足す。
例えば0101を反転すると1010
1を足すと
1011となりこれが補数です。
それでは
1001の負の数-1001を2進数4桁で求めなさい。1001の補数を求めるということです。
課題3 XOR
排他的論理和XORを計算するProcessingのプログラムを作成しなさい。
[ヒント]
boolean演算子を組み合わせます。
XORは片方だけがTrueのときTrue、両方同じ値のときFalseになる演算子です。
boolean a, b, xor;
void setup() {
a = true;
b = true;
xor = ;
println(xor);
}
課題4 日付
日付(today=20270427)が与えられたときに年(year=2027)、月(month=4)、日(day=27)を求めて表示するプログラムを作成しなさい。
[ヒント]
int today = 20270427を整数10000で割ると小数点以下は切り捨てられて2027となります。
課題5 FizzBuzz問題
有名なFizzBuzz問題です。以下のルールに従いforループとif文を使ってProcessingのプログラムを作成すること。
1から100まで順に数を数え上げていき、3の倍数なら「Fizz」、5の倍数なら「Buzz」、両方の倍数(15の倍数)なら「Fizz Buzz」、そのいずれでもなければその数をprintlnで表示しなさい。