วันศุกร์ที่ 24 กรกฎาคม พ.ศ. 2558

ชนิดของข้อมูลและตัวแปรในภาษาซี

ชนิดของข้อมูล (data type) ในการเขียนโปรแกรมหนึ่งๆ จะมีข้อมูลต่างๆ เข้ามาเกี่ยวข้องเช่น
การนับจำนวนรอบ (loop) ของการทำงานโดยใช้ข้อมูลชนิดจำนวนเต็ม หรือการแสดงข้อความ
โดยใช้ข้อมูลชนิดตัวอักษร จะเห็นว่าข้อมูลต่างๆ ถูกแบ่งออกเป็นหลายชนิดตามจุดประสงค์ของการใช้งาน
นอกจากนี้ข้อมูลแต่ละชนิด ยังใช้เนื้อที่หน่วยความจำ (memory) ไม่เท่ากันจึงมีการแบ่งชนิดของข้อมูล
ดังแสดงในตารางด้านล่าง
ตัวแปร (variable) เนื่องจากข้อมูลถูกเก็บอยู่ในหน่วยความจำ การอ้างถึงตำแหน่งของข้อมูลนี้
จึงมีความซับซ้อน ไม่สะดวกต่อการเขียนโปรแกรม จึงมีการเรียกหน่วยความจำ ในตำแหน่งที่สนใจผ่านตัวแปร
การประกาศตัวแปร (variable declaration) คือการจองเนื้อที่ในหน่วยความจำสำหรับเก็บค่าบางอย่าง
พร้อมทั้งกำหนดชื่อเรียกแทนหน่วยความจำในตำแหน่งนั้นเพื่อให้ผู้เขียนโปรแกรมมีความสะดวกในการเข้าถึง
ค่าที่เก็บอยู่ในหน่วยความจำดังกล่าว
รูปแบบการประกาศตัวแปร
type variable-name;
โดย
type คือชนิดของตัวแปร (ตามตารางด้านล่าง)
variable-name คือชื่อของตัวแปร (ควรตั้งชื่อให้มีความหมายสอดคล้องกับการใช้งานและจำง่าย)
ตัวอย่างการประกาศตัวแปรแบบต่างๆ
int num; /*ประกาศตัวแปรชนิิดจำนวนเต็ม ชื่อ num*/
float x;
char grade, sex; /*ประกาศตัวแปรชนิิดอักขระ ชื่อ grade และ sex (ประกาศพร้อมกันในบรรทัดเดียว)*/
float temp = 123.45; /*ประกาศตัวแปรชนิดเลขทศนิยมพร้อมกำหนดค่า 123.45*/
char c = "A", t = "B"; /*ประกาศตัวแปรชนิดอักขระสองตัว พร้อมกำหนดค่าให้แต่ละตัว*/
int oct = 0555; /*ประกาศตัวแปรชนิดจำนวนเต็มชื่อ num พร้อมกำหนดค่าคือ 555 (เป็นเลขฐานแปดเพราะมี 0 นำหน้า)*/
int hex = 0x88; /*ประกาศตัวแปรชนิดจำนวนเต็มชื่อ hex พร้อมกำหนดค่าคือ 88 (เป็นเลขฐาน 16 เพราะมี 0x นำหน้า)*/
***ข้อควรระวัง!!
-ชื่อตัวแปรจะต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมาย "_" เท่านั้น
-ภายในชื่อตัวแปรให้ใช้ตัวอักษร, ตัวเลข 0-9 หรือเครื่องหมาย "_"
-ห้ามมีช่องว่างในชื่อตัวแปร
-อักษรตัวพิมพ์เล็ก-ใหญ่ มีความแตกต่างกัน (case sensitive) เช่น Name, NAME และ name
-ถือเป็นชื่อที่แตกต่างกัน
-ห้ามซ้ำกับชื่อตัวแปรสงวน (reserved word)
-ตัวแปรชนิดข้อความ (string)
-ถ้าเราต้องการเก็บข้อความ "C programming language" ไว้ในตัวแปร จะทำได้อย่างไร?

ที่ผ่านมาเราทราบว่าเราสามารถเก็บข้อมูลชนิดตัวอักขระไว้ในตัวแปรชนิด char ได้ แต่ตัวแปรชนิด char นั้น
สามารถเก็บตัวอักขระได้เพียงตัวเดียวเท่านั้น ไม่สามารถเก็บทั้งข้อความได้ แล้วเราจะแก้ปัญหาได้อย่างไร?
หากพิจาณาให้ดี ข้อความดังกล่าวประกอบด้วยตัวอักขระ (ตัวอักษร+สัญลักษณ์) หลายๆ ตัวเรียงต่อกันเป็นสาย  ซึ่งเป็นลักษณะของตัวแปรแบบ array (จะได้กล่าวภายหลัง)
การประกาศตัวแปรแบบ array เพื่อเก็บข้อมูลดังกล่าวสามารถทำได้ดังนี้
type variable-name[size];
โดย
size คือขนาดของข้อความ+1 โดยขนาดที่เพิ่มขึ้นเพราะต้องเก็บอักขระสุดท้ายของข้อความเป็นอักขระ
\0 หรือ NULL เพื่อบอกว่าสิ้นสุดข้อความแล้ว

ตัวอย่างการประกาศตัวแปรแบบ array เพื่อเก็บข้อความ "C programming language" (22 ตัวอักษร)
ทำได้หลายวิธีดังนี้
char[23] text = "C programming language";
/*กำหนดขนาดเพิ่มขึ้น 1 ตัว สำหรับเก็บค่า \0 หรือ NULL ในตำแหน่งสุดท้าย*/
char[23] text = {'C',' ','p','r','o','g','r','a','m','m','i','n','g',' ','l','a','n','g','u','a','g','e','\0'};
/*กำหนดขนาดเพิ่มขึ้น 1 ตัว สำหรับเก็บค่า \0 หรือ NULL ในตำแหน่งสุดท้าย*/
char[] text = "C programming language";
/*ถ้าไม่กำหนดขนาดของ array แล้ว ตัวแปรภาษาซีจะกำหนดให้โดยมีขนาดเท่ากับขนาดข้อความ+1*/
นอกจากนี้เรายังสามารถแก้ไขตัวอักษรที่เก็บอยู่ใน array ได้โดยการอ้างอิงตำแหน่งเช่น
text[0] = 'A'; /*แก้ตัวอักษรตัวแรก (เริ่มนับจาก 0) จะได้ผลลัพธ์คือ A programming language*/
text[2] = ' '; /*ผลลัพธ์คือ A  rogramming language (ใส่ช่องว่างแทนตัว p)*/

