งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ

ธนาวินท์ รักธรรมานนท์

งานนำเสนอที่คล้ายกัน


งานนำเสนอเรื่อง: "ธนาวินท์ รักธรรมานนท์"— ใบสำเนางานนำเสนอ:

1 ธนาวินท์ รักธรรมานนท์ fengtwr@ku.ac.th
โครงสร้างควบคุม ธนาวินท์ รักธรรมานนท์

2 หัวข้อในวันนี้ โครงสร้างควบคุม โครงสร้างการตัดสินใจแบบ if-then-else
โครงสร้างการกระทำซ้ำแบบ repeat-until โครงสร้างการกระทำซ้ำแบบ while โครงสร้างการกระทำซ้ำแบบ for

3 IF – THEN – ELSE IF condition THEN statement 1 ELSE statement 2 ;
False True Statement2 Statement1

4 Nested Condition IF cond1 THEN statement1 ELSE IF cond2 THEN
False True Statement1 condition2 Statement3 Statement2 IF cond1 THEN statement1 ELSE IF cond2 THEN Statement2 statement3

5 While Loop While condition do statement ; Statement condition False
True Statement

6 Repeat-until Loop Repeat Statement; … Until condition ; Statement
False True Statement

7 โครงสร้าง if-then-else
คำสั่ง จริง เท็จ เงื่อนไข if false then jump to else_label then_actions jump to endif Else_label: else_actions endif: cmp al,10 jae abovenine mov dl,al add dl,’0’ jmp endif abovenine: add al,’A’-10 endif: if AL<10 then DL:=AL+’0’ else DL:=AL+’A’-10; EXAMPLE

8 โครงสร้าง repeat-until
คำสั่ง เงื่อนไข เท็จ จริง startlabel: actions ... if false then jump to startlabel EXAMPLE startlabel: mov al,bl mul bl add dx,ax inc bl inc cx cmp dx,100 jbe startlabel repeat DX:=DX+BL*BL; BL:=BL+1; CX:=CX+1; until (DX>100);

9 โครงสร้าง while เท็จ เงื่อนไข จริง คำสั่ง startlabel:
if false then jump to endlabel actions ... jump to startlabel endlabel: startloop: cmp dl,13 jz endloop cmp cx,20 jae endloop add al,dl adc ah,0 inc bx mov dl,data[bx] inc cx jmp startloop endloop: EXAMPLE while (DL<>13) and (CX<20) do begin AX:=AX+DL; BX:=BX+1; DL:=DATA[BX] CX:=CX+1; end;

10 โครงสร้าง for กำหนดค่าเริ่มต้น เท็จ ค่าของตัวแปร อยู่ในขอบเขต จริง
set the value of CX startloop: actions . . . LOOP startloop เท็จ คำสั่ง ค่าของตัวแปร อยู่ในขอบเขต จริง กำหนดค่าเริ่มต้น ปรับค่าตัวแปร initialize index variable startloop: if index value is not in the range then jump to endloop action ... update index variable Jump to startloop endloop:

11 โครงสร้าง for mov cx,0 mov dl,1 startloop: cmp dl,100 ja endloop
mov al,dl mov ah,0 mob bl,7 div bl cmp ah,0 jne endif inc cx endif: inc dl jmp startloop endloop: EXAMPLE CX:=0; for DL:=1 to 100 do begin if DL mod 7 = 0 then CX:=CX+1; end;

12 โครงสร้าง for ใช้คำสั่ง LOOP สะดวกกว่าในการสร้างวงรอบ แต่ไม่สามารถใช้ในการวนรอบที่ซับซ้อนได้ จึงนิยมใช้คำสั่ง JMP มากกว่า โครงสร้างการทำงานของคำสั่ง LOOPZ และ LOOPNZ มีลักษณะปนกันระหว่างโครงสร้าง for และ repeat EXAMPLE mov ax,0 mov cx,100 startloop: add ax,data[bx] add bx,2 cmp data[bx],0 looopnz startloop AX:=0; CX:=100; repeat AX:=AX+data[BX]; BX:=BX+2; CX:=CX-1; until (data[BX]=0) or (CX=0);

13 Example 1 Calculate the “n!” (n-factorial)
Start Read “n” n := n -1 n > 0 Write “fac” End False True fac := fac * n

14 Example 2 Convert Celcius to Farenheit
Celcius Farenheit … … Farenheit = Celcius * (9/5) + 32

15 Example 2 Convert Celcius to Farenheit
Start Write heading cel <=100 Write output End False True Far := Cel * (9/ 5) + 32 Cel := Cel +1

16 โจทย์ จงเขียนโปรแกรมตรวจสอบเลขฐานสิบที่รับจากผู้ใช้ (ไม่เกิน 8 บิต) ว่าเป็นจำนวนเฉพาะหรือไม่ โดยแสดงข้อความ yes หรือ no อ่านตัวเลขฐานสิบจากผู้ใช้ ใช้บริการดอสหมายเลข 0Ah ในการอ่านข้อความ แปลงข้อความทั้ง 8 บิตให้เป็นตัวเลข ตรวจสอบว่าเป็นจำนวนเฉพาะหรือไม่ ใช้วิธีทดลองหาร

17 ตัวอย่าง - การคำนวณ ตัวอย่างการแปลง 123 = 1*102 + 2*10 + 3
= (((0*10 + 1) *10 + 2)*10 + 3) 0 * 10 + 1 * 10 + 2 + 3 .data maxlen db strlen db ? str db dup (?) .code mov mov ds,ax mov dx,offset maxlen mov ah,0Ah int h 4 3 ‘1’ ‘2’ ‘3’ 13 maxlen strlen str

18 แปลงตัวเลข ทดสอบจำนวนเฉพาะ mov cl , al mov cl , strlen mov ch , 0
sub cx , 2 ;cx=al-2 mov dl , al mov bl , 2 primetest: mov al , dl mov ah , 0 div bl inc bl cmp ah , 0 loopnz primetest jz notprime ; print “yes” notprime: ; print “no” mov cl , strlen mov ch , 0 mov bx , offset str mov al , 0 extract: mov dh , 10 mul dh ;AX=AL*10 ;discard AH mov dl , [bx] sub dl , ’0’ add al , dl ;AL=AL+digit inc bx loop extract

19 โจทย์การบ้าน รับเลขฐาน 10 จากผู้ใช้มีค่าไม่เกิน (16-bit) และให้แยกตัวประกอบ จากนั้นให้หาผลบวกตัวประกอบเหล่านั้น ตัวอย่าง 100 => 2x2 + 5x5 = 29 3000 => 2x2x x5x5 = 136 วิธีการ 1. รับอินพุต จากข้อความแปลงเป็นเลขฐาน 10 => DX:AX 2. แยกตัวประกอบ 3. หาคำตอบและแสดงผลลัพธ์เป็นข้อความ

20 Question ?


ดาวน์โหลด ppt ธนาวินท์ รักธรรมานนท์

งานนำเสนอที่คล้ายกัน


Ads by Google