Computer Programming for Engineers

Slides:



Advertisements
งานนำเสนอที่คล้ายกัน
โครงสร้างของภาษา C ในโปรแกรมที่พัฒนาด้วยภาษา C ทุกโปรแกรมจะมีโครงสร้างการพัฒนาไม่แตกต่างกัน ซึ่งประกอบด้วย 6 ส่วนหลัก ๆ โดยที่แต่ละส่วนจะมีหน้าที่แตกต่างกัน.
Advertisements

บทที่ 2 รหัสควบคุมและการคำนวณ
โครงสร้างโปรแกรมภาษา C
สาขาวิชาคอมพิวเตอร์ คณะวิทยาศาสตร์และเทคโนโลยี
การเขียนโปรแกรมด้วยคำสั่งเบื้องต้น
Computer Programming 1 LAB Test 3
LAB 1 ให้นักศึกษาเขียน Flowchart โดยใช้โปรแกรม Microsoft Word วาดรูป Flowchart ส่ง Flowchart ที่วาดเสร็จแล้วในชั่วโมง และ print ใส่กระดาษ ส่งในครั้งหน้า.
คำสั่ง while และ คำสั่ง do..while
BC322 ครั้งที่ 13 Array 2 มิติ BC322 Computer Programming-Array Processing.
การเขียนโปรแกรม แบบมีโครงสร้าง (ต่อ)
Department of Computer Business
การรับค่าและแสดงผล.
ข้อมูลชนิดโครงสร้าง (Structure Data)
ตัวอย่าง Flowchart.
ชนิดของข้อมูลและตัวดำเนินการ
LAB # 4 Computer Programming 1 1. พิจารณาโปรแกรมต่อไปนี้
LAB # 8 Computer Programming 1
LAB # 3 Computer Programming 1
Computer Programming 1 LAB # 6 Function.
LAB # 5 Computer Programming 1 1.
LAB # 4.
Week 15 C Programming.
รับและแสดงผลข้อมูล.
โครงสร้างภาษาซี.
ฟังก์ชั่น function.
ปฏิบัติการครั้งที่ 9 ฟังก์ชัน.
คำสั่งควบคุมการทำงาน
การวิเคราะห์ขั้นตอนวิธีการแก้ปัญหา
Arrays.
C Programming Lecture no. 6: Function.
การคำนวณค่าสถิติเบื้องต้น … สถิติเชิงพรรณนา
2.5 ตัวแปรชุดมิติเดียวและตัวแปรชุดสองมิติ
บทที่ 11 การเขียนโปรแกรมภาษาซี
หน่วยที่ 1 พื้นฐานภาษา C
อาร์เรย์และข้อความสตริง
ตัวอย่างโปรแกรมคำนวณหาพื้นที่สี่เหลี่ยม
Chapter 5 คำสั่งควบคุมการทำซ้ำ
ตัวดำเนินการในภาษาซี
การรับและพิมพ์ข้อมูลเบื้องต้น
ทบทวน กันก่อน .....กระบวนการแปลโปรแกรม
Week 10 การเขียนโปรแกรมเบื้องต้น #2
Week 2 Variables.
Computer Programming for Engineers
Computer Programming for Engineers
Week 5 การทำซ้ำโดย while loop และ do while loop
การประมวลผลสายอักขระ
การเขียนโปรแกรมประยุกต์ใช้งาน
Computer Programming for Engineers
โปรแกรมประยุกต์อื่นๆ
Computer Programming for Engineers
Week 5 การทำซ้ำโดย while loop และ do while loop
Debugging in VC Computer Programming for Engineers.
Computer Programming for Engineers
Recursion การเรียกซ้ำ
วิชา COSC2202 โครงสร้างข้อมูล (Data Structure)
คำสั่งรับค่าและฟังก์ชันทางคณิตศาสตร์
อัลกอริทึ่มทำงานวนซ้ำ
Week 11 Basic Programs 2.
Output of C.
บทที่ 9 การสร้างและใช้ งานฟังก์ชั่น C Programming C-Programming.
CONDITION Computer Programming Asst. Prof. Dr. Choopan Rattanapoka.
การกระทำทางคณิตศาสตร์
การเขียนโปรแกรม (ภาษาซี)
การรับและแสดงผลข้อมูล (Input/Output)
การเขียนโปรแกรมบนเว็บ (Web Programming) บทที่ 2: ทบทวนการเขียน ภาษา Java ใช้ร่วมกับ Html และการรับข้อมูลจาก Form.
บทที่ 10 การจัดการไฟล์ อาจารย์ศศลักษณ์ ทองขาว สงวนลิขสิทธิ์ © 2547 มหาวิทยาลัยราช ภัฏสงขลา C Programming C-Programming.
การทำซ้ำ Pisit Nakjai.
Computer Programming การเขียนโปรแกรม คอมพิวเตอร์ สัปดาห์ที่ 6 คำสั่งควบคุมการทำงานแบบ เงื่อนไขและคำสั่งควบคุมการ ทำงานแบบวนซ้ำ.
ดำเนินการวิจัย นางสาวขวัญใจ จันทรวงษ์ วิทยาลัยเทคโนโลยีวิมล ศรีย่าน
งานวิจัยในชั้นเรียน ผู้จัดทำวิจัย
ใบสำเนางานนำเสนอ:

