程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> “Hello world”不簡單

“Hello world”不簡單

編輯:C++入門知識

“Hello world”不簡單


hello world

由Kernighan和Ritchie合著的經典教程《The C Programming Language》的開篇第一個C程序例子是打印簡單的“hello world”。從此之後,“hello world”就成了描述一個人編寫的第一個程序的代名詞——不論是什麼語言技術,即使實際上程序並沒有在字樣上輸出“hello world”幾個字。

對於初學者來說,這“hello world”程序是讓人恐怖的。他會想“我一定非常笨,連這入門的hello world程序都覺得難。照這樣下去,我一定不會喜歡上編程。”

其實,這問題的原因是我們把“第一個”和”最簡單的一個“混淆了。“hello world”程序可以是任何的程序,沒有難易限制。當你第一次編程時,你不知道該用哪種編譯器、不知道代碼文件應該放到哪裡、不知道它們應該是什麼格式,等等。你需要去學。大量的知識在你真正能夠編程前都需要學習、慢慢的學會 。

John D. Cook

本文的作者 John D. Cook

當我最初開始學習編程時,我總希望能盡快的越過寫“hello world”程序的階段,希望能夠立刻開始編寫真正有用的程序。但事實上,我發現我大半輩子時間都在寫“hello world”程序,而且看不到結束的盡頭。

每當討論起“hello world”程序,幾乎避免不了的要說一說這世界上最恐怖的“hello world”程序:Charles Petzold在他的《Programming Windows》一書中描述的第一個Windows程序。我只能找到這本書的Windows 98版的。不知道它跟最初的原版有多大區別,但我印象裡原版裡的代碼會比現在這個更恐怖。

  1. /*------------------------------------------------------------ 
  2.    HELLOWIN.C -- Displays "Hello, Windows 98!" in client area 
  3.                  (c) Charles Petzold, 1998 
  4.   ------------------------------------------------------------*/ 
  5.    
  6. #include  
  7.    
  8. LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM) ; 
  9.    
  10. int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, 
  11.                     PSTR szCmdLine, int iCmdShow) 
  12.      static TCHAR szAppName[] = TEXT ("HelloWin") ; 
  13.      HWND         hwnd ; 
  14.      MSG          msg ; 
  15.      WNDCLASS     wndclass ; 
  16.    
  17.      wndclass.style         = CS_HREDRAW | CS_VREDRAW ; 
  18.      wndclass.lpfnWndProc   = WndProc ; 
  19.      wndclass.cbClsExtra    = 0 ; 
  20.      wndclass.cbWndExtra    = 0 ; 
  21.      wndclass.hInstance     = hInstance ; 
  22.      wndclass.hIcon         = LoadIcon (NULL, IDI_APPLICATION) ; 
  23.      wndclass.hCursor       = LoadCursor (NULL, IDC_ARROW) ; 
  24.      wndclass.hbrBackground = (HBRUSH) GetStockObject (WHITE_BRUSH) ; 
  25.      wndclass.lpszMenuName  = NULL ; 
  26.      wndclass.lpszClassName = szAppName ; 
  27.    
  28.      if (!RegisterClass (&wndclass)) 
  29.      { 
  30.           MessageBox (NULL, TEXT ("This program requires Windows NT!"), 
  31.                       szAppName, MB_ICONERROR) ; 
  32.           return 0 ; 
  33.      } 
  34.         
  35.      hwnd = CreateWindow (szAppName,                  // window class name 
  36.                           TEXT ("The Hello Program"), // window caption 
  37.                           WS_OVERLAPPEDWINDOW,        // window style 
  38.                           CW_USEDEFAULT,              // initial x position 
  39.                           CW_USEDEFAULT,              // initial y position 
  40.                           CW_USEDEFAULT,              // initial x size 
  41.                           CW_USEDEFAULT,              // initial y size 
  42.                           NULL,                       // parent window handle 
  43.                           NULL,                       // window menu handle 
  44.                           hInstance,                  // program instance handle 
  45.                           NULL) ;                     // creation parameters 
  46.         
  47.      ShowWindow (hwnd, iCmdShow) ; 
  48.      UpdateWindow (hwnd) ; 
  49.         
  50.      while (GetMessage (&msg, NULL, 0, 0)) 
  51.      { 
  52.           TranslateMessage (&msg) ; 
  53.           DispatchMessage (&msg) ; 
  54.      } 
  55.      return msg.wParam ; 
  56.    
  57. LRESULT CALLBACK WndProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) 
  58.      HDC         hdc ; 
  59.      PAINTSTRUCT ps ; 
  60.      RECT        rect ; 
  61.         
  62.      switch (message) 
  63.      { 
  64.      case WM_CREATE: 
  65.           PlaySound (TEXT ("hellowin.wav"), NULL, SND_FILENAME | SND_ASYNC) ; 
  66.           return 0 ; 
  67.              
  68.      case WM_PAINT: 
  69.           hdc = BeginPaint (hwnd, &ps) ; 
  70.              
  71.           GetClientRect (hwnd, &rect) ; 
  72.              
  73.           DrawText (hdc, TEXT ("Hello, Windows 98!"), -1, &rect, 
  74.                     DT_SINGLELINE | DT_CENTER | DT_VCENTER) ; 
  75.              
  76.           EndPaint (hwnd, &ps) ; 
  77.           return 0 ; 
  78.              
  79.      case WM_DESTROY: 
  80.           PostQuitMessage (0) ; 
  81.           return 0 ; 
  82.      } 
  83.      return DefWindowProc (hwnd, message, wParam, lParam) ; 



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved