hpprc/jawiki-books huggingface dataset:
Fortran/エラーの捕捉

Typically in an error situation, your program will stop, and you'll get an error message. The only exception to this is that at the end of read and write statements' parenthesized control list, you can add, err=label to determine which line to jump to in the event of an error.
Modern Fortran (from Fortran 90 onwards) has introduced four main areas for error capture:
1) File handling and i/o operation error handling
2) IEEE floating point error detection and reporting
3) Dynamic allocation
4) Command line operations
All the external file handling statements and I/O operations (open, read, write, close, inquire, backspace, endfile, flush, rewind and wait) can now take optional iostat and iomsg clauses. iostat is an integer which returns a non-zero value if there is an error, in which case, the character variable assigned to iomsg will return a brief error message. The non-zero integers and the messages are compiler dependent but the intrinsic module, iso_fortran_env, gives access to two important values: iostat_end and iostat_eor. If an error occurs, and iostat is non-zero, execution will not stop. The ERR clause is still supported but should not be used.
Note that the length required for the message character is vendor and error dependent.
This is a big topic, but in essence modern Fortran provides access to three intrinsic modules: IEEE_arithmetic, IEEE_exceptions and IEEE_features. These features can be used to intercept errors such as divide by zero and overflow but at the expense of some performance.
The IEEE_features module controls access to the features the programmer may require, by use association in the scoping unit where the programmer places the use statement,
See Chapter 11 in Metcalf et al, Modern Fortran Explained, OUP. All the necessary basic facilities exist in order for the programmer to construct a try/catch system if desired.
Modern Fortran allows run-time allocation and deallocation of arrays of any type, and a typical error might be to try to dynamically allocate an array so large that there is not enough memory, or an attempt to deallocate an array which is not already allocated. There are optional clauses stat and errmsg which can be used to prevent program failure and allow the programmer to take evasive action.
These features are available in the equivalent coarray features.
Modern Fortran also supports error detection for the execution of command line operations,
In this example, the programmer of the my.exe program has the responsibility for what codes are returned and what error messages are exposed, except that -1 and -2 are reserved for allowing the compiler vendor indicating what features may be supported.
Fortran/並列処理

Parallelism is included in the Fortran 2008 standard. To use parallel features, a Fortran program must be compiled with parallelism enabled. For example, the Intel ifort compiler uses the flag -coarray.
Fortran uses a Partitioned Global Address Space (PGAS) model for parallelism. For each processor, the program is executed as a separate duplicate "image" of the program, each with their own separate memory partition. Consider the following program:
The intrinsic function this_image returns the number of the image that is being executed, and the intrinsic function num_images returns the total number of images for the program. If the program is compiled and executed with 4 processors, the output might look something like this:
Note that the images are executed asynchronously and so the output may not appear in the order 1, 2, 3 then 4.
Coarrays are a way of communicating data in arrays across images. A coarray is just like a normal array but it has extra codimensions for each image. Codimensions can be declared and indexed using the square brackets []. For example to declare a rank 1 coarray with size of 10 and a codimension of size 4:
Scalar variables can also be coarrays:
Here, * denotes the maximum number of available processors. The codimensions can have multiple axes just like normal dimensions, however, there is a limit of rank 15 for codimensions. Transferring data between images is as simple as indexing on the codimensions.
Fortran/オブジェクト指向プログラミング

Data can be gathered in modules. The general form is given by
There are three possible access properties: public, private, protected.
One can include the module's public data in outside code. There are three ways.
Modules can be extended using submodules. Multiple advantages arise
In Fortran one can derive structures off of other structures, so called derived data types. The derived types will have the features of the parent type as well as the newly added ones and the general syntax is given by:
The following example shows different types of people within a company.
One can define procedures which will be invoked before the object is automatically deleted (out of scope). This is done with the statement final. The following example illustrates it
One can set the base type as abstract such that one cannot initialize objects of that type but one can derive sub-types of it (via extends). Specific procedures which should be defined in the sub-type need the property deferred as well as an explicit interface.
The following example illustrates their use.
One can create pointers to child classes by using type definitions in allocate statements and the select type environment. The following example highlights its use.
Fortran/言語の拡張とオーバーロード

Like several other languages, Fortran 90 and newer supports the ability to select the appropriate routine from a list of routines based on the arguments passed. This selection is done at compile time and is thus unencumbered by run-time performance penalties. This feature is accessed by use of modules and the interface block.
In the following example, a module is specified which contains an interface function f which can handle arguments of various types.
A program which uses this module now has access to a single interface function f which accepts arguments that are of integer, real, or complex type. The return type of the function is the same as the input type. In this way the routine is much like many of the intrinsic functions defined as part of the Fortran standard. An example program is given below:
One can extend intrinsic functions. This is similar to overload operators.
Here we will demonstrate this by extending the sqrt function. The intrinsic function is not implemented for arguments of integer type. This is because there is no clear idea how to define the result of non integer type (e.g. 4 = 2 {\displaystyle {\sqrt {4}}=2} , but how to define 5 = 2.236 ... {\displaystyle {\sqrt {5}}=2.236\ldots } ). We implement a method here where the result is always the nearest integer.
Fortran 90 and newer supports the creation of new data types which are composites of existing types. In some ways this is similar to an array, but the components need not be all of the same type and they are referenced by name, not index. Such data types must be declared before variables of that type, and the declaration must be in scope to be used. An example of a simple 2d vector type is given below.
Variables of this type can be declared much like any other variable, including variable characteristics such are pointer or dimension.
Using derived data types, the Fortran language can be extended to represent more diverse types of data than those represented by the primitive types.
Operators can be overloaded so that derived data types support the standard operations, opening the possibility of extending the Fortran language to have new types which behave nearly like the native types.
The assignment operator = can be overloaded. We will demonstrate this by the following example. Here, we define how the assignment of a logical type on the left and an integer on the right should be performed.
One can overload intrinsic operators, such as +,-,*.
In the following example we will overload the * operator to work as the logical .and..
One can create newly self-created operators.
We demonstrate this by the following example: We create an unary operator .even. <int> which outputs a logical if the given integer is even as well as a binary operator <reals> .cross. <reals> that performs the standard cross product of two real vectors.
Fortran/言語の混合

Fortran types map quite well to intrinsic types in other compiled languages. The following is a table of Fortran-to-C types:
The layout of Fortran arrays in memory contrasts with arrays in C and many C-based languages. When iterating over contiguous array elements in C, the rightmost array subscript varies the fastest, while in Fortran, the leftmost array subscript varies the fastest. Hence the element following x(1,1) in contiguous memory is x(2,1), not x(1,2). Furthermore, the element sub-scripting in C starts at 0, while Fortran starts at 1 by default. An element in Fortran may be x(1), while the equivalent value in C code would be x[0]. However, when passing a Fortran array to a C function, you do not need to (and should not) reshape the array into C-style subscripts first; the compiler will automatically do this for you.
See the Common Blocks section.
Many languages push their arguments onto the stack, some as constants and some as addresses. In most compilers, Fortran will compile a block of pointers to variables and constants, and push the address of that block. So, if we had a Fortran procedure defined as follows:
then the C definition would be:
The C code could call the routine as follows:
In PL/1, you can define an external common block, subroutine, or procedure to be of type FORTRAN. When you do this, everything, down to subscript order, will be handled for you. Likewise, you can define a PL/1 item, such as a subroutine, to be of type FORTRAN, and it will then be callable by Fortran using Fortran's calling conventions.
JavaFX

JavaFXは、Javaプラットフォーム向けのユーザーインターフェース(UI)およびグラフィカルユーザーインターフェース(GUI)ライブラリおよびソフトウェアフレームワークです。JavaFXは、豊富なビジュアルエクスペリエンスを提供し、デスクトップ、モバイル、および組み込みデバイス向けのアプリケーションを開発するために使用されます。
JavaFXは、Javaの標準ライブラリの一部として提供されており、Java Development Kit(JDK)に含まれています。JavaFXは、豊富なグラフィックス、アニメーション、メディア再生機能、および豊富なUIコントロールを提供し、開発者が魅力的で使いやすいアプリケーションを構築できるように支援します。
JavaFXは、Java言語で開発されており、FXMLというXMLベースの言語を使用してUIを記述することができます。また、CSS(Cascading Style Sheets)を使用してスタイルを定義することも可能です。
JavaFXは、Java Swingと比較してより現代的なアプローチを取っており、リッチなUIや洗練されたグラフィックスを実現するための機能を提供しています。
JavaFXは、JavaでGUIアプリケーションを開発するためのツールキットです。JavaFXを使用すると、豊富なUIコントロール、グラフィックス、レイアウト、CSSスタイルシートなどを使用して、美しい、インタラクティブなデスクトップアプリケーションを作成できます。
JavaFXアプリケーションは、JavaFX Scene Graphと呼ばれるグラフィカルなオブジェクトツリーで構築されます。このScene Graphを構築するには、FXMLというXMLベースのマークアップ言語を使用することもできます。FXMLを使用すると、GUIのレイアウトとデザインを分離し、デザイナーとプログラマーが分業できます。
JavaFXには、JavaFXアプリケーションを構築するための豊富なAPIが用意されています。これには、UIコントロール(ラベル、ボタン、テキストボックスなど)、レイアウトマネージャー、アニメーション、トランジション、CSSスタイルシートなどが含まれます。また、FXMLを使用して、JavaコントローラクラスにUIコントロールをバインドし、ユーザーのアクションに応答するコードを記述できます。
JavaFXは、Java SE Development Kit(JDK)の一部であり、JavaFXを使用するためにはJDKをインストールする必要があります。また、JavaFXの最新バージョンは、OpenJFXプロジェクトとしてオープンソースで開発されており、多くのIDEがJavaFXプロジェクトをサポートしています。
FXMLとは、JavaFXのUIを宣言的に記述するXMLベースのマークアップ言語です。 FXMLを使用することで、JavaFXのUIをより簡単に作成できます。
以下は、FXMLの例です。
FXMLでは、UI要素を定義するためにXMLタグを使用し、その属性を使用してUI要素の属性を設定します。 FXMLファイルの最上位の要素はルート要素であり、この場合はStackPaneです。 StackPane要素のchildrenタグ内に、Text要素があり、そのtext属性にはテキストコンテンツが設定されます。
FXMLファイルは、JavaFXのアプリケーションクラスからロードされます。例えば、FXMLLoaderクラスを使用してロードできます。 以下は、FXMLを使用してJavaFXアプリケーションを初期化するためのコードの例です。
FXMLを使用する場合、start()メソッド内でFXMLファイルをロードする必要があります。 FXMLLoaderクラスを使用して、FXMLファイルを読み込み、FXMLのルート要素を取得します。 これをJavaFXのSceneに追加し、Stageに表示することができます。
JavaFXはCSSを使用して外観をスタイリングできます。CSSを使用すると、ボタン、ラベル、テキストフィールドなど、JavaFXの多くのUIコントロールの外観をカスタマイズできます。
以下は、AWT、Swing、およびJavaFXの特徴を比較する表です。
FXMLは機能的には優れているのですが、XMLに基づいているので記述性と可読性に難があります。 このため、いくつかの代替技術が開発されています。
以下はいくつかの代替技術の例です。
これらの代替技術は、FXMLを回避したり、UIの構築をよりプログラマブルにしたりするために使用することができます。KotlinやGroovyの柔軟性を活かしたUI開発を行いたい場合には、これらの代替技術が有用です。
Java/レコード

Java16でrecord型追加された。レコードという名前のとおり、インスタンス作成時の一度しか書き換えをしない記録を書くためのものである。
クラスを用いても同じ動作のものを作れるが、レコード型を使うことによりコード量が短くなるし、意図も明確になる等、利点がある。
は、次の標準クラスと同等です
インスタンスの作成の際には上記コードのようにfinal var aのようにfinal修飾子をつけなくても、record型のインスタンスを作成する際は自動的にそのインスタンスがfinal になり、書き換え不能になる。
なお、final var a = new Person("Tom", 13);のようにfinal をつけてインスタンスを作成しても、正常に動く(結果は上記と同じ)。
中学校高等学校保健体育実技編/サッカー

18世紀中頃になると、フットボールは学校の校庭で行われるようになりました。その後、フットボールは制限時間内に得点を取り合うスポーツに変わりました。しかし、この時のルールはそれぞれの学校で違っていました。1863年、イングランドでフットボール協会が生まれました。フットボール協会は、足を使ってボールを運ぶように統一ルールを決めました。この統一ルールで対外試合を行えるようになりました(サッカー)。サッカー(フットボール)は統一ルールで行われています。統一ルールがわかりやすく、競技も面白いので、サッカーはすぐに世界中へ広まりました。
※下記、2冊を読み比べて執筆しました。
中学校保健体育/性感染症の予防

