SlideShare a Scribd company logo
1 of 32
Download to read offline
プログラミング講座
#1 基本的なプログラム
@ZOI_dayo
この章での目標
プログラムの基本的な文法を覚えて、
簡単なコードを「読める」ようになること
!
例えばこんなコード→
読んでみる
よくわからん(当たり前)
()[]{}とか色々あるし、なんか色ついてる
1行目の数字は素数...?
文法その1 「変数」
プログラムでは「変数」というものが使える
数学で出てくる変数よりは、「タイトル付き付箋」というイメージの方が近い
?
名前をつけた付箋を作って、そこに数字を書き込む
(書き換えもできる)
文法その1 「変数」
使い方は言語によって変わるけど
...
例えばJavaScriptでは、
let a = 1;
で「aという名前の変数を作り、
1と書き込む」の意味
文法その1 「変数」
値の変更もできる
let a = 1;
a = 3;
だと、「変数a(値1)を作る」→「aの中身を3にする」の意味(aに3を代入する、と呼ぶ)
数学の=ではなく、右辺を左辺に代入する、という意味
文法その1 「変数」
ちなみに、こんな書き方もできる
let a;
a = 1;
a = 3;
これの省略形、と考えてもいいかも
?
文法その1 「変数」
計算もできる!
四則演算... + - * /
a/bのあまり... a%b
a = a + 2; は a += 2; と省略できる! (他の演算も大体OK)
(数学的にはおかしい式だけど、
a+2をaに代入、という処理なだけ
)
さらに、a = a + 1; は a++; と省略できる! (++、--以外はないかも)
読んでみる
「変数」を覚えたので、3行目が読める!
1と4、なにこれ?
6にもletってあるけど何?
文法その1 「変数」
実は、変数に入れられる(プログラムで扱える)「値」は数字だけじゃない
色々あるけど、とりあえず「文字列」、「配列」、「真偽値
(ブーリアン)」を覚えとく
順にこんな感じ
「” ”」で挟むと文字列で文章、「
[ ]」で挟むと配列で数列(数以外もOK)
trueかfalseで真偽値(それぞれ「はい」「いいえ」を表す
)(どこで使うかは後)
let s = “test_test”;
let a = [123, 456, 789];
let b = true;
読んでみる
「変数」を覚えたので、3行目が読める!
1・4行目はそれぞれ配列と真偽値で
OK
6行目、forとは...?
文法その2 「ループ」
プログラムでは、ループして何回も実行できるような機能がある
例えば... while, forなど (この二つ覚えとけばとりあえず
OK)
文法その2 「ループ」
whileの使い方... while(){}で、()の中に真偽値、{}の中に実行するものを入れる
let a = 0;
while(true) {
a++;
}
このコードではaが永久に増え続ける(終わりはない)
※ whileの{}の中を2文字右にずらしてるのは見やすいためです
文法その2 「ループ」
()の中には条件を入れても
OK
条件... a<b、a<=b、a==b など...
(「aとbが等しい」は==、つまり=を2つ繋げて表す) (でないと代入になる)
let a = 0;
while(a < 5) {
a++;
}
「aが5未満の間、aを1増やし続ける」の意味
終了時にはaは5
(a==4 → ループ突入→ a==5 → ループ突入しない→ 終了!)
文法その2 「ループ」
forの使い方... 色々応用できるけど、「10回繰り返す」場合
let a=0;
for(let i=0; i<10; i++) {
a += i;
}
forの()の中が;で3つに分かれているのに注目
1つ目 … 最初の1回実行
2つ目 … ループ突入の条件(whileの()みたいな感じ)
3つ目 … ループごとに毎回実行する処理
文法その2 「ループ」
let a=0;
for(let i=0; i<10; i++) {
a += i;
}
つまり、
「a==0, i==0 → i<10なのでループ突入→ aにi(==0)を足す→ a==1 → ループ1終
→a==1, i==1 → i<10なのでループ突入→ i++ (i==1に) → aにi(==1)を足す→ …」
となり、aは最後には0+1+2+...+9=45になる
文法その2 「ループ」
for(let i=0; i<10; i++) {
}
つまり、上の書き方で、
「iを0~9まで動かしながら{}の処理を1回づつ実行する」という意味
{}の中でiを使わないなら、「{}の中身が10回実行される」と考えてもいい
読んでみる
となると、6~10行目はループっぽい
回数を入れるところに「primes.length」
これは「primesの長さ(== 8)」を表す
7~9行目、ifとは?
文法その3 「条件分岐」
if文を使うことで、特定の場合だけ実行するようにできる
if(条件) {条件を満たした時のみ実行
}
または
if(条件) {条件を満たした時のみ実行
} else {条件を満たしていない時のみ実行
}
3つ以上の時は
if(条件1) {条件1の時} else if(条件2) {条件1でない、かつ条件2の時} else {条件2でない時}
読んでみる
primes[i]はprimesの(i+1)番目
(注意! 1つめは[0]、2つめは[1]、とずれる)
つまり、
「primesの要素数、以下をループ:
primesの(i-1)番目がaと同じなら:
a_isprimeにtrueを代入」
という意味
読んでみる
もう少し簡単に書くと、
「primesを一つづつ見て、
aと同じものがあればa_isprimeをtrueにする」
つまり、aがprimesに含まれていれば
a_isprimeがtrueになり、
含まれていなければfalseになる
読んでみる
あとは12〜13行目だけ!
console.log()って?
文法その4 「関数」
console.log(“aaa”)のように、name(値)となっているものを「関数」と呼ぶ
数学のf(x)みたいな感じで、xの部分を少しずつ変えながら実行できる
自分で作る場合こんな感じ(f(x) = x^2 - 2x +1 )
function f(x) {
return x*x - 2*x + 1;
}
returnで結果を返す
文法その4 「関数」
let a = f(10); とすればaは81、
let b = f(5); とすればbは16になる
f(x)の部分が計算結果に置き換わる、と考えると、
let c = f( f(3) + f(5) ); → f( 4 + 16 ) → f(20) → 361 になる
1ステップずつ考えると楽!
文法その4 「関数」
(x)の部分(引数と呼ぶ) を増やすこともできるし、関数内で処理をすることもできる
function g(x, y) {
let a = x+y;
return a*a;
}
この時、let a = g(2,5); とするとa==49
文法その4 「関数」
あと、値を返す方ではなく「処理をする」方に焦点を当てたものもある
例えばconsole.log() (これはJavaScriptに元々あるので準備なしに使えます
)
console.log(“aaa”) と文字列を渡せば、コンソールに「
aaa」と表示してくれる!
let a = console.log(”aaa”) みたいにはしない
つまり、「計算結果」は捨ててる
文法その4 「関数」
これを使えば、何回も出てくる処理に名前をつけて使う、みたいなこともできる
例えばxについての情報を喋らせたり
...
function print(x) {
console.log(x + “
についての情報を表示します
”);
console.log(“x * x == ” + (x*x));
if(x>0) console.log(“x>0
です”);
else if(x==0) console.log(“x==0
です”);
else console.log(“x<0
です”);
}
文法その4 「関数」
ちなみに、ifの後ろの波括弧は後ろが
1処理だけの時は省略できる
これはOK↓
if(a < 0) console.log(“a<0
です”);
if(a < 0) a = -a;
これはNG↓ (NGではないけど思うようには動かない
)
if(a<0)console.log(“a<0
なのでせいにしておきます
”); a = -a;
読んでみる
ここまでやれば読めるようになったはず
!
※ 何してるコードか考えてみて
読んでみる
これは素数判定コード...のつもりです
もちろん23は素数でないと言うし無茶苦茶
…ってわけで、もし暇だったら
「どんな整数でも素数か判定できるコード」
を作ってみてください!
おまけ
途中で「配列の長さを取得する」ってとこで出てきた「
primes.length」、
関数のところで出てきた「console.log()」の話です
どちらも「.」がついていますが、これは左の変数
(primesやconsole)に付属してる値や関数を持ってくる
という意味です
例えばprimes.lengthは、primesと言う変数(中身は配列)の中の「length」と言う変数を見に行ってる
わけです
console.log()は、consoleと言う変数(JavaScriptが勝手に作ってます)の中のlog()と言う関数を実行し
てるわけです
変数に関連する処理(配列なら長さが知りたい、要素を増やしたいなど
)が(変数).(それっぽい名前)と
なっていることが多いので、「
.」が出てきたら、とりあえず右側の変数名
or関数名を見て「あーこんな処
理かな?」と見当をつけてみてください(lengthなら長さ、など)
終わり

