Transcript
Page 1: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

Branching and Looping Statements

charturong.ee.engr.tu.ac.th/CN208

āļˆāļēāļ•āļĢāļ‡āļ„ āļ•āļ™āļ•āļšāļ“āļ‘āļ•āļ āļēāļ„āļ§āļŠāļēāļ§āļĻāļ§āļāļĢāļĢāļĄāđ„āļŸāļŸāļēāđāļĨāļ°āļ„āļ­āļĄāļžāļ§āđ€āļ•āļ­āļĢ

āļĄāļŦāļēāļ§āļ—āļĒāļēāļĨāļĒāļ˜āļĢāļĢāļĄāļĻāļēāļŠāļ•āļĢ

āđ€āļ­āļāļŠāļēāļĢāļ›āļĢāļ°āļāļ­āļšāļāļēāļĢāļŠāļ­āļ™āļ™āļˆāļ”āļ—āļģāļēāđ‚āļ”āļĒ āļ”āļĢ.āļ—āļĢāļ‡āļĒāļĻ āļ™āļēāļ„āļ­āļĢāļĒāļāļĨ

Page 2: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

2

Introduction

āđƒāļ™āļšāļ—āļ™ āđ€āļĢāļēāļˆāļ°āđāļ™āļ°āļ™āļģāļēāļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļ™ MATLAB āđ‚āļ”āļĒāļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡āļ—āļ„āļ§āļšāļ„āļĄāļāļēāļĢāļĨāļģāļēāļ”āļšāļāļēāļĢāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡āđƒāļ™ MATLAB āđ‚āļ”āļĒāļ—āđāļšāļ‡āļ­āļ­āļāđ„āļ”āđ€āļ›āļ™ 2 āļ›āļĢāļ°āđ€āļ āļ—āđƒāļŦāļāđ†āļ„āļ­ āļ„āļģāļēāļŠāļ‡ branches āļ—āđ€āļĨāļ­āļāļšāļēāļ‡āļŠāļ§āļ™āļ‚āļ­āļ‡āđ‚āļ„āļ” (code) āđ„āļ›āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ āđāļĨāļ° āļ„āļģāļēāļŠāļ‡ loops āļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨāđ‚āļ„āļ”āđāļšāļšāļ§āļ™āļ‹āļģāļē

āđ‚āļ”āļĒāļ—āđ€āļĢāļēāļˆāļ°āļžāļ”āļ–āļ‡āļŦāļ§āļ‚āļ­āļ•āļ­āđ„āļ›āļ™â€Ē āļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđ‚āļ”āļĒāđƒāļŠ top-down design techniquesâ€Ē āļāļēāļĢāđƒāļŠāļ‚āļ­āļĄāļĨāļ›āļĢāļ°āđ€āļ āļ—āļ•āļĢāļĢāļāļ° (logical data type)â€Ē āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ branchesâ€Ē āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ loops

Page 3: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

3

āļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļš top-down design

āļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļš top-down design āļ„āļ­āļāļēāļĢāđāļ•āļāļ›āļāļŦāļēāđƒāļŦāļāļ—āđ€āļĢāļēāđ„āļ”āļĢāļšāđƒāļŦāđ€āļ›āļ™āļŦāļ§āļ‚āļ­āļĒāļ­āļĒāđ†āļ‹āļ‡āļ‡āļēāļĒāļ•āļ­āļāļēāļĢāđāļāđ„āļ‚āđāļĨāļ°āđ€āļ‚āļēāđƒāļˆ āļˆāļēāļāļ™āļ™āļˆāļ‡āđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļāļ›āļāļŦāļēāļĒāļ­āļĒāđ†āđƒāļŦāļŠāļģāļēāđ€āļĢāļˆāđāļĨāļ°āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ§āļēāđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļŦāļĨāļēāļ™āļ—āļģāļēāļ‡āļēāļ™āđ„āļ”āļˆāļĢāļ‡ āđƒāļ™āļ‚āļ™āļ•āļ­āļ™āļŠāļ”āļ—āļēāļĒāļˆāļ‡āļ™āļģāļēāđ‚āļ›āļĢāđāļāļĢāļĄāļĒāļ­āļĒāđ†āđ€āļŦāļĨāļēāļ™āļĄāļēāļĢāļ§āļĄāļāļ™āđ€āļžāļ­āđāļāļ›āļāļŦāļēāđƒāļŦāļāļ—āđ€āļĢāļēāđ„āļ”āļĢāļš

āļ‚āļ™āļ•āļ­āļ™āđƒāļ™āļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđāļšāļšāļĄāļ›āļĢāļ°āļŠāļ—āļ˜āļœāļĨāļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļēāđ„āļ”āļ”āļ‡āļ•āļ­āđ„āļ›āļ™â€Ē āđ€āļ‚āļēāđƒāļˆāļ›āļāļŦāļēāļ—āļˆāļ°āđāļāđ„āļ‚āđƒāļŦāļ–āļāļ•āļ­āļ‡āđāļĨāļ°āļŠāļ”āđ€āļˆāļ™â€Ē āļāļģāļēāļŦāļ™āļ”āļ•āļ§āļ­āļ™āļžāļ• (input) āđāļĨāļ°āļ•āļ§āđ€āļ­āļēāļ—āļžāļ• (output) āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļŦ

āļŠāļ”āđ€āļˆāļ™â€Ē āļ­āļ­āļāđāļšāļšāļāļēāļĢāđāļāđ„āļ‚āļ›āļāļŦāļēāđƒāļŦāļĨāļ°āđ€āļ­āļĒāļ” (design the algorithm)â€Ē āđ€āļ›āļĨāļĒāļ™āļ­āļĨāļāļ­āļĢāļ—āļĄāđƒāļŦāđ€āļ›āļ™āļ„āļģāļēāļŠāļ‡āđƒāļ™ MATLABâ€Ē āļ•āļĢāļ§āļˆāļŠāļ­āļšāđāļĨāļ°āđāļāđ„āļ‚āđ‚āļ›āļĢāđāļāļĢāļĄ

Page 4: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

4

āļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ„āļ”āđ€āļ—āļĒāļĄ (pseudocode)

āđƒāļ™āļāļēāļĢāļ­āļ­āļāđāļšāļšāđ‚āļ›āļĢāđāļāļĢāļĄāđāļ•āļĨāļ°āļ„āļĢāļ‡ āļœāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļĄāļ„āļ§āļĢāđ€āļ‚āļĒāļ™ pseudocode āđ€āļžāļ­āļŠāļ§āļĒāđƒāļŦāļ‡āļēāļĒāļ•āļ­āļāļēāļĢāđāļāđ„āļ‚āļ›āļāļŦāļē pseudocode āļ—āđ€āļ‚āļĒāļ™āļˆāļ°āđ€āļ›āļ™āļ„āļģāļēāļžāļ”āļ āļēāļĐāļēāļ­āļ‡āļāļĪāļĐāļœāļŠāļĄāļāļšāļĢāļ›āđāļšāļšāļāļēāļĢāđƒāļŠāđƒāļ™ MATLAB āđ€āļŠāļ™ āđ€āļ‚āļĒāļ™āļ„āļģāļēāļŠāļ‡āđ€āļ›āļ™āļšāļĢāļĢāļ—āļ”āđ†āđāļšāļš MATLAB āđ‚āļ”āļĒāļ—āļ„āļģāļēāļŠāļ‡āđ€āļ›āļ™āļ„āļģāļēāļžāļ”āļ āļēāļĐāļēāļ­āļ‡āļāļĪāļĐ āđ€āļ›āļ™āļ•āļ™

Pseudocode āļˆāļ°āļŠāļ§āļĒāļœāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļ™āļāļēāļĢāđ€āļĢāļĒāļšāđ€āļĢāļĒāļ‡āļ„āļ§āļēāļĄāļ„āļ”āļāļ­āļ™āļ—āļˆāļ°āđāļ›āļĨāļ‡āļ„āļ§āļēāļĄāļ„āļ”āđ€āļ›āļ™āļ„āļģāļēāļŠāļ‡āđƒāļ™ MATLAB