どうしたら性感染症を予防出来ますか?
性感染症
※性感染症はどんな病気ですか。
性感染症は、性的接触から感染します。感染者の精子・腟分泌液・血液中の病原体・性器や口の粘膜などが相手の粘膜や皮膚に触れると感染します。例えば、性器クラミジア感染症・淋菌感染症・性器ヘルペスウイルス感染症・梅毒などがあります。このうち、梅毒は梅毒トレポネーマ(病原体)から感染します。梅毒の症状は進行段階で変わります。発熱・発疹など、違う病気の症状と見分けにくくなります。症状自体が現れたり消えたりを繰り返したりするので、感染を広げやすくなります。近年、梅毒の感染者が大きく増えています。性感染症は、無症状だったり、自覚症状をほとんど感じなかったりします。例えば、性器ヘルペスウイルス感染者の70~80%は無症状です。本人が性感染症に気づかないため、性的接触で相手に感染を広げるかもしれません。10代で性感染症にかかる人もいるので、青少年の感染が社会問題になっています。
梅毒の治療薬(サルバルサン)は、秦佐八郎とドイツのパウル・エールリヒが一緒になって作りました。
★主な性感染症
★性感染症報告数(2021年調査)
上の表は厚生労働省「性感染症報告数」の統計資料から抜粋しています。
※どうすれば性感染症を予防出来ますか?
1回の性的接触だけで性感染症にかかります。性感染症は自然に治りません。性感染症の治療を受けないと、卵管・子宮・尿道に炎症が現れ、不妊症の原因になります。また、炎症が卵管にあると、受精卵は子宮ではなく卵管に着床します(子宮外妊娠)。受精卵が成長すると、卵管が破れて命を落としてしまいます。さらに、母親が性感染症にかかると、胎児も性感染症に感染します。その結果、胎児の早産や流産につながります。
性的接触を避けて性感染症を予防しましょう。また、コンドームは直接接触しないので、性感染症の予防につながります。
症状がみられたり、感染の不安があったりしたら、出来るだけ早く医療機関(泌尿器科・皮膚科・婦人科など)で検査・治療を受けましょう。ただし、自分がしっかり治療を受けて治っても、相手が感染していたら繰り返し感染します。そのため、相手も自分も同時に治療を受けなければなりません。
★性的接触の繋がり
もし、それぞれの人が過去に違う人と性的接触をしたら、そのカップルは不特定多数の人とつながっています。その中に感染者がいれば...
配列

計算機科学における配列は、同じ型のデータ要素が連続したメモリ領域に順番に格納されるデータ構造です。配列は一連の要素を、それぞれの要素に割り当てられたインデックスによって識別します。配列を使用することで、同じ種類のデータを効率的に管理し、効果的な操作(例:要素の追加、削除、検索など)を行うことができます。配列は、多くのプログラミング言語やアルゴリズムで広く使用されています。
配列は、同じ型の要素が連続したメモリ領域に格納されるデータ構造です。配列は以下の基本的な特性を持ちます:
これらの特性を持つ配列は、プログラミング言語やアルゴリズムにおいて重要な役割を果たしています。
配列の操作には、次のような基本的な操作が含まれます:
これらの操作は、配列を使用してデータを効果的に操作し、処理するための基本的な手法です。プログラミング言語やライブラリによっては、これらの操作をサポートする便利な関数やメソッドが提供されています。
以下に、C言語、Java、Python、JavaScript、Fortran、VBAにおける配列とその操作の特徴を説明し、主要な部分だけのコード例を示します。
これらのコード例は、各言語での配列の初期化、要素への代入、要素の参照を示しています。 それぞれの言語の特徴に注意してください。
配列と反復処理は、プログラミングにおいて非常に密接な関係にあります。配列は同じ型のデータを複数格納するためのデータ構造であり、反復処理は同じ処理を複数回実行するための制御構造です。配列を使用して複数のデータを効率的に管理し、反復処理を使用してそれらのデータに対して同じ処理を反復して適用することが一般的です。
例えば、配列に格納された数値の合計を計算するプログラムを考えてみましょう。この場合、配列内の各要素に対して反復して処理を行い、それらの要素を合計します。
以下に、Pythonのコード例を示します:
この例では、配列の各要素に対して反復して処理を行い、その要素を合計に加算しています。 反復処理処理を使用することで、配列内のすべての要素を効率的に処理することができます。
配列は、さまざまなユースケースで使用されます。
いくつかの一般的なユースケースを以下に示します:
これらは配列の一般的なユースケースの一部ですが、他にもさまざまな用途があります。配列はプログラミングにおいて非常に基本的でありながら、非常に重要なデータ構造であり、多くのアプリケーションやアルゴリズムで使用されています。
配列のベストプラクティスにはいくつかの重要な考え方があります:
これらのベストプラクティスは、配列を効率的かつ安全に使用するための重要な考え方です。適切なデータ構造の選択やメモリ管理、インデックスの範囲チェックなどを意識することで、プログラムの品質を向上させることができます。
配列のイディオムは、プログラミングにおいてよく使われる配列操作のパターンや慣用句のことを指します。
以下に、一般的な配列のイディオムをいくつか紹介します:
これらの配列のイディオムは、さまざまなプログラミング言語でよく使用されます。特定の操作やパターンを達成するために、これらのイディオムを理解し、適切に適用することが重要です。
キュー

