วันอาทิตย์ที่ 1 มีนาคม พ.ศ. 2558

 ฟังค์ชัน printf()  มีรูปแบบดังนี้
printf ( " control string " , variable list );
โดย control string อาจจะเป็นตัวอักษร ข้อความ หรือ ตัวกำหนดชนิดข้อมูล (Specifier) ซึ่งใช้กำหนดชนิดข้อมูลที่จะพิมพ์ ตัวกำหนดข้อมูลที่ควรทราบมีดังนี้
ตัวกำหนดชนิดข้อมูล
ความหมาย
%c
%d
%f
%lf
%s
%%
แทนตัวอักษร
แทนเลขจำนวนเต็ม 
แทนเลขทศนิยม ( float )แทนเลขทศนิยม (double)แทนสตริงก์
แทนเครื่องหมาย %
ส่วน variable list ก็คือ list ของตัวแปร จากตัวอย่าง
printf( " The sum of %d and %d is %d " , First , Second , Sum );
พบว่า เรามี ตัวกำหนดชนิดข้อมูลคือ %d ซึ่งแทนชนิดข้อมูลที่เราจะพิมพ์คือ integer ซึ่ง %d ตัวแรกจะใช้แทนค่าของ First ตัวที่สองจะใช้แทนค่าของ Second ตัวที่สามจะใช้แทนค่าของ Sumจากโปรแกรมข้างต้นผล run ที่ออกมาจะปรากฎดังนี้
The sum of 10 and 20 is 30
นอกจากนี้เรายังพบว่าเรายังสามารถกำหนดลักษณะการพิมพ์ได้ดังต่อไปนี้
                #include <stdio.h>
                main()
                {              int a;
                                float b ;
                                a = 50 ;
                                b = 10.583 ;
                                printf ( " a = %d \n " , a ) ;
                                printf ( " b = %f \n " , b ) ;
                                printf ( " a = %05d \n " , a );
                                printf ( " b = %10.4f \n " , b );
                                printf ( " b = % -10.4f \n " , b );
                } 
พบว่า ผล run ที่ได้คือ 
a = 50
b = 10.583000 
พบว่าแสดงทศนิยม หลัก เป็นปกติ
a = 00050 
พบว่า มีความยาว ตำแหน่ง นับจากซ้าย
b = ___10.5830 
พบว่า เราสั่งให้ %10.4 คือ การสั่งให้มีความยาวทั้งหมด 10 ตำแหน่ง รวมด้วยการมีทศนิยม ตำแหน่ง
b = 10.5830 
คล้ายกับบรรทัดก่อนหน้าแต่เราใส่เครื่องหมาย เพื่อให้มันพิมพ์ชิดซ้าย
Input command
คำสั่งในการ input ที่ใช้ง่ายๆก็คือ คำสั่ง
                scanf(" ตัวกำหนดชนิดข้อมูล",&ตัวแปร);
ยกตัวอย่างเช่น ต้องการรับค่า จำนวนเต็ม มาใส่ไว้ในตัวแปรที่ชื่อ number จะสั่งดังนี้ 
                int number;
                scanf("%d",&number); 
สำคัญอย่าลืมเครื่องหมาย และหากรับตัวแปร ตัว โดย รับค่า จำนวนเต็มไว้ในตัวแปรชื่อ num1 และ รับค่า จำนวนจริง ไว้ในตัวแปร num2 ทำได้โดย
                int num1,num2;
                scanf("%d %f",&num1,&num2);
หากต้องการรับข้อความ Touchakorn ซึ่งก็คือ 10 character ทำได้โดย
                char name[
10];
                scanf("%c",name);
 
คำสั่ง for loop
                for(ตัวนับ= i;เงื่อนไขที่จะให้ยังทำงานอยู่ใน loop; การเพิ่มหรือการลดตัวนับ)
                {
                                statement ;
                }
                ก่อนอื่นต้องขออธิบายก่อนว่านี่คือโครงสร้างของ for loop โดยขอให้สังเกตบรรทัดแรกตรงที่มีคำสั่ง for แล้วให้ดูในวงเล็บ ปรากฎว่าตามรูปแบบมาตรฐานนั้น ในส่วนของวงเล็บหลังคำว่า for จะประกอบไปด้วย ส่วน ส่วนแรกก็คือ การกำหนดค่าเริ่มต้นให้กับตัวนับ อาจจะงงว่าตัวนับที่พูดถึงคืออะไร ใน for loop นั้น จำเป็นจะต้องมีตัวนับอยู่ด้วยเสมอ ซึ่งตัวนับนี้ จะเป็นตัวบอกเราว่า loop ของเรานั้นทำการวนซ้ำมาเป็นรอบที่เท่าไรแล้ว และในส่วนแรกนี้เราจำเป็นจะต้องมีการกำหนด ค่าเริ่มต้นให้กับตัวนับก่อน ในส่วนที่สอง เงื่อนไขที่จะให้ยังทำงานอยู่ใน loop นี้ โดยส่วนใหญ่จะเป็นการกำหนดว่าเมื่อตัวนับมีการวนซ้ำ ถึงจำนวนรอบเท่านั้นเท่านี้ก็จะให้หลุดจาก loop ในส่วนที่สาม การเพิ่มหรือการลดตัวนับ ตรงนี้สำคัญ ซึ่งจะเป็นส่วนที่ทำให้ ตัวนับของเรามีการเพิ่มค่าหรือลดค่า ในแต่ละรอบของการวนซ้ำเช่นอาจเพิ่มทีละหนึ่ง หรือ เพิ่มทีละเป็นต้นหรืออาจจะลดทีละ หรือลดทีละ ก็แล้วแต่โปรแกรมจะกำหนด หลังจากวงเล็บที่อยู่หลัง for ก็จะมีเครื่องหมาย ปีกกาเพื่อให้เข้าสู่ส่วนของคำสั่ง ที่จะต้องทำหลังจากบรรทัด for ก็มาถึง statement ซึ่งจะเป็นส่วนที่ให้เราเขียนคำสั่งว่า ในแต่ละรอบนั้น เราจะให้โปรแกรมทำงานอะไร ซึ่งก็อาจมีได้หลายคำสั่ง บรรทัดสุดท้ายก็คือ ปีกกาปิดเพื่อจบโครงสร้าง for loop
ตัวอย่าง การบวกเลขตั้งแต่ ถึง 100                #include<stdio.h>
                main()
                {
                                int i,ans;
                                ans=0;
                                for(i=1;i<=100;i++)
                {              ans=ans+i;
                                }
                                printf("answer is %d",ans);
                } 
                ในที่นี้เราทำการกำหนดให้ตัวแปร เป็นตัวแปรนับ ส่วน ans เป็นตัวแปรที่ใช้เก็บค่าคำตอบ ในบรรทัด for นั้นไม่มีปัญหาอะไรยกเว้น ที่เราเจอ i++ นั่นก็หมายถึง i+1 นั่นเอง คือ ใน loop นี้เราจะทำการเพิ่มตัวนับ ไปทีละ 1
สมมติว่าหากเราต้องการจะแสดงเฉพาะเลขคี่ที่อยู่ระหว่าง ถึง 100 เราจะทำ
ตัวอย่าง การแสดงเฉพาะเลขคู่(ถอยหลัง)ที่อยู่ในช่วงตั้งแต่ ถึง 100
                #include<stdio.h>
                main()
                {              int i ;
                                for(i=100;i>=1;i=i-2)
                                {              printf("Odd number is %d\n",i);
                                }
                }
                นั่นคือในบรรทัด for เรากำหนดค่าเริ่มต้นเป็น 100 ที่สำคัญคือเงื่อนไขเดิมเรากำหนดเป็น น้อยกว่าเท่ากับ แต่ในที่นี้เรากำหนดเป็นว่า มากกว่าเท่า 1 loop จึงจะยังทำงานต่อ และที่สำคัญเช่นเดียวกันคือเราทำการลดค่า ไปทีละ ก็จะได้ ค่า100,98,96,...,4,2
