投稿

ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ございません。

このブログでは広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLaTeXのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

LibreOffice Basic 変数 データ型 スコープ 定数 演算子 配列 構造体

LibreOffice Basicの文法はマクロソフトのVBAに似ている。ExcelでVBAを使っている人にとっては覚えやすい。ただしVBAのほうがより厳格なので、VBAの構文がLibreOffice BasicでエラーになるよりもLibreOffice Basicの構文がVBAでエラーになることのほうが多いらしい。 コメントの付け方 アポストロフィ(')かREMで始まってその行末までがコメント。REMは大文字と小文字を区別しないのでremでもREMでもRemでもみな同じ。 '改行までがコメント REM 改行までがコメント rem 改行までがコメント ステートメント 一つの命令や一つの宣言を表すLibreOffice Basicの基本単位がステートメント。文章でいえば一つの文。LibreOffice Basicでは改行によって一つ一つのステートメントが区切られる。改行をまたいで一つのステートメントを記述したい場合にはアンダースコア(_)を使う。また、一つの行に複数のステートメントを記述したい場合にはコロン(:)を使う。 REM **** BASIC **** Sub Main MsgBox("Hello World") '2行に渡って1つのステートメントを記述 MsgBox("Hello") & _ " LibreOffice" '1行に複数のステートメントを記述 MsgBox("Hello Basic") : MsgBox("Good Night") End Sub 文字列定数 Option Compatibleとモジュールの冒頭に宣言しておくと、マイクロソフトのVBやVBAと同じように、次のような文字列定数を使用することができる。Option CompatibleはLibreOffice BasicにVBAと同様の機能を付け加えるためのもの。 vbLf ラインフィード(改行)。C言語でいうところの\n vbCr キャリッジリターン(行頭)。C言語でいうところの\r vbCrLf キャリッジリターンとラインフィード vbTab 水平タブ。C言語では\t vbVerticalTab ...

2進数の桁数(ビット数)で表すことができる数の個数

1桁の2進数で表すことができる数の個数は0と1、つまり合計2個。ちなみに10進数の1桁で表すことができる数の個数は、0から9まで数えて合計10個。 2進数2桁で表すことができる数の個数は、0, 1, 10, 11なので合計4個。2進数3桁で表すことができる数の個数は、0, 1, 10, 11, 100, 101, 110, 111なので合計8個。 一般に、桁数で表すことができる数の個数は、その進法の基数の桁数乗。基数というのは2進法ならば2のこと、10進法ならば10のこと、16進法ならば16のこと。 \[ 表現できる数の個数 = 基数^{桁数} \] 例えば、2桁の10進数で表すことができる数の個数は、 \begin{align} 10^2 &= 10 \times 10 \\ &= 100 \end{align} と計算されて100個となり、4桁の2進数で表すことができる数の個数は、 \begin{align} 2^4 &= 2 \times 2 \times 2 \times 2 \\ &= 16 \end{align}と計算されて16個となる。 2進数の桁数とそれが表すことができる値の個数を表にしてみた。2進法では桁数はビット数に等しいのでビット数と言い換えてみた。累乗の単位元が1であるので、2の1乗が2になることに要注意。 ビット数と値域の対応表 ビット数 値の個数 1ビット \(2^1=2\)個 2ビット \(2^2=4\)個 3ビット \(2^3=8\)個 4ビット \(2^4=16\)個 5ビット \(2^5=32\)個 6ビット \(2^6=64\)個 7ビット \(2^7=128\)個 8ビット \(2^8=256\)個 9ビット \(2^9=512\)個 10ビット \(2^{10}=1024\)個 16ビット \(2^{16}=65536\)個 20ビット \(2^{20}=1048576\)個 24ビット \(2^{24...

10進数からr進数への変換

10進数から2進数への変換 例えば35という10進数を2進数へと変換するには、10進数の35を2進数の基数である2で35が0になるまで割りつづけ、その余りを得ることで計算する。 \[ \left. \begin{align*} 35 \div 2 = 17 \cdots 1 \\ 17 \div 2 = 8 \cdots 1 \\ 8 \div 2 = 4 \cdots 0 \\ 4 \div 2 = 2 \cdots 0 \\ 2 \div 2 = 1 \cdots 0 \\ 1 \div 2 = 0 \cdots 1 \end{align*} \right\} \therefore 100011 \] 筆算では次のように書くことができる。 \[ \left. \begin{array}{r} 2 \underline{)35} & \cdots 1 \\ 2 \underline{)17} & \cdots 1 \\ 2 \underline{)8} & \cdots 0 \\ 2 \underline{)4} & \cdots 0 \\ 2 \underline{)2} & \cdots 0 \\ 2 \underline{)1} & \cdots 1 \end{array} \right\} \therefore 100011 \] 10進数の35を2進数に変換すると、その計算結果は100011になった。正しかったかどうかを確かめるために逆変換してみる。 \begin{align*} 100011 &\mapsto 1 \times 2^5 + 1 \times 2^1 + 1 \times 2^0 \\ &= 1 \times 32 + 1 \times 2 + 1 \times 1 \\ &= 32 + 2 + 1 \\ &= 35 \end{align*} 35という結果が得られたので正しそうだ。 10進数を2進数に変換するPython3プログラム 10進数の正の整数を入力すると、その数値を2進数に変換するためのプログラムをPython3で書いてみた。 # 与えられた正の整数を2進数に変換して標準出力するプログラム # 実行方法は $ python3 プ...