キュー(Queue)は、計算機科学において、データを一時的に保存し、後で取り出すためのデータ構造の一種です。キューは、先入れ先出し(FIFO: First-In-First-Out)の原則に基づいて動作します。つまり、最初に追加されたデータが最初に取り出されるという特徴があります。
キューは、待ち行列としても知られており、現実世界の待ち行列と同様に、先に到着したデータが先に処理されるイメージです。この性質により、キューはデータの一時的な保持や、プロセスの制御など、さまざまな場面で活用されます。
キューには、主に以下の基本的な操作があります:
これらの操作によって、キューは効率的にデータを管理し、取り出しやすくします。
各プログラミング言語には、キューを実装するための独自の方法やライブラリがあります。一般的なプログラミング言語におけるキューの実装例を見てみましょう。
以下は、Arrayを継承したQueueクラスの実装例です。
この実装では、QueueクラスがArrayを継承しており、Arrayのすべてのメソッドとプロパティを利用できます。 また、Queueクラス独自のメソッドや動作も定義されています。
各言語の標準ライブラリやサードパーティのライブラリを活用することで、キューを簡単に利用できます。
キューは、データを一時的に保存し、先入れ先出し(FIFO)の原則に基づいてデータを処理するデータ構造です。 反復処理は、データ構造内の要素を順番に処理する操作です。 キューにデータが追加されると、そのデータはキューの末尾に配置され、最初に追加されたデータが最初に処理されます。 そのため、キューを反復処理する際には、キューの先頭から順番にデータを取り出して処理することが一般的です。
具体的なプログラミング言語でのキューの反復処理の例を示します。
RubyにはQueueクラスがありますが、これはThread Safeな複雑な実装なので配列のメソッドに別名をつけ簡単に実装してみました。
このコードは、Rubyでキューを実装しています。MyQueueクラスはArrayクラスを継承しており、エイリアスを使用してキューの操作を行います。
キューに関連するトピックスとしては、以下のようなものがあります。
これらのトピックスに関する理解は、キューを効果的に活用し、プログラムやシステムの設計を改善する上で重要です。キューはさまざまな場面で利用される汎用的なデータ構造であり、その特性や適切な使用法を理解することで、効率的なプログラミングが可能となります。
キューは、システムやアプリケーションのさまざまな部分で幅広く利用されています。
以下に、いくつかの一般的なユースケースを紹介します。
これらのユースケースは、キューがシステム全体のパフォーマンスや安定性を向上させるためにどれだけ重要であるかを示しています。キューを適切に活用することで、処理の効率性や信頼性を高めることができます。
キューを効果的に使用するためのベストプラクティスには以下が含まれます:
これらのベストプラクティスに従うことで、キューを効果的に活用することができます。
キューに関するプログラミングのイディオムとしては、以下のようなものがあります。
これらのイディオムは、キューを効果的に活用するための手法や考え方を示しています。キューを適切に利用することで、データの管理や処理の効率化、システムの信頼性向上などのメリットを得ることができます。
ウィキブックス・スクール/化学基礎/1

こんばんは。ウィキブックス・スクール/化学基礎/1へようこそ。高校化学基礎、今回から第3講まではほぼ暗記ですね。皆さんの中には、化学で苦しんでる方も、ずいぶん多いでしょうけれど、とりあえずは
この2つで結構。板書はある程度カラフルにとった方がいいですよ。よく「綺麗なノート作りはバカのやることだ。ブー」とか「偉いやつのノートは意外と汚ねー。おー」とか言ってる奴がいますけど、気にしない。そんな蛇ののたうちまわってるような字のノートなんかとったってなんの意味もないんだから。ある程度色使ったほうがやる気もでるもんですよ。
皆さんね、やる気がなきゃ何にも出来やしませんよ。だってそうでしょ?やる気がない→やらない→わからん→さらに嫌になる。最悪のパターンです。特に化学は突然わからなくなることが多いし、わかんなくなったらその後も分からなくなるので、「やる気がでねー」とか言ってたらまさに一巻の終わりですよ。
嫌でしょ?頑張りましょうよ。
授業の組み立て方だけど、とりあえずバーっとメモとってもらって、ちゃちゃっと練習問題解いて、という感じですか。復習は確認テストをうけてもらうことくらいですか。合格点は90点。問題数も多く、難しいのもあるので、いい復習になるから。
ソートアルゴリズム

