星野歯科駒沢クリニック

HOSHINO DENTAL KOMAZAWA CLINIC

プログラミング && 歯科治療

2024.11.20

①プログラミング && 歯科治療

$$(AND制御演算子)

プログラミング && 歯科治療
左項のコマンドが成功した時、右項のコマンドを実行する。左項のコマンドが失敗した時は、右項のコマンドを実行しない。

if(分岐制御条件式)

&&をif文で書き直すと
if プログラミング then 歯科治療 fi
ワンライナーのコマンドにすると
if プログラミング; then 歯科治療; fi

②論理的思考法 -プログラミング的思考-

論理的思考法とは、物事を順序立てて考え、計画的に目的を実行できる事、問題解決力を向上させる思考法。プログラミング教育の目的として、安易な即応的思考ではなく、知識・経験から論理的に考え判断する事を学ぶ。又、目的の解決法は一つではない事も学ぶ。逆に論理的ではない思考を簡単に言うと、「分からないから、面倒だから、これでいいや」と物事を直ぐに対応してしまう事。安易なその場しのぎな対応の事。
もし歯科医が論理的ではない思考で治療をすると、どうなってしまうのか?治療の失敗につながります。

③より良い治療を受けるために -隠れた常識-

患者さんがより良い治療を受けるためには、医療設備・歯科医のスキルは必要条件として当然です。他に隠れた条件もあります。それは実益がある問題解決力です。治療に問題が生じた場合に、適切かつ正確に判断できているのか。これは治療で非常に重要な事になるでしょう。一本の歯の治療でも問題解決力は必要ですが、一口腔単位の治療(矯正治療など)は、期間も長く、審美と機能の両立を考えるなど問題解決力が重要となります。

患者さんが「歯科医の思考判断力が優れているのか判断する」のは難しいと思います。しかし最近では、「プログラミング的思考を学ぶという事が、問題解決力を養うのに役立っている」という事が分かってきました。患者さんの状態は個人差があり、条件が異なるため、問題解決のプロセスが見えてくるまで熟考し、安易な治療が行われないようにするべきです。
歯科医が論理的思考の上で、専門知識を最大限に活かせる事が、より良い治療につながると思います。

④プログラミングの基礎知識

1.プログラミング言語

プログラミング言語は数多く存在します。例えばFORTRAN,C言語,C++,C#,JavaScript,Ruby,PHP,VBA,Bash,Swift,GO,Assembly,Python,SQL,Perl などがあります。
その言語の規則に基づいた形式で、プログラムを記述し、コンピュータに処理を指示します。

2.言語処理系

プログラミング言語で書かれたテキストファイル(ソースコード)を動かすには、処理系というプログラムが必要です。

コンパイル言語
Compile(コンパイル)とは、ソースコードを実行可能ファイルに変換する事。実行可能ファイルとは、コンピュータが直接実行できるバイナリーコード(機械語命令列)。ソースコードでは動かないので、コンパイルをして実行可能ファイルに変換して実行します。
C言語など

インタプリタ言語
コンパイルは必要なく、インタプリタによって内部形式に変換され実行されます。スクリプト言語とも呼ばれています。
Bash,Pythonなど

3.ノイマン型コンピュータ

現在のコンピュータは、フォン・ノイマンが提唱した「ノイマン型」と呼ばれる構造になっています。ノイマン型コンピュータとは、演算装置・制御装置
・記憶装置・入力装置・出力装置で構成されています。プログラムは、記憶装置に格納されてから実行されます。

4.GUI/CUI

GUI(グラフィカル・ユーザ・インタフェース)
ウインドウ、アイコンなどをマウスで操作する。

CUI(キャラクタ・ユーザ・インタフェース)
キーボードから文字(コマンド)を入力して操作する。別名 CLI(コマンドライン・インタフェース)

5.文字コードと符号化方式

文字コードの基本は、ASCII(英文字)です。日本語ではJISコード、全世界の文字を集めたUnicodeがあります。
・ASCII
・JIS
・Unicode
文字とビット組み合わせの対応規則(文字コード)を定義して、符号化方式を用いて利用します。
・Shift_JIS
・EUC-JP
・UTF-8
1.文字コード
① ASCII
・米国標準コード
・英数字、記号、制御文字
・1バイトコード(7ビット)
② ASCII各国版
・ISO/IEC 646
・JIS X 0201
・カタカナ(半角)
・1バイトコード(8ビット)
③ ASCII拡張版
・ISO/IEC 2022
・JIS X 0208
・漢字、カタカナ、平仮名(全角)
・2バイトコード(7,8ビット)
・JIS X 0213
・JIS X 0208拡張版
・JIS 2000,JIS 2004
④ Unicode
・国際符号化文字集合(UCS)
・ISO/IEC 10646
・JIS X 0221
・マルチバイト