259201 Computer Programming for Engineers การเขียนโปรแกรมเบื้องต้น 2

Outline การคำนวณค่า Standard Deviation (SD) เกมทายตัวเลขแบบซับซ้อน

การคำนวณค่า Standard Deviation (SD) ถ้าเราต้องการคำนวณค่า SD ของกลุ่มประชากร (Population) จำนวน 10 ข้อมูล ตามสูตร (1) จะเห็นได้ว่า เราต้องนำข้อมูลแต่ละข้อมูลมาลบโดยค่าเฉลี่ย หรือ เราจะหาค่าเฉลี่ยได้อย่างไร? จากปฏิบัติการที่ 6 การคำนวณค่าเฉลี่ยนั้น เราจำเป็นต้องบวกข้อมูลทั้งหมดเข้าด้วยกัน จากนั้นทำการหารด้วยจำนวนข้อมูลทั้งหมด (1)

การคำนวณค่า Standard Deviation (SD) ดังนั้น เราจะทำการเขียนโปรแกรมเพื่อรับข้อมูลจำนวน 10 ข้อมูลเป็นขั้นตอนแรก กิจกรรม 1 ให้นักศึกษาเขียนโปรแกรมรับค่าข้อมูลจำนวน 10 ข้อมูล กำหนดให้ตัวแปรที่ใช้ในการรับข้อมูลชื่อ a โดยข้อมูลแรกเก็บอยู่ใน a(1), ข้อมูลที่สองเก็บใน a(2), …, ข้อมูลที่สิบเก็บใน a(10) ให้ตั้งชื่อโปรแกรมนี้ว่า cal_sd.m #include "stdio.h" void main() { int a[10] ,n; for ( n=0 ; n<10 ; n++ ) { printf("Enter your data:"); scanf("%d", &a[n]); } for i=1:10 a(i)=input('Enter a data entry:'); end

การคำนวณค่า Standard Deviation (SD) กิจกรรมที่ 2 ให้นักศึกษาทำการแก้ไขโปรแกรมจากกิจกรรมที่ 1 ให้คำนวณค่าเฉลี่ย หลังจากที่รับข้อมูลทั้ง 10 เสร็จแล้ว โดยกำหนดให้ตัวแปรสำหรับเก็บค่าเฉลี่ยชื่อ avg #include "stdio.h" void main() { int a[10], n; float csum(0) for ( n=0 ; n<10 ; n++ ) { printf("Enter your data:"); scanf("%d", &a[n]); csum +=a[n]; } avg=csum/10.; คำถาม 1. ถ้าไม่มีการกำหนดค่าเริ่มต้นตัวแปร csum ให้เป็น 0 จะเกิดอะไรขึ้น?

การคำนวณค่า Standard Deviation (SD) จากสูตรที่ 1 เราจะต้องนำข้อมูลทีละหนึ่งข้อมูลมาลบโดยค่าเฉลี่ยจากนั้นยกกำลังสอง ถ้าต้องการนำข้อมูลแรกมาลบโดยค่าเฉลี่ยและยกกำลังสอง จะเขียนเป็นโปรแกรมใน MATLAB อย่างไร? (1) pow((a[1]-avg),2)

การคำนวณค่า Standard Deviation (SD) ถ้าต้องการหาค่าผลบวกรวมของค่าดังกล่าว จำนวน 10 ค่า วิธีการหนึ่งคือการใช้ for loop จำนวน 10 ครั้ง กิจกรรมที่ 3 ให้นักศึกษาทำการแก้ไขโปรแกรมจากกิจกรรมที่ 2 เพื่อหาค่าผลบวกรวมโดยกำหนดให้ตัวแปรสำหรับเก็บค่าผลบวกรวมชื่อ sq_sum #include "math.h“ …. float sq_sum(0); sq_sum=0.; for ( n=0 ; n<10 ; n++ ) { sq_sum +=pow((a[n]-avg),2); }

การคำนวณค่า Standard Deviation (SD) จากนั้นนำค่า sq_sum มาหารด้วย 10 และถอดรากที่ 2 #include "math.h“ …. float sq_sum(0); sq_sum=0.; for ( n=0 ; n<10 ; n++ ) { sq_sum +=pow((a[n]-avg),2); } sd=sqrt(sq_sum/10.);

การคำนวณค่า Standard Deviation (SD) #include "stdio.h" #include "math.h" void main() { float csum(0), avg, sq_sum(0), sd; int a[10], n; //get data and compute avg for ( n=0 ; n<10 ; n++ ) { printf("Enter your data:"); scanf("%d", &a[n]); csum +=a[n]; } avg=csum/10.; //compute SD sq_sum=0.; sq_sum +=pow((a[n]-avg),2); sd=sqrt(sq_sum/10.); fprintf(“SD = %.2f\n”, sd);

ตัดเกรดนักเรียนโดยใช้ SD ค่า SD สามารถนำมาใช้ในการตัดเกรดนักเรียนแบบอิงกลุ่มได้ เช่น ให้ค่าคะแนนในช่วงมากกว่า avg+sd ได้เกรด A, ช่วง avg-sd ได้เกรด F นอกนั้นให้เกรด C ซึ่งการตัดเกรดแบบนี้ การคิดค่าเกรดจะต้องเกิดขึ้นหลังจากมีการคำนวณ SD แล้ว

เกมทายตัวเลข (อีกครั้ง) อ้างอิงจากโค๊ดเกมทายเลขเดิมดังนี้ #include "stdio.h" #include "stdlib.h" void main() { int n, i, g; n = rand() % 11; // generate a random number 0-10 for ( i=1 ; i<=5 ; i++ ) { printf("Guess a number[0,10]:"); scanf("%d", &g); if (g==n) { printf("You got it"); return; } printf("You failed. Please try again");

เกมทายตัวเลข (อีกครั้ง) เราจะทำการปรับปรุงให้โปรแกรมนี้ทำการบอกใบ้ให้กับผู้ใช้ เช่น ถ้าเลขที่สุ่มได้เป็น 8 แต่ผู้ใช้กรอกเลข 3 โปรแกรมก็จะบอกว่าให้ทายตัวเลขที่มากกว่านี้ แต่ถ้าผู้ใช้กรอกเลข 9 โปรแกรมก็จะบอกว่าให้ทายตัวเลขที่น้อยกว่านี้ ดังรูปด้านล่าง Guess a number[0,10]:2 Greater than this. Guess a number[0,10]:6 Less than this. Guess a number[0,10]:5 You got it.

เกมทายตัวเลข (อีกครั้ง) จากโค๊ดโปรแกรม เราต้องเปรียบเทียบตัวแปรสุ่มและตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ ถ้าตัวแปรสุ่มมากกว่าตัวแปรตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ จะต้องแสดงคำบอกใบ้ว่า? Greater than this. ถ้าตัวแปรสุ่มน้อยกว่าตัวแปรตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ จะต้องแสดงคำบอกใบ้ว่า? Less than this. ถ้าตัวแปรสุ่มเท่ากับตัวแปรตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ จะต้องแสดงคำบอกใบ้ว่า? ไม่ต้องบอกใบ้ เพราะเดาถูกแล้ว  ตัวแปรสุ่มในโค๊ดคือ ? n ตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้คือ? g

เกมทายตัวเลข (อีกครั้ง) จากโค๊ดโปรแกรม เราต้องเปรียบเทียบตัวแปรสุ่มและตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ กิจกรรม 4 ให้นักศึกษาทดลองเขียน Flowchart ส่วนของการเปรียบเทียบตัวแปรสุ่มและตัวแปรตัวแปรที่เก็บค่าที่ถูกกรอกโดยผู้ใช้ g==n g>n g<n return display ‘Less than this.’ display ‘Greater than this.’ display ‘You got it.’

เกมทายตัวเลข (อีกครั้ง) อย่างไรก็ตาม ถ้า g ไม่ได้เท่ากับ n และ g ไม่ได้มากกว่า n หมายความว่า g จะต้องน้อยกว่า n แน่นอน เราจึงสามารถเปลี่ยน Flowchart ได้ดังนี้ g==n g>n return display ‘Less than this.’ display ‘Greater than this.’ display ‘You got it.’

เกมทายตัวเลข (อีกครั้ง) จาก Flowchart เราสามารถเขียนโค๊ดส่วนดังกล่าวได้ดังนี้ if (g==n) { printf("You got it."); return; } else if (g>n) printf("Less than this.\n"); else printf("Greater than this.\n");

เกมทายตัวเลข (อีกครั้ง) #include "stdio.h" #include "stdlib.h" void main() { int n, i, g; n = rand() % 11; // generate a random number 0-10 for ( i=1 ; i<=5 ; i++ ) { printf("Guess a number[0,10]:"); scanf("%d", &g); if (g==n) { printf("You got it."); return; } else if (g>n) printf("Less than this.\n"); else printf("Greater than this.\n"); printf("You failed. Please try again"); เกมทายตัวเลข

สรุป นอกจากเราจะใช้ Flowchart ในการสื่อสารระหว่างผู้พัฒนาโปรแกรมแล้ว Flowchart ยังช่วยให้ผู้พัฒนาโปรแกรมเข้าใจ Flow หรือลำดับของการทำงานได้ดีขึ้น เมื่อนักศึกษาเขียนโปรแกรมที่ค่อนข้างซับซ้อน ควรเริ่มต้นด้วยการคิดวิเคราะห์จากจุดเล็ก ๆ ที่ทำความเข้าใจได้ง่ายก่อน จากนั้นค่อยขยายการคิดไปสู่จุดที่ใหญ่มากขึ้น จนกระทั่งเขียนโปรแกรมได้ทั้งโปรแกรม