38
นิพจน์ (Expression) ดร.ธีระยุทธ ทองเครือ ภาควิชาวิทยาการคอมพิวเตอร์ คณะวิทยาศาสตร์ มหาวิทยาลัยขอนแก่น บทที่ 4

นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

นพจน

(Expression)

ดร.ธระยทธ ทองเครอ

ภาควชาวทยาการคอมพวเตอร คณะวทยาศาสตร

มหาวทยาลยขอนแกน

บทท 4

Page 2: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

Algorithm ของโปรแกรมหาคาเฉลยจากตวเลข 3 ตว

2

4. หาคาผลรวมsum = a + b + c

5. หาคาเฉลยaverage = sum/3

Enter first value: 15

Enter second value: 20

Enter third value: 23

Average = 19.3333

1. รบคาแรกเกบในตวแปร a

2. รบคาทสองเกบในตวแปร b

3. รบคาทสามเกบในตวแปร c

Input Output

Processing

6. แสดงคาเฉลยจากตวแปร average

Page 3: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

3

GET a

sum = a + b + c

Start

End

GET b

GET c

average = sum/3

PUT average

4. หาคาผลรวม

5. หาคาเฉลย

6. แสดงคาเฉลย

1. รบคาแรกเกบในตวแปร a

2. รบคาทสองเกบในตวแปร b

3. รบคาทสามเกบในตวแปร c

Algorithm ของโปรแกรมหาคาเฉลยจากตวเลข 3 ตว

Page 4: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

สญลกษณ Flowchartชอ สญลกษณ

Flowchart บน RAPTORสญลกษณ

Flowchart ทวไป

เรมตน / สนสด

รบ Input

ประมวลผล(Processing)

แสดง output

4

EndStart

PUT "Hello"

GET name

x = x+1

Page 5: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

โคดโปรแกรมหาคาเฉลยจากตวเลข 3 ตว

5

1 #include <stdio.h>23 void main() {45 int a, b, c;67 // 1. Input8 printf("Enter 3 values separate by space: ");9 scanf("%d %d %d", &a, &b, &c);1011 // 2. Processing12 float sum = a + b + c;13 float average = sum/3;1415 // 3. Output16 printf("Average = %f", average);17 }

GET a

sum = a + b + c

Start

End

GET b

GET c

average = sum/3

PUT average

Page 6: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

นพจน คออะไรนพจน หรอ Expression คอ ประโยคทน าตวแปร หรอคาคงท มา

เชอมดวยตวด าเนนการ (Operator) เพอค านวณหรอประมวลผล

6

นพจนคณตศาสตร นพจนภาษาซ

𝑎 + 𝑏

𝑐𝑑(a + b) / (c * d)

10x + 3xy + 10y2 10 * x + 3 * x * y + 10 * y * y

Page 7: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวด าเนนการ (Operator)ตวด าเนนการทางคณตศาสตร (Arithmetic Operator)

ตวด าเนนการแบบสน (Shorthand Assignment Operator)

ตวด าเนนการยนาร (Unary Operator)

7

Page 8: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

Operator ทางคณตศาสตร

8

ตวด าเนนการ ความหมาย ตวอยาง ผลลพธ+ การบวก 6+2 8- การลบ 6-2 4* การคณ 6*2 12/ การหาร 6/2 3

% การหารเอาเศษ(Modulo หรอ Modulus)

6%2 0

Page 9: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ล าดบความส าคญของ Operator

9

อนดบความส าคญ ตวด าเนนการ ล าดบการท างาน

1 ( ) วงเลบมล าดบการท างานเปนอนดบแรกหากมวงเลบซอนวงเลบ จะท าวงเลบในสดกอน

2 * หรอ / หรอ % ถามหลาย operator ใน Expression เดยวกน จะท าจากซายไปขวา

3 + หรอ - ถามหลาย operator ใน Expression เดยวกน จะท าจากซายไปขวา

3 * 4 % 6 / 2 + 5 3 * (4 % (6 / 2)) + 5

12 % 6 / 2 + 5

0 / 2 + 5

0 + 5

5

3 * (4 % 3 ) + 5

3 * 1 + 5

3 + 5

8

Page 10: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

