1 / 31

Week 3 Data Input and Output

Week 3 Data Input and Output. Objectives. อุปกรณ์มาตรฐานในการรับข้อมูลและแสดงผลข้อมูล การรับและแสดงผลข้อมูลแบบ C++ โดยอาศัย iostream cin และ cout การกำหนดรูปแบบการแสดงผลโดยอาศัย stream manipulator และ stream format states การแสดงผลแบบภาษา C ด้วยคำสั่ง printf

neron
Télécharger la présentation

Week 3 Data Input and Output

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Week 3 Data Input and Output

  2. Objectives • อุปกรณ์มาตรฐานในการรับข้อมูลและแสดงผลข้อมูล • การรับและแสดงผลข้อมูลแบบ C++ โดยอาศัยiostream • cinและcout • การกำหนดรูปแบบการแสดงผลโดยอาศัย stream manipulator และ stream format states • การแสดงผลแบบภาษา C ด้วยคำสั่งprintf • การกำหนดรูปแบบการแสดงผลโดยอาศัย format control string

  3. Standard Input and Output • การนำข้อมูลเข้าโปรแกรมคอมพิวเตอร์ (input) • ช่องในการนำข้อมูลเข้าสู่โปรแกรม เช่นเมาส์ ไฟล์ เครือข่ายคอมฯ • Standard input device - คีย์บอร์ด • การแสดงผลลัพธ์จากการทำงานของโปรแกรม (output) • ช่องทางในการแสดง(หรือจัดเก็บ)ผลลัพธ์ เช่น ไฟล์ เครือข่าย เครืื่องพิมพ์ • Standard output device –หน้าจอคอมพิวเตอร์ • C++ สามารถรับข้อมูลเข้า และแสดงผลลัพธ์ของโปรแกรมโดยอาศัยชุดคำสั่งที่ได้สร้างไว้แล้ว และถูกจัดเก็บไว้ใน header file ที่ชื่อว่าiostream (input/output stream)

  4. C++ Input and Output with iostream • คำสั่งที่มีการใช้งานบ่อยๆ ได้แก่cinและcout • cinจะถูกใช้งานร่วมกับ right shift operator (>>) หรือถูกเรียกว่าstream extraction operator เมื่อใช้ร่วมกับcin • ใช้ในการดึงข้อมูลเข้าจาก standard input device • coutจะถูกใช้งานร่วมกับ left shift operator (<<) หรือถูกเรียกว่าstream insertion operatorเมื่อใช้ร่วมกับcout • ใช้แสดงผลลัพธ์ออกทาง standard output device • ในกรณีที่ต้องการอ่านข้อมูลเข้าจากไฟล์ หรือเขียนผลลัพธ์ที่ได้ไปเก็บในไฟล์ ต้องอาศัยชุดคำสั่งที่อยู่ใน head file ที่ชื่อว่าfstream(file stream)- ไม่ขอกล่าวถึงในเนื้อหานี้

  5. cin • ใช้ในการรับข้อมูลที่ป้อนผ่านคีย์บอร์ดมาจัดเก็บในตัวแปรที่กำหนด • ไม่จัดเก็บข้อมูลอักขระที่เป็นช่องว่าง (whitespace) • รูปแบบพื้นฐานในการใช้งาน cin>> var; • var- ตัวแปรที่จะใช้ในการจัดเก็บข้อมูล และได้มีการประกาศใช้งานแล้ว โดยC++ จะจัดเก็บข้อมูลให้ตรงตามชนิดของตัวแปร (data type) ที่ได้ประกาศ • สามารถใชัรับข้อมูลได้ทีละหลายๆตัว เช่น cin>> var1 >> var2 >> var3; • เป็นการรับข้อมูล 3 ค่าจากผู้ใช้ป้อนผ่านคีย์บอร์ด • ขณะป้อนข้อมูล ต้องแยกข้อมูลแต่ละตัวออกจากกันด้วยช่องว่าง • ข้อมูลทั้ง 3 ค่าที่ป้อน จะถูกนำมาจัดเก็บในตัวแปรทั้ง 3 ตัวตามลำดับก่อนหลัง

  6. cin • Example - การรับอินพุทต่อเนื่อง

  7. cin.get() • ใช้รับค่าอักขระ 1 ตัวอักษร ซึ่งรวมไปถึงช่องว่าง (whitespace) ต่างๆ • รูปแบบการใช้งานคือ char ch; cin.get(ch); • รับค่าอักขระ 1 ตัวแล้วนำค่าที่ได้ไปเก็บไว้ที่ตัวแปรชนิดcharที่ชื่อว่าch cin.get(); • รอรับอักขระจากคีย์บอร์ด แต่ไม่ได้นำไปใช้งานต่อ • ใช้ในกรณีที่อยากให้โปรแกรมหยุดรอการตอบสนองจากผู้ใช้ • ยังมีรูปการใช้งานแบบอื่นๆ ที่ใช้กับข้อมูลประเภทตัวแปรชุด (array) ซึ่งจะได้มีการกล่าวถึงในโอกาสต่อไป

  8. cin and string • โดยทั่วไปเราสามารถใช้cin>>varกับตัวแปรชนิดข้อความ (string) ได้เช่นกัน แต่โปรแกรมจะตัดข้อความทันทีเมื่อพบช่องว่าง

  9. cin and string • หากต้องการรับข้อความทั้งหมด รวมถึงช่องว่างต่างๆ ต้องอาศัยคำสั่งgetline() ซึ่งมีรูปแบบการใช้งานดังนี้ string string_variable; getline(cin, string_variable);

  10. cin and string • ตัวอย่าง

  11. cout • แสดงผลออกทางหน้าจออุปกรณ์คอมพิวเตอร์ • รูปแบบพื้นฐานในการใช้งาน cout<< “STRING 1” << (Math Exp) << “STRING 2”; • STRING- ข้อความ (string) ซึ่งอยู่ภายใต้เครื่องหมาย“”เช่น “This is a good day to program”<< “, “ << “let’s do it !” “C++ programming is way too easy\n\t I want to try .NET programming!!!” “I love \”C++\” and I am going to get \’A\’ for sure“ หรือendl(new line) • (Math Exp) - ตัวแปร หรือชุดคำสั่งที่ใช้คำนวณทางคณิตศาสตร์ เช่น a%3 pow(2, sqrt(1/x)) exp(4*a*b) + 4*sin(2*PI*f*t)

  12. cout • Example - การแสดง output แบบต่อเนื่องด้วย left-shift (<<)

  13. Stream Manipulators • การกำหนดรูปแบบการแสดงผลของcoutเช่น • รูปแบบการแสดงผลของข้อมูลจำนวนเต็มในรูปเลขฐานต่างๆ • ความละเอียด (precision) ของข้อมูลจำนวนทศนิยม • กำหนดความกว้างของช่องว่างประกอบการแสดงผล • การแสดงเลขฐาน (Base) • อาศัยคำสั่ง และค่าคงที่ซึ่งมีการกำหนดไว้ใน header file ชื่อ iomanip • hex(base 16) - hexadecimal • oct(base 8) - octal • dec(base 10) – decimal • setbase(base_number) - กำหนดรูปแบบเลขฐานตามbase_number • base_number - มีค่าได้เพียง 8, 10 และ 16

  14. Stream Manipulators • การแสดงเลขฐาน(ต่อ)

  15. Stream Manipulators • ความละเอียดการแสดงผลข้อมูลทศนิยม (floating-point precision) • ควบคุมจำนวนตัวเลขด้านขวาของจุดทศนิยม cout.precision(precision_number)

  16. Stream Manipulators • ความละเอียดการแสดงผลข้อมูลทศนิยม (ต่อ) setprecision(precision_number)

  17. Stream Manipulators • กำหนดขนาดช่องว่างประกอบการแสดงผล(field width) • กำหนดจำนวนหลักในการแสดงผลโดยจะแสดงผลชิดขวา (right justified) cout.width(number_of_column)

  18. Stream Manipulators • กำหนดขนาดช่องว่างประกอบการแสดงผล(ต่อ) setw(number_of_column)

  19. Stream Format States • เป็นการกำหนดรูปแบบการแสดงผลได้โดยอาศัยflagชนิดต่างๆ cout.setf(flag); หรือsetiosflags(flag);

  20. Stream Format States • การแสดงเลขศูนย์ต่อท้ายและจุดทศนิยม • โดยทั่วไปcoutจะไม่แสดงเลขศูนย์ และจุดทศนิยมของจำนวน 88.0 • หากต้องการให้แสดงค่า 88.0000 จำเป็นต้องกำหนดios::showpoint

  21. Stream Format States • การแสดงผลแบบชิดซ้ายและชิดขวา • หากมีการกำหนดช่องว่างในการแสดงผล โดยปกติการแสดงข้อความต่างๆจะอยู่ในรูปแบบชิดขวา ซึ่งเปรียบเทียบเหมือนกับการใช้งานios::right, ios::adjustfield • การแสดงผลชิดซ้าย ต้องกำหนดค่า ios::left, ios::adjustfield

  22. Stream Format States • การเติมอักขระให้เต็มพื้นที่แสดงผล (padding) cout.fill(char); หรือsetfill(char); • char - อักษรที่ต้องการนำมาเติมด้านซ้ายหรือด้านขวาของการแสดงผล • หากไม่มีการกำหนด character คำสั่งจะใช้ช่องว่าง (space) ในการเติมเต็ม

  23. Stream Format States • การแสดงข้อมูลตัวเลขรูปแบบวิทยาศาสตร์(scientific notation) • อาศัยios::scientific และios::fixed ซึ่งเป็นสมาชิกภายใต้ios::floatfield • cout.setf(0, ios::floatfield); จะถูกใช้เมื่อต้องการให้กลับไปใช้รูปแบบการแสดงผลตามปกติ (เหมือนก่อนที่จะมีการเปลี่ยนแปลง)

  24. C-Style Output using printf() • ยังมีโปรแกรมที่เขียนโดย C++ จำนวนหนึ่งยังอาศัยการแสดงข้อมูลแบบที่มีการใช้งานในภาษาCโดยอาศัยคำสั่งprintf() • การกำหนดรูปแบบการแสดงผลในคำสั่งprintf() จะอาศัยสิ่งที่เรียกว่าformat control string • รูปแบบการใช้งานprintf() printf(format_control_str, other-args);

  25. C-Style Output using printf() • การกำหนดรูปแบบการแสดงผลด้วย format control string

  26. C-Style Output using printf() • การกำหนดรูปแบบการแสดงผลด้วย format control string (ต่อ)

  27. C-Style Output using printf() • ตัวอย่าง - การแสดงตัวเลขจำนวนเต็มชิดขวา

  28. C-Style Output using printf() • ตัวอย่าง - การกำหนดความละเอียดให้จำนวนเต็มและทศนิยม

  29. Summary • C++อาศัยคำสั่งcinและcoutในการนำข้อมูลเข้าและแสดงข้อมูลตามลำดับ โดยคำสั่งเหล่านี้ถูกเก็บอยู่ใน header file ชื่อiostream • cinใช้งานร่วมกับ stream extractor operator (>>) • coutใช้งานร่วมกับ stream insertion operator(<<) • cin.get() จะใช้ในการดึงข้อมูลอักขระทีละ 1 ตัวอักษร • getline()ใช้ในการดึงข้อความได้เช่นเดียวกับcinแต่จะไม่หยุดการทำงานเมื่อพบช่องว่าง (whitespace) • ดึงข้อความได้เป็นประโยค รวมทั้งช่องว่างต่างๆด้วย

  30. Summary • coutใช้stream manipulatorหรือstream format statesในการกำหนดรูปแบบการแสดงผลลักษณะต่างๆ • รูปแบบต่างๆได้ถูกกำหนดไว้ใน header file ชื่อiomanip • Stream format states นั้นถูกกำหนดอยู่ในลักษณะของflagที่กำหนดใช้งานด้วยคำสั่งcout.setf(flag)หรือsetiosflags(flag) • การแสดงผลแบบภาษาCจะอาศัยคำสั่งprintf() โดยจะอาศัยformat control stringในการกำหนดรูปแบบการแสดงผล • การเลือกใช้control characterต้องเลือกใช้งานให้สอดคล้องกับข้อมูลที่ต้องการแสดงผล

  31. Reference Links • Tenouk’sProgramming Tutorials: • C Formatted I/O Programminghttp://www.tenouk.com/Module5.html • C++ Stream Formatted I/Ohttp://www.tenouk.com/Module18.html

More Related