SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

パソコン基礎知識 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 編資料
■コンピュータシステム導入編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK