プログラミングの紳士入門

イラスト:ジョン・アデサニャ

この記事は、コーチングリクエストを受け取ったときに教えていることをまとめたものです。コードやあらゆる種類のセットアップに飛び込むことはありません。概念を教えます。

ソフトウェア開発会社で非プログラマーとして働いている場合、プログラマーは何をしているのだろうと思うかもしれません。そして、あなたは毎日新しい流行語を聞きます。この投稿はあなたを念頭に置いて書かれました。営業担当者、医師、弁護士、ビジネスリーダー、会計士のいずれであっても、コーディングの方法を習得することを念頭に置いていれば、ここから始めるのがよいでしょう。

この記事の構成

この記事は4つの部分に分かれています。各パートを読み終えると、読んだ内容を思い出すのに役立つクイズセクションがあります。次に、「今後」セクションとクイズの回答が表示されます。

このシリーズで導入された各流行語は、アルゴリズムのように太字であることに注意してください。

イラスト:ジョン・アデサニャ

パート1 —プログラミングとは

簡単な答えは、「プログラミングとは、コンピューターにタスクを実行するよう指示する行為です。」と呼ばれることです。

それでは、コンピュータプログラムとは何ですか?コンピュータープログラムは、コンピューターが実行する一連の命令です。

上記の定義のコンピューターは、コードを処理できる任意のデバイスです。これには、スマートフォン、ATM、Raspberry Pi、サーバーなどがあります。

プログラミングの良い例え

まず、私たちの日常生活にはパターンがあります。宇宙はある程度予測可能な方法で動作します。たとえば、昼と夜、季節、日の出と日没。人々は、朝起きて、学校に行ったり、仕事に行ったりするなど、日常生活を送っています。私たちは職場の上司など他の人から指示を受けます。特定のレシピをどのように調理するかは、有限ステップで説明できます。

第二に、スマートデバイスを使用するたびに、一部のコードがバックグラウンドで実行されます。マウスポインターをコンピューター画面のある部分から別の部分に移動するのは簡単な作業のように思えるかもしれませんが、実際には非常に多くのコード行が実行されました。 Googleドキュメントに文字を入力するだけの簡単な行為は、バックグラウンドで実行されるコード行につながります。どこでもすべてのコードです。

コンピュータプログラムはコードとも呼ばれます。 「コード」という言葉は使用しないでください(コードは不可算名詞として使用する必要があります)。さて、これは英語のクラスではありません。ビジネスに戻りましょう。

コンピューターの自然言語

機械には、人間と同じ自然言語があります。コンピューターは人間の言語を理解しません。コンピューターの自然言語は、バイナリコード— 1と0です。これらは、オン(1)とオフ(0)の2つの状態を表します。

それが電子機器の自然言語です。人間としてコンピュータとバイナリで通信することは多忙です。

プログラミング言語を入力してください

バイナリを話す機械と通信するために、私たちは私たち自身の自然言語により近い言語でそうします。英語、フランス語、スワヒリ語、アラビア語など。プログラミング言語は自然言語に近いものです。しかし、それらはより構造化されており、徹底的に学習する必要があります。

高レベルまたは低レベルの言語である可能性があります。高レベルのプログラミング言語は、低レベルの言語よりも機械言語から遠く離れています。この「遠く」は通常抽象化と呼ばれますが、このシリーズではそれを取り上げません。気が散らないようにしましょう:)

コンピューターには人間の言語を理解する方法が必要です。これを行うには、翻訳者が必要です。

翻訳者とは

ソースコードとは、特定のプログラミング言語で記述されたコードのことです。これについては、パート2で詳しく説明します。

翻訳者には、ソースコードを機械語に変換する責任があります。これはバイナリとも呼ばれます。 1と0を覚えてください。今日、バイナリをオブジェクトコード、プログラム、または一般的な単語として参照する場合があります:アプリ。

翻訳者は次のいずれかです。

  • 通訳者
  • コンパイラー
  • 通訳者とコンパイラのハイブリッド
  • アセンブラー

通訳者

一部の言語は解釈されます。トランスレーターはソースコードを1行ずつ処理し、最終プログラムまたはアプリのすべての行を実行します。つまり、エラーが発生するまで、解釈されたソースコードの実行が開始されます。その後、インタープリターはそのようなエラーの報告を停止します。詳細については、パート3で詳しく説明します。

Pythonは、インタープリター型プログラミング言語の良い例です。

コンパイラー

