• ベストアンサー

プログラミングの勉強法

現在、職業訓練校でiPhoneアプリの作成を勉強しているのですが、 中々着いていけません。コードの全体的な仕組みは何となく 理解できるのですが、クラス・インスタンス・オブジェクト・インスタンス変数… など、それらがコードの中で入り交じってくると細かい成り立ちが 途端に解らなくなります。これらの要素をよく理解できる勉強法 などはありませんでしょうか?非常に困っております。 以上、どなたか何卒宜しくお願い致します。

noname#213637
noname#213637

質問者が選んだベストアンサー

  • ベストアンサー
noname#217196
noname#217196
回答No.2

日経BP 社から『オブジェクト指向でなぜつくるのか』(平澤章著)という本が出ているから、図書館で借りるなりしてよんでおくといいね。

noname#213637
質問者

お礼

ご回答ありがとうございます! 早速近所の図書館で借りてきます!

その他の回答 (3)

noname#223464
noname#223464
回答No.4

iPhoneの開発はやったことないので、ちょっと検討違いかもしれませんが。 基本的に何かを作る場合には、 (1)アプリの目的を考えます。 (2)目的を達成するために、どのような仕組みをを作らなければいけないのかを考えます。 (3)その仕組みをコードでどうやって書くのかを考えます。 っと、こんな流れで開発は進んでいくと思いますが、3→2→1と逆になっていませんか? (もうずっと過去の話ですが)新人さんによくあったことなのですが、どうしてもコード自体に注目してしまい、コード自体は何をしているか理解できるものの、肝心のその部分のプロシージャが何をする目的なのかという理解が浅く、結局わからないところがわからない状態に陥ってしまい、パニックになっているいるのを良く目にしました。質問者さんの今の状況もそんな感じなのかな~と。 一旦コードから離れて、(1)、(2)の再認識をした方が良いのではと思いました。

noname#213637
質問者

お礼

ご回答ありがとうございました!

  • don_go
  • ベストアンサー率31% (336/1059)
回答No.3

プログラムのコードを「何となく」ではなく 「しっかり」理解する為に、フローチャート の一種であるPAD図に書き換える練習をして みて下さい。 構造化プログラミングの例 PAD http://www.geocities.jp/dyamagu2/perl/perl3-4.html うろ覚えで進むより、最初にしっかりと理解 した方が、上達のスピードは速くなります。 PAD について http://www2.ee.knct.ac.jp/el/E2/L210/algorism/pad1.html 日常的な行動をPAD図にしてみるのも、アルゴ リズムを勉強する方法の一つです。

noname#213637
質問者

お礼

ご回答ありがとうございました!

  • harawo
  • ベストアンサー率58% (3742/6450)
回答No.1

教科書をなんども読み直す。 クラスリファレンスを、めんどうがらずに、まめに調べる。 英語の情報だからといって、避けて通らない。 サンプルコードを、コピーペーストではなく、手打ちで打ち込んでいく、いわゆる「写経」も、学習段階のあるステップでは有効。 プログラミングに限らず、学習はジグソーパズルに似ています。全体像(完成像)がイメージできない段階が長すぎると、意欲を失いかけます。そこでふんばれるか、アイデアを総動員して、五里霧中のステップを短くする努力ができるかどうか。たとえば、ピースを同じ色どうしで分けてみます。そうすると、青い色のピースが相当数あることに気づきます。これらのピースは空ではないのか?その仮定が正しければ、青色のピースは上部に位置することになります。もちろんその仮定は常に正しいとは限らない。窓から見えている青空ならば、上部に位置するわけではありません。しかし、失敗を恐れず、試行錯誤していく過程で、だんだん全体像が見えてくるのです。 もうひとつアドバイスがあるとしたら、雑学王をめざすことです。 人間の脳の記憶は、芋づる式になっています。ある記憶は別の記憶の連想としてつながっており、連想の鎖が複雑に入り組んでいる状態で、記憶されています。ある記憶を呼び出すためには、別の記憶から連想をたどっていく作業になります。 であれば、効率のいい記憶術とは、いかに連想の鎖をたくさんこしらえるかにかかってきます。本はたくさん読むこと。それも関心があるジャンル、仕事に必要なジャンルに限定せず、幅広く、浅く読むこと。覚えようとせず、ただ読み流すだけでかまいません。すぐに忘れてしまっても、無意識のレベルでは脳内に記憶され、なんらかの連想の鎖として残ります。 プログラミング限定でいえば、リファレンスは、当面の作業と関係ないリファレンスも読む。あるクラスリファレンスを開いたら、ざくっと全体を斜め読みしてから、調べたい項目にあたる。

