hpprc/jawiki-books-paragraphs huggingface dataset:
ラテン語の時代区分
ラテン語>
ラテン語の時代区分

下の表に、Wikipedia 英語版・仏語版・独語版・羅語版におけるラテン語の時代区分を掲げる。
ラテン語の時代区分

※後世の人々から模範とされている古典ラテン語(前75年頃~後1世紀頃)が成立するより前のラテン語は、早期ラテン語(Early Latin)または古ラテン語(Old Latin, Archaic Latin)などと呼ばれているが、ここでは Wikipedia 独語版などに依拠して、早期ラテン語(前7世紀頃~前240年頃)と古ラテン語(前240年頃~前75年頃)の二つに区分する。
ラテン語のあけぼの

ラテン語 (Lingua Latina)は、インド・ヨーロッパ語族 (印欧語族:南ロシアの黒海・カスピ海の北岸で話されていたと想定される印欧祖語を共通のルーツと仮定する仮説上の言語グループ) のイタリック語派 に分類される言語である。印欧語系諸族 は、チャリオット(二頭立て戦闘用馬車)の拡がりと呼応するかのように各地に拡散した。イタリック語派は西暦 紀元前1千年紀にはイタリア半島に南下して、半島の中部・南部に定着したが、南部に入植していたギリシア人の植民市と北部の先住民エトルリア人(エトルスキ) に挟まれていた。
ラテン語のあけぼの

アペニン山脈
ラテン語のあけぼの

ティベリス川(テベレ川)
ラテン語のあけぼの

カルキディア文字 (西ギリシア文字)
ラテン語のあけぼの

エトルリア文字
ラテン語のあけぼの

(編集中)
早期ラテン語

早期ラテン語(ドイツ語 Frühlatein :前7世紀頃~前240年)は、古典ラテン語が成立する前の時期のうち、文字で記されたラテン語の文献資料が ごくわずかな刻文などに限定される 前7世紀頃から前3世紀中葉までを指す狭義の時代区分である。
早期ラテン語

前・文学期ラテン語(フランス語 Latin prélittéraire 「プレ文学期ラテン語」)とも呼ばれる。
早期ラテン語

プラエネステのフィーブラ(留め金)(前7世紀頃)に記された早期ラテン語の刻文とその解釈を下の表に示す。
早期ラテン語

(編集中)
早期ラテン語

(編集中)
古ラテン語

古ラテン語(ドイツ語 Altlatein :前240年~前75年頃)は、古典ラテン語が成立する前の時期のうち、ラテン語の文学が現われてから、洗練された文章語としての古典ラテン語が確立される前までの 前3世紀中葉から前1世紀初頭まで を指す狭義の時代区分である。
古ラテン語

前・古典期ラテン語(フランス語 Latin préclassique 「プレ古典期ラテン語」)とも呼ばれる。この時代を 前・古典期(フランス語 période préclassique 「プレ古典期」)といい、古代ローマ人がイタリア半島を統一してから地中海世界の覇者となって行った時代である。
古ラテン語

前3世紀になると、都市国家ローマがイタリア半島を統一して、半島南部に入植していたギリシア人を通じてギリシア語とギリシア人の文化・文学を吸収することによって、ラテン語の文学「ラテン文学」が発生した。
古ラテン語

前272年にローマ軍がタレントゥムを征服すると、捕虜となったギリシア人リウィウス・アンドロニクス (L. Livius Andronicus)は、奴隷としてローマ市でギリシア語とラテン語の教師となり、『オデュッセイア』などのギリシア文学をラテン語に翻訳したり、前240年にはギリシア演劇をラテン語に翻案して上演したため、「ラテン文学の創始者」と見なされている。
古ラテン語

ギリシア系の詩人・劇作家 エンニウス(Q. Ennius)は、叙事詩『年代記』でローマ史をうたって、ウェルギリウスら後世の詩人に大きな影響を与え、「ラテン文学の父」と呼ばれた。
古ラテン語

また、ギリシアのメナンドロスらの喜劇を翻案したプラウトゥス (T. Maccius Plautus)や テレンティウス (P. Terentius Afer)が喜劇作家として活躍した。
古ラテン語

(編集中)
古典ラテン語

(編集中)
古典ラテン語

(編集中)
古典ラテン語

(編集中)
古典ラテン語

(編集中)
後期ラテン語

(編集中)
後期ラテン語

(編集中)
後期ラテン語

(編集中)
中世ラテン語

(編集中)
ルネサンス・ラテン語

(編集中)
新ラテン語

(編集中)
現代ラテン語

(編集中)
Python/基本事項
開発環境の構築

Pythonは、Unix、GNU/Linuxのディストリビューション、およびmacOSでは通常最初からインストールされていますが、他のオペレーティングシステムでは初めて利用する際には手動でのインストールが必要です。
開発環境の構築

GNU/Linuxデスクトップ環境では、コマンドターミナルを開き、以下のコマンドを実行することでPythonのインタープリタを起動できます。コマンド名はpythonの様にバージョンを含んでいないかもしれません。
開発環境の構築

これにより、Pythonの対話モードが開始され、プロンプトが「>>>」に変わります。ここでPythonコードを実行したり、インタラクティブに作業することができます。終了するには、「exit()」と入力します。
開発環境の構築

これらの方法でPythonをWindowsに導入することができます。インストールが完了したら、コマンドプロンプトやPowerShellからPythonを実行できるようになります。Pythonのバージョンや依存関係などについては、公式ドキュメントを参照することができます。
Pythonの実行方法

Pythonを実行する方法には、主に2つのアプローチがあります。
Pythonの実行方法

インタラクティブモード(REPL: Read-Eval-Print Loop)では、Pythonのコマンドを1行ずつ入力して実行することができます。以下は、インタラクティブモードでの実行手順です。
Pythonの実行方法

ソースファイルを作成して実行する場合は、以下の手順を参考にしてください。
Pythonの実行方法

Pythonのソースファイルの拡張子は ".py" です。これらの手順を踏むことで、Pythonのプログラムを作成し、実行することができます。
ソースコードを書き換えてみる

さきほどの「Hello World!」と表示するプログラムを実行した後、ソースコードを書き換えるとどうなるのでしょうか。
ソースコードを書き換えてみる

以下に具体的な手順を示します。
ソースコードを書き換えてみる

つまり、ソースコードを書き換えてから再度実行すると、新しいソースコードが反映されてプログラムが実行されます。
ソースコードを書き換えてみる

Pythonはインタプリタ言語であるため、プログラムを実行するたびにソースコードを解釈し直す特性があります。これにより、柔軟かつ効果的にプログラムを開発・実行することが可能となります。
数値の計算

Pythonでは、数値の四則演算が簡単に行えます。以下に、基本的な数値計算の例を示します。
数値の計算

インタラクティブ モードでは、コマンドターミナルでPythonを起動し、コマンドラインで1行ずつコードを入力することができます。数値の計算も同様に行えます。
数値の計算

また、整数と浮動小数点数を足したり引いたりする場合、Pythonは自動的に浮動小数点数に変換して計算します。例えば、「2 + 1.5」という計算では、整数の2が自動的に浮動小数点数の2.0に変換されて計算されます。
数値の計算

Pythonでは、割り算の商だけを求めたい場合、「//」演算子を使用します。これにより、小数点以下を切り捨てて整数部分の商を得ることができます。
数値の計算

実数の割り算を行う場合は、「/」演算子を使用します。
数値の計算

べき乗演算を行うための「**」演算子もあります。例えば、「2**3」という計算は2の3乗を表し、結果として「8」が得られます。
数値の計算

また、「2**-3」という計算は2の-3乗を表し、逆数の計算をして「0.125」が得られます。
数値の計算

さらに、「(-2)**0.5」という計算は-2の0.5乗を表し虚数項を含んだ複素数が得られます。
数値の計算

この計算結果に見られる 8.659560562354934e-17 は、計算誤差によるものです。Pythonの浮動小数点数演算は、厳密な数値表現が難しいため、微小な誤差が生じることがあります。
数値の計算

ここでの e-17 は、10のマイナス17乗を表しています。つまり、非常に小さな値であることを示しています。この誤差は計算機が二進数で浮動小数点数を表現する都合上生じるもので、数学的な理想値と実際の計算結果が微妙に異なることがあります。
数値の計算

これは浮動小数点数の特性であり、計算機が十進法ではなく二進法で数値を表現するために生じるものです。通常、このような微小な誤差は考慮範囲内とされ、数値計算において許容される範囲です。
数値の計算

これらの演算子を活用することで、様々な数値計算をPythonで効率的に行うことができます。
3項以上の計算

Pythonでは、3項以上の計算も可能です。複雑な計算式を書く場合は、演算の優先順位に注意が必要です。たとえば、「2 + 3 * 4」という式を計算する場合、「3 * 4」が先に計算されてから、「2 + 12」が計算されます。結果として、「14」という値が得られます。
3項以上の計算

演算子には、優先順位を決める規則がありますが、括弧を使用することで、明示的に優先順位を指定することもできます。例えば、「(2 + 3) * 4」では、括弧内が先に計算されてから全体が掛け算されます。
3項以上の計算

このように、括弧を使用することで計算の順序を明確にし、意図した結果を得ることができます。複雑な式や優先順位のわからない場合は、括弧を使用して計算順序を明示的に指定すると良いでしょう。
3項以上の計算

同じ優先度の演算子が連続して使用される場合、Pythonでは左結合(左から右に結合)が行われます。これは多くのプログラミング言語で採用されている結合方向の一つです。
3項以上の計算

例えば、次のような計算を考えます。
3項以上の計算

この場合、掛け算と割り算の演算子の優先度は同じですが、左結合のため、左から順に計算されます。具体的には、まず「5 * 3」が計算されてからその結果を「2」で割ります。結果として 7.5 が得られます。
3項以上の計算

同様に、次の例では加算と減算が同じ優先度の演算子ですが、左結合により左から順に計算されます。
3項以上の計算

具体的には、まず「10 - 5」が計算されてからその結果に「3」が加算されます。結果として 8 が得られます。
3項以上の計算

左結合は一般的な動作であり、数学的な式の記述と一致しているため、多くの場面で直感的に使える結合方向です。
アラビア語便覧
اَلْكِتَابُ الْمَرْجِعِيُّ لِدَارِسِيْنَ اللُّغَةِ الْعَرَبِيَّةِ アラビア語(現代標準アラビア語、フスハー)を学習するための便覧。おもに初級文法を習得した人を対象とする。
C++/例外処理
例外処理

例外処理(Exception handling)とは、プログラムに異常が発生したときに、現在の処理を中断してエラーメッセージを表示する処理のことです。
例外処理

C++の例外処理のコードは、次のようになる。
例外処理

throwによって、強制的にcatchに制御が移動するため、throw後に書かれたコードは実行されない。
例外処理

throwによって、catchにエラーが送出される。tryからcatchへのエラーの送出は、変数データや文字列データなど1つのオブジェクトを値として渡す。上記のコードの例の場合では、数値「2」がtryからcatchへと渡される。 tryから渡されるデータの型と、catch()の丸カッコ内に記述されたデータの型が一致した場合、そのcatch文に記述された処理内容が実行される。 上記のコードの場合なら、tryから数値「2」が渡されたので、catch()の丸カッコ内には、int型が書かれている。
例外処理

tryブロック内にif文がなくても、throwさえあれば、catchブロックにエラーを送出できる。 if文のない場合、次のような文例になる。
実例

なお、さらにif文を実際の例外処理では使用するので、if文とtry,throw,catchの例外処理は、次のように組み合わされる事が多いだろう。
実例

なお、上記のコードでは、エラー時の挙動を確認するために、if文の条件を1にすることで、わざとエラーを起こしている。
実例

C++言語では、tryキーワードは、エラー判断を行わない。(他のプログラミング言語では、try構文がエラー判断を行うプログラミング言語もある。しかしC++言語では、tryキーワードはエラー判断を行わない。)
実例

そのためC++言語で、次のような割り算のプログラムで、0で割り算をすることになるようなエラーになる数値を代入しても、 コード中にthrowがないので、catchブロック内のコードは、なにも実行されない。
実例

