1. เริ่มต้นเขียน JavaScript

การเขียน JavaScript จะต้องมีความรู้การเขียน HTML พอควร เพราะ JavaScript จะทำงานควบคู่กับ HTML ดังนั้นก่อนจะเริ่มต้นเรียน JavaScript ควรจะทำความเข้าใจกับ HTML ก่อน

การเขียน JavaScript จะเขียนภายใน script tag โดยจะเขียนฝังไว้ใน HTML เลยหรือนำเข้าจากไฟล์ .js ภายนอกก็ได้ ตัวอย่างการเขียนฝังใน HTML

<html>
 <head>
  <title></title>
 </head>
 <body>
  <script type="text/javascript">
   document.write("The date is " + (new Date()).toDateString());
  </script>
 </body>
</html>

สังเกตที่ บรรทัด 6-8

ผลลัพของตัวอย่างด้านบน

ตัวอย่างการเขียนโดยนำเข้าจากไฟล์ภายนอก

<html>
 <head>
  <title>Script Example</title>
  <-- Example of inefficient script positioning -->
  <script type="text/javascript" src="file1.js"></script>
  <script type="text/javascript" src="file2.js"></script>
  <link rel="stylesheet" type="text/css" href="styles.css">
 </head>
 <body>
  <p>Hello world!</p>
 </body>
</html>

สังเกตที่ บรรทัด 5-6

สังเกต script tag จะมี type="text/javascript" ซึ่งใส่ก็ได้ไม่ใส่ก็ได้ เพราะสำหรับ HTML5 script tag จะถูก Default เป็น JavaScript อยู่แล้ว

คำแนะนำ

จาก Script ตัวอย่างที่ผ่านมา จะเขียน JavaScript ไว้ใน head tag ของ HTML ซึ่งการทำงานของเว็บไซต์เมื่อเจอ script tag หากมี src attribute โปรแกมจะหยุดรอ แล้วโหลดไฟล์จากภายนอกและประมวลผลทันทีแล้วจึงจะทำงานต่อไป ถึงแม้ว่าโปรแกรมจะทำงานได้อย่างปกติ แต่การเขียนวิธีนี้จะทำให้เกิดปัญหาทางด้านความเร็วของ website เพราะต้องเสียเวลาหยุดรอโหลดและประมวลผลไฟล์ JavaScript เสร็จก่อนทำให้หน้าเว็ปเป็นหน้าขาวๆ

ดังนั้น หากไม่จำเป็นต้องให้ JavaScript ประมวลผลก่อน ควรแทรก script tag ไว้ข้างล่างสุดของ body tag ดังตัวอย่างด้านล่างบรรทัด 9-11 เพื่อให้เนื้อหาของเว็ปไซต์โหลดเสร็จก่อนแล้วโหลดและประมวลผลไฟล์ JavaScript ทำให้อย่างน้อยผู้ใช้ได้เห็นหน้าเว็ปเกิดการโหลดไม่ใช่หน้าขาวๆ เปล่าๆ

<html>
 <head>
  <title>Script Example</title>
  <link rel="stylesheet" type="text/css" href="styles.css">
 </head>
 <body>
  <p>Hello world!</p>
  <-- Example of recommended script positioning -->
  <script type="text/javascript" src="file1.js"></script>
  <script type="text/javascript" src="file2.js"></script>
  <script type="text/javascript" src="file3.js"></script>
 </body>
</html>

เท่านี้เองก็ได้รู้ตำแหน่งของการเขียน JavaScript แล้วพบกันใหม่ในบทความถัดไปเน้ออ ..

1. เริ่มต้นเขียน JavaScript

2. JavaScript การแจ้งเตือนและการแสดงผล Hello World

1. alert การแจ้งเตือน :

<script>
 alert('hello world!!');
</script>

2. confirm การยืนยัน :

<script>
 if(confirm('hello world?')) 
  alert('yes');
 else 
  alert('no');
</script>