Page 5: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

5

āļ•āļ§āļ­āļĒāļēāļ‡āļ— 1: Temperature Conversion

āļˆāļ‡āđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ MATLAB āļ—āđ€āļ›āļĨāļĒāļ™āļ„āļēāļ­āļ“āļŦāļ āļĄāđƒāļ™āļĢāļ°āļšāļšāļŸāļēāđ€āļĢāļ™āđ„āļŪāļ•āđ€āļ›āļ™āļĢāļ°āļšāļšāļ­āļ‡āļĻāļēāđ€āļ‹āļĨāđ€āļ‹āļĒāļŠ āđ‚āļ”āļĒāļ—āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āļĢāļšāļ„āļēāļ­āļ™āļžāļ•āļˆāļēāļāļœāđƒāļŠāđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļ›āļ™āļ•āļ§āđ€āļĨāļ‚āļ­āļ“āļŦāļ āļĄāđƒāļ™āļĢāļ°āļšāļšāļŸāļēāđ€āļĢāļ™āđ„āļŪāļ• āđāļĨāļ§āđāļŠāļ”āļ‡āļœāļĨāđ€āļ›āļ™āļ­āļ“āļŦāļ āļĄāļĢāļ°āļšāļšāļ­āļ‡āļĻāļēāđ€āļ‹āļĨāđ€āļ‹āļĒāļŠ āļ­āļ­āļāļšāļ™āļŦāļ™āļēāļˆāļ­

Page 6: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

6

āļāļēāļĢāđāļāđ„āļ‚āļ›āļāļŦāļēāđ€āļĢāļēāļˆāļ°āđāļāđ„āļ‚āļ›āļāļŦāļēāđāļšāļš top-down design āļ”āļ‡āļ—āļāļĨāļēāļ§āđ„āļ›āđāļĨāļ§āđƒāļ™āļ‚āļēāļ‡āļ•āļ™

āļŠāļģāļēāļŦāļĢāļšāļ•āļ§āļ­āļĒāļēāļ‡āļ™āļĄāļ‚āļ™āļēāļ”āđ€āļĨāļāļˆāļ‡āđ„āļĄāļˆāļģāļēāđ€āļ›āļ™āļ•āļ­āļ‡āđāļ•āļāļ›āļāļŦāļēāđ€āļ›āļ™āļ›āļāļŦāļēāļĒāļ­āļĒāđ†āđāļ•āļ­āļĒāļēāļ‡āđƒāļ” āđ‚āļ›āļĢāđāļāļĢāļĄāļ™āļŠāļĢāļ›āđ„āļ”āļŠāļ™āđ†āļ§āļēāļĄāļ•āļ§āļ­āļ™āļžāļ•āđ€āļ›āļ™āļ•āļ§āđ€āļĨāļ‚āļŦāļ™āļ‡āļ•āļ§āđāļĨāļ°āļ•āļ§āđ€āļ­āļēāļ—āļžāļ•āļŦāļ™āļ‡āļ•āļ§ āļ‹āļ‡āļāļēāļĢāļ­āļ­āļāđāļšāļšāļ­āļĨāļāļ­āļĢāļ—āļĄāđƒāļ™āļāļēāļĢāđāļāļ›āļāļŦāļēāļāđāļŠāļ”āļ‡āđ„āļ”āļ”āļ§āļĒāļŠāļĄāļāļēāļĢāļ•āļ­āđ„āļ›āļ™

āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āđ€āļ‚āļĒāļ™ pseudocode āļŠāļģāļēāļŦāļĢāļšāļ›āļāļŦāļēāļ™āđ„āļ”āļ”āļ‡āļ™Prompt user to enter temperature in degree FahrenheitRead temperature in degrees Fahrenheit (temp_f)temp_c in Celsius (temp_f – 32) / 1.8Write temperature in Celsius

( ) ( ) 32 /1.8T in Celsius T in Fahrenheit

Page 7: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

7

temp_conversion.m% Script file: temp_conversion% Programmer: â€Ķâ€Ķâ€Ķâ€Ķâ€Ķ.% Purpose: to convert an input temperature from degrees Fahrenheit% to an output temperature in Celsius.% Define variables:% temp_f -- Temperature in degrees Fahrenheit% temp_c -- Temperature in degrees Celsius

% Prompt the user for the input temperaturetemp_f = input('Enter the temperature in degrees Fahrenheit:');

% Convert to Celsius.temp_c = (temp_f - 32) / 1.8;

% Write out the result.fprintf('%6.2f degrees Fahrenheit = %6.2f Celsius.\n', temp_f, temp_c);

Page 8: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

8

Testing the program

āļŦāļĨāļ‡āļˆāļēāļāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļģāļēāđ€āļĢāļˆāđāļĨāļ§ āļœāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļŠāļĄāļ„āļ§āļĢāļ—āļˆāļ°āļ•āļ­āļ‡āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļ§āļēāļĄāļ–āļāļ•āļ­āļ‡āļ‚āļ­āļ‡āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āđ€āļ‚āļĒāļ™āđ€āļŠāļĄāļ­ āđ‚āļ”āļĒāļ—āļģāļēāđ„āļ”āļ”āļ§āļĒāļāļēāļĢāļ—āļ”āļĨāļ­āļ‡āđƒāļŠāļ„āļēāļ­āļ™āļžāļ•āđ€āļžāļ­āļ•āļĢāļ§āļˆāļŠāļ­āļš

Page 9: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

9

The Logical Data Type

āļŠāļ™āļ”āļ‚āļ­āļ‡āļ‚āļ­āļĄāļĨāļ­āļāļ›āļĢāļ°āđ€āļ āļ—āļŦāļ™āļ‡āđƒāļ™ MATLAB āļ„āļ­ āļ‚āļ­āļĄāļĨāļ•āļĢāļĢāļāļ° (logical data type) āļ—āļĄāļ„āļēāđ„āļ” 2 āļŠāļ™āļ”āļ„āļ­ āļˆāļĢāļ‡ (true) āļŦāļĢāļ­ āđ€āļ—āļˆ (false) āđ‚āļ”āļĒāļĄāļāļēāļĢāđ€āļĢāļĄāđƒāļŠāđƒāļ™ MATLAB 6.5 āđ€āļ›āļ™āļ•āļ™āđ„āļ› āļ‚āļ­āļĄāļĨāļ•āļĢāļĢāļāļ°āļŠāļēāļĄāļēāļĢāļ–āļ–āļāļŠāļĢāļēāļ‡āđ‚āļ”āļĒāļ„āļģāļēāļŠāļ‡ 2 āļ›āļĢāļ°āđ€āļ āļ—āļ„āļ­ relational operators āļāļš logic operators

āļŦāļēāļāđ€āļĢāļēāļ•āļ­āļ‡āļāļēāļĢāļāļģāļēāļŦāļ™āļ”āļ„āļēāļ•āļ§āđāļ›āļĢāđƒāļŦāđ€āļ›āļ™āļ›āļĢāļ°āđ€āļ āļ— logical āļāļ—āļģāļēāđ„āļ”āđ€āļŠāļ™>> a1 = true;

āđ€āļ§āļĨāļēāļ—āļ‚āļ­āļĄāļĨāļ›āļĢāļ°āđ€āļ āļ—āļ•āļĢāļĢāļāļ°āļ–āļāđƒāļŠāļœāļŠāļĄāļāļšāļ•āļ§āđ€āļĨāļ‚ āļ‚āļ­āļĄāļĨāļ›āļĢāļ°āđ€āļ āļ—āļ•āļĢāļĢāļāļ°āļˆāļ°āļ–āļāđ€āļ›āļĨāļĒāļ™āđ€āļ›āļ™āļ•āļ§āđ€āļĨāļ‚āđ‚āļ”āļĒāļ—āļ„āļē true āļ„āļ­ 1 āđāļĨāļ°āļ„āļē false āđ€āļ›āļ™ 0 āļ–āļēāļŦāļēāļāļ‚āļ­āļĄāļĨāļ•āļ§āđ€āļĨāļ‚āļ–āļāđƒāļŠāđāļ—āļ™āļ—āļ‚āļ­āļĄāļĨāļ•āļĢāļĢāļāļ° āļ„āļēāļ•āļ§āđ€āļĨāļ‚āļ—āđ„āļĄāđ€āļ—āļēāļāļš 0 āļˆāļ°āļ–āļāđ€āļ›āļĨāļĒāļ™āđ€āļ›āļ™ true āđāļĨāļ°āļ„āļē 0 āļˆāļ°āļ–āļāđ€āļ›āļĨāļĒāļ™āđ€āļ›āļ™ false

Page 10: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

10

Relational Operators

āļ„āļēāđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢāļŠāļģāļēāļŦāļĢāļšāđ€āļ›āļĢāļĒāļšāđ€āļ—āļĒāļšāļ„āļ§āļēāļĄāļŠāļĄāļžāļ™āļ˜āļĢāļ°āļŦāļ§āļēāļ‡āļ„āļēāļ•āļ§āđāļ›āļĢāļŠāļ™āļ”āļŠāđ€āļāļĨāļēāļĢāļŦāļĢāļ­āđ€āļĄāļ—āļĢāļāļ‹āļāđ„āļ” āđ‚āļ”āļĒāļ—āļ„āļēāđ‚āļ­āđ€āļ›āļ­āđ€āļĢāļ­āđ€āļ•āļ­āļĢāļ—āđƒāļŠāļĄāļ”āļ‡āļ™

āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢ Relational āļ„āļģāļēāļ­āļ˜āļšāļēāļĒ==~=<>

<=>=

āđ€āļ—āļēāļāļšāđ„āļĄāđ€āļ—āļēāļāļšāļ™āļ­āļĒāļāļ§āļēāļĄāļēāļāļāļ§āļēāļ™āļ­āļĒāļāļ§āļēāļŦāļĢāļ­āđ€āļ—āļēāļāļšāļĄāļēāļāļāļ§āļēāļŦāļĢāļ­āđ€āļ—āļēāļāļš

Page 11: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

11

āļ•āļ§āļ­āļĒāļēāļ‡āļāļēāļĢāđƒāļŠ relational operators

āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢ āļœāļĨāļĨāļžāļ˜3 < 4

3 == 43 ~= 43 <= 4

7+ 3 > 4 +103^2 >= 4

āļˆāļĢāļ‡ (1) āđ€āļ—āļˆ (0) āļˆāļĢāļ‡ (1) āļˆāļĢāļ‡ (1) āđ€āļ—āļˆ (0) āļˆāļĢāļ‡ (1)

Page 12: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

12

Logic Operators

āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢ logic āđ€āļ›āļ™āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢāļ—āđƒāļŠāđ€āļŠāļ­āļĄāļ„āļ§āļēāļĄāļŠāļĄāļžāļ™āļ˜āļĢāļ°āļŦāļ§āļēāļ‡āļ„āļēāļ‚āļ­āļ‡āļ•āļ§āđāļ›āļĢāļ—āđ€āļāļ”āļ‚āļ™āđ‚āļ”āļĒāđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢ relational āļ–āļēāļ„āļ§āļēāļĄāļŠāļĄāļžāļ™āļ˜āļŠāļ­āļ”āļ„āļĨāļ­āļ‡āļāļ™āļœāļĨāļĨāļžāļ˜āļ—āđ„āļ”āļāļˆāļ°āļĄāļ„āļēāđ€āļ›āļ™āļˆāļĢāļ‡ (true) āđāļ•āļ–āļēāļ„āļ§āļēāļĄāļŠāļĄāļžāļ™āļ˜āđ„āļĄāļŠāļ­āļ”āļ„āļĨāļ­āļ‡āļāļ™āļœāļĨāļĨāļžāļ˜āļ—āđ„āļ”āļāļˆāļ°āļĄāļ„āļēāđ€āļ›āļ™āđ€āļ—āļˆ (false) āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢ logic āļ—āđƒāļŠāļ—āļ§āđ„āļ›āđƒāļ™ MATLAB āļĄāļ­āļĒ 3 āđāļšāļš āļ„āļ­

āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢ logic āļ„āļģāļēāļ­āļ˜āļšāļēāļĒ&|~

āđāļĨāļ° (AND)āļŦāļĢāļ­ (OR)āđ„āļĄ (NOT)

Page 13: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

13

āļœāļĨāļĨāļžāļ˜āļ‚āļ­āļ‡āđ‚āļ­āđ€āļ›āļ­āđ€āļĢāđ€āļ•āļ­āļĢ logic

āļĒāļāļ•āļ§āļ­āļĒāļēāļ‡āđ€āļŠāļ™ >> x = (5 > 3) & (2 < 9);

āļœāļĨāļĨāļžāļ˜ x āļˆāļ°āļĄāļ„āļēāđ€āļ›āļ™āļˆāļĢāļ‡ (true)

āļ­āļ™āļžāļ• āđāļĨāļ° (AND) āļŦāļĢāļ­ (OR) āđ„āļĄ (NOT)

P Q false false false true true false true true

P & Q P | Q ~P false false true false true false true false true true

Page 14: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

14

BranchesāļāļēāļĢāđ€āļ‚āļĒāļ™āļ„āļģāļēāļŠāļ‡āļ—āļ”āļŠāļ­āļšāđ€āļ‡āļ­āļ™āđ„āļ‚āđƒāļ™ MATLAB āļĄāļ„āļ§āļēāļĄāļˆāļģāļēāđ€āļ›āļ™āļ­āļĒāļēāļ‡āļĄāļēāļ āđ€āļžāļ­

āļŠāļ§āļĒāđƒāļ™āļāļēāļĢāļ•āļ”āļŠāļ™āđƒāļˆāļ—āļ‹āļšāļ‹āļ­āļ™ āđāļĨāļ°āļŠāļ§āļĒāđƒāļŦāđ‚āļ›āļĢāđāļāļĢāļĄāļ•āļ”āļŠāļ™āđƒāļˆāđ€āļĨāļ­āļāļ„āļģāļēāļŠāļ‡āļ—āļˆāļ°āļāļĢāļ°āļ—āļģāļēāđāļĨāļ°āļ„āļģāļēāļŠāļ‡āļ—āļˆāļ°āđ„āļĄāļāļĢāļ°āļ—āļģāļē āļĢāļ›āđāļšāļšāļāļēāļĢāđƒāļŠāļ—āļ™āļēāļŠāļ™āđƒāļˆāļ„āļ­ āļ„āļģāļēāļŠāļ‡ if āđāļĨāļ°āļ„āļģāļēāļŠāļ‡ switch

āļ„āļģāļēāļŠāļ‡ ifāļ„āļģāļēāļŠāļ‡ if āđƒāļŠāļ—āļģāļēāļāļēāļĢāļ—āļ”āļŠāļ­āļšāđ€āļ‡āļ­āļ™āđ„āļ‚āļ„āļ§āļēāļĄāļŠāļĄāļžāļ™āļ˜āļ§āļēāđ€āļ›āļ™āļˆāļĢāļ‡āļŦāļĢāļ­āđ€āļ›āļ™āđ€āļ—āļˆāđāļĨāļ§āļˆāļ‡āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļ—āļ­āļĒāļ āļēāļĒāđƒāļ•āđ€āļ‡āļ­āļ™āđ„āļ‚āļ™āļ™ āļĄāļĢāļ›āđāļšāļšāļāļēāļĢāđƒāļŠāļ‡āļēāļ™āļ”āļ‡āļ™if expression (command 1)(command 2)â€Ķend

āļ–āļēāļœāļĨāļāļēāļĢāļ—āļ”āļŠāļ­āļšāđ€āļ‡āļ­āļ™āđ„āļ‚āđ€āļ›āļ™āļˆāļĢāļ‡ āđ‚āļ›āļĢāđāļāļĢāļĄMATLAB āļˆāļ°āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡ commands āļ—āļ‡āļŦāļĄāļ”āļ—āļ­āļĒāļĢāļ°āļŦāļ§āļēāļ‡ if āđāļĨāļ° end āđāļ•āļ–āļēāļœāļĨāļāļēāļĢāļ—āļ”āļŠāļ­āļšāđ€āļ›āļ™āđ€āļ—āļˆ āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āļ‚āļēāļĄ(āđ„āļĄāļ›āļĢāļ°āļĄāļ§āļĨāļœāļĨ) āļ„āļģāļēāļŠāļ‡āļ—āļ‡āļŦāļĄāļ”āļ—āļ­āļĒāļĢāļ°āļŦāļ§āļēāļ‡ if āđāļĨāļ° end

Page 15: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

15

āļ„āļģāļēāļŠāļ‡ if āļāļš else āļ„āļģāļēāļŠāļ‡ if āļĒāļ‡āļĄāļĢāļ›āđāļšāļšāļāļēāļĢāđƒāļŠāļ‡āļēāļ™āđƒāļ™āļāļēāļĢāļ•āļ”āļŠāļ™āđƒāļˆāļ—āļ‹āļšāļ‹āļ­āļ™ āđ‚āļ”āļĒāļĄāļĢāļ›āđāļšāļšāļāļēāļĢ

āđƒāļŠāļ‡āļēāļ™āļĢāļ§āļĄāļāļš else āļ”āļ‡āļ™

if expression (commands evaluated if expression is true)

else(commands evaluated if expression is false)

end

āļ–āļēāļœāļĨāļāļēāļĢāļ—āļ”āļŠāļ­āļšāđ€āļ‡āļ­āļ™āđ„āļ‚āđƒāļ™ expression āđ€āļ›āļ™āļˆāļĢāļ‡ MATLAB āļˆāļ°āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡ commands āļ—āļ‡āļŦāļĄāļ” (āļ‹āļ‡āļ­āļēāļˆāļˆāļ°āļĄāļĄāļēāļāļāļ§āļē 1 āļ„āļģāļēāļŠāļ‡) āļ—āļ­āļĒāļĢāļ°āļŦāļ§āļēāļ‡ if āļāļš else āđāļ•āļ–āļēāļŦāļēāļāļœāļĨāļāļēāļĢāļ—āļ”āļŠāļ­āļš expression āđ€āļ›āļ™āđ€āļ—āļˆ āļ„āļģāļēāļŠāļ‡ commands āļ—āļ‡āļŦāļĄāļ”āļ—āļ­āļĒāļĢāļ°āļŦāļ§āļēāļ‡ else āļāļš end āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļē

Page 16: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

16

elseifāļŦāļēāļāđƒāļ™āļāļēāļĢāļ•āļ”āļŠāļ™āđƒāļˆāļĄāļŦāļĨāļēāļĒāđ€āļ‡āļ­āļ™āđ„āļ‚āđāļĨāļ°āļ‹āļšāļ‹āļ­āļ™āļĄāļēāļāļ‚āļ™ āļ„āļģāļēāļŠāļ‡ if āļĄāļāļēāļĢāđƒāļŠāļĢāļ§āļĄāļāļšāļ„āļģāļēāļŠāļ‡

elseif āđ„āļ”āļ”āļ‡āļ™if expression_1(commands_1 evaluated if expression_1 is true)elseif expression_2(commands_2 evaluated if expression_2 is true)elseif expression_3(commands_3 evaluated if expression_3 is true) else(commands evaluated if no other expression is true)end

āļ‹āļ‡āļŦāļēāļāļœāļĨāļāļēāļĢāļ—āļ”āļŠāļ­āļšāđ€āļ‡āļ­āļ™āđ„āļ‚āđƒāļ™ expression_1 āđ€āļ›āļ™āļˆāļĢāļ‡ āļ„āļģāļēāļŠāļ‡ commands_1 āļ—āļ‡āļŦāļĄāļ” (āļ‹āļ‡āļ­āļēāļˆāļˆāļ°āļĄāļĄāļēāļāļāļ§āļē 1 āļ„āļģāļēāļŠāļ‡) āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļēāđāļĨāļ°āļˆāļ°āļ‚āļēāļĄāļ„āļģāļēāļŠāļ‡āļ—āđ€āļŦāļĨāļ­āļ—āļ‡āļŦāļĄāļ”āđ„āļ›āļˆāļ™āļ–āļ‡ end āđāļ•āļ–āļē expression_1 āđ€āļ›āļ™āđ€āļ—āļˆ expression_2 āļˆāļ°āļ–āļāļ•āļĢāļ§āļˆāļŠāļ­āļšāđ€āļ›āļ™āļĨāļģāļēāļ”āļšāļ•āļ­āđ„āļ›āđ€āļĢāļ­āļĒāđ†

āļ‚āļ­āļ„āļ§āļĢāļˆāļģāļē: āļ„āļģāļēāļŠāļ‡ else āļ•āļ§āļŠāļ”āļ—āļēāļĒāđāļĨāļ° commands āļ—āđ€āļāļĒāļ§āļāļš else āļ™āļ™āļ­āļēāļˆāļˆāļ°āļĄāļŦāļĢāļ­āđ„āļĄāļĄāļāđ„āļ”

Page 17: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

17

āļ•āļ§āļ­āļĒāļēāļ‡āļ— 2: function of two variables

āļˆāļ‡āđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄ MATLAB āđ€āļžāļ­āļŠāļ§āļĒāļ„āļģāļēāļ™āļ§āļ“āļ„āļēāļ‚āļ­āļ‡āļŸāļ‡āļāļŠāļ™ f(x,y) āđ‚āļ”āļĒāļāļģāļēāļŦāļ™āļ”āđƒāļŦāļœāđƒāļŠāđ€āļ›āļ™āļœāļāļģāļēāļŦāļ™āļ”āļ„āļē x āđāļĨāļ° y āđāļĨāļ§āđāļŠāļ”āļ‡āļœāļĨ f(x,y) āļ­āļ­āļāļšāļ™āļŦāļ™āļēāļˆāļ­ āļŸāļ‡āļāļŠāļ™ f(x,y) āļĄāļ”āļ‡āļ„āļēāļ•āļ­āđ„āļ›āļ™

f(x,y) = x + y, x >= 0 and y >= 0 x + y2, x >= 0 and y < 0 x2 + y, x < 0 and y >= 0 x2 + y2, x < 0 and y < 0

Page 18: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

18

āļāļēāļĢāđāļāđ„āļ‚āļ›āļāļŦāļēāđ€āļĢāļēāđ€āļĢāļĄāļ”āļ§āļĒāļāļēāļĢāđ€āļ‚āļĒāļ™ pseudocode āļŠāļģāļēāļŦāļĢāļšāļ›āļāļŦāļēāļ‚āļ­āļ™

Prompt the user for the values x and yRead x and y if x >= 0 and y >= 0

func x + yelseif x >= 0 and y < 0

func x + y^2elseif x < 0 and y >= 0

func x^2 + yelse

func x^2 + y^2endWrite out f(x,y)

Page 19: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

19

func_xy.m% Script file: func_xy.m% Programmer: ...................% Purpose: This program solves the function f(x,y) for a user-% specified x and y, where f(x, y) is defined as:% f(x,y) = x + y, x >= 0 and y >= 0% x + y2, x >= 0 and y < 0% x2 + y, x < 0 and y >= 0% x2 + y2, x < 0 and y < 0 %% Define variables:% x -- first independent variable % y -- second independent variable% func -- resulting function

Page 20: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

20

% Prompt the user for the values x and yx = input('Enter the x coefficient: ');y = input('Enter the y coefficient: ');

% Calculate the function f(x,y) if x >= 0 & y >= 0

func = x + y;elseif x >= 0 & y < 0

func = x + y^2;elseif x < 0 & y >= 0

func = x^2 + y;else

func = x^2 + y^2;end

%Write the value of the functiondisp (['The value of the function is ', num2str(func)]);

Page 21: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

21