コンパイラの機能は異なります。コンパイルプロセスを介してソースコード全体をバイナリに変換します。その後、バイナリが実行されます。ソースコードにエラーがあった場合、それらはコンパイル時に検出され、フラグが立てられます。これにより、コンパイルプロセスが中断され、バイナリは生成されません。

通訳者は行ごとに翻訳し、次の行に進む前にその行を実行します。コンパイラは、プログラムのすべての行をファイル(バイナリ)に変換し、ファイル全体を実行します。

コンピュータープログラムの定義を覚えていますか?コンピューターによって実行される一連の命令です。

実行中のプログラムは通常、プロセスと呼ばれます。このようなプログラムは、メモリ、ディスク領域、ファイルシステムなど、コンピューターシステムまたはスマートフォン上の特定のリソースを使用します。実行中のプログラムは実行中であるとも言えます。

コンピュータープログラムを実行するときに「実行」という言葉を使用します。このようなプログラムの実行にかかる時間は、プログラムの実行時間と呼ばれます。

Appsと呼ばれるプログラムがよく見られます。また、プログラムを実行するプラットフォームまたは環境、または設計されている環境にプログラムを関連付けます。 Google SpreadsheetなどのWebブラウザーで実行されるWebアプリがあります。 CandyCrushなどのスマートフォンで実行されるモバイルアプリがあります。 Evernoteデスクトップアプリなどのデスクトップアプリもあります。

繰り返しますが、解釈されたソースコードはソースファイルから直接実行されます。コンパイルされたソースコードはバイナリファイルに変換されます。その後、バイナリファイルが実行されます。コンパイルされたソースコードは、正常にコンパイルされた後でも、実行時に失敗する場合があります。パート3を参照してください。

ハイブリッド翻訳者

ハイブリッドトランスレーターは、インタープリターとコンパイラーの組み合わせです。人気のあるハイブリッドプログラミング言語はJavaです。 Javaは、最初にソースコードをバイトコードと呼ばれる中間形式にコンパイルします。

バイトコードは、仮想マシンとも呼ばれるランタイムエンジンによって解釈および実行されます。これにより、ハイブリッドトランスレータはさまざまなオペレーティングシステムでバイトコードを実行できます。

アセンブラー

低レベルのアセンブリ言語をバイナリに翻訳するためのアセンブラーもあります。

このシリーズでは、高レベル言語のみに焦点を当てます。

翻訳者を見る良い方法は、翻訳者自身をプログラムとして見ることです。それらをダウンロードまたは取得し、コンピューターシステムにインストールし、基本的な動作を理解する必要があります。

よくある質問

これは初心者がよく尋ねる質問です。

最初にどの言語を学びますか?

何百ものプログラミング言語があります。人気、コミュニティ、長期サポート、教育学、ビジネス利用でランク付けされています。また、機能、命令型、静的、強力、または緩やかに型付けされているかどうかなど、技術的にランク付けすることもできます。

一部の言語は他の言語よりも教育的です。一部の言語は教育用であり、ビジネス用ではありません。たとえば、子供たちがコーディングの方法を学ぶために書かれた言語があります。

セットアップと学習が簡単な非常に強力な言語があります。 Pythonはそのようなプログラミング言語の1つです。私は通常、初心者にお勧めします。

「第一言語」の選択肢についてさらに詳しく知りたい場合は、Philip Guoによる優れた研究があります。

新しい言語を学びたいとき、その言語翻訳者が必要になることを知っています。これは、コンピューターシステムにインストールしてセットアップするプログラムです。

CLI(コマンドラインインターフェイス)の使用方法の学習を開始することをお勧めします。 CLIは端末またはシェルです。端末をGUI(グラフィカルユーザーインターフェイス)の代替と考えてください。

GUIでは、マウスポインターを介してコンピューターと対話します。また、ディレクトリの視覚的な表現や、行うすべてのことにも依存しています。

ただし、CLIを使用する場合、プロンプトまたは点滅カーソルで入力するコマンドを使用してコンピューターと対話します。

$ _

Windowsでは、出荷時の端末はコマンドプロンプトです。 MacおよびLinuxユーザーの場合、すでにデフォルトのBashターミナルがあります。 Windowsで同じエクスペリエンスを得るには、Git Bash OR PowerShellをインストールします。

今後

これで、プログラミングとは少し紹介されました。コードの最初の行の準備をする必要があります:)

