C is case Sensitive. หมายความถึง ว่าในภาษา C นั้น อักษรตัวใหญ่ กับตัวเล็ก มีความหมายที่แตกต่างกัน คือ เราสามารถใช้ A เป็นตัวแปร ซึ่งจะเป็นตัวแปรคนละตัวกับ aEvery Statement is definited by a semicolon หมายความว่าทุกข้อความที่เป็นคำสั่งในภาษา C นั้นจะลงท้ายด้วยเครื่องหมาย semicolon (;)
ตัวอย่างของโปรแกรม#include
จากตัวอย่างข้างต้นเราสามารถอธิบายได้หลายอย่าง ให้สังเกต ณ บรรทัดแรกที่เขียนว่า #include
ชนิดของข้อมูล (Data types)
ชนิดของข้อมูลประกอบไปด้วย
character (char) ใช้ 1 byte บน Dos มีค่า -128 ถึง127 นิยมใช้เก็บตัวอักษร 1 ตัวอักษร
integer (int) ใช้ 2 byte มีค่า -32768 ถึง 32767 และยังมี long ซึ่งคล้าย integer แต่เก็บด้วย ช่วงตัวเลขที่ยาวกว่าจึงกินเนื้อที่ ถึง 4 byte
float ใช้ 2 byte ใช้เก็บตัวเลขทศนิยม และยังมี double ซึ่งคล้าย float แต่เก็บด้วยช่วงตัวเลขที่ยาวกว่าจึงกินเนื้อที่ถึง 4 byte
ในภาษา C จะไม่มีชนิดข้อมูลเป็น string แต่จะใช้ สายของอักษร หรือ Array ของ Char แทน ความจริงแล้วชนิดของข้อมูลยังสามารถจำแนกไปได้อีกมาก แต่ในที่นี้ขอแนะนำเพียงเท่านี้ก่อน ก็เพียงพอ
Derive Data Type
- Array - recore [structure] ที่กล่าวมาข้างต้นว่าถ้าพบข้อความ เช่น "This is a book" ในการโปรแกรมทั้งข้อความนี้เราเรียกว่า string และเนื่องจากในภาษา C ไม่มีตัวแปร String ทำให้เราต้องใช้ Array มาจัดการ นั่นคือเมื่อ C มองเห็น string จะจอง พื้นที่ในหน่วยความจำเป็น Array ของ Character บางคนอาจจะสงสัยว่าการจองพื้นที่ในหน่วยความจำของ Array เป็นอย่างไร ทำไมต้องจอง ก็ขอบอกว่า เวลาที่เราประกาศตัวแปรชนิดใดก็ตาม C ก็จะทำการไปหาเนื้อที่ในหน่วยความจำ ขนาดเท่าๆ กับ ชนิดข้อมูลที่เรากำหนดเอาไว้ ซึ่ง ถ้าเราประกาศตัวแปร 2 ตัว ไม่จำเป็นว่าตัวแปรสองตัวนี้จะถูกจองตรงเนื้อที่ที่มันติดกัน แต่ ถ้าเราจองเนื้อที่เป็นแบบ array นั่นหมายความถึงว่า ทุกๆ สมาชิกที่เป็นสมาชิกของ array จะถูกจองเนื้อที่ติดๆกันไป ตามขนาดความยาวของ array นั้น นั่นเอง ถ้าใครยังไม่เข้าใจก็อย่าเพิ่งตกใจเพราะเดี๋ยวจะมีการพูดถึง array อีกในตอนหลังตอนนี้ มาดูก่อนว่า ถ้าเราจะเก็บ string ที่มีข้อความว่า APICHAT จะต้องเก็บอย่างไร
A
P
I
C
H
A
T
NULL Character
Variable declaration
ในภาษา C หากต้องการใช้ตัวแปร จะต้องทำการประกาศตัวแปรไว้ที่ส่วนบนก่อนที่จะถึงบรรทัดที่เป็นประโยคคำสั่งการประกาศตัวแปรจะเป็นการบอก compiler ว่าตัวแปรของเรานั้นเป็นตัวแปรชนิดใด
Datatype
Keyword
characterintegerfloatdouble
charintfloatdouble รูปแบบของการประกาศคือ
Keyword list of variable ;ตัวอย่างเช่น เราจะประกาศตัวแปรชื่อ chr1 และ chr2 เป็นตัวแปรชนิด Character เราจะใช้ว่า
char chr1 , chr2 ; ข้อสังเกต เราจะเห็นได้ว่าหลังการประกาศตัวแปรจะมีเครื่องหมาย ; แสดงว่าการประกาศตัวแปรก็เป็น C Statement (คำสั่ง)เช่นกัน
ทดลองสังเกตตัวอย่างต่อไปนี้#include
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
สัญลักษณ์
ความหมาย
\b\f\n\r\t\"\'\o\ \\v\a\N\XN
backspaceform feednewlinecarriage returnhorizontal tabdouble quotesingle quotenullblackslashvertical tabbelloctal number (N=octal constant)hexadecimal constant (N = hexadecimal constant)
ขอบอกว่าที่ใช้อยู่จริงๆ ก็มีแค่ \n \t \o เท่านั้นส่วนอื่นๆ ถ้าต้องการใช้จริงๆ ค่อยมาเปิดตำราอ่านเอาเองนะ
เมื่อมาถึงจุดนี้สรุปการใช้คำสั่ง printf อย่างคร่าวๆ คือ1. ถ้าต้องการแค่พิมพ์ข้อความขึ้นบนหน้าจอหรือที่เรียกว่า prompt เพื่อให้ผู้ใช้รู้ว่าจะต้องเติมข้อมูลอะไรลงไป หรือเพียงต้องการพิมพ์ Title ของโปรแกรมที่เราเขียนเท่านั้น เช่น เราต้องการเขียนว่า First Program Version 1.1 เราก็จะใช้ คำสั่ง printf("First Program Version 1.1"); หรือ เราต้องการให้ผู้ใช้ใส่ชื่อของผู้ใช้เองลงในโปรแกรม ก็สั่ง printf("Please Enter your Name : "); ซึ่งเหตุผลที่จะต้องมีข้อความนี้เพราะ แน่นอนว่าเมื่อเรา Run โปรแกรมขึ้นมาแล้วปรากฎว่าไม่มีข้อความนี้ แสดงอยู่ แล้วผู้ใช้จะไปทราบได้อย่างไรว่า จะต้องใส่ชื่อของตนเองลงไป2. ถ้าต้องการพิมพ์ ข้อความ แล้วตามด้วย ค่า ที่เราคำนวณได้ หรือ ค่า ที่เก็บไว้ในตัวแปร นั้นๆ เราสามารถทำได้ง่ายๆ ยกตัวอย่างเช่น เรามีตัวแปร width ที่เก็บค่าความยาว และตัวแปร high ที่เก็บค่าความสูง และเราต้องการสั่งพิมพ์ข้อความที่ว่า "This table is width ........... feet " ตรงส่วนที่เว้นไว้คือ ให้แสดงค่าความกว้างที่เก็บอยู่ในต้วแปรชื่อ width ดังนั้นเราสามารถสั่งได้โดย printf("This table is width %d feet",width); ในคำสั่งนี้จะเห็นได้ว่าประกอบไปด้วย 2 ส่วนคือส่วนสีแดง และส่วนสีน้ำเงิน มาดูในส่วนสีแดง พบว่ามีสัญลักษณ์ %d ซึ่งกล่าวไว้ตั้งแต่ต้นแล้วว่า เป็นการแทนเลขจำนวนเต็ม เมื่อตัว compile มองมาในคำสั่ง และเห็นตัว %d เข้าแล้ว มันจะไปมองหาตัวแปรในส่วนของสีน้ำเงินทันทีเพื่อทำการเอาค่าจากตัวแปรในสีน้ำเงินมาแสดงทับตัว %d ตัวอย่างเช่น int width = 6;printf("This table is width %d feet",width);เมื่อ Run โปรแกรมแล้วจะแสดงข้อความดังนี้ This table is width 6 feetต่อไปถ้าเราต้องการแสดงค่า 2 ค่า เช่น แสดงทั้งความกว้างและความยาวทำได้โดยint width = 6;int high =4;printf("This table is width %d feet and high %d feet",width,high);เมื่อ compile ตัว compile มองเห็น %d ตัวแรกมันก็จะมองไปหาตัวแปรตัวแรกในส่วนที่สอง(ส่วนสีน้ำเงิน)ทันทีนั่นก็คือ width จากนั้นเมื่อมันเห็น %d ตัวที่สอง มันก็จะมองไปหาตัวแปรตัวที่สองในส่วนที่สอง(ส่วนสีน้ำเงิน)นั่นคือ high ในทันทีตัวอย่างต่อไป ถ้าต้องการแสดงค่า พื้นที่ของ โต๊ะตัวนี้นั่นก็คือ กว้าง คูณ ยาว เราสามารถสั่งพิมพ์ได้ดังนี้printf("Area of this table is %d",width*high); ในที่นี้ ส่วนสีน้ำเงินคือ กว้าง*ยาว ถือได้ว่าเป็นค่า 1 ค่า ดังนั้นเมื่อ compiler มองเห็น %d ในส่วนสีแดง ก็จะมองหาค่าค่าแรกในส่วนสีน้ำเงิน นั่นคือ ค่าของ กว้าง*ยาว มาใส่แทน %d ในทันทีโดยคร่าวๆ แล้ว คำสั่ง printf มีการใช้เพียงเท่านี้ แต่ความจริงแล้วยังมีลูกเล่นอีกมากมาย แต่ไม่ขอพูดในที่นี้
ถึงเวลานี้เรารู้จักชนิดของตัวแปร รู้จักการแสดงข้อความออกทางหน้าจอเรียบร้อยแล้ว ต่อไปเราจะมาศึกษากันว่าหากต้องการรับค่าจาก keyboard จะต้องทำอย่างไร
Input Command
คำสั่งในการ input ที่ใช้ง่ายๆก็คือ คำสั่ง
scanf(" ตัวกำหนดชนิดข้อมูล",&ตัวแปร);
ยกตัวอย่างเช่น ต้องการรับค่า จำนวนเต็ม มาใส่ไว้ในตัวแปรที่ชื่อ number จะสั่งดังนี้ int number;scanf("%d",&number); สำคัญอย่าลืมเครื่องหมาย & และหากรับตัวแปร 2 ตัว โดย รับค่า จำนวนเต็มไว้ในตัวแปรชื่อ num1 และ รับค่า จำนวนจริง ไว้ในตัวแปร num2 ทำได้โดยint num1,num2;scanf("%d %f",&num1,&num2);หากต้องการรับข้อความ Apichat ซึ่งก็คือ 7 character ทำได้โดยchar name[7];scanf("%c",name);สังเกตไหมครับว่าที่คำสั่ง scanf อันหลังนี้ตรงตัวแปร name ทำไมไม่มีเครื่องหมาย & ปรากฎอยู่ นั่นก็เป็นเพราะว่าเราได้ทำการกำหนดตัวแปร name ไว้เป็นตัวแปร array ชนิด character ดังนั้นการที่เราเรียกชื่อตัวแปรที่เป็น array นั่นก็หมายความว่าเราได้ทำการเรียก"ที่อยู่" ของตัวแปรกลุ่มนั้นไว้แล้วจึงไม่จำเป็นต้องใส่เครื่องหมาย & แต่อย่างใด นั่นเป็นการแสดงให้เห็นว่า เมื่อเราเรียกคำสั่ง scanf ตัวคำสั่งนี้จะทำการยัดค่าที่ผู้ใช้ ใส่ให้เก็บไว้ในตัวแปรตามที่อยู่ที่ให้ไว้นั่นคือ
scanf("%d",&number);
ก็เป็นการยัดค่าตัวแปร integer(รู้ได้จาก %d) ไว้ในที่อยู่(&)ของตัวแปรที่ชื่อ number และเรายังรู้อีกว่าโดยปกติการกำหนดค่าให้กับตัวแปรที่เป็น array นั้นจำเป็นจะต้องมีการใส่ index ให้กับ ตัวแปรนั้นเสมอว่า จะเก็บไว้ใน array ช่องใด เช่นสมมติ ตัวแปรชนิด integer ชื่อ num[7] คือตัวแปรที่ชื่อ num ที่มีช่องสมาชิกย่อยทั้งหมด7ช่องด้วยกันโดย ตัวแปร num จะมีโครงสร้างดังนี้
num[0]
num[1]
num[2]
num[3]
num[4]
num[5]
num[6]และหากเราต้องการจะกำหนดค่าให้กับตัวแปร num ในแต่ละช่องสามารถทำได้โดย num[0]=10; หรือ num[1]=20; เป็นต้น นั่นคือการเขียนชื่อตัวแปรแล้วตามด้วย index ของตัวแปรนั้นว่าต้องการจะกำหนดค่า ของเราไว้ในช่องใดของ array num นั้น และที่เราต้องรู้อีกอย่างก็คือ หากเราเรียกชื่อตัวแปร array เฉยๆ โดยไม่ได้ทำการใส่ index ให้กับตัวแปรนั้นเช่นเราเรียก num นั่นจะกลายเป็นการชี้ไปยังที่อยู่ของตัวแปร num ที่อยู่ใน หน่วยความจำของเครื่อง ตอนนี้อยากให้มองหน่วยความจำ เป็นช่องๆที่เรียงติดกันยาวมาก และเดิมทีการที่เราประกาศตัวแปร ก็คือการที่ตัวชี้ชี้ลงไปยังช่องๆในหน่วยความจำนั้นอย่างสุ่มคือ เราก็ไม่รู้ว่าเมื่อเราประกาศตัวแปรแล้วมันจะไปชี้ที่ใดของหน่วยความจำมันจะทำการจองจำนวนช่องตามชนิดของตัวแปร เช่นถ้าประกาศตัวแปรชนิด integer มันอาจจะจองสัก 2 ช่องที่ติดกัน ถ้าประกาศตัวแปร double มันอาจจะจองสัก 4 ช่องติดกันเป็นต้น และหากเราจองตัวแปรชนิด array ที่เป็น integer ตามข้างต้น มันก็จะจองทั้งหมด 7 ช่องติดกัน โดยแต่ละช่องก็จะมีคุณสมบัติเป็นช่องของ integer ซึ่งอาจจะจอง2ช่อง ใน num[0] จนถึง num[6]โอ๋ย ! เผลอพูดเรื่อง array มาซะยืดยาว บางคนอาจเข้าใจบางคนอาจจะไม่เข้าใจ แต่จริงๆ แล้วในตอนนี้อยากจะบอกเพียงว่า หากเรียกชื่อตัวแปรที่เป็น array เฉยๆ โดยไม่ใส่ index ให้มันมันก็จะทำการชี้ไปที่ที่อยู่ของตัวแปรนั้นนั่นเอง ที่อยากจะบอก. จากนั้นจึงเป็นเหตุผลว่าทำไมคำสั่ง scanf ที่รับตัวแปรที่เป็น array ของ character เราจึงไม่ต้องใส่เครื่องหมาย & อยากจะบอกแค่นี้แหละ แต่ตอนนี้ก็ต้องถือว่าเรามีความรู้เรื่อง array กันบ้างแล้วไม่มากก็น้อย ขอย้ำว่าเป็นเฉพาะตอนรับ array ของ character(หรือในความหมายคือการรับ string นั่นแหละ เนื่องจากในภาษาซีไม่มีตัวแปรชนิด string จึงจำเป็นต้องใช้ตัวแปรที่เป็น array ของ character มาแทน ) เท่านั้นนะ ที่ไม่ต้องใส่ & หน้าตัวแปรในคำสั่ง scanf อย่าเข้าใจผิดหากเป็นตัวแปรชนิดอื่นก็ทำไปตามกฎซะนะ
คำสั่งที่ใช้ในการรับค่าจากแป้นพิมพ์คำสั่งต่อไป ก็ขอแนะนำคำสั่ง gets( ) เป็นคำสั่งที่ใช้รับค่า string จากแป้นพิมพ์ คำสั่งนี้อาจารย์สุรพล มักจะบังคับให้เด็กนักเรียนใช้มากกว่าคำสั่ง scanf เพราะท่านบอกว่าคำสั่งนี้มันปลอดภัยดี คือรับอะไรมามันก็จะเป็นการรับ string ทั้งสิ้น ไม่เหมือนกับคำสั่ง scanf ซึ่งจะต้องกำหนดชนิดตัวแปรที่รับเช่นต้องกำหนดว่ารับ %d ให้กับตัวแปรที่เป็น integer อาจารย์ท่านว่า หากคนที่ใช้โปรแกรมมันอุตริว่า เขาให้เต็มตัวเลข มันไปเติมเป็นตัวหนังสือซะ เดี๋ยวโปรแกรมมันจะผิดพลาดกันไปหมด แกเลยแนะนำให้ใช้คำสั่ง gets( ) ในการรับค่าแทน แล้วอยากจะแปลงค่า string ที่ได้ไปเป็นตัวแปรชนิดใด ค่อยใช้คำสั่งแปลงกัน เช่นเมื่อรับ string มาแล้วต้องการแปลงมันให้เป็น integer ก็สามารถใช้คำสั่ง atoi( ) ได้ จะขอยกตัวอย่างดังนี้
#include
นอกจากคำสั่ง scanf , gets แล้วยังมีอีกหลายคำสั่งมากมายเช่น getchar( ),getche( ), getch( ) เป็นต้นซึ่งทั้ง 3 อันหลังนี้ก็มีคุณสมบัติแตกต่างกัน คือ
getchar( ) จะรับตัวอักษรทางแป้นพิมพ์โดยจะรับเพียง 1 ตัวเท่านั้นและมีการแสดงตัวอักษรนั้นทางจอภาพด้วยgetche( ) จะรับตัวอักษร 1 ตัวจากทางแป้นพิมพ์และจะแสดงตัวอักษรนั้นทางจอภาพด้วยเช่นกันแต่เมื่อป้อนเสร็จไม่ต้องกด Enter ซึ่งจะคล้ายกับ getchar( ) แต่ getchar( ) นั้นเมื่อป้อนตัวอักษรเสร็จแล้วจะต้องกด Enter ด้วยเพื่อทำงานต่อไปgetch( ) จะคล้ายกับ getche( ) จะแตกต่างตรงที่จะไม่แสดงตัวอักษรที่รับทางแป้นพิมพ์ออกทางจอภาพ.
วิธีใช้ของทั้ง 3 ฟังก์ชันคล้ายกันก็คือ ประกาศตัวแปร char สมมติชื่อ ch จากนั้นก็เรียกฟังก์ชันตามปกติดังนี้#include
น
Structure Programming
อยากจะบอกว่าในส่วนนี้เราจะทำการเรียนรู้เกี่ยวกับโครงสร้างของการโปรแกรมที่มีลักษณะเป็นแบบ sequential lines นั่นคือ compiler จะทำงานโดยการเริ่มไล่จากบรรทัดบนสุดแล้วทำงานไล่ลงมาเป็นบรรทัดๆ ไปเรื่อยๆจนจบโปรแกรม ซึ่งจะต่างจากการทำงานของการโปรแกรมแบบ OOP (object oriented programming) ซึ่งในที่นี้เราจะไม่พูดถึง
ในการโปรแกรมนี้เราจำเป็นจะต้องรู้จัก โครงสร้างของ loop หรือการวนซ้ำก่อน ถามว่าทำไมจะต้องมีการวนซ้ำ ก็เป็นเพราะในการโปรแกรมส่วนใหญ่นั้นการวนซ้ำหรือ loop นี้มีความสำคัญหรือมีส่วนเกี่ยวข้องอยู่มาก เช่นหากเราต้องการจะ ทำการบวกเลขตั้งแต่ 1 ถึง 100 หากเรามานั่งเขียนหรือตั้งตัวแปรแล้วค่อยๆมาบวกกันเป็นคู่ๆ หรือบวกกันทีเดียวในบรรทัดเดียวก็อาจทำได้แต่มันก็ไม่สมควรหากเราต้องการบวกตัวเลขมากกว่า 100 เช่น 1000 เป็นต้นตัวอย่างที่ผิด เรากำหนดให้ n เป็นตัวแปรในการรับค่าคำตอบของการบวกกันของตัวเลข ตั้งแต่ 1 ถึง 100 เราจึงเขียนเป็นว่า
n=1+2+3+4+5+6+7+8+9+10+11+12+...+96+97+98+99+100;
ในส่วนที่ละไว้นั้น (... ) ในส่วนของการโปรแกรมเราจะต้องเขียนให้หมด ซึ่งถ้าเขียนหมดจริงๆ ก็ตายกันพอดีดังนั้น การวนซ้ำจึงเข้ามามีบทบาทในการทำ ก็เลยจะขออธิบายโครงสร้างก่อนก็แล้วกันคำสั่ง for loop
for(ตัวนับ= i;เงื่อนไขที่จะให้ยังทำงานอยู่ใน loop; การเพิ่มหรือการลดตัวนับ){ statement ;}ก่อนอื่นต้องขออธิบายก่อนว่านี่คือโครงสร้างของ for loop โดยขอให้สังเกตบรรทัดแรกตรงที่มีคำสั่ง for แล้วให้ดูในวงเล็บ ปรากฎว่าตามรูปแบบมาตรฐานนั้น ในส่วนของวงเล็บหลังคำว่า for จะประกอบไปด้วย 3 ส่วน ส่วนแรกก็คือ การกำหนดค่าเริ่มต้นให้กับตัวนับ อาจจะงงว่าตัวนับที่พูดถึงคืออะไร ใน for loop นั้น จำเป็นจะต้องมีตัวนับอยู่ด้วยเสมอ ซึ่งตัวนับนี้ จะเป็นตัวบอกเราว่า loop ของเรานั้นทำการวนซ้ำมาเป็นรอบที่เท่าไรแล้ว และในส่วนแรกนี้เราจำเป็นจะต้องมีการกำหนด ค่าเริ่มต้นให้กับตัวนับก่อน ในส่วนที่สอง เงื่อนไขที่จะให้ยังทำงานอยู่ใน loop นี้ โดยส่วนใหญ่จะเป็นการกำหนดว่าเมื่อตัวนับมีการวนซ้ำ ถึงจำนวนรอบเท่านั้นเท่านี้ก็จะให้หลุดจาก loop ในส่วนที่สาม การเพิ่มหรือการลดตัวนับ ตรงนี้สำคัญ ซึ่งจะเป็นส่วนที่ทำให้ ตัวนับของเรามีการเพิ่มค่าหรือลดค่า ในแต่ละรอบของการวนซ้ำเช่นอาจเพิ่มทีละหนึ่ง หรือ เพิ่มทีละ3 เป็นต้นหรืออาจจะลดทีละ 1 หรือลดทีละ 3 ก็แล้วแต่โปรแกรมจะกำหนด หลังจากวงเล็บที่อยู่หลัง for ก็จะมีเครื่องหมาย ปีกกาเพื่อให้เข้าสู่ส่วนของคำสั่ง ที่จะต้องทำหลังจากบรรทัด for ก็มาถึง statement ซึ่งจะเป็นส่วนที่ให้เราเขียนคำสั่งว่า ในแต่ละรอบนั้น เราจะให้โปรแกรมทำงานอะไร ซึ่งก็อาจมีได้หลายคำสั่ง บรรทัดสุดท้ายก็คือ ปีกกาปิดเพื่อจบโครงสร้าง for loopดูตัวอย่าง การบวกเลขตั้งแต่ 1 ถึง 100#include
ดูตัวอย่าง การแสดงเฉพาะเลขคู่(ถอยหลัง)ที่อยู่ในช่วงตั้งแต่ 1 ถึง 100#include
while ( เงื่อนไขที่ทำให้ยังต้องเข้าไปใน loop ) { statement ;}เรามักจะแปลได้ว่า "ขณะที่(.....เงื่อนไข......ยังเป็นจริงอยู่) ก็เข้าไปทำคำสั่งหลังเครื่องหมาย { "ต่อไปนี้จะขอสร้างตัวอย่างขยายข้อความข้างบนหน่อย โดยเราจะสั่งให้มีการบวกเลขตั้งแต่ 1-100 เหมือนตัวอย่างใน for loop นั่นแหละ(มันเป็นตัวอย่างเอาไว้หากิน!!!)#include
ประโยคเงื่อนไข (Condition statement) สำหรับประโยคเงื่อนไขนะครับ หลายคนอาจจะสงสัยว่า จะต้องใช้เมื่อไหร่ และจะใช้อย่างไร ก็คงจะตอบได้ว่า ประโยคเงื่อนไขนั้นเราจะใช้เมื่อเราต้องการจะตัดสินใจอะไรบางอย่างเช่นคำพูดที่เราพูดกันเรื่อยๆว่า ถ้าเป็นอย่างนี้แล้วให้เป็นอย่างนั้น
ถ้า คำพูดของเขาเป็นความจริง แล้ว ฉันก็จะไปกับเขา ไม่เช่นนั้น ฉันก็จะไม่ไป
จากประโยคที่ให้มานี้ เราจะพบว่าเงื่อนไขที่จะบอกว่า ฉันจะไปกับเขา หรือไม่ไปนั้น มันขึ้นกับว่า คำพูดของเขา จริงหรือเท็จ นั่นเอง ดังนัเน เงื่อนไขของข้อความนี้ก็คือ คำพูดของเขาเป็นความจริง ถ้าลองเขียนเป็นรูปแบบภาษาซีที่เกี่ยวข้องกับการตัดสินใจ ก็จะเขียนได้ว่าif (คำพูดของเขาเป็นความจริง){ ฉันก็จะไปกับเขา}else{ ฉันก็จะไม่ไป} เราลองมาดูอีกตัวอย่างให้ชัดๆไปเลย เช่น ถ้าเรามีเงินมากกว่า 100 บาท เราจะซื้อของขวัญ A แต่ถ้าน้อยกว่าเราก็จะซื้อของขวัญ B เราสามารถเขียนให้อยู่ในรูปภาษาซีได้ดังนี้if ( เงินที่มี > 100 ){ ซื้อของขวัญ A}else{ ซื้อของขวัญ B}
ดังนั้นจะขอสรุปเกี่ยวกับโครงสร้าง if-then-else ได้ดังนี้นะครับโครงสร้างที่ 1 if-then มีรูปแบบดังต่อไปนี้if( เงื่อนไขเป็นจริง ){ statement;} นั่นคือถ้าเงื่อนไขเป็นจริง ก็จะมาทำคำสั่งที่ statement; ถ้าเงื่อนไขนั้นไม่จริง ก็ไม่ต้องทำอะไร
โครงสร้างที่ 2 if-then-else มีรูปแบบดังต่อไปนี้if( เงื่อนไขเป็นจริง ){ statement1;}else{ statement2;} นั่นคือถ้าเงื่อนไขเป็นจริง ก็จะมาทำคำสั่งที่ statement1; ถ้าเงื่อนไขนั้นไม่จริง ก็จะมาทำ statement2;
โครงสร้างที่ 3 if-then-elseif- มีรูปแบบดังต่อไปนี้if( เงื่อนไขที่หนึ่งเป็นจริง){ statement1;}elseif( เงื่อนไขที่สองเป็นจริง ){ statement2;}else{ statement3;} นั่นคือถ้าเงื่อนไขที่หนึ่งเป็นจริง ก็จะมาทำคำสั่งที่ statement; แต่ถ้าไม่จริงให้มาตรวจสอบเงื่อนไขที่สองถ้าเงื่อนไขที่สองเป็นจริงให้ทำคำสั่ง statement2 แต่ถ้าไม่จริงให้หลุดมาทำ statement 3
ลองมาดูตัวอย่างกันสักหน่อยหากเราตรวจการดูค่าตัวแปร x ว่า ถ้า x มีค่าน้อยกว่า 100 ให้พิมพ์คำว่า Less than 100 ถ้า x ไม่น้อยกว่า 100 ให้พิมพ์คำว่า Not less than 100 เราสามารถเขียนโปรแกรมได้ดังนี้#include
#include
ตัวอย่างสุดท้าย ปิดท้ายโครงสร้าง if นี้คือโปรแกรมตัดเกรด โปรแกรมยอดนิยมในการเขียนโครงสร้าง if นั่นคือ หากเรากำหนดกฎเกณฑ์ในการตัดเกรดดังนี้คือ
คะแนน
เกรด
80-100
A
70-79
B
60-69
C
50-59
D
น้อยกว่า 50
F
นั่นหมายความว่าถ้าคะแนนของเราตกลงในช่วงคะแนนใด เราก็จะได้เกรดนั้น หากเรากำหนดให้ตัวแปร x เป็นคะแนนที่เราได้ โปรแกรมจะสามารถเขียนได้ดังนี้
#include