āļ„āļģāļēāļŠāļ‡ switchāļ„āļģāļēāļŠāļ‡ switch āđ€āļ›āļ™āļ„āļģāļēāļŠāļ‡āļ›āļĢāļ°āđ€āļ āļ— branching āļ­āļāđāļšāļšāļŦāļ™āļ‡āļ—āđƒāļŦāļœāđ€āļ‚āļĒāļ™

āđ‚āļ›āļĢāđāļāļĢāļĄāđ€āļĨāļ­āļāđƒāļŠ āļĢāļ›āđāļšāļšāļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡ switch āļĄāļ”āļ‡āļ™switch switch_var

case case_expression_1(commands_1)

case case_expression_2(commands_2)

otherwise(commands_3)

end

āļ–āļēāļ„āļēāļ‚āļ­āļ‡ switch_var āđ€āļ—āļēāļāļš case_expression_1 āļ„āļģāļēāļŠāļ‡ commands_1 āļ—āļ‡āļŦāļĄāļ” (āļ‹āļ‡āļ­āļēāļˆāļĄāļĄāļēāļāļāļ§āļē 1 āļ„āļģāļēāļŠāļ‡) āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļēāđāļĨāļ§āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āļ‚āļēāļĄāļ„āļģāļēāļŠāļ‡āļ—āđ€āļŦāļĨāļ­āļ—āļ‡āļŦāļĄāļ”āđ„āļ›āļˆāļ™āļ–āļ‡ end āđāļ•āļ–āļē switch_var āđ€āļ—āļēāļāļš case_expression_2 commands_2 āļ—āļ‡āļŦāļĄāļ”āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļēāđāļ—āļ™ āđāļšāļšāļ™āļ•āļ­āđ„āļ›āđ€āļĢāļ­āļĒāđ† āļ–āļēāļ—āļ case āđ€āļ›āļ™āđ€āļ—āļˆ āļ„āļģāļēāļŠāļ‡āđƒāļ™ otherwise āļˆāļ°āļ–āļāđƒāļŠ

āļ‚āļ­āļ„āļ§āļĢāļˆāļģāļē: āļ„āļģāļēāļŠāļ‡ otherwise āļˆāļ°āļĄāļŦāļĢāļ­āđ„āļĄāļĄāļāđ„āļ”

Page 22: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

22

āļāļēāļĢāļĢāļ§āļĄ case āđƒāļ™ switchāļ–āļē case āļšāļēāļ‡ case āđƒāļŦāļœāļĨāļĨāļžāļ˜āļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡āđ€āļ”āļĒāļ§āļāļ™ āđ€āļĢāļēāļŠāļēāļĄāļēāļĢāļ–āļĢāļ§āļĄ case

āđ€āļŦāļĨāļēāļ™āđ€āļ‚āļēāļ”āļ§āļĒāļāļ™āđ„āļ” āļ‹āļ‡āļ—āļģāļēāđ„āļ”āđ‚āļ”āļĒāļāļēāļĢāļĢāļ§āļĄāđ„āļ§āđƒāļ™āđ€āļ„āļĢāļ­āļ‡āļŦāļĄāļēāļĒāļ›āļāļāļē (brackets) āđ‚āļ”āļĒāđƒāļŠāļĢāļ›āđāļšāļšāļ”āļ‡āļ™

switch switch_varcase {case_expression_1, case_expression_2}

(commands_1)case {case_expression_3, case_expression_4}

(commands_2)otherwise

(commands_3)end

āđ‚āļ”āļĒāļ— switch_var āļŠāļēāļĄāļēāļĢāļ–āđ€āļ›āļ™āļ•āļ§āđ€āļĨāļ‚ (double) āļŦāļĢāļ­āļ•āļ§āļ­āļāļĐāļĢ (character string) āļāđ„āļ”

Page 23: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

23

āļ•āļ§āļ­āļĒāļēāļ‡āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ switchāļŦāļēāļāđ€āļĢāļēāļ•āļ­āļ‡āļāļēāļĢāđāļŠāļ”āļ‡āļœāļĨāļšāļ™āļŦāļ™āļēāļˆāļ­āļ§āļēāļ•āļ§āđ€āļĨāļ‚āļ—āļœāđƒāļŠāđ€āļĨāļ­āļāļĢāļ°āļŦāļ§āļēāļ‡ 1 āļ–āļ‡ 10

āđ€āļ›āļ™āđ€āļĨāļ‚āļ„āļŦāļĢāļ­āđ€āļĨāļ‚āļ„āļāļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāļ„āļģāļēāļŠāļ‡ switch āđ„āļ”āļ”āļ‡āļ™

value = input('Choose a integer between 1 and 10: ');switch value

case {1, 3, 5, 7, 9}disp('The number is odd.');

case {2, 4, 6, 8, 10}disp('The number is even.');

otherwisedisp('The number is out of range.');

end

Page 24: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

24

āļ•āļ§āļ­āļĒāļēāļ‡āļ„āļģāļēāļŠāļ‡ switch āļāļšāļ•āļ§āđāļ›āļĢ charāļ„āļģāļēāļŠāļ‡ switch āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāđ€āļ›āļĢāļĒāļšāđ€āļ—āļĒāļšāļ•āļ§āđāļ›āļĢāļ›āļĢāļ°āđ€āļ āļ—āļ•āļ§āļ­āļāļĐāļĢ (character

string) āđ‚āļ”āļĒāđ€āļŠāļ™āļāļēāļĢāđāļ›āļĨāļ‡āļ„āļēāļ•āļ§āđāļ›āļĢ x āļˆāļēāļāđ€āļ‹āļ™āļ•āļĄāđ€āļ•āļ­āļĢāđ€āļ›āļ™āļĢāļ°āļšāļšāļ­āļ™āđ€āļŠāļ™ āđ€āļ›āļ™āļ™āļ§ āļŸāļ• āļŦāļĢāļ­ āđ€āļĄāļ•āļĢ

x = 2.7;units = 'm' ;switch unitscase {'inch' , 'in' }y = x/2.54;case {'feet' , 'ft' }y = x/2.54/12;case {'meter' , 'm' }y = x/100;otherwisedisp(['Unknown Units: ', units])y = nan;end

āļŦāļĨāļ‡āļˆāļēāļ run āđ‚āļ›āļĢāđāļāļĢāļĄāļ™āđāļĨāļ§ āļœāļĨāļĨāļžāļ˜āļ—āđ„āļ”āļ„āļ­ y = 0.027

Page 25: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

25

āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āļāļēāļĢāđ€āļ‚āļĒāļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļ—āļ‹āļšāļ‹āļ­āļ™ āđƒāļ™āļŦāļĨāļēāļĒāđ†āļ„āļĢāļ‡āļĄāļ„āļ§āļēāļĄāļˆāļģāļēāđ€āļ›āļ™āļ•āļ­āļ‡āļ„āļģāļēāļ™āļ§āļ“āļŠāļ”

āļ„āļģāļēāļŠāļ‡āļšāļēāļ‡āļ­āļĒāļēāļ‡āļ‹āļģāļēāđ„āļ›āļ‹āļģāļēāļĄāļēāļŦāļĨāļēāļĒāđ†āļĢāļ­āļš āļ‹āļ‡āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āļ—āļŠāļģāļēāļ„āļāđ†āļĄāļ­āļĒ 2 āđāļšāļšāļ„āļ­ āļ„āļģāļēāļŠāļ‡ for āđāļĨāļ°āļ„āļģāļēāļŠāļ‡ while

āļ‚āļ­āđāļ•āļāļ•āļēāļ‡āļ—āļŠāļģāļēāļ„āļāļ‚āļ­āļ‡ 2 āļ„āļģāļēāļŠāļ‡āļ™āļ„āļ­ āļ„āļģāļēāļŠāļ‡ while āļˆāļ°āļ§āļ™āļ‹āļģāļēāđ„āļ›āđ€āļĢāļ­āļĒāđ†āđ„āļĄāļĄāļ—āļŠāļ™āļŠāļ” āļˆāļ™āļāļ§āļē āļāļēāļĢāļ—āļ”āļŠāļ­āļšāđ€āļ‡āļ­āļ™āđ„āļ‚āđƒāļ™ expression āļˆāļ°āđ€āļ›āļ™āđ€āļ—āļˆ āđƒāļ™āļ‚āļ“āļ°āļ— āļ„āļģāļēāļŠāļ‡ for āļˆāļ°āļāļģāļēāļŦāļ™āļ”āļˆāļģāļēāļ™āļ§āļ™āļĢāļ­āļšāļāļēāļĢāļ§āļ™āļ‹āļģāļēāđ„āļ§āļŠāļ”āđ€āļˆāļ™

Page 26: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

26

āļ„āļģāļēāļŠāļ‡ while

āļ„āļģāļēāļŠāļ‡ while āļˆāļ°āļ—āļģāļēāļāļēāļĢāļ—āļ”āļŠāļ­āļšāđ€āļ‡āļ­āļ™āđ„āļ‚āđƒāļ™ expression āļ—āļāđ†āļĢāļ­āļšāļ‚āļ­āļ‡āļāļēāļĢāļ§āļ™āļ‹āļģāļē āļ–āļēāļœāļĨāļāļēāļĢāļ—āļ”āļŠāļ­āļšāđƒāļ™ expression āđƒāļŦāļ„āļēāđ€āļ›āļ™āļˆāļĢāļ‡ āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļ—āļ‡āļŦāļĄāļ”āļ āļēāļĒāđƒāļ™ while āļĨāļ›āļŦāļ™āļ‡āļĢāļ­āļš āđāļĨāļ§āļāļĨāļšāļĄāļēāļ•āļĢāļ§āļˆāļŠāļ­āļš expression āļ­āļāļ„āļĢāļ‡āļŦāļ™āļ‡ āđāļĨāļ°āļˆāļ°āļ—āļģāļēāđāļšāļšāļ™āļ•āļ­āđ„āļ›āđ€āļĢāļ­āļĒāđ† āļˆāļ™āļāļ§āļēāļœāļĨāļāļēāļĢāļ—āļ”āļŠāļ­āļšāļˆāļ°āđ€āļ›āļ™āđ€āļ—āļˆ āđāļĨāļ§MATLAB āļˆāļ‡āļˆāļ°āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļŦāļĨāļ‡āļˆāļēāļāļ„āļģāļēāļŠāļ‡ end

āļ„āļģāļēāļŠāļ‡ while āļĄāļĢāļ›āđāļšāļšāļāļēāļĢāđƒāļŠāļ‡āļēāļ™āļ”āļ‡āļ™

while expression(commands)

end

Page 27: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

27

āļ•āļ§āļ­āļĒāļēāļ‡āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ while

āđƒāļ™āļ•āļ§āļ­āļĒāļēāļ‡āļ™āļˆāļ°āđāļŠāļ”āļ‡āļāļēāļĢāđƒāļŠ while loop āđƒāļ™āļāļēāļĢāļ–āļēāļĄāļœāđƒāļŠāđ‚āļ›āļĢāđāļāļĢāļĄāđƒāļŦāļ•āļ­āļšāļ„āļģāļēāļ–āļēāļĄāļ—āļēāļ‡āļ„āļ“āļ•āļĻāļēāļŠāļ•āļĢ āđāļĨāļ°āļˆāļ°āđ„āļĄāļ­āļ­āļāļˆāļēāļāđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ™āļāļ§āļēāļœāđƒāļŠāđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āļ•āļ­āļšāļ–āļ

sum = input('What is five plus ten?: ');while (sum ~= 15)

disp('Nope! Your answer is incorrect.');sum = input('What is five plus ten?: ');

enddisp('Great! You are smart.')

Page 28: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

28

āļ„āļģāļēāļŠāļ‡ for

āļ„āļģāļēāļŠāļ‡ for āļˆāļ°āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļ—āļ‡āļŦāļĄāļ” (āļ‹āļ‡āļ­āļēāļˆāļˆāļ°āļĄāļĄāļēāļāļāļ§āļē 1 āļ„āļģāļēāļŠāļ‡) āļ—āļ­āļĒāļĢāļ°āļŦāļ§āļēāļ‡ expression āļāļš end āđƒāļ™āļˆāļģāļēāļ™āļ§āļ™āļĢāļ­āļšāļ—āļ„āļ‡āļ— āļ—āļāļģāļēāļŦāļ™āļ”āđ„āļ§āđƒāļ™ expression āđ‚āļ”āļĒāļĄāļĢāļ›āđāļšāļšāļāļēāļĢāđƒāļŠāļ‡āļēāļ™āļ”āļ‡āļ™

for index = array(commands)

endāļ•āļ§āđāļ›āļĢ index āļ„āļ­ āļ•āļ§āđāļ›āļĢāļ‚āļ­āļ‡āļĨāļ› (loop variable) āđāļĨāļ° array āļ„āļ­ āļ­āļēāđ€āļĢāļĒ

āļ—āđ€āļ›āļ™āļ•āļ§āļ„āļ§āļšāļ„āļĄāļˆāļģāļēāļ™āļ§āļ™āļĨāļ› (loop control expression) āđāļ•āļĨāļ°āļ„āļ­āļĨāļĄāļ™āđƒāļ™ array āļˆāļ°āļ–āļāļāļģāļēāļŦāļ™āļ”āđƒāļŦāļāļšāļ•āļ§āđāļ›āļĢ index āđƒāļ™āđāļ•āļĨāļ°āļĢāļ­āļšāđƒāļ™āļāļēāļĢāļ§āļ™āļĨāļ› āļ„āļģāļēāļŠāļ‡ commands āļ—āļ‡āļŦāļĄāļ”āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļēāđƒāļ™āđāļ•āļĨāļ°āļˆāļģāļēāļ™āļ§āļ™āļĢāļ­āļšāļ‚āļ­āļ‡āļāļēāļĢāļ§āļ™āļĨāļ› āđ‚āļ”āļĒāļŠāļ§āļ™āļĄāļēāļāđāļĨāļ§ array āļˆāļ°āđ€āļ›āļ™āđ€āļ§āļāđ€āļ•āļ­āļĢāđāļĨāļ°āļĄāđāļšāļšāļŸāļ­āļĢāļĄāļ„āļ­ first:incr:last

Page 29: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

29

āļ•āļ§āļ­āļĒāļēāļ‡āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ for

sum = 0;for ii = 1:10

sum = sum + ii;fprintf('sum = %6.2f.\n', sum);

endfprintf('The value of ii is now %d.\n', ii);

Page 30: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

30

āļ„āļģāļēāļ­āļ˜āļšāļēāļĒāļ•āļ§āļ­āļĒāļēāļ‡āļāļēāļĢāđƒāļŠ for1 .āđƒāļ™āļ•āļ­āļ™āđ€āļĢāļĄāļ•āļ™āļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡ for āđ‚āļ›āļĢāđāļāļĢāļĄ MATLAB āļŠāļĢāļēāļ‡ array āļ‹āļ‡

āđ€āļ›āļ™ row vector āļĄāļ„āļēāļˆāļēāļ 1 āļ–āļ‡ 102. āđƒāļ™āļ„āļĢāļ‡āļ— 1 āļ‚āļ­āļ‡āļāļēāļĢāļ§āļ™āļĨāļ› āļ•āļ§āđāļ›āļĢ ii āļĄāļ„āļēāđ€āļ›āļ™ 1 āļ‹āļ‡āđ€āļ›āļ™āļ„āļēāđ€āļĨāļ‚āļ•āļ§āđāļĢāļ

āđƒāļ™ array āđāļĨāļ°āļ„āļģāļēāļŠāļ‡āļ—āļ‡āļŦāļĄāļ”āļĢāļ°āļŦāļ§āļēāļ‡ āļ„āļģāļēāļŠāļ‡ for āļāļš end āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļē āļœāļĨāļĨāļžāļ˜āļ„āļ­āļ„āļēāļ‚āļ­āļ‡āļ•āļ§āđāļ›āļĢ sum = sum + ii āļŦāļĢāļ­ 0 + 1 āļ‹āļ‡āļāļ„āļ­ 1