開始するには、次のものが必要です。

  • コンピューターシステム
    この時点では、洗練されたものや非常に高価なものは必要ありません。うまく機能するコンピューターのみが必要です。
  • CLIをインストールする
    CLIの使用方法を習得するには、このクラッシュコースをお勧めします。
  • テキストエディターをインストールする
    パート2でこれに戻ります
  • プログラミング言語を学ぶ
    このシリーズでは、ほとんどのプログラミング言語の基本的な知識を構成する基本的な要素を学びます。

クイズ

  • プログラミングを開始するには、どのような基本ツールが必要ですか?
  • bash(CLI)で次のコマンドを使用しますか?
  • 現在のディレクトリを確認してください
  • 「bin」という名前のディレクトリに移動します(binは現在のディレクトリにあります)
  • 「lib」という新しいディレクトリを作成します
  • 「book.py」という新しいファイルを作成します
  • 現在のディレクトリのすべてのコンテンツをリストします

概要

私たちは、翻訳者の紹介とともに、プログラミングの基本を学びました。 「ソースコード」という言葉はもはや奇妙ではありません。次のパートでは、ソースコードの詳細を調べます。

クイズへの回答

プログラミングを開始するには、どのような基本ツールが必要ですか?
コンピューター、テキストエディター、シェル(端末)、およびコンパイラー/インタープリター

bash(CLI)で次のコマンドを使用しますか?

  • 現在のディレクトリを確認します:pwd
  • 「bin」という名前のディレクトリに移動します。cdbin
  • 「lib」という新しいディレクトリを作成します:mkdir lib
  • 「book.py」という新しいファイルを作成します:book.pyをタッチします
  • 現在のディレクトリのすべてのコンテンツをリストします:ls
ウィキメディアコモンズ、無料のメディアリポジトリから

パート2 —ソースコード

プログラミングの概念を理解したので、ソースコードを調べます。

ソースコードは基本的に、Microsoft(.doc)ファイルと同様のファイルですが、わずかに異なります。これは、Windowsのメモ帳などの非常にシンプルなエディターで作成された生のテキストファイルです。前のセクションから、ソースコードをバイナリに変換するにはインタープリターまたはコンパイラが必要であることを思い出してください。ソースコードはファイルに保存する必要があります。ファイルは翻訳者への入力として渡されます。

記述している言語に応じて、ソースコードファイルを保存するための指定された拡張子があります。 Pythonの拡張子は「.py」です。 Javaは「.java」です。 Phpは「.php」、PERLは「.pl」です。

ソースコードの記述が完了したら、トランスレータを介して実行する必要があります。例として、pythonコマンドを使用してPythonソースコードを実行する方法を次に示します。

はじめに:最初のプログラム

  • こちらの手順に従って、コンピューターシステムにPythonをセットアップします。
  • 簡単なエディターをインストールして、ソースコードを入力します。崇高なテキストエディタを使用して開始できます。
  • エディターで新しいファイルを開き、次のように入力します。
「Hello Python!」
  • ファイルをmain.pyとして保存することを忘れないでください
  • CLIでファイルへのパスを見つけ、以下のコマンドを入力します。
$ python main.py

結果は次のようになります。

典型的なソースコードの構造

次に、典型的なソースコードファイルの内容を調べます。以下は通常のコンポーネントです。

キーワード

通常はキーワードと呼ばれる、人間が読み取れる短い単語。彼らはあなたが学んでいる言語に特有であり、彼らは特別です。すぐにこれに戻ります。キーワードのいくつかを暗記する必要があります。 Pythonで認識および使用されるキーワードのセットは次のとおりです。

https://www.programiz.com/python-programming/keyword-list

識別子

あなたが発明した言葉—はい、あなた、プログラマー。これらの単語は一般に識別子と呼ばれます。それらは、あなたまたは他のプログラマーによって作成される可能性があります。これらは、ライブラリとしてよく知られているプラ​​グインの形式でパッケージ化されています。

ライブラリの例は、数学ライブラリです。 Javascriptで使用される平方根(Math.sqrt)などの関数にアクセスできます。

多くのプログラミング言語には、多数のライブラリが付属しています。これらは通常、SDK(ソフトウェア開発キット)と呼ばれます。それらをコンパイラーと一緒にダウンロードして、テクノロジー、アプリ、プロジェクトの構築を開始します。これらに加えて、Webやモバイルなどの特定のプラットフォームでの構築を支援するために設計されたフレームワークがあります。

一部の識別子は、使用している言語にバンドルされており、ユーザー名の識別子としては使用できません。例は、javaの単語文字列です。このような識別子は、キーワードとともに予約語と呼ばれます。それらはキーワードではありませんが、キーワードと同様に特別です。

すべてのキーワードは予約語であり、逆は当てはまりません。