3. prompt การโต้ตอบ :

<script>
 var you_say = prompt('hello world?', 'hi');
 alert('you say '+ you_say);
</script>

3. prompt การโต้ตอบ :

<script>
 var you_say = prompt('hello world?', 'hi');
 alert('you say '+ you_say);
</script>

4. console การแสดงผลสำหรับนักพัฒนา กด [Ctrl + Shift + J] สำหรับ Google Chrome :

<script>
 console.log('hello world....');
</script>
2. JavaScript การแจ้งเตือนและการแสดงผล Hello World

c# - ตัวดำเนินการ Operators, ชนิดข้อมูล Types, และตัวแปร Variables

C# Operators, Types, and Variables


วัตถุประสงค์ของบทความนี้นะครับ
  • เข้าใจว่าตัวแปรคืออะไร
  • ชนิดของตัวแปรคืออะไร
  • ตัวดำเนินการคืออะไร
ตัวแปรและชนิดของข้อมูล Variables and Types

          ตัวแปรเป็นภาชนะเก็บข้อมูล คุณสามารถใส่ข้อมูลลงไปในตัวแปรและสามารถเรียกใช้ข้อมูลนั้นผ่านตัวแปรเมื่อต้องการ ความหมายของข้อมูลในตัวแปรนั้นจะถูกระบุได้จาก ชนิดข้อมูลของตัวแปร


1. ข้อมูลชนิดตรรกะ The Boolean Type

          การประกาศตัวแปร boolean จะใช้คำว่า bool ซึ่งจะเก็บค่าเพียง 2 ค่าเท่านั้นคือ true , false  ในภาษาอื่น เช่น ภาษา C, C++ สามารถใช้เลข 0 แทน false และเลข 1 แทน true ได้ ในภาษา C# จะไม่ได้ ในตัวอย่างที่ 1 เป็นการยกตัวอย่างการใช้เขียนโปรแกรม

ตัวอย่างที่ 1 แสดงค่าใน Boolean

using System;

class Booleans
{
    public static void Main()
    {
        bool content = true;
        bool noContent = false;

        Console.WriteLine("It is {0} that C# Station provides C# programming language content.", content);
        Console.WriteLine("The statement above is not {0}.", noContent);
    }
}

ผลลัพธ์


It is True that C# Station provides C# programming language content.
The statement above is not False. 


2. ชนิดข้อมูลตัวเลข Integral Types

          ในภาษา C# Integral Types เป็นหมวดของชนิดข้อมูลที่เป็นตัวเลขจำนวนเต็ม ทั้ง signed, unsigned, และข้อมูลตัวอักษร (char) ซึ่ง char เป็น Unicode character หาอ่านได้่ที่ http://www.unicode.org/

TypeSize (in bits)Range
sbyte8-128 to 127
byte80 to 255
short16-32768 to 32767
ushort160 to 65535
int32-2147483648 to 2147483647
uint320 to 4294967295
long64-9223372036854775808 to 9223372036854775807
ulong640 to 18446744073709551615
char160 to 65535

          ชนิดข้อมูลตัวเลขชุดนี้สามารถนำมาคำนวณทางคณิตศาสตร์ ยกเว้น Char คุณสามารถเลือกใช้ชนิดข้อมูลจากตารางข้างบนนี้ตามความเหมาะสมโดยพิารณาจากค่า Range ให้เหมาะสมกับโปรแกรมของคุณ

ตัวอย่างที่ 2 โปรแกรมจะ number1 และ number2 มาบวกกัน

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
                  int number1, number2;

                  Console.WriteLine("Please enter a number:");
                  number1 = int.Parse(Console.ReadLine());

                  Console.WriteLine("Thank you. One more:");
                  number2 = int.Parse(Console.ReadLine());

                  Console.WriteLine("Adding the two numbers: " + (number1 + number2));

                  Console.ReadLine();
        }
    }
}