読者は、上記のコードを実行してみて、数値入力を求められるので、0を入力してみよう。すると、catchブロック内にある「エラーが発生しました。」は表示されない。いっぽう、tryブロック内にある「計算が終わりました。」は表示され、計算が終わるとともにプログラムも終わる。
実例

今までの話をまとめると、例外処理の構文は、次のようになる。
Javaのfinally文に相当する処理

shared_ptrや一時的なオブジェクトのデストラクタを使ってJavaのfinally相当の機能を実現することができるので、構文を追加するまでもない。
Python/数値入力と文字入力と出力表示
Pythonで文字列の入力は、input() 関数を使用します。以下は、文字列を入力して表示する簡単な例です。
このコードでは、input() 関数を使ってユーザーに文字列の入力を求め、その結果を変数 user_input に格納しています。そして、print() 関数を使ってその入力を表示しています。
上記のコードを実行すると、プログラムはユーザーに対話的に文字列を尋ね、入力された文字列を表示します。
もしユーザーが Ctrl + D(UNIX系システム)または Ctrl + Z(Windows)を入力してEOFを発生させると、EOFError が発生します。
EOF(End of File)をハンドルするためには、try-except ブロックを使用して、EOFError をキャッチすることができます。以下はその例です。
このコードでは、try ブロック内で input() 関数を使ってユーザーに文字列の入力を求めています。もし EOFError が発生すると、それを except ブロックでキャッチして処理します。
これにより、ユーザーが入力を終了させたときにエラーが発生する代わりに、プログラムが graceful に終了します。
では、数値を入力させて、計算をさせたい場合、どうすればい良いのでしょうか?
文字列から整数への変換と計算を行うためには、int() 関数を使って文字列を整数に変換し、その後に計算を行います。以下はその例です。
このコードでは、まず input() 関数を使ってユーザーに整数の入力を求め、int() 関数でその文字列を整数に変換します。変換が成功すれば、計算と結果の表示を行います。もし "abc" のような整数以外の文字列が入力された場合は、ValueError が発生し、それを except ブロックでキャッチしてエラーメッセージを表示します。また、EOFが発生した場合も except EOFError ブロックで処理しています。
文字列から浮動小数点数への変換と計算を行うためには、float() 関数を使って文字列を浮動小数点数に変換し、その後に計算を行います。以下はその例です。
このコードでは、まず input() 関数を使ってユーザーに浮動小数点数の入力を求め、float() 関数でその文字列を浮動小数点数に変換します。変換が成功すれば、計算と結果の表示を行います。もし数値以外の文字列が入力された場合は、ValueError が発生し、それを except ブロックでキャッチしてエラーメッセージを表示します。また、EOFが発生した場合も except EOFError ブロックで処理しています。
Pythonでは、複数の変数や文字列を同時に表示するためには、print() 関数に複数の引数を渡すことができます。以下はその例です。
このコードでは、print() 関数に複数の引数を渡しています。各引数は,(カンマ)で区切られており、それぞれが表示される際にはスペースで区切られます。このようにして複数の変数や文字列を同時に表示することができます。
フォーマット済み文字列リテラル

Python には文字列の中に式を埋込み文字列化する「フォーマット済み文字列リテラル(Formatted string literals; F文字列とも)」があります。
フォーマット済み文字列リテラル

のように、fを引用符の前につける事で利用できます。 引用符は二重引用符でも一重引用符でも、どちらでも構いません(ただし、引用符の開始と終始における引用符の種類は一致している必要があります。)。 JavaScriptなどの「テンプレート・リテラル」に相当する機能です。
フォーマット済み文字列リテラル

F文字列は Pyhon3.6 から導入されました。Python2.x系では利用できません。
フォーマット済み文字列リテラル

場合によってはテンプレートリテラルを使いつつも '{' や '}' 自身を文字列中で使用したい場合があります。 その場合は、'{' は '{{'、'}' は '}}' と二重にします。
フォーマット済み文字列リテラル

式の後に等号'='を付けることで式のテキストと評価後の値の両方を文字列化することができます。
Pythonの文字列フーマッティングの歴史

最初に、文字列の % 演算子がありました。
Pythonの文字列フーマッティングの歴史

次に、文字列のformatメソッドができました。
Python/変数と代入
変数とは

Pythonにおける変数は、値に対して名前(または識別子)を付けたものです。変数を定義するには、単に変数名を使って値を代入します。以下は例です:
変数とは

この例では、my_variable という変数に整数の値 42 が代入されています。変数は値を格納するだけでなく、後でその値を変更することもできます。
変数とは

Pythonの変数には型がありません。つまり、変数自体には整数、文字列、リストなどの特定の型が割り当てられるのではなく、変数が保持する値がその型を持っています。これにより、同じ変数が異なる型の値になることが可能です。
変数とは

このように、同じ変数が異なる型の値に変わることを「動的型付け」と呼びます。変数が保持する値の型は、実行時に決定されます。
変数とは

変数を使うことで、データや計算結果を記憶し、再利用することができます。変数名は意味を持たせ、コードの可読性を向上させるために工夫されることが一般的です。
変数と参照

変数と参照について理解するためには、Pythonにおける変数の動作について知ることが重要です。
変数と参照

理解の鍵は、変数は値を持たず、値への参照を持つという点です。これにより、変数同士が同じオブジェクトを共有することができ、一方の変数を通じてオブジェクトが変更されると他方の変数にも変更が反映される可能性があります。
型

Pythonにはさまざまなデータ型が組み込まれています。以下は主なデータ型の一部です:
変数には型がなくオブジェクトに型がある

type()関数を使用すると、変数や値の型を取得できます。これを使って先程の例を確認してみましょう。
変数には型がなくオブジェクトに型がある

ここでtype()関数は、変数や値の型を返します。xは整数型 (int)、yは文字列型 (str)、zは浮動小数点数型 (float) です。
変数には型がなくオブジェクトに型がある

同じ変数に異なる型の値を代入する場合にも、type()を使用して型の変化を確認できます。
変数には型がなくオブジェクトに型がある

ここでzは最初にfloat型を持ち、後でstr型に変化しています。
代入

