วันพฤหัสบดีที่ 30 สิงหาคม พ.ศ. 2555

Code ตัวอย่างโปรแกรมและหน้าตาโปรแกรมภาษา

Code ตัวอย่างโปรแกรมและหน้าตาโปรแกรมภาษา
ตัวอย่างที่ 1 แสดงตัวอย่างโปรแกรมภาษาซีเบื้องต้น
#include <stdio.h>
void main( ) {
/* Display message to standard output */
printf(“My first program.”);
ตัวอย่างที่ 2 แสดงตัวอย่างโปรแกรมภาษาซีเบื้องต้น
#include <stdio.h> void main( ) { /* Display message to standard output */ printf
(“My first program.”); }

ตัวอย่างที่ 3 แสดงตัวอย่างโปรแกรมภาษาซีเบื้องต้น
#include
<stdio.h>
void
main
()
{
/* Display message
to standard
output */
printf
(
My first program.”
)
;
}

ตัวอย่างที่ 4 แสดงตัวอย่างการใช้ค่าของตัวแปรชนิด char
#include <stdio.h>
void main( ) {
int no;
char ch;
ch = ‘J’;
printf(“char : %c, dec : %d, oct : %o, hex : %x”, ch, ch, ch, ch);
no = ch;
printf(“\nno : %d, ch : %c”, no, ch);
no = 68;
ch = no;
printf(“\nno : %d, ch : %c”, no, ch);
}
ผลการทำงานของโปรแกรม
char : J, dec : 74, oct : 112, hex : 4a
no : 74, ch : J
no : 68, ch : D

ตัวอย่างที่ 5 แสดงตัวอย่างการรับข้อมูลเพื่อนำมาแสดงผล
#include <stdio.h>
void main( ) {
char name[100];
printf("What is your name ?\n");
scanf("%s", name);
printf("Very glad to know you, ");
printf("%s.",name);
}
ผลลัพธ์ของการทำงาน
What is your name ?
Willy
Very glad to know you, Willy.

ตัวอย่างที่ 6 แสดงการกำหนดค่าจำนวนจริงให้กับตัวแปรจำนวนเต็ม
#include <stdio.h>
void main( ) {
int x;
x = 14.8328;
printf(“x value is %d”, x);
}
ผลการทำงานของโปรแกรม
x value is 14

ตัวอย่างที่ 7 โปรแกรมหาผลรวมของเลขจำนวนเต็ม 2 จำนวนที่รับข้อมูลจากผู้ใช้
#include <stdio.h>
void main( ) {
int x, y, z;
printf(“Enter X value : “);
scanf(“%d”, &x);
printf(“Enter Y value : “);
scanf(“%d”, &y);
z = x + y;
printf(“Summary of X and Y is %d”, z);
}
ผลการทำงานของโปรแกรม
Enter X value : 15
Enter Y value : 20
Summary of X and Y is 35

ตัวอย่างที่ 8 แสดงการใช้ตัวดำเนินการเพิ่มค่า
#include <stdio.h>
void main( ) {
int y, count;
count = 1;
y = count++;
printf(“y = %d, count = %d”, y, count);
count = 1;
y = ++count;
printf(“\ny = %d, count = %d”, y, count);
}
ผลการทำงานของโปรแกรม
y = 1, count = 2
y = 2, count = 2

ตัวอย่างที่ 9 แสดงการใช้ตัวดำเนินการเปลี่ยนชนิดข้อมูล
#include <stdio.h>
void main( ) {
int x;
x = 2.5 * 2;
printf(“x value is %d”, x);
x = (int)2.5 * 2;
printf(“\nx value is %d”, x);
x = (int)(2.5 * 2);
printf(“\nx value is %d”, x);
}
ผลการทำงานของโปรแกรม
x value is 5
x value is 4
x value is 5

ตัวอย่างที่ 10 แสดงของการเปรียบเทียบด้วยตัวกาํเนินการความสัมพันธ์
#include <stdio.h>
void main( ) {
int x, y
printf(“Enter X : “);
scanf(“%d”, &x);
printf(“Enter Y : “);
scanf(“%d”, &y);
printf(“X > Y is %d”, x>y);
}

ผลการทำงานของโปรแกรม
Enter X : 32
Enter Y : 24
X > Y is 1

โปรแกรมแบบวนซ้ำ (คำสั่งประเภท For , while, do while)

