วันอังคารที่ 28 กรกฎาคม พ.ศ. 2552

DTS04-22/07/52

สรุป
Linked List
การลบโหนด (Delete node)
กำหนดค่า pList คือ พอยน์เตอร์เริ่มต้น
pPre คือ พอยน์เตอร์โหนดpLoc คือ โหนดพอยน์เตอร์
dataout คือ ข้อมูลที่จัดเก็บในโหนดหลักการทำงาน คือ ทำการลบข้อมูลพร้อมโหนดออกจากลิงค์ลิสต์และคืนค่าหน่วยความจำ
ก่อนการกำหนดค่ากำหนด pList คือ พอยน์เตอร์ที่ชี้ไปยังโหนดต้นลิสต์
pPre คือ พอยน์เตอร์ที่ใช้ไปยังลิงค์ของโหนดก่อนหน้าโหนดที่ต้องการ
pLoc คือ พอยน์เตอร์ที่ชี้ไปยังโหนดที่ต้องการลบ
dataout คือ ตำแหน่งโหนดที่จัดเก็บข้อมูลที่ต้องการลบหลังการทำงาน ข้อมูลจะถูกลบไปและทำการคืนพื้นที่ ที่จองให้กับหน่วยความจำ
การค้นหาลิสต์ (Search list)
กำหนดค่า pList พอยน์เตอร์เริ่มต้น
pPre พอยน์เตอร์โหนด
Loc พอยน์เตอร์โหนด
target ชนิดของคีย์หลักการทำงาน ทำการรันหาลิสต์และเทียบค่ากับตำแหน่งชนิดของคีย์
เพื่อตรวจสอบการตรงกันของตำแหน่งก่อนการทำงาน
กำหนด pList เป็นพอยน์เตอร์ชี้ค่าที่ตำแหน่งเริ่มต้น
กำหนด pPre เป็นพอยน์เตอร์ตัวแปรเก็บตำแหน่งโหนดก่อนหน้า
กำหนด pLoc เป็นพอยน์เตอร์ตัวแปรเก็บตำแหน่งตัวเลือก
กำหนด target เป็นคีย์ที่กำหนดการค้นหา
หลังการทำงาน กำหนด pLoc ชี้ไปยังโหนดและทำการเปรียบค่าคีย์ตามเงื่อนไขจนกว่าจะครบทุกโหนดหรือค้นเจอลิสต์ที่ต้องการการคืนค่า คืนค่าจริงหากค้นเจอลิสต์คืนค่าเท็จหากค้นไม่พบลิสต์
การตรวจสอบลิสต์ว่าง
หลักการทำงาน ทำการตรวจสอบลิสต์ว่างก่อนการทำงาน กำหนด pList ชี้ไปยังโหนดต้นลิสต์อ่านค่า countการคืนค่า คืนค่าจริงถ้า countว่างคืนค่าเท็จถ้า countไม่ว่าง
การตรวจลิสต์เต็ม
กำหนด pList เป็นพอยน์เตอร์เริ่มต้นหลักการทำงาน ทำการตรวจสอบลิสต์ว่าเต็มหรือไม่ก่อนการทำงาน ทำกำหนด pList ชี้ไปยังโหนดต้นลิสต์การคืนค่า คืนค่าจริงหากไม่สามารถสร้างลิสต์ใหม่ได้คืนค่าเท็จหากสามารถสร้างลิสต์ใหม่ได้การยกเลิกลิสต์การกำหนด pList พอยน์เตอร์เริ่มต้นหลักการทำงาน ทำการลบข้อมูลทั้งหมดในลิสต์และโหนดต่างๆออกให้หมดก่อนการทำงาน pList ชี้ไปยังโหนดต้นลิสต์ที่จัดเก็บข้อมูลของลิสต์หลังการทำงาน ข้อมูลทุกตัวพร้อมกับโหนดต้นลิสต์ถูกลบการคืนค่า พอยน์เตอร์มีค่าเป็น nul
Stack
สแต็ก คือ ส่วนที่ใช้สำหรับอ่านและเขียนในหน่วยความจำ (RAM) และใช้สำหรับ CPU เท่านั้นในการนำข้อมูลเข้าไปเก็บ ซึ่งเป็นที่เก็บข้อมูลชั่วคร่าว เพราะว่าพื้นที่ที่ใช้สำหรับเก็บข้อมูลของ CPU (รีจีสเตอร์) มีใช้งานอย่างจำกัดในส่วนที่เป็นสแต็กเราจะมีรีจีสเตอร์ที่ใช้อยู่ 2 ตัวคือ SS(Stack Segment) และ SP(Stack Pointer) โดยที่ SS จะเป็นตัวกำหนดที่อยู่ของสแต็ก และมี SP เป็นตัวชี้ที่อยู่ของข้อมูลแต่ละตัว โดยจะมีคำสั่งที่ใช้สำหรับเขียนและอ่าน อยู่ 4 คำสั่ง คือคำสั่งที่ใช้สำหรับเขียน PUSH คำสั่งที่ใช้สำหรับอ่าน POP คำสั่งที่ใช้สำหรับเก็บสถานะของแฟล็ก PUSHF คำสั่งที่ใช้สำหรับอ่านสถานะของแฟล้ก POPF
การเก็บข้อมูลลงในสแต็ก PUSH
ในการเก็บข้อมูลลงในสแต็กนั้น จะทำการลดค่าของ SP ลงครั้ง 2 ไบต์ในการเขียนแต่ละครั้ง เพราะว่าในการเขียนแต่ละครั้งจะทำการเขียนครั้งละ 16 บิต ซึ่งต้องใช้หน่วยความจำ 2 ไบต์ และในเก็บข้อมูลลงสู่สแต็ก นั้นใน 80x86 จะทำการเก็บไบต์ต่ำก่อน สมมุตว่า AH = 24H และ AL=12H เมื่อเราใช้คำสั่ง PUSH AX และนำไปเก็บในตำแหน่งหน่วยความจำที่แอดเดรส SS:1234 เก็บข้อมูลดังนี้ 12H และตำแหน่งที่ SS:1235 จะเก็บข้อมูลดังนี้ 24H
การอ่านข้อมูลออกจากสแต็ก POP