3.ชนิดข้อมูลเลขทศนิยม Floating Point and Decimal Types

          ชนิดข้อมูลทศนิยมทั้ง float และ double จะถูกใช้แทนจำนวนจริง ส่วน decimal ส่วนมากใช้ในทาง financial หรือ money values.

TypeSize (in bits)precisionRange
float327 digits1.5 x 10-45 to 3.4 x 1038
double6415-16 digits5.0 x 10-324 to 1.7 x 10308
decimal12828-29 decimal places1.0 x 10-28 to 7.9 x 1028

          การใช้ชนิดข้อมูลทศนิยม ( Floating Point ) เรามันใช้เมื่อมีการหารหรือคำนวณเศษส่วนที่ค่าไม่ลงตัว ส่วนการคำนวณทางการเงิน decimal เป็นทางเลือกที่ดีที่สุด เพราะว่าเราสามารถหลีกเลี่ยงปัญหา rounding errors ได้

4. ข้อความ The string Type

          String เป็นกลุ่มของ Char ที่เรียงต่อกันเป็นข้อความ ตัวอักษรบางตัวพิมพ์ออกหน้าจอไม่ได้ แต่เรายังต้องการใช้มัน เพราะฉะนั้นในภาษา C# จึงมีกรณีพิเศษเมื่อต้องการใช้อักษรเหล่่านั้นโดยการใช้เครื่องหมาย '\'

Escape SequenceMeaning
\'Single Quote
\"Double Quote
\\Backslash
\0Null, not the same as the C# null value
\aBell
\bBackspace
\fform Feed
\nNewline
\rCarriage Return
\tHorizontal Tab
\vVertical Tab

ตัวอย่างที่ 3 การประกาศตัวแปร string และการใช้งานเบื้องต้น

          โปรแกรมจะแสดงชื่อและนามสกุลตามที่ประไว้ในตัวแปรชื่อ firstName และ lastName จากนั้นโปรแกรมจะรับชื่อและนามสกุลใหม่อีกครั้งและแสดงชื่อนามสกุลใหม่

using System;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string firstName = "John";
            string lastName = "Doe";

            Console.WriteLine("Name: " + firstName + " " + lastName);

            Console.WriteLine("Please enter a new first name:");
            firstName = Console.ReadLine();

            Console.WriteLine("New name: " + firstName + " " + lastName);

            Console.ReadLine();
        }
    }
}

5. ตัวดำเนินการ C# Operators

         เครื่องหมายในการคำนวณทางคณิตศาสตร์ต่างๆ ทั้งบวก ลบ คูณ หาร ตรรกะ ซึ่งจะต้องใช้ร่วมกับตัวแปรเพื่อหาผลลัพธ์ของสมการซึ่งแสดงตามตารางด้านล่างนี้แล้ว

Category (by precedence)Operator(s)Associativity
Primaryx.y  f(x)  a[x]  x++  x--  new  typeof  default  checked  unchecked delegateleft
Unary+  -  !  ~  ++x  --x  (T)xright
Multiplicative*  /  %left
Additive+  -left
Shift<<  >>left
Relational<  >  <=  >=  is asleft
Equality==  !=right
Logical AND&left
Logical XOR^left
Logical OR|left
Conditional AND&&left
Conditional OR||left
Null Coalescing??left
Ternary?:right
Assignment=  *=  /=  %=  +=  -=  <<=  >>=  &=  ^=  |=  =>right

ตัวอย่างโปรแกรมการใช้ operators ต่างๆ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
using System;