noname#213637
質問者

お礼

はい、写経はある程度やっております。 学校で、簡単なアプリを何も見ずに作るテストがありますので、 あらかじめ講師に見てもらって作ったアプリを10回ほど手打ちして 暗記してテストに臨んでおります。もちろん、構造も少しは把握 した上でです。ですがやはり、少しだけ、です。これからは、 クラスリファレンスをもっと読んでみます。 雑学は大好きです。それもあってか、読書が速いとか得意とかいう訳では ありませんが、色んなジャンルの本を気が向いたときに読んでおります。 これからはプログラミング対策も意識してそれを続けていきます。 ご回答ありがとうございました!

関連するQ&A

  • ローカル変数の使いかた

    非常に初歩的なのですがrubyにおいてインスタンス変数、ローカル変数とクラス変数の使い分けがわかりません。 あるクラス内においてクラスから作られたすべてのオブジェクトに適用したい値はクラス変数に、インスタンスごとに違うのならインスタンス変数にするのはわかるのですが、クラス内でローカル変数はなぜ使うのでしょうか?受け取った引数もオブジェクトならインスタンス変数に、クラスならクラス変数に原理的には属すと思うのです。 あるオブジェクトがあるメゾッドを実行した時にそのオブジェクト全体に適用したくない変数をローカル変数にすると考えました。 その場合、なぜ class A a= 1 end のようにメゾッドに属さないクラス内にあるローカル変数があるのでしょうか?

  • プログラミングの入門書について

    ある事情でC#の勉強をすることになり入門書を買ったのですが全体的に抽象的過ぎて(オブジェクトをリス、クラスを遺伝子に例えて説明するなど)とても分かりづらいです。 この際言語は問わないので 変数を定義したときメモリ上では~が起こっていて、参照をするということは~をすることで~ みたいな説明が書かれた本を探しているのですが何か良い本があったら教えて頂きたいです。

  • オブジェクト指向コンパイラのインスタンスの構造について

    インタプリタやコンパイラの中身について興味があり勉強しています。といってもまだ簡単な字句解析や構文解析のレベルです。 読んだ本にはオブジェクト指向言語については書かれていませんでした、そこで一つ疑問に思ったこと点について質問させてください。 簡単な言語の場合、使用する変数が宣言されると、その領域がスタックやヒープ空間に確保されるという風に理解しました。 一方オブジェクト指向言語にて、あるクラスのインスタンスを生成した場合を考えます。インスタンスには変数の他に関数やメソッドといった処理手続きが含まれていますよね。その手続きをコンパイルしたコードは何処に置かれているのでしょうか? 手続きのコードもヒープ空間に確保された各インスタンスの領域にコピー(?)されて実行されるのでしょうか。それとも処理手続きの実体は実行プログラムに含まれていて全インスタンスで共通で利用するようになっているのでしょうか。 初心者の素朴な疑問です、ご回答いただければ幸いです。

  • プログラミング言語を学び直す

    初めまして。宜しくお願いします。 プログラマーの皆様や現役の専門学校生(プログラミング言語専攻)の方にお尋ねします。 私は今年の5ヶ月間、職業訓練校でRubyの基礎を学びました(講座終了済み)。プログラミング言語はまったくの素人です。 ところが、毎日の授業は先生の講座速度が非常に速いうえに講義内容そのものが私にとってたいへん難解でした。このため、1日の授業の半分すら理解できるか否かという状態でした。たとえばクラスやインスタンス変数の授業は全く理解できませんでした。このキーポイントが判らないため、結局、Rubyが理解できないまま講座修了しました。 学校の授業が理解できないので自宅で復習しても理解度がさっぱり上がりませんでした。先生に質問して教えてもらっても、理解度は半分ぐらいでした。入校当時は「頑張るぞ」と張り切っていたのですが、授業が判らぬことからすっかり自信を失ってしまいました。 そこで質問ですが、二年制三年制の専門学校に入校して十分な講義時間を費やしてもう一度Rubyを勉強し直そうか、と迷っています。迷う理由は、高額な学費をかけても、自分に能力があるのだろうか、という不安があるからです。 ご助言をいただければ幸いです。宜しくお願い申し上げます。

    • ベストアンサー
    • Ruby
  • インスタンス変数とローカル変数のスコープの違い

    Ruby言語を独学で勉強している者です。 現在たのしいRuby第3版という著書を参考にして勉強しています。 現在はクラスの継承、クラス文の定義の仕方を学んでいます。 そこで教えて欲しいのですが、 ローカル変数とはメソッドごとに異なる変数として扱われる。 インスタンス変数は同じインスタンスの中であればメソッドの定義を越えて その値を参照したり変更したりできるとあります。 そもそもインスタンスとは、オブジェクトとおほ同意義と捉えてるのですが この認識に間違いはないでしょうか。 ニュアンス的なものは理解したのですが、もう少しこの二つの変数の定義について 理屈を把握したいので、お手すきなお方がいらっしゃいましたら、具体的な例をあげて ご説明くださいませんか・・・。 この本すごく素人にもわかりやすい丁寧な解説で書いてあって、決して説明不足とは 思わないのですが、プログラマーさんの意見なども参考にしたくて投稿してみました。

    • ベストアンサー
    • Ruby
  • インスタンスとオブジェクト

    こんばんは。 変数について教えて下さい。 プログラム自体が初めてなので 「たのしい Ruby 第3版」を読んでいます。 ずっとインスタンスとオブジェクトの違いが曖昧なままです。 その本の「クラスとモジュール」という章にて クラスを定義する構文。 インスタンス変数とローカル変数の違いですが、 以下の説明で一部理解できずにつまずいています。 ―――――――――――― @ で始まる変数は インスタンス変数 といいます。 ローカル変数はメソッドごとに異なる変数として扱われますが、 インスタンス変数は同じインスタンス内であれば、 メソッド定義を超えてその値を参照したり、変更したりできます。 なお、初期化されていないインスタンス変数を参照すると nil が得られます。 インスタンス変数は、インスタンスごとに違う値を持つことができます。 またインスタンス変数は、 インスタンスがある間は値を保持しておいて 何度でも利用することができます。 一方、ローカル変数はメソッド呼び出しごとに新しく割り当てられるため、 メソッドから抜けると値を忘れてしまいます。 ―――――――――――― ここで分からないのは、 ・ローカル変数が "メソッドごと" に異なる変数として扱われる ・インスタンス変数は同じ "インスタンス内" であれば、 メソッド定義を超えてその値を参照したり、変更したりできます の部分です。 Webで検索してますが、 プログラミング経験ありを前提で書かれているような。 他の言語も知らないので分からない、そんなページが多いです。 人に聞くからには 自分でも頑張って理解できるように考えますので、 どうか回答よろしくお願いします。

    • ベストアンサー
    • Ruby
  • インスタンス変数とクラス変数の違い

    1つのクラスオブジェクト内のインスタンス全てで共有できる クラス変数 @@a と、 同じインスタンス内であればメソッドの定義を越えてその値を 参照したり、変更したりできるインスタンス変数 @a のスコープの違いをお手すきでしたらご指導願えませんか? あとクラス変数にはセッターやゲッター等のアクセスメソッドを 設定できるんですか? いろいろ知りたいです。

    • ベストアンサー
    • Ruby
  • メソッドの引数としてのthisの意味

    java初心者です。教えてください。 メソッドの引数としてのthisは何を表しているのですか? いろいろ調べてみてthisには以下の2つの使用法があることがわかりました。 1.インスタンス変数の名前とインスタンスメソッド内のローカル変数名がかぶったときに、メソッド内でインスタンス変数を表すときにthis.変数名とする。 2.あるクラスのコンストラクタ内で、同じクラスの別のコンストラクタを呼ぶときに使う。 しかし、引数としてのthisの意味がわかりません。 具体的には、addMouseListener(this);や、g.drawImage(img,10,10,this);のthisです。 後者の場合はオブジェクトgのインスタンスメソッドなので、thisはオブジェクトgへの参照を表しているのでしょうか?

    • ベストアンサー
    • Java
  • はじめたばかりです。

    javaを勉強し始めたばかりです。 クラスメソッド・クラス変数と、インスタンスメソッド・インスタンス変数の具体的な違いが良く分かりません;; どういう違いがあるのか教えてくれる方、よろしくお願いします。

  • クラスの勉強中です。

    オブジェクト指向に興味がありクラスの勉強をしています。 現状はぐぐってネット上の情報を参考にしているのですが簡単な説明をしているサイトしか みつからず応用というかいまいち理解を深める事ができません。 今後活用していきたいと思っており詳しく勉強したいのですが近くの本屋に行ってPHPの書籍を 手にとってみてもクラスについての説明はないものが多く仮にあってもあっさりとしたもので いまいち購入に疑問を覚えます。 元々javaの要素なようでjavaの参考書を見たのですが余計混乱しそうでできればPHPの書籍で クラスの説明について極力詳しく書いてある本が欲しいのですがそのような本はご存じないでしょうか?

    • 締切済み
    • PHP

専門家に質問してみよう