Chapter 3 : Array.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
หลักการโปรแกรม 1 Lecture 12: อาร์เรย์หนึ่งมิติ
Advertisements

อสมการเชิงเส้นตัวแปรเดียว
Array ธนวัฒน์ แซ่ เอียบ. The concept of array อาเรย์ : กลุ่มของข้อมูลที่มีชนิดเดียวกันและถูก จัดเก็บเรียงลำดับต่อเนื่องกัน ตัวแปร x สามารถจัดเก็บค่ามากกว่า.
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
โรงเรียนนวมินทราชินูทิศ เตรียมอุดมศึกษาพัฒนาการ
บทที่ 6 บทที่ 6 คำสั่งแก้ไขปัญหาแบบ เลือก (CONDITION)
คณิตศาสตร์พื้นฐาน ค ชั้นมัธยมศึกษาปีที่ 3 โดย ครูชำนาญ ยันต์ทอง
บทที่ 5 การควบคุมทิศทางการทำงานของโปรแกรม
การใช้งานโปรแกรม SPSS
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
Chapter 10 Arrays Dept of Computer Engineering Khon Kaen University.
บทที่ 4 คำสั่งควบคุม โปรแกรม. คำสั่งควบคุมโปรแกรมออกได้เป็น 2 ประเภท คือ คำสั่งแบบกำหนดเงื่อนไข (Conditional Statement) คำสั่งแบบทำงานซ้ำ (Repetitive.
ชนิดของข้อมูล และการคำนวณทางคณิตศาสตร์
1. Select query ใช้สำหรับดึงข้อมูลที่ต้องการ
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
หน่วยการเรียนรู้ที่ 7 ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
Array in PHP บทเรียนเรื่อง การใช้ Array ในภาษา PHP.
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 6 แถวลำดับ (Array)
การใช้งาน Microsoft Excel
หลักการโปรแกรม 1 Lecture 8: การทำซ้ำ (while, do-while)
ตัวแปร และชนิด ข้อมูล. ตัวแปร การกำหนดตัวแปรเป็นการใช้ ชื่อตัวแปรแทน ตำแหน่งบนหน่วยความจำ สำหรับเก็บ ข้อมูลระหว่างการ ประมวลผล ซึ่งอาจเป็นข้อมูลนำเข้า.
ARRAY & PRINTF สาขางานคอมพิวเตอร์ธุรกิจอาจารย์จิรา ภรณ์ เขตกุฎี
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
คำสั่งควบคุมการทำงาน
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
รายการ(List) [1] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 5 อินพุตและเอาต์พุต
การประยุกต์ Logic Gates ภาค 2
บทที่ 1 สถาปัตยกรรมของระบบฐานข้อมูล (Database Architecture)
สมการเชิงเส้น (Linear equation)
บทที่ 10 อาร์เรย์ (Array)
แล้วทำการเรียงลำดับข้อมูลใหม่โดยเรียงจากน้อยไปหามาก
STACK สแตก(stack) เป็นโครงสร้างข้อมูลแบบเชิงเส้น ที่มีการใส่ข้อมูลเข้า และนำข้อมูลออกเพียงด้านเดียว ดังนั้น ข้อมูลที่เข้าไปอยู่ใน stack ก่อนจะออกจาก stack.
BC320 Introduction to Computer Programming
การบันทึกรายการค้าในสมุดบัญชี
START INPUT R = 1 R = R Yes R*R <=2 No R = R PROCESS
หน่วยการเรียนที่ 4 เรื่อง การควบคุมทิศทางการทำงาน
QUEUE คิวจะมีโครงสร้างแบบเชิงเส้นเหมือน stack แต่แตกต่างตรงที่ queue มีตัวชี้ 2 ตัวคือ หัว(Head) และหาง(Tail) โดยการใส่ข้อมูลเข้าและนำข้อมูลออก จะมีลักษณะ.
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
บทที่ 13 การจัดการไฟล์ (File Management)
Control Statement เงื่อนไขคำสั่งในโปรแกรม ภาษา C
บทที่ 8 เงื่อนไขตัดสินใจ
ตัวแปรกับชนิดของข้อมูล
บทที่ 1 ระบบสารสนเทศ (Information System)
บทที่ 4 อาร์เรย์ (Array)
ขั้นตอนการออกแบบ ผังงาน (Flow Chart)
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
Data storage II Introduction to Computer Science ( )
บริษัท พัฒนาวิชาการ (2535) จำกัด
BC320 Introduction to Computer Programming
บทที่ 9 การทำซ้ำ (Loop).
Week 5 C Programming.
คำสั่งวนรอบ (Loop).
ความรู้เบื้องต้นเกี่ยวกับจำนวนจริง
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
Data storage II Introduction to Computer Science ( )
หน่วยที่ 6 อะเรย์ของอักขระ
บทที่ 9 การเรียงลำดับข้อมูล (Sorting)
บทที่ 7 การประมวลผลอาร์เรย์
OPERATOR ภาษาปาสคาล (Pascal)
บทที่ 2 โครงสร้างข้อมูลแบบแถวลำดับหรืออาร์เรย์ (Array)
Array Sanchai Yeewiyom
Array: One Dimension Programming I 9.
ฟังก์ชันของโปรแกรม Computer Game Programming
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Decision: Single and Double Selection (if and if-else statement)
บทที่ 7 การบัญชีภาษีมูลค่าเพิ่ม
ใบสำเนางานนำเสนอ:

Chapter 3 : Array

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

เช่น ถ้าต้องการที่จะเก็บข้อมูลอายุของนักศึกษาทั้งมหาวิทยาลัย 2000 คน เราไม่จำเป็นต้องประกาศตัวแปรประเภท int มากถึง 2000 ตัว int age , i=1; While (i<=2000) { scanf(“%d”, &age); } Printf(“%d”, age) // ค่าที่แสดงคือค่า อายุของคนสุดท้าย เนื่องจากค่าตัวแปรโดยทับค่าจากการรับค่าในแต่ละรอบ int age1; int age2; int age3; ไม่จำเป็น

แต่สามารถประกาศ int age[2000] เพื่อจัดเก็บข้อมูลอายุของนักศึกษาคนที่ 1 ,2,3,4,5….2000 โดยการอ้างถึง age[0],age[1], age[2], age[3]….age[1999] ตามลำดับ

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

ตัวแปรอาร์เรย์แบบ 1 มิติ ตัวแปรแบบอาร์เรย์ ที่ใช้ในการเก็บข้อมูลโดยมีการอ้างอิงที่ใช้เลขดัชนีเพียงหนึ่งค่าจะเรียกว่า ตัวแปรแบบอาร์เรย์ 1 มิติ int age[10]; เป็นการประกาศตัวแปรแบบอาร์เรย์เพื่อเก็บข้อมูลอายุ เมื่อต้องการเก็บข้อมูลอายุของนักศึกษาเป็นจำนวน 10 คน โดยคนที่ 1 สามารถอ้างได้ดังนี้  age[1] = 18;

การประกาศ ตัวแปรอาร์เรย์ การประกาศตัวแปรแบบอาร์เรย์สามารถทำได้คล้ายกับการประกาศตัวแปรอื่นๆ ทั่วไป โดยการกำหนดซื่อของตัวแปร ชนิดของข้อมูล และขนาดของข้อมูล ตัวอย่างเช่น float grades[5]; /* Array ขนาด 5 ของ int */ grades[0] = 12.5 scanf(“%f”,&grades[1]); เป็นการประกาศตัวแปรแบบอาร์เรย์ 1 มิติชื่อ grades ให้เป็นข้อมูลแบบอักษรโดยมีขนาดเท่ากับ 5 อีลีเมนต์ ซึ่งการประกาศตัวแปรนี้จะจองหน่วยความจำเท่ากับ 2 byte * 5 = 10 byte

char codes[5]; /* Array ขนาด 5 ของ char */ การประกาศตัวแปร codes จะใช้หน่วยความจำเท่ากับ 1 byte * 5 = 5 byte ใช้สำหรับเก็บ string float prices[100]; /* Array ขนาด 100 ของ float */ การประกาศตัวแปร price จะใช้หน่วยความจำเท่ากับ 4 byte * 100 = 400 byte

ในการเข้าถึงแต่ละอีลีเมนต์สามารถกระทำได้โดยการระบุค่าดัชนี (Index) int grades[5]; ในการเข้าถึงแต่ละอีลีเมนต์สามารถกระทำได้โดยการระบุค่าดัชนี (Index) grades[0] อ้างถึงค่า grades แรกที่เก็บใน grades array grades[1] อ้างถึงค่า grades ลำดับที่สองที่เก็บใน grades array grades[2] อ้างถึงค่า grades ลำดับที่สามที่เก็บใน grades array grades[3] อ้างถึงค่า grades ลำดับที่สี่ที่เก็บใน grades array grades[4] อ้างถึงค่า grades ลำดับที่ห้าที่เก็บใน grades array  

ตัวแปรอาร์เรย์สามารถใช้งานได้เหมือนกับตัวแปรทั่วไป ตัวอย่างการใช้งานตัวแปร grades ที่เป็นอาร์เรย์ของจำนวนเต็ม 5 ตัว grades[0] = 98; grades[1] = grades[0] – 11; grades[2] = 2 * (grades[0] – 6); grades[3] = 79; grades[4] = (grades[2] + grades[3] – 3) / 2; total = grades[0] + grades[1] + grades[2] + grades[3] + grades[4];  

ค่าตัวเลขอีลีเมนต์ไม่จำเป็นต้องเป็นตัวเลขโดยตรง อาจเป็นตัวแปร หรือพจน์ของการกระทำที่ได้เป็นจำนวนเต็มก็ได้เช่น grades[i] ถ้า int i =1; grades[2*i] grades[j-i]

For loop การใช้ for loop เพื่อเข้าถึงค่า array Scanf(“%f”,&grades[0]); total = grades[0] + grades[1] + grades[2] + grades[3] + grades[4];   เปลี่ยนเป็น total = 0; for ( i = 0; i <= 4, i++) total = total + grades[i]

total = 0; for ( i = 0; i <= 4, ++i) total += grades[i]; -> total = total + grades[i] รอบ i=0 total = 0+ grades[0] รอบ i=1 total = total+ grades[1]

หรืออาจใช้การวนรอบเพื่อรับค่าจากผู้ใช้ก็เป็นได้ดังตัวอย่าง for(i = 0; i <=4; ++i) { printf(“Enter a grade: “); scanf(“%d”, &grades[i]); }

จงเขียนโปรแกรมเพื่อรับค่าจำนวนจริง 20 จำนวน แล้วทำการแสดงค่า จงเขียนโปรแกรมเพื่อรับจำนวนเต็มเข้ามา 5 จำนวน แล้วแสดงผลลัพธ์จาก หลังไปหน้า เช่น 1 2 3 4 9 9 4 3 2 1 จงเขียนโปรแกรมเพื่อรับค่าราคาสินค้าจำนวน 15 ชิ้น แล้วหาว่าร้านมีรายได้รวมเท่าไหร่ (กำหนดให้ใช้ array) จงเขียนโปรแกรมเพื่อรับค่า ชื่อของนิสิต เป็นภาษาอังกฤษแล้วแสดงค่าเป็น ค่ากลับหลัง เช่น รับค่า SIRAYA แสดงผลเป็น AYARIS

Student 1: 89 grade = A Student 2: 56 grade = E จงเขียนโปรแกรมเพื่อรับค่าคะแนน ของนักเรียนทั้งหมด 20 แล้วนำมาคำนวณเกรด โดยมีเกณฑ์ดังนี้ 85 คะแนนขึ้นไปเกรด A 75-84 ได้เกรด B 60-74 ได้เกรด C ต่ำกว่า 60 ได้เกรด E จากนั้นให้แสดงออกทางหน้าจอว่า นักเรียนแต่ละคนได้เกรดเท่าไหร่ ดังรูปแบบต่อไปนี้ Student 1: 89 grade = A Student 2: 56 grade = E Student 3: 78 grade = B Student 4: 61 grade = C

int sum=0; for(i = 0; i <=19; ++i) { printf(“Enter a grade: “); scanf(“%d”, &grades[i]); sum = sum + grades[i]; //40 } for(j = 0; j <=19; ++j) printf(“%d”, grades[j]); 1 Avg = sum /20; Printf(“avg = %d”, avg)

ต้องการหาค่ามากที่สุด (Maximum) ของค่าในตัวแปรอาร์เรย์จำนวน 100 ค่าคือ float prices[100] สามารถกระทำได้ด้วยวิธีการดังนี้คือ ใช้การวนรอบ for และ เงื่อนไข if เพื่อการตรวจสอบซึ่งจะทำให้ได้โปรแกรมดังนี้ maximum = price[0]; for(i = 1; i <= 99; ++i) if (price[i] > maximum) maximum = price[i];

ตัวแปรอาร์เรย์แบบ 2 มิติ ตัวแปรอาร์เรย์แบบ 2 มิติจะเป็นตัวแปรที่มีการอ้างอิงถึงค่าข้อมูลโดยใช้ค่าเลขดัชนี 2 ค่าซึ่งประกอบไปด้วยค่าดัชนีที่ใช้ในการอ้างอิงในแนวแถว (row) และค่าดัชนีที่ใช้อ้างอิงในแนวคอลัมน์(column) ตัวอย่างเช่น 8 16 9 52 3 15 27 6 14 25 2 10 int val[3][4]; // ตัวแปร val เป็น array 2 มิติขนาด 3 x 4

int sum=0; for(i = 0; i <3; ++i) { for(j = 0; j <4; ++j) { printf(“Enter a value: [%d ] [%d]“, i,j); scanf(“%d”, &val[i][j]); sum = sum + val[i][j]; }

for(i = 0; i <4; ++i) { for(j = 0; j <3; ++j) printf(“%d”, val[i][j]); }

แบบฝึกหัด จงทำการหาผลบอกของสองเมตริก ต่อไปนี้ที่มีขนาด 3*3 16 9 52 6 10 3 15 27 6 5 12 14 25 2 10 6 15

Int a[3][3], b[3][3], c[3][3]; for(i = 0; i <3; ++i) { for(j = 0; j <3; ++j) { printf(“Enter a value %d, %d of Matrix 1:”, i,j ); scanf(“%d”, &a[i][j]); printf(“Enter a value %d, %d of Matrix 2:”, i,j ); scanf(“%d”, &b[i][j]); } { c[i][j] = a[i][j] + b[i][j];