選択する単語は、一目でそれらを見る人にとって意味のあるものでなければなりません。

識別子の一般的な使用法は、変数の命名にあります。これについては後で詳しく説明します。

基本データ型

また、ソースコード、数字(3、5.7、-100、3.142)および文字(M、A)にさまざまなタイプのデータがあります。一部のプログラミング言語では、数値は整数などの独自のタイプにさらに分割されます。

整数には、符号付きまたは符号なし、大きな整数、小さな整数を使用できます。実際には、大きいか小さいかは、そのような数値用に予約されているメモリスペースの量によって異なります。学習している言語に応じて、通常はdoubleおよびfloatと呼ばれる小数部分の数字があります。

trueまたはfalseに評価されるブールデータ型もあります。

複雑なデータ型

上で説明したデータ型は、基本、プライマリ、または基本データ型として知られています。これらの基本データ型から、より複雑なデータ型を構築できます。

配列は、複雑なデータ型の最も単純な形式です。文字列は文字の配列です。これらの複雑なデータ型なしにはできません。ソースコードを記述するときにそれらを使用することがよくあります。

文字の組み合わせは文字列です。類推を使用する場合、文字列とはコンピューターにとっての言葉であり、人間にとっての言葉のことです。 「体温計」という単語は11文字で構成されています。これを単に文字列と呼びます。文字列処理はそれ自体が学ぶべき広いトピックであり、すべての意欲的なプログラマーによって研究されなければなりません。

使用するほとんどのプログラミング言語には、複雑なデータ型が同梱されています。 Classシステムなど、プログラマーとして自分で構築するものもあります。これらは(OOP)オブジェクト指向プログラミングとも呼ばれます。

変数

変数は、単にメモリの場所という名前です。データをリコールできる場所にソースコード内のデータを保持して、再利用したい場合があります。これは通常、コンパイラ/インタープリターが私たちのために確保するメモリの場所です。後で呼び出すために、これらのメモリの場所に名前を付ける必要があります。以下のPythonコードスニペットを検討してください。

pet_name = 'Hippo'print pet_name

pet_nameは変数の例です。 pet_nameに格納されているデータのタイプは文字列であるためです。これは文字列変数として知られています。数値変数もあります。変数は、データ型によって分類されます。

定数

定数は、プログラムの存続期間を通じて変化しない値です。一部の値が定数値であることを強制するために大文字を使用します。定数値を作成する方法を提供する言語もあれば、そうでない言語もあります。

一部の言語は、変数が必要な型を宣言する贅沢を提供します。これらの強く型付けされた言語とよく呼ばれます。 Javaは良い例です。

他はこれらの機能を提供しません。緩やかに型付けされた、または動的なプログラミング言語です。 Pythonは良い例です。

JavaScriptで定数値を宣言する方法は次のとおりです。

const petName = 'Hippo'

リテラル

すべてのソースコードには、コードの周りで使用するデータ型があり、自分で編集した場合にのみ変更されます。これらのリテラルは、変数や定数と混同しないでください。ソースコードをひと目見れば、リテラルを見ることができます。文字列、数値、10進数、またはその他のデータ型です。

上記のソースコードスニペットでは、「Hippo」という単語はリテラル、つまり文字列リテラルです。ソースコードを編集するまで、常に「Hippo」になります。コーディングを学習するにつれて、ソースコードの多くを変更せずに維持しやすい方法で、ソースコード内のリテラルを管理する方法を学習します。

句読点/記号

ほとんどのソースコードでは、通常、プログラミング言語に応じて異なる句読点があります。 Javaには、たとえばPythonよりも多くの句読点があります。

一般的な句読点には、コンマ(、)、セミコロン(;)、コロン(:)、中括弧({})、角括弧(())、角括弧([])、引用符(“”)、パイプ( |)、スラッシュ(\)、ピリオド(。)、疑問符(?)、キャレット(^)およびパーセンテージ(%)。

句読点があなたの親友であるコーディングの世界へようこそ。あなたは自分でそれらをたくさん入力することに気付くでしょう。

オペレーター

操作を実行するコードを記述する可能性は非常に高くなります。ほんのわずかな方法で、ソースコードで割り当て操作を実行します。使用するプログラミング言語ごとに、多数の演算子が表示されます。例には、加算(+)、除算(/)乗算(*)、減算(-)、およびより大きい(>)が含まれます。

