ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
หลักสูตรวิทยาการคอมพิวเตอร์ คณะวิทยาการสารสนเทศ
ความรู้พื้นฐานการเขียนโปรแกรมภาษาC++ (Introduction to C++ Programming) Problem Solving หลักสูตรวิทยาการคอมพิวเตอร์ คณะวิทยาการสารสนเทศ
2
คุณต้องการที่จะควบคุมการทำงานของคอมพิวเตอร์หรือไม่?
คุณเคยทำงานตามที่คอมพิวเตอร์กำหนดให้คุณทำตามหรือไม่? คุณต้องการที่จะควบคุมการทำงานของคอมพิวเตอร์หรือไม่? ถ้าต้องการ คุณต้องตีโจทย์ให้แตก วิเคราะห์โจทย์ให้เป็น เขียนโปรแกรมคอมพิวเตอร์ให้ได้ <บทที่ 8 ส่วนที่ 1>
3
ความรู้พื้นฐานภาษา C++
C++ Programming Language รูปแบบ/โครงสร้างการเขียนโปรแกรมภาษา C++ การกำหนดชื่อ (Identifiers) และคำสำคัญ (Keywords) ข้อมูลและตัวแปร (Data and Variables) ชนิดข้อมูล (Data Type) การประกาศค่าตัวแปร/ค่าคงที่ (Variable Declaration) Operators การแสดงผลทางจอภาพ & การนำข้อมูลเข้าทางแป้นพิมพ์ คำสั่งใน Header file ที่สำคัญ <บทที่ 8 ส่วนที่ 1>
4
C++ Programming Language
Efficiency โปรแกรมภาษา High level เหมือนโปรแกรมภาษา Assembly ที่สนับสนุน การอ้างอิงที่อยู่ (Address) การอ้างอิง Register การอ้างอิง/ใช้งานระดับ Bit และ Byte มีจุดเด่นเรื่องการอ้างอิง Pointer สร้างโปรแกรม Execute ที่มีขนาดเล็กและทำงานรวดเร็ว รองรับการเขียนโปรแกรมทั้งแบบ Structural และ Object Oriented Program (OOP) สามารถนำไปประยุกต์ใช้งานในหลากหลาย platforms <บทที่ 8 ส่วนที่ 1>
5
การสร้างโปรแกรม C++ Compile Link Load Input Process Output
myProgram.obj Machine Language Compile System Library .lib, .dll Input Object Code/ Machine Code Compiler Linker TCC Link myProgram.cpp #include <stdio.h> int main() { cout << “Hello”; return 0; } Process Loader myProgram.exe Load Execute File Output Source Code Text Editor Start here! <บทที่ 8 ส่วนที่ 1>
6
C++ Environment Text Editor Compiler Include files Library files
โปรแกรมที่ใช้สำหรับเขียน/แก้ไข C++ source code อาจใช้ Notepad, Editplus, Dev-C++ เป็นต้น ในที่นี้ใช้ Dev-C++ ซึ่งจะมีเครื่องมือช่วยเหลือทำให้เขียนได้ง่ายขึ้น Compiler แปลง C++ source code ให้เป็น machine language Include files ไฟล์ที่เก็บค่าสำคัญ หรือคำสั่งต่างๆใน C++ โดยอาจถูกเรียกใช้ในโปรแกรม Library files ประกอบด้วย function ต่างๆ หรือ program ที่ถูก compile ไว้เรียบร้อย แล้ว สามารถนำ function เหล่านี้มาใช้ใน C++ source code ได้ Linker รวมส่วนต่างๆ ของโปรแกรมที่จำเป็น ได้แก่ Include files, Library files, System files และ Modules ต่างๆ เพื่อจะสร้าง Execute file <บทที่ 8 ส่วนที่ 1>
7
รูปแบบการเขียนโปรแกรมภาษา C++
Preprocessor directives นิยามตัวแปรโกลบอล int main() { นิยามตัวแปรโลคอล คำสั่ง } // ฟังก์ชัน main int function1( ) Statements } // ฟังก์ชั่น function1 function2( ) { … } // ฟังก์ชั่น function2 #include <stdio.h> char ch; int main() { int a; show(); return 0; } // main void show( ) { int a=1; printf(“Hello ”,a); } // function show … <บทที่ 8 ส่วนที่ 1>
8
ตัวอย่างโปรแกรม Source code ผลลัพธ์
<บทที่ 8 ส่วนที่ 1>
9
รูปแบบการเขียนโปรแกรมภาษา C++
ส่วนหัวของโปรแกรม (Header, Preprocessor Directive, #) ประกาศโดยใช้ # เพื่อเรียกใช้คำสั่งที่มีอยู่ใน Library ของภาษา C++ เพื่อนิยามค่าคงที่ หรือค่าตัวแปรบางตัว หรือคำสั่ง macro การประกาศตัวแปรโกลบอล (Global Definition) เป็นตัวแปรที่ประกาศไว้ตอนเริ่มต้นโปรแกรม สามารถเรียกใช้งานได้ทุกๆ ส่วนของโปรแกรม ฟังก์ชัน main [ int main() {…………return 0;} ] เป็นจุดเริ่มต้นของการทำงานของโปรแกรม ประกอบด้วยการประกาศตัวแปรต่างๆ และคำสั่ง การประกาศตัวแปรโลคอล (Local Definition) อธิบายตัวแปรภายในฟังก์ชัน ประโยคคำสั่ง (Statements) คำสั่งบอกให้คอมพิวเตอร์ทำงานตามที่ต้องการ <บทที่ 8 ส่วนที่ 1>
10
ประโยคคำสั่ง (Statement)
ประโยคคำสั่ง 1 คำสั่งจะต้องจบด้วยเครื่องหมาย semicolon “ ; ” Block Statement ได้แก่ { … } ซึ่งประกอบด้วยคำสั่งหลายๆ คำสั่งภายใน Block statement นั้นๆ int i = 80; printf(“something” ); printf(“number =”, i); if (a<5) a=a+1; { a = 5; b = 10; printf(“%d”, a+b); } Block statement <บทที่ 8 ส่วนที่ 1>
11
Functions main() ทุกๆ โปรแกรมจะต้องมีฟังก์ชั่น main()
เป็นฟังก์ชันที่มีรูปแบบดังนี้ int main() { … return 0; } จะต้องเขียนคำสั่งอยู่ภายใต้ block statement { } ( ) แสดงการกำหนดค่าพารามิเตอร์ (parameter) ใดๆ สองส่วนนี้จะต้องมาคู่กันเสมอ และ ทุกๆ คำสั่ง จะต้องอยู่ภายในปีกกา {…} ยกเว้น คำสั่ง int main() ซึ่งเป็นชื่อของฟังก์ชันหลัก ที่คอมพิวเตอร์จะเข้ามาทำงานเป็นส่วนแรก <บทที่ 8 ส่วนที่ 1>
12
Library Files & Preprocessor Directives
Preprocessor directive (#) คือสัญลักษณ์ที่แสดงว่าไม่ต้องการ execute คำสั่ง แต่จะถูกจัดการโดย compiler เรียกใช้ Library files ที่มีนามสกุล “.h” ที่มีมากับภาษา C++ หรือ user สร้างขึ้น Header file เหล่านี้จะถูกนำเข้ามาเป็นส่วนหนึ่งของโปรแกรม macro & define ไฟล์ดังกล่าวอยู่ใน Folder TC\INCLUDE #include <stdio.h> #define MAX 100 int main() { ... return 0; } // end main #include < ชื่อไฟล์.h> Preprocessor Directive #define ชี่อนิยาม ค่าตัวแทน <บทที่ 8 ส่วนที่ 1>
13
การเขียนคำอธิบายโปรแกรม (Comment)
คำอธิบายโปรแกรม (comment) คือ ข้อความเพิ่มเติมที่ไม่มีผลกระทบต่อ Source Code นิยมใช้สำหรับอธิบาย Source Code หรือ Debug (คำสั่งที่ไม่ต้องการให้ Compiler ทำงาน) Line Comment ใช้เครื่องหมาย // นำหน้าข้อความที่ต้องการ Comment Block Comment ใช้เครื่องหมาย /* */ ครอบข้อความที่ต้องการ Comment Block Comment Line Comment <บทที่ 8 ส่วนที่ 1>
14
โปรแกรมแรก FirstProgram.cpp Compile&run F9 Preprocessor part
ปล. จะต้องมีคำสั่ง getch(); ด้วยเพื่อให้ หน้าจอผลลัพธ์ค้าง จนกว่าจะกดคีย์ใดๆ จึง กลับมาที่ Source Code !! getch(); ต้องมี header file >conio.h Preprocessor part Main program FirstProgram.cpp Compile&run F9 Output ปล. ให้อาจารย์พานิสิตสร้าง FirstProgram.cpp ใน Dev-C++ ตามรูปแบบตัวอย่างไฟล์นี้ <บทที่ 8 ส่วนที่ 1>
15
ตัวอย่างการแสดงผลทางจอภาพ
ข้อความ ตัวเลข ตัวแปร printf(“Your name is %s, and has age %d”,name,age); ข้อความ ข้อความ ตัวแปร printf(“ข้อความ [%รูปแบบ1 %รูปแบบ2 %รูปแบบn]”[, argu1, argu2, …]); <บทที่ 8 ส่วนที่ 1>
16
การแสดงผลทางจอภาพเมื่อมีหลายค่า
คำสั่งในการแสดงผลต้องการข้อมูลที่เป็นข้อความ (String) เพื่อนำไปแสดงบนจอภาพ สามารถส่งข้อมูลที่เป็น Integer หรือตัวแปรมาร่วมด้วยโดยใช้เครื่องหมาย “%” ในการกำหนดรูปแบบในข้อความ แล้วส่งตัวแปรที่เป็น Argument list ไปแสดงตามรูปแบบของข้อมูลที่กำหนดด้วย “%” String ซึ่งอยู่ภายในเครื่องหมายคำพูด ค่าของตัวแปร Integer Output ค่าของตัวแปร Integer เครื่องหมาย % ที่ใช้กำหนดรูปแบบการแสดงผล <บทที่ 8 ส่วนที่ 1>
17
Program with a Variable
การเขียนโปรแกรมทุกภาษา โปรแกรมส่วนใหญ่จะมีการสร้างตัวแปรและใช้งานตัวแปรเสมอ ชนิดตัวแปรเก็บข้อความตัวอักษร ค่าที่เก็บในตัวแปร ข้อความต้องมี “ ” ตัวแปร ชื่อว่า name ปล.อย่าลืม getch(); เพื่อรอดูผลลัพธ์ด้วย <บทที่ 8 ส่วนที่ 1>
18
Program with two Variables
สตริง(String) ปรากฏ ซึ่งจะดึงค่ามาจากตัวแปรทางขวามือ หลังเครื่องหมาย “, เรียงตามลำดับ ซ้ายไปขาว %s ตัวแรก หมายถึง ข้อมูลจากตัวแปร name1 %s ตัวที่สอง หมรยถึง ข้อมูลจากตัวแปร name2 <บทที่ 8 ส่วนที่ 1>
19
Example 1 เมื่อมีการสลับตำแหน่งตัวแปร ค่าที่แสดง
บนหน้าจอผลลัพธ์ก็จะสลับตามไปด้วย %s ตัวแรก หมายถึง ข้อมูลจากตัวแปร name2 %s ตัวที่สอง หมรยถึง ข้อมูลจากตัวแปร name1 <บทที่ 8 ส่วนที่ 1>
20
Example 2 printf(“C++ have fun\n”);
มีการประกาศตัวแปร แต่ไม่นำไปใช้งาน ถือว่าผิดหรือไม่? ถ้าอยากให้ข้อความ “IT Student” แสดงที่หน้าจอผลลัพธ์ จะต้องทำอย่างไร กับคำสั่ง ด้านล่างนี้ และสามารถทำได้กี่แบบ printf(“C++ have fun\n”); <บทที่ 8 ส่วนที่ 1>
21
What wrong with these programs? Ex1-Ex2
Class HelloWorld.java ผิด Ex2 <บทที่ 8 ส่วนที่ 1>
22
What wrong with these programs? : Ex3-Ex4
<บทที่ 8 ส่วนที่ 1>
23
What wrong with these programs? : Ex5-Ex6
Class Public Static Void Ex6 <บทที่ 8 ส่วนที่ 1>
24
Answers: What wrong questions?
Ex1 : printf(“C++ have fun\n”) Ex5 : include <stdio.h> แก้เป็น แก้เป็น printf(“C++ have fun\n”); #include <sidio.h> Ex2 : int Main() Ex6 : int main() แก้เป็น { int main() Ex3 : Printf(“C++ have fun\n”); return 0; แก้เป็น แก้เป็น (สังเกต หลัง printf(“C++ have fun\n”); return 0; ขาดอะไร) Ex4 : char name = “IT Student”; int main() แก้เป็น { char name[] = “IT Student”; return 0; หรือ } char name[15] = “IT Student”; <บทที่ 8 ส่วนที่ 1>
25
Identifiers การตั้งชื่อให้กับสิ่งต่างๆ ต่อไปนี้ในโปรแกรม
ตัวแปร (Variable) ค่าคงที่ (Constant) ฟังก์ชั่น (Function) ชนิดข้อมูล (Data type) ประเภทของ Identifier Keyword/Reserve Word หมายถึงคำสงวน เป็นคำที่ถูกกำหนดไว้โดย compiler ซึ่งไม่สามารถตั้งซื่อซ้ำกับคำเหล่านี้ได้ Standard Identifiers เป็นชื่อที่ถูกสร้างไว้คู่กับ compiler แต่สามารถเปลี่ยนแปลงแก้ไขคำสั่งได้ ซึ่งคำเหล่านี้มักจะมีใช้ใน header file เช่น abort, getch, printf, scanf เป็นต้น User-defined Identifiers คือชื่อที่ผู้ใช้สร้างขึ้นเองภายหลัง โดยการสร้างต้องทำตามกฎของการตั้งชื่อ <บทที่ 8 ส่วนที่ 1>
26
กฎการตั้งชื่อตามหลักสากล
ตัวแรกต้องเป็นตัวอักษร หรือ underscore (_) เท่านั้น ประกอบด้วยตัวอักษร, ตัวอักษรปนตัวเลข หรือปนเครื่องหมาย underscore (_) ได้ ห้ามมีเครื่องหมายอื่นๆ ปน ยกเว้น (_) และห้ามเว้นวรรค กำหนดความยาวได้ไม่จำกัด แต่ Compiler จะรู้ความแตกต่างได้ไม่เกิน 32 ตัวอักษร ห้ามตั้งชื่อซ้ำกับคำสงวน (Reserve word) การใช้ตัวอักษรตัวใหญ่และตัวเล็กต่างกัน ก็ให้ความหมายต่างกัน เช่น YEAR, Year, year ข้อสังเกตในการตั้งชื่อ เรานิยมตั้งชื่อตัวแปร เป็นตัวอักษรตัวเล็ก ชื่อ ค่าคงที่ ใช้อักษรตัวใหญ่ และ ชื่อฟังก์ชัน นิยมขึ้นต้นด้วยตัวอักษรตัวเล็ก ปกติ Reserve word มักใช้ underscore ขึ้นต้น จึงควรเลี่ยงการตั้งชื่อโดยใช้ underscore ขึ้นต้น การตั้งชื่อให้มีความหมายและเข้าใจง่าย เช่น length ง่ายกว่า L เป็นต้น <บทที่ 8 ส่วนที่ 1>
27
Keyword asm auto bool break case catch char class
const const_cast continue default delete do double dynamic_cast else enum explicit extern false float for friend goto if inline int long mutable namespace new operator private protected public register reinterpret_cast return short signed sizeof static static_cast sturct sqitch template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t <บทที่ 8 ส่วนที่ 1>
28
ตัวอย่างการตั้งชื่อตามหลักสากล
ThisIsOkey student_name stdntNm _aSystemName Its4me TRUE caseno _std_ LITTLEMORE std_1001 long_ident 10student std%of for isover? static protected my december a+b true Stdnt-nmbr double while เพราะมีตัวเลขขึ้นต้น เพราะมีสัญลักษณ์พิเศษ % เพราะเป็น Keyword เพราะมีสัญลักษณ์พิเศษ ? เพราะมี Spacebar เพราะมีสัญลักษณ์พิเศษ + เพราะมีสัญลักษณ์พิเศษ - <บทที่ 8 ส่วนที่ 1>
29
ข้อมูลและตัวแปร (Data and Variables)
ตัวแปร (Variable) คือ สัญลักษณ์แทนหน่วยความจำ (Memory) ในคอมพิวเตอร์ โดยมี Compiler เป็นผู้ที่ทำหน้าที่กำหนดตำแหน่งที่อยู่ (Address) และขนาดของพื้นที่ที่ใช้เก็บข้อมูล ค่าข้อมูล (Data Values) แบ่งออกเป็น 2 ชนิด คือ ข้อมูลที่ไม่ใช่ตัวเลข(Non-numeric) ได้แก่ ตัวอักษร, ข้อความ, ตรรกะ ข้อมูลที่เป็นตัวเลข (Numeric) ได้แก่ Integer, Floating-point (Real), ตัวแปรหนึ่งตัวเก็บข้อมูลได้เพียงชนิดเดียวเท่านั้น <บทที่ 8 ส่วนที่ 1>
30
ชนิดข้อมูล (Data Type)
ความหมาย ค่าต่ำสุด ค่าสูงสุด ขนาด (byte) char unsigned char ชนิดตัวอักษร แบบมีเครื่องหมาย แบบไม่มีเครื่องหมาย -128 127 255 1 ชนิดตัวเลขจำนวนเต็ม short unsigned short -32768 32767 65535 2 int unsigned int ขึ้นกับ OS ถ้าเป็น Dos 2 bytes ขนาดเหมือน short ส่วน Unix/ Windows 4 bytes เหมือน long 2/4 long unsigned long 4 float ชนิดตัวเลขทศนิยม (7 digits) 3.4 x 10-38 3.4 x 1038 double ชนิดตัวเลขทศนิยมขนาด 2 เท่า (17 digits) 1.7 x 1.7 x 10308 8 long double ชนิดตัวเลขทศนิยมขนาดใหญ่ (19 digits) 3.4 x 3.4 x 10 bool ชนิดบูลีนหรือตรรกะ true/false <บทที่ 8 ส่วนที่ 1>
31
การกำหนดค่าให้กับตัวแปร/ค่าคงที่
ค่าคงที่ (Constant) ในภาษา C/C++ สามารถกำหนดให้มีตัวแปรสำหรับเก็บค่าคงที่ได้ โดยค่าที่กำหนดเปลี่ยนแปลงไม่ได้ ชนิดข้อมูลที่เป็นจำนวนเต็ม (Integer) ต้องไม่ใช้เครื่องหมาย , (comma) คั่น เช่น 10,000 ตัวแปรที่เก็บเลขจำนวนเต็มจะกำหนดค่าให้เป็นจุดทศนิยมไม่ได้ ค่าข้อมูลที่กำหนดให้กับตัวแปรประเภท long จะมี L ลงท้ายเสมอ เพราะ default ของข้อมูลจะเป็น int ได้แก่ 1177, 707L, -111, 0xF0 (hex) , 017 (oct) ชนิดข้อมูลที่เป็นจำนวนจริง (Floating point) ต้องไม่ใช้เครื่องหมาย , (comma) คั่น เช่น 10,000.55 ค่าข้อมูลที่กำหนดให้กับตัวแปรประเภท float จะมี F ลงท้ายเสมอ เพราะค่า default ของข้อมูลเป็น double ได้แก่ , 1.6e-19, 2.545F ชนิดข้อมูลที่เป็นตรรกะ (Boolean) true แสดงผลเป็น 1 false แสดงผลเป็น 0 <บทที่ 8 ส่วนที่ 1>
32
การกำหนดค่าให้กับตัวแปร/ค่าคงที่
ชนิดข้อมูลที่เป็นตัวอักษร ชนิดข้อมูล char ต้องเขียนอยู่ใน ‘ ’ (Single quote) char ch = ‘A’; ชนิดข้อมูล char สามารถกำหนดเป็นค่าจำนวนเต็มได้ char ch = 65; ชนิดข้อมูล String ต้องเขียนอยู่ใน “ ” (Double quate) char str[] = “Rapeeporn” สามารถใช้ Escape Sequence ในการกำหนดค่าตัวอักษรได้ เช่น <บทที่ 8 ส่วนที่ 1>
33
การประกาศค่าคงที่ สามารถประกาศได้ 2 วิธี Ex. #define NEWLINE ‘\n’
#define identifier ค่าคงที่ Ex. #define NEWLINE ‘\n’ #define PI #define MAX const ชนิดข้อมูล identifier = ค่าคงที่; Ex. const float pi = ; const char tab = ‘\n’; const int max = 100; <บทที่ 8 ส่วนที่ 1>
34
Example of #define PI <บทที่ 8 ส่วนที่ 1>
35
Example of #define and const
<บทที่ 8 ส่วนที่ 1>
36
Variable Declaration & Assignment Value
ชนิดข้อมูล identifier1 [, identifier2, ...] ; ตัวอย่างการประกาศตัวแปร int a; int a, b, c; float tax; unsigned short x; char code; ชนิดข้อมูล identifier = ค่าเริ่มต้น; ตัวอย่างการประกาศตัวแปรพร้อมกำหนดค่าเริ่มต้น int a = 5; float tax = 0.07; char code = ‘c’; ตัวอย่างการประกาศตัวแปร และกำหนดค่าเริ่มต้นภายหลัง int a; a=5; float tax; tax = 0.07; ชนิดข้อมูล identifier; identifier = ค่าเริ่มต้น; <บทที่ 8 ส่วนที่ 1>
37
Variable Declaration & Assignment Operator
ให้นำค่าทางขวาของเครื่องหมาย = ไปเก็บในตัวแปรที่อยู่ทางซ้ายมือ (ซ้าย ขวา) ตัวแปร = นิพจน์ numOfStudent = 50; areaCycle = PI*r*r; vatReturned = calVAT(price); 50 = numOfStudent; PI*r*r = areaCycle; calVAT(price) = vatReturned; ปล.จำไว้ว่า....ทางซ้ายจะต้องเป็นตัวแปร 1 ตัวเท่านั้น <บทที่ 8 ส่วนที่ 1>
38
คำสั่งการแสดงผลด้วย printf()
ฟังก์ชัน printf() จะต้อง include ไฟล์ stdio.h ก่อน รูปแบบการใช้คำสั่งและรูปแบบการแสดงผล (Placeholder) %c แสดงผลตัวอักษร %d แสดงผลตัวเลขจำนวนเต็มฐานสิบ %o แสดงผลตัวเลขจำนวนเต็มฐานแปด %x แสดงผลตัวเลขจำนวนเต็มฐานสิบหก %e แสดงผลตัวเลขวิทยาศาสตร์ %f แสดงผลตัวเลขทศนิยม %p แสดงผล Pointer %s แสดงผลข้อความ (String) %% แสดงเครื่องหมาย % ถ้าต้องการให้ Cursor ขึ้นบรรทัดใหม่ให้ใช้ “\n” กำกับทุกครั้งในตำแหน่งที่ต้องการให้ขึ้นบรรทัดใหม่ printf(“ข้อความ [%รูปแบบ1 %รูปแบบ2 %รูปแบบn]”[, argu1, argu2, …]); <บทที่ 8 ส่วนที่ 1>
39
Example 3 #include <stdio.h> int main( ) { short st; int in;
long ln; float ft; double db; char ch; bool bo; char str[6]; printf("short = %d\n",st); printf("int = %d\n",in); printf("long = %d\n",ln); printf("float = %f\n",ft); printf("double = %f\n",db); printf("char = %c\n", ch); printf("bool = %d\n", bo); printf("string = %s\n", str); return 0; } <บทที่ 8 ส่วนที่ 1>
40
ลองสร้างโปรแกรมนี้ดูกัน!!
ปล. นิสิตลองทดสอบดูซิว่าผลลัพธ์ที่ได้แต่ละ คนจะเหมือนกัน หรือต่างกัน ที่คำสั่งใดบ้าง? ให้สังเกตการใช้ % จะต้องสอดคล้องกับ ชนิดข้อมูลที่ประกาศไว้ด้วย <บทที่ 8 ส่วนที่ 1>
41
Example 4 #include <stdio.h> int main( ) {
short st=100; int in=65538; long ln= ; float ft= F; double db= ; char ch='A'; bool bo=true; char str[6]="Rapee"; printf("short = %d\n",st); printf("int = %d\n",in); printf("long = %d\n",ln); printf("float = %f\n",ft); printf("double = %f\n",db); printf("char = %c\n", ch); printf("bool = %d\n", bo); printf("string = %s\n", str); return 0; } <บทที่ 8 ส่วนที่ 1>
42
ลองปรับโปรแกรมเดิม..มาเป็นแบบนี้นะ
ปล. ข้อมูลแบบ bool มีค่าเริ่มต้น คือค่าใด (0,1) สังเกตจาก slide ที่ผ่านมานะ!! ปล. สังเกต ขนาดตัวแปรแต่ละชนิดว่ารองรับ ข้อมูลได้มากน้อยเท่าใด <บทที่ 8 ส่วนที่ 1>
43
ตัวดำเนินการ (Operators)
เครื่องหมายที่ใช้ในการกระทำการใดๆ ระหว่างตัวกระทำการ (Operand) ตัวอย่าง int a = 100, b= 20; int x = a + b; a + b เรียกว่า นิพจน์ (Expression) + เรียกว่า Operator a และ b เรียกว่า Operand ประเภทของ Operators Arithmetic Operator ใช้ในการคำนวณ Relational Operator ใช้ในการเปรียบเทียบค่า Logical Operator ใช้ดำเนินการทางตรรก <บทที่ 8 ส่วนที่ 1>
44
Arithmetic Operators เครื่องหมายที่ใช้ในการคำนวณทางคณิตศาสตร์
Binary Operator ได้แก่ * / % Unary Operator ได้แก่ - ตัวอย่าง int x = 10, y=4; a = x+y; // a=14 b = x-y; // b=6 c = x*y; // c=40 d = x/y; // d=2 (int หาร int ผลลัพธ์ไม่มีเศษ) e = x%y; // e=2 (mod(%)คือการหารเอาเศษ) f = -x; // f=-10 Program is at next page… <บทที่ 8 ส่วนที่ 1>
45
ตัวอย่างผลลัพธ์การคำนวณ
<บทที่ 8 ส่วนที่ 1>
46
Assignment Variations
int main( ) { int sum = 1; int mul = 5; sum = sum +10; mul = mul * 2 ; return 0; } 1 2 1 11 4 10 3 5 ปล. สังเกต ค่าตัวแปรที่เกิดขึ้น ทางซ้ายมือ และทางขวามือ ว่ามีค่าต่างกันอย่างไร และเหตุการณ์ใดเกิดขึ้นก่อน หรือ หลัง <บทที่ 8 ส่วนที่ 1>
47
Example 5 #include <stdio.h> int main() { int a, b, c; b = 15;
printf("B = %d \tC = %d\n",b,c); a = b+c; printf("B+C = %d\n",a); a = b-c; printf("B-C = %d\n",a); a = b*c; printf("B*C = %d\n",a); a = b/c; printf("B/C = %d\n",a); a = b%c; printf("B%%C = %d\n",a); return 0; } <บทที่ 8 ส่วนที่ 1>
48
โปรแกรมและผลลัพธ์ ปล. สังเกตการใช้ %%, \t, \n
<บทที่ 8 ส่วนที่ 1>
49
Example 6 #include <stdio.h> int main() { float a, b, c, d;
b = 10.8f; c = 4.2f; d = 20.0f; printf("B = %f \tC = %f \tD = %f \n", b, c, d); a = b+c-d; printf("B+C-D = %f \n",a); a = b*c-d; printf("B*C-D = %f \n",a); a = b/c*d; printf("B/C*D = %f \n",a); return 0; } ทดลองดูนะ ว่าผลลัพธ์ได้อย่างไร? เครื่องหมายใดจะถูกประมวลผลก่อน หรือ หลัง ที่สำคัญ!! นิสิตได้คำตอบเดียวกับคอมพิวเตอร์ หรือไม่?? <บทที่ 8 ส่วนที่ 1>
50
Example 7 (การหาขนาดข้อมูลด้วย sizeof())
#include <stdio.h> #include <conio.h> int main( ) { short st; int in; long ln; float ft; double db; char ch; bool bo; char str[6]="Rapee"; printf("size of short = %d\n",sizeof(st)); printf("size of int = %d\n",sizeof(in)); printf("size of long = %d\n",sizeof(ln)); printf("size of float = %d\n",sizeof(ft)); printf("size of double= %d\n",sizeof(db)); printf("size of char = %d\n",sizeof(ch)); printf("size of bool = %d\n",sizeof(bo)); printf("size of string = %d\n",sizeof(str)); // สังเกตุผลลัพธ์ที่ออกมาด้วยว่ามีค่าเท่าใด printf("size of short = %d\n",sizeof(123456)); printf("size of int = %d\n",sizeof( )); printf("size of long = %d\n",sizeof( L)); printf("size of float = %d\n",sizeof( F)); printf("size of double= %d\n",sizeof( )); printf("size of char = %d\n",sizeof('c')); printf("size of string = %d\n",sizeof("CS")); getch(); return 0; } ปล. ข้อมูลสตริง char str[6] จองไว้ 6 แต่ใช้ได้ 5 เพราะมี ‘\0’ ที่ตำแหน่งสุดท้ายเพื่อบอกจุดสิ้นสุดของข้อมูล <บทที่ 8 ส่วนที่ 1>
51
ตัวอย่างการจัดรูปแบบเพิ่มเติม
<บทที่ 8 ส่วนที่ 1>
52
ผลลัพธ์ จะได้เป็น boolean เสมอ
Relational Operators เครื่องหมาย (เท่ากับ) , != (ไม่เท่ากับ) , , (มากกว่าหรือเท่ากับ), , (น้อยกว่าหรือเท่ากับ) คือเครื่องหมายในการเปรียบเทียบค่า 2 ค่า ว่ามีค่าเป็นอย่างไร ผลลัพธ์ที่ได้จะเป็น boolean เท่านั้น มักใช้ในประโยคคำสั่งควบคุม เช่น if, while, for เป็นต้น ผลลัพธ์ จะได้เป็น boolean เสมอ <บทที่ 8 ส่วนที่ 1>
53
Example 8 #include <stdio.h> #include <conio.h> int main()
{ int x = 5; int y = 4; bool b1, b2; b1 = (x != y); // นำผลลัพธ์ที่ได้จาก x != y ไปเก็บที่ตัวแปร b1 printf("x not equal y is %d \n" , b1); printf("y less than 0 is %d \n" , (y<0)); printf(" 'A' less than 'B' is %d \n" , ('A'<'B')); return 0; } <บทที่ 8 ส่วนที่ 1>
54
ตัวอย่างโปรแกรมแบบ Boolean
<บทที่ 8 ส่วนที่ 1>
55
Logical Operators เครื่องหมาย
&& (AND) || (OR) ! (NOT) คือเครื่องหมายที่กระทำการแบบตรรกะ ผลลัพธ์จะได้เป็น boolean เสมอ ตัวอย่าง int a = 0, b=1, c; c = a && b; c = a || b; c = !a; c = !a && b; result of variable c 1 <บทที่ 8 ส่วนที่ 1>
56
การทำงานกับข้อมูลชนิด bool
ใช้ในการเก็บค่าที่เป็น True หรือ False อย่างใดอย่างหนึ่งเท่านั้น ส่วนใหญ่จึงมักใช้ในการทดสอบเงื่อนไขว่า “จริง” หรือ “เท็จ” รูปแบบ bool ตัวแปร = true/false; ตัวอย่าง bool lighton = true; bool finished = false;; <บทที่ 8 ส่วนที่ 1>
57
Example 9 #include <stdio.h> int main() {
int x = 0; bool a = false; if (x==1) { printf("x = %d \n", x); x = x+1; } if ((x>=1) && !a) { printf("a = %d \n", a); printf("!a = %d \n", !a); return 0; นิสิตคิดว่า...โปรแกรมนี้จะได้ผลลัพธ์ใด?? จากตัวอย่างนี้ จะต้องปรับคำสั่ง หรือส่วนงานใดในโปรแกรม จึงจะทำให้ได้ผลลัพธ์ดังแสดง <บทที่ 8 ส่วนที่ 1>
58
ลำดับความสำคัญของเครื่องหมาย Priority of operators
( ) วงเล็บสำคัญที่สุด ! Unary Not (Logic Operator) (type) Type casting - Unary sign *, /, % Arithmetical Operators +, - Arithmetical Operators <, <=, >, >= Relational Operators ==, != Relational Operators && Logic Operator || Logic Operator <บทที่ 8 ส่วนที่ 1>
59
Precedence Example 1 (Arithmatics) Example2 (Logical)
Define a=0, b=1, c=1 2 * (3+4) 2 * 3 + 4 a && (!b || c) a && !b || c + * ! ! 7 6 || + && * 1 14 10 || && 1 <บทที่ 8 ส่วนที่ 1>
60
การทำงานกับข้อมูลชนิด char
เก็บค่าตัวอักษร 1 ตัว ดังนั้น จึงใช้เนื้อที่เพียง 1 Byte ในการเก็บข้อมูล char T_ShirtSize = ‘s’; // เก็บตัวอักษร s char numChar = ‘4’; // เก็บตัวอักษร 4 คำอธิบาย ตัวเลขที่ใช้ในตัวแปร numChar จะนำมาคำนวณไม่ได้ เนื่องจากกำหนดชนิดไว้เป็น char แต่ถ้าต้องการคำนวณจะต้องกำหนดเป็นแบบ short, int, long <บทที่ 8 ส่วนที่ 1>
61
Example 10 #include <stdio.h> int main() {
char ch_H, ch_e, ch_l, ch_o; ch_H = 72; //ASCII for 'H' ch_e = 101; //ASCII for 'e' ch_l=108; //ASCII for 'l' ch_o=111; //ASCII for 'o' printf("%c",ch_H); printf("%c",ch_e); printf("%c",ch_l); printf("%c",ch_o); printf(" World\n"); return 0; } <บทที่ 8 ส่วนที่ 1>
62
Example 11 /* this program calculates the volume of a cylinder,
given its radius and height */ #include <stdio.h> int main() { float radius, volume; float height =16.0; radius = 3.7; volume = * radius * radius * height; printf("The volume of the cylinder is %f\n“,volume); return 0; } <บทที่ 8 ส่วนที่ 1>
63
Exercise 1 จงหาผลลัพธ์ที่ได้ของนิพจน์ต่อไปนี้ ‘A’ > ‘C’ ‘B’ != ‘C’
‘E’ == ‘F’ 2.0>=3.3 5. a = 12.0, b=2.0, i = 15, j=30, complete = 0.0 5.1 a > b 5.2 (i == j) || (a < b) || complete 5.3 (a/b > 5) && (i <= 20) 6. (6 * 3 == 36 / 2) || (13 < 3 * 3 + 4) && !(6 – 2 < 5) <บทที่ 8 ส่วนที่ 1>
64
Exercise 2 (การทำงานแบบลำดับ)
A. จาก Flow Chart เรื่องการ swap ค่าจงเขียนโปรแกรมด้วยภาษา C++ จากตัวอย่างนี้ ลองสลับค่าโดยไม่ใช้ตัวแปร Temp แล้วเป็นอย่างไร START STOP <บทที่ 8 ส่วนที่ 1>
65
Exercise 2 (การทำงานแบบลำดับ)
B.จากโจทย์ต่อไปนี้ จงเขียนโปรแกรมเพื่อแสดงผลลัพธ์ 1. 2. โรงสีแห่งหนึ่งรับข้าวสารมาจำนวนหนึ่ง (กิโลกรัม) และต้องการบรรจุข้าวสารใส่กระสอบ กระสอบละ 10 กิโลกรัม จงหาว่าจะสามารถบรรจุข้าวสารใส่กระสอบได้จำนวนกี่กระสอบ และมีข้าวสารเหลืออยู่กี่กิโลกรัม 3. จงหาค่า X2 เมื่อ X มีค่าเท่ากับ 25 กำหนดขั้นตอนการทำงาน เริ่มต้น กำหนดค่า num1=10, num2=15.5, num3=23.78 คำนวณค่าผลรวม sum = num1+num2+num3 พิมพ์ผลรวมออกทางจอภาพ (sum) จบการทำงาน <บทที่ 8 ส่วนที่ 1>
งานนำเสนอที่คล้ายกัน
© 2024 SlidePlayer.in.th Inc.
All rights reserved.