กจกรรมจงหาผลลพธจากนพจนตอไปน1. 15 * 2 / 3 + 2 % 2 2. (6 - 1) * 3 - 4 + 9 % 23. 6 - 1 * 3 - 4 + 9 % 24. 14 % 6 / 2 - 1 + 1 * 35. 14 % 6 / 2 - (1 + 1 * 3)

10

Page 11: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

Operator แบบสน

11

ตวด าเนนการ ตวอยาง การประมวลผล

*= total *= 1.25 total = total * 1.25/= sum /= 3 sum = sum/3%= day %= 3 day = day%3+= count += 1 count = count + 1-= adjust -= 0.5 adjust = adjust - 0.5

Page 12: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

12

#include <stdio.h>

void main() {

int a, b;a = 15;a += 2;printf("%d\n", a);

b = 15;b /= 5;printf("%d\n", b);

}

Page 13: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

Unary Operator

13

ตวด าเนนการ ความหมาย รปแบบ ตวอยาง การท างาน ขอสงเกต

++ เพมคาหนงคาใหกบตวแปร

Postfix x = a++; x = aa = a + 1

ก าหนดคาใหตวแปร x กอนเพมคาใหตวแปร a

Prefix x = ++a; a = a + 1x = a

เพมคาใหตวแปร a กอนก าหนดคาใหตวแปร x

-- ลดคาหนงคาใหกบตวแปร

Postfix x = a--; x = aa = a – 1

ก าหนดคาใหตวแปร x กอนลดคาใหตวแปร a

Prefix x = --a; a = a - 1x = a

ลดคาใหตวแปร a กอนก าหนดคาใหตวแปร x

Page 14: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

14

#include <stdio.h>

void main() {

int x,y;

x = 10;

++x;

printf("%d", x);

}

#include <stdio.h>

void main() {

int x,y;

x = 10;

x++;

printf("%d", x);

}

x = x+1 x = x+1

Output: 11 Output: 11

1

2

3

4

5

6

7

1

2

3

4

5

6

7

Page 15: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

15

#include <stdio.h>

void main() {

int x,y;

x = 10;

y = ++x;

printf("%d", y);

}

#include <stdio.h>

void main() {

int x,y;

x = 10;

y = x++;

printf("%d", y);

}

x = x+1 y = x

Output: 11 Output: 10

1

2

3

4

5

6

7

1

2

3

4

5

6

7

y = x x = x+1

Page 16: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

กจกรรมจงหา output ของโปรแกรม

16

# include <stdio.h>void main() {

int i, j;int x, y;i = j = 1;x = i-- + 1;y = --j + 1;printf("i = %d and j = %d \n",i,j);printf("x = %d and y = %d \n",x,y);

}

Page 17: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

การแปลงชนดขอมลการแปลงขอมลแบบอตโนมต (Implicit Type Conversion)

การแปลงขอมลดวยตนเอง (Explicit Type Conversion)

17

Page 18: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

18

นพจนภาษาซของ 1

𝑡𝑖𝑚𝑒+3𝑚𝑎𝑠𝑠

#include <stdio.h>

void main() {float time, mass;// 1. inputprintf("Time = ");scanf("%f", &time);

printf("Mass = ");scanf("%f", &mass);

// 2. processingfloat result;result = 1/(time + (3*mass));

// 3. outputprintf("Result = %f", result);

}

Page 19: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

การแปลงชนดขอมลแบบอตโนมตการท างานของ Expression อาจมการค านวณกบชนดขอมลท

หลากหลาย เชน 15 / 5.2ชนดขอมลทมนยส าคญต ากวาจะถกแปลงไปเปนชนดขอมลทม

นยส าคญสงกวาเสมอCompiler จะเปนผแปลงชนดขอมลแบบอตโนมตผลลพธทไดจะเปนชนดขอมลทมนยส าคญสงทสดเรยกการแปลงนวา "Implicit Type Conversion"

19

Page 20: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

นยส าคญของชนดขอมล

20

ชนดขอมล ความหมาย นยส าคญ

char ตวอกขระint เลขจ านวนเตม รวมเครองหมายunsigned int เลขจ านวนเตม ไมรวมเครองหมายlong int เลขจ านวนเตมแบบยาว รวมเครองหมายfloat เลขจ านวนจรง (มทศนยม)double เลขจ านวนจรง 2 เทา