ソートアルゴリズムは、データを特定の順序で整理するための手法です。データを整列することは、データの検索や解析を容易にし、効率的なアルゴリズムを設計する上で基本的なステップです。さまざまなソートアルゴリズムがありますが、その中でもいくつかの代表的なものを紹介します。
これらのソートアルゴリズムは、それぞれ異なる特性を持ちます。ソートすべきデータの量や性質に応じて、適切なアルゴリズムを選択することが重要です。また、ソートアルゴリズムの実装方法や効率性を理解し、適切に適用することも重要です。
Fortran/よくある質問

This article contains some frequently-asked questions (FAQs) regarding Fortran and their answers.
A: Fortran is not obsolete and it will not be any time soon. Fortran is a general purpose programming language and is suitable for many applications. However, it excells at numerical computation and high performance computing. It is fast, portable and it has seamless handling of arrays. Because of this, there are many high-quality Fortran libraries for numerical algorithms and it is widespread in scientific communities (e.g. numerical weather predicion). The language itself is still maintained and regularly updated with modern features; the latest version is Fortran 2018.
A: Oracle Solaris Studio, GNU Fortran, G95, and Silverfrost (Windows only) are free software Fortran 95 compilers, and Absoft, IBM, Intel, Lahey, NAG, Pathscale and PGI sell Fortran compilers. Comparative information on Fortran compilers is available at Wikipedia.
A: Use an "internal write" to create the file names, for example
A: A neater way to do this would be:
This way the formatting is clear and you are writing the correct string to the variable. I assume you wanted an integer as the number. 'I' format statement requires an Integer length, or zero in some cases. You are probably thinking of F where the decimal point denotes the number of decimals to consider.
A: Gfortran does not accept this block
Gives, ERROR, file tag must be of type CHARACTER
Can someone else help with this?
A: See the answer above. Basically the way you have written the variable file_name is incorrect.
Assuming that ITN has been declared as an integer and given a value.
A: Use an "internal read" or "internal write". In effect, you use a character variable as the file name and read or write the I/O list. You write things like
to convert a string to another type and
to convert to a string from another type, as demonstrated by the following program:
This answer is based on messages in comp.lang.fortran by Paul van Delst and Dick Hendrickson.
A. The Fortran 2008 standard provides the execute_command_line intrinsic procedure to make system calls. Prior versions have no standard way to make system calls, but many compilers have an extension named "system" or something similar. Please consult the documentation of your compiler. In Fortran 2003, one can call C code, and it is possible to call the operating system from C.
高等学校美術I/筆の持ち方

鉛筆の場合、5教科で文字を描くさいに使う普通の持ち方のほかにも、美術では鉛筆・絵筆の持ち方には幾つか他の持ち方もあります。
下記では、主に鉛筆と絵筆の、5教科の持ち方以外で、美術でよくある持ち方を紹介します。
なお、普通の5教科での持ち方も、細かい部分を描くさいには使うこともあるので、5教科の鉛筆の持ち方はこれはこれで美術の持ち方のひとつとして使用しても大丈夫です。
なお、下記で紹介する以外にも、ジャンルなどに応じて、いろんな持ち方があります。
習字の太い筆の持ち方とも、絵筆の持ち方は違います。
なお美術では、絵描き事に色々な持ち方があり、べつに持ち方が他の絵描きと違っていても決して「行儀が悪い」とかなりません。なので、人によって描きやすい中指・親指の位置が微妙に違うと思いますので、各自、実際に描く際には下記の持ち方そのものではなく、各自の描きやすい持ち方にアレンジして調節しつつ、使ってください。
絵を描くとき、絵筆などの持ち方は、指先の力具合などの加減を正確にするために、中指を人差し指に添える場合もあります。
文字を書く時に良いとされる鉛筆の握り方とは、中指の位置が違っています。

やや難しい持ち方ですが、親指の先端の位置を変えて、人差し指の半ばほどに親指先端を持ってくる持ち方の方法もあります。
なお、比較として、普通の5教科の持ち方だと親指の先端は人差し指の先端の近くに来ます。