โปรแกรมแบบวนซ้ำ (คำสั่งประเภท For , while, do while)

 

คำสั่งควบคุมการทำงาน แบบ for
คำสั่ง For เป็นคำสั่งควบคุมการทำงานและกำหนดการทำงานวนรอบคล้าย ๆ กับคำสั่ง while จะมีรูปแบบแตกต่างกับคำสั่งควบคุมการทำงานอืน ๆ
คำสั่ง for เป็นเป็นคำสั่งสั่งควบคุมการทำงานและกำหนดการทำงานวนรอบ โดยตั้งค่าก่อน แล้วจึงทำการพิจารณาเงื่อนไข ถ้าเงื่อนไขเป็นจริง ก็จะทำคำสั่งและวนรอบต่อไป
รูปแบบการเขียน คำสั่ง for
for (ค่าเริ่มต้น;เงื่อนไข;การเพิ่มหรือลดค่า)
ตัวอย่างการโปรแกรม
ผลลัพธ์ของโปรแกรม

การเขียนโดยใช้คำสั่ง for จะเห็นได้ว่ามีความกระชับเขียนได้สั้นกว่าคำสั่ง while เพราะสามารถกำหนดได้ในครั้งเดียว แต่การทำงานก็จะได้ผลเหมือนกันกับคำสั่งwhile
ลักษณะการทำงานก็คือโปรแกรมจะทำการเช็คในส่วนของเงื่อนไข หากเงื่อนไขเป็นจริงก็จะเพิ่มค่าของตัวแปรไป 1 และทำคำสั่งในลูป
จากนั้นก็ทำการตรวจสอบเงื่อนไขอีก หากเงื่อนไขเป็นจริงก็จะทำงานซ้ำ ๆ แบบนี้ไปเรื่อย ๆ จนกว่าเงื่อนไขเป็นเท็จ การทำงานของโปรแกรมก็จะหลุดจากลูป และจบการทำงาน
___________________________________________________________
คำสั่งควบคุมการทำงาน แบบ While
คำสั่ง While เป็นคำสั่งสำหรับใช้ควบคุมการทำงานแบบมีเงือนไข อีกแบบหนึ่ง ซึ่งแตกต่างออกไปจากการใช้งานคำสั่ง if และ elseif ก่อนหน้านี้ ซึ่งคำสั่ง While เป็นคำสั่งที่จำเป็นในการนำไปใช้เขียนโปรแกรม ลองเข้ามาดูค่ะ ว่ามีรูปแบบการเขียนและวิธีเขียนอย่างไร
คำสั่ง While เป็นคำสั่งสำหรับใช้ควบคุมการทำงานแบบมีเงือนไข ในการกำหนดคำสั่งให้มีการทำงานแบบวนรอบ โดยพิจารณาเงื่อนไขก่อน หากค่าที่ได้เป็นจริงตามเงื่อนไข จึงจะประมวลผลตามคำสั่งที่กำหนดไว้
รูปแบบการเขียน คำสั่ง While
While (...เงื่อนไข...) {คำสั่งที่ต้องการให้ทำงาน เมื่อเงื่อนไขเป็นจริง
ตัวอย่างการโปรแกรม

ผลลัพธ์ของโปรแกรม
การเขียนโดยใช้คำสั่ง for จะเห็นได้ว่ามีความกระชับเขียนได้สั้นกว่าคำสั่ง while เพราะสามารถกำหนดได้ในครั้งเดียว แต่การทำงานก็จะได้ผลเหมือนกันกับคำสั่ง while
ลักษณะการทำงานก็คือโปรแกรมจะทำการเช็คในส่วนของเงื่อนไข หากเงื่อนไขเป็นจริงก็จะเพิ่มค่าของตัวแปรไป 1 และทำคำสั่งในลูป
จากนั้นก็ทำการตรวจสอบเงื่อนไขอีก หากเงื่อนไขเป็นจริงก็จะทำงานซ้ำ ๆ แบบนี้ไปเรื่อย ๆ จนกว่าเงื่อนไขเป็นเท็จ การทำงานของโปรแกรมก็จะหลุดจากลูป และจบการทำงาน
___________________________________________________________
คำสั่งควบคุมการทำงาน แบบ Do...While
คำสั่งนี้มีลักษณะการทำงานคล้ายกับคำสั่ง While แต่มีส่วนแตกต่างอยู่เล็ก ๆ น้อย ๆ ที่มี Do เพิ่มเข้ามานี่ดิ แล้วไอ้ Do นี่จะทำให้แตกต่างจาก While เดี่ยว ๆ
คำสั่ง do while เป็นคำสั่งที่กำหนดให้มีการทำงานวนรอบ คล้าย ๆ คำสั่ง While แต่แตกต่างกันที่คำสั่ง do while จะให้ทำคำสั่งในลูป do ก่อน แล้วค่อยพิจารณาเงื่อนไขใน while ถ้าค่าเงื่อนไขใน while เป็นจริง จึงจะวนรอบทำคำสั่งในลูป do ต่อไป
รูปแบบการใช้คำสั่ง do while
do {คำสั่ง} while (เงื่อนไข)
ตัวอย่างการโปรแกรม

ผลลัพธ์ของโปรแกรม

จากตัวอย่างการโปรแกรม เราได้ทำการเขียนโปรแกรม โดยสร้างตัวแปร $i แล้วให้มีค่าเท่ากับ 5 หลังจากนั้น ตรงนี้ละที่จะทำงานต่างจาก while เราะจะเจอกับคำสั่ง do เมื่อเจอคำสั่ง do โปรแกรมจะทำเลยทันที (do แปลว่าทำนี่น่า) ซึ่งก็คือแสดงผลค่าตัวแปร i คือ แสดงเลข 5 ออกมา และขึ้นบรรทัดใหม่ แล้วเมื่อเจอคำสั่ง $i-- จำกันได้ไหมเพิ่งผ่านไปในบทความที่แล้ว มีความหมายว่าลบค่า $i ไป 1 ดังนั้นตอนนี้ $i=4 แล้วนะ
จากนั้นโปรแกรมจะเจอคำสั่ง while ซึ่งจะทำการเช็คค่าในตัวแปร i คือ หากตัวแปร i มีค่ามากกว่าหรือเท่ากับ 1 โปรแกรมจะวนลูปทำคำสั่งในลูป do อีกครั้ง การทำงานก็เหมือนคำสั่ง while ก็คือเช็คจนเงื่อนไขเป็นเท็จจึงจะหลุดลูปและจบการทำงาน
คำถามคือ แล้วเมื่อไหร่ละจะหลุดลูป คำตอบก็คือเมื่อมันลดค่า $i ลงรอบละ 1 เรื่อย ๆ จนเมื่อ $i=0 ก็จะหลุดลูปและจบการทำงานค่ะ
ในการทำงานจริง ๆ การเขียนโดยใช้เงือนไขจำพวก while เราจะเอาไปใช้ประโยชน์ในการทำซ้ำ ๆ เช่น การดึงขอมูลจากดาต้าเบสมาแสดง การวนรอบแสดงคำสั่งเซลล์ต่าง ๆ ของตารางเป็นต้น ซึ่งเราจะให้อะไรแสดงผลออกทางหน้าจอ เราก็เอาสิ่งเหล่านั้น มาใส่ไว้ในลูปที่ต้องการให้ทำงานค่ะ แล้วจะแสดงเท่าไหร่ ก็ขึ้นอยู่กับเงื่อนไขค่ะ

โครงสร้างของภาษา C

โครงสร้างของภาษา C
ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน
1. ส่วนของเฮดเดอร์ไฟล์ (Header File or Processing Directive) ส่วนนี้จะมีจุดสังเกตที่สำคัญคือจะขึ้นต้นด้วยเครื่องหมาย # เสมอ การทำงานของคอมไพเลอร์จะทำงานในส่วนนี้เป็นส่วนแรก ในส่วนนี้เป็นส่วนที่เก็บไลบรารีมาตรฐานของภาษา C ซึ่งจะถูกดึงเข้ามารวมกับโปรแกรมในขณะแปลภาษาโปรแกรม (Compile) โดยใช้คำสั่ง
# include ซึ่งสามารถเขียนได้ 2 รูปแบบ คือ
รูปแบบที่ 1 : #include<HeaderName>
รูปแบบที่ 2 : #include “HeaderName”
โดยที่ HeaderName เป็นชื่อของ header file
ทั้งสองแบบนี้มีความแตกต่างกันคือ แบบ <…..> คอมไพเลอร์จะค้นหาเฮดเดอร์ไฟล์จากไลบรารีของภาษา C เพียงที่เดียวเท่านั้น ส่วนที่ใช้เครื่องหมาย “……” คอมไพเลอร์จะค้นหาเฮดเดอร์ไฟล์จากไลบรารีที่เก็บ Source Code ของเราก่อน ถ้าหากไม่เจอจะไปค้นหาที่ไลบรารีของภาษา C เฮดเดอร์ไฟล์จะมีนามสกุลเป็น .h เท่านั้น เฮดเดอร์ไฟล์ที่สำคัญที่ขาดไม่ได้คือ stdio.h
2. ส่วนของตัวแปร Global เป็นส่วนประกาศตัวแปรที่สามารถใช้ได้ทั้งโปรแกรม ส่วนนี้จะมีหรือไม่มีก็ได้
3. ส่วนของฟังก์ชัน (Function) เป็นส่วนการทำงานของโปรแกรม ในโครงสร้างภาษา C จะบังคับให้มีอย่างน้อย 1 ฟังก์ชันคือ ฟังก์ชัน main() ซึ่งเป็นฟังก์ชันเริ่มการทำงานของโปรแกรม (คอมไพเลอร์จะประมวลผลที่ฟังก์ชัน main() เป็นฟังก์ชันแรก) โดยในขอบเขตของฟังก์ชันจะเริ่มต้นด้วยเครื่องหมาย { และสิ้นสุดด้วยเครื่องหมาย }
4. ส่วนของตัวแปร Local เป็นส่วนประกาศตัวแปรที่สามารถใช้ได้เฉพาะภายในฟังก์ชันของตนเองเท่านั้น ส่วนนี้จะมีหรือไม่มีก็ได้
5. ส่วนของตัวโปรแกรม เป็นส่วนคำสั่งการทำงานของโปรแกรม โดยที่คำสั่งแต่ละคำสั่งจะต้องจบด้วยเครื่องหมาย ; เสมอ
6. ส่วนของตัวส่งค่ากลับ เป็นส่วนของการส่งค่าข้อมูลกลับเมื่อฟังก์ชันจบการทำงาน โดยค่าที่ส่งกลับจะต้องเป็นค่าที่มีชนิดของข้อมูลตรงกับชนิดของข้อมูลที่ฟังก์ชันคืนค่ากลับ (Return Type) ในกรณีไม่ต้องการให้มีการส่งค่ากลับ สามารถกำหนดได้โดยใช้คีย์เวิร์ด void
____________________________________________________________
ตัวอย่าง
#include<stdio.h>
#include<conio.h>
Void main(void)
{
printf(“Welcome to C Programming”);
getch();
}
____________________________________________________________
อธิบายโปรแกรม
#include<stdio.h> // เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ เกี่ยวกับการจัดการอินพุตและเอาต์พุต
#include<conio.h> // เป็นการเรียกใช้ส่วนของเฮดเดอร์ไฟล์ เกี่ยวกับการจัดการเกี่ยวกับหน้าจอทั้งหมด
Void main(void) //ส่วนของฟังก์ชัน main() โดยประกาศชนิดข้อมูลที่คืนค่ากลับเป็น void และค่าที่รับเข้ามาในฟังก์ชันเป็น void หมายถึง ฟังก์ชันนี้จะไม่มีการคืนค่าใดๆ กลับออกไป และไม่มีการรับค่าใด ๆ เข้ามาในฟังก์ชัน
{ // ส่วนเริ่มต้นของฟังก์ชัน main()
printf(“Welcome to C Programming”); //เป็นคำสั่งแสดงผลทางจอภาพ
getch(); //เป็นคำสั่งรับอักขระจากแป้นพิมพ์ เพื่อกำหนดไม่ให้โปรแกรมปิดหน้าต่างผลลัพธ์ เมื่อโปรแกรมจบการทำงาน
} // ส่วนสิ้นสุดของฟังก์ชัน main()

โครงสร้างข้อมูล (Data Structure)

โครงสร้างข้อมูล (Data Structure)

 

โครงสร้างข้อมูล (Data Structure) คือ ความสัมพันธ์ระหว่างข้อมูลที่อยู่ในโครงสร้างนั้นๆ รวมทั้งกระบวนการในการจัดการข้อมูลในโครงสร้าง เช่น เพิ่ม แก้ไข ลบ ตัวอย่างของโครงสร้างข้อมูลประเภทต่างๆ ได้แก่ แถวลำดับ ลิงลิสต์ สแตก คิว ทรี และกราฟ.




โครงสร้างข้อมูล (Data Structure)


- บิท (Bit) คือ ข้อมูลที่มีขนาดเล็กที่สุด เป็นข้อมูลที่เครื่องคอมพิวเตอร์เข้าใจ และใช้งานได้ ได้แก่ 0 หรือ 1
- ไบท์ (Byte) หรือ อักขระ (Character) คือ ตัวเลข หรือ ตัวอักษร หรือ สัญลักษณ์พิเศษ จำนวน 1 ตัว
- ฟิลด์ (Field) หรือ เขตข้อมูล คือ ไบท์ หรือ อักขระตั้งแต่ 1 ตัวขึ้นไปรวมกันเป็นฟิลด์ เช่น เลขประจำตัว หรือ ชื่อพนักงาน
- เรคคอร์ด (Record) หรือระเบียน คือ ฟิลด์ตั้งแต่ 1 ฟิลด์ขึ้นไป ที่มีความสัมพันธ์เกี่ยวข้องกันมารวมกัน
- ไฟล์ (File) หรือ แฟ้มข้อมูล คือ หลายเรคคอร์ดมารวมกัน เช่น ข้อมูลที่อยู่นักเรียนมารวมกัน
- ฐานข้อมูล (Database) คือ หลายไฟล์ข้อมูลมารวมกัน เช่น ไฟล์ข้อมูลนักเรียนมารวมกันในงานทะเบียน แล้วรวมกับไฟล์การเงิน
ประเภทของโครงสร้างข้อมูล
แบ่งออกเป็น 2 ประเภท คือ
1.) โครงสร้างข้อมูลทางกายภาพ (Physical Data Structure)
1.ข้อมูลเบื้องต้น (Primitive Data Types)
- จำนวนเต็ม (Integer)
- จำนวนทศนิยม (Floating point)
- ข้อมูลบูลีน (Boolean)
- จำนวนจริง (Real)
- ข้อมูลอักขระ (Character)
2.ข้อมูลโครงสร้าง (Structure Data Types)
- แถวลำดับ (Array)
- ระเบียนข้อมูล (Record)
- แฟ้มข้อมูล (File)
2.) โครงสร้างข้อมูลทางตรรกะ (Logical Data Structure)
เป็นโครงสร้างข้อมูลที่เกิดจากการจินตนาการของผู้ใช้ เพื่อใช้ในการแก้ปัญหาในโปรแกรมที่สร้างขึ้น แบ่งเป็น 2 ประเภท
1. โครงสร้างข้อมูลแบบเชิงเส้น (Linear Data Structure)
ความสัมพันธ์ของข้อมูลจะเรียงต่อเนื่องกัน
- ลิสต์ (List)
- สแตก (Stack)
- คิว (Queue)
- สตริง (String)
2. โครงสร้างข้อมูลแบบไม่เชิงเส้น (Non-Linear Data Structure)
ข้อมูลแต่ละตัวสามารถมีความสัมพันธ์กับข้อมูลอื่นได้หลายตัว
- ทรี (Tree)
- กราฟ (Graph)
3. การดำเนินการกับโครงสร้างข้อมูล(Data Structure Operation)
วิธีดำเนินการกับข้อมูลที่นิยมใช้กันมากมี 4 แบบ คือ
1. การเข้าถึงเรคคอร์ด (Traversing)
2. การค้นหา (Searching)
3. การเพิ่ม (Inserting)
4. การลบ (Deleting)
ยังมีการจัดการกับข้อมูลอีก 2 อย่าง คือ
1. การเรียงข้อมูล (Sorting)
2. การรวมข้อมูล (Merging)
4. การแทนที่ข้อมูลในหน่วยความจำ
มีอยู่ 2 วิธี คือ
>>การแทนที่ข้อมูลแบบสแตติก (Static Memory Representation)
เป็น การแทนที่ข้อมูลที่มีการจองเนื้อที่แบบคงที่แน่นอน ต้องมีการกำหนดขนาดก่อนการใช้งาน แต่มีข้อเสีย คือ ไม่สามารถปรับขนาดให้เพิ่มขึ้นหรือลดลงได้ โครงสร้างข้อมูลที่มีการแทนที่หน่วยความจำหลักแบบสแตติก คือแถวลำดับ (Array)
>>การแทนทีข้อมูลแบบไดนามิก (Dynamic Memory Representation)
เป็น การแทนที่ข้อมูลที่ไม่ต้องจองเนื้อที่ ขนาดของเนื้อที่ยืดหยุ่นได้ ตามความต้องการของผู้ใช้ โครงสร้างข้อมูลที่มีการแทนที่หน่วยความจำหลักแบบไดนามิก คือ ตัวชี้หรือพอยเตอร์ (Pointer)
5. ลักษณะของโปรแกรมแบบที่มีโครงสร้างที่ดี
5.1 โครงสร้างโปรแกรมแบบคำสั่งตามลำดับ
เป็น โครงสร้างพื้นฐานที่ประกอบด้วยคำสั่งทั่วๆไป เป็นโครงสร้างที่มีลักษณะการทำงานแบบเรียงลำดับ คือ จะทำงานตั้งแต่ต้นจนจบโดยไม่มีการข้ามขั้นตอนใดๆ
5.2 โครงสร้างโปรแกรมแบบมีการตัดสินใจ (Decision)
มี การตรวจสอบเงื่อนไข เพื่อตัดสินใจว่าจะทำการประมวลผลส่วนใด โดยผลลัพธ์ของเงื่อนไขจะมีค่าของความเป็นไปได้อยู่ 2 ลักษณะ คือ จริงและเท็จ เท่านั้น
5.3 โครงสร้างโปรแกรมแบบเป็นวงจรปิด (Loop)
มีลักษณะการทำงานซ้ำๆกัน อยู่ในส่วนใดส่วนหนึ่งของโปรแกรม
6. อัลกอริทึม (Algorithm)
อัลกอรึทึม คือ วิธีการแก้ปัญหาต่างๆ อย่างมีระบบ มีลำดับขั้นตอนตั้งแต่ต้นจนได้ผลลัพธ์ สามารถเขียนได้หลายแบบ การเลือกใช้ต้องเลือกใช้ขั้นตอนวิธีที่เหมาะสม กระชับ และรัดกุม
อัลกอริทึมที่นิยมใช้กันมาก ได้แก่
1. อัลกอริทึมแบบแตกย่อย (Divide and conquer)
2. อัลกอริทมแบบเคลื่อนที่ (Dynamic Programming)
3. อัลกอริทึมแบบทางเลือก (Greedy Algorithm)

การเลือกทำงานตามเงื่อนไข (คำสั่ง IF ELSE SWITCH)

การเลือกทำงานตามเงื่อนไข (คำสั่ง IF ELSE SWITCH)

 

รูปแบบการใช้คำสั่งควบคุมทิศทาง
คำสั่งควบคุมทิศทางการทำงานของโปรแกรม จะใช้ในกรณีที่เราพบโจทย์ปัญหาในลักษณะที่มีทางเลือก หรือมีเงื่อนไขในการเลือกทำงาน ยกตัวอย่างเช่น ถ้าสถานการณ์เป็น ก ให้ทำงานอย่างหนึ่ง ส่วนถ้าสถานการณ์เป็น ข ให้ทำงานอีกอย่างหนึ่งแทน หรือถ้าตัวเลขที่รับเข้ามาเป็นจำนวนคี่ ให้คูณจำนวนนั้นด้วย 2 แต้าถ้าตัวเลขที่รับเข้ามาเป็นจำนวนคู่ ให้เปลี่ยนเป็นหารจำนวนนั้นด้วย 2 เป็นต้น
____________________________________________________
คำสั่งควบคุม (Control Statement)
คำสั่งควบคุมเป็นคำสั่งที่สำคัญในการเขียนโปรแกรม คือ ช่วยควบคุมทิศทางการทำงานของโปรแกรมให้เป็นไปตามที่ต้องการ โดยแบ่งออกเป็น 2 ประเภท คือ คำสั่งเงื่อนไข (Condition Sratement) ได้แก่ if,if-else , switch-case และคำสั่งทำซ้ำ (Iteration Statement) ได้แก่ for,while,do-while
____________________________________________________
คำสั่ง if
คำสั่ง if จะใช้ในกรณีที่มีทางเลือกให้ทำงานอยู่เพียงทางเลือกเดียว โดยถ้าตรวจสอบเงื่อนไขแล้วเป็นจริง จึงจะทำงานตามคำสั่ง
รูปแบบคำสั่ง if
if (เงื่อนไข )
{
คำสั่งที่ 1;
}
คำสั่งที่ 2;

หากเงื่อนไขที่กำหนดเป็นจริงแล้ว คำสั่งต่าง ๆ ที่อยู่ภายในบล๊อคของเงื่อนไข if ก็จะได้รับการประมวลผล (ซึ่งมากกว่า 1 คำสั่ง) แต่ถ้าตรวจสอบแล้วพบว่า เงื่อนไขเป็นเท็จ คำสั่งที่อยู่ภายในบล๊อคของเงื่อนไข if ก็จะไม่ได้รับการประมวลผล คือ จะข้ามไปทำการประมวลผลคำสั่งที่อยู่ถัดจากบล๊อคของ if ทันที
โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข if
ตัวอย่างที่ 1 โปรแกรมแสดงการทำงานของคำสังเงื่อนไข if
1 :
#include <stdio.h>
2 :
#include <conio.h>
3 :
void main()
4 :
}
5 :
clrscr();
6 :
int age;
7 :
printf("How old are you = ");
8 :
scanf ("%d",&age);
9 :
if(age<18)
10 :
printf(" Your are young\n");
11 :
printf("You are %d years old");
12 :
getch();
13 :
{


ผลลัพธ์ของโปรแกรม

ผลการรันครั้งที่ 1
How old are you = 15
Your are young
You are 15 years old
ผลการรันครั้งที่ 2
How old are you = 18
You are 18 years old
อธิบายโปรแกรม
โปรแกรมทำการตรวจสอบเงื่อนไขว่า หากอายุน้อยกว่า 18 ปี ให้พิมพ์คำข้อความ Your are young ซึ่งสังเกตโปรแกรมบรรทัดที่ 9 เท่านั้นที่เป็นคำสั่งภายในบล๊อคของคำสั่ง if ส่วนบรรทัดที่ 10 เป็นคำสั่งนอกบล๊อคของ if ดังจะเห็นได้จากผลลัพธ์ที่แสดง
>> หากเงื่อนไขที่ตรวจสอบเป็นจริง ข้อความในบรรทัดที่ 9 จะถูกพิมพ์ หลังจากนั้นก้จะทำคำสั่งที่อยู่นอกเงื่อนไข if ต่อไป คือพิมพ์ข้อความในบรรทัดที่ 10
>> แต่หากเงื่อนไขที่ตรวจสอบเป็นเท็จ ข้อความในบรรทัดที่ 9 ที่เป็นคำสั่งในส่วนของเงื่อนไข if ก็จะไม่ถูกประมวลผล แต่จะข้ามการทำงานไปประมวลผลในบรรทัดที่ 10 เลย
ตัวอย่างที่ 2 โปรแกรมแสดงการทำงานของคำสังเงื่อนไข if
1 :
#include<stdio.h>
2 :
#include<conio.h>
3 :
void main()
4 :
{
5 :
clrscr();
6 :
int age;
7 :
printf("How old are you : ");
8 :
scanf ("%d",&age);
9 :
if(age<18) {
10 :
printf("Your age less than 18 years old\n");
11 :
printf("You are young\n");
12 :
}
13 :
printf("You are %d years old",age);
14 :
getch();
15 :
}
ผลลัพธ์ของโปรแกรม
ผลการรันครั้งที่ 1
How old are you : 15
Your age less than 18 years old
You are young
You are 15 years old
ผลการรันครั้งที่ 2
How old are you : 18
You are 18 years old
อธิบายโปรแกรม
โปรแกรมที่ 2 ต่างจากโปรแกรมที่ 1 ตรงที่มีการนำเครื่องหมาย { } มาใช้คลุมคำสั่งที่อยู่ภายในบล๊อคของเงื่อนไข if มีคำสั่งที่ต้องทำงานเพียง 1 คำสั่งเหมือนโปรแกรมที่ 1 ก็ไม่จำเป็นต้องใน { } ให้กับบล๊อคของ if (แต่ถ้าจะใส่ก็ไม่ผิด) แต่สำหรับโปรแกรมที่ 2 เมื่อตรวจสอบว่าอายุน้อยกว่า 18 แล้ว จะมี 2 คำสั่งที่ต้องทำ คือ บรรทัดที่ 9 และ 10 ดังนั้นต้องใส่ { } คลุมด้วย (เมื่อบรรทัดที่ 9 และ 10 เรียบร้อยแล้ว ก็จะไปทำงานในบรรทัดที่ 12 ต่อไป) และหากอายุมากกว่าหรือเท่ากับ 18 ก็จะข้ามการทำงานในบล๊อคของ if ไปทำบรรทัดที่ 12 ทันที
____________________________________________________
คำสั่ง if-else
คำสั่ง if-else จะใช้ในกรณีที่มีทางเลือกให้ทำงาน 2 ทางเลือกขึ้นไป โดยการทำงานของคำสั่ง if-else จะเริ่มจากการตรวจสอบเงื่อนไข หถ้าผลออกมาเป็นจริงจะทำงานตามคำสั่งที่อยู่หลัง if แต่ถ้าการตรวจสอบเงื่อนไผลออกมาเป็นเท็จ ให้ทำงานตามคำสั่งที่อยู่หลัง else แทน
รูปแบบคำสั่ง if-else
if (เงื่อนไข)
{
คำสั่งที่ 1;
}
else
{
คำสั่งที่ 2;
}
คำสั่งที่ 3;


เป็นคำสั่งที่ช่วยให้การตรวจสอบเงื่อนไขสมบูรณ์ขึ้น โดยหากตรวจสอบเงื่อนไขของคำสั่ง if แล้วเป็นเท็จ ก็จะเข้ามาทำงานภายบล๊อกของคำสั่ง else แทน กล่าวคือ หากตรวจสอบเงื่อนไขแล้วเป็นจริง ก็จะประมวลผลคำสั่งในบล๊อกของ if แต่หากเงื่อนไขและประมวลผลตามคำสั่งเงื่อนไข if-else เรียบร้อบแล้ว ก็จะทำงานตามคำสั่งที่อยู่ถัดจาก if-else นั้นต่อไป
โฟลวชาร์ตแสดงการทำงานของคำสั่งเงื่อนไข if-else
ตัวอย่างโปรแกรมที่ 1
if (a % 2 = = 0)
printf ("Even number");
ถ้าค่าของ a หารด้วย 2 ลงตัว (เหลือเศา 0) ให้แสดงข้อความ Even number
else
printf("Odd number");
แต่ถ้าเงื่อนไขของ if เป็นเท็จ (a หารด้วย 2 ไม่ลงตัว) ให้แสดงข้อความ Odd number
ตัวอย่างโปรแกรมที่ 2 โปรแกรมแสดงการรับข้อมูลเข้าทางแป้นพิมพ์ แล้วทำการตรวจสอบว่าถ้าค่าที่เรับเข้ามานั้นเท่ากับศูนย์ ให้พิพม์คำว่า "ZERO" แต่ถ้าไม่เท่ากับศูนย์ให้พิมพ์คำว่า "NON-ZERO"
#include<stdio.h>
#include<conio.h>
void main()
{
clrscr():
int i;
printf(" Enter your number = ");
scanf("%d",&i);
if (i= = 0)
{
prinft("ZERO");
}
else
printf("NON-ZERO");

}
____________________________________________________
switch-case Statement (cont.)
• expression ของ switch เป็นตัวแปรนิพจน์ที่ใช้เปรียบเทียบค่าว่าตรง
กับ constant ของ case ใด
ส่วนค าสั่ง break; จะเป็นค าสั่งให้ออกจากค าสั่ง switch ในกรณีที่ไม่
มีค าสั่ง break; โปรแกรมจะปฏิบัติเรียงตามล าดับตลอดทุกค าสั่งใน
ทุก case ที่อยู่ต่อกัน
ในกรณีที่ค่าของ expression ของ switch ไม่ตรง
กับ constant ของ case ใด โปรแกรมจะปฏิบัติตามค าสั่ง
ใน default
ในแต่ละ case อาจมีค าสั่งหลายค าสั่งไม่ต้องใช้เครื่องหมาย { } ล้อม
และที่case ต่าง ๆ และ default จะต้องมี: (colon) ต่อท้าย
ดังนี้case (constant) : และ default :
Principle of Programming 20ตัวอย่าง
#include <stdio.h>
main() {
int color = 1;
printf("Please choose a color(1: red,2: green,3: blue):\n");
scanf("%d", &color);
switch (color) {
case 1:
printf("you chose red color\n");
break;
case 2:
printf("you chose green color\n");
break;
case 3:
printf("you chose blue color\n");
break;
default:
printf("you did not choose any color\n");
}