ในการในการอ่านข้อมูลออกจากสแต็กนั้น จะทำการเพิ่มค่าของ SP ขึ้นครั้ง 2 ไบต์ในการอ่านแต่ละครั้ง เพราะว่าในการอ่านแต่ละครั้งจะทำการอ่านครั้งละ 16 บิต ซึ่งต้องใช้หน่วยความจำ 2 ไบต์ และในอ่านข้อมูลออกจากสแต็ก นั้นใน 80x86 จะทำการอ่านไบต์ต่ำก่อน สมมุตว่าที่แอดเดรสที่ SS:1234Hมีข้อมูลดังนี้ 12H และที่ตำแหน่ง SS:1235Hมีข้อมูล 24Hตามลำดับ เมื่อเราใช้คำสั่ง POP AX ข้อมูลในรีจีสเตอร์ AX จะได้ดังนี้ AH=24H และAL=12H

ตัวอย่างสแตกที่เราเห็นในชีวิตประจำวันทั่วไป

1.เทปกาวสองหน้า = มันพันข้างในก่อนเวลาใช้ก็ต้องดึงข้างนอกออกใช้ก่อน

2.กล่องคุ๊กกี้ชิ้นใหญ่ๆที่มีคุ๊กกี้ = กล่องคุ๊กกี้ที่เรียงกันสวยๆจะเรียงอันล่างก่อนเวลากินก็ต้องกินจากข้างบน

ก่อน

3.ตู้ ATM = เงินที่เก็บอยู่ในตู้วางล่างสุดก่อนแล้วเวลาจะออกมาก็ใบบนออกมาก่อน

การบ้าน