オペレーターは一般的に次のように分類できます。

  • 割り当て演算子
    これは、等号と誤解される場合があります。等しいは、2つの値を比較するために使用されます。代入演算子は、pet_name = 'Hippo'などの変数に値を入れます
  • 算術演算子
    加算や減算などの算術タスクを実行するための演算子で構成されます。一部の言語は、他の言語にはない算術演算子を提供します。たとえば、モジュラス演算子(%)は、除算演算の剰余値を返します。
  • 関係演算子
    値の比較に使用されます。これらには、より大きい、より小さい、等しい、等しくないが含まれます。それらの表現は、学習しているプログラミング言語によっても異なります。 <>は一部の言語では等号ではありませんが、他の言語では!=または!==です。
  • 論理演算子
    論理演算の計算に使用されます。一般的に使用される論理演算子はand、or、notです。一部の言語では、これらの演算子を&& forや||などの記号で表します。またはしないため。通常、論理演算値はブール値trueまたはfalseに評価されます。

コメント

ドキュメントはコーディング活動の重要な側面になります。他のプログラマーにコードを説明する方法です。これは、コードの一部に時々追加されるコメントを介して行われます。コメントを使用して、他のプログラマーに、コードが使用するデータの種類と生成される出力の種類を案内できます。

通常、コンパイラーはコメントであるコード行を無視します。

コメントは言語によって異なります。 #はPythonでコメントを導入するために使用されます。

Pythonでのコメントの例を次に示します。

#N個の数値のフィボナッチを計算するプログラムスニペット

Java、C、C ++では、Pythonの#と同様に1行のコメントがありますが、代わりに//記号が使用されます。複数行のコメントもあります/ *…* /。学習することを選択した言語のコメントについて詳しく読むことができます。

空白とタブ

これらは、あなたが書いているコードの間に作成されたスペースです。これは、キーボードのスペースバーまたはタブキーを押すと実行されます。

今後

コンピューターシステムでPythonを正しくセットアップし、最初のプログラムを実行してください。

クイズ

こちらが簡単なクイズです。
以下のJavaソースコードスニペットで、これまでに調査したさまざまな要素を特定します。

// Factorialの再帰的な実装
import java.util.Scanner;
クラスRecursiveFactorial {
  public static void main(String [] args){
    Scanner input = new Scanner(System.in);
    System.out.print( "階乗の検索:");
    int num = input.nextInt();
    System.out.println( "Factorial of" + num + "=" + fact(num));
 }
 static long fact(int n){
  if(n <2)は1を返します。
  return n * fact(n-1);
 }
}

概要

ソースコードとは何かを紹介し、典型的なソースコードの内容を調べました。

コンパイルまたは翻訳されたコードは、いくつかの理由により実行に失敗する可能性があります。これらの理由は、一般にソースコードのエラーに関連しています。これらのエラーはバグとして知られています。

これらのバグを見つけて削除する行為はデバッグと呼ばれ、プログラマーとして学ぶ必要があるスキルです。次のパートでは、バグとは何かを調べます。

クイズへの回答

以下のJavaソースコードスニペットで、これまでに調査したさまざまな要素を特定します。

キーワード:
import、class、public、static、void、new、int、long、if、return

識別子:
java、util、Scanner、RecursiveFactorial、main、String、args、input、System、in、out、print、println、num、nextInt、fact、n

リテラル:
文字列リテラル—“ Factorial of” =“ Findial of:”
整数リテラル— 2、1

演算子:
代入演算子=
連結+(文字列を結合するため)
<より小さい
かける *
減算-

句読点と記号
{} [](); 。

コメント
// Factialの再帰的な実装

パート3 —デバッグ

コードスニペットの試用を開始するか、コードの実際の問題を解決しようとすると、プログラムが中断し、中断して実行が停止する瞬間があることがすぐにわかります。

これは多くの場合、実行時のバグまたは例外として知られるエラーによって引き起こされます。バグを見つけてコードから削除する行為はデバッグです。より多くのコードを試してみると、コードのデバッグが上手になります。私たちは自分のコードをデバッグするだけでなく、他のプログラマーによって書かれたコードをデバッグすることもできます。

開始するには、ソースコードで表面化しやすい一般的なバグを特定する必要があります。

構文エラー

これらのエラーにより、ソースコードがコンパイルされたプログラミング言語でコンパイルできなくなります。コンパイル時またはソースコードの解釈時に検出されます。リンターでも簡単に検出できます。リンターについては後ほどもう少し学習します。

これらは主に、コーディングしている言語の予想される形式または構造を破ったときに発生します。例として、方程式に閉じ括弧がありません。

セマンティックエラー