ชนิดของตัวแปรในภาษาซี
ชนิดของตัวแปรขนาด (bits)ขอบเขตข้อมูลที่เก็บ
char
8
-128 ถึง 127
ข้อมูลชนิดอักขระ ใช้เนื้อที่ 1 byte
unsigned char
8
0 ถึง 255
ข้อมูลชนิดอักขระ ไม่คิดเครื่องหมาย
int
16
-32,768 ถึง 32,767
ข้อมูลชนิดจำนวนเต็ม ใช้เนื้อที่ 2 byte
unsigned int
16
0 ถึง 65,535
ข้อมูลชนิดจำนวนเต็ม ไม่คิดเครื่องหมาย
short
8
-128 ถึง 127
ข้อมูลชนิดจำนวนเต็มแบบสั้น ใช้เนื้อที่ 1 byte
unsigned short
8
0 ถึง 255
ข้อมูลชนิดจำนวนเต็มแบบสั้น ไม่คิดเครื่องหมาย
long
32
-2,147,483,648 ถึง 2,147,483,649
ข้อมูลชนิดจำนวนเต็มแบบยาว ใช้เนื้อที่ 4 byte
unsigned long
32
0 ถึง 4,294,967,296
ข้อมูลชนิดจำนวนเต็มแบบยาว ไม่คิดเครื่องหมาย
float
32
3.4*10e(-38) ถึง 3.4*10e(38)
ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 4 byte
double
64
3.4*10e(-308) ถึง 3.4*10e(308)
ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 8 byte
long double
128
3.4*10e(-4032) ถึง 1.1*10e(4032)
ข้อมูลชนิดเลขทศนิยม ใช้เนื้อที่ 16 byte

ฟังก์ชั่นในภาษาซี

ฟังก์ชัน ในภาษาซี มี 2 ชนิด คือ ฟังก์ชันมาตรฐาน(standard function)  กับ ฟังก์ชันที่ผู้เขียนโปรแกรมเขียนขึ้นเอง (user defined function)
ฟังก์ชันมาตรฐาน  
เป็นฟังก์ชันที่ผู้ผลิตคอมไพล์เลอร์เขียนขึ้นเพื่อผู้ใช้นำไปใช้ในการเขียนโปรแกรมเพื่อให้เขียนโปรแกรมได้สะดวกและง่ายขึ้น บางครั้งอาจเรียกว่า library functions  ปกติฟังก์ชันเหล่านี้จะจัดเก็บไว้ใน header files ดังนั้นผู้ใช้จะต้องรู้ว่าฟังก์ชันนั้นอยู่ใน header file ใด จึงจะนำไปเรียกใช้ในส่วนต้นของโปรแกรม ด้วย #include <header file.h> ได้ เช่น #include <stdio.h> ฟังก์ชันมีมากมาย อาจจำแนกดังนี้
ฟังก์ชันทางคณิตศาสตร์ เป็นฟังก์ชันที่ใช้ทางการคำนวณ ทางคณิตศาสตร์ ปกติอยู่ใน math.h ผลลัพธ์ ที่ได้จากฟังก์ชันกลุ่มนี้เป็นข้อมูลประเภท double ดังนั้นตัวแปรที่ใช้จึงเป็นพวกที่มีชนิดเป็น double
ฟังก์ชัน sin(x)  เป็นฟังก์ชันใช้คำนวณหาค่าของ sine โดย x มีค่าของมุมในหน่วย เรเดียน
ฟังก์ชัน cos(x) ใช้หาค่า cosine โดย  x มีหน่วยเป็นเรเดียน(radian)
ฟังก์ชัน tan(x) ใช้หาค่า tangent โดย  x มีหน่วยเป็นเรเดียน(radian)
ตัวอย่าง /* math1.c */
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{   float deg , angle, pi = 3.141592654;      clrscr();
    printf("Please enter value of angle in degree that you want to find tan cos sin :");
    scanf("%f",&deg);
    angle = deg * pi / 180;   /* เปลี่ยนค่า องศา ให้เป็นเรเดียน  */
    printf("\nvalue of tangent %4.0f degree is %4.2f ",deg,tan(angle));
    printf("\nvalue of sine %4.0f degree is %4.2f ",deg,sin(angle));
    printf("\nvalue of cosine %4.0f  degree is %4.2f ",deg,cos(angle));
}
ฟังก์ชัน sqrt(x)  ใช้หาค่ารากที่สองของ x โดย x เป็นตัวเลขหรือตัวแปรที่ไม่ติดลบ
ฟังก์ชัน exp(x)  ใช้หาค่า ex  โดย e มีค่าประมาณ 2.718282
ฟังก์ชัน  pow(x,y) ใช้หาค่า x y
ฟังก์ชัน log(x)  ใช้หาค่า log ฐาน e เรียกว่า natural logarithm โดย x เป็นตัวเลขหรือตัวแปรที่ไม่ติดลบ
ฟังก์ชัน log10(x)  ใช้หาค่า log ฐาน 10 โดย x เป็นตัวเลขหรือตัวแปรที่ไม่ติดลบ
ฟังก์ชัน ceil(x)  ใช้ในการปัดเศษทศนิยมของ x เมื่อ x เป็นเลขทศนิยม
ฟังก์ชัน floor(x)  ใช้ในการตัดเศษทศนิยมของ x ทิ้งเมื่อ x เป็นเลขทศนิยม
ฟังก์ชัน fabs(x)  ใช้ในการหาค่าสัมบูรณ์ของค่าคงที่หรือตัวแปรที่มีทศนิยม โดยเป็นบวกหรือลบก็ได้
ตัวอย่าง ให้นักเรียนศึกษาการทำงานของโปรแกรม /* math2.c */  แล้วป้อนโปรแกรมและตรวจสอบการทำงานว่าตรงกับที่คาดคะเนหรือไม่
/* math2.c */
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
    double x = 10.0 , y = 2.0 ,z = 16.0,a = 2.718282 , b = -2.718282 , m=1.0;
    clrscr();
    printf("\npow\(x,y\) = %4.2f  when x=10.0 y=2.0", pow(x,y));
    printf("\nsqrt\(z\) = %4.2f  when z=16.0", sqrt(z));
    printf("\nexp\(m\) = %4.6f  when  m=1.0",exp(m));
    printf("\nlog\(a\) = %4.2f  when a=2.718282",log(a));
    printf("\nlog10\(x\) = %4.2f  when x=10.0",log10(x));
    printf("\nceil\(a\) = %4.2f when a=2.718282",ceil(a));
    printf("\nceil\(b\) = %4.2f when b=-2.718282",ceil(b));
    printf("\nfloor\(a\) = %4.2f  when a=2.718282",floor(a));
    printf("\nfloor\(b\) = %4.2f  when b=-2.718282",floor(b));   
    printf("\nfabs\(a\) = %4.6f when a=2.718282" ,fabs(a));
    printf("\nfabs\(b\) = %4.6f when b=-2.718282" ,fabs(b));
}
ฟังก์ชันที่จัดการเกี่ยวกับตัวอักษร(character  functions)  เป็นฟังก์ชันที่จัดการกับตัวอักษร single char เท่านั้น ตัวอักษรนี้ใช้หน่วยความจำเพียง 1 ไบต์  ฟังก์ชันเหล่านี้อยู่ใน header file ชื่อ ctype.h ก่อนจะทำการเขียนโปรแกรมจึงต้อง #include <ctype.h> เข้ามาในส่วนต้นของโปรแกรม
ฟังก์ชัน  isalnum(cha) เป็นฟังก์ชันที่ใช้ตรวจสอบว่าข้อมูลในตัวแปร(ซึ่งคือตัวแปรประเภท char ) เป็นตัวอักขระหรือตัวเลขหรือไม่ ถ้าเป็นตัวอักษรหรือตัวเลข ฟังก์ชันจะส่งค่าที่ไม่ใช่ 0 มาให้ ถ้าข้อมูลในตัวแปร เป็นอักขระพิเศษอื่นที่ไม่ตัวอักษรหรือตัวเลขจะส่งค่าออกมาเป็น 0
ฟังก์ชัน  isalpha(cha)  เป็นฟังก์ชันที่ใช้ตรวจสอบว่าข้อมูลในตัวแปร(ซึ่งคือตัวแปรประเภท char ) เป็นตัวอักขระหรือไม่ ถ้าเป็นตัวอักษรฟังก์ชันจะให้ค่าที่ไม่ใช่ 0 ออกมาถ้าเป็นตัวเลขหรืออักขระพิเศษอื่นฟังก์ชันจะส่งค่า 0 ออกมา
 ฟังก์ชัน  isdigit(cha)  เป็นฟังก์ชันที่ใช้ตรวจสอบว่าข้อมูลในตัวแปร(ซึ่งคือตัวแปรประเภท char )  ฟังก์ชัน เป็นตัวเลขหรือไม่ ถ้าเป็นตัวเลขฟังก์ชันจะให้ค่าที่ไม่ใช่  0 ออกมา ถ้าเป็นตัวอักษรหรืออักขระพิเศษอื่น ฟังก์ชันจะส่ง 0 ออกมา