แบบ Stdio.h

#include
void main()
{
int N1, N2, Sum;

printf("please input an integer number : ");
scanf("%d",&N1);
printf("please input another integer number : ");
scanf("%d",&N2);

Sum = N1 + N2;
printf("%d + %d = %d",N1,N2,Sum);
}



...................................................................................................................................
แบบ iostream.h

#include
void main()
{
int N1, N2, Sum;

cout<<"please input an integer number : "; cin>>N1;
cout<<"please input another integer number : "; cin>>N2;

Sum = N1 + N2;
cout

................................................................................................

0utput

แบบ Stdio.h

please input an integer number :......


please input another integer number :.......


เป็นผลรวม

แบบ iostream.h

please input an integer number :......

please input another integer number :.......

เป็นผลรวม

วันอังคารที่ 7 กรกฎาคม พ.ศ. 2552

DTS03-02/07/52

สรุป
Pointer
เป็นตัวแปรชนิดหนึ่งที่ทำหน้าที่เก็บตำแหน่งที่อยู่(Address) ของตัวแปรที่อยู่ในหน่วยความจำ
การประกาศชนิดของตัวแปรพอยน์เตอร์
รูปแบบ
type *variable-name
* หมายถึง เป็นเครื่องหมายที่แสดงว่า ตัวแปรที่ตามหลังเครื่องหมายนี้เป็นตัวแปรพอยน์เตอร์
type หมายถึง ชนิดของตัวแปร
variable-name
เป็นชื่อของตัวแปรที่ต้องการประกาศว่าเป็นชนิดพอยน์เตอร์
เครื่องหมายที่ใช้ทำงานกับตัวแปรพอยน์เตอร์
1. & หมายถึง เป็นเครื่องหมายที่ใช้เมื่อต้องการให้เอาค่าตำแหน่งที่อยู่ของตัวแปรที่เก็บไว้ในหน่วยความจำออกมาใช้
ตัวอย่าง
char *prt;
หมายความว่า ประกาศค่าตัวแปร prt เป็นตัวแปรพอยน์เตอร์ ที่เก็บใช้ตำแหน่งเริ่มต้นที่จะเก็บ character
int *a;
หมายความว่า ประกาศค่าตัวแปร a เป็นตัวแปรพอยน์เตอร์ที่ใช้เก็บตำแหน่งเริ่มตนที่จะใช้เก็บ integer
2. เครื่องหมาย * มีการใช้สองลักษณะ คือ
- ใช้ในการประกาศ parameter ว่าเป็นตัวแปรแบบพอยน์เตอร์ เช่น
void swap(int *p,int *q)
{
.........................
}
- ใช้เป็น dereferencing operator จะใช้เมื่อต้องการนำค่าที่อยู่ในตำแหน่งที่ตัวแปรพอยน์เตอร์นั้นชี้อยู่ออกมาแสดง
การใช้ตัวแปรพอยน์เตอร์กับอะเรย์
ตัวแปรพอยน์เตอร์จะใช้อ้างถึค่าที่เก็บไว้ในตัวแปรชุดได้ ดังนี้
ตัวอย่าง char str[80], *pl;
pl = str;
บรรทัดที่ 1 เป็นการประกาศว่า หะพ เป็นตัวแปรชุดชนิด character 1 มิติ มีขนาดสมาชิก 80 สมาชิกและpl เป็นตัวแปรพอยน์เตอร์
บรรทัดที่ 2 เป็นการอ้างถึงข้อมูลที่เก็บไว้ในตัวแปรชุด str โดยการนำตำแหน่งที่อยู่ของตัวแปร str[0] ซึ่งเป็นสมาชิกตัวแรกไปเก็บไว้ใน ตัวแปรพอยน์เตอร์ pl เหมือนกันใช้คำส่ง
pl = &str[0]
การอ้างถึงตัวแปรชุด สามารถอ้างถึงโดยการเพิ่มหรือลดตัวแปรพอยน์เตอร์ได้ เช่น ต้องการอ้างถึงตัวแปร
str[4] ทำได้โดย *(pl+4)
โครงสร้างข้อมูลแบบเซ็ต
เป็นโครงสร้างข้อมูลที่ข้อมูลแตละตัวไม่มีความสัมพันธ์กัน ในภาษาซีจะไม่มีประเภทข้อมูลแบบเซ็ตนี้เหมือนกับภาษาปาสคาล
โครงสร้างข้อมูลแบบสตตริง
สตริง หรือ สตริงของอักขระ เป็นข้อมูลที่ประกอบบไปด้วย ตัวอักษร ตัวเลขหรือเครื่องหมายเรียงติดต่อกันไป รวมทั้งช่องว่าง
การประยุกต์ใช้คอมพิวเตอร์ที่เกี่ยวกับข้อมูลที่เป็นสตริงมีการนำไปใช้สร้างโปรแกรมประเภทบรรณาธิการข้อความ หรือโปรแกรมประเภทประมวลคำ ซึ่งมีการทำงานที่อำนวยความสะดวกหลายอย่าง เช่น การตรวจสอบข้อความ การจัดแนวข้อความ ในแต่ละย่อหน้า และการค้นหาคำ เป็นต้น
เช่น "This is String !" จะเป็นข้อมูลแบบสตริงยาว 16 อักขระ
สตริงกับอะแรย์
สตริง คือ อะเรย์ของอักขระ เช่น char a[6]
อาจจะเป็นอะเรย์ขนาด 6 ช่องอักขระ หรือ เป็นสตริงขนาด 5 อักขระก้อได้ โดยจุดสิ้นสุดของ string จะจบด้วย \0 หรือ null character เช่น
char a[]={'H','E','L','L','o','\0'};
char a[]="hello";

วันเสาร์ที่ 27 มิถุนายน พ.ศ. 2552

DTS02-27/06/52

สรุป


Array and Record

อะเรย์ (Array)

ตัวแปรอาเรย์สามารถเก็บข้อมูลหลายๆข้อมูลไว้ได้โดยไม่ต้องใช้ตัวแปรหลายตัว เช่นถ้าต้องการเก็บอายุของเพื่อนทั้ง 20 คน ถ้าเราใช้ตัวแปรแบบ int เราจะต้องประกาศตัวแปร age1, age2, age3,.....,age20 ให้เป็นแบบ int ซึ่งเป็นการประกาศตัวแปรถึง 20 ตัวด้วยกัน แต่ถ้าใช้อาเรย์เราประกาศตัวแปร age ให้เป็นอาเรย์แบบ int เพียงตัวเดียวก็สามารถเก็บค่าทั้ง 20 ค่าได้แล้ว

อาร์เรย์ เป็นแบบหนึ่งของโครงสร้างที่เรียกว่า Linear List ซึ่งมีจำนวนรายการ ( Element) จำกัด และข้อมูลที่เก็บอยู่ในอาร์เรย์แต่ละช่องจะต้องเป็นข้อมูลชนิดเดียวกัน อยู่ภายใต้ตัวแปรชื่อเดียวกัน โดยขนาดของแต่ละช่องต้องเท่ากันหมด การอ้างถึงข้อมูลในแต่ละช่องของของอาร์เรย์ ต้องอาศัยตัวห้อย Subscript เช่น กำหนดให้ Array A มีขนาด 100 รายการ A[5] จะหมายถึง ค่าของอาร์เรย์ตำแหน่งที่ 5 ในอาร์เรย์นั้น ซึ่ง Subscript ก็คือ เลข 5 จำนวน Subscript ที่ต้องการใช้เวลาเรียกใช้ค่าใน Array เรียกว่า มิติ ไดเมนชั่น ( Dimention) ของ Array นั้น

ความหมายของอาร์เรย์

โครงสร้างข้อมูลแบบอาร์เรย์ (Array) หรือตัวแปรชุด มี 2 ความหมาย คือ

1. ความหมายโดยทั่วไปอาร์เรย์ หมายถึงโครงสร้างที่นำข้อมูลชนิดเดียว กันมาจัดเรียงกันเป็น n มิติเป็นโครงสร้าง ตารางรูปสี่เหลี่ยมผืนผ้า

2. ความหมายทางคอมพิวเตอร์อาร์เรย์ หมายถึง กลุ่มของช่วงความจำ ในหน่วยความที่ใช้เก็บข้อมูลชนิดเดียวกันและ ทุกช่องต้องมีขนาดเท่ากัน ภายใต้ตัวแปรเดียวกัน การสร้าง Array ขึ้นมาใช้งานนั้น ต้องคำนึงถึง 1. ชื่อของ Array 2. ขนาดของ Array แต่ละช่อง และมิติของ Array 3. ค่าสูงสุด ( Upper Bound) และค่าต่ำสุด (Lower Bound) ในแต่ละมิติ

ARRAY 1 มิติ

คือ Array ที่มีลักษณะเป็นตารางแถวเดียว Array 1 มิติ จะมีลักษณะโดยทั่วไปดังนี้
ถ้า Lower Bound = 1 สามารถเขียน Array เป็น A [u] ก็ได้ เช่น Ex1 ถ้าต้องการสร้าง Array N เพื่อเก็บตัวเลขประเภท Integer ให้มีขนาด 5 ช่อง N [1 : 5 ] สามารถเขียนเป็น N [5]
เนื่องจาก Integer 1 ตัวจะใช้เนื้อที่ในหน่วยความจำ 2 Bytes ดังนั้น Array N จะใช้เนื้อที่ในหน่วยความจำ ทั้งหมด 10 Bytes
หมายเหตุ ในภาษาซี ช่องแรกของอาร์เรย์จะเริ่มจาก 0

อาร์เรย์ 2 มิติ

อ าร์เรย์ 2 มิติ คือ อาร์เรย์ที่มีลักษณะที่เป็นตารางที่มี 2 ด้าน คือ ทางด้านแนวนอน ( ROW) และแนวตั้ง ( COLUMN) มีจำนวนช่องเท่ากับ จำนวนช่องทางด้านแนวนอน ( ROW) คูณกับจำนวนช่องทางด้านแนวตั้ง ( COLUMN) การอ้างถึง Array 2 มิติ ต้องใช้ Subscript 2 ตัว คือ ROW และ COLUMN การกำหนดอาร์เรย์ 2 มิติทำได้โดย
ชื่อของอาร์เรย์ [ l1 : u1 , l2 : u2 ]
l1 คือ lower bound ของมิติที่ 1 u1 คือ upper bound ของมิติของที่ 1 l2 คือ lower bound ของมิติที่ 1 u2 คือ upper bound ของมิติของที่ 1
เช่น ARO [ 5 : 20 , 30 : 50 ] คือ การกำหนดให้ อาร์เรย์ 2 มิติ ชื่อ ARO มีจำนวน 16 ช่องทางด้านแนวนอน ( ROW) เริ่มที่ 5 ถึง 20 และ 21 ช่องทางด้านแนวตั้ง ( COLUMN) เริ่มที่ 30 ถึง 50 เช่นเดียวกับอาร์เรย์ 1 มิติ คือ ถ้า l1 หรือ l2 เป็น 1 ก็สามารถกำหนดโดยไม่ใส่ l1 หรือ l2 ก็ได้ เช่น STR [ 20 , 50 ] กำหนดให้ อาร์เรย์ 2 มิติ ชื่อ STR มีจำนวนช่อง 20 ช่องทางด้านแนวนอน ( ROW) โดยเริ่มที่ 1 ถึง 20 และ 50 ช่องทางด้านแนวตั้ง ( Column) เริ่มที่ 1 ถึง 50 หมายเหตุ ในภาษาซี การกำหนดอาร์เรย์ 2 มิติ ต้องประกาศดังนี้ ชื่อของอาร์เรย์ [ u1 ] [ u2 ] เช่น int num[5][10];
การคำนวณหาจำนวนช่องของ ARRAY 2 มิติ
จำนวนช่องทางด้านแนวนอน ( ROW) หาได้จาก
m = u1 - l1 + 1
จำนวนช่องทางด้านแนวตั้ง ( COLUMN) หาได้จาก
n = u2 - l2 + 1
ดังนั้น จำนวนช่องทั้งหมดของ A [ l1 : u1, l2 : u2 ] = m x n

Structure
ประเภทของตัวแปร
• ตัวแปรเดี่ยว คือตัวแปรที่ขณะใดขณะหนึ่ง จะเก็บ
ข้อมูลได้ค่าเดียว เช่น
– char ch1;
– int x;
• ตัวแปรชุด คือตัวแปรที่เก็บข้อมูลประเภทเดียวกัน ได้
หลายค่า เช่น
– int num[ ] = {5, 7, 1, 18, 20};
– float f[10];
• ตัวแปรชนิด Structure คือตัวแปรที่สามารถเก็บ
ข้อมูลหลายประเภท ภายใต้ชื่อเดียวกัน

การประกาศตัวแปรแบบ Structure
แบบที่ 1
struct student
{
char name[30] ;
float score ;
float score ;
} ;
struct student st1,st2 ;
การประกาศทั้งสองแบบ จะได้ตัวแปร st1 และ st2
เป็นตัวแปรโครงสร้างชนิด student
แบบที่ 2
struct student
{
char name[30] ;
float score ;
float score ;
} st1,st2;

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

การประกาศชนิดข้อมูลแบบ Structure
รูปแบบ
struct struct_name
{
type1 variable1;
type2 variable2;
...
typeN variableN;
} ;
จากตัวอย่าง เป็นการสร้างโครงสร้างข้อมูลชนิดใหม่ ชื่อว่า
student ซึ่งประกอบด้วยข้อมูล 3 ตัว คือ name (string) ,
score (float) และ grade (float)
ตัวอย่าง
struct student
{
char name[30];
float score;
float grade;
} ;

การกำหนดค่าเริ่มต้นให้กับตัวแปรแบบ Structure
• หลักการคล้ายกับการกำหนดค่าเริ่มต้นให้กับ
อาร์เรย์
• จะทำการกำหนดค่าเริ่มต้นไว้ในเครื่องหมาย { }
และแยกแต่ละค่าออกจากกันด้วยเครื่องหมาย ,

struct student
{
char name[30] ;
float score ;
float grade ;
} ;
struct student st1 = { “somchai”, 78.5, 3.5 } ;
name somchai
score 78.5
grade 3.5
st1
การบ้าน

struct employee
{
char name[30];
char surname[30];
int age;char sex[5];
char no[5];
char birthday[20];
char address[20];
char tellephon_number[20];
}employee1;

วันศุกร์ที่ 26 มิถุนายน พ.ศ. 2552

ประวัติ


ประวัติ

ชื่อ
นางสาว นิภาพร ใจโปร่ง


Name Nipaporn Jaiprong

ชื่อเล่น อ้อม

รหัส 50152792095

คณะวิทยาการจัดการ

แขนง บริหารธุรกิจ (คอมพิวเตอร์ธุรกิจ)

เกิด วันเสาร์ ที่ 3 เดือน กันยายน พ.ศ. 2531

ที่อยู่ในทะเบียนบ้าน

30/1 ม.7 ต.เทพราช อ.สิชล จ.นครศรีธรรมราช 80340

ที่อยุ่ปัจจุบัน

422/476 บ้านพักข้าราชการโรงพยาบาลพระมงกุฎ

ถนนราชวิถี แขวงทุ่งพญาไท เขตราชเทวี กรุงเทพมหานคร

10400

งานอดิเรก ดูหนัง ฟังเพลง



คลิปแนะนำตัวเอง