SAK 図書館
パソコン基礎知識 C 言語編 (その七) 数値関数、math.h、stdlib.h、その他
■数値関数 (数学関数)
・数値関数を使用する場合は、math.h をインクルードすること。
尚、sizeof() に math.h は必要ない。
・stdlib.h には、メモリアロケートと乱数系がある。
■math.h
sin()
cos()
tan()
asin()
acos()
atan()
sinh()
cosh()
tanh()
exp()
log()
log10()
pow() べき乗
sqrt() 平方根
fabs() 絶対値
fmod()
/*
========================================================================
sin()、cos() テスト
========================================================================
*/
// インクルードヘッダ
#include <stdio.h>;
#include <math.h>;
// 関数プロトタイプ宣言
int main(void);
/*
========================================================================
メイン
========================================================================
*/
int main(void)
{
double i;
double j = 3.14159;
double s;
double c;
printf("sin()、cos() テスト\n");
for (i = 0; i <= j; i += j / 8) {
s = sin(i);
c = cos(i);
printf("i = %f sin = %f cos = %f\n", i, s, c);
}
printf("-- 終了 --\n");
return(0);
}
■stdlib.h
rand()
■stdio.h
scanf("%c%c", a, b)
| | |_ 変数
| |_ 変数
|_ 変数に読み込む書式
** 標準入力(キーボード) より、データを受け取る。
■エスケープシーケンス
・Windows 時代になって、あまり escape code を使うことがない。
\r ラインフィード
\n 改行
\0 NULL 文字
■Windows C
・Windows プログラミングでは、string.h をはじめ、メモリアロケートなど、
標準ライブラリを使うことはほとんどない。
Windows API にそのほとんどが用意されている。
コンソールプログラムを除き、標準の C スタイルとも大きく違う。
次のコードは、Windows C ソースの極一部を抜き出したものである。
・尚、Windows では、マウスカーソルを「カーソル」、キーボード入力カーソ
ルを「キャレット」と呼ぶ。VB などの呼び名と Windows API での呼び名は
微妙に違うので注意する。
/*
========================================================================
ウィンドウメイン
========================================================================
*/
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR CmdLine, int CmdShow)
{
MSG msg;
#ifdef SET_ACCS
HWND hWnd;
HACCEL hAccs;
#endif
// ウィンドウ準備
#ifdef SET_ACCS
if ((hWnd = WinInit(hInstance, hPrevInst, CmdLine, CmdShow, &hAccs)) == NULL) return(ERR_RET);
#else
if (WinInit(hInstance, hPrevInst, CmdLine, CmdShow) == NULL) return(ERR_RET);
#endif
// メッセージループ
#ifdef SET_ACCS
while (GetMessage(&msg, NULL, 0, 0)) {
if (TranslateAccelerator(hWnd, hAccs, &msg) == NULL) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
}
#else
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
#endif
return(msg.wParam);
}
/*
========================================================================
ウィンドウプロシジャ
========================================================================
*/
LRESULT CALLBACK _export WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
// メッセージ処理
switch (message) {
// ドラッグ and ドロップ
#ifdef SAK_OPEN
case WM_DROPFILES:
if (AutoTimeID != NULL) {
KillTimer(hWnd, ID_AUTOTM);
AutoTimeID = NULL;
}
AutoFile = AutoOpen = NULL;
return(DragAndDrop(hWnd, wParam));
#endif
// ウィンドウ作成
case WM_CREATE:
CreateOwn(hWnd);
return(0);
// サイズ固定
case WM_GETMINMAXINFO:
MinMaxOwn(lParam);
return(0);
// サイズ変更
case WM_SIZE:
SizeOwn(hWnd, lParam);
return(0);
// ウィンドウ移動
case WM_MOVE:
MoveOwn(lParam);
return(0);
// アクティブ
#ifdef SAK_BMP
case WM_ACTIVATE:
if (wParam != 0) {
PaintBmpNow(hScreen);
ValidateRect(hScreen, NULL);
}
return(0);
#endif
// パレット変更
#ifdef BMP_SCROLL
case WM_PALETTECHANGED:
ChgPal(hWnd, wParam, hPal);
return(0);
#endif
// フォーカス
case WM_SETFOCUS:
SetFocus(hScreen);
return(0);
// 再画像
case WM_PAINT:
#ifdef SCROLL_BAR
#ifdef SMART_ICON
if (Smart) {
PaintOwn(hWnd, SMART_HEIGHT, VScrMx, HScrMx);
}
else {
PaintOwn(hWnd, NULL, VScrMx, HScrMx);
}
#else
PaintOwn(hWnd, SMART_HEIGHT, VScrMx, HScrMx);
#endif
#else
#ifdef SMART_ICON
if (Smart) {
PaintOwn(hWnd, SMART_HEIGHT, NULL, NULL);
}
else {
PaintOwn(hWnd, NULL, NULL, NULL);
}
#else
PaintOwn(hWnd, SMART_HEIGHT, NULL, NULL);
#endif
#endif
return(0);
// タイマー
case WM_TIMER:
if (wParam == ID_AUTOTM) {
KillTimer(hWnd, ID_AUTOTM);
AutoTimeID = NULL;
if (!IsIconic(hWnd)) PostMessage(hWnd, WM_COMMAND, IDM_OPEN, NULL);
}
else {
TimerProc2(hWnd);
}
return(0);
// メニュー選択
#ifdef SET_MENU
case WM_COMMAND:
if (AutoTimeID != NULL) {
KillTimer(hWnd, ID_AUTOTM);
AutoTimeID = NULL;
}
MenuOwn(hWnd, wParam);
return(0);
#endif
// コントロールメニュー選択
#ifndef SET_MENU
case WM_SYSCOMMAND:
if (MenuOwn(hWnd, wParam)) return(0);
break;
#endif
// アイコンオープン
case WM_QUERYOPEN:
if (!Desk) break;
return(0);
// ウィンドウクローズ
case WM_CLOSE:
#ifdef END_MESSAGE
if (EndMsg == END_MSG && !hPrevInst) {
MessageBeep(0);
if (MsgBox(hWnd, IDS_NLEND, BEEP_OFF, MB_YESNO | MB_ICONQUESTION) == IDNO) return(0);
}
#endif
#ifdef SAK_SAVE
if (ChkSave(hWnd, CurDir, FileNm, IDM_SAVE)) return(0);
#endif
break;
// ウィンドウ廃棄
case WM_DESTROY:
PostQuitMessage(Fine(hWnd, 0));
return(0);
}
// デフォルトメッセージ処理
return(DefWindowProc(hWnd, message, wParam, lParam));
}
■パソコン基礎知識 C 言語編資料
■プログラミング言語資料
■パソコン基礎知識 ハード編資料
■パソコン基礎知識 画像編資料
■パソコン基礎知識 Windows 編資料
■コンピュータシステム導入編資料