ตัวอย่าง   /* isalnumPhadigit.c */
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
main()
{
    clrscr();
    char cha1 = 'B' ,cha2 ='3',cha3= '&';
    printf("\n %d is return value of isdigit\(cha1\) of %c",isdigit(cha1),cha1);
    printf("\n %d is return value of isdigit\(cha2\) of %c ",isdigit(cha2),cha2);
     printf("\n %d is return value of isalpha\(cha3\) of %c ",isalpha(cha3),cha3);
     printf("\n %d is return value of isalpha\(A\) of %c ",isalpha('A'),'A');
      printf("\n %d is return value of isalpha\('0'\) of %c ",isalpha('0'),'0');
       printf("\n %d is return value of isalpha\('$'\) of %c ",isalpha('$'),'$');
    printf("\n %d is return value of isalnum\(cha1\) of %c",isalnum(cha1),cha1);
    printf("\n %d is return value of isalnum\(cha2\) of %c ",isalnum(cha2),cha2);
    printf("\n %d is return value of isalnum\(cha3\) of %c ",isalnum(cha3),cha3);
    printf("\n %d is return value of isalnum\(A\) of %c ",isalnum('A'),'A');
    printf("\n %d is return value of isalnum\('0'\) of %c ",isalnum('0'),'0');  
    printf("\n %d is return value of isalnum\('$'\) of %c ",isalnum('$'),'$');
    }
ฟังก์ชัน  islower(cha)  ฟังก์ชันที่ใช้ตรวจสอบว่าตัวอักขระในตัวแปร cha เป็นตัวพิมพ์เล็กหรือไม่ ถ้าเป็นตัวพิมพ์เล็กฟังก์ชันจะส่งค่ากลับเป็นจำนวนเต็มที่ไม่ใช่ 0 แต่ถ้าไม่ใช่ตัวพิมพ์เล็กจะส่งค่ากลับเป็น 0
ฟังก์ชัน  isupper(cha)  ฟังก์ชันที่ใช้ตรวจสอบว่าตัวอักขระในตัวแปร cha เป็นตัวพิมพ์ใหญ่หรือไม่ ถ้าเป็นตัวพิมพ์ใหญ่ ฟังก์ชันจะส่งค่ากลับเป็นจำนวนเต็มที่ไม่ใช่ 0 แต่ถ้าไม่ใช่ตัวพิมพ์ใหญ่จะส่งค่ากลับเป็น 0
ฟังก์ชัน  tolower(cha)  ฟังก์ชันที่ใช้เปลี่ยนตัวพิมพ์ใหญ่ที่เก็บอยู่ในตัวแปรให้เป็นตัวพิมพ์เล็ก
ฟังก์ชัน  toupper(cha)  ฟังก์ชันที่ใช้เปลี่ยนตัวพิมพ์เล็กที่เก็บอยู่ในตัวแปรให้เป็นตัวพิมพ์ใหญ่
ตัวอย่าง /* upperlower.c */
#include <stdio.h>
#include <ctype.h>
#include <conio.h>
 main()
{
   char cha1 = 'D' , cha2 = 'a' ,cha3 = 'f'  , cha4 = 'N' ;
    clrscr();
    printf("\ncheck cha1 = 'D' is uppercase yes or no : %d ",isupper(cha1));
    printf("\ncheck cha2 = 'a' is lower yes or no : %d ",islower(cha2));
    printf("\ncheck cha2 = 'a' is upper  yes or no : %d ",isupper(cha2));
    printf("\ncheck  'i' is lower yes or no : %d ",islower('i'));
    printf("\ncheck  'L' is uppercase yes or no : %d ",isupper('L'));
    printf("\nchange cha3 = 'f' to  uppercase %c : ", toupper(cha3));
    printf("\nchange cha4 = 'N' to  lowercase %c : ", tolower(cha4));
}
  ฟังก์ชัน  isspace(cha)  ฟังก์ชันที่ใช้ตรวจสอบว่าข้อมูลในตัวแปร cha เป็น whitespace หรือไม่ whitespace ได้แก่ space ,tab ,vertical tab ,formfeed ,carriage retun ,newline ถ้ามี whitespace  จริง ฟังก์ชันจะส่งค่าไม่เท่ากับ 0  ถ้าไม่จริงจะส่งค่า 0
