【DIVE INTO CODE】第3回授業レポート(プログラミンスクールって実際どうなの?)

投稿日:

【Railsでアプリ開発中】プログラミング初心者の勉強ブログ #45

プログラミングスクールDIC第3回授業レポート。「プログラミングスクールの授業」っていうものがどんな内容かまとめてます。二分探索法のフローチャートやFizzBuzzなど。

はじめに

この記事は、railsフレームワークでオリジナルwebアプリ「免許学科試験学習サイト」作成中の僕が、プログラミングをしている中で気づいたことや学んだことを書いております。プログラミング初心者なので知識は少ないですが、現在通っているプログラミングスクール「DIVE INTO CODE」で学んでいることや、ネットで見つけた様々な記事を参考に記事を作成しております。

 

目次

 

前回までの授業内容

第2回授業レポート

前回の授業レポート。事前課題で提出したJavaScriptでコーディングした「成績判定プログラム」のフローチャート作成が抗議内容のメインです。

課題で作成した成績判定アルゴリズムを噛み砕き、個人ワークでフローチャートを作成した後、グループワークで共有・発表といった流れです。

 

第1回授業レポート

初回授業レポート。こちらも事前課題に沿ってHTML/CSSのアウトプット。

プログラミングスクール「DIVE INTO CODE」の授業の雰囲気なども書いてます。

 

3回目授業はいよいよRuby入門

今回はプログラムの内側、サーバーサイドのRubyを取り扱った授業でした。

参加人数は15人ほど。初回と2回目に比べだんだんと少なくなってきている印象。

3つのテーブルの島に分かれ、メンターさん司会のもとグループワークで進行していくのがDICの授業風景です。

では、内容について書いて行きます。

 

手続き型言語→オブジェクト指向型言語

機械・コンピュータの進化とともに、プログラミング言語は「手続き型言語」から「オブジェクト指向型言語」へと進化する。Rubyはその「オブジェクト指向型言語」の一つであり、開発者は日本人(まつもとゆきひろ さん)である。

今まではプログラムを開発するにあたり、関数を毎回一つ一つ組まなければならなかった「手続き型」プログラミング言語が、コンピュータが発展することでどんどん便利に使いやすく発展していったのが、Rubyの様な「オブジェクト指向型言語」だということ。

ありがたい話だ。甘んじて現代に生きる僕は便利な「オブジェクト指向型言語」を使わせていただく。

いや、ほんとに助かります。

 

プログラミング言語3原則(順序実行、条件分岐、繰り返し)

プログラムは全て、「順序実行」「条件分岐」「繰り返し」の3つの原則から成り立っている。この3原則を組み合わせ、アルゴリズムを考えていく。

if文とかfor文とかwhile文とかの組み合わせでプログラミングってできてるよね、って話。

これは前回の授業で取り扱った「JavaScript」も一緒。「プログラミング」の3原則であるから、当然っちゃ当然。

3原則に基づいたフローチャートは【DIVE INTO CODE】第2回授業レポート「成績判定プログラム」のフローチャート作成の方に書いたので今回は割愛。

 

データ構造とアルゴリズム

では実際に「プログラミング3原則」から成る、データの構造とアルゴリズム(解法)を考えて行きますよ、って流れです。

今回は「線型探索」と「二分探索」のアルゴリズムを用いての演習でした。

どちらも配列やハッシュなど、複数のデータを持つデータの集合体から、指定したデータを検索するためのアルゴリズムになります。

 

線型探索とは

まあ調べればすぐ出てきますが一応。

線形探索(せんけいたんさく、英: linear search, sequential search)は、検索のアルゴリズムの一つ。リストや配列に入ったデータに対する検索を行うにあたって、 先頭から順に比較を行い、それが見つかれば終了する。

 

二分探索とは

こちらは線形探索と違い、データの集合体がソート(整列)されていることが条件となります。

二分探索(にぶんたんさく、英: binary search、BS)やバイナリサーチとは、ソート済み配列に対する探索アルゴリズムの一つ。

 

二分探索フローチャートの作成

二分探索のコードは以下になります。

test.rb

今回は1〜100まで順に並んだ数字から、42を探し出すアルゴリズムになってます。

ちなみにRubyで動作確認すると、

二分探索結果

 

7回目の検索で42を無事発見してます。

これのフローチャートを授業では考えました。

 

ポイントは、

  1. 「42」の入ってる箱のインデックス番号は「41」であること。
  2. 「floor」は小数点を切り捨てるメソッドであること。

の二つです。

インデックス番号は0から始まることを、しっかり意識しているかが問われた部分です。

フローチャート考えるのは勉強になります。

 

FizzBuzz関数の定義

今回は授業の最後に「FizzBuzz」の関数を考えてみよう。というのがありました。

過去2回とも事前課題からのみで授業が行われていたので、新しいことをインプットできる内容を用意していただいたのはありがたいです。

「DIVE INTO CODE」では、「授業感想アンケート」がしばしば実施されるのですが、前回のアンケートで「事前課題以外のインプットがあると嬉しい」みたいなことを調子乗って書いたんですけど、もしかしたらそのアンケート見てくれたのかな、とか思いました。

だとしたらDICありがとうございます。

 

FizzBuzzとは

「FizzBuzzってなんぞ」って話ですよね、まず。

 

以下の要件からなる関数です。

  1. 3の倍数の場合は「Fizz」を出力する
  2. 5の倍数の場合は「Buzz」を出力する
  3. 15の倍数の場合は「FizzBuzz」を出力する
  4. 上記以外の場合は数字をそのまま出力する

 

なんかエンジニアで就職する場合は、

 

「FizzBuzz」関数定義してみて。

 

みたいな抜き打ちテスト的なものがあるみたいです。

 

関数の定義

コードから載っけます。

 

なんかわからないけど僕は「15の倍数」を「3の倍数」かつ「5の倍数」で定義しました。普通に「15の倍数」で定義して動きます。

FizzBuzz

 

まとめ

第3回授業レポートはこんな感じです。「プログラミングスクールの授業」っていうものがどうゆう内容か伝わったら嬉しいです。

 

ブログラミングスクールに通うメリットの一つに、

「プログラミング学習を正しい方向に導いてくれる」

という点があります。

プログラミングの様な、素人目には一見して何やってるか意味わからん分野は、学習するにあたりカリキュラムを立て辛いという面が少なからずあると思います。

 

「どうゆうふうに勉強したらなるべく最短でアプリが開発できる様になるの?」

 

っていう素人の問いに対し、ノウハウを持ったプログラミングスクールは適切な対応をしてくれます。

 

努力は大事ですが、「努力の舵取り」は更に大事です。

方向間違ってたら、折角の努力がもったいないです。

 

YouTubeで有名な、某社長(動画が過激すぎてちょっと前アカウントをBANされた方の社長です。)も言ってました。

DJ社長

 

僕に会社を辞める勇気をくれた人です。まじで。こんなへんな奴の言うことに心動かされたんですよ。

世間ではゾゾタウンの社長が月に行くとかなんとかで話題ですが、僕はこっちの社長の方がインパクト強かったです。

最近は新しいアカウントでいろんなYouTuberとなんかコラボしてます。

知らない人もし居たらみてみてください。「DJ社長」とかで出てくると思います。

 

世の中いろんな社長がいますね。

 

以上ありがとうございました。

-DIVE INTO CODE
-, ,

Copyright© s u p ? , 2019 All Rights Reserved.