投稿

2019の投稿を表示しています

ブログの説明

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

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

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

Windows10+LibreOfficeで名前を付けて保存「ファイルが見つかりません」問題

Windows10にLibreOfficeをインストールしたが、Documentフォルダ内にファイルを保存しようとして「名前を付けて保存」を実行するが、「ファイルが見つかりません。ファイル名を確認して再実行してください」というエラーメッセージが表示されてファイルの保存ができない。 しかし、メモ帳やワードパッドでは同様のエラーが起こらない。 このような場合、この問題はどうやらWindows10のセキュリティ機能によってDocumentフォルダが保護されているせいで起こるらしい。そのことを確認するために次の手順を踏んだ。 スタートメニューから「設定」を選ぶ。 「Windowsの設定」というダイアログが開くので、そこの検索フォームで「ランサムウェアの防止」を検索する。 「ランサムウェアの防止」というダイアログを開いたら、「コントロールされたファイルアクセス」の設定をオンからオフに切り替える。 「ランサムウェアの防止」というダイアログは、「Windowsの設定」「更新とセキュリティ」「Windowsセキュリティ」「ウイルスと脅威の防止」「ウイルスと脅威の防止の設定」「コントロールされたファイルアクセス」の「フォルダーアクセスの制御を管理する」という手順でクリックして開くこともできる。 これによって問題が解決する場合は、原因がこれにあると考えられる。セキュリティのためにオフからオンに戻しておくことを忘れずに。この設定をオフにせずに解決するには次の手順を踏む必要があった。 「ランサムウェアの防止」ダイアログから「アプリをコントロールされたフォルダアクセスで許可する」をクリックする。 「許可されたアプリを追加する」の[+]をクリックする。 ファイルを開くためのダイアログが表示されるので、その「ファイル名(N)」の欄にsoffice.binを指定して「開く」をクリック。 soffice.binがパス名とともに「許可されたアプリ」として追加される。 Windows10を再起動する。 soffice.binは隠しファイルなので通常の設定では表示されない。通常のインストールでは"C:\Program Files\LibreOffice\program\soffice.bin"に存在するはず。最後にWindows10を再起動しなければこの設定は反映されな

LibreOffice Basic 制御構文 繰り返し

For Next構文 繰り返し処理の代表はFor Next構文。指定した回数だけ処理を繰り返すときにそれを用いる。その書式は For カウンター変数名=開始値 To 最終値 Step 増分値 処理内容 Next のようになる。Step 増分値を省略すると増分値は1になる。Nextの次に Next カウンター変数名 のようにカウンター変数を置いてもよいが、それは省略可能。 Option Explicitステートメントをモジュールの冒頭に指定している場合は、繰り返し回数を数えるためのカウンターとして使う変数を Dim カウンター変数名 As Integer のように予め宣言しておく必要がある。 次のコードは、掛け算のことを同じ数を繰り返し足す累加法であると考え、For Next構文を用いることによって足し算だけで掛け算の計算をするもの。ただし整数倍なので、かけられる数は小数を許容するが、かける数は小数点以下を切り捨てる。 REM ***** 整数倍を累加法で計算 ***** '変数を明示的に宣言して使う Option Explicit Sub Main '変数を宣言 Dim x As Double Dim y As Double Dim answer As Double '値の入力を促す x = InputBox("数を入力してください") 'Int()の引数にして小数点以下は切り捨て y = Int(InputBox("何整数倍にしますか(小数点以下切り捨て)")) '足し算を整数倍だけ繰り返す Dim i As Double For i=1 To y answer = answer + x Next '計算結果を出力 MsgBox x & "の" & y & "倍は" & answer & "です" End Sub For i=1 To y answer = answer + x Next は、 answer = answer + x をy回繰り返すことに等しい。 Int函数は引数として丸括弧の中に与え

LibreOffice Basic 制御構文 条件分岐