ฟังก์ชัน  isxdigit(cha)  ฟังก์ชันที่ใช้ตรวจสอบว่าข้อมูลในตัวแปร cha เป็น เลขฐานสิบหก ( คือ 0-9 , A-F , a – f) หรือไม่ ถ้าจริงส่งค่าตัวเลขที่ไม่ใช่ 0 ถ้าไม่จริงส่งตัวเลข 0
  ตัวอย่าง  /*isspaceisxdigit.c */
#include <stdio.h>
#include <conio.h>
#include <ctype.h>
main()
{
    char cha1 ='\r',cha2= '\n',cha3='\v' ,cha4 ='A';
    clrscr();
    printf("\n%d is volue return from isspace %c ",isspace(cha1),cha1);
    printf("\n%d is volue return from isspace %c ",isspace(cha2),cha2);
    printf("\n%d is volue return from isspace %c ",isspace(cha3),cha3);
    printf("\n%d is volue return from isxdigit  %c ",isxdigit(cha4),cha4);
    printf("\n%d is volue return from isxdigit  %c ",isxdigit('0'),'0');
    printf("\n%d is volue return from isxdigit  %c ",isxdigit('g'),'g');
}
ฟังก์ชัน  gotoxy(x,y);  เป็นฟังก์ชันอยู่ใน conio.h ใช้สั่งให้เคอร์เซอร์เคลื่อนที่ไปตามตำแหน่งที่ระบุ โดย x คือ ตำแหน่งของสดมภ์บนจอภาพ (คล้ายค่า x ของกราฟ)ค่าเพิ่มจากซ้ายไปขวามีค่าตั้งแต่ 1 ถึง 79 ตำแหน่งที่ 80 สงวนไว้ไม่ให้ใช้
ส่วน y คือตำแหน่งแถวบนจอภาพนับจากบนลงล่าง มีค่าได้ตั้งแต่ 1 ถึง 24 ตำแหน่งที่25 สงวนไว้
ฟังก์ชัน  clreol();  เป็นฟังก์ชันอยู่ใน conio.h ใช้ลบข้อความตั้งแต่ตำแหน่งที่เคอร์เซอร์อยู่ไปจนจบบรรทัด
ฟังก์ชัน  delline();  เป็นฟังก์ชันอยู่ในconio.h ใช้ลบข้อความทั้งบรรทัดที่เคอร์เซอร์อยู่ไปจนจบบรรทัดและเลื่อนข้อความในบรรทัดล่างขึ้นมาแทน
ฟังก์ชัน  insline();  เป็นฟังก์ชันอยู่ในconio.h ใช้แทรกบรรทัดว่าง 1 บรรทัดใต้บรรทัดที่เคอร์เซอร์อยู่
ฟังก์ชัน system(“dos command”);  เป็นฟังก์ชันอยู่ในstdlib.h ใช้เรียกคำสั่งของ dos ขึ้นมาทำงาน เช่นคำสั่ง cls dir date time
         ฟังก์ชัน  abort();  ฟังก์ชันที่อยู่ใน <stdlib.h> ใช้ ยกเลิกการทำงานของโปรแกรมทันทีไม่ว่าจะทำงานสำเร็จหรือไม่ และมีข้อความ Abnomal program termination แสดงทางจอภาพ
ฟังก์ชัน  abs(x);  ฟังก์ชันที่อยู่ใน <stdlib.h> ใช้หาค่าสัมบูรณ์ของ x โดย x ต้องเป็นจำนวนเต็ม
ฟังก์ชัน  labs(x);  ฟังก์ชันที่อยู่ใน <stdlib.h> ใช้หาค่าสัมบูรณ์ของ x โดย x ต้องเป็นlong integer
ฟังก์ชัน  atoi(s);  ฟังก์ชันที่อยู่ใน <stdlib.h> ใช้เปลี่ยนข้อความให้เป็นเลขจำนวนเต็ม
ฟังก์ชัน  atol(s);  ฟังก์ชันที่อยู่ใน <stdlib.h> ใช้เปลี่ยนข้อความให้เป็น long integer
ฟังก์ชัน  atof(s);  ฟังก์ชันที่อยู่ใน <stdlib.h> ใช้เปลี่ยนข้อความให้เป็น floating point
ตัวอย่าง  /* atoilf.c */
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{    char numstring1[10],numstring2[10],numstring3[10];
    int in1;    float flo1;    long lon1;     clrscr();
    printf("\nEnter number as string1 : ");
   scanf("%s",numstring1);
    printf("\nEnter number as string2 : ");
   scanf("%s",numstring2);
    printf("\nEnter number as string3 : ");
   scanf("%s",numstring3);
   in1 = atoi(numstring1);   flo1 = atof(numstring2);      lon1=atol(numstring3);
    printf("\nnumstring1 =%s change to integer %d ",numstring1,in1);
    printf("\nnumstring2 =%s change to floating point %4.4f ",numstring2,flo1);
    printf("\nnumstring3 =%s change to long integer %d ",numstring3,lon1);
    printf("\nsummation of in1,flo1,lon1 is %6.4f ",in1+flo1+lon1);
    printf("\nsummation of atoi(numstring1),atof(numstring2),atol(numstring2) is %6.4lf:",atoi(numstring1)+atof(numstring2)+atol(numstring3));

    }

ผังงาน Flowchart

ผังงาน (Flowchart) คือ รูปภาพ (Image) หรือสัญลักษณ์(Symbol) ที่ใช้เขียนแทนขั้นตอน คำอธิบาย ข้อความ หรือคำพูด ที่ใช้ในอัลกอริทึม (Algorithm) เพราะการนำเสนอขั้นตอนของงานให้เข้าใจตรงกัน ระหว่างผู้เกี่ยวข้อง ด้วยคำพูด หรือข้อความทำได้ยากกว่า 
ผังงานแบ่งได้ 2 ประเภท 
1. ผังงานระบบ (System Flowchart) 
คือ ผังงานที่แสดงขั้นตอนการทำงานในระบบอย่างกว้าง ๆ แต่ไม่เจาะลงในระบบงานย่อย 
2. ผังงานโปรแกรม (Program Flowchart) 
คือ ผังงานที่แสดงถึงขั้นตอนในการทำงานของโปรแกรม ตั้งแต่รับข้อมูล คำนวณ จนถึงแสดงผลลัพธ์ 
ารโปรแกรมแบบมีโครงสร้าง หรือ การโปรแกรมโครงสร้าง ประกอบด้วยอะไรบ้าง