※ ISO(国際規格) JIS(日本規格)
2.符号化方式

1バイトコードのASCII、JIS X 0201は、2バイトコードのJIS X 0208と併用する符号化方式で、Shift_JIS、EUC-JPがあります。Unicodeは UTF-8、UTF-16、UTF-32があります。
① Shift_JIS
・JIS X 0201 + JIS X 0208
・Windows環境依存文字
・CP932
・Windows-31J
・MS932
・2バイトコード(8ビットコード)
② EUC-JP
・ASCII + JIS X 0208
・Extended Unix Code
・2バイトコード(8ビットコード)
③ UTF-8
・8ビット単位、1~4バイトコード
・ASCII互換

⑤プログラムの基本

1.プログラムの基本構造

1 順次処理 (sequential) 2 選択処理 (select)
3 反復処理 (loop)
順次処理 : プログラムを順番に実行する 選択処理 : 条件によって処理内容を変える 反復処理 : 同じ処理を繰り返し実行する
プログラムユニット
サブルーチン (subroutine) : モジュール 1 手続き (procedure) : 動作の実行 2 関数 (function) : 戻り値生成
サブルーチン基本形
1 引数
仮引数 : 定義時の引数 (parameter)
実引数 : 呼出し時の引数 (argument) 2 戻り値 (return value)
実行結果を呼出し元へ返す値
プログラムの作成
1.ソースコード (C言語)
2.プリプロセス (preprocessor) インクルード : include ヘッダファイル : header file ライブラリ定義
3.コンパイル (compiler) CPU固有のアセンブリ言語に変換 1 字句解析 : lexical analyzer 2 構文解析 : parser
3 コード生成 : code generator

4.アセンブル (assembler) アセンブリ言語を機械語に変換 オブジェクトファイル
5.リンク (linker) ライブラリ、オブジェクトファイルを結合 ダイナミックリンク (実行時に参照)
6.実行可能プログラム
2.プログラムの実行 プログラムの実行は CPUが行います。
CPU : 中央処理装置
1 OSがプログラムをメモリに転送
2 メモリからCPUに転送し、解読をして実行
CPU処理の基本
1 Fetch : 命令をレジスタに読み込む 2 Decode : レジスタの命令を解読
3 Execute : 演算、制御など命令を実行
CPUの構成
1 制御装置
2 演算装置 (ALU)
3 記憶装置 (レジスタ)
スレッドの生成
1 プログラムを実行 (プロセス生成) 2 プロセス内部でスレッド生成
スレッド : Thread
1 コードを実行する実体
2 関数、サブルーチンから生成
3 コード、データ、レジスタ値(コンテキスト)
4 スレッドが無いとプロセスのプログラムは実行できない
プロセス : Process
1 メモリに展開された実行中のプログラム

2 スレッドを含むリソースコンテナ
3 リソースはメモリ、ファイルアクセスなどスレッド実行に必要 4 OSが管理する実行中のプログラムの単位
3.CPUアーキテクチャ
設計構想の分類
1 RISC : Reduced Instruction Set Computer 縮小命令セット (単純な命令の組み合わせで実行)
2 CISC : Complex Instruction Set Computer 複合命令セット (複雑な処理も1つの命令で実行)
命令セット : CPUで使用する命令の集合と動作の規定
CPU基本機能の拡張分類
1 x86 ・IA-32アーキテクチャ ・CISC
・32 bit ・リトルエンディアン ・i386
2 x86_64 ・IA-32拡張版 ・CISC
・64 bit ・リトルエンディアン ・AMD64,Intel64
エンディアン : メモリのデータ格納方式 1 ビッグエンディアン : 0x12, 0x34
2 リトルエンディアン : 0x34, 0x12
※ 0x1234 (2バイト以上)

④プログラムの基本
1.プログラムの基本構造
・順次処理 (sequential)
・選択処理 (select)
・反復処理 (loop)
順次処理 : プログラムを順番に実行する
選択処理 : 条件によって処理内容を変える
反復処理 : 同じ処理を繰り返し実行する
1)プログラムユニット
サブルーチン (subroutine) : モジュール
・ 手続き (procedure) : 動作の実行
・ 関数 (function) : 戻り値生成
サブルーチン基本形
・ 引数
仮引数 : 定義時の引数 (parameter)
実引数 : 呼出し時の引数 (argument)
・ 戻り値 (return value)
実行結果を呼出し元へ返す値
2)プログラムの作成
1.ソースコード (C言語)
2.プリプロセス (preprocessor)
インクルード : include
ヘッダファイル : header file
ライブラリ定義
3.コンパイル (compiler)
CPU固有のアセンブリ言語に変換
① 字句解析 : lexical analyzer
② 構文解析 : parser
③ コード生成 : code generator
4.アセンブル (assembler)
アセンブリ言語を機械語に変換
オブジェクトファイル
5.リンク (linker)
ライブラリ、オブジェクトファイルを結合
ダイナミックリンク (実行時に参照)
6.実行可能プログラム
2.プログラムの実行
プログラムの実行は CPUが行います
CPU : 中央処理装置
・ OSがプログラムをメモリに転送
・ メモリからCPUに転送し、解読をして実行
CPU処理の基本
① Fetch : 命令をレジスタに読み込む
② Decode : レジスタの命令を解読
③ Execute : 演算、制御など命令を実行
CPUの構成
・ 制御装置
・ 演算装置 (ALU)
・ 記憶装置 (レジスタ)
スレッドの生成
・ プログラムを実行 (プロセス生成)
・ プロセス内部でスレッド生成
スレッド : Thread
・ コードを実行する実体
・ 関数、サブルーチンから生成
・ コード、データ、レジスタ値(コンテキスト)
・ スレッドが無いとプロセスのプログラムは実行できない
プロセス : Process
・ メモリに展開された実行中のプログラム
・ スレッドを含むリソースコンテナ
・ リソースはメモリ、ファイルアクセスなどスレッド実行に必要
・ OSが管理する実行中のプログラムの単位
3.CPUアーキテクチャ
設計構想の分類
① RISC : Reduced Instruction Set Computer
縮小命令セット (単純な命令の組み合わせで実行)
② CISC : Complex Instruction Set Computer
複合命令セット (複雑な処理も1つの命令で実行)
命令セット : CPUで使用する命令の集合と動作の規定
CPU基本機能の拡張分類
① x86
・IA-32アーキテクチャ
・CISC
・32 bit
・リトルエンディアン
・i386
② x86_64

・IA-32拡張版
・CISC
・64 bit
・リトルエンディアン
・AMD64
バイトオーダー : メモリのデータ格納方式
① ビッグエンディアン : 0x12, 0x34
② リトルエンディアン : 0x34, 0x12
※ 0x1234 (2バイト以上)
4.データ構造
メモリのデータ配置
Data Structure: C
・変数 : variable
・配列 : array[]
・構造体: struct
1)変数
・データとしてメモリ確保
・型がメモリサイズ決定
・メモリ空間での名前参照
・データ型
int型 : 4バイト(整数型)
char型: 1バイト (整数型/文字型)
・定義(宣言)
int s;
int a,b;
・代入
s = 10;
・初期化(宣言+代入)
int x = 2;
int y = {3};
・文字: character
char x = ‘A’;
2)配列
・連続したメモリ配置
・要素は同じ型
・文字列: char型配列
char x[4] = “ABC”;
char y[4] = {‘A”B”C’,,,’\0′};
終了文字=’\0′: ASCII 0x00(NUL)
・int型
int z[3] = {1,2,3};
・main関数への引数(コマンドライン)
int main(int argc, char *argv[]);
argc: argument count
argv: argument vector
char *argv[]: 配列の先頭要素へのポインタ
(文字列の先頭アドレス)
*argv[] と**argv は同じ
argc: argvの要素数
argv[0], argv[1], argv[2] -> 3
argv[0]: プログラム名
argv[1]: 引数1
argv[2]: 引数2
vector: ベクタ
・複数の文字列を格納するデータ構造
・char *型の配列
・(char *)0が最後の要素
3)構造体
・配列と異なり連続したメモリの配置ではない
・メモリ配置は境界調整のためパディング
・要素は複数の型、複数のデータ
・構造体タグ(型の名前)
struct ABC (struct ABC型)
struct: 構造体宣言(キーワード)
・構造体を格納する変数
struct ABC x;
(struct ABC型の変数x)
・構造体メンバ(データ定義)
struct ABC {}x;
ブロック内でメンバ定義
{int i, char d[5];}
・typedef: 型に別名を付ける
type name(型名)-> define(定義)
typedef struct list list;
struct list -> list
構造体タグ名と型名は名前空間が異なるので同名でも可
・名前空間: C
・変数名、関数名、型名
・構造体タグ名、共用体タグ名