คำสั่ง while loop
        
มีอีกหนึ่งโครงสร้างที่มีลักษณะคล้ายกับ for loop ที่อธิบายมาข้างต้น นั่นก็คือ while loop ก่อนอื่นต้องขอบอกถึง ความแตกต่าง ที่เห็นได้ชัดเจนระหว่าง for loop กับ while loop เสียก่อน นั่นคือ เราจะเห็นได้ว่า for loop นั้น เราจะมีการบอกถึง ค่าเริ่มต้น ค่าสิ้นสุด ของตัววิ่ง(จากข้างต้นก็คือตัว นั่นเองแต่ while loop นั้นจะบอกแค่เงื่อนไขการจบเท่านั้น ซึ่งถ้าใน for loop นั้น เงื่อนไขการจบก็คือ การที่ตัววิ่ง วิ่งถึงค่าสิ้นสุด ก็จะหลุดออกจาก loop for แต่ while loop ก็มีลักษณะคล้ายกันแต่อาจจะไม่เหมือนกัน สักทีเดียว ลองมาดูกัน
while ( เงื่อนไขที่ทำให้ยังต้องเข้าไปใน loop )
                {              statement ;
                }
เรามักจะแปลได้ว่า "ขณะที่(.....เงื่อนไข......ยังเป็นจริงอยู่ก็เข้าไปทำคำสั่งหลังเครื่องหมาย { "
ต่อไปนี้จะขอสร้างตัวอย่างขยายข้อความข้างบนหน่อย โดยเราจะสั่งให้มีการบวกเลขตั้งแต่ 1-100 เหมือนตัวอย่างใน for loop นั่นแหละ
                #include<stdio.h>
                main()
                {              int i , ans;
                                i=1;          /* initial variable */
                                ans=0;
                                while ( i <= 100 )
                                {              ans = ans + i ;
                                                i=i+1;      /* increase variable */
                                }
                                printf("answer is %d",ans);
                } 
                จากตัวอย่างนี้ สิ่งที่สำคัญที่สุด ก็คือ การกำหนดค่าเริ่มต้นให้กับตัวแปร i , ans อันนี้สำคัญมากเราจะต้องกำหนดไว้เสมอ หากเราไม่กำหนดไว้ตั้งแต่เริ่มต้น โปรแกรมจะไปหยิบค่าอะไรก็ไม่รู้จากใน memory มาเก็บไว้ในตัวแปร และ ans ซึ่งจะทำให้โปรแกรมของเราผิดพลาดทันที ส่วนใน while loop นั้นอธิบายได้ง่ายๆ ว่า ขณะที่ ยังน้อยกว่าหรือเท่ากับ 100 อยู่ ก็ให้ทำคำสั่งหลังเครื่องหมาย { นั่นก็คือans=ans+i และจุดที่สำคัญอีกจุดหนึ่ง ไม่แพ้การ กำหนดค่าเริ่มต้นให้กับตัวแปร นั่นก็คือ บรรทัด i=i+1 ซึ่งเป็นการบอกว่าให้เพิ่มค่า ไปทีละในทุกๆรอบ หากขาดบรรทัดนี้ไป loop ของเรา จะวิ่งไม่หยุดหรือที่เรียกกันว่า infinite loop นั่นเอง เพราะหากเราไม่เพิ่มค่า แล้ว ค่า iตลอดโปรแกรมก็จะยังคงเท่ากับ 1เหมือนที่เรากำหนดไว้ตอนเริ่มต้น ดังนั้นเมื่อ compiler มาตรวจดูเงื่อนไขของ while loop ก็พบว่า ยังเป็นจริงอยู่ นั่นก็คือ ยังคงน้อยกว่าหรือเท่ากับ 100 อยู่วันยังค่ำ นั่นก็คือ loop นี้จะวิ่งไปเรื่อยๆ ไม่มีวันหยุดนั่นเอง
 ตัวดำเนินการ  (operators)
            ตัวดำเนินการบางครั้งเรียกว่า  “เครื่องหมาย”  จะเข้าใจง่ายกว่า ในภาษา C สามารถแบ่งตัวดำเนินการได้หลายประเภทดังนี้
 2.6.1 ตัวดำเนินการคณิตศาสตร์  (mathematical operators)
ตารางที่  2.2  แสดงตัวดำเนินการคณิตศาสตร์ 
สัญลักษณ์  (symbol)
ตัวดำเนินการ  (operators)
ตัวอย่าง
+
บวก  (addition)
a+b
-
ลบ  (subtraction)
a-b
*
คูณ  (multiplication)
a*b
/
หาร  (division)
a/b
%
หารเอาเศษ  (remainder)
a%b
            
            ผลลัพธ์ที่ได้จากการคำนวณทางคณิตศาสตร์จะอยู่ในรูปของตัวเลข 
           
 2.6.2 ตัวดำเนินการความสัมพันธ์  (relational  operators)

ตารางที่  2.3  แสดงตัวดำเนินการความสัมพันธ์
สัญลักษณ์  (symbol)
ตัวดำเนินการ  (operators)
ตัวอย่าง
น้อยกว่า  (less  than)
A<b
มากกว่า  (greater  than)
a>b
<=
น้อยกว่าหรือเท่ากับ
(less  than  or  equal)
A<=b
>=
มากกว่าหรือเท่ากับ
(greater  than  or  equal)
a>=b
==
เท่ากับ  (equal)
A==b
!=
ไม่เท่ากับ  (not  equal)
a!=b
            ที่มา  :  Aitken, P. and  B. Jones, 1994 : 66.
            ผลลัพธ์ที่ได้จากตัวดำเนินการความสัมพันธ์  จะได้ค่าจริง  (1)  หรือค่าเท็จ  (0)  เท่านั้น
          
2.6.3 ตัวดำเนินการเชิงตรรกะ  (logical  operators)

ตารางที่  2.4  แสดงตัวดำเนินการเชิงตรรกะ
สัญลักษณ์  (symbol)
ตัวดำเนินการ  (operators)
ตัวอย่าง
&&
และ (AND)
A<b && c>d
||
หรือ (OR)
a<b || c>d
!
ไม่ (NOT)
!(a<b)
           
            ผลลัพธ์ที่ได้จากตัวดำเนินการเชิงตรรกะ  จะได้ค่าจริง  (1)  หรือค่าเท็จ  (0)  เท่านั้น

2.6.4 ตัวดำเนินการเพิ่มค่าและลดค่า (increment and decrement operators)

ตารางที่  2.5  แสดงตัวดำเนินการเพิ่มค่าและลดค่า
สัญลักษณ์  (symbol)
ตัวดำเนินการ  (operators)
ตัวอย่าง
++
เพิ่มค่า  (increment)
a++  หรือ   ++a
--
ลดค่า  (decrement)
a-- หรือ   --a
           
            ผลลัพธ์ที่ได้จากการเพิ่มค่าและลดค่าจะอยู่ในรูปของค่าตัวเลข

2.6.5 ตัวดำเนินการบิตไวส์  (bitwise operators)
ตารางที่  2.6  แสดงตัวดำเนินการบิตไวส์
สัญลักษณ์  (symbol)
ตัวดำเนินการ  (operators)
ตัวอย่าง
&
AND
a&b
|
inclusive OR
a|b
^
exclusive OR
a^b
~
Complement
~a
>> 
right shift
a>>2
<< 
left shift
a<<3
            
2.6.6 ตัวดำเนินการกำหนดค่า  (compound  assignment operators)
ตารางที่  2.7  แสดงตัวดำเนินการกำหนดค่า
สัญลักษณ์  (symbol)
ตัวดำเนินการ  (operators)
ตัวอย่าง
=
Assignment
a=b
+=
Addition
a+=b  หมายถึง  (a=a+b)
-=
Subtraction
a-=b  หมายถึง  (a=a-b)
*=
Multiplication
a*=b  หมายถึง  (a=a*b)
/=
Division
a/=b  หมายถึง  (a=a/b)
%=
Remainder
a%=b  หมายถึง  (a=a%b)
&=
bitwise  AND
a&=b  หมายถึง  (a=a&b)
|=
bitwise  Inclusive  OR
a|=b  หมายถึง  (a=a|b)
^=
bitwise  exclusive  OR
a^=b  หมายถึง  (a=a^b)
<<=
right  shift
a<<2  หมายถึง  (a=a<<2)
>>=
left  shift
a>>3  หมายถึง  (a=a>>3)
        
            2.6.7 ตัวดำเนินการแบบเงื่อนไข  (conditional operators)

ตารางที่  2.8  แสดงตัวดำเนินการแบบเงื่อนไข
สัญลักษณ์  (symbol)
ตัวดำเนินการ  (operators)
ตัวอย่าง
Result = (expression) ?
Value1 : vaule2 ;
Conditional  Operators
Max = (a>b) ? a: b;
นิพจน์  (expression)
            นิพจน์ คือ การนำค่าคงที่ ตัวแปร  และตัวดำเนินการมาเขียนประกอบกัน  เพื่อให้ตัวแปรภาษาสามารถเข้าใจและคำนวณหาผลลัพธ์ได้ตามที่เราต้องการ
ตัวอย่างที่  2.6  ถ้าต้องการหาค่าจากสูตร  a2+2ab+b2  เมื่อ  a=2, b=3  เราจะต้องเขียนสูตรดังกล่าวให้เป็นนิพจน์ดังนี้

a*a+2 *a *b+b*b  ……………………..……………………………  แบบที่  1
หรือ       pow(a,2)  +  2 *a *b  +  pow(b,2)  ………………………………  แบบที่  2
            สำหรับฟังก์ชัน  pow(x,y)  เป็นฟังก์ชันที่ใช้หาค่าตัวเลขที่อยู่ในรูปเลขยกกำลัง
โดยที่     x     เป็นเลขฐานซึ่งจะต้องมีค่าเป็นเลขจำนวนเต็มบวกหรือศูนย์ก็ได้
              y     เป็นเลขยกกำลังซึ่งอาจจะเป็นเลขจำนวนเต็มบวกหรือลบก็ได้
ดังนั้น  pow(x,y) หมายถึง  xy ส่วน pow(a,2)   หมายถึง a2  และ pow(b,2)  หมายถึง  b2
ข้อควรระวัง  ก่อนที่เราจะใช้ฟังก์ชัน  pow(x,y)  นี้จะต้องใช้คำสั่ง  #include<math.h>  อยู่บนส่วนต้นของโปรแกรม  เพื่อนำแฟ้ม  math.h  เข้ามาไว้ในโปรแกรมภาษา  C  ก่อน  มิฉะนั้นอาจเกิดข้อผิดพลาดในการแปลโปรแกรมได้เพราะไม่สามารถหาฟังก์ชัน  pow(x,y)  ได้
ตัวอย่างที่  2.7  แสดงนิพจน์ตัวอย่าง  ซึ่งมีอยู่หลายชนิดตังต่อไปนี้
1)  a+b*10+(3*c)*8        /* นิพจน์ทางคณิตศาสตร์*/
2)  (m>=n)&&(x<y)     /* นิพจน์เชิงตรรกะและนิพจน์เชิงเปรียบเทียบความสัมพันธ์*/
3)  !(k==25)              /* นิพจน์เชิงตรรกะและนิพจน์เชิงเปรียบเทียบความสัมพันธ์*/
4)  !(p)                      /* นิพจน์เชิงตรรกะ*/
5)  (i>10)||(j<5)        /* นิพจน์เชิงตรรกะและนิพจน์เชิงเปรียบเทียบ*/
6)  if  (y==z)          /* นิพจน์เงื่อนไข*/
            ตัวอย่างที่  2.8  แสดงการหาค่าผลลัพธ์จากนิพจน์ในภาษา  C 