ต าสด

สงสด

Page 21: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

นพจน การแปลงชนดขอมล ชนดขอมลของผลลพธ

int – float แปลง int ไปเปน float float

float * double แปลง float ไปเปน double double

int / double แปลง int ไปเปน double double

(int + float) / double แปลง intไปเปน float (ท าในวงเลบกอน)จากนนแปลงคาทไดจากการบวกในวงเลบจากชนด float ไปเปน double

double

21

Page 22: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

22

1. #include <stdio.h>

2. void main() {

3. int baht = 50;

4. int rate = 30;

5. float dollar = baht / rate;

6. printf("%d Thai Baht equals %.2f US Dollar", baht, dollar);

7. }

1. #include <stdio.h>

2. void main() {

3. int baht = 50;

4. float rate = 30;

5. float dollar = baht / rate;

6. printf("%d Thai Baht equals %.2f US Dollar", baht, dollar);

7. }

Output

Output

Page 23: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

การแปลงชนดขอมลดวยตนเองนกพฒนาจะบงคบใหตวแปรนนเปนชนดขอมลทตองการดวย

การใสวงเลบหนาตวแปร ดงน

เรยกการแปลงนวา การท า Casting หรอ Explicit Type Conversion

23

(ชนดขอมลปลายทาง) ชอตวแปร

Page 24: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยางก าหนดให

1. ตวแปร a และ b เปนชนด integer2. ตวแปร c เปนชนด floating-point

(float) a แปลงจาก int ไปเปนขอมลชนด float

(float)(a-b) ท า a-b กอน แลวแปลงผลลพธไปเปนขอมลชนด float

(float)a/b แปลงตวแปร a ไปเปนชนด float จากนนคอยน าไปหารกบ b

24

Page 25: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

25

1. #include <stdio.h>

2. void main() {

3. int baht = 50;

4. int rate = 30;

5. float dollar = baht / rate;

6. printf("%d Thai Baht equals %.2f US Dollar", baht, dollar);

7. }

1. #include <stdio.h>

2. void main() {

3. int baht = 50;

4. int rate = 30;

5. float dollar = baht / (float)rate;

6. printf("%d Thai Baht equals %.2f US Dollar", baht, dollar);

7. }

Output

Output

Page 26: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

กจกรรมโปรแกรมหาพนทสามเหลยมตอไปนม Output ถกตองหรอไม

หากไมถกควรแกไขอยางไรใหผลลพธถกตอง

26

1 #include <stdio.h>23 void main() {4 float area;5 int base=5, height=7;67 area = 1 / 2 * base * height;8 printf("Area is %f", area);9 }

Page 27: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

กจกรรม

1 / (float)2 * base * height

27

1 / 2 * (float)base * height

ผลลพธจากนพจนตอไปน ผลลพธทไดมความแตกตางกนหรอไม

Page 28: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

28

โปรแกรมแปลงคานาท เปนคาชวโมงและนาททเหลอ โดยรบคานาทจากผใช และแสดงผลลพธออกทางหนาจอ

Enter minutes: 65

1 hour(s) 5 minutes

ตวอยางหนาจอโปรแกรม

Page 29: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ตวอยาง

29

Start

End

remainMinute = minute - (hour*60)

GET minute

PUT hour + " hour(s) " + remainMinute + "minutes"

#include <stdio.h>

void main() {

int minute;

// 1. Inputprintf("Enter minutes: ");scanf("%d", &minute);

// 2. Processingint hour = minute/60;int remainMinute = minute - (hour*60);

// 3. Outputprintf("%d hour(s) %d minutes", hour, remainMinute);

}

hour = minute/60

Page 30: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

Flowchart และภาษาซชอ สญลกษณ

Flowchart ทวไปสญลกษณ

Flowchart บน RAPTORภาษาซ

เรมตน หรอ สนสด

void main() {}

รบ Input scanf("%c", &grade);

แสดง outputprintf("Hello %s", name);

ประมวลผล num = num + 1;

30

EndStart

PUT "Hello " + name

GET grade

num = num+1

Page 31: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

กจกรรมจากโคดภาษาซดานลางนมขอผดพลาดอย จงแกไขใหถกตอง

