2007/Oct/04

โปรแกรมอมตะนิรันกาลของผู้เริ่มต้นเขียนโปรแกรม และคงเป็นโปรแกรมเดียวในโลกที่ไม่มีBUG คราวนี้เรามาลองเขียนโปรแกรมHello World ด้วย.NETกันบ้าง ใครที่ใช้ภาษาไหน ก็เปิดกันขึ้นมาเลย ใช้ตัวอย่างจากบทที่แล้วนะแหละ

เมื่อเปิดมาแล้ว ดูที่หน้าต่างSolutionกันก่อนเลยดีกว่า ตามรูปนี้เลยครับ

 

 

 

จากคราวที่แล้ว โปรเจคที่เราได้สร้างไว้นั้น โปรแกรมจะทำการสร้างFormขึ้นมา1ตัว ชื่อว่าForm1 ตอนนี้ ให้เราคลิ๊กขวาที่ Form1 แล้วเลือก "View Code" ขึ้นมา

 

Update ต่อ

ถ้าไม่มีอะไรผิดพลาด เราจะได้โค๊ดมาราวๆนี้

 

VB

Public Class Form1

End Class

 

Vc#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace TestWinApp
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
}
}

 

สำหรับVc++ ให้คลิ๊กชวาที่Form1.h เลือกViewCode

จะได้ราวๆนี้

#pragma once

 

namespace
TestWinApp {

using namespace System;

using namespace System::ComponentModel;

using namespace System::Collections;

using namespace System::Windows::Forms;

using namespace System::Data;

using namespace System::Drawing;

/// <summary>

/// Summary for Form1

///

/// WARNING: If you change the name of this class, you will need to change the

/// 'Resource File Name' property for the managed resource compiler tool

/// associated with all .resx files this class depends on. Otherwise,

/// the designers will not be able to interact properly with localized

/// resources associated with this form.

/// </summary>

public ref class Form1 : public System::Windows::Forms::Form

{

public:Form1(void)

{

InitializeComponent();

//

//TODO: Add the constructor code here

//

}

protected:

/// <summary>

/// Clean up any resources being used.

/// </summary>

~Form1()

{

if (components)

{

delete components;

}

}

private:

/// <summary>

/// Required designer variable.

/// </summary>

System::ComponentModel::Container ^components;

#pragma region Windows Form Designer generated code

/// <summary>

/// Required method for Designer support - do not modify

/// the contents of this method with the code editor.

/// </summary>

void InitializeComponent(void)

{

this->components = gcnew System::ComponentModel::Container();

this->Size = System::Drawing::Size(300,300);

this->Text = L"Form1";

this->Padding = System::Windows::Forms::Padding(0);

this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;

}

#pragma endregion

};

}

จะเห็นได้ว่า ความยาวของCode ในVc++จะยาวกว่าชาวบ้านมากมายรวมถึงยังมีสัญลักษณ์แปลกๆมาให้งงเล่นๆด้วย ที่เห็นชัดก็คือ

#pragma once 

คำสั่งพวกนี้ เป็นคำสั่งที่เรียกว่า PreProcessor Pre=ก่อน Processor=โปรเซส แปลรวมกันความหมายตรงตัวเด๊ะๆ คือ เป็นคำสั่งที่จะทำก่อนเริ่มกระบวนการProcess ในส่วนรายละเอียดของตรงนี้ ผมจะขอยกยอดไปพูดในหมวดของ Vc++ เพราะคำสั่งพวกนี้โดยมากแล้วถ้าเขียน.NET มันไม่ค่อยได้ใช่หรอก อย่างที่ผมเคยบอกไว้ว่าVc++ สามารถเขียนโปรแกรมที่เป็นManaged Code(พวกที่เขียนด้วย.NET) และUnmanageCode(C++ดั้งเดิม พวกที่เขียนด้วยWin32API และMFC ต่างๆ) เราก็ต้องใช้คำสั่งพวกนี้แหละมากำหนดค่าให้Compiler

 