Pythonにおける代入は、左辺の識別子に右辺のオブジェクトをバインド(結びつけ)する操作です。これは、変数が特定の値やオブジェクトを参照する仕組みを表しています。
代入

例えば、以下のコードを考えましょう:
代入

この場合、xという識別子(変数)に整数型のオブジェクト 5 がバインドされています。このバインディングにより、xを通じて 5 にアクセスできます。
代入

また、代入によって同じオブジェクトが複数の識別子にバインドされることもあります。例えば:
代入

ここで、aとbは同じリストオブジェクトを参照しています。これは、リストなどの変更可能な(mutable)オブジェクトが変数を介して変更されると、その変更が他の変数にも反映されるためです。
代入

変数には意味のある名前を付けることは、コードの可読性を向上させ、保守性を高めます。意味のある名前を使うことで、コードを読んだりメンテナンスしたりする際に変数が表す内容や目的が明確になります。 例えば:
代入

これらの変数名は、それぞれの変数が何を表しているかをわかりやすく示しています。コードが複雑になると、意味のある名前が特に重要です。
代入

ただし、名前があまりにも長すぎたり複雑すぎたりすると、逆にコードの読みやすさを損なうことがあります。バランスを取りながら、適切な名前を選ぶことが重要です。
識別子とキーワード

識別子(Identifiers)は、Pythonで変数、関数、クラス、モジュールなどに付ける名前を指します。Pythonの識別子にはいくつかのルールがあります:
識別子とキーワード

以下は、識別子の例です:
識別子とキーワード

これらの例では、それぞれ変数、変数、関数に使用されている識別子です。適切で意味のある名前を使い、コードを読みやすくするために、識別子には十分な注意が払われるべきです。
識別子とキーワード

Python 3.0からはASCII範囲外の文字の一部も識別子に使用できるようになりました。これにはUnicode文字も含まれます。具体的には、以下の種類の文字が使えます:
識別子とキーワード

ただし、この拡張を使用する際には、表示や編集の問題、正規化に関する問題に注意する必要があります。通常、ASCIIの範囲内に収める方が適切ですが、国際化や特定の文脈で必要な場合にはこの機能を活用することができます。
識別子とキーワード

キーワード(Keywords)は、Pythonの構文規則の中に現れる特別なトークンで、識別子の様式に合致するにも関わらず、識別子には使用できない単語の集合です。 次に示すキーワードは識別子には使用できません。
識別子とキーワード

Python 3.10 からは "ソフト・キーワード"(Soft keywords) として知られる概念が導入されました。ソフト・キーワードは、通常のキーワードと同じく構文上特別な意味を持つが、一般の識別子としても利用できる単語です。Pythonでは、以下の単語がソフト・キーワードとして扱われます:
識別子とキーワード

これらの単語は、通常のキーワードとして特別な文脈で使われる場合にはキーワードとして解釈されますが、一般のコードの中で普通の識別子としても利用できます。これは、特にパターン・マッチング関連の新しい機能をサポートするために導入されました。
識別子とキーワード

予約済み識別子クラス(Reserved classes of identifiers)は、キーワードやソフト・キーワード以外の識別子で特別な意味を持つものです。 予約済み識別子クラスは、先頭と末尾のアンダースコア文字のパターンによって識別されます。
識別子とキーワード

アトムは、式の最も基本的な要素です。最も単純なアトムは、識別子またはリテラルです。括弧や大括弧、中括弧で囲まれた形式も、構文上はアトムに分類されます。
識別子とキーワード

アトムとして出現する識別子は名前です。
識別子とキーワード

名前がオブジェクトにバインドされている場合、アトムを評価するとそのオブジェクトが得られます。名前がバインドされていない場合、評価しようとすると NameError という例外が発生します。
識別子とキーワード

組込み関数(例えば print)や、組込み型(例えば int)はキーワードではありません。 キーワードではありませんが、迂闊に組込み関数や組込み型と同じ名前の変数や関数を定義すると、次から関数が使えなくなります。 回避方法はあります。
識別子とキーワード

回避方法はあるものの、読んだヒトが混乱するので組込み関数や型と重複した識別子は使わないように心がけましょう。
Python/リスト
リストと文字列

リストの要素は、文字列だけ、あるいは数値だけでも、かまいません。
リストと文字列

文字列だけのリストの場合、たとえば
リストと文字列

また、リストは数値と文字が下記のように混在することも、別々の項なら可能です。
リストと文字列

他のプログラミング言語だと、数値と文字列とが混在するデータ構造をつくるのにクラスを使わないといけない言語もありますが、しかしPythonではクラスを使わずとも、リストだけで数値との共存が可能です。
for文との組み合わせ

リストは、for文の対象となるコレクションとして使えます。
要素の追加

リストの要素に、あとから追加することもできます。
要素の追加

python のリストを希望の数だけ予め確保するには、myList = [0] * 100 の様に、初期値を持った配列に乗算演算子を作用し、所望の個数を指定した式の値を与えます。
要素の追加

勿論、律儀に要素を1つづつ追加する方法も有効です。
要素の削除

リストの要素を、あとから削除することもできます。次のコードのようにpop()を使うと、リスト末尾の要素を削除できます。
要素の削除

要素の末尾を削除したいリストのうしろに「.pop()」をつけ、ることで、要素の末尾を削除していけます。
要素の削除

なお、この.pop()のような、操作したい対象物のうしろにドット記号(.)と操作内容のキーワードをつける特別な関数のことをpythonでは、「メソッド」といいます。
要素の削除

myList.pop()をくりかえすと、さらに末尾から、削除していきます。
リストの要約

リスト( list )は、任意のオブジェクトをゼロ個以上、順次付けて保持できるコレクションです。
リストの要約

リストは、要素を ,(カンマ) で区切り全体を [ ] で囲みます。 要素の型は同じである必要はありません。
リストの要約

リストの各要素を、代入・置き換えすることもできます。
多次元リスト

リストの中にリストを入れることも出来ます。ただし、下記のように入れたリストの項目数が等しくなるようにする必要があります。
多次元リスト

リストの中にリストを入れたものを2次元リスト(または2重リスト)といい、
多次元リスト

リストの中にリストを入れたもののなかに、さらにリストを入れたものを3次元リストと言います。
map関数

組込み関数mapを使うと、iterableオブジェクトの全ての要素に、一括で何かの関数を適用する事ができます。
map関数

abs のような組込み関数だけでなく、ユーザー定義関数やlambdaもmap関数の第一引数にすることができます。
filter関数

組込み関数filterは、iterableオブジェクトの要素の中から、条件に適合するものだけを選び出して、新たなリストを作ります、
リスト内包表記を使った例

上記のmap関数とfilter関数の使用例はリスト内包表記をつかうと
リスト内包表記を使った例

と表現できます。 for式やif式、if-else式(条件演算子)はリスト内包表記と組合わせると関数呼出しを使わないでもイテレーションやケース分けができます。
リスト内包表記を使った例

絶対値を求める部分も、
リスト内包表記を使った例

とインラインで表現できます。
他のプログラミング言語との比較

他のプログラミング言語とPythonの類似点と差異をリストを中心に比較します。
他のプログラミング言語との比較

宣言と初期化の部分に注目し様々な差異がありましたが、要素の参照は、
他のプログラミング言語との比較

の構文で、この部分はどの言語でもほぼ同じですが、FortranとBASICでは、
他のプログラミング言語との比較

のように丸括弧になります。
他のプログラミング言語との比較

Pythonに「配列」というデータ型は存在しません。C言語などに、配列というデータ型があります。
他のプログラミング言語との比較

言語によっては、「配列」データ型と「リスト」データ型とが別個に存在するものもあります(たとえば Kotlin という言語には、配列(array)データ型と、リスト list データ型とが別々に存在します) なお、kotlin は現在では、Android スマートホンのアプリケーションプログラムの開発などで、よく使われる言語です。
他のプログラミング言語との比較

また、Goには「リスト」はなく「スライス」slice があります(Goのスライスの機能はPythonやkotlinの「リスト」と一見似ていますが、Goのスライスは「要素の型が一致している必要がある」ので本質的に「リスト」とは違い、異種リストの実装には interface{} を使います)。
他のプログラミング言語との比較

Goには、配列型と「スライス」slice の2つのデータ型がありよく混同されますが、スライスは要素のアクセスは線形時間 O(n)、配列の要素のアクセスは定数時間 O(1)であることが大きな違いです。
他のプログラミング言語との比較

リストや配列に類似した型は、要素の参照にかかる時間によって
Python/ファイルの書き込みと読み込み
ファイルへの書込み

ファイルを書くにも読むにも、まず、そのファイルを開く必要があります。 ファイルを開くには、組込み関数 open() を使います。 もしopen()をするときにその名前のファイルがなければ、ファイルを作成されます。
ファイルへの書込み

open()の2番目の引数にある「"w"」は、「書込みモード」という意味です。 open()の戻り値は f に保持されます(f の型は _io.TextIOWrapper クラスです)。
ファイルへの書込み

ファイルに書込むには open() の戻り値 f を組込み関数 print() のキーワード引数 file に与えます。 組込み関数 print() は今まで何度も出てきましたが、キーワード引数 file には何も指定していなかったのでディフォルトの sys.stdout (標準出力)が仮定されていました。
ファイルへの書込み

オープンしたファイルは必ずクローズする必要があります。 この例では、with文を使っているのでブロックを抜けると自動的にクローズされます。
ファイルへの書込み

カレントディレクトリを見ると、「create.txt」という名のファイルが作成されており、開くと「hello」と書かれているはずです。
ファイルからの読込み

ここでは組込み関数 open() の第二引数『モード』を与えていませんので、ディフォルトのモード "r"(読込み)になります。 open() の戻り値 f をレシーバーにメソッド readline() を呼び出すと、ファイルから1行ずつ読み込むことができます。
ファイルからの読込み

上の例では、ファイルから一行だけ読み込み表示していましたが、全ての行を表示するには
ファイルからの読込み

のように for文 を使います。 print() 関数のキーワード引数 end に を渡しているのは s には改行が含まれているため、 print() のディフォルトの動作「改行を追加する」をキャンセルするためです。
Python/例外処理
例外処理(れいがいしょり、exception handling)とは、プログラム実行中に予期せぬ異常が発生した場合に、通常の実行フローを中断し、エラーメッセージの表示や適切な処理を行うプログラムの手法です。
raise

raise文は、プログラムの実行中に発生したエラーや問題を示し、その場で例外を引き起こします。例えば、条件に合致しない場合や予期せぬ状況であれば、raise文を使って例外を発生させることができます。
raise

後述のtry/except ブロックなしで raise を実行すると、エラーが現在のコンテキストから伝播し、エラーが発生したポイントからコードの実行が停止されます。これにより、通常の実行フローが中断され、エラーがコンソールに表示されたり、上位の呼び出し元でエラーがキャッチされるまで、エラーが伝播します。
try節とexcept節

tryとexceptは、Pythonにおける例外処理を行うための構文です。tryブロック内のコードを実行し、もし例外が発生した場合に備えてそれをキャッチするためのものです。
try節とexcept節

基本的な構文は以下のようになります。
try節とexcept節

例外が発生する可能性があるコードをtryブロックに記述し、もし例外が発生した場合、その種類に応じたexceptブロックが実行されます。exceptブロックでは例外の種類を指定し、その例外が発生した際に実行するコードを記述します。
try節とexcept節

例えば:
try節とexcept節

この例では、ゼロ除算の例外が発生する可能性があるため、tryブロックで計算を行っています。もしゼロ除算のエラーが発生すれば、exceptブロックが実行され、エラーメッセージが表示されます。
else節とfinally節

Pythonの例外処理には、tryやexceptに加えてelse節とfinally節もあります。else節は、tryブロック内で例外が発生しなかった場合に実行される部分です。
else節とfinally節

基本的な構文は次のようになります:
else節とfinally節

else節は、tryブロック内で例外が発生せず、正常に処理が完了した場合に実行されます。例外が発生した場合はexceptブロックが実行され、例外が発生しなかった場合はelseブロックが実行されるという流れです。
else節とfinally節

例えば:
else節とfinally節

この例では、tryブロック内でゼロ除算が行われていないため、exceptブロックは実行されず、代わりにelseブロックが実行され、計算結果が表示されます。最後にfinallyブロックが実行され、"処理が完了しました"というメッセージが表示されます。
例外の場合わけ

Pythonにおける例外の場合分けは、tryとexceptを使用して行います。exceptブロックは、特定の例外が発生した場合にそれをキャッチして処理するために使用されます。また、exceptブロックは複数指定することもできます。
例外の場合わけ

例えば:
例外の場合わけ

上記の例では、tryブロック内でゼロ除算が行われています。しかし、ZeroDivisionError以外のエラーが発生する可能性もあるため、複数のexceptブロックで異なる例外をキャッチするようにしています。exceptブロックの最後にExceptionを指定することで、すべての予期せぬ例外をキャッチすることができます。
例外の場合わけ

また、exceptブロックで例外をキャッチするだけでなく、例外の情報を取得したり、適切な処理を行ったりすることもできます。
例外の場合わけ

この例では、ユーザーから整数の入力を受け取り、その入力に応じて計算を行います。ValueErrorやZeroDivisionErrorなどの特定の例外に応じてメッセージを表示し、それぞれの状況に適した対処を行っています。elseブロックは例外が発生しなかった場合に実行され、finallyブロックは最後に必ず実行されます。
組込み例外一覧

__builtins__ の要素のうち BaseExceptionのサブクラスを例外とし、例外と例外の __doc__ を表にしました。
組込み例外一覧

このコードは、Pythonの__builtins__モジュール内の組み込み例外クラスを取得しています。具体的には、BaseExceptionクラスを継承している例外クラスを収集してリストに追加しています。
組込み例外一覧

以下、このコードの動作を詳しく説明します。
組込み例外一覧

つまり、このコードは組み込みの例外クラスを調べ、BaseExceptionクラスを継承しているものをリストexに追加するものです。例外ハンドリングや特定の例外クラスに対する処理を行う際に、組み込みの例外クラスを動的に取得する際に役立ちます。
Python/モジュールのインポート
モジュール化(modularization / modularize)は、全体をいくつかの構成単位に分割し、問題の規模と質を低減する分割統治法(divide-and-conquer method)の一つです。 Pythonでは、パッケージ(package)とモジュール(module)がモジュール化の実現に用いられます。 このうち、パッケージはモジュールの構造的な整理手段と考えられ、まずモジュールの用途・用法について解説し、モジュールをユーザーが定義する具体的な例も示します。
モジュールmath

平方根などの数学に関する関数を使用したい場合は、モジュールmathをインポートします。
モジュールmath

また、インポートされた関数をつかうときは、どのモジュールに由来する関数かを、pythonが判断できるようにするために、「math.sqrt()」のように、関数の前にモジュール名を書きます。 「.」はドット記号です。つまり、「モジュール名.関数名」のような書式になります。
モジュールmath

モジュールmathでは、三角関数や指数関数なども、使えます。三角関数の単位は、ラジアンです。
モジュールrandom

サイコロの目のような、乱数をつかうには、モジュールrandomをインポートします。
ローカル名前空間へのインポート

たとえばモジュールmathから、sqrtだけをローカル名前空間へインポートしたい場合、コードが次のようになります。
ユーザー定義モジュール

ここまでは、標準ライブラリーのモジュールを紹介してきましたが、モジュールはユーザー自身で定義することもできます。
ユーザー定義モジュール

ここでは、与えられた数が素数か否かを判定するモジュール isprime を作ってみましょう。
Python/関数
初歩的な内容

関数は、プログラミングにおいて再利用可能なコードのブロックです。特定のタスクや処理を実行するために設計されています。関数は、特定の入力(引数)を受け取り、それを処理し、結果を出力(戻り値)として返すことができます。
初歩的な内容

関数の主な利点は次の通りです:
初歩的な内容

プログラミング言語によって関数の使い方や書き方は異なりますが、基本的な構造は似ています。関数は通常、次のような形式で定義されます:
初歩的な内容

例えば、Pythonでの関数定義はこのようになります。
初歩的な内容

この例では、add_numbersという関数が定義されており、aとbという2つの引数を受け取ります。これらの引数を使ってsumを計算し、その結果をreturn文で返します。
初歩的な内容

関数はその他にも多くの機能を持ち、異なる言語においても様々な特性を持っています。
初歩的な内容

(実行結果↓)
初歩的な内容

ある処理を繰返し行いたい場合、関数をつかうことで、記述をへらせます。 関数に作業させる際、関数外で定義された値を、上記のように利用する事ができ、そのような変数を「引数」(ひきすう)といいます。
初歩的な内容

上記のコードのうち、関数の定義部分は、
初歩的な内容

↑ この範囲が、関数の定義部分です。
初歩的な内容

引数のある関数の定義の書式は、
初歩的な内容

というふうになります。
初歩的な内容

「引数」は「ひきすう」と読みます。
初歩的な内容

下記のように、呼び出し時に引数の値を「menseki(3,5)」のように指定することもできます。
やや難しい内容

このようにpythonでは、関数内で数を置きかえる動作は、原則として、関数外の動作に影響を与えません。
組込み関数id

組込み関数idを使うとオブジェクトのidを得ることができます。 2つの変数同士のidが同じ場合、2つの変数は同じオブジェクトにバインドされています。 大概の型のオブジェクトのidはメモリー上のアドレスですが、整数のようにそうではない型も少数ながらあります。
組込み関数id

関数の戻り値(return value;返り値・返却値とも)は、return 文で返します。
組込み関数id

return文があると、その行で関数が終了します。
組込み関数id

関数の仮引数には名前(識別子)がありますが、仮引数を明示して関数の実引数を渡し呼出すことができます。 このような識別子を明示して呼びされた実引数をキーワード引数と言います。
組込み関数id

関数の引数には、既定値(ディフォルト)を設けることができます。
組込み関数id

関数の引数は可変長にできます。
組込み関数id

関数の定義で固定された引数とともに、可変長引数を持つことができます。 ここで、残余引数は、可変長引数の後ろに定義される一連の引数です。 残余引数のために、アスタリスク(*)を使用します。
組込み関数id

