成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

“Hello world”不簡單

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

[[124819]]

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

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

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

[[124820]]

本文的作者 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) ; 
責任編輯:張偉 來源: 程序師
相關推薦

2017-11-23 17:45:46

Yii框架IntelYii框架深度剖析

2012-02-20 14:26:48

JavaPlay Framew

2009-07-30 13:21:17

Scala入門Hello World

2009-08-11 10:32:23

什么是Groovy

2023-01-06 08:18:44

2023-09-04 07:30:03

Wasm匯編語言

2009-09-16 17:15:19

OSGi Bundle

2011-06-08 14:39:06

Qt 教程

2012-06-26 09:40:14

部署開發管理

2009-08-14 16:54:19

C# Hello Wo

2021-11-26 08:22:01

Java動態開發

2011-08-05 09:48:46

iPhone Interface

2024-04-11 13:13:27

2014-04-11 11:36:42

NDKAndroid開發終端

2009-07-20 10:06:47

虛擬化思杰操作系統

2010-01-19 10:10:28

2023-05-23 08:01:10

Netty網絡通信

2015-10-27 09:47:11

2021-03-30 13:48:47

WebAssemblyWeb瀏覽器編程語言

2009-06-11 14:00:34

jBPM用戶指南jBPM范例
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产乱码精品一区二区三区中文 | 中文字幕韩在线第一页 | 二区三区av | 亚洲一区 中文字幕 | 精品一区二区三区中文字幕 | 国产日韩精品视频 | 亚洲国产成人精品久久久国产成人一区 | 国户精品久久久久久久久久久不卡 | 一本在线 | 香蕉国产在线视频 | 日本三级黄视频 | 美国一级毛片a | 亚洲欧美日本在线 | 欧美一区二区三区视频 | 国产精品日女人 | 色婷婷精品久久二区二区蜜臂av | 美女国内精品自产拍在线播放 | 精品一区二区三区在线观看 | 欧美激情精品久久久久久 | 一区二区三区四区在线视频 | 欧美中文字幕 | 国产一区欧美 | 日韩免费视频一区二区 | 一本岛道一二三不卡区 | 就操在线 | 精品欧美一区二区在线观看 | 久久久久久久久国产成人免费 | 成人av看片 | 在线视频成人 | 亚洲精品在线国产 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 亚洲激情在线观看 | 亚洲乱码国产乱码精品精的特点 | 久久久久一区二区三区四区 | 日韩欧美中文在线 | 日韩精品一区二区三区在线播放 | 国产激情视频 | 伊人久久精品一区二区三区 | 欧美福利视频一区 | 久久蜜桃精品 | 成人免费在线观看视频 |