Computer Programming Asst. Prof. Dr. Choopan Rattanapoka

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
Suphot Sawattiwong Function ใน C# Suphot Sawattiwong
Advertisements

Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
ครั้งที่ 9 Function(ต่อ).
โครงสร้างโปรแกรมภาษา C
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
ข้อมูลชนิดสตริง String บทที่ 8
BC322 ครั้งที่ 10 ตัวแปรชุด (Array)
การรับค่าและแสดงผล.
ข้อมูลชนิดโครงสร้าง (Structure Data)
Principles of Programming
Principles of Programming
ตัวแปรชนิดโครงสร้าง (Structure)
Data Type part.II.
Lecture No. 3 ทบทวนทฤษฎีและแบบฝึกหัด
ทบทวน อาร์เรย์ (Array)
Structure Programming
Array.
Structure.
LAB # 5 Computer Programming 1 1.
Week 6 ประกาศค่าตัวแปร.
รับและแสดงผลข้อมูล.
ตัวชี้ P O I N T E R Created By Tasanawan Soonklang
อาเรย์ (Array).
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
ตัวแปรชุด.
Lecture no. 6 Structure & Union
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Arrays.
ตัวแปรแบบโครงสร้าง.
บทที่ 12 Structure and union Kairoek choeychuen
บทที่ 6 ตัวแปรอาร์เรย์ (Array of Variable)
C Programming Lecture no. 9 Structure.
C Programming Lecture no. 6: Function.
ข้อมูลชนิดอาร์เรย์ ประเภทของข้อมูลที่ผ่านมาส่วนใหญ่ในตอนต้นๆจะเป็นข้อมูลเดี่ยว โดยตัวแปรหนึ่งตัวสามารถเก็บข้อมูลได้หนึ่งตัว ถ้าหากต้องการเก็บข้อมูลหลายตัวจะต้องประกาศตัวแปรหลายตัว.
อาร์เรย์และข้อความสตริง
บทที่ 3 สตริงและ เรคคคอร์ค
การเขียนโปรแกรมภาษาซี
ตัวแปรกับชนิดของข้อมูล
ฟังก์ชัน ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ ศูนย์คอมพิวเตอร์
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ปฏิบัติการครั้งที่ 10 pointer. หน่วยความจำ หน่วยความจำนั้นเสมือนเป็นช่องว่างไว้เก็บ ของที่มีหมายเลขประจำติดไว้ที่แต่ละช่อง เพื่อใช้ในการระบุตำแหน่งของช่องได้
บทที่ 5 ฟังก์ชันกับอาร์เรย์ Function & Array
C language W.lilakiatsakun.
ตัวแปรกับชนิดของข้อมูล
Week 2 Variables.
Week 12 Engineering Problem 2
การประมวลผลสายอักขระ
Computer Programming for Engineers
ความหมาย การประกาศ และการใช้
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
คำสั่งเกี่ยวกับการรับ และแสดงผล
หลักการสร้างสรรค์ชุดคำสั่ง ๓
Output of C.
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
โครงสร้างข้อมูลแบบรายการโยง (Link List)
ข้อมูลแบบโครงสร้างและยูเนียน
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
โครงสร้างข้อมูลแบบลิงก์ลิสต์
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
1. Global variable คือ ตัวแปรที่กำหนดหรือประกาศไว้นอกฟังก์ชันใด ๆ ทุกฟังก์ชัน สามารถนำตัวแปรประเภท Global ไปใช้ได้ทุกฟังก์ชัน.
หน่วยที่ 4 โครงสร้างโปรแกรมภาษาซี
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
stack #1 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
การเขียนโปรแกรม (ภาษาซี)
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
บทที่ 11 พอยเตอร์ C Programming C-Programming. จันทร์ดารา Surin Campus : มีอะไรบ้างในบทนี้  ตัวแปรพอยเตอร์ (Pointer) เป็นตัว แปรที่แปลกและแตกต่างไปจากตัว.
ใบสำเนางานนำเสนอ:

