Control Statement เงื่อนไขคำสั่งในโปรแกรม ภาษา C

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
System Requirement Collection (2)
Advertisements

อสมการเชิงเส้นตัวแปรเดียว
การเขียนคำสั่งควบคุม การทำงานขั้นพื้นฐาน
Looping ธนวัฒน์ แซ่เอียบ.
PHPPHP การเขียนโปรแกรมคอมพิวเตอร์ 1 สาขาวิชาระบบสารสนเทศ คณะเทคโนโลยีการจัดการ.
บทที่ 6 บทที่ 6 คำสั่งแก้ไขปัญหาแบบ เลือก (CONDITION)
บทที่ 5 การควบคุมทิศทางการทำงานของโปรแกรม
BC322 : Computer Programing (ครั้งที่ 1)
คณิตศาสตร์พื้นฐาน ค ชั้นมัธยมศึกษาปีที่ 3 โดย ครูชำนาญ ยันต์ทอง
LAB ตัวแปร : Variables ในการเขียนโปรแกรมเราต้องการให้โปรแกรม จดจำค่าต่างๆ ไว้ เช่นเมื่อรับค่าข้อมูลจาก ผู้ใช้ หรือค่าที่ได้จากการคำนวณใดๆ ค่า.
บทที่ 4 คำสั่งควบคุม โปรแกรม. คำสั่งควบคุมโปรแกรมออกได้เป็น 2 ประเภท คือ คำสั่งแบบกำหนดเงื่อนไข (Conditional Statement) คำสั่งแบบทำงานซ้ำ (Repetitive.
การเขียนโปรแกรมภาษาปาสคาล โดยใช้โครงสร้างหลักทั้ง 3 โครงสร้าง
การทดลองในวิชาฟิสิกส์
กาญจนา ทองบุญนาค สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
หน่วยที่ 5 การเวียนเกิด
การเขียนผังงานเบื้องต้น (Flow chart)
หน่วยที่ 6 แถวลำดับ (Array)
การใช้งาน Microsoft Excel
หลักการโปรแกรม 1 Lecture 8: การทำซ้ำ (while, do-while)
MEE 231 Computer Programming สัปดาห์ที่ 6 ภาษา C หลักการของโปรแกรม ชนิดของตัวแปร การดำเนินการ คำสั่งการรับค่าตัวแปร และการแสดงผล.
ITERATION (LOOP) สาขางานคอมพิวเตอร์ธุรกิจอาจารย์จิรา ภรณ์ เขตกุฎี
แบบทดสอบ MICROSOFT EXCEL มีข้อมูลในแผ่นงานตั้งแต่แถวที่ 1 ถึงแถว 500 และคอลัมน์ A จนถึงคอลัมน์ M วิธีการเลือกช่วง ข้อมูลวิธีใด อย่างไร ที่อำนวยความสะดวกได้ดีและให้ผลรวดเร็ว.
การเลือกข้อมูลจาก List การกำหนดเงื่อนไขการป้อนข้อมูลด้วย Data Validation การใส่ Comment / แสดง / แก้ไข / ลบ.
LOGO ภาษาซี 1.1 อ. กฤติเดช จินดาภัทร์. LOGO ตัวอย่างโค้ดภาษาซี
คำสั่งควบคุมการทำงาน
การเปรียบเทียบเงื่อนไข
เกม คณิตคิดเร็ว.
โครงสร้างโปรแกรมภาษา C
บทที่ 5 การใช้คำสั่ง Select Case , For Next และ Do While
stack #2 ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หน่วยที่ 5 โปรแกรมแบบวนรอบทำซ้ำ
การเขียนโปรแกรมแบบวนซ้ำ
บทที่ 5 อินพุตและเอาต์พุต
Chapter 4 ข้อความสั่ง เลือกทำ.
คำสั่งวนซ้ำ (Looping)
Computer Programming การเขียนโปรแกรมคอมพิวเตอร์
การประยุกต์ Logic Gates ภาค 2
โครงสร้างข้อมูลและอัลกอริทึมเบื้องต้น
รายการ(List) [3] ผู้สอน อาจารย์ ยืนยง กันทะเนตร
หน่วยที่ 3 โครงสร้างควบคุม Control Structures
BC320 Introduction to Computer Programming
START INPUT R = 1 R = R Yes R*R <=2 No R = R PROCESS
โครงสร้างภาษา C Arduino
หน่วยการเรียนที่ 4 เรื่อง การควบคุมทิศทางการทำงาน
บทที่ 7 การเขียนโปรแกรม แบบวนรอบทำซ้ำ (Loop)
บทที่ 8 เงื่อนไขตัดสินใจ
เซต (SET) ประวัติย่อของวิชาเซต ความหมายของเซต การเขียนแทนเซต
รายวิชา ไมโครโปรเซสเซอร์ในงานอุตสาหกรรม
บทที่ 2 อัลกอริธึมและการวิเคราะห์ปัญหา
ความรู้เบื้องต้นเกี่ยวกับคอมพิวเตอร์และเทคโนโลยีสารสนเทศ
การเขียนโปรแกรมแบบวนซ้ำ: คำสั่ง while คำสั่ง do….while
กำหนดกรอบระยะเวลาการขึ้นทะเบียนปี2556/57 1. ข้าว
Data storage II Introduction to Computer Science ( )
บทที่ 9 การทำซ้ำ (Loop).
บทที่ 3 Programming By Wathinee duangonnam
ผู้ช่วยศาสตราจารย์จุฑาวุฒิ จันทรมาลี
คำสั่งวนรอบ (Loop).
การสร้างแบบสอบถาม และ การกำหนดเงื่อนไข.
ตัวอย่างการจัดทำรายงานการผลิต และงบการเงิน
Data storage II Introduction to Computer Science ( )
Data Structures and Algorithms 2/2561
หน่วยที่ 6 อะเรย์ของอักขระ
บทที่ 7 การประมวลผลอาร์เรย์
บทที่ 8 การแก้ไขข้อผิดพลาดโปรแกรม(Debugging)
ค่ารูรับแสง - F/Stop ค่ารูรับแสงที่มีค่าตัวเลขต่ำใกล้เคียง 1 มากเท่าไหร่ ค่าของรูรับแสงนั้นก็ยิ่งมีความกว้างมาก เพราะเราเปรียบเทียบค่าความสว่างที่ 1:1.
2 โครงสร้างข้อมูลแบบสแตก (STACK).
Chapter 3 : Array.
Array: One Dimension Programming I 9.
การเขียนโปรแกรมด้วยภาษาไพทอน การเขียนโปรแกรมแบบทางเลือก
Decision: Single and Double Selection (if and if-else statement)
ใบสำเนางานนำเสนอ:

Control Statement เงื่อนไขคำสั่งในโปรแกรม ภาษา C

คำสั่งตรวจสอบเงื่อนไข if แก้ไขปัญหาที่ต้องมีการเลือกทำงานเมื่อเงื่อนไขบางเงื่อนไข “เป็นจริง” เมื่อคะแนนที่กรอกเข้ามามีค่าน้อยกว่า 50 คะแนนให้พิมพ์คำว่า “fail” เมื่อผู้ใช้กรอกอายุว่ายังไม่ถึง 18 ปี ให้ออกจากโปรแกรม ถ้าเงื่อนไขที่ทดสอบเป็นเท็จ จะไม่ทำอะไร

คำสั่งตรวจสอบเงื่อนไข if รูปแบบคำสั่งคือ if (expression) { statement 1 ; } statement 2 ; expression เท็จ จริง statement 1; statement 2;

ถ้าค่า expression มีค่าเป็นจริง (ผลลัพธ์ของ expression มีค่าเป็นค่าอื่นที่ไม่ใช่ศูนย์ ) ให้ทำ statement 1; ถ้า expression มีค่าเป็นเท็จ (ผลลัพธ์ของ expression มีค่าเป็นศูนย์ ) จะข้ามไปทำ statement 2; คำสั่งที่อยู่ในบล็อก if สามารถประกอบไปด้วยคำสั่งมากกว่า 1 คำสั่งได้ โดยการใช้เครื่องหมายวงเล็บปีกกา { } เพื่อจัดคำสั่งเป็นกลุ่ม มองเสมือนว่า { } คือ 1 คำสั่งใหญ่

ตัวอย่าง 1 if (score<50) printf (“***Fail***\n”); printf (“*** end score ***”); ตัวอย่าง 2 { printf (“congratulation\n”); }

คำสั่งตรวจสอบเงื่อนไข if - else เมื่อคะแนนที่กรอกเข้ามามีค่าน้อยกว่า 50 คะแนนให้พิมพ์คำว่า “fail” แต่ถ้า 50 คะแนนขึ้นไป ให้พิมพ์คำว่า “pass” เมื่อผู้ใช้กรอกอายุว่ายังไม่ถึง 18 ปี ให้ออกจากโปรแกรม แต่ถ้าอายุถึง 18 ปี ให้ run โปรแกรมได้

คำสั่งตรวจสอบเงื่อนไข if - else รูปแบบคำสั่งคือ if (expression) { statement 1 ; } else statement 3 ; statement 2 ; เท็จ expression จริง statement 3; statement 1; statement 2;

ทำงานคล้ายกับคำสั่ง if แต่ถ้าผลลัพธ์ของ expression มีค่าเป็นเท็จ (ศูนย์) จะเข้าไปทำงาน statement 3 ก่อน ตัวอย่าง if (score<50) { printf (“***Fail***\n”); printf (“Try again next course\n”); } else printf (“***Pass***\n”); printf (“Congratulation\n”); printf (“*** end score ***”);

การใช้คำสั่ง if ซ้อน if (nested if) คำสั่งภายใต้เงื่อนไข “จริง” หรือ “เท็จ” ของ if…else… อาจเป็นคำสั่งธรรมดา หรือเป็นคำสั่ง if…else… ก็ได้ มักใช้ในกรณีที่มีเงื่อนไขต้องทำมากกว่า 2 เงื่อนไข คะแนนมีค่าน้อยกว่า 50 คะแนนให้พิมพ์คำว่า “fail” แต่ถ้า 50 คะแนนขึ้นไป ถ้าคะแนนน้อยกว่า 75 คะแนน (50 – 74) ให้พิมพ์เกรด B แต่ ถ้า 75 คะแนนขึ้นไป ให้พิมพ์เกรด A

if (expression 1) { statement 1 ; } else if (expression 2) statement 2 ; statement 3 ; statement 4 ; expression 1 เท็จ จริง expression 2 เท็จ จริง statement 1; statement 2; statement 3; statement 4;

sum<50 sum<60 Sum<70 “F” “D” “C” … if ( sum < 50 ) print “F” else { if ( sum < 60 ) print “D” if ( sum < 70 ) print “C” … } sum<50 sum<60 Sum<70 “F” “D” “C” …

คำสั่งเงื่อนไข switch – case รูปแบบคำสั่งคือ switch (variable / expression) { case ค่าที่ 1 : statement 1; break; case ค่าที่ 2 : statement 2; default statement 3; } switch() case value1 case value2 case value3 … default

จะเข้าทำงานคำสั่ง default ก็ต่อเมื่อเงื่อนไขไม่ตรงกับ case ใดๆ เลย ถ้าไม่มีคำสั่ง default เมื่อตรวจสอบแล้วเงื่อนไขไม่ตรงกับ case ใดๆ ก็จะไม่ทำคำสั่งใดๆ ภายใน switch – case นั้นเลย ในทุกๆ case ควรมีคำสั่ง break; เพื่อปิดท้าย case นั้นๆ ยกเว้น default เนื่องจากเป็นกรณีสุดท้าย จึงไม่ต้องมี ถ้าในแต่ละ case มี statement มากกว่า 1 statement สามารถใช้ต่อกันได้เลยโดยไม่ต้องใส่ {}

ตัวอย่าง switch (c) { case ‘+’: x = y + z; break; case ‘-’: x = y - z; case ‘*’: x = y * z; case ‘/’: x = y / z; } ตัวอย่าง switch (x+y) { case 1: x = y + x; break; case 2: printf(“x+y=2”); case 3: printf(“x+y=3”); x=y+x; default : printf(“not 1,2,3”); }

โครงสร้างควบคุมแบบทำซ้ำ สำหรับคำสั่งที่ใช้ในโครงสร้างควบคุมแบบทำซ้ำในภาษาซีมีหลายรูปแบบ ดังนี้ คำสั่งวนซ้ำ while คำสั่งวนซ้ำ do-while คำสั่งวนซ้ำ for

คำสั่งทำซ้ำ while โปรแกรมบางลักษณะต้องมีการทำงานเดิมซ้ำๆ จนกว่าจะได้เงื่อนไขที่เหมาะสม จึงจะไปทำงานอื่นต่อ รับค่าคะแนนสอบ midterm (เต็ม 50 คะแนน) ถ้าผู้ใช้กรอกคะแนนที่ไม่อยู่ในช่วง 0 – 50 คะแนน -> ต้องให้กรอกใหม่ โปรแกรมรับค่าคะแนนสอบ midterm จากผู้ใช้ คะแนนที่ได้อยู่ในช่วง 0 – 50 คะแนนหรือไม่ ถ้าใช่ ไปทำงานอื่นต่อ ถ้าไม่ใช่ ต้องรับค่าคะแนนใหม่ -> กลับไปเช็คข้อ 2

คำสั่งทำซ้ำ while เท็จ เงื่อนไข จริง คำสั่งที่ 2 คำสั่งที่ 1 { คำสั่งที่ 1; } คำสั่งที่ 2; ตรวจสอบเงื่อนไขก่อนเข้าทำงานในบล็อก while loop ทุกครั้ง ถ้าเงื่อนไขเป็นจริง จะทำงานคำสั่งที่ 1 แล้วจึงกลับไปตรวจสอบเงื่อนไขอีกครั้ง วน loop จนกว่าเงื่อนไขจะเป็นเท็จ จึงออกไปทำคำสั่งที่ 2

โปรแกรมรับค่าคะแนนสอบ midterm จากผู้ใช้ คะแนนที่ได้อยู่ในช่วง 0 – 50 คะแนนหรือไม่ ถ้าใช่ ไปทำงานอื่นต่อ ถ้าไม่ใช่ ต้องรับค่าคะแนนใหม่ -> กลับไปเช็คข้อ 2 เนื่องจากคำสั่ง while จะทำงานวนซ้ำก็ต่อเมื่อเงื่อนไขเป็นจริง ดังนั้นจะได้ โปรแกรมรับค่าคะแนนสอบ midterm จากผู้ใช้ คะแนนที่ได้ไม่อยู่ในช่วง 0 – 50 คะแนนหรือไม่ ถ้าใช่ ต้องรับค่าคะแนนใหม่ -> กลับไปเช็คข้อ 2 ถ้าไม่ใช่ ไปทำงานอื่นต่อ (ออกจากข้อ 2. ได้)

โปรแกรมรับค่าคะแนนสอบ midterm จากผู้ใช้ คะแนนที่ได้ไม่อยู่ในช่วง 0 – 50 คะแนนหรือไม่ ถ้าใช่ ต้องรับค่าคะแนนใหม่ -> กลับไปเช็คข้อ 2 ถ้าไม่ใช่ ไปทำงานอื่นต่อ (ออกจากข้อ 2. ได้) printf(“Input MIDTERM score : ”); scanf(“%f”,&score); while( !((Mscore>=0) && (Mscore<=50)) ) { scanf(“%f”,&Mscore); }

จงเขียนโปรแกรมที่ทำงานดังนี้ เริ่มจากรับคะแนน midterm จากผู้ใช้ ถ้าไม่อยู่ในช่วง 0 – 50 ให้ผู้ใช้กรอกใหม่ แต่ถ้าอยู่ ให้ทำขั้นต่อไป ถัดมา ให้รับคะแนน final จากผู้ใช้ ถ้าไม่อยู่ในช่วง 0 – 50 ให้ผู้ใช้กรอกใหม่ แต่ถ้าอยู่ ให้ทำขั้นต่อไป นำคะแนนที่ได้มาบวกกันเพื่อหาคะแนนรวมและเกรดที่ได้ แสดงผลลัพธ์(คะแนนรวมและเกรด)ออกทางหน้าจอ

คำสั่งทำซ้ำ do - while do – while loop ก็เป็น while loop เช่นกัน แต่มีการเปลี่ยนตำแหน่งของการเช็คเงื่อนไข while – เช็คก่อนทำใน loop ดังนั้น ถ้าเช็คครั้งแรกแล้วเงื่อนไขเป็นเท็จ จะไม่มีการเข้าทำงานในลูปเลย do – while – ทำใน loop 1 ครั้งก่อนแล้วค่อยไปเช็คเงื่อนไข ดังนั้น ถึงการเช็คเงื่อนไขครั้งแรกจะให้ผลลัพธ์เป็นเท็จ คำสั่งที่อยู่ภายในลูปก็จะได้รับการทำงานอย่างน้อยที่สุด 1 ครั้งเสมอ

เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 คำสั่งทำซ้ำ do - while เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 จริง เท็จ do { คำสั่งที่ 1; } while (เงื่อนไข) ; คำสั่งที่ 2; เข้าทำงานในบล็อก do - while ก่อนจึงค่อยตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริง จะวน loop กลับไปทำงานคำสั่งที่ 1 วน loop จนกว่าเงื่อนไขจะเป็นเท็จ จึงออกไปทำงานคำสั่งที่ 2 ต่อไป

เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 คำสั่งทำซ้ำ do – while เปรียบเทียบกับ while เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 จริง เท็จ do – while เงื่อนไข คำสั่งที่ 1 คำสั่งที่ 2 จริง เท็จ while

while do – while printf(“Input MIDTERM score : ”); scanf(“%f”,&Mscore); while( !((Mscore>=0) && (Mscore<=50)) ) { } while do { printf(“Input MIDTERM score : ”); scanf(“%f”,&Mscore); } while( !((Mscore>=0) && (Mscore<=50)) ) ; do – while

while do – while printf(“Input MIDTERM score : ”); scanf(“%f”,&Mscore); while( (Mscore<0) || (Mscore>50) ) { } while do { printf(“Input MIDTERM score : ”); scanf(“%f”,&Mscore); } while( (Mscore<0) || (Mscore>50) ); do – while

ข้อสังเกตของ while และ do - while ทั้ง while loop และ do – while loop มีข้อสังเกตคือ นิยมใช้กับการทำงานที่เราไม่รู้จำนวนครั้งที่แน่นอน วน loop รับค่าจนกว่าจะได้ค่าที่ต้องการ วน loop คำนวณค่าจนกว่าผลลัพธ์มีค่าเท่ากับศูนย์ คำสั่งที่อยู่ใน loop ต้องส่งผลให้เงื่อนไขที่เช็คมีโอกาสเป็นเท็จ (ออกจาก loop ได้) คำสั่งที่อยู่ใน loop ต้องส่งผลกระทบต่อตัวแปรหรือค่าที่นำมาเป็นเงื่อนไขในการออกจาก loop

โจทย์ปัญหา เขียนโปรแกรมเพื่อวน loop รับค่าตัวเลขจำนวนเต็มจากผู้ใช้ไปเรื่อยๆ ในระหว่างที่ใส่ตัวเลข ให้โปรแกรมคอยนับด้วยว่า ตัวเลขที่ผู้ใช้ใส่เข้ามาเป็นเลขจำนวนเต็มบวกกี่ตัว , เลขจำนวนเต็มลบกี่ตัว โปรแกรมจะหยุดรับค่าเมื่อผู้ใช้ใส่ค่าตัวเลข 0 ให้กับโปรแกรม โปรแกรมจะแสดงผลให้ผู้ใช้ได้ทราบว่า ผู้ใช้กรอกตัวเลขจำนวนเต็มบวกทั้งหมดกี่ตัว, จำนวนเต็มลบทั้งหมดกี่ตัว

คำสั่งวนซ้ำ for เป็นคำสั่งสำหรับการทำงานวนซ้ำเช่นเดียวกับ while แต่นิยมใช้ในลักษณะการเขียนโปรแกรมคนละแบบ ใช้ใน loop ที่ทราบจำนวนรอบที่แน่นอน บวกตัวเลขตั้งแต่ 1 – 100 รับคะแนนสอบของนิสิต 104 คน

คำสั่งวนซ้ำ for รูปแบบคำสั่งคือ { statement 1; } statement 2; ค่าเริ่มต้น เท็จ เงื่อนไข ปรับค่าตัวแปร จริง statement 2; statement 1;

ตัวอย่าง int count ; for ( count = 1 ; count <= 10 ; count++ ) { printf( “%d\n” , count ) ; } จากตัวอย่าง ในคำสั่ง for มีตัวแปร count เพื่อคอยนับ, ควบคุมจำนวนรอบของลูป ก่อนเข้าลูป กำหนดค่าเริ่มต้นให้ count = 1 เช็คเงื่อนไข count <= 10 จึงจะทำงานในลูป เมื่อทำงานในลูปเสร็จ เพิ่มค่าตัวแปร count++ และย้อนกลับไปเช็คเงื่อนไข

โปรแกรมเพื่อคำนวณหาค่าผลรวมของตัวเลขตั้งแต่ 1 ถึง 50 ตัวอย่าง โปรแกรมเพื่อคำนวณหาค่าผลรวมของตัวเลขตั้งแต่ 1 ถึง 50 #include <stdio.h> void main() { int i , sum = 0; for (i=1 ; i<=50 ; i++) sum += i; } printf(“1+...+50 = %d\n”,sum); 1+...+50 = 1275

ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,i); Input = 4 * * * * ตัวอย่าง โปรแกรมเพื่อรับเลขจำนวนเต็มแล้วพิมพ์ * #include <stdio.h> void main() { int i , n; printf(“Input = ”); scanf(“%d”,&n); for (i=1 ; i<=n ; i++) printf(“* ”); } Input = 4 * * * * Input = 7 * * * * * * * ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,i);

ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,i); Input = 3 * Input = 4 ตัวอย่าง โปรแกรมเพื่อรับเลขจำนวนเต็มแล้วพิมพ์ * #include <stdio.h> void main() { int i , n; printf(“Input = ”); scanf(“%d”,&n); for (i=1 ; i<=n ; i++) printf(“*\n”); } Input = 3 * Input = 4 ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,i);

ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,j); Input = 2 ** *** ตัวอย่าง โปรแกรมเพื่อรับเลขจำนวนเต็มแล้วพิมพ์ * #include <stdio.h> void main() { int i ,j ,n; printf(“Input = ”); scanf(“%d”,&n); for (i=1 ; i<=n ; i++) { for (j=1 ; j<=n ; j++) printf(“*\n”); } ลองเปลี่ยนจาก printf(“* ”); เป็น printf(“%d”,j);