ผมขอตอบอย่างสั้น ๆ ว่าทุกภาษาต้องมีหลักการ 3 อย่างนี้คือ การทำงานแบบตามลำดับ(Sequence) การเลือกกระทำตามเงื่อนไข(Decision) และ การทำซ้ำ(Loop) แม้ตำราหลาย ๆ เล่มจะบอกว่า decision แยกเป็น if กับ case หรือ loop นั้นยังแยกเป็น while และ until ซึ่งแตกต่างกัน แต่ผมก็ยังนับว่าการเขียนโปรแกรม แบบมีโครงสร้างนั้น มองให้ออกแค่ 3 อย่างก็พอแล้ว และหลายท่านอาจเถียงผมว่าบางภาษาไม่จำเป็นต้องใช้ Structure Programming แต่เท่าที่ผมศึกษามา ยังไม่มีภาษาใด เลิกใช้หลักการทั้ง 3 นี้อย่างสิ้นเชิง เช่น MS Access ที่หลายคนบอกว่าง่าย ซึ่งก็อาจจะง่ายจริง ถ้าจะศึกษาเพื่อสั่งให้ทำงานตาม wizard หรือตามที่เขาออกแบบมาให้ใช้ แต่ถ้าจะนำมาใช้งานจริง ตามความต้องการของผู้ใช้แล้ว ต้องใช้ประสบการณ์ในการเขียน Structure Programming เพื่อสร้าง Module สำหรับควบคุม Object ทั้งหมดให้ทำงานประสานกัน

1. การทำงานแบบตามลำดับ(Sequence)
รูปแบบการเขียนโปรแกรมที่ง่ายที่สุดคือ เขียนให้ทำงานจากบนลงล่าง เขียนคำสั่งเป็นบรรทัด และทำทีละบรรทัดจากบรรทัดบนสุดลงไปจนถึงบรรทัดล่างสุด สมมติให้มีการทำงาน 3 กระบวนการคือ อ่านข้อมูล คำนวณ และพิมพ์
2. การเลือกกระทำตามเงื่อนไข(Decision or Selection)
การตัดสินใจ หรือเลือกเงื่อนไขคือ เขียนโปรแกรมเพื่อนำค่าไปเลือกกระทำ โดยปกติจะมีเหตุการณ์ให้ทำ 2 กระบวนการ คือเงื่อนไขเป็นจริงจะกระทำกระบวนการหนึ่ง และเป็นเท็จจะกระทำอีกกระบวนการหนึ่ง แต่ถ้าซับซ้อนมากขึ้น จะต้องใช้เงื่อนไขหลายชั้น เช่นการตัดเกรดนักศึกษา เป็นต้น ตัวอย่างผังงานนี้ จะแสดงผลการเลือกอย่างง่าย เพื่อกระทำกระบวนการเพียงกระบวนการเดียว
3. การทำซ้ำ(Repeation or Loop)
การทำกระบวนการหนึ่งหลายครั้ง โดยมีเงื่อนไขในการควบคุม หมายถึงการทำซ้ำเป็นหลักการที่ทำความเข้าใจได้ยากกว่า 2 รูปแบบแรก เพราะการเขียนโปรแกรมแต่ละภาษา จะไม่แสดงภาพอย่างชัดเจนเหมือนการเขียนผังงาน ผู้เขียนโปรแกรมต้องจินตนาการด้วยตนเอง
การเขียนผังงานในการทำงาน
ผังงาน เป็นเครื่องมือสำหรับวาดภาพ 2 มิติ นำเสนอขั้นตอนการดำเนินการ มักใช้ในการแสดงแบบโปรแกรมที่ไม่ซับซ้อนมากนัก ต่อมาก็มีการประยุกต์ใช้แสดงขั้นตอนการทำงานของส่วนงานต่าง ๆ เพราะสัญลักษณ์ในแผนภาพช่วยในการอธิบายการทำงานแบบมีเงื่อนไขได้ดีกว่าการเขียนเชิงพรรณา
ประโยชน์ของการใช้ผังงาน
1. ทำให้เข้าใจ และแยกแยะปัญหาได้ง่าย (Problem Define)
2. แสดงลำดับการทำงาน (Step Flowing)
3. หาข้อผิดพลาดได้ง่าย (Easy to Debug)
4. ทำความเข้าใจโปรแกรมได้ง่าย (Easy to Read)
5. ไม่ขึ้นกับภาษาใดภาษาหนึ่ง (Flexible Language)

ซอฟต์แวร์ที่ใช้ในการออกแบบ 3 มิติ

Sweet Home 3D เป็นโปรแกรมออกแบบภายใน ฟรี ที่ช่วยคุณจัดวางเฟอร์นิเจอร์บนแปลนบ้านแบบ 2 มิติ และสามารถสร้างมุมมองแบบ 3 มิติ

โปรแกรมนี้สามารถดาวน์โหลดได้ที่ http://www.sweethome3d.com/ โดยมีเป้าหมายคือผู้ที่ต้องการออกแบบภายในที่อยู่อาศัยอย่างรวดเร็ว ไม่ว่าจะเป็นสำหรับผู้กำลังย้ายที่อยู่อาศัยหรือต้องการออกแบบใหม่สำหรับที่อยู่อาศัยเดิม โปรแกรมนี้มีเครื่องมือหลายอย่างช่วยในการวาดแบบแปลนของบ้านและการจัดวางเฟอร์นิเจอร์ คุณอาจวาดผนังห้องจากแบบแปลนที่มีอยู่แล้ว ลากและวางเฟอร์นิเจอร์ลงบนแปลนจากแคตตาล็อกที่จัดแบ่งตามหมวดหมู่ การเปลี่ยนแปลงใด ๆ บนแปลน 2 มิติ จะถูกปรับในมุมมอง 3 มิติไปในขณะเดียวกัน เพื่อแสดงภาพเสมือนจริงของการจัดวางนั้น ๆ

ซอฟต์แวร์ที่่ใช้ในการออกแบบ 2 มิติ