030523300- Computer Programming Asst. Prof. Dr. Choopan Rattanapoka Structure & Union 030523300- Computer Programming Asst. Prof. Dr. Choopan Rattanapoka

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

สตรัคเจอร์ (2) สตรัคเจอร์ หรือโครงสร้างข้อมูล (Structure) เป็นการกำหนดชนิดของ ตัวแปรขึ้นมาใหม่ โดยนำตัวแปรชนิดพื้นฐานในภาษาซี อย่างเช่น int, char, และ float มาประกอบกันเป็นโครงสร้างของตัวแปรชนิดใหม่ การสร้างตัวแปรสตรัคเจอร์ในภาษาซี สามารถทำได้ 3 วิธี char name[24]; int code; float salary;

การสร้างตัวแปรสตรัคเจอร์ วิธีที่ 1 การสร้างตัวแปรสตรัคเจอร์ วิธีที่ 1 struct { char name[24]; int code; float salary; } no1, no2; เป็นการประกาศตัวแปรประเภทโครงสร้างชื่อ no1 และ no2 โดยแต่ละตัวจะประกอบไปด้วย ตัวแปรย่อยคือ name, code, salaryเหมือนกัน

การสร้างตัวแปรสตรัคเจอร์ วิธีที่ 2 การสร้างตัวแปรสตรัคเจอร์ วิธีที่ 2 struct employee { char name[24]; int code; float salary; } ; struct employee no1, no2;

การสร้างตัวแปรสตรัคเจอร์ วิธีที่ 3 การสร้างตัวแปรสตรัคเจอร์ วิธีที่ 3 typedef struct { char name[24]; int code; float salary; } employee; employee no1, no2;

สรุปการประกาศตัวแปรสตรัคเจอร์ วิธีที่ 1 วิธีที่ 2 วิธีที่ 3 struct { char name[24]; int code; float salary; } no1, no2; struct employee { } ; struct employee no1, no2; typedef struct { } employee; employee no1, no2; ทั้ง 3 วิธีเป็นการสร้างตัวแปรสตรัคเจอร์ที่สามารถเก็บค่าตัวแปรภายใน 3 ตัวคือ char name[24]; int code; float salary;

การกำหนดค่าเริ่มต้นให้กับตัวแปรสตรัคเจอร์

การเข้าถึงข้อมูลของตัวแปรสตรัคเจอร์

ตัวอย่างการอ้างอิงข้อมูลในตัวแปรสตรัคเจอร์ #include<stdio.h> int main(int argc, char **argv)‏ { struct product { int code; char productName[64]; float price; } computer; computer.code = 1000; strcpy(computer.productName, “Core 2 duo”); computer.price = 18000.00; }

แบบฝึกหัด 1 เมื่อป้อนค่า ตามลำดับ 1000 Somchai 10720 #include<stdio.h> int main(int argc, char **argv)‏ { typedef struct { int code; char name[64]; float salary; } Employee; Employee emp; printf(“Enter code : “ ); scanf(“%d”, &(emp.code)); printf(“Enter name : “); gets(emp.name); printf(“Enter salary : “); scanf(“%f”, &(emp.salary));   printf(“%d\t%s\t%f\n”, emp.code, emp.name, emp.salary); } เมื่อป้อนค่า ตามลำดับ 1000 Somchai 10720

การ copy ค่าระหว่างตัวแปรสตรัคเจอร์

อาร์เรย์ของตัวแปรโครงสร้าง ในกรณีที่ต้องการใช้ตัวแปรชนิดโครงสร้างแบบเดียวกันหลายๆตัว เรา สามารถสร้างตัวแปรอาร์เรย์ชนิดโครงสร้างขึ้นมาได้ เช่นเดียวกันกับการ สร้างตัวแปรอาร์เรย์กับชนิดข้อมูลพื้นฐานอื่นๆ struct employee { char name[24]; int code; float salary; } ; struct employee emp[100];