3. āđ€āļĄāļ­āļ„āļģāļēāļŠāļ‡ fprintf āļ–āļāļāļĢāļ°āļ—āļģāļē āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āđ€āļˆāļ­āļāļšāļ„āļģāļēāļŠāļ‡ end āļ”āļ‡āļ™āļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļˆāļ°āļ§āļ™āļāļĨāļšāđ„āļ›āļĒāļ‡āļˆāļ”āđ€āļĢāļĄāļ•āļ™āļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡ for āđāļĨāļ°āļāļģāļēāļŦāļ™āļ”āļ„āļēāļ•āļ§āđ€āļĨāļ‚āļ•āļ§āļ•āļ­āđ„āļ›āđƒāļ™ array āđƒāļŦāļāļšāļ•āļ§āđāļ›āļĢ ii āļ‹āļ‡āļāļ„āļ­āđ€āļĨāļ‚ 2 āđ€āļžāļĢāļēāļ°āļ‰āļ°āļ™āļ™āđƒāļ™āļāļēāļĢāļ§āļ™āļĨāļ›āļ„āļĢāļ‡āļ™ ii = 2 āđāļĨāļ°āļ„āļēāļ‚āļ­āļ‡āļ•āļ§āđāļ›āļĢ sum = sum + ii = 1 + 2 āļŦāļĢāļ­ 3

4. āđ‚āļ›āļĢāđāļāļĢāļĄ MATLAB āļˆāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āđƒāļ™āļ‚āļ­ 3 āđ„āļ›āđ€āļĢāļ­āļĒāđ† āļˆāļ™āļāļĢāļ°āļ—āļ‡āļ•āļ§āđ€āļĨāļ‚āļ•āļ§āļŠāļ”āļ—āļēāļĒāđƒāļ™ array āļ–āļāļāļģāļēāļŦāļ™āļ”āđƒāļŦāļāļšāļ•āļ§āđāļ›āļĢ ii āđāļĨāļ°āļ„āļģāļēāļŠāļ‡ commands āļĢāļ°āļŦāļ§āļēāļ‡ for āļāļš end āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļēāđ€āļ›āļ™āļĢāļ­āļšāļŠāļ”āļ—āļēāļĒ

Page 31: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

31

āļ•āļ§āļ­āļĒāļēāļ‡āļ— 2 āļ‚āļ­āļ‡āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ for

sum = 0;for ii = 1:2:9

sum = sum + 1;fprintf('sum = %6.2f.\n', sum);

endfprintf('The value of ii is now %d.\n', ii);

Page 32: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

32

āļ„āļģāļēāđ€āļ•āļ­āļ™āđƒāļ™āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ forāļŦāļĨāļāđ€āļĨāļĒāļ‡āļāļēāļĢāļāļģāļēāļŦāļ™āļ”āļ„āļēāđƒāļŦāļĄāđƒāļŦāļāļšāļ•āļ§āđāļ›āļĢ index āđ‚āļ”āļĒāđƒāļŠāļ„āļģāļēāļŠāļ‡ commands āļ āļēāļĒāđƒāļ™āļ„āļģāļē

āļŠāļ‡ for āļĨāļ›āļāļēāļĢāļāļģāļēāļŦāļ™āļ”āļ„āļēāđƒāļŦāļĄāđƒāļŦāļāļšāļ•āļ§āđāļ›āļĢ index āļ āļēāļĒāđƒāļ™āļ„āļģāļēāļŠāļ‡ for āđ„āļĄāļŠāļēāļĄāļēāļĢāļ–āļ—āļģāļēāđƒāļŦāļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›

for āļˆāļšāđ€āļĢāļ§āļ‚āļ™āđ„āļ” āđāļĨāļ°āļ­āļēāļˆāļ—āļģāļēāđƒāļŦāđ€āļāļ”āļ‚āļ­āļœāļ”āļžāļĨāļēāļ”āļŦāļĢāļ­ bug āđ„āļ”āļ‡āļēāļĒ āļĒāļāļ•āļ§āļ­āļĒāļēāļ‡āđ€āļŠāļ™sum = 0;for ii = 1:10ii = 5;sum = sum + ii;fprintf('sum = %6.2f.\n', sum);endfprintf('The value of ii is now %d.\n', ii);

āđƒāļ™āļ•āļ§āļ­āļĒāļēāļ‡āļ™ āļ„āļģāļēāļŠāļ‡ for āļˆāļ°āļ§āļ™āļĨāļ›āđ€āļ›āļ™āļˆāļģāļēāļ™āļ§āļ™ 10 āļĢāļ­āļšāđāļĨāļ°āļ„āļē sum āļˆāļ°āļĄāļ„āļēāđ€āļ›āļ™ 50 āđ€āļĄāļ­āļˆāļšāđ‚āļ›āļĢāđāļāļĢāļĄ

Page 33: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

33

āļ„āļģāļēāļŠāļ‡ break āļāļš continue

āļĄāļ„āļģāļēāļŠāļ‡ 2 āļ„āļģāļēāļŠāļ‡āļ—āļŠāļēāļĄāļēāļĢāļ–āđƒāļŠāļ„āļ§āļšāļ„āļĄāļāļēāļĢāļ§āļ™āļĨāļ›āļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡ while āđāļĨāļ° for āđ„āļ”āļ™āļ™āļāļ„āļ­ āļ„āļģāļēāļŠāļ‡ breakāđāļĨāļ° continue

āļ„āļģāļēāļŠāļ‡ break āļŦāļĒāļ”āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āđƒāļ™ for āļŦāļĢāļ­ while āđāļĨāļ°āļŠāļ‡āđƒāļŦ MATLAB āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļšāļĢāļĢāļ—āļ”āļ•āļ­āđ„āļ›āļˆāļēāļāļ„āļģāļēāļŠāļ‡ end

āļ„āļģāļēāļŠāļ‡ continue āļŦāļĒāļ”āļāļēāļĢāļ—āļģāļēāļ‡āļēāļ™āļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āđƒāļ™ for āļŦāļĢāļ­ while āđāļĨāļ§āļŠāļ‡āđƒāļŦ MATLAB āļāļĨāļšāđ„āļ›āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āđƒāļ™āļˆāļ”āđ€āļĢāļĄāļ•āļ™āļ‚āļ­āļ‡āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›

Page 34: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

34

āļ•āļ§āļ­āļĒāļēāļ‡āļāļēāļĢāđƒāļŠ breakfor ii = 1:5if ii == 3 break;endfprintf('ii = %d\n', ii);enddisp(['End of loop!']);

āđ€āļ§āļĨāļēāļ— m-file āļ™āļ–āļ run āļœāļĨāļĨāļžāļ˜āļ—āļˆāļ°āđ„āļ”āļšāļ™āļŦāļ™āļēāļˆāļ­āļ„āļ­ ii = 1ii = 2End of loop!

āļ™āļ™āđ€āļžāļĢāļēāļ°āđ€āļĄāļ­ ii āđ€āļ—āļēāļāļš 3 āđ€āļ‡āļ­āļ™āđ„āļ‚āļ—āļ”āļŠāļ­āļšāđƒāļ™ if āļˆāļ°āđ€āļ›āļ™āļˆāļĢāļ‡āđāļĨāļ§āļ„āļģāļēāļŠāļ‡ break āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļē āļ‹āļ‡āļ—āļģāļēāđƒāļŦāļ‚āļēāļĄāļ„āļģāļēāļŠāļ‡āļ—āļ‡āļŦāļĄāļ”āđƒāļ™āļ„āļģāļēāļŠāļ‡ for āļĨāļ› āđāļĨāļ§āđ„āļ›āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļŦāļĨāļ‡āļˆāļēāļ end

Page 35: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

35

āļ•āļ§āļ­āļĒāļēāļ‡āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ continuefor ii = 1:5if ii == 3 continue;endfprintf('ii = %d\n', ii);enddisp(['End of loop!']);