ほかの持ち方として、筆の先端やエンピツの先端を動かすストロークの長さに応じて、持つ位置を変えることがあります。
専門書でも「ストローク」と言う呼び方をしています。
鉛筆の長さが足りない場合は、鉛筆ホルダーで長くできます。
細かい部分を描く場合など、先端を短いストロークで動かす場合は、5教科での普通のエンピツの持ち方のように選択近くを持ちます。
一方、筆・エンピツの先端を長いストロークで動かす場合は、先端から少し離れた位置を持ちます。
ストロークの長さに応じて、持つ位置を調整してください。
画風などによって、指先を動かすさいにヒジをどのていど動かすかどうか等、人ごとに違いがあると思います。各自、自分に都合のいいように調節してください。
とりあえず、「ストロークの長さに応じて、筆の持つ位置を変える」という発想があるかないかが重要です。
他の持ち方として、石膏デッサンなどで使うことの多い、つまむような持ち方が、あります。
文字だけでこの持ち方を説明するのは大変に難しいので、授業などで教わるか、あるいはネット検索で調べてください。
高等学校美術I/写真と美術

昔から絵画の勉強、練習には、過去の名画を模写することが良く行われてきました。現代では写真もありますが、写実的な絵は必ずしも写真どおりに描かれているとは限りません。
なぜなら、私たち人間の脳が認識する映像は、じつは目から見た映像情報そのままではない可能性が高い、ということが心理学などの実験などで知られています。心理学の用語ですが、「網膜像」と「知覚像」(perceptual image)という用語があります。我々の眼に映った状態の視界の映像が、「網膜像」です。興味のある場合、これらの用語を調べれば、調査できます。
とはいえ、高校生レベルの基礎的な学習としては、基本は現実の光景、事物を見て絵を描く練習をするのが入門的でしょう。現実を知った上でのアレンジです。
美術史的には、たとえば近代の画家ルノワールと画家セザンヌが、フランスの同じ景色の山を描いた絵の違いが、近代絵画でのそのような印象と写実のちがいの例としては有名です。

セザンヌ的な手法、ルノワール的な手法、どちらを使うか目指すか、目的によって使い分けましょう。
古代の美術などでも、わかりやすさを目的に、あえて、写実画からは少し崩した表現をしていると考えられる作品も多々あります。古代ギリシアの彫刻も、一見すると写実的ですが、彫刻男性ならば実際の古代ギリシア人の体格よりも たくましい体の彫刻である場合が多いのが普通です。
なお、美術史的には、ピカソがキュビズムを生み出す前からもう、目の前の現実にとらわれないで1枚の絵のなかに色々な角度からの視点を問い入れる表現をすることがセザンヌによって行われていた事の実例でもあります。
高校美術とはあまり直接の関係ないですが、心理学の用語で、「大きさの恒常性」(size constancy)という用語があります。たとえば実験するなら、顔の前で腕を伸ばした時を基準にして、腕を曲げて手のひらを(延ばし他ときの基準位置から)半分の位置にすれば、網膜に映る映像での手の幅はおおよそ2倍になるはずですが、しかし人間の心理的な感覚では多少は大きく写っていると感じるものの、2倍ほどは大きく感じられず、結果としてほぼ一定に見えるという心理学の法則が知られています。(美大では研究などではこういう話もしますが。)
このような写実と印象の考えの違いとして、セザンヌあたりの時代にすでに、写真の技術が普及していた背景があります。なお、写真の発明は19世紀の前半です。セザンヌよりも前にモネの時代の美術史で、もうそういった写真と印象派の関係についての分析がなされています。
セザンヌなど印象派の人は、写真では取れない、ウソを含んだ分かりやすい絵を追求しています。
必ずしもそれだけが「写真」でない表現ではなく、セザンヌとは別の時代ですが、1枚の絵のなかで遠近が違ってるのにピンボケをしない表現を追求した別の画家もいます。

美術の世界でいう『写実』とは、「目の前の現実や出来事」といった意味であり、そのため、(貴族や神々といった遠い世界の出来事だけでなく、)労働者や農民の姿を作品に描くことも含みます。
ですが、少なくとも日本では、写真のような絵を「写実的」ということもあります。美術史の専門書などでも、見たままのような絵のことを「写実的」と言っている場合もあります。
古代ギリシアの美術が割と見たまんまの感じに近いので、古代ギリシア美術のような見たままの感じに近い作風を「自然主義」ということもありますが、これも古代ギリシア美術などの文脈に依存します。実際には古代ギリシア美術は、完全にはリアルではなく、たとえば男性の像の彫刻は現実よりも逞しく(たくましく)表現されていたりします。
とりあえず、高校レベルの基礎トレーニングの段階では、なるべく目に見えたままを描くのが、とりあえずは無難でしょうか。
右のフェルメールの絵ですが、昔の画家も、モデルにポーズをとってもらって、それを見ながら描いていた、という様子がよくわかります。
高等学校美術I/アタリ、透視図法など構図

絵を描くさい、決してすぐには書かず、まず構図を決めます。どこからどこまでを描くとか、そういうのを決めます。
たとえば、座ってる人の全身(足のつま先から頭のてっぺんまで)を描こうと思ってたのに、ヒザから上で紙の大きさが限界になったら、困ってしまいます。
なので、基本的には、かならず先に構図を決めます。
しかし、構図を頭の中だけで決めても、本当にその構図で、紙をハミ出ないかなどは、実際に紙の上で確認してみないと分かりません。
絵を描くときに、いきなり描きたいものを本線で描かず、うすめの鉛筆の線で、短時間で下書きのように描くといいでしょう。こういうのを、「アタリ」、「アタリを取る」、などと言います。
アタリを描く段階では、構図が本当に紙に入りきるかの確認なので、細かなデコボコなどは無視して、大まかにシルエットを描きます。
下描き、アタリは消す場合も多いですが、そのまま残して、絵画の効果の一部になる場合もあります。

空気遠近法などの技法について、『中学校美術/美術2・3下』に解説があります。
高等学校美術I/デザインとは

ウルトラマンに出てくる怪獣など、空想上の生き物の着ぐるみを、もし新しく怪獣を考えて作るときは、考えた形を絵でデザインしてスタッフに説明する必要があります。
目的は、着ぐるみなどの実物をつくることですので、正面図だけでなく、側面図など別方向から見た図も必要になります。正面図だけでは、正面からは見えない部分の形が分からないからです。
側面図のかわりに背面図を書く場合もあります。また、正面図と側面図と背面図の3つを描く場合もあります。
いっぽう、上面図は、描かない場合も多いです。映像作品の着ぐるみなどの場合、正面図と側面図があれば、そこから形が分かる場合が多いのです。
また、こういった集団作業用デザイン画では、デザインの第一段階では色は塗らない(ぬらない)のが普通です。当面の目的は、形のデザインですので、輪郭線などの線を目立ちやすくする必要があります。影も、つけないのが普通です。
このように、集団作業のデザインでは、特に空想の生き物をデザインする場合、普通のイラストとは描き方がちがいます。集団作業用のデザイン画では、少なくとも2方向(たとえば正面図と側面図)が必要になる場合が多くあります。
デザインとアートは違います。デザインは自己表現ではありません。教科書会社のサイトにある動画でも、そう言っています。
デザインは問題解決のために、観客に分かりやすく、観客が楽しめるように絵を交えて説明する絵画作品のことです。
なお、美術科目だけでなく、情報科目の情報1の単元『情報デザイン』でも、似たようなことを習います
なお、デザインする仕事の人のことを「デザイナー」と言います。
ともかく、デザイナーは作品で情報が分かりやすく伝わらないと意味ないので、なので普通の人の気持ちもある程度は分からないといけません。
デザインでは普通、一発勝負はありません。
デザインでは、取引先や制作チームなどと協力して、試作品(プロトタイプ)を作って、それをつかってユーザーにテストしていくなどして改善していくプロセスによって、作品を作り上げていきます。デザインでいう「試行錯誤」とはそういう意味です。

神戸大学付属の中等教育学校(いわゆる中高一貫校)の、探究論文のためのガイドライン中で「課題研究の成果として論文以外の制作を伴う研究のガイドライン」として、次のように言われています。
何らかの課題を解決するための制作方針が明記されていることは、制作が研究として認められるた めの必須要素であり、これがない制作は本校の課題研究としては認められない。何らかの創作を伴 う制作であればその創作方針が明示されるべきである。既存作品(楽曲等)の実演を制作物として 課題研究とする場合は、それに対する自身の解釈や、身体操作の独自の工夫などを実演方針として 明示することが求められるのであって、解決すべき課題に特に対応しない実演や単なる模倣は本校 の課題研究としては認められるものでない。
なお、神戸大学には文学部がある、と芸術かぶれの人には言っておきます。
引用の最後を、さらに抜粋。
解決すべき課題に特に対応しない実演や単なる模倣
いやあ、怖いですねえ。「解決すべき課題に特に対応しない実演」は「単なる模倣」と同列らしいです。助詞「や」は、並列の助詞ですので。同列・同等・同格のものを並べる際に「や」を使うワケですし。