論理エラーとも呼ばれるセマンティックエラーは、すべてのエラーの中で最も厄介です。それらを簡単に検出することはできません。セマンティックエラーの兆候は、プログラムは正常に実行されたが、目的の出力が生成されなかった場合です。

この例を考えてみましょう:

3 + 5 * 6

数学では一般にBODMASと呼ばれる優先順位により、乗算部分が最初に評価され、最終結果が33になることが期待されます。出力。このようなエラーはセマンティックエラーであり、構造(構文)よりも意味に関係しています。

3 + 5の周りの括弧は、代わりに48の望ましい出力を与えます。

(3 + 5)* 6

実行時エラー

セマンティックエラーと同様に、ランタイムエラーはコンパイル時に検出されません。セマンティックエラーとは異なり、ランタイムエラーはプログラムを中断し、それ以上実行できないようにします。それらは通常、ソースコード内の何らかの計算の予期しない結果によって引き起こされます。

これが良い例です:

入力= 25x = 0.8 /(Math.sqrt(input)-5)

上記のコードスニペットは正常にコンパイルされますが、25を入力するとZeroDivisionErrorが発生します。これは実行時エラーです。もう1つの一般的な例は、StackOverflowErrorまたはIndexOutofBoundErrorです。本当に重要なのは、これらのエラーを特定し、対処方法を学ぶことです。

ソースコードが、それが実行されるプラットフォームまたは環境のメモリとスペースをどのように利用するかによって引き起こされるエラーがあります。これらは実行時エラーでもあります。 OutOfMemoryErrorやHeapErrorなどのエラーは通常、ソースコードがリソースをどれだけ使い果たしているかによって発生します。アルゴリズムに関する十分な知識は、リソースをより有効に活用するコードを書くのに役立ちます。

パフォーマンスを向上させるためにコードを書き換えるプロセスは最適化と呼ばれ、あまり関係のない言葉はリファクタリングです。コーディングに多くの時間を費やすにつれて、これらも念頭に置いておく必要があります。

デバッグ

コードをデバッグする方法に関するいくつかのヒントを次に示します。

  • リンターを使用する
    リンターは、ソースコードを読み通して、コーディングしている言語で予想される標準に準拠しているかどうかを確認するのに役立つツールです。多くのプログラミング言語にはリンターがあります。学習している言語用に必ず入手してください。
  • 単純なエディター上のIDE
    学習している言語用に設計されたIDEを選択できます。 IDEは統合開発環境の略です。これらは、コードの記述、デバッグ、コンパイル、実行のために構築されたソフトウェアです。通常、それらにはコードを監視またはステップ実行するための強力なデバッグキットが付属しています。
    Jetbrainsは、WebstormやIntelliJなどの優れたIDEを作成します。 NetBeans、Komodo、Qtエディター、Android Studio、XCode(Macに同梱)などがあります。
  • コードを声に出して読む
    これは通常、セマンティックエラーを探しているときに便利です。コードを声に出して読んでいると、エラーも読み上げる可能性が高くなります。おそらく間違っていたとして、それはあなたに飛びつくかもしれません。
  • エラーログを読む
    コンパイラがエラーにフラグを立てるときは、必ず行番号またはフラグが立てられたコードの一部を調べてください。

今後

初心者として、書籍、オンラインチュートリアル、またはビデオからコードを学ぶことができます。多くの場合、表示されているとおりにコードを入力します。

そのようなコードの作成または実行が完了したら、それらを破ることを学びます。これどうやってやるの?

コードの動作を確認するには、何かを変更します。これは、あなたが何についても推測しないようにし、何が起こっているのかを確実に理解できるようにするためです。

クイズ

1以下のPythonコードスニペットで起こりそうなバグは何ですか:

アイテム= [0,1,2,3,4,5]
印刷アイテム[8]
//ヒント:ここの項目は、6つの項目を持つ配列です。たとえば、4番目のアイテムを取得するには、items [3]を使用します。 0からカウントを開始します。

2.以下のPythonコードスニペットで起こりそうなバグは何ですか。

入力= Hippo '
入力== 'Hippo'の場合:
  「こんにちは、カバ」を印刷

セクションの要約

おめでとうございます!バグの言葉はもはやあなたにとって奇妙なものではなく、バグを選ぶこともそうではないはずです。次に、毎日作成するコードの一般的なフローを調べます。

クイズへの回答

以下のPythonコードスニペットで起こりそうなバグは何ですか:
(1)ランタイムエラー:インデックス範囲外エラー
(2)構文エラー:行1に開始引用符がありません

http://www.publicdomainpictures.net/