āđ€āļ§āļĨāļēāļ— m-file āļ™āļ–āļ run āļœāļĨāļĨāļžāļ˜āļ—āļˆāļ°āđ„āļ”āļšāļ™āļŦāļ™āļēāļˆāļ­āļ„āļ­ ii = 1ii = 2ii = 4ii = 5End of loop!

āļ™āļ™āļ„āļ­āđ€āļĄāļ­ ii āđ€āļ—āļēāļāļš 3 āđ€āļ‡āļ­āļ™āđ„āļ‚āļ—āļ”āļŠāļ­āļšāđƒāļ™ if āļˆāļ°āđ€āļ›āļ™āļˆāļĢāļ‡āđāļĨāļ§āļ„āļģāļēāļŠāļ‡ continue āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļē āļ‹āļ‡āļ—āļģāļēāđƒāļŦāļ‚āļēāļĄāļ„āļģāļēāļŠāļ‡āļ—āļ‡āļŦāļĄāļ”āđƒāļ™āļĢāļ­āļšāļĨāļ›āļ™āļ™ āđ„āļ›āļĒāļ‡āļ„āļģāļēāļŠāļ‡ for āđƒāļŦāļĄ āđāļĨāļ§ ii āļˆāļ°āļĄāļ„āļēāđ€āļ›āļ™ 4 āđƒāļ™āļāļēāļĢāļ§āļ™āļĢāļ­āļšāđƒāļŦāļĄāđāļĨāļ°āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļ•āļ­āđ„āļ›āļˆāļ™āļˆāļš

Page 36: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

36

Nested Loops

āđƒāļ™āļšāļēāļ‡āļāļĢāļ“ āļ­āļēāļˆāļĄāļāļēāļĢāđ€āļ‚āļĒāļ™āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āļ āļēāļĒāđƒāļ™āļ‚āļ­āļ‡āļ­āļāļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ› āļ‹āļ‡āļ—āļ‡ 2 āļĨāļ›āļ™āļ™āđ€āļĢāļĒāļāļ§āļē nested loops āđ‚āļ”āļĒāļ•āļ§āļ­āļĒāļēāļ‡āļ•āļ­āđ„āļ›āļ™āđ€āļ›āļ™ āļ„āļģāļēāļŠāļ‡ for āļĨāļ›āļ āļēāļĒāđƒāļ™āļ­āļāļ„āļģāļēāļŠāļ‡ for āļĨāļ› (two nested for loops) āļŠāļģāļēāļŦāļĢāļšāļŦāļēāļœāļĨāļ„āļ“āļ‚āļ­āļ‡āļˆāļģāļēāļ™āļ§āļ™āđ€āļ•āļĄāļ‚āļ­āļ‡āļˆāļģāļēāļ™āļ§āļ™

for ii = 1:3 for jj = 1:3 product = ii * jj;

fprintf('%d * %d = %d\n', ii, jj, product); endend

Page 37: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

37

āļ„āļģāļēāļŠāļ‡ for āļ•āļ§āļ™āļ­āļ(āļ•āļ§āđāļĢāļ) āļˆāļ°āļāļģāļēāļŦāļ™āļ”āļ„āļē 1 āđƒāļŦāļāļšāļ•āļ§āđāļ›āļĢ ii āļˆāļēāļāļ™āļ™āļ„āļģāļēāļŠāļ‡ for āļ•āļ§āđƒāļ™(āļ•āļ§āļ—āļŠāļ­āļ‡) āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļē 3 āļ„āļĢāļ‡āđ‚āļ”āļĒāļ—āļ•āļ§āđāļ›āļĢ jj āļˆāļ°āļĄāļ„āļē 1, 2, āđāļĨāļ° 3 āļ‹āļ‡āļŦāļĨāļ‡āļˆāļēāļāļˆāļšāļāļēāļĢāļāļĢāļ°āļ—āļģāļē for āļĨāļ›āļ•āļ§āđƒāļ™āđāļĨāļ§ āļ„āļģāļēāļŠāļ‡ for āļ•āļ§āļ™āļ­āļāļˆāļ°āļāļģāļēāļŦāļ™āļ”āļ„āļēāļ•āļ§āđāļ›āļĢ ii āđ€āļ›āļ™ 2 āđāļĨāļ§ āđ€āļĢāļĄāļ—āļģāļēāļ„āļģāļēāļŠāļ‡ for āļ•āļ§āđƒāļ™āđƒāļŦāļĄāļ­āļāļ„āļĢāļ‡āđāļšāļšāļ™ āđ„āļ›āļˆāļ™āļāļĢāļ°āļ—āļ‡āļ„āļģāļēāļŠāļ‡ for āļ•āļ§āļ™āļ­āļ āđ„āļ”āļāļģāļēāļŦāļ™āļ”āļ„āļēāđƒāļŦāļāļšāļ•āļ§āđāļ›āļĢ ii āļˆāļ™āļ„āļĢāļš 3 āļ„āļĢāļ‡

āļœāļĨāļĨāļžāļ˜āļ—āđ„āļ”āļˆāļēāļāđ‚āļ›āļĢāđāļāļĢāļĄāļ‚āļēāļ‡āļ•āļ™āļ„āļ­ 1 * 1 = 11 * 2 = 21 * 3 = 3 2 * 1 = 22 * 2 = 42 * 3 = 63 * 1 = 33 * 2 = 63 * 3 = 9

Page 38: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

38

āļāļēāļĢāđƒāļŠāļ„āļģāļēāļŠāļ‡ break āļŦāļĢāļ­ continue āđƒāļ™ nested loops

āļ–āļēāļ„āļģāļēāļŠāļ‡ break āļŦāļĢāļ­ continue āļ›āļĢāļēāļāļŽāļ­āļĒāļ āļēāļĒāđƒāļ™āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āļ•āļ§āđƒāļ™ āļ„āļģāļēāļŠāļ‡ break āļŦāļĢāļ­ continue āļ™āļ™āļˆāļ°āļĄāļœāļĨāļ•āļ­āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āļ•āļ§āđƒāļ™āđ€āļ—āļēāļ™āļ™ āļĒāļāļ•āļ§āļ­āļĒāļēāļ‡āđ€āļŠāļ™

for ii = 1:3 for jj = 1:3 if jj == 3

break;endproduct = ii * jj;fprintf('%d * %d = %d\n', ii, jj, product);

end fprintf('End of inner loop\n');end fprintf('End of outer loop\n');

Page 39: Branching and Looping Statements charturong.ee.engr.tu.ac.th/CN208

39

āđ€āļĄāļ­āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āļ•āļ§āđƒāļ™ āļāļģāļēāļŦāļ™āļ”āļ„āļēāđƒāļŦ jj āđ€āļ›āļ™ 3 āļ„āļģāļēāļŠāļ‡ break āļˆāļ°āļ–āļāļāļĢāļ°āļ—āļģāļēāļ‹āļ‡āļ—āļģāļēāđƒāļŦāđ‚āļ›āļĢāđāļāļĢāļĄāļŦāļĒāļ”āļāļēāļĢāļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļĨāļ›āļ•āļ§āđƒāļ™ āđāļĨāļ°āļžāļĄāļžāđāļŠāļ”āļ‡āļœāļĨ End of inner loop āļˆāļēāļāļ™āļ™āđ‚āļ›āļĢāđāļāļĢāļĄāļāļˆāļ°āļāļĨāļšāđ„āļ›āļ—āļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āļ•āļ§āļ™āļ­āļ āđāļĨāļ°āđ€āļžāļĄāļ„āļē ii āļ­āļ 1 āđāļĨāļ°āļāļĢāļ°āļ—āļģāļēāļ„āļģāļēāļŠāļ‡āļ§āļ™āļĨāļ›āļ•āļ§āđƒāļ™āļ­āļāļ„āļĢāļ‡ āļœāļĨāļĨāļžāļ˜āļ—āđ„āļ”āļ„āļ­

1 * 1 = 11 * 2 = 2End of inner loop2 * 1 = 22 * 2 = 4

End of inner loop3 * 1 = 33 * 2 = 6End of inner loopEnd of outer loop