CAD เป็นคำย่อของ Computer Aided Design ซึ่งแปลเป็นภาษาไทยว่า คอมพิวเตอร์ช่วยในการออกแบบ เทคโนโลยีนี้คือการนำคอมพิวเตอร์มาช่วยในการสร้างชิ้นส่วนหรือ Part ด้วยแบบจำลองทางเรขาคณิต (Geometry) ชิ้นส่วนที่ถูกสร้างขึ้นมาเรียกว่าแบบจำลองหรือ Model และแบบจำลองนี้ก็สามารถแสดงเป็นแบบ Drawing หรือไฟล์ข้อมูล CAD
การนำ CAD software ไปใช้ประโยชน์
สร้างแบบจำลองหรือ model ขึ้นตามแบบที่ได้ทำการออกแบบ วิเคราะห์ ประเมินและแก้ไขข้อมูล CAD ของ Part ที่ได้ทำการออกแบบไว้เพื่อให้สามารถทำการผลิตได้จริงในการผลิตและมี function การทำงานตามแต่ละวัตถุประสงค์ของ Part นั้นๆ ใช้เป็นข้อมูลในการผลิต jig, fixture และเครื่องมืออื่นๆ สำหรับใช้ในขั้นตอนการผลิต การใช้ CAD ในการสร้างรูปร่างต่างๆของ Part สามารถทำได้ 3 ลักษณะ คือ ปริมาตรตัน (Solid modeling), พื้นผิว (Surface modeling) และโครงลวด (Wire frame modeling) ซึ่งแต่ละแบบจะเหมาะสมกับการทำงานเฉพาะอย่าง
Surface modeling

การแสดงผลแบบนี้จะคล้ายกับการนำผืนผ้าสี่เหลี่ยมซึ่งถือเป็น 1 ผิวหน้า (face) มาเย็บต่อ ๆ กัน จะได้เป็นพื้นผิว (surface) บาง คล้ายเปลือกนอก การเก็บข้อมูลแบบนี้จะเก็บข้อมูล เส้นขอบ พิกัดของจุด และข้อมูลของขอบผิวที่ติดกัน
https://cadeasy.files.wordpress.com/2011/07/cad-surface-modeling.jpg
Solid modeling
ข้อมูลแบบจำลอง 3 มิติ แบบนี้จะถูกเก็บในลักษณะของ ลำดับของการนำรูปทรงตันพื้นฐาน (Solid Primitives) เช่น ก้อนลูกบาศก์, ลูกกลม, ทรงกระบอก, ลิ่ม, ปิรามิด ฯลฯ มาสร้างความสัมพันธ์กันด้วย Boolean Operator เช่น union (รวมกัน), subtract (ลบออก), intersection (เฉพาะส่วนที่ซ้อนทับกัน) และ difference (เฉพาะส่วนที่ไม่ทับกัน) เพื่อให้ได้รูปทรงที่ต้องการ รูปทรงที่ใช้วิธีนี้สร้างจะมีความถูกต้องสูง เนื่องจากใช้วิธีการทำ Boolean Operation เท่านั้นซึ่งเป็นวิธีที่ธรรมดาและโครงสร้างของข้อมูลก็ไม่ซับซ้อน
https://cadeasy.files.wordpress.com/2011/07/cad-solid-modeling.jpg
Wire-frame modeling
การแสดงผลแบบนี้มักจะพบในซอฟต์แวร์รุ่นเก่าๆ ซึ่งจะเก็บข้อมูลของแบบจำลองเฉพาะ เส้นขอบ(ทั้งเส้นตรงและเส้นโค้ง) และพิกัดของจุด การแสดงผลแบบนี้ทำได้รวดเร็ว แต่ภาพที่ได้จะดูค่อนข้างยาก ว่าแสดงผลอยู่ในมุมมองใด
https://cadeasy.files.wordpress.com/2011/07/cad-wireframe-modeling.jpg
นอกจากการใช้ CAD ในการสร้าง Part แล้วในปัจจุบัน CAD software บางตัวยังสามารถใช้ในงานวิศวกรรมย้อนกลับ (Reverse engineering) โดยคุณภาพของพื้นผิวที่สร้างขึ้นมาจากซอฟต์แวร์วิศวกรรมย้อนกลับส่วนมากขึ้น อยู่กับ 2 องค์ประกอบ คือ คุณภาพของ modeling หรือ Part ที่นำมาสแกน และคุณภาพของข้อมูลเชิงตัวเลข บางครั้งในการทำงานจริงเราไม่สามารถได้แบบจำลองที่สมบูรณ์เนื่องจากชิ้นส่วน ชำรุด หรือคุณภาพของข้อมูลเชิงตัวเลขที่ได้มาอาจไม่ดี software บางตัวสามารถแก้ไขปัญหาพื้นผิวของแบบจำลองในบริเวณที่ชำรุดได้ หรืออาจแต่งเติมดัดแปลงให้ดีกว่าของเดิมที่สแกนมาได้

เทคโนโลยีสะอาด

การขยายตัวของโรงงานอุตสาหกรรมก่อให้เกิดปัญหามลภาวะต่าง ๆและกำลังเป็นปัญหาสิ่งแวดล้อมที่ส่งผลกระทบอย่างกว้างขวางไปทั่วโลกในปัจจุบัน ดังนั้นในช่วงทศวรรษที่ผ่านมาจึงมีการพัฒนาหลักการของเทคโนโลยีสะอาด (Cleaner Technology) การผลิตที่สะอาด (Cleaner Production) การป้องกันมลพิษ (Promotion Prevention) รวมไปถึงการลดการเกิดของเสียให้น้อยที่สุดในกระบวนการผลิต (Waste Minimization) ซึ่งเทคโนโลยีต่าง ๆ เหล่านี้ได้ถูกนำมาใช้เพื่อลดปัญหาสิ่งแวดล้อมในภาคอุตสาหกรรม ทั้งนี้ ขึ้นอยู่กับความต้องการของภาคอุตสาหกรรม ว่าจะเลือกใช้วิธีการใดในกระบวนการผลิตของตนเอง

1. เทคโนโลยีสะอาด (Clean Technology)

green 300x274 การผลิตที่เป็นมิตรต่อสิ่งแวดล้อม : เทคโนโลยีสะอาด (Clean Technology) เทคโนโลยีสะอาด คือ กลยุทธ์ที่ใช้ในการผลิตเชิงอุตสาหกรรม เพื่อเพิ่มประสิทธิภาพในการใช้วัตถุดิบ และพลังงานในการผลิต ทำให้สามารถลดต้นทุน โดยการปรับปรุงผลิตภัณฑ์ บริการ และกระบวนการผลิตอย่างต่อเนื่อง เพื่อลดของเสียจากแหล่งกำเนิด อันจะช่วยลดภาระในการกำจัดของเสีย รวมถึงก่อให้เกิดการใช้พลังงาน ทรัพยากร และวัตถุดิบต้นทุนอย่างคุ้มค่า อันเป็นการสร้างภาพลักษณ์ที่ดีให้กับผู้ประกอบการ ช่วยเสริมสร้างความสามารถในการแข่งขันในตลาดโลก อีกทั้งยังพัฒนาความสามารถ และประสิทธิภาพของธุรกิจ และเป็นจุดเริ่มต้นในการก้าวสู่มาตรฐาน ISO 14000 ของอุตสาหกรรมอีกด้วย