パート4 —基本的なコーディングフロー

コード、式、およびステートメントの行

ソースコードの単位はLOC(コード行)です。最も単純なプログラムは、コードの行です。 LOCは、キーワード、シンボル、またはステートメントです。独立した行にある限り、それはコード行です。

簡単なコード行を考えてみましょう。

面積= 0.5 *ベース*高さ

0.5 * base * heightは式です。式は、演算子とオペランドの組み合わせです。ここに示した例では、オペランドは0.5、ベース、高さです。 0.5は浮動小数点リテラルであり、baseとheightは変数であることを思い出してください。演算子は*(乗算)です。

式は、LOCとして単独で存在する意味がない場合があります。式の値を別の変数に割り当てた場合、領域の上の場合、持っているものはステートメントと呼ばれます。式をキーワードに添付するときのステートメントであり、例:return 0.5 * base * height

このセクションの残りの部分では、ステートメントをシンボルSとして表します。n番目のステートメントは、一連の(または一連の)ステートメントの中でSnになります。

プログラミングをすばやく把握するための適切な出発点は、基本的なコーディングフローを理解することです。基本フローは制御フローとも呼ばれます。これらのフローを理解すると、学習した多くのプログラミング言語でそれらを見つけることができます。

この記事で示した例は純粋に基本的なものであることに注意してください。学習している言語を参照して、それが提供するキーワードの詳細な知識を得る必要があります。

また、ここで紹介する基本的なフローは、プログラミングの設計パターンとは異なります。最初にこれらの基本的なフローを理解してください。学習するにつれて、プログラミングの一般的な設計パターンに後で追いつきます。

基本的なプログラミングフローは次のとおりです。

  • シーケンシャル
  • 条件付き/分岐
  • 反復/繰り返し/ループ

シーケンシャル

これは最も基本的なフローであり、1つのステートメントが他のステートメントの後に実行されます。実際には、他のすべてのフローは順次フローに解決されます(これについては後で説明します)。

S1
S2
S3
。
。
。
Sn

JavaScriptのような一部のプログラミング言語では、S3がS1の前に実行される可能性があります。これは、非同期タスクと呼ばれるデータベース操作やファイル操作など、より時間がかかる可能性のある一部のタスクによってS1がブロックされた場合に発生します。このようなケースを回避する方法があります。心配する必要はありませんが、学習するためにプログラミング言語を習得するとき、学ぶのは簡単です。

条件付き/分岐

実行するステートメントは条件によって決定されます。ここで重要なキーワードはifキーワードです。最もよく使用されるコーディングフローの1つです。

最も簡単な条件パターンは次のとおりです。

if(条件)then:
   S1

上記の例では、S1が実行されるか、何も起こりません。 S1は、指定された条件が真である場合にのみ実行されます。

別の条件パターンは次のとおりです。

if(条件)then:
  S1
  S2
その他:
  S3
  S4

これは、指定された条件に基づいて、S1-S2またはS3-S4の実行として読み取ることができます。条件が真の場合、S1とS2が処理されます。それ以外の場合、ステートメントS3およびS4が処理されます。これは、実際の意味では連続したフローです。

S1
S2

また、複数条件のスタイルがあります。

if(condition1)then:
  S1
else if(condition2)then:
  S2
その他:
  S3

ここでcondition1が真の場合、S1が処理されます。それ以外の場合、condition2がテストされ、trueの場合、S2が処理されます。これは何度も続けることができます。

多条件スタイルの場合、多くのプログラミング言語がswitchstatementを提供します。 switchステートメントのパターンは次のとおりです。

スイッチ値:
  ケース条件1:
    S1
    ブレーク
  
  ケース条件2:
    S2
    ブレーク
デフォルト:
    S3

condition1およびcondition2は、switchステートメントの値と比較されます。それらのいずれかが値に当てはまる場合、caseブロックのステートメントが実行されます。

条件付きフローには他の選択肢があります。条件演算子(:?)など、学習することを決定した言語に固有のものや、サイクルやブレークなどの分岐を容易にするその他のキーワードがあります。条件/分岐フローの理解に時間を費やすことを忘れないでください。

反復/繰り返し/ループ

反復/反復フローは、いくつかの条件が満たされる限りステートメントを実行し続け、条件が真でなくなるとステートメントの実行を停止します。

パターンは次のとおりです。

while(条件):
  S1
  S2

上記の例では、ステートメントS1およびS2は1回、複数回実行される場合がありますが、まったく実行されない場合もあります。指定された条件が初めてwhile文に遭遇したときに真である場合、S1とS2が処理されます。 while条件が再びチェックされ、条件が真である限りS1とS2が実行されます。