class Unary
{
    public static void Main()
    {
        int unary = 0;
        int preIncrement;
        int preDecrement;
        int postIncrement;
        int postDecrement;
        int positive;
        int negative;
        sbyte bitNot;
        bool logNot;

        preIncrement = ++unary;
        Console.WriteLine("pre-Increment: {0}", preIncrement);

        preDecrement = --unary;
        Console.WriteLine("pre-Decrement: {0}", preDecrement);

        postDecrement = unary--;
        Console.WriteLine("Post-Decrement: {0}", postDecrement);

        postIncrement = unary++;
        Console.WriteLine("Post-Increment: {0}", postIncrement);

        Console.WriteLine("Final Value of Unary: {0}", unary);

        positive = -postIncrement;
        Console.WriteLine("Positive: {0}", positive);

        negative = +postIncrement;
        Console.WriteLine("Negative: {0}", negative);

        bitNot = 0;
        bitNot = (sbyte)(~bitNot);
        Console.WriteLine("Bitwise Not: {0}", bitNot);

        logNot = false;
        logNot = !logNot;
        Console.WriteLine("Logical Not: {0}", logNot);
    }
}

อธิบายโปรแกรม 

17    preIncrement = ++unary;
 ++unary  หมายถึง เพิ่มค่าในตัว unary ขึ้น 1 ก่อน แล้วจึงจะส่งค่าไปให้ preIncrement ดังนั้น preIncrement = 1

 20   preDecrement = --unary; 
--unary เหมือนบรรทัดที่ 17 แต่เป็นการลดค่าลง ดังนั้น preDecrement จึ่งเท่ากับ 0

23    postDecrement = unary--;
unary-- คือ ส่งค่าไปยัง preIncrement ก่อน แล้วจึงลดค่าลง 1 ทีหลัง ดังนั้น preIncrement = 0

26    postIncrement = unary++;
unary++ เหมือนกับบรรทัดที่ 23 แต่เป็นการเพิ่มค่าขึ้น 1

31        positive = -postIncrement;
32        Console.WriteLine("Positive: {0}", positive);
33
34        negative = +postIncrement;
35        Console.WriteLine("Negative: {0}", negative);
ส่วนนี้เป็นเหมือนกันคำนวณทางคณิตศาสตร์นั้นคือ ค่าลบ * ลบ = ค่าบวก, ค่าบวก*ลบ=ลบ
ซึ่งในบรรทัด 31 postIncrement = -1 ;  -(-1) = 1
และบรรทัด 34   postIncrement = -1 ;  +(-1) = -1

37       bitNot = 0;
38       bitNot = (sbyte)(~bitNot);
39       Console.WriteLine("Bitwise Not: {0}", bitNot);
บรรทัดที่ 38 (~bitNot) คือการกลับบิต จาก "00000000" = 0 เป็น "111111111" = -1

41      logNot = false;
42      logNot = !logNot;
43      Console.WriteLine("Logical Not: {0}", logNot);
บรรทัดที่ 42 !logNot คือการ NOT ทางตรรกะศาสตร์ คือการเปลี่ยนเป็นตรงข้ามคือ false -> true

ผลลัพธ์ที่ได้

pre-Increment: 1
pre-Decrement 0
Post-Decrement: 0
Post-Increment: -1
Final Value of Unary: 0
Positive: 1
Negative: -1
Bitwise Not: -1
Logical Not: true 


ตัวอย่างสุดท้าย

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;

class Binary
{
    public static void Main()
    {
        int x, y, result;
        float floatresult;

        x = 7;
        y = 5;

        result = x+y;    // 7 + 5 = 12
        Console.WriteLine("x+y: {0}", result);

        result = x-y;    // 7 - 5 = 2
        Console.WriteLine("x-y: {0}", result);

        result = x*y;    // 7 * 5 = 35
        Console.WriteLine("x*y: {0}", result);

        result = x/y;     // 7 / 5 = 1 เพราะเป็นจำนวนเต็มหารจำนวนเต็ม = จำนวนเต็ม
        Console.WriteLine("x/y: {0}", result);

        floatresult = (float)x/(float)y;  // 7 / 5 = 1.4
        Console.WriteLine("x/y: {0}", floatresult);

        result = x%y;    // 7 % 5 = 2 เป็นการหารแล้วเอาเศษ 7 / 5 = 1 เศษ 2
        Console.WriteLine("x%y: {0}", result);

        result += x;    //หมายถึง result = result + x ;ดังนั้นจะได้ result = 2 + 7 = 9
        Console.WriteLine("result+=x: {0}", result);
    }
}