これで、my_func()関数は少なくともaとbの2つの引数を取り、残りの引数を可変長引数として扱います。
組込み関数id

Pythonには、厳密な意味での多値返却はありませんが、タプルやリストを返すことで多値返しに近いことができます。
組込み関数id

「多値返却風な処理」や「多値返しに近いこと」と歯切れが悪いのは、型アノテーションを
組込み関数id

としたいのですが、
組込み関数id

としなければならず、タプルを返していることを明確に意識する必要があるからです。
組込み関数id

デコレーター(decorator)は、関数の内容を書き換えずに修飾するための仕組みです。 関数の引数に関数を指定します。既存の関数の前に@{デコレーター名}を付けることで、その関数を修飾することができます。
組込み関数id

デコレターの文法は、以下のような糖衣構文です。
組込み関数id

ローカル変数や仮引数にグローバル変数がシャドーイングされた場合、 関数の中でも、
組込み関数id

と変数宣言することにより、その変数をグローバル変数として取り扱えます。
組込み関数id

C言語には、このような機能(関数内で変数をグローバル宣言する機能)は、ありません。 C++では、グローバル変数の参照に :: を前置することでシャドーイングを回避できます。
組込み関数id

nonlocal文は、内包関数から、自分を呼び出した関数のローカル変数にアクセスする仕組みです。 global文と違い、新たな変数を作ることはできません。
組込み関数id

クロージャ(関数クロージャ)は、外側の変数を格納する関数です。
組込み関数id

この絵柄に見覚えがある人もいると思います。デコレーターの引数(デコレート対象の関数)はラッパー関数は格納した変数です。
C++/初心者むけ/クラス
クラスとインスタンス

クラス( Classes )は、オブジェクト指向ブログラミング言語の分類の一つ「クラスベースのオブジェクト指向ブログラミング言語」の主要な概念の1つです。 C++もクラスベースのオブジェクト指向ブログラミング言語の1つです。
クラスとインスタンス

クラスは、データーやデーターへの参照変更を含む操作をまとめる手段です。 新しいクラスを定義することは、新しい型を定義することを意味し、その型を使って、インスタンスを作成することができるようになります。 各クラスのインスタンスには、その状態を維持するためのデーター メンバーを持つことができます。 また、クラスには、そのクラスに属するインスタンスの(あるいはクラスそのものの)状態を参照および変更するためのメンバー関数を持つことができます。
クラスとインスタンス

コンストラクターは、クラスをインスタンス化するための特別なメンバー関数で、クラス名が関数名になります。
クラスとインスタンス

一様初期化は、配列の初期化をよりスマートにかけます。
クラスとインスタンス

クラスにはインスタンスの持つメンバーとして関数も持つことができます。この関数のメンバーのことをメンバー関数と言います。 メンバー関数を定義するには、関数を定義したようにクラス定義中に定義します。する方法とクラス定義中ではメンバー関数の宣言だけ行い、クラス定義の外で実装する方法があります。
クラスとインスタンス

カプセル化の結果、クラスのデーターメンバーへのアクセスが制限されましたが、様々な事情でデーターメンバーを参照あるいは変更する必要が出てきます。 このような時のために、セッター・ゲッターあるいはアクセサーと呼ばれるメンバー関数セットを用意しておくことが多く行われます。
クラスとインスタンス

アクセサーが返す値・設定する値が必ずしもデーターメンバーと対応している必要はありません。
クラスとインスタンス

[TODO:コピーコンストラクター・代入演算子のオーバーロード]
オブジェクトと名前空間

C++では、coutやcinなどのオブジェクトも、名前空間で分類されています。
オブジェクトと名前空間

たとえばオブジェクトcoutは、正式にはstd::coutというオブジェクトです。つまり、coutはstd名前空間に所属しています。 『C++/はじめに』では説明を省略していました。 using namespace std; とは、「名前空間が省略された場合、グローバル名前空間に識別子がなかったら std 名前空間の中から識別子を探す」という意味の宣言だったのです。
オブジェクトと名前空間

stdとは、標準ライブラリ(standard library)を意味する略語です。
オブジェクトと名前空間

cinも同様に、std::cinというオブジェクトです。つまり、cinはstd名前空間に所属しています。
オブジェクトと名前空間

スコープ演算子::をつかうことから分かるように、std名前空間に含まれるオブジェクトとして、coutやcinを扱っています。
オブジェクトと名前空間

書式は、
オブジェクトと名前空間

です。
オブジェクトと名前空間

プログラミング言語に用意されている 標準ライブラリのオブジェクトは、膨大にあるので、名前空間によって分類する必要があり、使用時には本来、その名前空間名をつける必要があるのです。 なぜなら、そうしないと、もし、自分で新しく関数を定義しようと思ったときに、名前につけようと思ってた識別子が、すでに標準ライブラリで使われている可能性があるからです。
オブジェクトと名前空間

このような工夫を、(使いたい名前が既に他の用途で使われてしまっているような事態をふせぐための工夫を)「名前の衝突をふせぐ」などと、言います。
オブジェクトと名前空間

名前空間は、ユーザープログラムからも定義できます。
オブジェクトと名前空間

名前空間は、入れ子に出来ます。
オブジェクトと名前空間

C++14 から、入れ子名前空間の簡略表記が使えるようになりました。
継承

既存のクラスをベースに新しいクラスを作成することをクラス継承( class inheritance )といいます。
継承

組合せ的にプロテクテッド継承もありますが、派生クラスの定義での基底クラスのアクセス修飾子は「派生クラスのインスタンス経由でアクセスできるか?」の違いなのでプライベート継承との違いはありません。
継承

また、継承先の派生クラスで望ましくないアクセスやオーバーライドが行われないことを「期待」するのではなく、final でクラスかメンバーを保護する「防衛的」な実装が望まれます。
継承

C++の継承では、複数のクラスを基底クラスとし派生クラスは作成することが可能です。
継承

複数のクラスからの継承を多重継承といいます。
継承