ตัวอย่างการใช้งาน ? 1 3 2 AB ECT EE code name emp[0] emp[1] emp[2] emp #include<stdio.h> int main(int argc, char **argv)‏ { int i; typedef struct { int code; char name[64]; } Employee; Employee emp[3]; for(i = 0; i < 3; i++) { printf(“Enter code : “ ); scanf(“%d”, &(emp[i].code)); printf(“Enter name : “); gets(emp[i].name); } for(i = 0; i < 3; i++) printf(“%d:%d:\t%s\n”, i, emp[i].code, emp[i].name); 1 3 2 AB ECT EE ผลการรัน : Enter code : 1 Enter name : AB Enter code : 3 Enter name : ECT Enter code : 2 Enter name : EE 0:1: AB 1:3: ECT 2:2: EE

พอยน์เตอร์ของตัวแปรโครงสร้าง เราสามารถที่จะสร้างตัวแปรพอยน์เตอร์ของตัวแปรโครงสร้างได้ ซึ่งการ ใช้งานส่วนใหญ่จะเป็นการผ่านค่าตัวแปรเข้าไปในฟังก์ชัน

การอ้างค่าผ่านตัวแปรพอยน์เตอร์ (1)

การอ้างค่าผ่านตัวแปรพอยน์เตอร์ (2)

ตัวแปรโครงสร้างในตัวแปรโครงสร้าง โครงสร้างข้อมูล DATE โครงสร้างข้อมูล TIME โครงสร้างข้อมูล STAMP typedef struct { int month; int day; int year; } DATE; int hour; int min; int sec; } TIME; DATE date; TIME time; } STAMP; STAMP stamp;

ตัวแปรโครงสร้างและฟังก์ชัน ตัวแปรชนิดโครงสร้างสามารถนำไปใช้งานร่วมกับฟังก์ชันได้ ไม่ว่าจะเป็น การผ่านตัวแปรโครงสร้างทั้งหมด หรือ เพียงแค่สมาชิกภายในตัวแปร โครงสร้าง struct num_string { int i; char st[10]; }; void output(struct num_string a) { printf("x.i = %d\n",a.i); printf("x.st = %s\n",a.st); }

แบบฝึกหัด 2 #include <stdio.h> struct num_string { int i; char st[10]; };   void output(struct num_string a) { printf("x.i = %d\n", a.i); printf("x.st = %s\n", a.st); } int main(int argc, char **argv) { struct num_string x; x.i = 100; strcpy(x.st, "COMPUTER"); output(x);

แบบฝึกหัด 3 int main(int argc, char **argv) { struct num_string x; #include <stdio.h> struct num_string { int i; char st[10]; };   void output(struct num_string a) { printf("x.i = %d\n", a.i); printf("x.st = %s\n", a.st); } void modify(struct num_string *a, int i, char *st) { a->i = i; strcpy(a->st, st);  int main(int argc, char **argv) { struct num_string x; x.i = 100; strcpy(x.st, "COMPUTER"); modify(&x, 50, “PC”); output(x); }

ยูเนียน ยูเนียน (union) เป็นข้อมูลซึ่งคล้ายกับสตรัคเจอร์คือมีโครงสร้างภายใน ประกอบด้วยตัวแปรชนิดพื้นฐานในภาษาซีเช่นกัน แต่ส่วนที่แตกต่างกันก็คือ สมาชิกของข้อมูลชนิดยูเนียนจะใช้พื้นที่ใน หน่วยความจำร่วมกัน โดยเปลี่ยนกันใช้พื้นที่ในตำแหน่งนั้นคนละช่วงเวลา ซึ่งเป็นการประหยัดเนื้อที่ในหน่วยความจำ รูปแบบการประกาศตัวแปรยูเนียนจะคล้ายกับโครงสร้างข้อมูล union employee { char name[24]; int code; float salary; } emp;

หน่วยความจำที่ใช้ของสตรัคเจอร์ และยูเนียน #include <stdio.h> #include <stdlib.h> typedef struct { int x; int y; int z; } myStruct; typedef union { } myUnion; int main(int argc, char *argv[]) { printf("Size of MyStruct = %d\n", sizeof(myStruct)); printf("Size of myUnion = %d\n", sizeof(myUnion)); system("PAUSE"); return 0; }