1.1 หลักการของเทคโนโลยีสะอาด
หลักการของเทคโนโลยีสะอาด มุ่งเน้นไปที่การแก้ปัญหาที่ต้นเหตุ คือ การลดการใช้พลังงาน การใช้น้ำ และทรัพยากรธรรมชาติอื่น ๆ ซึ่งหลักการของเทคโนโลยีสะอาดจะเน้นที่การป้องกันมากกว่าการแก้ปัญหา โดยลดของเสียที่เกิดขึ้นในกระบวนการต่าง ๆ ให้น้อยที่สุด โดยวิธีการแยกสารพิษที่เกิดขึ้นจากการบวนการผลิตในทุกขั้นตอน ซึ่งประกอบด้วยการเปลี่ยนแปลงกระบวนการผลิต การเปลี่ยนแปลงวัตถุดิบ ที่ทำให้เกิดผลพลอยได้ที่ไม่เป็นอันตราย รวมทั้งการลดปริมาณของเสียที่เกิดขึ้นโดยกระบวนการนำกลับมาใช้ซ้ำ (Reuse)หรือ การนำกลับไปใช้ใหม่ (Recycle) จนกระทั่งของเสียเหล่านั้นไม่สามารถนำกลับมาใช้ประโยชน์ได้อีก จึงนำไปบำบัดหรือกำจัดตามหลักวิชาการต่อไป



3 300x180 การผลิตที่เป็นมิตรต่อสิ่งแวดล้อม : เทคโนโลยีสะอาด (Clean Technology)


4 1024x949 การผลิตที่เป็นมิตรต่อสิ่งแวดล้อม : เทคโนโลยีสะอาด (Clean Technology)
จากที่กล่าวมาข้างต้น สามารถสรุปหลักการของเทคโนโลยีสะอาดได้ดังนี้
1. การลดมลพิษที่แหล่งกำเนิด แบ่งเป็น 2 แนวทางใหญ่ ๆ คือ การเปลี่ยนแปลงผลิตภัณฑ์ และ การเปลี่ยนแปลงกระบวนการผลิต
1.1การเปลี่ยนแปลงผลิตภัณฑ์ (Product Reformulation) อาจทำได้โดยการออกแบบผลิตภัณฑ์ให้มีผลกระทบต่อสิ่งแวดล้อมน้อยที่สุด หรือการออกแบบให้มีอายุการใช้งานของผลิตภัณฑ์ได้นานขึ้น
-การเปลี่ยนแปลงกระบวนการผลิต (Process Change) แบ่งได้ 3 กลุ่ม อันประกอบด้วย
-การเปลี่ยนแปลงวัตถุดิบ (Input Material Change) โดยเลือกใช้วัตถุดิบที่มีคุณภาพ ลดหรือเลิกการใช้วัตถุดิบที่เป็นอันตราย เพื่อหลีกเลี่ยงการปนเปื้อนของสารอันตรายเข้าไปในกระบวนการผลิต และพยายามใช้วัตถุดิบที่สามารถนำกลับมาใช้ใหม่ได้
-การเปลี่ยนแปลงเทคโนโลยี (Technology Improvement) เป็นการเพิ่มศักยภาพการผลิตหรือการใช้ทรัพยากรอย่างคุ้มค่า ได้แก่ การปรับปรุงแผนผังโรงงาน การเพิ่มระบบอัตโนมัติ การปรับปรุงเครื่องจักรและอุปกรณ์การผลิต รวมถึงการนำเทคโนโลยีใหม่ ๆ มาใช้ เพื่อก่อให้เกิดของเสียน้อยที่สุด
-การปรับปรุงกระบวนการดำเนินงาน (Operation Management) เป็นการบริหารระบบการวางแผนและควบคุมการผลิต เพื่อเพิ่มศักยภาพของกระบวนการผลิต ให้สามารถลดต้นทุนในการผลิตและลดการก่อมลพิษทางสิ่งแวดล้อม โดยกำหนดให้มีขั้นตอนการผลิต กระบวนการทำงาน กระบวนการบำรุงรักษา รวมไปถึงการจัดการระบบ การบริหารงานในโรงงานอย่างชัดเจน
2.กระบวนการนำกลับมาใช้ใหม่ แบ่งออกได้ 2 แนวทางคือ
2.1การใช้ผลิตภัณฑ์หมุนเวียน โดยการนำวัตถุดิบที่ไม่คุณภาพกลับมาใช้ประโยชน์ หรือ การใช้ประโยชน์จากสารหรือวัสดุที่ปนอยู่กับของเสีย โดยการนำมาใช้ในกระบวนการผลิตเดิม หรือ กระบวนการผลิตในขั้นตอนอื่น
2.2การใช้เทคโนโลยีหมุนเวียน เป็นการนำเอาของเสียผ่านกระบวนการต่าง ๆ เพื่อนำทรัพยากรกลับมาใช้อีก
 แนวคิดของเทคโนโลยีสะอาด คือ การป้องกันมลพิษที่แหล่งกำเนิด และการลดปริมาณสารเคมีที่ใช้ให้น้อยที่สุด โดยทำได้ตามขั้นตอนที่เรียงลำดับความสำคัญจากมากไปน้อย ดังนี้
  • การลดที่แหล่งกำเนิด
  • การใช้หมุนเวียน
  • การบำบัด
  • การปล่อยทิ้ง
การดำเนินการตามหลักการของเทคโนโลยีสะอาด คือ จะเน้นการลดมลพิษที่ต้นกำเนิดมากกว่าการแก้ปัญหาที่ปลายทาง กล่าวคือ ลดปริมาณการใช้ทรัพยากรลง โดยใช้หลักการบริหารจัดการอย่างมีคุณภาพเพื่อให้เกิดของเสียน้อยที่สุด ของเสียที่เกิดขึ้น ต้องมีการนำกลับมาใช้ใหม่ เพื่อลดของเสียที่จะส่งไปสู่ขั้นตอนการบำบัดของเสียที่นำไปบำบัดผ่านกระบวนการที่มีประสิทธิภาพจึงสามารถปล่อยสู่สิ่งแวดล้อมได้
การประยุกต์ใช้หลักการเทคโนโลยีสะอาด ประกอบด้วย 5 ขั้นตอน คือ
1)การวางแผนและการจัดองค์กร (Planning and Organization)
2)การประเมินเบื้องต้น (Pre Assessment)
3)การประเมินผล (Assessment)
4)การศึกษาความเป็นไปได้ (Feasibility)
5)การลงมือปฏิบัติ (Implementation)
 หลังจากนำเทคโนโลยีสะอาดมาใช้ในภาคอุตสาหกรรม ต้องมีการวางแผนและจัดการ มีการสำรวจข้อมูล ทำการประเมินเบื้องต้น และทำการประเมินในขั้นตอนต่อมา โดยในขั้นตอนการประเมินเบื้องต้นจะเกี่ยวข้องกับการสร้างแผนภาพกระบวนการผลิต พิจารณาการป้อนเข้าและการจ่ายออกของวัตถุดิบ ของแต่ละหน่วยปฏิบัติการ จัดทำสมดุลมวลสาร ทำให้ทราบปริมาณของเสียที่เกิดขึ้นในแต่ละขั้น รวมทั้งทำให้สามารถวิเคราะห์สาเหตุการเกิดของเสียอันนำไปสู่กระบวนการปรับปรุง เปลี่ยนแปลงเพื่อลดของเสียที่เกิดขึ้น โดยทางเลือกที่นำเสนอต้องมีความเป็นไปได้ทางเศรษฐศาสตร์ ลงทุนไม่สูง และสามารถคืนทุนได้ในระยะสั้น เมื่อวิธีการทางสิ่งแวดล้อมสอดคล้องกับแนวคิดทางเศรษฐศาสตร์จึงดำเนินการ และต้องดำเนินการอย่างต่อเนื่อง เพื่อก่อให้เกิดการพัฒนาอย่างยั่งยืนต่อไป