กำหนดให้    int   x=5, y=8, z=9;
1)  x+(y*z)             ผลลัพธ์คือ  77
2)  x+y*z+x*3        ผลลัพธ์คือ  92


จุดเด่นของภาษาซี

1. เป็นภาษาที่มีลักษณะเป็นโครงสร้างจึงเขียนโปรแกรมง่าย โปรแกรมที่เขียนขึ้นจะทำงานได้อย่างมีประสิทธิภาพสูง สั่งงานคอมพิวเตอร์ได้รวดเร็วกว่าภาษาระดับสูงอื่น ๆ

2. สั่งงานอุปกรณ์ในระบบคอมพิวเตอร์ได้เกือบทุกส่วนของฮาร์ดแวร์ซึ่งภาษาระดับสูงภาษาอื่นทำงานดังกล่าวได้น้อยกว่า

3. คอมไพเลอร์ภาษาซีทุกโปรแกรมในท้องตลาดจะทำงานอ้างอิงมาตรฐาน(ANSI= American National Standards Institute) เกือบทั้งหมด จึงทำให้โปรแกรมที่เขียนขึ้นด้วยภาษาซีสามารถนำไปใช้กับคอมพิวเตอร์ได้ทุกรุ่นที่มาตรฐาน ANSI รับรอง

4. โปรแกรมที่เขียนขึ้นด้วยภาษาซีสามารถนำไปใช้กับเครื่องคอมพิวเตอร์ที่ใช้ซีพียูต่างเบอร์กันได้ หรือกล่าวได้ว่าโปรแกรมมีความยืดหยุ่น (portabiliy) สูง

5. สามารถนำภาษาซีไปใช้ในการเขียนโปรแกรมประยุกต์ได้หลายระดับเช่น เขียนโปรแกรมจัดระบบงาน(OS) คอมไพเลอร์ของภาษาอื่น โปรแกรมสื่อสารข้อมูลโปรแกรมจัดฐานข้อมูล โปรแกรมปัญญาประดิษฐ์(AI = Artificial Inteeligent) รวมทั้งโปรแกรมคำนวณงานทางด้านวิทยาศาสตร์และวิศวกรรมศาสตร์ เป็นต้น

6. มีโปรแกรมช่วย (tool box) ที่ช่วยในการเขียนโปรแกรมมาก และราคาไม่แพงหาซื้อได้ง่าย เช่น vitanin cหรืออื่น ๆ

7. สามารถประกาศข้อมูลได้หลายชนิดและหลายรูปแบบ ทำให้สะดวกรวดเร็วต่อการพัฒนาโปรแกรมตามวัตถุประสงค์ของผู้ใช้8. ประยุกต์ใช้ในงานสื่อสารข้อมูล และงานควบคุมที่ต้องการความแม่นยำในเรื่องเวลา (real time application) ได้ดีกว่าภาษาระดับสูงอื่น ๆ หลาย ๆ ภาษา9. สามารถเขียนโปรแกรมด้วยเทคนิคแบบโอโอพี (OOP = Object Oriented Programming) ได้หากใช้ภาษาซีรุ่น TURBO C++ ขึ้นไป ทำให้สามารถพัฒนาโปรแกรมประยุกต์เพื่อใช้งานได้กว้างขวางมากยิ่งขึ้นกว่า


10 เหตุผลที่โปรแกรมเมอร์ควรเรียนภาษาซี

10 เหตุผลที่โปรแกรมเมอร์ควรเรียนภาษาซี
       ด้วยศักยภาพและเทคโนโลยีของคอมพิวเตอร์ที่แพรหลาย จึงทำให้มีผู้คิดค้นพัฒนาโปรแกรมคอมพิวเตอร์ภาษาซีขึ้นคือ นายเดนนิส ริทชี่ (Dennis Ritchie) ที่ศูนย์วิจัยเบล (Bell Laboratories) ประเทศสหรัฐอเมริกาเมื่อปี ค.ศ.1972 และเป็นภาษาคอมพิวเตอร์ที่ใช้เขียนระบบปฏิบัติการยูนิกส์ ซึ่งใช้กันแพร่หลายในระบบเครือข่ายคอมพิวเตอร์ในปัจจุบันภาษาซีเป็นภาษาที่มีความใกล้เคียงกับภาษาระดับต่ำ (Low-Level Language) จึงทำให้นักพัฒนาโปรแกรมสามารถ ที่จะกำหนดรายละเอียดของโปรแกรมให้เข้าถึงการทำงานในส่วนต่าง ๆ ของคอมพิวเตอร์ให้มากที่สุดเพื่อให้เกิดความเร็วในการทำงานสูงสุด และในขณะเดียวกันภาษาซีก็ยังมีความเป็นภาษาระดับสูง (High-Level Language) ทำให้ผู้พัฒนาสามารถที่จะพัฒนาโปรแกรมได้ โดยเน้นไปที่การแก้ปัญหาที่ต้องการได้อย่างอิสระโดยไม่ต้องคำนึงถึงฮาร์ดแวร์ใด ๆ ภาษาซีเป็นภาษาโปรแกรมคอมพิวเตอร์ที่ได้รับความนิยมและมีการพัฒนาอย่างต่อเนื่อง นาย Bjarne Stroustrup
    นักวิจัยและพัฒนาของศูนย์วิจัยเบล (Bell Laboratiories) ได้พัฒนาภาษา C++ (ซีพลัสพลัส) ขึ้นมา โดยที่ภาษา C++ มีความสามารถในการทำงานได้ทุกอย่างเหมือนกับภาษาซี ซึ่งมีรูปแบบและโครงสร้างของภาษาใกล้เคียงกัน แต่ภาษา    C++ ใช้หลักการออกแบบโปแกรมเชิงวัตถุ (Object Oriented Design) ในขณะที่ภาษาซีใช้หลักการออกแบบโปรแกรมแบบโมดูลาร์ (Modular Design)
   

ประวัติภาษาซี
                ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำ ถูกพัฒนาโดยเดนนิส ริดชี (Dennis Ritche) แห่งห้องทดลองเบลล์ (Bell Laboratories) ที่เมอร์รีฮิล มลรัฐนิวเจอร์ซี่ โดยเดนนิสได้ใช้หลักการของภาษา บีซีพีแอล (BCPL : Basic Combine Programming Language) ซึ่งพัฒนาขึ้นโดยเคน ทอมสัน (Ken Tomson) การออกแบบและพัฒนาภาษาซีของเดนนิส ริดชี มีจุดมุ่งหมายให้เป็นภาษาสำหรับใช้เขียนโปรแกรมปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ ทั้งนี้เพราะ ภาษาซีมีวิธีใช้ข้อมูลและมีโครงสร้างการควบคุมการทำงานของโปรแกรมเป็นอย่างเดียวกับภาษาของโปรแกรมระดับสูงอื่นๆ จึงถือว่าเป็นภาษาระดับสูง ในด้านที่ถือว่าภาษาซีเป็นภาษาระดับต่ำ เพราะภาษาซีมีวิธีการเข้าถึงในระดับต่ำที่สุดของฮาร์ดแวร์ ความสามารถทั้งสองด้านของภาษานี้เป็นสิ่งที่เกื้อหนุนซึ่งกันและกัน ความสามารถระดับต่ำทำให้ภาษาซีสามารถใช้เฉพาะเครื่องได้ และความสามารถระดับสูง ทำให้ภาษาซีเป็นอิสระจากฮาร์ดแวร์ ภาษาซีสามารถสร้างรหัสภาษาเครื่องซึ่งตรงกับชนิดของข้อมูลนั้นได้เอง ทำให้โปรแกรมที่เขียนด้วยภาษาซีที่เขียนบนเครื่องหนึ่ง สามารถนำไปใช้กับอีกเครื่องหนึ่งได้ ประกอบกับการใช้พอยน์เตอร์ในภาษาซี นับได้ว่าเป็นตัวอย่างที่ดีของการเป็นอิสระจากฮาร์ดแวร์
วิวัฒนาการของภาษาซี
ค.ศ. 1970 มีการพัฒนาภาษา โดย Ken Thompson ซึ่งทำงานบนเครื่อง DEC PDP-7 ซึ่ง ทำงานบนเครื่องไมโครคอมพิวเตอร์ไม่ได้ และยังมีข้อจำกัดในการใช้งานอยู่ (ภาษา สืบทอดมาจาก ภาษา BCPL ซึ่งเขียนโดย Marth Richards)
ค.ศ. 1972 Dennis M. Ritchie และ Ken Thompson ได้สร้างภาษา เพื่อเพิ่มประสิทธิภาพ ภาษา ให้ดียิ่งขึ้น ในระยะแรกภาษา ไม่เป็นที่นิยมแก่นักโปรแกรมเมอร์โดยทั่วไปนัก
ค.ศ. 1978 Brian W. Kernighan และ Dennis M. Ritchie ได้เขียนหนังสือเล่มหนึ่งชื่อว่า The C Programming Language และหนังสือเล่มนี้ทำให้บุคคลทั่วไปรู้จักและนิยมใช้ภาษา ในการเขียน โปรแกรมมากขึ้น
แต่เดิมภาษา ใช้ Run บนเครื่องคอมพิวเตอร์ 8 bit ภายใต้ระบบปฏิบัติการ CP/M ของ IBM PC ซึ่งในช่วงปี ค. ศ. 1981 เป็นช่วงของการพัฒนาเครื่องไมโครคอมพิวเตอร์ ภาษา จึงมี บทบาทสำคัญในการนำมาใช้บนเครื่อง PC ตั้งแต่นั้นเป็นต้นมา และมีการพัฒนาต่อมาอีกหลาย ๆ ค่าย ดังนั้นเพื่อกำหนดทิศทางการใช้ภาษา ให้เป็นไปแนวทางเดียวกัน ANSI (American National Standard Institute) ได้กำหนดข้อตกลงที่เรียกว่า 3J11 เพื่อสร้างภาษา มาตรฐานขึ้นมา เรียนว่า ANSI C
ค.ศ. 1983 Bjarne Stroustrup แห่งห้องปฏิบัติการเบล (Bell Laboratories) ได้พัฒนาภาษา C++ ขึ้นรายละเอียดและความสามารถของ C++ มีส่วนขยายเพิ่มจาก ที่สำคัญ ๆ ได้แก่ แนวความคิดของการเขียนโปรแกรมแบบกำหนดวัตถุเป้าหมายหรือแบบ OOP (Object Oriented Programming) ซึ่งเป็นแนวการเขียนโปรแกรมที่เหมาะกับการพัฒนาโปรแกรมขนาดใหญ่ที่มีความสลับซับซ้อนมาก มีข้อมูลที่ใช้ในโปรแกรมจำนวนมาก จึงนิยมใช้เทคนิคของการเขียนโปรแกรมแบบ OOP ในการพัฒนาโปรแกรมขนาดใหญ่ในปัจจุบันนี้
รูปแบบของการเขียนโปรแกรม
 ชนิดของข้อมูล  ประกอบไปด้วย
1.    character (char) ใช้ 1 byte บน Dos มีค่า -128 ถึง127 นิยมใช้เก็บตัวอักษร ตัวอักษร
2.    integer (int) ใช้ 2 byte มีค่า -32768 ถึง 32767 และยังมี long ซึ่งคล้าย integer แต่เก็บด้วย ช่วงตัวเลขที่ยาวกว่าจึงกินเนื้อที่ ถึง 4 byte
3.    float ใช้ 2 byte ใช้เก็บตัวเลขทศนิยม และยังมี double ซึ่งคล้าย float แต่เก็บด้วยช่วงตัวเลขที่ยาวกว่าจึงกินเนื้อที่ถึง 4 byte
4.    ในภาษา จะไม่มีชนิดข้อมูลเป็น string แต่จะใช้สายของอักษร หรือ Array ของ Char แทนความจริงแล้ว ชนิดของข้อมูลยังสามารถจำแนกไปได้อีกมาก แต่ในที่นี้ขอแนะนำเพียงเท่านี้ก่อน ก็เพียงพอ