อัลกอริทึม (algorithm)












เป็นเครื่องมือที่ช่วยในการออกแบบโปรแกรม โดยใช้ข้อความที่เป็นภาษาพูดในการอธิบายทำงาน
ของโปรแกรมที่เป็นลำ ดับขั้นตอน จะข้ามมาไม่ได้นอกจากจะ
ต้องเขียนสั่งได้ต่างหาก
เพื่อให้เห็นภาพของอัลกอริทึมจากตัวอย่างของอัลกอริทึมง่าย ๆ
ที่พบเห็นในชีวิตประจำวันได้แก่
อัลกอริทึมการสระผม จะต้องเริ่มจากการทำ ผมให้
เปียกเมื่อเปียกแล้วจึงใส่แชมพูสระผมลงบนศรีษะ
แล้วขยี้ให้มีฟองเกิดขึ้น หลังจากนั้น
ก็ล้างออกด้วยนํ้า แล้วเริ่มทำ ใหม่อีกครั้ง เป็นต้น



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




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


หลักการเขียนซูโดโค้ด
 ถ้อยคำที่ใช้เขียน ใช้ภาษาอังกฤษที่เข้าใจง่าย
ในหนึ่งบรรทัด ให้มีเพียงหนึ่งประโยคคำสั่ง
ใช้ย่อหน้าให้เป็นประโยชน์ ในการแสดงการควบคุมอย่างเป็นสัดส่วน
แต่ละประโยคคำสั่งให้เขียนจากบนลงล่าง และมีทางออกทางเดียว
กลุ่มของประโยคคำสั่งอาจรวมเป็นหมวดหมู่แล้วเรียกใช้เป็นโมดูล


 



จากผังงานระบบ โดยดึงเอาจุดที่เกี่ยวข้องกับคอมพิวเตอร์มา

วิเคราะห์ว่าจะใช้ทำงานส่วนใดเพื่อที่จะให้ได้มาซึ่งผลลัพธ์ที่ต้องการ
ผังงาน (Flowchart) คือ การแสดงขั้นตอนวิธีการที่ใช้สัญลักษณ์ที่เข้าใจได้ง่าย แต่ให้รายละเอียดได้น้อย







ประเภทของผังงาน





ผังงานทางคอมพิวเตอร์มี


2 ประเภทคือ ผังงานระบบ(System Flowchart) และผังงานโปรแกรม
(Program Flowchart)





ผังงานระบบ(System Flowchart)


ผังงานระบบจะเป็นการแสดงให้เราเห็นว่า ในระบบหนึ่ง ๆ นั้นมีขั้นตอนในการทำงานอย่างไร ซึ่ง


จะมองเห็นในลักษณะภาพกว้าง ๆ ของระบบ แต่จะไม่เจาะลึกลงไปว่าในระบบว่าในแต่ละงานนั้นมีการ


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


อย่างไร และจะได้ผลลัพธ์เป็นอย่างไรและเก็บอยู่ที่ใด


ผังงานโปรแกรม(Program Flowchart)


ผังงานโปรแกรม หรือ เรียกสั้น ๆ ว่า ผังงาน จะเป็นผังงานที่แสดงให้เห็นถึงลำดับขั้นตอนในการ


ทำงานของโปรแกรม ตั้งแต่การรับข้อมูล การประมวลผล ตลอดจนผลลัพธ์ที่ได้ จะทำให้เขียนโปรแกรมได้


สะดวกขึ้น ซึ่งผังงานชนิดนี้อาจสร้างมา


ตัวอย่างการเขียนรหัสเทียมและผังงาน
















 

ขั้นตอนการพัฒนาโปรแกรม

หลังจากที่ได้ออกแบวิธีในการแก้ปัญหาซึ่งอยู่ในรูปแบบของรหัสลำลองหรือผังงานแล้ว ขั้นตอน
ต่อไปคือการพัฒนาโปรแกรมตามผังงานดังกล่าว ซึ่งถ้านักเขียนโปรแกรมมีความรู้ความชำนาญในการ

เขียนโปรแกรมภาษาหนึ่งภาษาใดอยู่แล้ว จะสามารถทำได้โดยง่าย อย่างไรก็ตามนักเขียนโปรแกรมก็ยังต้อง
ทำการตรวจสอบว่าโปรแกรมที่ได้พัฒนาขึ้น ทำงานได้ถูกต้อง และให้ผลลัพธ์ที่ไม่ผิดพลาดสำหรับทุกกรณี
จึงจะสามารถนำโปรแกรมดังกล่าวไปใช้งานได้ นอกจากนี้นักเขียนโปรแกรมยังควรที่จะจัดทำเอกสาร ประกอบการ
พัฒนาโปรแกรม ซึ่งเป็นเครื่องมือให้ผู้ที่จะมาพัฒนาโปรแกรมต่อไปในอนาคต ทำความเข้าใจกับโปรแกรม
ที่จัดทำขึ้นได้สะดวกและรวดเร็ว รวมถึงให้ผู้ใช้โปรแกรมเข้าใจวิธีการใช้งานโปรแกรมอย่างรวดเร็ว
 
 
 
 
 
 
 
ประวัติภาษา C
 
ภาษาซีเป็นภาษาระดับสูง( High-Level-Language) และภาษาโปรแกรมที่โปรแกรมเมอร์นิยมใช้กันมาก เนื่องจากเป็นภาษาที่มีความเร็วในการทำงานสูงใกล้เคียงกับภาษาเครื่อง มีโครงสร้างที่ชัดเจน เข้าใจง่าย สามารถเขียนโปรแกรมเพื่อติดต่อกับฮาร์ดแวร์ของเครื่องคอมพิวเตอร์ได้อย่างดี ภาษาซีเกิดขึ้นในปี ค . ศ .1972 ผู้คิดค้นคือนายเดนนีส ริทชี (Dennis Ritchi) การศึกษาภาษาซีถือว่าเป็นพื้นฐานในการศึกษาภาษาใหม่ ๆ ได้
 
 
 
 
 
โครงสร้างของโปรแกรมภาษาซีแบ่งออกเป็น 3 ส่วน


ส่วนหัวของโปรแกรม


ส่วนหัวของโปรแกรมนี้เรียกว่า Preprocessing Directive ใช้ระบุเพื่อบอกให้คอมไพเลอร์กระทำการใด ๆ ก่อนการแปลผลโปรแกรมในที่นี่คำสั่ง #include <stdio.h> ใช้บอกกับคอมไพเลอร์ให้นำเฮดเดอร์ไฟล์ที่ระบุคือ stdio.h เข้าร่วมในการแปลโปรแกรมด้วย โดยการกำหนด preprocessing directives นี้จะต้องขึ้นต้นด้วยเครื่องหมาย # เสมอ

 
ส่วนของฟังก์ชั่นหลัก
ฟังก์ชั่นหลักของภาษาซี คือ ฟังก์ชั่น main( ) ซึ่งโปรแกรมภาษาซีทุกโปรแกรมจะต้องมีฟังก์ชั่นนี้อยู่ในโปรแกรมเสมอ จะเห็นได้จากชื่อฟังก์ชั่นคือ main แปลว่า “ หลัก ” ดังนั้น การเขียนโปรแกรมภาษซีจึงขาดฟังก์ชั่นนี้ไปไม่ได้ โดยขอบเขตของฟังก์ชั่นจะถูกกำหนดด้วยเครื่องหมาย { และ } กล่าวคือ การทำงานของฟังก์ชั่นจะเริ่มต้นที่เครื่องหมาย { และจะสิ้นสุดที่เครื่องหมาย } ฟังก์ชั่น main( ) สามารถเขียนในรูปแบบของ void main(void) ก็ได้มีความหมายเหมือนกัน คือ หมายความว่า ฟังก์ชั่น main() จะไม่มีอาร์กิวเมนต์ (argument) คือไม่มีการรับค่าใด ๆ เข้ามาประมวลผลภายในฟังก์ชั่น และจะไม่มีการคืนค่าใด ๆ กลับออกไปจากฟังก์ชั่นด้วย


ส่วนรายละเอียดของโปรแกรม
เป็นส่วนของการเขียนคำสั่ง เพื่อให้โปรแกรมทำงานตามที่ได้ออกแบบไว้



ข้อมูลใน C แบ่งชนิดข้อมูลออกเป็น 2 ประเภท คือ

1. Simple data type เป็นชนิดข้อมูลที่ใช้แสดงค่าของสิ่งใดสิ่งหนึ่งเพียงรายการเดียว เช่น
ค่าความสูง นํ้าหนัก จํานวนนักเรียน อุณหภูมิ ระดับคะแนน เป็นต้น

2. Structure เป็นข้อมูลชนิดใช้แสดงค่าของสิ่งใดสิ่งหนึ่งหลายรายการ เช่น ความสูงของนัก
เรียนใน ชั้น ม. 6, รายชื่อนักเรียนใน 1 กลุ่ม ต้องกําหนดเป็นข้อมูล
ชนิดโครงสร้างแบบ อาร์เรย์ (array) แบบโครงสร้าง(structure) หรือแบบยูเนียน(union) เป็นต้น
ข้อมูล Simple data type รายละเอียดชนิดของมูลและช่วงของข้อมูลประเภท Simple data type




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


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

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

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



คำสั่ง for สามารถเขียนให้อยู่ในรูปแบบได้ดังนี้

for ( เริ่มต้น ; เงื่อนไข ; เปลี่ยนแปลง )
statement;
เมื่อเริ่มต้น เป็นการกำหนดค่าตัวแปรเริ่มต้นที่ต้องการ ส่วนเงื่อนไขหากค่าลอจิกมีค่าเป็นจริง ก็จะทำตามในโครงสร้างของการวนซ้ำคือ run คำสั่ง statement แต่ถ้าเป็นเท็จก็จะออกจากโครงสร้างการวนซ้ำ ส่วนเปลี่ยนแปลง จะทำการปรับค่าของตัวแปรที่ต้องการ ยกตัวอย่างเช่น

for ( count=0 ; count < 10 ; count++)
{
printf(“count = %dn”,count);
}
ใน code ข้างต้น ตัวแปร count จะเริ่มต้นจากค่า 0 ซึ่งค่า 0 มีค่าน้อยกว่า 10 ก็จะทำคำสั่ง print ค่าของตัวแปร count จากนั้นค่า count ก็จะเพิ่มค่าเป็น 1 เงื่อนไข count < 10 ก็ยังคงเป็นจริง ก็จะทำการพิมพ์ ค่าของตัวแปร count วนซ้ำเช่นนี้ จนกระทั่ง count มีค่าเพิ่มขึ้นจนเป็น 10 เงื่อนไขก็จะเป็นเท็จ และจบโครงสร้างของการวนซ้ำ
การเปลี่ยนแปลงค่าของตัวแปร อาจจะมีการเปลี่ยนแปลงมากกว่า 1 ค่า ยกตัวอย่างเช่น

for ( count=0 ; count < 10 ; count += 2) // ตัวแปร count มีค่าเปลี่ยนแปลงเพิ่มขึ้นครั้งละ 2
{
(“count = %dn”,count);
;}
for ( count=10 ; count > 5 ; count -= 2) // ตัวแปร count มีค่าเปลี่ยนแปลงลดลงครั้งละ 2
{
printf(“count = %dn”,count); }
นอกจากนี้เรายังสามารถใช้ตัวแปร เป็นการกำหนด ค่าเริ่มต้น เงื่อนไข และ เปลี่ยนแปลงได้ ยกตัวอย่างเช่น

start = 0; end = 20; step=3;
for ( count=start ; count < end ; count += step)
{
printf(“count = %dn”,count); }
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

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

โครงสร้างข้อมูล (Data Structure) คืออะไร
คือ รูปแบบของการจัดระเบียบของข้อมูล ซึ่งมีอยู่หลายรูปแบบ เช่น เขตข้อมูล(Field), แถวลำดับ(Array), ระเบียน(Record), ต้นไม้(Tree), ลิงค์ลิสต์(Link List) เป็นต้น (ทักษิณา สวนานนท์, 2544, หน้า 161)
คือ รูปแบบวิธีการจัดระเบียบของข้อมูลที่ได้จากการดำเนินการทางคณิตศาสตร์(Operations) เพื่อให้สามารถจัดการกับข้อมูลที่ใช้กับระบบคอมพิวเตอร์ได้ [4]p.12
คือ การรวบรวมข้อมูลเป็นกลุ่มอย่างมีรูปแบบ เพื่อให้การนำข้อมูลกลับมาใช้ หรือประมวลผลอย่างมีประสิทธิภาพ ด้วยขั้นตอนวิธีที่หลากหลาย แล้วนำเสนอได้อย่างถูกต้องรวดเร็วตามลักษณะงานที่ต้องการ
คือ การนำกลุ่มของข้อมูลขนาดใหญ่มาจัดรูปแบบ เพื่อให้เครื่องประมวลผลและแสดงผลอย่างมีขั้นตอน โดยเริ่มจากการรวบรวม เพิ่ม ลบ หรือเข้าถึงข้อมูลแต่ละรายการ

โครงสร้างข้อมูล (Data Structure)
- บิท (Bit) คือ ข้อมูลที่มีขนาดเล็กที่สุด เป็นข้อมูลที่เครื่องคอมพิวเตอร์เข้าใจ และใช้งานได้ ได้แก่ 0 หรือ 1
- ไบท์ (Byte) หรือ อักขระ (Character) คือ ตัวเลข หรือ ตัวอักษร หรือ สัญลักษณ์พิเศษ จำนวน 1 ตัว
- ฟิลด์ (Field) หรือ เขตข้อมูล คือ ไบท์ หรือ อักขระตั้งแต่ 1 ตัวขึ้นไปรวมกันเป็นฟิลด์ เช่น เลขประจำตัว หรือ ชื่อพนักงาน
- เรคคอร์ด (Record) หรือระเบียน คือ ฟิลด์ตั้งแต่ 1 ฟิลด์ขึ้นไป ที่มีความสัมพันธ์เกี่ยวข้องกันมารวมกัน
- ไฟล์ (File) หรือ แฟ้มข้อมูล คือ หลายเรคคอร์ดมารวมกัน เช่น ข้อมูลที่อยู่นักเรียนมารวมกัน
- ฐานข้อมูล (Database) คือ หลายไฟล์ข้อมูลมารวมกัน เช่น ไฟล์ข้อมูลนักเรียนมารวมกันในงานทะเบียน แล้วรวมกับไฟล์การเงิน