多重継承は、多重継承でないと実現できない命題が想定しにくい上に、2つの継承元に同じ名前のメンバーがあった場合(衝突があった場合)の解消法方法に一般則がないこと、さらに継承元の2つのクラスが共通するクラスから派生していた場合の問題(ダイヤモンド継承問題)など、多くの問題が多重継承にはあるので、「多重継承が設計上の最適な選択か?」を自問してから使うようにしましょう。
実装例

C++に、「Go/メソッドとインターフェース」の「都市間の大圏距離を求めるメソッドを追加した例」を移植してみました。
C++/構造体・共用体
構造体はクラスの一種

C++の構造体(struct)は、メンバーがディフォルトのアクセス指定子が public な class です。 class のディフォルトのアクセス指定子は private です。 class と struct の違いはこれだけです。
共用体もクラスの一種

C++の共用体(union)は、基本的にC言語の共用体と同じです。 ただし、C++では構造体がほぼクラスのように扱われるようになったので、ほとんどの共用体もクラスとして扱われます。 つまり、アクセス制限を指定したり、メンバー関数を持つことができるのです。 一方で、当然ながら、共用体には固有の制限があります。
共用体もクラスの一種

C++の共用体は以下の制限を持ちます。
有機化学/有機化学とは
有機化学の基本知識

有機化学とは、有機化合物を取り扱う、化学の一分野である。 有機化合物とは、炭素Cを含む化合物のうち、炭素の単体・炭素の酸化物・炭酸塩などを除く化合物のことである。 有機化合物は主に炭素C、水素H、酸素O、窒素N、ハロゲンなどの元素から成り立っている。 有機化合物のほとんどは分子として存在し、融点や沸点が低い。
有機化学の基本知識

有機化合物は、炭素原子の共有結合を主な骨格としている。 炭素は4本の価標をもつので、単結合・二重結合・三重結合を作る。 炭素原子間に単結合のみを持つ有機化合物を飽和化合物、二重結合や三重結合を含む化合物を不飽和化合物という。
有機化学の基本知識

一方、有機化合物は炭素原子が輪を作る環式化合物と輪を作らない鎖式化合物(脂肪族化合物)とに分類することも出来る。 環式化合物はさらにベンゼン環を含む芳香族化合物と脂環式化合物に分類出来る。
有機化学の基本知識

まとめると次のようになる。
有機化学の基本知識

官能基とは、有機化合物のおおよその特徴を決める原子団であり、同じ官能基を持つ化合物は特徴が似通っている。 炭化水素基は炭素と水素のみで構成される基である。 有機化合物を化学式で表す場合、炭酸水素基と官能基を合わせた示性式で表す。
有機化学の基本知識

官能基や炭化水素基をまとめてみた。有機化学_基 (2005-05-31)
森林法第202条
法学>コンメンタール>コンメンタール森林法
条文

(罰則)
C言語/開発環境
環境構築

環境構築はプログラミング学習で最大の難関です。 環境構築がうまくいかず、プログラムを書き始める前に諦めてしまうことも少なくありません。
環境構築

現在はオンライン実行環境 (Playground)が提供されており、環境構築をせずにC言語を試せるようになりました。 これらはインストールが必要なく、OSに関わらず利用できるため、PCはもちろんスマートフォンやタブレットでもC言語を学べます。 本格的なプログラムを書くには機能不足ですが、C言語の文法や意味を学ぶには十分でしょう。
環境構築

この項目では、簡易的なオンライン実行環境や簡易コンパイラのほか、加えて本格的なコンパイラとビルドツールを使った開発手法や統合開発環境についても概説します。
オンライン実行環境

オンライン実行環境は、Webブラウザを介してアクセスし、プログラムの作成や実行が可能な環境です。通常、プログラミング言語やコードエディタが組み込まれており、ユーザーはブラウザ上でコードを書いて実行できます。
オンライン実行環境

オンライン実行環境の利点はいくつかあります:
オンライン実行環境

一部のオンライン実行環境では、コンパイラやランタイム環境が実際の開発環境と同じであることが保証されています。そのため、ローカル環境での実行と同じ結果が得られることが期待されます。
オンライン実行環境

オンライン実行環境には、さまざまなものがあります。以下にいくつか代表的な例を挙げます:
開発手順

C言語プログラムの開発は、以下の手順で行われる。
開発手順

なおC++の場合、ソースファイルの拡張子が「.cc」「 .cpp」「 .cxx」あるいは「 .C」となる。
開発環境を整える

C言語での開発には、主に以下の要素が必要です。
開発環境を整える

これらの要素を組み合わせて、効率的なC言語の開発環境を構築することができます。
開発環境を整える

Visual Studio Community をインストールする手順は以下の通りです。
開発環境を整える

これで Visual Studio Community のインストール手順が完了しました。必要に応じて、追加の拡張機能やパッケージをインストールして、開発環境をカスタマイズすることもできます。
開発環境を整える

Visual Studio Community を効果的に利用するためには、これらの手順を熟知しておくことが重要です。開発環境の設定や使い方をマスターし、効率的なプログラミング作業を行いましょう。
開発環境を整える

Visual Studio Community を使用する際に、デバッグ セッションの終了時にコンソールが自動的に閉じてしまう場合があります。この問題を解決するためには、次の手順を行います。
開発環境を整える

これにより、デバッグ セッションの終了時にコンソールが自動的に閉じなくなります。これは、プログラムがエラーで終了した場合などにデバッグ情報を確認するために便利です。
開発環境を整える

Visual Studio Community を使用する際には、この設定を適切に行うことで、よりスムーズな開発作業が行えるようになります。
基本的なビルド手順

C言語でのプログラムのビルド手順は、一般的に以下のような流れになります。
基本的なビルド手順

これらの手順を順番に実行することで、C言語で作成したプログラムをビルドして実行することができます。 また、ビルド手順を自動化するために、ビルドツール(例: make)を使用することもあります。
コンパイラごとの特徴

異なるコンパイラには、それぞれ独自の特徴があります。
コンパイラごとの特徴

以下に、いくつかの主要なコンパイラの特徴を示します。
コンパイラごとの特徴

これらのコンパイラはそれぞれ異なる使用シナリオや特性を持ち、開発者はプロジェクトの要件や目標に応じて適切なコンパイラを選択することが重要です。
コンパイラごとの特徴

ChatGPT