条件が偽になると、S1とS2の実行が停止します。

条件が3回trueの場合、上記のステートメントの結果は次のようになります。

S1
S2
S1
S2
S1
S2

それはどんなコーディングフローですか?シーケンシャルと答えた場合、あなたは非常に正しいです。ご覧のとおり、他のフローは順次フローに解決されます。

別の反復パターンを次に示します。

行う:
  S1
  S2
while(条件)

この例では、S1とS2は1回または複数回リースで実行されます。これは、条件がテストされる前に実行されるためです。

多くのプログラミング言語では、繰り返しフローを実装するためにdoやwhileのようなキーワードが提供されています。もう1つの一般的なキーワードはforキーワードです。 forステートメントの一般的なパターンを次に示します。

for(初期値;条件;初期値の減少/増加):
  S1
  S2

多くの言語には、配列や構造体などの複雑なオブジェクト内の各アイテムを処理するためにforeachが使用されています。

クイズ

次のPythonコードスニペットでコーディングフローを特定します。

numlist = []
cnt = 0
一方、cnt> = 0:
  m = int(raw_input())
  m <0の場合:
    ブレーク
  numlist.append(m)
  cnt = cnt + 1

概要

ここで扱うフローは基本的なフローです。多数のコードをグループ化して名前を付ける方法があります。この方法で、必要なときにすぐにこの一連のコードを呼び出すことができます。これは手順と呼ばれます。一連のコードが何らかの操作を実行して値を返す場合、関数があります。

プロシージャと関数の実装方法は、言語によって異なります。これらをスキップして、すべての言語の基本を取得することはできません。コードを整理するために非常に重要です。実際、ここからコードの構成要素が始まります。これはモジュラープログラミングとも呼ばれます。

関数を理解した瞬間に学ぶ他のフローがありますが、思い浮かぶのは再帰です。

それでも、プロシージャと関数の中で、ここで取り上げたすばらしいコーディングフロー(シーケンシャルフロー、条件付きフロー、ループ/反復フロー)がまだあることがわかります。

今後

これで、コンピューターのプログラミングの最も基本的な概念を学びました。詳細を知りたい場合、またはソフトウェア開発でキャリアを作りたい場合、あなたがする必要があるのは、より深い海に深く飛び込むことです。あなたが学ぶのを助ける多くのリソースがあります。経験のレベルに基づいてどれを選択するかを知ることは非常に重要です。

友だちのサークルで経験を積んだプログラマーから聞いた新しい言葉に圧倒されないようにしてください。これらの用語を書き留めるためにパッドを保持することもできますが、それらが何を意味するのかを知るために圧力を受けることはありません。あなたが学び、練習しながら追いつくでしょう。

コーディングのキャリアをスタートさせ、ここから得た基盤を構築するためのリソースをいくつか紹介します。

  • https://www.codecademy.com/
    Pythonコースを選ぶ
  • https://app.pluralsight.com/library/courses/what-is-programming/table-of-contents
    Pluralsightの無料コース

注:同じトピックを読み直すことはお勧めしません。私はあなたが学んだ小さなこと、つまり練習することを信じています。これが、学習のためにあまり多くのリンクをここにダンプしていない理由です。あなたが初めてではない場合、あなたがすでに知っていることに基づいてグーグルアップしたり、他の人を見つけてください。

最終チャレンジ

私はここにあなたに挑戦します:
これらの課題のいずれかを取り上げます。

  • オンラインで簡単なアプリを見つけて、学習したプログラミング言語で再現する

または

  • バケットリストアプリのような単純なアイデアでも考えてみてください
    このアイデアに基づいてアプリを構築します。

これを始めるために、コードメンターからのこの記事をお勧めします。

クイズへの回答

次のPythonコードスニペットでコーディングフローを特定します。

  • シーケンシャルフロー
  • 反復
    whileステートメント
  • 条件付き
    ifステートメント

この記事をレビューしてくれたMaya Neria、Joshua Ugba、Mohini Ufeli、出版を促してくれたSurajudeen Akande、レビューを行ったAndelaの編集チーム、イラストと 'Kunmiを書いたJohn Adesanyaに感謝します。これらのレッスンはコーディング方法を学びたいという彼女の欲求。

これが気に入ったら、拍手アイコンをクリックして、他の人がここでこれを見ることができるようにします。また、質問や意見がある場合は、コメントセクションを使用して考えを共有してください。