ผลลัพธ์ที่ได้

x+y: 12
x-y: 2
x*y: 35
x/y: 1
x/y: 1.4
x%y: 2
result+=x: 9

เขียนโปรแกรมภาษา C# Hello, World!

C# Hello World Tutorial

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

ตัวอย่างที่ 1


// Hello1.cs
public class Hello1
{
   public static void Main()
   {
      System.Console.WriteLine("Hello, World!");
   }
}

ผลลัพธ์

Hello, World!

อธิบายโค้ด
  • method หลักทุกตัวต้องอยูในคลาส
  • ในคลาส System.Console จะมี method ชื่อ WriteLine อยู่ มีสามารถในการแสดงข้อความออกทางคอนโซลได้

ตัวอย่างที่ 2

          เพื่อง่ายต่อการเขียนคำสั่งแสดงผลทางหน้าจอในครั้งต่อไปเราสามารถเรียกใช้ System ได้ดังนี้

// Hello2.cs
using System;

public class Hello2
{
   public static void Main()
   {
      Console.WriteLine("Hello, World!");
   }
}

ตัวอย่างที่ 3

          ถ้าคุณต้องการพิมพ์ข้อมูลเข้าผ่านทาง Command Line เพียงแค่เปลี่ยนเพิ่ม Argument ใน method หลักตามที่แสดงด้านล่าง ซึ่งในตัวอย่างนี้จะนับและแสดงผล Argument ใน Command line

// Hello3.cs
// arguments: A B C D
using System;

public class Hello3
{
   public static void Main(string[] args)
   {
      Console.WriteLine("Hello, World!");
      Console.WriteLine("You entered the following {0} command line arguments:",
         args.Length );
      for (int i=0; i < args.Length; i++)
      {
         Console.WriteLine("{0}", args[i]); 
      }
   }
}

ผลลัพธ์

Hello, World!
You entered the following 4 command line arguments:
A
B
C
D

ตัวอย่างที่ 4

          การคืนค่า return code โดยเพิ่มคำสั่งตามตัวอย่างด้านล่างนี้เลย

// Hello4.cs
using System;

public class Hello4
{
   public static int Main(string[] args)
   {
      Console.WriteLine("Hello, World!");
      return 0;
   }
}

ผลลัพธ์

Hello, World!

ตัวอย่างที่ 5

          หากคุณรันโปรแกรมแล้วหน้าคอนโซลดับไปไม่ทันดูผลลัพธ์สามารถเพิ่มโค้ดได้ดังนี้


using System;

   class HelloWorld
   {
      static void Main(string[] args)
      {
         Console.WriteLine("Hello World");
         Console.ReadKey();
      }
   }




Compiling and Running with Arguments in Java

Compiling and Running with Arguments


               ในส่วนนี้เป็นการพูดถึงเมื่อเราต้องการพิมพ์บางอย่างออกทางหน้าจอ เราต้องคอมไพล์โค้ดของคุณและรันมัน ซึ่งเราต้องใช้คำสั่งเพื่อให้มันทำงานนั่นคือ
  • java (or java.exe)
  • javac (or javac.exe)
นั่นทำให้คุณต้องไปหาโหลดและติดตั้งตัว JDK (Java Development Kit)

ถ้าเรานำ code จากบทความก่อนหน้านี้มาใส่มันลงไปให้ไฟล์ MyFirstClass.java เราจะต้องคอมไพล์และรัน :


javac MyFirstClass.java

มันจะสร้างไฟล์ MyFirstClass.class แล้วนำมาคอมไพล์เป็น Java code เพื่อรันมัน เราต้องการรัน Java เราใช้แค่ชื่อของ Class เช่น

แบบนี้ผิด
java MyFirstClass.class

