230 likes | 433 Views
2.5 ตัวแปรชุดมิติเดียวและตัวแปรชุดสองมิติ. ตัวแปรที่ใช้ในผังโปรแกรม ตัวแปรเดี่ยว การตั้งชื่อตัวแปรเพื่อใช้แทนข้อมูล เพียง 1 จำนวน เท่านั้น เช่น A , B , X , TOT, NAME เป็นต้น ตัวแปรชุด (ARRAY) การตั้งชื่อตัวแปรในหน่วยความจำที่ใช้ชื่อเพียงตัวเดียว
E N D
2.5 ตัวแปรชุดมิติเดียวและตัวแปรชุดสองมิติ • ตัวแปรที่ใช้ในผังโปรแกรม • ตัวแปรเดี่ยว • การตั้งชื่อตัวแปรเพื่อใช้แทนข้อมูล เพียง 1 จำนวน • เท่านั้น เช่น A , B , X , TOT, NAME เป็นต้น • ตัวแปรชุด (ARRAY) • การตั้งชื่อตัวแปรในหน่วยความจำที่ใช้ชื่อเพียงตัวเดียว • แต่มีตัวเลขแสดงตำแหน่งกำกับไว้เพื่อเป็นการบอกว่า • เป็นตัวแปรตัวที่เท่าไร เช่น X(1) , X(2), X(3) เป็นต้น
ตัวแปรชุดมิติเดียว (ONE-DIMENSION ARRAY)เป็นตัวแปรชุดที่มีตัวเลขแสดงตำแหน่งเพียงตัวเดียว 1 2 3 4 5 X(3) X X X(3) X(5) X(5) โครงสร้างภายในเครื่องคอมพิวเตอร์จะถือว่าทั้งหมดนี้ เป็นเนื้อที่ที่ถูกจองต่อเนื่องกันไปเป็นลำดับ ซึ่งสามารถระบุตำแหน่งข้อมูลที่ต้องการได้ โดยระบุตัวพ่วง (Subscript)
ตัวแปรชุดสองมิติ (TWO-DIMENSION ARRAY) เป็นตัวแปรชุดที่มีการจัดข้อมูลเป็นแถวเป็นคอลัมน์ เช่นข้อมูลแบบ Matrix จะมีตัวเลขที่แสดงตำแหน่ง 2 ตัว โดยตัวแรกจะเป็นตัวเลขที่แสดงตำแหน่งแถว ตัวที่สองจะเป็นตัวเลขที่แสดงตำแหน่งคอลัมน์ 1 2 3 X 1 2 3 4 5 6 X(2,3) X(5,3)
การเขียนผังโปรแกรมโดยใช้ตัวแปรชุดการเขียนผังโปรแกรมโดยใช้ตัวแปรชุด • ตัวอย่างการเขียนผังโปรแกรมเพื่อแก้ปัญหาโดยใช้ตัวแปรชุด ที่พบเห็นบ่อยคือ การคำนวณเมตริกซ์ เช่น • [C]mxn = [A]mxn + [B]mxn • หรือ [C]mxn = [A]mxn * [B]mxn • จำเป็นต้องใช้ตัวแปรชุดในการคำนวณดังกล่าว • ผังโปรแกรมแสดงการอ่านข้อมูลที่เป็นเมตริกซ์ เช่น • a[3][2] a11 a12 a21 a22 a31 a32
Flowchart READ M,N แปรค่า I ตั้งแต่ 1 ถึง M I = 0 I = I + 1 J = 0 อ่านข้อมูล A(I,J) โดย เปลี่ยนค่า J ตั้งแต่ 1 จนถึง N ส่วนค่า I เป็นค่าเต็มตลอด J = J + 1 Read A(I,J) no J = N? yes no I = M? yes อ่านข้อมูล A[I,J] เรียบร้อย
การเขียนผังโปรแกรมเพื่อความสะดวกสามารถที่จะเขียนรูปที่ง่ายแสดงการอ่านหรือการพิมพ์เมตริกซ์หรือตัวแปรชุดได้ดังนี้การเขียนผังโปรแกรมเพื่อความสะดวกสามารถที่จะเขียนรูปที่ง่ายแสดงการอ่านหรือการพิมพ์เมตริกซ์หรือตัวแปรชุดได้ดังนี้ ตัวแปรชุดมิติเดียว Read X(I) I = 1…10 จะหมายถึง การอ่านข้อมูลจากอุปกรณ์อ่านข้อมูล 10 จำนวนไปไว้ที่ X(1) ถึง X(10) ตามลำดับ Print X(I) I = 1…10 หมายถึง การนำเอาค่าตัวแปรชุดตั้งแต่ X(1) ถึง X(10) แสดงทางอุปกรณ์แสดงผล
ตัวแปรชุด 2 มิติ Read A(I,J) I = 1,2…M J = 1,2….N จะหมายถึง การอ่านข้อมูลจากอุปกรณ์อ่านข้อมูล M จำนวนไปไว้ที่ X(1) ถึง X(M) ตามลำดับ Print A(I,J) I = 1,2…M J = 1,2….N หมายถึง การนำเอาค่าตัวแปรชุดตั้งแต่ X(1) ถึง X(M) แสดงทางอุปกรณ์แสดงผล
ตัวอย่างที่ 12 • อ่านข้อมูลเข้ามา N จำนวน แล้วหาค่าที่มากที่สุดและน้อยที่สุด • อธิบาย 3 3 5 1 3 5 1 3 5 1 MAX MIN MIN MAX 3 5 1 3 5 1 MIN MAX MAX MIN 2 1 3 4
ตัวแปรและความหมายของตัวแปรที่ใช้มีดังนี้ตัวแปรและความหมายของตัวแปรที่ใช้มีดังนี้ • N = เก็บค่าของจำนวนข้อมูลที่จะอ่านเข้ามา • X(I) = เก็บค่าของข้อมูลตัวที่ I • MAX = เก็บค่าที่มากที่สุดที่พบ(Maximum) • MIN = เก็บค่าที่น้อยที่สุดที่พบ (Minimum)
START Read N Read X(I) i = 1…N i = 1 MIN=X(i) MAX=X(i) 1 2 Flowchart (ต่อ)
2 1 No Yes i < N Print MAX MIN i = i + 1 No Yes X(i)>MAX? STOP MAX=X(i) Yes No X(i)<MIN? MIN=X(i)
ตัวอย่างที่ 13 โปรแกรมอ่านข้อมูลไม่ทราบจำนวนมาเก็บไว้แล้วทำการเรียงลำดับ(Sort) ข้อมูลเหล่านี้ เรียงจากน้อยไปมาก โดยตรวจสอบข้อมูลตัวสุดท้ายด้วยเลข 999 อธิบาย การสลับเราจะทำการสลับค่าในตัวแปรชุด เดิม มีค่าในตัวแปรชุด 5 1 ผลที่ต้องการคือ 1 5 นำ a[L+1]--> a[L] นำ temp --> a[L+1] a[L] a[L+1] นำ a[L] มา ไว้ที่ temp 5 1 1 1 1 5 a[L] = a[L+1] a[L+1]=temp Temp = a[L] Temp 5
ตัวแปรและความหมายของตัวแปรที่ใช้มีดังนี้ตัวแปรและความหมายของตัวแปรที่ใช้มีดังนี้ a(i) = เก็บข้อมูลตัวที่ i i = เป็นตัวพ่วงและเป็นจำนวนนับจำนวนข้อมูล CHECK = เป็นตัวชี้ว่าข้อมูลเรียงลำดับหรือยัง ถ้า CHECK = 1 แสดงว่ามีการสลับที่อย่างน้อย 1 ครั้ง(ข้อมูลยังไม่เรียง) ถ้า CHECK = 0 แสดงว่าไม่เกิดการสลับที่ (ข้อมูลเรียงลำดับแล้ว) Temp = เก็บค่าข้อมูลชั่วคราวในการสลับที่ข้อมูล N = จำนวนข้อมูลทั้งหมด L = เป็นตัวพ่วงและเป็นตัวนับจำนวนข้อมูล
Flowchart START i = 0 i = i + 1 Read a[i] a[i]=999 N= i - 1 CHECK = 1 1 N Y 2 Check=1 L = 1 TO N Print a[L] STOP (ต่อ)
2 L=1 CHECK = 0 N Y L < N N Y a[L]>a[L+1] Temp=a[L] a[L]=a[L+1] a[L+1]=Temp CHECK = 1 1 L = L + 1
c11 c12 c13 c21 c22 c23 a11 a12 a13 a21 a22 a23 b11 b12 b13 b21 b22 b23 + = 2*3 2*3 2*3 • ตัวอย่างที่ 14 • จงเขียนผังโปรแกรมเพื่อบวกเมตริกซ์ 2 เมตริกซ์ คือ • [A]mxn = [B]mxn + [C]mxn • อธิบาย เช่น เมตริกซ์ขนาด 2*3 มีวิธีการบวกดังนี้ • เมื่อ aij = bij + cij จะได้
START Read m,n Read Aij i = 1,…,m j = 1,…,n Read Bij i = 1…m j = 1…n j = 0 1 Flowchart (ต่อ)
1 j = j + 1 i = 0 2 Print Cij i = 1…m j = 1…n i = i + 1 i = i + 1 Cij = Aij + Bij STOP i = m? N Y j = n? N Y 2 Flowchart
ตัวอย่างที่ 15 จงเขียนผังงานโปรแกรมเพื่อหาค่าความแปรปรวนของคะแนนสอบของนักศึกษาไม่ทราบจำนวน โดย SD2 = (Xi - X)2 N-1 • เมื่อ Xi คือ คะแนนของนักศึกษาแต่ละคน • X คือ คะแนนเฉลี่ย • N คือ จำนวนนักศึกษาทั้งหมดที่นับได้ • การวิเคราะห์ • Input : คะแนนสอบของนักศึกษาแต่ละคน • Output : ค่าความแปรปรวน • การคำนวณ: - หาคะแนนเฉลี่ย • - ค่าความแปรปรวน
ตัวแปร • i = ตัวแปรที่ใช้นับจำนวนนักศึกษา • score = คะแนนสอบของนักศึกษา • SUM = ผลรวมของคะแนนนักศึกษา • X = คะแนนเฉลี่ย • TOT = ผลรวมก่อนหาความแปรปรวน • ( (Xi - X)2) • SD2 = ค่าความแปรปรวน
วิธีการ • 1. อ่านคะแนนดิบ (score) โดยการวน loop เก็บค่า sum และเก็บคะแนนลง array ไว้ • 2. หาคะแนนเฉลี่ย • 3. วน loop คำนวณ SUM(Xi - X)2 • 4. คำนวณ (Xi - X)2 • N-1 • 5. พิมพ์ ค่าความแปรปรวน
START i = 0 SUM = 0 TOT =0 Read score Yes Score<>999? No i = i + 1 N = i X(i) = score SUM = SUM+score X=SUM/N Read score 1 Flowchart (ต่อ)
1 i = 0 i = i + 1 TOT=TOT+(X(i)-X)2 No i = N? Yes SD2=TOT/(N-1) Print SD2 END