質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.93%

「ロジックが組めること」「ロジックの構成要素の数」とは何を指しますか

受付中

回答 5

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,984

gigapure

score 6

プログラミング初心者です。
教えてください。

シェルスクリプトをテーマに調べています。

シェルスクリプトが書ける基準として、
他の人から
「ロジックが組めること」
という条件が提示されました。

ロジックとは何か、調べると色々な解釈があり、
わかりにくいです。

海外の英語辞書によると
http://www.ldoceonline.com/dictionary/logic
2 a set of choices that a computer uses to solve a problem or perform a task
(問題を解決したり、タスク=仕事を実行するためにコンピュータで使われる一連の選択)

https://en.oxforddictionaries.com/definition/logic
2 A system or set of principles underlying the arrangements of elements in a computer or electronic device so as to perform a specified task.
(特定のタスク=仕事を実行するためにコンピュータや電子回路で使われる 要素の集合体の背後にある システムや原則のまとまり)

とあります。

◆要は、「ロジックが組める」とは、
目的を決めた後に、解決方法を選択し、1から10まで記載しないと理解できない(ある意味、不器用な)コンピュータに読み込ませるための、処理の流れを定めること
と考えます。

そういう感じの理解でよいのでしょうか?
※もちろんスキルによって、組めるロジックの質に違いがあることは認識しています。

◆プログラミングロジックの構成要素の数について

たとえば、次をみると、
プログラミングロジックの構成要素は7つあるようです。

「ロジックは、演算(計算、論理式)、変数(単独、配列、構造)、代入、判定、分岐、ジャンプ、関数|メソッドの7つの要素で思考します。」

出典)
プログラミングロジック入門
http://moeprog.web.fc2.com/M_NET_SC/Manual/PayPal100/PayText100_02_Sample.pdf

この数は、教える人によって違う数で提示されるものですか?

たとえば、処理、分岐、反復 という風にざっくり教えたりするものですか?

数は7つで固定値か、あるいは人によって違うものか知りたいです。
7つでない場合の具体例も知りたいです。

ご存じの方いらっしゃいましたら、よろしくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 5

+5

個人的には、もっと気軽に書くもんだと思ってます。

シェルスクリプトが書ける基準として、

自分がやりたいことが書ければそれで充分じゃないかなあ。
しいてロジックといったら分岐と繰り返しくらい?
ただ、シェルによって出来ることはだいぶ違ってきますね。

質問の印象として、なんとなく目的を見失ってる気がします。
シェルスクリプトっていいたいだけちゃうか?
みたいな。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/25 17:07

    ありがとうございます。
    実は同じことを思っておりました。

    誰とは言わない人が、勝手に
    シェルスクリプトを書ける基準として、
    「ロジックを組めること」と定義したものですから、
    そんなすごいもん、ちゃうで・・・
    と思ったまでです。

    自分がやりたいことが書ければそれで充分、は自己完結的で、
    今回は勉強会という
    皆で学ぶ場、共有の場としての質問になります。

    第三者に説明できるレベルを想定したとき、
    自分でできればOK、は力不足になってしまいますので。

    ありがとうございます。

    キャンセル

+1

こんにちは。

◆要は、「ロジックが組める」とは、 

その理解で合ってますよ。

◆プログラミングロジックの構成要素の数について

数はあまり気にしないで良いと思います。人や文脈によって分類は異なりますから。
関数呼び出しや代入も演算の一種という考え方もありますし、ループを分岐やジャンプと別と考える場合もあります。他に「値」や「定数」を分ける場合もあります。

その7種類もたくさんある正解の1つと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/25 17:01

    ありがとうございます。
    日本のプログラミングなんて輸入品ですし、
    本家アメリカでも、色々な分析がされていますからね。
    数すらざっくりなのかぁ・・・

    キャンセル

+1

目的を達成できるコードが書けていれば、それがロジックになると思います。
但し、私の感覚では、「○○処理のためには、○と□と△を行う」のように、きちんとコードを理解している必要があると思っています。
「何かわからないけど、このコードを入れたら動いた」みたいなのは、きちんとロジックが組めているとは言えないと思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/25 16:59

    写経と、書き物は違いますよね。今回は、「ロジックを組む」ということなので、コードが書けていれば、ではなく、課題、テーマに対し、目的を適切に達成できる品質まで記載できる必要があります。

    キャンセル

+1

プログラムというものがそもそもやることを並べたものであって(例えば卒業式などの式次第も「プログラム」と呼ぶでしょう?)、その「やること」を細かく分解して順序立てて並べる行為がロジックを組む、ということになるかと思います。
卒業式を例にとれば、卒業式のプログラムには

  • 卒業生入場
  • 校長の挨拶
  • 来賓祝辞
  • 在校生よりの送辞
  • 卒業生からの答辞
  • 卒業証書授与
  • 校歌斉唱
  • 卒業生退場

あたりがありますが、それぞれについて、例えば卒業生入場であれば

  • どの入口を使うか
  • 入場行進で横に何列並ばせるか
  • 入場順はどうするか(クラス編成順・出席番号順)
  • 卒業生の座る席はどうするか
  • 入場にかかる時間は問題ないか
  • 配慮の必要な卒業生(例えば車いすの生徒がいれば、その生徒は別枠で入場させたり、席も必要無いが余裕のある場所を確保しなければならない)はどうするか

といった細かい「段取り」を立てて対策することになります。この段取りこそがロジックだと思います。


ロジックの構成要素については、実のところ CPU が行えることそのものが、実際には少ないのです。

  • データをレジスタに読み取り、または書き込むこと(対レジスタ・対メモリ・対I/O)
  • 演算すること(レジスタ-レジスタ間、レジスタ-メモリ間、レジスタ-即値間)
  • 比較すること
  • 分岐すること(無条件分岐・条件分岐)

基本的にはこの程度です。そしてこれが、結局のところロジックの構成要素の基礎でもあります。
※関数/メソッドは分岐の特殊形態(戻り先が分かる分岐)ですね

難解プログラミング言語として知られる Brainf*ck は、わずか8命令しかありません。それでも「理論上は、いかなるプログラムも記述できる」言語です。
※なのでいろいろネタ派生ができて……「ジョジョの奇妙な冒険」のセリフで組めたり、「けものフレンズ」風に組めたりとあります。なにせ8種類の単語を用意できればいいのですから(w

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/25 16:56

    ロジック=段取りを組めること、で理解しました。非常にいい例えですね。
    その最小言語、名前以外は面白いですね。ためになります。

    キャンセル

+1

他の方の回答のとおりで、蛇足かもしれませんが・・・。

「ロジック」とは(コンピュータにやらせたい)問題を解決する詳細手順
のようなものでしょうか?
その分類などは、出来上がったロジックを後から分析するには意味があるかも知れませんが、実際にシステムを作っている時に分類を意識することは、まずありません。

ロジックと似た用語で「アルゴリズム」という言葉があります。
ロジックとの違いはうまく説明できませんが、ロジックというと、よりコンピュータやプログラミング言語の特徴に制限されているように思います。

有名な本に
アルゴリズム+データ構造=プログラム
というものがあります。
勉強するのは「アルゴリズム」、「ロジック」は身につけるもの
といった感じでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/25 16:50

    ありがとうございます。
    課題やテーマがあって、煮るとか焼くとか、塩を振るといった一つ一つの作業をロジック、包丁や調味料や粕漬などの食材の調理方法をアルゴリズム、という理解に落ち着きました。

    ロジックとアルゴリズムの意味の違いが人によってもやっとしているあたり、ある程度ファジーでも許されているものですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.93%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る