More Related Content

More from ZOIdayo

プログラミング講座 #6 競プロのテクニック(初級)
プログラミング講座 #6 競プロのテクニック(初級)プログラミング講座 #6 競プロのテクニック(初級)
プログラミング講座 #6 競プロのテクニック(初級)ZOIdayo
 
プログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみようプログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみようZOIdayo
 
プログラミング講座 #4 ターミナルを使いこなす
プログラミング講座 #4 ターミナルを使いこなすプログラミング講座 #4 ターミナルを使いこなす
プログラミング講座 #4 ターミナルを使いこなすZOIdayo
 
プログラミング講座 #3 コードを書く
プログラミング講座 #3 コードを書くプログラミング講座 #3 コードを書く
プログラミング講座 #3 コードを書くZOIdayo
 
プログラミング講座 #2 複雑なデータの扱い
プログラミング講座 #2 複雑なデータの扱いプログラミング講座 #2 複雑なデータの扱い
プログラミング講座 #2 複雑なデータの扱いZOIdayo
 
Spigotで看板のクリックを取得するには
Spigotで看板のクリックを取得するにはSpigotで看板のクリックを取得するには
Spigotで看板のクリックを取得するにはZOIdayo
 

More from ZOIdayo (6)

プログラミング講座 #6 競プロのテクニック(初級)
プログラミング講座 #6 競プロのテクニック(初級)プログラミング講座 #6 競プロのテクニック(初級)
プログラミング講座 #6 競プロのテクニック(初級)
 
プログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみようプログラミング講座 #5 競プロをやってみよう
プログラミング講座 #5 競プロをやってみよう
 
プログラミング講座 #4 ターミナルを使いこなす
プログラミング講座 #4 ターミナルを使いこなすプログラミング講座 #4 ターミナルを使いこなす
プログラミング講座 #4 ターミナルを使いこなす
 
プログラミング講座 #3 コードを書く
プログラミング講座 #3 コードを書くプログラミング講座 #3 コードを書く
プログラミング講座 #3 コードを書く
 
プログラミング講座 #2 複雑なデータの扱い
プログラミング講座 #2 複雑なデータの扱いプログラミング講座 #2 複雑なデータの扱い
プログラミング講座 #2 複雑なデータの扱い
 
Spigotで看板のクリックを取得するには
Spigotで看板のクリックを取得するにはSpigotで看板のクリックを取得するには
Spigotで看板のクリックを取得するには
 

Recently uploaded

東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2Tokyo Institute of Technology
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料Takayuki Itoh
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptyuitoakatsukijp
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024koheioishi1
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationYukiTerazawa
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ssusere0a682
 

Recently uploaded (7)

東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
東京工業大学 環境・社会理工学院 建築学系 大学院入学入試・進学説明会2024_v2
 
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
生成AIの回答内容の修正を課題としたレポートについて:お茶の水女子大学「授業・研究における生成系AIの活用事例」での講演資料
 
UniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScriptUniProject Workshop Make a Discord Bot with JavaScript
UniProject Workshop Make a Discord Bot with JavaScript
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024The_Five_Books_Overview_Presentation_2024
The_Five_Books_Overview_Presentation_2024
 
TokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentationTokyoTechGraduateExaminationPresentation
TokyoTechGraduateExaminationPresentation
 
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習106 -価格の交渉ゲーム-#ゲーム理論 #gametheory #数学
 

プログラミング講座 #1 基本的なプログラム