31

ผลลพธ

#include <studio.h>

void main()

int k = 5.7

int v = 2;

printf ("k=%f v=%d" k v);

printf("Result = ", k*v)

}

Page 32: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

กจกรรมจงเขยนโปรแกรมแปลงคา พ.ศ. (Buddhist Era) เปน ค.ศ.

(Christian Era) โดยรบคา พ.ศ. จากผใชTest case:

32

Enter year in Buddhist Era: 2557

Year in Christian Era: 2014

ตวอยางการท างาน

Page 33: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

กจกรรมจงเขยนโปรแกรมหาพนทสเหลยมคางหม โดยรบคาทสตรตองการ

จากผใช และคาพนททค านวณไดออกทางหนาจอ

33

พนทสเหลยมคางหม =1

2× ผลบวกของดานคขนาน × สง

Test case: Input Output

ดานแรก = 2ดานทสอง = 3สง = 5

12.50

ดานแรก = 5.1ดานทสอง = 1.5สง = 3.7

12.21

Page 34: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

กจกรรมจงเขยนโปรแกรมเพอหาผลลพธของนพจนตอไปน

3 + 4𝑥

5−

10 𝑦 − 5 𝑎 + 𝑏 + 𝑐

𝑥+ 9(

4

𝑥+9 + 𝑥

𝑦)

ก าหนดใหรบคา x, y, a, b, และ cTest case:

34

Input Output

x = 15

y = 3

a = 20

b = 6

c = 95

248.333328

x = 2

y = 1

a = 6

b = 19

c = -3

559.200012

Page 35: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

Assignment#2ขอ 1. จงเขยนโปรแกรมแปลงหนวยความยาวจากเซนตเมตรเปนหนวยฟตและนว (1 นว = 2.54 เซนตเมตร และ 12 นว เทากบ 1 ฟต) โดยแสดงผลลพธตาม Test case ดงน

Test case:

35

Input Output

Input centimeters: 258.5 258.5 centimeters is 8 feet 5.77 inches

Input centimeters:478.942 478.9 centimeters is 15 feet 8.56 inches

Page 36: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

Assignment#2ขอ 2. จงเขยนโปรแกรมแสดงจ านวนธนบตรและเหรยญทตองจายใหกบลกคา โดยรบจ านวนเงนจากผใช แลวค านวณหาจ านวนธนบตรและเหรยญแสดงผลออกทางหนาจอก าหนดใหมธนบตรชนด 1000, 500, 100, 50, 20 บาท และเหรยญชนด 10, 5, 1 บาทTest case:

36

Enter your money: 594

1000 : 0

500 : 1

100 : 0

50 : 1

20 : 2

coin-10 : 0

coin-5 : 0

coin-1 : 4 ตวอยางการท างาน

Enter your money: 10563

1000 : 10

500 : 1

100 : 0

50 : 1

20 : 0

coin-10 : 1

coin-5 : 0

coin-1 : 3 ตวอยางการท างาน

Page 37: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ค าสงจงออกแบบ Algorithm ดวยโปรแกรม Raptor ทดสอบใหไดผลลพธตาม Test case และบนทกไฟลสง โดยใหตงชอไฟลดงน

ขอ 1: Prob1_รหสนกศกษา.rapขอ 2: Prob2_รหสนกศกษา.rap

หลงจากนนสรางเปน Software โดยใชค าสงในภาษาซ เขยนตาม Algorithm ทออกแบบใน Raptor ทดสอบการท างานตาม Test case และบนทกไฟลสง โดยใหตงชอไฟลดงน (น าไฟล main.c มาเปลยนชอ ไมตองสงทง Project)

ขอ 1: Prob1_รหสนกศกษา.cขอ 2: Prob2_รหสนกศกษา.c

37

Page 38: นิพจน์ - Ttime.in.th 4.pdf · Algorithm ของโปรแกรมหาค่าเฉลี่ยจากตัวเลข 3 ตัว 2 4. หาค่าผลรวม

ก าหนดสงภาคปกต สงวนจนทรท 29 ส.ค. 59 เวลา 23.00 น.

ภาคสมทบ สงวนพธท 31 ส.ค. 59 เวลา 23.00 น.

38