กลับมาที่เองของ.NET ต่อจากตัวอย่างCodeที่เห็นนั้น เราจะเห็นว่า VB นั้นมีข้อแตกต่างกับVc# Vc++ ในเรื่องของโครงสร้างมากพอสมควร เมื่อดูจากตัวอย่างแล้วจะเห็นว่า โปรแกรมนั้นจะทำการสร้างClass ขึ้นมาตามชื่อของForm นั้นๆเช่น ถ้าFormนี้มีเชื่อว่าHello สร้างที่ถูกสร้างขึ้นมาก็จะชื่อว่า Hello ด้วยเช่นกัน

เมื่อเปรียบเทียบตัวอย่างด้านบนแล้ว จะเห็นว่าสิ่งที่Vb ต่างกับ ภาษาVc#และVc++ ก็คือสิ่งที่เรียกกันว่าNameSpace

 

NameSpace คืออะไร

    NameSpaceนั้น ถ้าจะเปรียบเทียบให้ง่ายก็เหมือนเป็นFolder ที่ทำหน้าที่จัดเก็บClassต่างๆไว้ให้เป็นหมวดหมู่ ยกตัวอย่างเช่น เรมีClass อยู๋10Class  ในนี้มีClassที่เกี่ยวข้องกับการแสดงผลอยู่5 มีClass จัดการด้านเสียงอีก3Class และจัดการด้านการรับInput อีก2 Class ถ้าไม่มีNameSpace เราก็จะเอาClassเหล่านี้ มากองๆรวมกันไว้ที่เดียวกัน ราวๆนี้

Class 1

Class 2

Class 3

Class 4

Class5

... Class10

 

หรือ ถ้าเรานำNameSpace มาช่วยก็ได้ เช่น

NameSpace Me

{

   NameSpace Display

   {

   Class1

   Class2....class5

   }

   Namespace Sound

   {

Class6 .... Class8

   }

 

   NameSpace Input

   {

       Class9

       Class10

   }

}

 เวลาเราจะใช้งาน เราก็จัดการเลือกมันมาแค่ส่วนที่เราจะใช้

เช่น ถ้าเราจะใช้Class ที่อยู่ในNameSpace ที่ชื่อ Display  เราทำได้ดังนี้

VB

Import Me.Display

 

VC# และVc++

 Using Me.Display;

 

เดี๋ยวมาต่อกันบทหน้า กับHello World2 เพราะว่าอันนี้มันยาวมากแล้ว เดี๋ยวจะงง ขึ้นบทใหม่เลยดีกว่า ที่ยาวไม่ใช่เพราะอะไร เรานอกเรื่องกันซะเยอะ เยอะถึงขนาดว่าHello World ยังไม่ได้เริ่มเป็นรูปเป็นร่างเลย

แต่ไอ้ที่นอกๆเรื่องนั้น ยืนยันได้ว่าเป็นเรื่องพื้นฐานที่ควรต้องรู้ทั้งสิ้น เพราะเรื่องNameSpace และอีกหลายๆอย่างนั้น มันเป็นพื้นฐานที่ต้องนำไปใช้ต่อยอดอีกเยอะมากกกกกกก บทต่อๆไปของผมก็จะเป็นในแนวๆนี้แหละครับ คือหัวข้อเป็นเรื่องนึงแต่ภายในก็จะนอกเรื่องออกทะเลลงมหาสมุทธไปอีกยาว แต่เชือได้เลยว่าเป็นประโยชน์ต่อการเขียนโปรแกรมแน่ๆ เพราะถ้าผมไม่เสริมเรื่องอื่นๆจนออกทะเลไปนั้น สุดท้ายแล้วสิ่งที่คุณจะได้ มันก็เป็นเพียงแค่โปรแกรมHello Worldเท่านั้นเอง

edit @ 12 Oct 2007 01:04:54 by GusZ

ชื่อ: 
เว็บไซต์: 
คอมเมนต์:




smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry

<< Home