r進数から10進数への変換

r進数のrはradixの頭文字。radixは位取り記数法の基数を意味している。底(base)とも呼ぶ。10進法は0から9までの10個の数を用いるので基数は10となる。2進法では0と1の2つだけの数を用いるので基数は2となる。16進数では0から9までとA, B, C, D, E, Fの計16個の数が用いられるので基数は16となる。 2進数から10進数への変換 例えば1101という2進数を10進数へと変換するには次のように計算する。丸括弧は見やすいように付けた。角各個の添字が基数。各位の値に各位の重み\( 2^3, 2^2, 2^1, 2^0 \)をそれぞれ掛けて最後に足し合わせている。 \begin{align*} [1101]_2 &\mapsto [(1 \times 2^3) + (1 \times 2^2) + (0 \times 2^1) + (1 \times 2^0)]_{10} \\ &\mapsto [(1 \times 8) + (1 \times 4) + (0 \times 2) + (1 \times 1)]_{10} \\ &\mapsto [8 + 4 + 0 + 1]_{10} \\ &\mapsto [13]_{10} \end{align*} 2進数である1101を10進数へ変換すると13になった。2進数はその各位の数を\( 2^n \)倍した数と等しい。指数が0から始まり、0乗が常に1になることに要注意。 じゃあ、小数点がある場合はどう計算するのか。例えば1.011という2進数を10進数へと変換するには次のように計算する。各位の値を各位の重み\( 2^1, 2^2, 2^3 \)でそれぞれ割って最後に足し合わせている。 \begin{align*} [1.011]_2 &\mapsto \left[(1 \times 2^0) + \left(0 \times \dfrac{1}{2^1}\right) + \left(1 \times \dfrac{1}{2^2}\right) + \left(1 \times \dfrac{1}{2^3}\right)\right]_{10} \\ &\mapsto [(1 \times 2^0) + (0 \div 2^1) + ...

JavaScriptとHTML5 Canvas 2Dを使ってベン図を描く

HTML5 Canvas 2Dを使ってベン図(ヴェン図)をHTML文書上に描くための方法に関する覚え書き。次のような、ちょっとしたJavaScriptアプリを作る手順を示す。 ベン図のJavaScriptアプリ このブラウザはHTML5 Canvasに対応していません。 和集合 共通部分 差集合 補集合 対称差 全体集合 決定 HTML5 Canvas 2Dを使うための準備 HTML5 CanvasをHTML文書に埋め込むにはcanvas要素を使う。 <canvas id='canvas_name' width='250' height='180'> あなたのブラウザはCanvas要素に対応していません。 </canvas> canvasタグにidと幅(width)と高さ(height)という三つの属性を指定し、canvasに対応していないウェブ・ブラウザ向けのメッセージ(例えばCanvas not supported)をその間に入れてcanvas要素の終了タグではさむ。 canvasタグに挟まれた間の文字列は、Canvasに対応しているウェブ・ブラウザでは表示されない。ちなみに、JavaScriptを無効にしてあるとCanvasも無効になる。 idはウェブ・ページに表示するいくつかのcanvas要素を識別するためのもの。同じウェブ・ページにいくつかのcanvasを埋め込むためにはこのidがそれぞれに異なっている必要がある。 幅と高さはCanvasの四角形の枠の大きさを表わす。この幅と高さの枠の中に図が描かれる。この枠をはみ出すと表示されない。大きくしすぎると余白ができてしまうし、小さくしすぎると図がはみ出して見えなくなってしまう。幅と高さ以外の細かい設定は、canvas要素かid属性またはclass属性をセレクタに指定してスタイルシートを使って行うことができる。 次のスタイルシートの記述は、canvasセレクタでCanvasの外枠の線の太さを1pxに、線の種類を一本の実線に、その色を青に設定し、canvas_nameセレクタで背景色を白に設定している。 canvas { border:1px solid 'blue'; } #ca...

集合と集合の演算の基本公式

\( a \in A \) \( A \ni a \) aは集合Aの要素。 \( A = \{a_1, a_2, \cdots , a_n\} \) 集合Aは有限個の要素から成る。このような集合を 有限集合 と呼ぶ。 \( A = \{a\} \) 集合Aは要素aだけから成る。1要素集合、またはシングルトンと呼ぶ。 \( \{x | -1 \leq x \leq 1,\space x = \mathbb{R}\} \) xは-1から1までの間の実数。\( \mathbb{R} \)は実数のこと。集合とその条件(意味)は{集合名|条件式}という書式で表すことができる。 \( A \cup B \) 集合Aと集合Bを合わせた集合を 和集合 と呼ぶ。 あなたのブラウザはCanvas要素に対応していません。 \( A \cap B \) 集合Aと集合Bとの共通する部分を 共通部分 と呼ぶ。 あなたのブラウザはCanvas要素に対応していません。 \( A \subseteq B = \{a|(a \in A) \cap (a \in B)\} \) 集合Aの要素a全てが集合Bの要素でもあるとき、集合Aは集合Bの部分集合。 \( A \subset B = \{A|(A \subseteq B) \cup (A \neq B)\} \) 集合Aは集合Bの 真 ( しん ) 部分集合。部分集合と真部分集合の違いは、真部分集合が集合Aと集合Bが等しい場合(\( A = B \))を含まないことにある。 あなたのブラウザはCanvas要素に対応していません。 \( A = B = \{A|(A \subseteq B) \cap (B \subseteq A)\} \) 集合Aが集合Bの部分集合でかつ集合Bが集合Aの部分集合でもあるとき、つまり集合Aの要素と集合Bの要素とが全く等しいとき、集合Aと集合Bは等しい。 \( A \neq B \) 集合Aの要素と集合Bの要素がひとつでも異なっていたら、集合Aと集合Bとは等しくない。 \( A = A \) 集合Aが集合Aと等しいという命題が成り立つことを 反射律 と呼ぶ。 \( A = B \Rightarrow B = A \...

PHPの基礎文法をおさらいする(クラスの定義と継承)

PHPはSmalltalkに代表されるような純粋なオブジェクト指向言語ではないが、そのバージョン5から、Zend Engine 2を搭載することによって、オブジェクト指向によるプログラミングの真似事ができるようになった。クラスと呼ばれるものを新たなデータ型としてユーザーが独自に設計することによって、それを変数に代入してオブジェクトとして利用することができる。 オブジェクトとは、C言語でいうところの構造体、Pascalでいうところのレコード、データベースでいうところのテーブルに、それ専用の函数を付属させて作られる変数の一種。 クラスの定義 クラスとはオブジェクトのもとになるデータ型の一種であり、オブジェクト作成用のテンプレートのようなもの。クラスはclassというキーワードを用いて class クラス名{クラスの定義文;} という書式で定義することができる。 次のコードでは、ユーザーのIDとユーザーのメールアドレスを管理するためのuserクラスを定義している。ユーザーのIDとメールアドレスを保持する変数にはprivateというアクセス修飾子を付けて外部から操作できないようにした。その代わり、それらの変数にアクセスするための函数をpublicというアクセス修飾子を付けて定義し、それらの函数を外部から呼び出して使えるようにした。 <?php // userという名のクラスを定義 class user { // ユーザーID用の変数 private $userID; // メールアドレス用の変数 private $mailAddress; // コンストラクタ(初期化メソッド) public function __construct(){ // それぞれの変数に初期値を代入 $this->userID = 'ゲストユーザー'; $this->mailAddress = 'メールアドレス'; } // ユーザーIDの設定用メソッド public function set_userID($value){ $this->userID = (string)$value; } // メールアドレスの設定用メソッド public function s...