⑤プログラムの基本
1.プログラムの基本構造
・順次処理 (sequential)
・選択処理 (select)
・反復処理 (loop)
順次処理 : プログラムを順番に実行する
選択処理 : 条件によって処理内容を変える
反復処理 : 同じ処理を繰り返し実行する
1)プログラムユニット
サブルーチン (subroutine) : モジュール
・ 手続き (procedure) : 動作の実行
・ 関数 (function) : 戻り値生成
サブルーチン基本形
・ 引数
仮引数 : 定義時の引数 (parameter)
実引数 : 呼出し時の引数 (argument)
・ 戻り値 (return value)
実行結果を呼出し元へ返す値
2)プログラムの作成
1.ソースコード (C言語)
2.プリプロセス (preprocessor)
インクルード : include
ヘッダファイル : header file
ライブラリ定義
3.コンパイル (compiler)
CPU固有のアセンブリ言語に変換
① 字句解析 : lexical analyzer
② 構文解析 : parser
③ コード生成 : code generator
4.アセンブル (assembler)
アセンブリ言語を機械語に変換
オブジェクトファイル
5.リンク (linker)
ライブラリ、オブジェクトファイルを結合
ダイナミックリンク (実行時に参照)
6.実行可能プログラム
2.プログラムの実行
プログラムの実行は CPUが行います
CPU : 中央処理装置
・ OSがプログラムをメモリに転送
・ メモリからCPUに転送し、解読をして実行
CPU処理の基本
① Fetch : 命令をレジスタに読み込む
② Decode : レジスタの命令を解読
③ Execute : 演算、制御など命令を実行
CPUの構成
・ 制御装置
・ 演算装置 (ALU)
・ 記憶装置 (レジスタ)
スレッドの生成
・ プログラムを実行 (プロセス生成)
・ プロセス内部でスレッド生成
スレッド : Thread
・ コードを実行する実体
・ 関数、サブルーチンから生成
・ コード、データ、レジスタ値(コンテキスト)
・ スレッドが無いとプロセスのプログラムは実行できない
プロセス : Process
・ メモリに展開された実行中のプログラム
・ スレッドを含むリソースコンテナ
・ リソースはメモリ、ファイルアクセスなどスレッド実行に必要
・ OSが管理する実行中のプログラムの単位
3.CPUアーキテクチャ
設計構想の分類
① RISC : Reduced Instruction Set Computer
縮小命令セット (単純な命令の組み合わせで実行)
② CISC : Complex Instruction Set Computer
複合命令セット (複雑な処理も1つの命令で実行)
命令セット : CPUで使用する命令の集合と動作の規定
CPU基本機能の拡張分類
① x86
・IA-32アーキテクチャ
・CISC
・32 bit
・リトルエンディアン
・i386
② x86
64
_
・IA-32拡張版
・CISC
・64 bit
・リトルエンディアン
・AMD64
バイトオーダー : メモリのデータ格納方式
① ビッグエンディアン : 0x12, 0x34
② リトルエンディアン : 0x34, 0x12
※ 0x1234 (2バイト以上)
4.データ構造
メモリのデータ配置
Data Structure: C
・変数 : variable
・配列 : array[]
・構造体: struct
1)変数
・データとしてメモリ確保
・型がメモリサイズ決定
・メモリ空間での名前参照
・データ型
int型 : 4バイト(整数型)
char型: 1バイト (整数型/文字型)
・定義(宣言)
int s;
int a,b;
・代入
s = 10;
・初期化(宣言+代入)
int x = 2;
int y = {3};
・文字: character
char x = ‘A’;
2)配列
・連続したメモリ配置
・要素は同じ型
・文字列: char型配列
char x[4] = “ABC”;
char y[4] = {‘A”B”C’,’¥0′};
終了文字=’¥0′: ASCII 0x00(NUL)
・int型
int z[3] = {1,2,3};
・main関数への引数(コマンドライン)
int main(int argc, char *argv[]);
argc: argument count
argv: argument vector
char *argv[]: 配列の先頭要素へのポインタ
(文字列の先頭アドレス)
*argv[] と**argv は同じ
argc: argvの要素数
argv[0], argv[1], argv[2] -> 3
argv[0]: プログラム名
argv[1]: 引数1
argv[2]: 引数2
vector: ベクタ
・複数の文字列を格納するデータ構造
・char *型の配列
・(char *)0が最後の要素
3)構造体
・配列と異なり連続したメモリの配置ではない
・メモリ配置は境界調整のためパディング
・要素は複数の型、複数のデータ
・構造体タグ(型の名前)
struct ABC (struct ABC型)
struct: 構造体宣言(キーワード)
・構造体を格納する変数
struct ABC x;
(struct ABC型の変数x)
・構造体メンバ(データ定義)
struct ABC {}x;
ブロック内でメンバ定義
{int i, char d[5];}
・typedef: 型に別名を付ける
type name(型名)-> define(定義)
typedef struct list list;
struct list -> list
構造体タグ名と型名は名前空間が異なるので同名でも可
・名前空間: C
・変数名、関数名、型名
・構造体タグ名、共用体タグ名

View数

246

カテゴリーアーカイブ
月別アーカイブ
ランキング

クリニックについて

CLINIC OVERVIEW

料金表

PRICE LIST