PowerPoint プレゼンテーション

プログラミングの原理
データ構造とプログラミング
(第4回)
情報教育のブーターとしてのプ
ログラミング
情報教育において「プログラミング」の学習は、
「ブーターの読み込み」の過程に相当する
「ブーター」とは、コンピュータが起動(ブート)する際に
一番最初に読み込まれる最小限の命令群
ブーターは、その後に読み込まれる、より複雑なプロ
グラム(ひいてはシステム全体)の基礎となる
ここでは、「応用的な知識を生み出すために必要な最
小限の基盤」を表す比喩
コンピュータの本質
コンピュータの本質はプログラム
コンピュータのあらゆる動作はプログラム
によって規定される
「コンピュータの何たるか」を理解するため
には、「プログラムの何たるか」を学ばなけ
ればならない
プログラムとは
プログラムは「仕事の手順」を書いたもの
プログラムが書けないことを、コンピュータ
は実行できない
人間は手順が書けなくてもいろいろなことを実
行できる
人の顔を見分ける、声を聞き分ける、字を
読む
プログラムの基本構造(1)
プログラムの基本は命令文の連続
1:
2:
3:
fd(100);
rt(90);
fd(100);
.………
……….
……….
命令は上から順に実行される→逐次構造
プログラムの基本構造(2)
同じ命令の繰り返しを
ひとまとめにして記述で
きる →繰り返し
for( i=0; i<4; i++){
fd(100);
rt(90);
}
プログラムの基本構造(3)
あらかじめ設定した条
件に応じて複数の命
令を選択的に実行で
きる →条件分岐
if( i==2 ){
fd(100);
}
else{
fd(50);
}
プログラムの基本構造(4)
逐次、繰り返し、条件分岐は、仕事の手順を記述
する際のもっとも基本となる構造
これら三つをまとめて「(狭い意味の)制御構造」
と呼ぶ
プログラムの基本構造(5)
逐次、繰り返し、条件分岐は「入り口1つ、出口1
つ」の構造を持つ点で共通している
一つの構造の中に別の構造を埋め込んで(=入
れ子構造)、複雑な手順を実現できる
プログラムのコメント(1)
実際にプログラムを書く場合、命令文(=コ
ンピュータに対する指示)だけを書けば済
むわけではない
命令文に加えて、コメント(=人間に対する
注釈)を書くようにする
コメントはコンピュータの動作にとっては不
要だが、人間にとっては重要な意味を持つ
プログラムのコメント(2)
コメントには目的を書く
×
double x; // xは正の数とする
double y;
○
double x; // xは正の数とする
double y;
// xの小数部は0.5以上か?
// xを四捨五入する(xの小数部は?)
if((x - Math.floor(x)) < 0.5){
if((x - Math.floor(x)) < 0.5){
y = Math.floor(x); // xの整数部を
y = Math.floor(x); // (0.5未満)xの
// yとする
// 整数部をyとする
}else if((x - Math.floor(x)) >= 0.5){
}else if((x - Math.floor(x)) >= 0.5){
y = Math.floor(x) + 1; // xの整数部+1を y = Math.floor(x) + 1; // (0.5以上)xの
// yとする
// 整数部+1をyとする
}
}
プログラムのコメント(3)
/**
* 家を描くプログラム
* 作成日:00.5.3 (1bcBコース教材より)
*/
import Turtle;
class House01 extends Turtle{
/**
* 家を描く
*/
void start(){
見出しコメント
ブロックコメント
// 屋根を描く
rt(30); // 前処理(タートルの角度を調整する)
int i;
for(i=1; i<=3; i++){
fd(100); rt(120);
// 三角形の一辺を描く
}
rt(60); // 後処理(タートルの角度を調整する)
}
}
// 本体を描く
for(i=1; i<=4; i++){
fd(100); rt(90);
}
// 四角形の一辺を描く
行コメント
書法を徹底したプログラム
日本語プログラミング
日本語をベースとしたプログラミング言語
が実現されることによって、従来コメントと
して記述していた内容がそのままプログラ
ムの命令文となる
「言霊」によるプログラム
メインとは{
大きさが100の家を描く。
}
大きさが「A(整数型)」の家を描くとは{
長さがAの三角形を描く。
長さがAの四角形を描く。
}
長さが「A(整数型)」の三角形を描くとは{
30度右に曲がる。
{A歩進む。120度右に曲がる。}を3回繰り返す。
30度左に曲がる。
}
長さが「A(整数型)」の四角形を描くとは{
{90度右に曲がる。A歩進む。}を4回繰り返す。
}
コメントがプログラムになる
言霊はその表現力により、
Javaなどで記述していたコメントの
大部分が必要なくなる。
文法表現が理解しやすい
Javaによる以下の表現がどういう意味か、
わかるでしょうか?
if ( a%3 == 5 && b != 10 ){ ・・・ }
既存のプログラム言語は、文法が難しいと
いう問題がある
文法表現が理解しやすい
日本語プログラム言語「言霊」では、以下
のような記述になる
if ( a%3 == 5 && b != 10 ){ ・・・ }
もし aを3で割った余りが5と等しい かつ
bが10と等しくない ならば{
・・・
}
※空白を入れなくても解釈できます。
文法表現が理解しやすい
既存のプログラム言語は文法が難しいと
言う問題がある
その為、やるべき事が分かっているのに、
その処理の記述ができないという人が非
常に多い。
文法表現が理解しやすい
例えば、以下の問題。
タートルグラフィックを使って以下の画像を描いて下さい。
ただし、for文とif文を使って下さい。
ヒント:繰り返し回数が奇数と偶数で場合分けをする
文法表現が理解しやすい
議論すると、この?部分が分からず困る人がたく
さんいる。
public static void main( String args[] ){
for( int i=0 ; i<4 ; i++ ){
if( ?????? ){
drawSikaku( 50 );
}else{
drawSankaku( 50 );
}
move( 60 );
}
}
文法表現が理解しやすい
メインとは{
繰り返し回数(整数型)を生成する。
繰り返し回数に0を代入する。
{
繰り返し回数を2で割った余りが0と等しいならば{
長さが50の4角形を描く。
}そうでなければ{
長さが50の3角形を描く。
}
右に60移動する。
繰り返し回数を1増やす。
}を4回繰り返す。
}
日本語プログラミング言語「言
霊」
これにより、
Java言語の文法に悩むのではなく、
アルゴリズムを考え、作り出し、記述する
事に集中できる
プログラムを学ぶもう一つの意味
何故、プログラムを学ぶか?
コンピュータの本質を理解するため
論理的思考・表現能力を得るため
論理的思考能力とは?
これを養う為の訓練なのです。
このような能力は、社会のあらゆる所で
必要になってきます
・
・
・
漠然としたアイデアを具体的な「目的」に
置き換える能力
「目的」を実現する為に必要なプロセスを、
正確に順序だてて組み立てる能力
組み立てたプロセスを正確かつ
簡潔に記述する能力
なぜプログラムを学ぶのか
タートルで以下の絵が書けると言う事は
絵を書くための論理的なプロセスを
分析・創造・表現
する事ができると言う事なのです
リテラシーとは何か
ことばの使用
文字の使用
人間が解釈する
学校教育が始まる
プログラム(=ことばによる仕組)の使用
コンピュータが解釈する
学校教育が変わる