投稿

ブログの説明

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

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

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

Debian GNU/Linux 10で発音記号を入力(uim編)

イメージ
ここではLinuxディストロの1つであるDebian GNU/Linux 10において発音記号の一種である国際音声記号(IPA)を入力する方法について覚え書きをする。 入力方式のインストール 結論から言えば、各々の入力メソッドの環境用にパッケージ化されたX-SAMPAをインストールすればよい。この方法はDebianの派生ディストロ、たとえばUbuntu系やLinux Mintなどでも同様に通用する可能性がある。 Debian GNU/Linux 10の公式ディポジトリには次のようなdebパッケージが見つかった。 $ apt search x-sampa ソート中... 完了 全文検索... 完了 fcitx-table-ipa-x-sampa/stable 0.2.4-2 all Flexible Input Method Framework - IPA-X-SAMPA table ibus-table-ipa-x-sampa/stable 1.3.9-4 all ibus-table input method: IPA-X-SAMPA librime-data-ipa-xsampa/stable 0.38.20180515-2 amd64 RIME schema data - X-SAMPA uim-ipa-x-sampa/stable 1:1.8.8-4+deb10u2 all Universal Input Method - X-SAMPA IPA input support metapackage FlexibleとiBusとRIMEとuimのパッケージが見つかった。SCIMの場合はscim-tables-additionalというパッケージにX-SAMPAが含まれているようだ。 というわけで、使っている入力メソッド用のパッケージをインストールする。ただし、ここでは以降、uimを例に挙げる。 # apt update; apt install uim-ipa-x-sampa インストールが無事に完了したら設定を行う。uimの場合、uimのツールバーの上にマウスポインタを合わせて右クリックして表れるメニューから「設定」を選ぶか、コマンドラインからuim-pref-gtk3かuim-pref-qt5を起動する。 $ uim-pref-g...

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ビット \(2^{24...