แบบนี้ถูกต้อง
java MyFirstClass



Arguments


             ภาษา Java ใน method หลักเราเรียกใช้ Array of String เป็น argument ซึ่งเป็นช่องทางในนำค่าต่างๆ จาก Command Line มาสู่โปรแกรมของเรา และทุก Arrays ในภาษา java จะมีตัวแปร lenght เป็นตัวนับความยาวของ Array เราสามารถเข้าถึง Array แบบง่ายๆ โดย for

public class Arguments {
    public static void main(String[] args) {
        for (int i = 0; i < args.length; i++) {
            System.out.println(args[i]);
        }
    }
}

จากนั้นลองคอมไพล์แล้วรัน
javac Arguments.java
java Arguments arg0 arg1 arg2

การเขียนโปรแกรม java Objects

Objects


ทุกสิ่งในภาษา Java จะอยู่ใน Classes และ Objects

class Point {
    int x;
    int y;
}

ใน class point มีการประกาศตัวแปร x , y เราสร้าง object ชื่อ p โดยต้องใช้คำสั่ง new


Point p = new Point();

ในกรณีนี้เราประกาศโดยใช้ default constructor คือไม่มีการให้ค่าเริ่มต้น หรือเราสามารถ constructor เองได้ โดย

class Point {
    int x;
    int y;
    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

ตอนนี้เราสามารถกำหนดค่าเริ่มต้นให้กับ Object ได้แล้วเช่น new Point(4, 1).


เราสามารถสร้างได้มากกว่า 1 constuctor ดังนั้น Point  สามารถสร้างได้หลายแบบ ลองสร้างอีกครั้ง

class Point {
    int x;
    int y;
    Point() {
        this(0, 0);
    }
    Point(int x, int y) {
        this.x = x;
        this.y = y;
    }

ข้อสังเกตในการใช้  this นี้ เราสามารถใช้มันใน constuctor ในการเรียก constuctor อื่น ใน class ของเราเอง

หลังจากเราประกาศ p แล้วสามารถเข้าถึงตัวแปรภายใน Object ได้เลย


p.x = 3;
p.y = 6;

Methods

เราสามารถประกาศ method ของ point ได้แล้ว

class Point {
    ... // code ของเราก่อนหน้านี้
    void printPoint() {
        System.out.println("(" + x + "," + y + ")");
    }
    Point center(Point other) {
        // เราคืนค่าจุดศูนย์กลางของจุดนี้และจุดอื่น
        return new Point((x + other.x) / 2, (y + other.y) / 2);
    }


Public and Private

เมื่อเราใช้  private  ก่อนตัวแปรหรือ method ในคลาสนั้น นั่นหมายถึงคลาสอื่นจะไม่สามารถใช้ตัวแปรนี้ได้ และเมื่อเราใช้  public หมายถึงคลาสไหนก็มาใช้ได้ ปกติเราจะเห็น Constuctor ใช้  public 

แบบฝึกหัด

สร้าง method ใหม่ชื่อ scale, จะสร้างจุดที่ใกล้จุด (0,0) ที่สุด โดยลดค่าที่ละครึ่งเช่น (8 , 4) หลังจากนั้นจะเป็น (4 , 2) , (1, 1)

class Point 
    private double x;
    private double y;
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
    public void print() {
        System.out.println("(" + x + "," + y + ")");
    }
    // สร้างตรงนี้
}

public class Main {
    public static void main(String[] args) {
        Point p = new Point(32, 32);
        for (int i = 0; i < 5; i++) {
            p.scale();
            p.print();
        }
    }
}

class Point {
    private double x;
    private double y;
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }
    public void print() {
        System.out.println("(" + x + "," + y + ")");
    }
    public void scale(){
    x = x/2;
    y = y/2;
    }
}

public class Main {
    public static void main(String[] args) {
        Point p = new Point(32, 32);
        for (int i = 0; i < 5; i++) {
            p.scale();
            p.print();
        }
    }