If構文 条件分岐は、なんらかの条件によって処理を分岐する制御構文。その代表的なものがIf構文。その書式は If 条件式 Then 処理内容 ElseIf 条件式 Then 処理内容 Else 処理内容 End If のようになる。ただし、ElseIf文とElse文は必要なければ用いなくてよい付属文。 次のコードは、身長と体重の入力を促し、その値が0以下であるかどうかを検証し、0以下であればその値が無効であるとメッセージボックスに出力し、0以下でなければボディマス指数(BMI)を計算する函数を呼び出してその計算結果をメッセージボックスに出力するもの。 REM **** BMIを計算 **** '変数を明示的に宣言して使う Option Explicit Sub Main '局所変数をSingle型で宣言 Dim height As Single Dim weight As Single Dim bmiValue As Single '身長と体重の値の入力を促す height = InputBox("あなたの身長(cm)を入力してください") weight = InputBox("あなたの体重(kg)を入力してください") 'If構文を用いて入力された値を検証 If height <= 0 Then MsgBox "身長が無効な値です" ElseIf weight <= 0 Then MsgBox "体重が無効な値です" Else 'BMIを計算する函数を呼び出して返り値を代入 bmiValue = funBmi(height,weight) '計算結果をメッセージボックスに出力 MsgBox "あなたのボディマス指数は" & bmiValue & "です" End If End Sub 'BMIを計算する函数 Private Function funBmi(height As Single, weight As Single) '身長と体重からBMIを

LibreOffice Basic サブルーチン 函数 引数

サブルーチンと函数 サブルーチンと函数は、一つのまとまった処理を行う一連のステートメントに名前を付けて部品化する仕組み。サブルーチンのことをプロシージャと呼んだり、サブルーチンと函数を両方まとめてプロシージャと呼ぶことがある。函数が呼び出し元に返す値を持つのに対してサブルーチンは呼び出し元に返す値を持たないという違いがある。 サブルーチンは Sub サブルーチン名 によって始まり、 End Sub によって終わる。その間に一連の処理を行うステートメントを置く。サブルーチン名はそのサブルーチンを呼び出すために用いられる。 REM **** BASIC **** '変数を明示的に宣言して使う Option Explicit Sub Main 'サブルーチンHelloWorldを呼び出す HelloWorld End Sub 'Hello, World!を出力するサブルーチン Sub HelloWorld MsgBox "Hellow, World!" End Sub 一方、函数は Function 函数名 によって始まり、 End Function によって終わる。その間に一連の処理を行うステートメントを置く。函数名と同じ名前の変数に値を代入すれば、その値が返り値となって呼び出し元に返される。函数名はその函数を呼び出すときに使われる。 REM **** BASIC **** '変数を明示的に宣言して使う Option Explicit Sub Main 'Kyooという関数を呼び出して返り値を出力 MsgBox(Kyoo) End Sub '今日の日付を返す函数 Function Kyoo Kyoo = date() End Function モジュールの冒頭にOption Explicitを宣言していても、値を返すための変数、つまり函数と同じ名前の変数は、宣言する必要なく使うことができるようだ。函数の中に函数名と同じ名前の変数が複数ある場合には、もっとも終わりの行にあるものが返り値となる。 サブルーチン名と函数名には変数名と同じ命名規則が適用される。つまり、英字で始まり、それ以降は英字か数字かアンダースコアを使うことができ、スペースを含む場合には角括弧で名前全体をはさむ

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ビッ

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

10進数から2進数への変換 例えば35という10進数を2進数へと変換するには、10進数の35を2進数の基数である2で35が0になるまで割りつづけ、その余りを得ることで計算する。 \[ \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 \\ \Rightarrow 100011 \end{align*} \] 筆算では次のように書くことができる。 \[ \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 \\ \Rightarrow 100011 \end{array} \] 10進数の35を2進数に変換すると、その計算結果は100011になった。正しかったかどうかを確かめるために逆変換してみる。 \[ \begin{align*} 100011 &\Rightarrow 1 \times 2^5 + 1 \times 2^1 + 1 \times 2^0 \\ &\Rightarrow 1 \times 32 + 1 \times 2 + 1 \times 1 \\ &\Rightarrow 32 + 2 + 1 \\ &\Rightarrow 35 \end{align*} \] 35という結果が得られたので正しそうだ。 10進数を2進数に変換するPython3プログラム 10進数の正の整数を入力すると、その数値を2進数に変換するためのプログラムをPython3で書いてみた。 # 与えられた正の整数を2進数に変換して標準出力するプログラム # 実行方法は $ python3 ソースファイル名.py RADIX =

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 &\Rightarrow [(1 \times 2^3) + (1 \times 2^2) + (0 \times 2^1) + (1 \times 2^0)]_{10} \\ &\Rightarrow [(1 \times 8) + (1 \times 4) + (0 \times 2) + (1 \times 1)]_{10} \\ &\Rightarrow [8 + 4 + 0 + 1]_{10} \\ &\Rightarrow [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 &\Rightarrow \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} \\ &\Rightarrow [

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'; } #canv

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

\( 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