LAB # 6 Pointer.

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โปรแกรมทดสอบที่1 ทดสอบการแสดงผลข้อความ
Advertisements

ชนิดของข้อมูลในโปรแกรม Interactive C
Pointers. Why have pointers? / pointers ทำให้ฟังก์ชันหรือส่วนของ โปรแกรมสามารถใช้งานข้อมูลร่วมกันได้ / ใช้ pointers ในการสร้างโครงสร้างข้อมูลที่ ซับซ้อนได้
โครงสร้างโปรแกรมภาษา C
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
ตัวแปรประเภทตัวชี้ (Pointer)
โดยอาจารย์ศิริพร ศักดิ์บุญญารัตน์ ครูชำนาญการ โรงเรียนมหิดลวิทยานุสรณ์
ตัวแปรชุด การเขียนโปรแกรมภาษาคอมพิวเตอร์ 1
ข้อมูลชนิดสตริง String บทที่ 8
Computer Programming 1 LAB Test 3
LAB # 1.
บทที่ 7 รีเคอร์ซีฟ ระหว่างการออกแบบเขียนโปรแกรมแบบบนลงล่าง (Top-down Design) จะมีงานย่อย(Subtask) เพื่อแก้ปัญหาในแต่ละเรื่อง และผู้เขียนโปรแกรมต้องการใช้งานย่อยในลักษณะที่เรียกตัวเองขึ้นมาทำงาน.
การรับค่าและแสดงผล.
Control Statement for while do-while.
บทที่ 11 การเขียนโปรแกรมโดยใช้ข้อมูลชนิดพอยท์เตอร์
หลักการโปรแกรม 1 Lecture 3: ตัวแปร, นิพจน์คณิตศาสตร์, การคำนวณทางคณิตศาสตร์,การดำเนินการกับสายอักขระ.
Lecture 4: ทางเลือก, เงื่อนไขของทางเลือก
Lecture 10: อาร์เรย์หนึ่งมิติ
ฟังก์ชัน (Function).
Array.
LAB # 4 Computer Programming 1 1. พิจารณาโปรแกรมต่อไปนี้
LAB # 8 Computer Programming 1
Computer Programming 1 LAB # 6 Function.
LAB # 4.
Lab 3: คำสั่งพื้นฐานสำหรับการรับและการแสดงผลข้อมูล
Lab 4: คำสั่ง if - else อ.ณัฐพงศ์ พยัฆคิน.
Lab 5: คำสั่ง switch - case
Lab 8: คำสั่ง Do-While อ.ณัฐพงศ์ พยัฆคิน.
ตัวชี้ P O I N T E R Created By Tasanawan Soonklang
อาเรย์ (Array).
คำสั่งวนซ้ำ (Looping)
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
ตัวแปรชุด.
การรับข้อมูลเบื้องต้นโดยใช้ฟังก์ชั่น scanf
การประกาศตัวแปร “ตัวแปร” คือสิ่งที่เราสร้างขึ้นมาเพื่อใช้เก็บค่าต่างๆและอ้างอิงใช้งานภายในโปรแกรม ตามที่เรากำหนดขึ้น การสร้างตัวแปรขึ้นมาเราเรียกว่า.
Arrays.
ตัวแปรแบบโครงสร้าง.
บทที่ 6 ตัวแปรอาร์เรย์ (Array of Variable)
C Programming Lecture no. 9 Structure.
ข้อมูลชนิดอาร์เรย์ ประเภทของข้อมูลที่ผ่านมาส่วนใหญ่ในตอนต้นๆจะเป็นข้อมูลเดี่ยว โดยตัวแปรหนึ่งตัวสามารถเก็บข้อมูลได้หนึ่งตัว ถ้าหากต้องการเก็บข้อมูลหลายตัวจะต้องประกาศตัวแปรหลายตัว.
หน่วยที่ 17 แอเรย์ของสตรัคเจอร์. แอเรย์ของข้อมูลสตรัคเจอร์ student_info student[30]; Student[0]Student[0].Name Student[0].Midterm Student[0].Assignment.
หน่วยที่ 1 พื้นฐานภาษา C
หน่วยที่ 8 อาร์กิวเมนต์ของ main
อาร์เรย์และข้อความสตริง
ตัวอย่างโปรแกรมคำนวณหาพื้นที่สี่เหลี่ยม
อาร์เรย์ (Array).
Chapter 2 Introduction to The C++ Language. Figure 2-1.
อาร์เรย์ (Array).
คำสั่งควบคุมการทำงาน
การคำนวณทางคณิตศาสตร์ ตัวดำเนินการ
ง30212 การเขียนโปรแกรมภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
แถวลำดับ (array) ง40202 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์
ง30212 การเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ โรงเรียนปลวกแดงพิทยาคม
ปฏิบัติการครั้งที่ 10 pointer. หน่วยความจำ หน่วยความจำนั้นเสมือนเป็นช่องว่างไว้เก็บ ของที่มีหมายเลขประจำติดไว้ที่แต่ละช่อง เพื่อใช้ในการระบุตำแหน่งของช่องได้
โปรแกรมยูทิลิตี้.
ตัวแปรกับชนิดของข้อมูล
Week 7 การเขียนโปรแกรมเบื้องต้น
คำสั่งควบคุมแบบวนซ้ำ
คำสั่งเกี่ยวกับการรับ และแสดงผล
บทที่ 4 คำสั่งควบคุมแบบมีทางเลือก
ตัวแปร Array แบบ 1 มิติ การเขียนโปรแกรมแบบวนซ้ำ
อ. วชิระ หล่อประดิษฐ์. ตัว ดำเนินกา ร ศัพท์เฉพาะตัวอย่ าง ผลลัพธ์ ให้ a=3; b=2; Greater thana > b;True
Computer Programming Asst. Prof. Dr. Choopan Rattanapoka
1. Global variable คือ ตัวแปรที่กำหนดหรือประกาศไว้นอกฟังก์ชันใด ๆ ทุกฟังก์ชัน สามารถนำตัวแปรประเภท Global ไปใช้ได้ทุกฟังก์ชัน.
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
การเขียนโปรแกรม (ภาษาซี)
การเขียนโปรแกรม (ภาษาซี)
Programming assignments ชื่องาน (subject) : program เขียนด้วยภาษา C หรือ C++ มีทั้งหมด 7 ข้อ กำหนดส่ง 29 กรกฎาคม 2554.
รูปแบบของการใช้คำสั่ง for for( ตัวแปร = ค่าเริ่มต้น ; นิพจน์ตรรกะ ; ค่าเพิ่มหรือค่าลด ) { statement(s); } ตัวอย่าง กรณีกำหนดการวนซ้ำเป็นค่าคงที่ For(n=1;n
บทที่ 11 พอยเตอร์ C Programming C-Programming. จันทร์ดารา Surin Campus : มีอะไรบ้างในบทนี้  ตัวแปรพอยเตอร์ (Pointer) เป็นตัว แปรที่แปลกและแตกต่างไปจากตัว.
ใบสำเนางานนำเสนอ:

LAB # 6 Pointer

ตัวแปร / พอยน์เตอร์(Pointer) ตัวแปรคือ พื้นที่ หน่วยความจำที่ใช้เก็บข้อมูล พื้นที่ หน่วยความจำ มีชื่อตัวแปรกำกับอยู่ สามารถเปลี่ยนแปลงแก้ไขค่าข้อมูลได้ผ่านชื่อตัวแปร พื้นที่ หน่วยความจำถูกสร้างโดยอัตโนมัติเมื่อมีคำสั่งประกาศตัวแปร เช่น float a; ถูกทำลายอัตโนมัติเมื่อไม่มีใช้งาน ตัวอย่าง Memory 65000-65001 65002 x y ….. main(){ int x; char y; } 30 a x = 30; y = ‘a’;

ตัวแปร / พอยน์เตอร์(Pointer) เมื่อประกาศใช้งานแล้วจะมีพื้นที่ หน่วยความจำ (2 bytes) เพื่อเก็บตำแหน่ง หน่วยความจำอื่น เราสามารถใช้ Pointer เพื่อแก้ไขค่าข้อมูลใน หน่วยความจำอื่นได้ พื้นที่ หน่วยความจำ ถูกสร้างโดยอัตโนมัติ (2 bytes) เมื่อมีการใช้คำสั่ง float * p; ถูกทำลายอัตโนมัติเมื่อไม่มีใช้งาน ตัวอย่าง Memory 65000-65001 65002-65003 x y ….. main(){ int x; int *y; } 40 30 65000 x = 30; y = &x; *y = 40;

p x y p x y p x y p x y ตัวอย่าง I 50 50 100 65000 100 50 65006 100 65004 p 65000 x 65002 y main(){ int x; int y; int *p; } 65004 p 50 65000 x 65002 y x=y= 50; 65004 p 50 65000 x 65002 y p = &x; 100 65000 *p = 100; *p = new int; 65004 p 100 65000 x 50 65002 y 65006 65006 100 *p = x;

p p ตัวอย่าง II 50 50 100 main(){ } 65004 65006 int *p; *p = new int; cout << *p; 65004 p 65006 50 65008 100 *p = new int; *p = 100; delete p;

ให้นักศึกษา ศึกษาตัวอย่างและการกำหนดตัวแปร Pointer และทำความเข้าใจ /*Program : pointer1.cpp Process : disply address value of variable */ #include <iostream.h> void main() { int number1=250; //integer variable float number2=1005.25; //float variable double number3=1254025.25212; //double variable int* int_pointer; //pointer variable float* float_pointer; //pointer variable double* doub_pointer; //pointer variable char* char_pointer; //pointer variable //display address by & operator cout<< "Display address of variable by & operator"<<endl; cout<< "Address of number1 = "<<&number1<<endl; cout<< "Address of number2 = "<<&number2<<endl; cout<< "Address of number3 = "<<&number3<<endl<<endl; // set address from memory to pointer variable int_pointer = &number1; float_pointer = &number2; doub_pointer = &number3; //display address by pointer variable cout<< "Display address from pointer variable "<<endl; cout<< "Address of number1 = "<<int_pointer<<endl; cout<< "Address of number2 = "<<float_pointer<<endl; cout<< "Address of number3 = "<<doub_pointer<<endl; }

ให้นักศึกษา ศึกษาตัวอย่างและการกำหนดตัวแปร Pointer แบบ void /*Program : pointer2.cpp Process : disply void pointer type */ #include <iostream.h> void main() { int number1=250; //integer variable float number2=1005.25; //float variable double number3=1254025.25212; //double variable void* many_ptr; //pointer of many type of variable //display constant at address in pointer variable cout<< "Display address from 'void* many_ptr' pointer"<<endl; many_ptr = &number1; cout<< "Address of number1 integer...many_ptr = "<<many_ptr<<endl; many_ptr = &number2; cout<< "Address of number2 float...many_ptr = "<<many_ptr<<endl; many_ptr = &number3; cout<< "Address of number3 double...many_ptr = "<<many_ptr<<endl; }

ให้นักศึกษา ศึกษาตัวอย่างและการกำหนดตัวแปร Pointer ในรูปแบบของ Array และทำความเข้าใจ /*Program : pointer3.cpp Process : disply relation array and pointer */ #include <iostream.h> void main() { int number[5]= {10,20,30,40,50}; //integer variable int i; int* num_ptr; num_ptr = &number[0]; //same as write this => num_ptr = &number[0] //display by index cout<<"Display constant by index of array"<<endl; for(i=0;i<=4;++i) cout<<"number"<<i<<" = "<<number[i]<<endl; //display by pointer of array cout<<endl<<"Display constant by * (indirect operator) of pointer"<<endl; cout<<"number"<<i<<" = "<< *(num_ptr+i) <<endl; //display by * (indirect operator) of array cout<<endl<<"Display constant by * (indirect operator) of array name"<<endl; cout<<"number"<<i<<" = "<< *(number+i) <<endl; }

ให้นักศึกษา ศึกษาตัวอย่างรูปแบบการส่งผ่านค่าแบบ Pass by Reference /*Program : pointer4.cpp Process : passed argument by reference */ #include <iostream.h> //prototype function void CelToFah(float& degree); void main() { float celsius; cout<< "Enter Celsius degree for convert to Fahenhiet : "; cin>>celsius; //call function and passed argument by reference CelToFah(celsius); //value of celsius will return and changed cout<< "Result = "<<celsius<<" Fahrenhiet degree"; } void CelToFah(float& degree) //function convert Celsius to Fahrenhiet { degree = degree*9/5+32; ให้นักศึกษา ศึกษาตัวอย่างรูปแบบการส่งผ่านค่าแบบ Pass by Reference /*Program : pointer5.cpp Process : passed argument by pointer */ #include <iostream.h> //prototype function void CelToFah(float* degree); void main() { float celsius; cout<< "Enter Celsius degree for convert to Fahenhiet : "; cin>>celsius; //call function and passed argument by address of celsius CelToFah(&celsius); //value of celsius will return and changed cout<< "Result = "<<celsius<<" Fahrenhiet degree"; } void CelToFah(float* degree) //function convert Celsius to Fahrenhiet { //* operater refer to value at address in degree pointer *degree = (*degree)*9/5+32; ให้นักศึกษา ศึกษาตัวอย่างรูปแบบการส่งผ่านค่าแบบ Pass by Pointer

ให้นักศึกษา ศึกษาตัวอย่างรูปแบบการส่งผ่านค่าแบบ Pass by Value #include <iostream.h> void exchange (int x, int y); void main () { int a = 5; int b = 9; cout << "This program attempts to exchange two values." << endl; cout << "Values before the exchange:" << endl; cout << "a= " << a << " b= " << b << endl; exchange(a, b); // code that calls the function cout << "Values after the exchange:" << endl; } // function for passing by value void exchange (int x, int y) { int temp; temp = x; x = y; y = temp; } // end exchange #include <iostream.h> void exchange (int * x, int * y); void main () { int a = 5; int b = 9; cout << "This program exchanges 2 values." << endl; cout << "Values before the exchange:" << endl; cout << "a= " << a << " b= " << b << endl; exchange(&a, &b); // code that calls the function cout << "Values after the exchange:" << endl; } // function for passing by address (or pointers) void exchange (int * x, int * y) { int temp; temp = *x; *x = *y; *y = temp; return; // Optional for void functions } // end exchange ให้นักศึกษา ศึกษาตัวอย่างรูปแบบการส่งผ่านค่าแบบ Pass by Value ให้นักศึกษา ศึกษาตัวอย่างรูปแบบการส่งผ่านค่าแบบ Pass by Pointer #include <iostream.h> void exchange (int& x, int& y); void main () { int a = 5; int b = 9; cout << "This program exchanges 2 values." << endl; cout << "Values before the exchange:" << endl; cout << "a= " << a << " b= " << b << endl; exchange(a, b); // code that calls the function cout << "Values after the exchange:" << endl; } // function for passing by reference void exchange (int& x, int& y) { int temp; temp = x; x = y; y = temp; return; // Optional for void functions } // end exchange ให้นักศึกษา ศึกษาตัวอย่างรูปแบบการส่งผ่านค่าแบบ Pass by Reference

ให้นักศึกษา ศึกษาตัวอย่างและการกำหนดตัวแปร Pointer คำสั่ง new และทำความเข้าใจ /* pointers.cpp, demonstrate use of pointers */ #include <stdlib.h> #include <iostream.h> void main() { int x, *p1, *p2; x = 1; p1 = new int; *p1 = 5; p2 = new int; *p2 = 3; cout << "p1 is " << *p1 << "\np2 is " << *p2 << "\nx is " << x << endl; x = *p2; p1 = &x; }

1.1 จงวาดรูปแสดงผลลัพธ์ที่ได้จากการใช้คำสั่งของ pointer ข้างล่างนี้ unknown x y z p main() { int x,y,z; int *p; p = &x; *p = 1; p =&y; *p = 3; p=&z; *p = y; } unknown x y z p unknown x y z p unknown x y z p Lab6-11.cpp

1.2 จงวาดรูปแสดงผลลัพธ์ที่ได้จากการใช้คำสั่งของ pointer ข้างล่างนี้ main() { int *p; p = new int; *p = 30; p=new int; *p = 40; *p = 50; delete p; } unknown p Lab6-12.cpp

1.3 จงหาผลลัพธ์จากโปรแกรมต่อไปนี้ #include <iostream.h> void main() { int x, y, *p, *q; p = new int; *p = 7; x = *p + 2; y = *p; q = new int; *q = *p / 2; *q = *q * 4; cout << x << y << *p << *q; } Lab6-13.cpp

2. จงเขียนโปรแกรมเพื่อทำการหาค่าเลขยกกำลังโดยที่ให้กรอกเลขยกกำลังและกรอกเลขชี้กำลังโดยให้เขียนฟังก์ชันชื่อ power(int x,int y) เพื่อคำนวณค่า ของ xy โดยในโปรแกรมหลักรับค่าของ x และ y โดยมีการส่งค่าแบบ Pass by Reference และ Pass by Address ตัวอย่าง Output Enter X : 3 Enter Y : 4 Value of 3 power 4 = 81 Lab6-2.cpp

3. จงเขียนโปรแกรมเพื่อรับ string แล้ว กลับ string จาก ซ้ายไปขวา ดังตัวอย่าง Lab6-3.cpp Example 1 Enter string = Hello Reverse string = olleH Example 2 Enter string = live Reverse string = evil Example 3 Enter string = abcdef Reverse string = fedcba Example 4 Enter string = fedcba Reverse string = abcdef Example 5 Enter string = stand Reverse string = dnats Example 6 Enter string = than Reverse string = nath หมายเหตุ สีเขียวแสดงข้อมูลที่ป้อน, สีแดงแสดงผลลัพธ์