1.2 ตัวอย่างภาคอุตสาหกรรมที่มีการนำเทคโนโลยีสะอาดมาใช้
บริษัท พีทีที โกลบอล เคมิคอล จำกัด (มหาชน) ทุ่มงบ    กว่า 1,200 ล้านบาท เปิดตัวเทคโนโลยีสะอาด หอเผาระบบปิดระดับพื้นดิน และระบบดูดกลับไอไฮโดรคาร์บอน”  เพื่อดูแลสิ่งแวดล้อมและระดับคุณภาพชีวิตของประชาชน โดยนำร่องที่จังหวัดระยอง หวังให้เป็นอุตสาหกรรมนิเวศต้นแบบของไทย
5 การผลิตที่เป็นมิตรต่อสิ่งแวดล้อม : เทคโนโลยีสะอาด (Clean Technology)
นายอนนต์ สิริแสงทักษิณ ประธานเจ้าหน้าที่บริหาร บริษัท พีทีที โกบอล เคมิคอล จำกัด (มหาชน) หรือ พีทีที จีซี เปิดเผยว่า ทาง พีทีที จีซี ได้ติดตาม และสอบถามปัญหาของชาวบ้านในพื้นที่อย่างต่อเนื่อง เมื่อทราบถึงปัญหา จึงตัดสินใจสร้างหอเผาระบบปิด ด้วยงบประมาณกว่า 500 ล้านบาท ที่สามารถเผาไหม้ได้อย่างหมดจด ไม่มีเขม่าควันและแสง และมีผนังที่ดูดซับเสียงและความร้อน มองว่าการลงทุนครั้งนี้ เพื่อประโยชน์เชิงนิเวศ และเป็นจุดเริ่มต้นของอุตสาหกรรมสีเขียวครั้งนี้เป็นการเปิดดำเนินการหอเผาระบบปิดระดับพื้นดิน และระบบดูดกลับไอไฮโดรคาร์บอน นำร่องที่จังหวัดระยอง ด้วยงบประมานลงทุนกว่า 1,200 ล้านบาท เพื่อเป็นการนำเทคโนโลยีที่ได้มาตรฐานและเป็นที่ยอมรับในระดับสากล มาใช้ในการจัดการด้านสิ่งแวดล้อม ซึ่งมีระบบควบคุมการทำงานอัตโนมัติตลอด 24 ชั่วโมง จึงมีความปลอดภัย และเป็นการส่งเสริมคุณภาพสิ่งแวดล้อม ทำให้ภาคอุตสาหกรรมกับชุมชนโดยรอบสามารถอยู่ร่วมกันได้อย่างกลมกลืน โดยถือว่าเป็นเทคโนโลยีสะอาดแห่งแรกในประเทศไทย และใหญ่ที่สุดในเอเชียด้วย



5W1H


5W1H

5W1 หนึ่งในเครื่องมือที่ใช้มากที่สุดในระดับสากลสำหรับการรวบรวมข้อมูล,วิเคราะห์และการนำเสนอเป็นกรอบ 5W1H

วิธีนี้จะใช้ในช่วงของกระบวนการนักวิเคราะห์วิศวกรที่มีคุณภาพที่จะเข้าใจและอธิบายความจริงปัญหาใด ๆ หรือปัญหาวิธีการเดียวกันสามารถที่ใช้ในการจัดระเบียบการเขียนของรายงานบทความเอกสารและแม้ทั้งหนังสือ  
วิธีการพื้นฐาน
วิธีการนี้พยายามที่จะตอบคำถามพื้นฐานในการรวบรวมข้อมูลเกี่ยวกับเรื่องใด ๆ ของ: ใครอะไรเมื่อไหร่ที่ไหนทำไมและวิธีการ บางครั้งขึ้นอยู่กับบริบทที่สอง"H"อย่างไร
What.
คือเรื่องหลักของการรวบรวมข้อมูลเหตุผลและการนำเสนอ อาจจะเป็นที่ระบุไว้ในชื่อเรื่องและวัตถุประสงค์ อาจต้องจะกำหนดกระบวนการที่อาจประกอบด้วยส่วนที่เหลือของเอกสาร
Who.
สิ่งแวดล้อมอื่นๆ คนหรือกลุ่มความกังวลมันอาจอธิบายเอกสารหรือผู้ที่ได้รับผลกระทบจากนโยบายการหรือขั้นตอน
When.
หมายถึงเมื่อไหร่ในเวลาใดที่เกี่ยวข้อง มันอาจจะเป็นส่วนหนึ่งกับจุดที่เหมาะสมที่จะต้องดำเนินการ บางครั้งมันอาจจะเป็นส่วนหนึ่งของสถานการณ์ของการกระทำตามเงื่อนไข
Where.
เหตุการณ์หรือกระบวนการนั้น เกิดขึ้นที่ไหนเมื่อไหร่
Why.
เหตุใดถึงทำสิ่งนั้นหรือ เพราะเหตุใดถึงเกิดเหตุการณ์นั้นๆ อาจมีการพิจารณาที่ไม่เกี่ยวข้องอาจจะเกิดจากนโยบายหรือขั้นตอน
How.  
เหตุการณ์หรือสิ่งที่ทำนั้นเป็นอย่างไรบ้าง เมื่ออธิบายนโยบายกระบวนการหรือขั้นตอนอาจเป็นส่วนสำคัญที่สุด