1 / 80

การเขียนโปรแกรมเบื้องต้นด้วยภาษาซี

การเขียนโปรแกรมเบื้องต้นด้วยภาษาซี. เนื้อหา. Dev-C++: ซอฟต์แวร์ช่วยพัฒนาโปรแกรม โครงสร้างโปรแกรมภาษาซี ชนิดของข้อมูล ตัวแปร คำสั่งควบคุมการไหลของโปรแกรม ฟังก์ชัน ข้อผิดพลาดที่พบบ่อย. 2. เริ่มต้นใช้งาน Dev-C++. สร้างไฟล์ใหม่จากเมนู File > New > Source File

keely
Download Presentation

การเขียนโปรแกรมเบื้องต้นด้วยภาษาซี

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. การเขียนโปรแกรมเบื้องต้นด้วยภาษาซีการเขียนโปรแกรมเบื้องต้นด้วยภาษาซี

  2. เนื้อหา • Dev-C++: ซอฟต์แวร์ช่วยพัฒนาโปรแกรม • โครงสร้างโปรแกรมภาษาซี • ชนิดของข้อมูล ตัวแปร • คำสั่งควบคุมการไหลของโปรแกรม • ฟังก์ชัน • ข้อผิดพลาดที่พบบ่อย 2

  3. เริ่มต้นใช้งาน Dev-C++ • สร้างไฟล์ใหม่จากเมนู File > New > Source File • ทดลองกรอกโปรแกรมตามตัวอย่างด้านขวา • เซฟไฟล์โดยใช้นามสกุล .c • เช่น first.c 3

  4. เริ่มต้นใช้งาน Dev-C++ • ทดลองคอมไพล์และรันโปรแกรม • โดยคลิ้กปุ่ม • หรือกด F9 • หากดูผลลัพธ์ไม่ทัน: • เพิ่มคำสั่ง getch() ด้านท้ายของโปรแกรม 4

  5. ทำใบงานที่ 1.1

  6. ตัวอย่างโปรแกรมภาษาซีตัวอย่างโปรแกรมภาษาซี ฟังก์ชัน main ระบุจุดเริ่มต้นของโปรแกรม คืนค่ากลับเป็น int #include <stdio.h> int main() { int a, b, sum; printf("Enter A: "); scanf("%d", &a); printf("Enter B: "); scanf("%d", &b); sum = a+b; printf("Sum = %d\n", sum); getch(); return 0; } อ่านไฟล์ stdio.h เพื่อเอาฟังก์ชันมาตรฐานมาใช้ ฟังก์ชันมาตรฐาน printf() ใช้พิมพ์ข้อความออกทางหน้าจอ ประกาศตัวแปรแบบ int สามตัวคือ a, b และ sum ฟังก์ชันมาตรฐาน scanf() ใช้รับอินพุทจากแป้นพิมพ์ เมื่อจบในแต่ละคำสั่งให้ปิดท้ายด้วย ; คืนค่า 0 เพื่อระบุว่าโปรแกรมจบการทำงานโดยไม่มีข้อผิดพลาด 6

  7. การเขียนหมายเหตุ (Comment) • เป็นการเขียนอธิบายการทำงานเพื่อให้เข้าใจและอ่านโปรแกรมได้ง่ายขึ้นและจะไม่ถูกประมวลผล • รูปแบบการเขียนหมายเหตุ /* … ข้อความที่ต้องการเขียนอธิบาย(หลายบรรทัด)… */ // … ข้อความที่ต้องการเขียนอธิบาย (หนึ่งบรรทัด)… • /* arithmetic • expression */ เช่น //create 22/06/2552

  8. \a ตัวอักษรเรียกความสนใจ(Beep) \a ตัวอักษรเรียกความสนใจ(Beep) \n ขึ้นบรรทัดใหม่(newline) \\ backslash \? เครื่องหมายคำถาม \’ฝนทอง \”ฟันหนู ค่าคงที่อักขระพิเศษ

  9. ตำแหน่งที่อยู่(address) ข้อมูลที่เก็บ(data) 0000 32 1 ช่อง = 1 ไบต์ (8 บิต) 0001 67 0002 255 0003 0 0004 121 : : โครงสร้างหน่วยความจำ 9

  10. ชนิดข้อมูล 10

  11. ตำแหน่ง ค่า 10 : : 0 1000 2 a 5 1001 30 0 1002 211 b 15 1003 5 0 1004 8 sum 1005 23 : : ตัวแปร (Variable) • ใช้แทนการอ้างถึงหน่วยความจำ ณ ตำแหน่งหนึ่ง ๆ • เพื่อใช้ในการเก็บข้อมูล (ที่เปลี่ยนค่าได้) ในขณะประมวลผล short a, b, sum; a = 10; b = 5; sum = a+b; bมีค่า 5 (อ้างถึงค่า) bมีค่า 1002 (อ้างถึงตำแหน่ง) 11

  12. กฏในการตั้งชื่อตัวแปร (Variable) • ประกอบด้วยอักษร ตัวเลข และเครื่องหมาย underscore ( _ ) • ตัวแรกต้องเป็นตัวอักษรหรือ เครื่องหมาย underscore ( _ ) • ความยาว 1-32 ตัวอักษร • ห้ามมีเครื่องหมายอื่นยกเว้น $ • Case sensitive • ห้ามตั้งชื่อซ้ำกับคำสงวน (Reserve words)

  13. คำสงวนในภาษาC auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof while do

  14. รูปแบบการประกาศชนิดตัวแปรรูปแบบการประกาศชนิดตัวแปร typevariable-list [=value] ; • variable-listหมายถึงชื่อตัวแปรที่ต้องการ ประกาศ ถ้ามีมากกว่า 1 ตัว แยกกันด้วยเครื่องหมาย คอมม่า( , ) • typeหมายถึงชนิดของตัวแปร • valueหมายถึงค่าเริ่มต้นที่ต้องการกำหนดให้กับ ตัวแปร

  15. ตัวอย่าง การประกาศชนิดตัวแปร int a=1; int lower; float man,ratio; double point; char ch,c=‘5’,name;

  16. ค่าคงที่ #include <stdio.h> #define PI 3.414 int main() { printf("%.3f",PI); getch(); return 0; } const.c 3.414

  17. นิพจน์ (Expression) • นิพจน์ หมายถึง การนำตัวแปร ค่าคงที่ มาสัมพันธ์กันโดยใช้เครื่องหมายอย่างหนึ่งอย่างใดเป็นตัวเชื่อม เช่น นิพจน์คณิตศาสตร์นิพจน์ภาษา C a + b cd (a+b)/ (c*d) 10x + 3xy + 10y 10 * x + 3*x*y + 10*y

  18. กฎเกณฑ์ในการเขียนนิพจน์กฎเกณฑ์ในการเขียนนิพจน์ • 1. ห้ามเขียนตัวแปร 2 ตัวติดกันโดยไม่มีเครื่องหมาย เช่น ab ในภาษา C ต้องเขียน a*b จะเขียนเป็น ab ไม่ได้เพราะจะถือเป็นชื่อตัวแปรตัวเดียวชื่อ ab ไม่ใช่ค่า a คูณ b • 2. ถ้าเขียนนิพจน์โดยมีค่าของตัวแปรหรือค่าคงที่ต่างชนิดกันในนิพจน์เดียวกัน ภาษา C จะเปลี่ยนชนิดของข้อมูลที่มีขนาดเล็กให้เป็นชนิดของข้อมูลที่ใหญ่ขึ้น เช่น

  19. ข้อมูลชนิดตัวอักษร • ตัวอักษร A-Z, 0-9 และสัญลักษณ์ต่าง ๆ ข้อมูล ชนิดตัวอักษรจะใช้จำนวน 8 บิตในการเก็บตัวอักษร 1 ตัว ซึ่งในภาษาซีไม่มีข้อมูลชนิดข้อความ หรือ สตริง (String) ข้อมูลชนิดข้อความจะประกอบด้วยตัวอักษรหลาย ๆ ตัวเรียงติดกันเป็นข้อความ โดยใช้อาร์เรย์ (Array) ในการจัดเก็บ ซึ่งเราเรียกว่า Array of Character อาร์เรย์ที่ใช้เก็บข้อมูลชนิดข้อความ จะต้องมีจำนวนมากกว่าความยาวของข้อความ หรือสตริงอย่างน้อย 1 ตัวอักษร เพื่อใช้เก็บสตริงศูนย์ (Null String) เพื่อบอกให้ทราบว่า สิ้นสุดความยาวของข้อความ ซึ่งในภาษาซีจะใช้ \0 แทนสตริงศูนย์

  20. เครื่องหมายคณิตศาสตร์เครื่องหมายคณิตศาสตร์ • เครื่องหมายคณิตศาสตร์ (Arithmetic Operators) เครื่องหมาย ความหมาย ตัวอย่าง +การบวกA + B -การลบ A - B *การคูณA * B /การหารA / B %การหารเอาแต่เศษไว้5%3 = 2 (Modulus) --การลดค่าลงครั้งละ 1A--มีค่าเท่ากับ A = A-1 ++การเพิ่มค่าขึ้นครั้งละ 1A++มีค่าเท่ากับ A = A+1

  21. นิพจน์คณิตศาสตร์ (Expression) • นิพจน์คณิตศาสตร์ประกอบด้วย ตัวแปร หรือ ค่าคงที่ ที่เชื่อมกันด้วยเครื่องหมายคณิตศาสตร์ การเขียนนิพจน์คณิตศาสตร์จะคล้ายกับสมการคณิตศาสตร์ เช่น x = (n1 + n2) x10 • เมื่อเขียนเป็นนิพจน์คณิตศาสตร์จะได้ดังนี้ x = (n1 + n2) * 10 • นิพจน์ที่อยู่ชั้นในสุดจะถูกประมวลผลก่อน เครื่องหมายคณิตศาสตร์ที่มีลำดับเดียวกันจะถูกประมวลผลจากซ้ายไปขวา

  22. operator ความหมาย + การบวก - การลบ และ unary operator * การคูณ / การหารซึ่งจะเป็นการหาผลลัพธ์จากการหาร % ( modulo) การหาเศษ(remainder) ที่เป็นจำนวนเต็มจากการหาร (operand ต้องเป็นจำนวนเต็มทั้งคู่) 2. ตัวดำเนินการเลขคณิต(arithmetic operators) เป็นตัวดำเนินการที่ทำให้เกิดการกระทำทางคณิตศาสตร์ประกอบด้วย

  23. ตัวอย่าง แสดงขั้นตอนการทำงานของตัวดำเนินการ • 4 + 3 * 2 4 + 6 • 9 * 2 - 15/3 + 7 18 - 5 + 7 13 + 7 20

  24. จงหาค่านิพจน์ต่อไปนี้จงหาค่านิพจน์ต่อไปนี้ -(-5+(2*4-1))+((6+2)*5+8)/4 -(-5+(8-1))+(8*5+8)/4 -(-5+7)+(40+8)/4 -(2)+48/4 -2+12 10

  25. ลำดับการประมวลผลเครื่องหมายคณิตศาสตร์ลำดับการประมวลผลเครื่องหมายคณิตศาสตร์

  26. ตัวอย่าง เช่น • 2+8*2 = 18 นำ 8 คูณ 2 ได้ 16 แล้วบวกด้วย 2 • (2+8)*2 = 20 นำ 8 บวก 2 ได้ 10 แล้วคูณด้วย 2 • 4/2*3 = 6 นำ 4 หารด้วย 2 ได้ 2 แล้วคูณด้วย 3 • ++ n หมายถึง เพิ่มค่า n อีก 1 • -- n หมายถึง ลดค่า n ลง 1 • y = x+1 หมายถึง การเพิ่มค่า y อีก 1 หรือมีค่า เท่ากับ y = x++ หรือ ++x • y = x-1 หมายถึง การลดค่า y ลง 1 หรือมีค่า เท่ากับ y = x-- หรือ --x

  27. แบบฝึกหัดท้ายบท • จงหาผลลัพธ์ของนิพจน์ต่อไปนี้ เมื่อกำหนดให้ n1=5 และ n2=10 1.1 x = (n1 + n2) / 3 1.2 x = n1 + n2 / 3 1.3 x = n2%n1 1.4 x = n1-- 1.5 x = n2++ 2. จงหาค่าของนิพจน์ต่อไปนี้ ถ้ากำหนดให้ a = 2, b = 3, c = 4, d = 5, e = 6 และ f = 8 2.1 a + e / f -- * c 2.2 (f - e) * (c / a) 2.3 a * d / a + e / b 2.4 a * (d / (a + e)) / b

  28. แบบฝึกหัดท้ายบท

  29. ทำใบงานที่ 2.1

  30. ตำแหน่ง ค่า : : 0020 2 arr 89 50 0021 30 0 0 0022 211 0023 5 0024 8 0025 23 0026 33 0027 12 : : อาร์เรย์และสตริง • ข้อมูลแบบอาร์เรย์เป็นการรวมกลุ่มข้อมูลชนิดเดียวกันไว้เป็นแถวลำดับ • จัดเป็นตัวแปรแบบตัวชี้ประเภทหนึ่ง short arr[3]; arr[0] = 50; arr[2] = 89; arrมีค่า 20 arr[0] มีค่า 50 arr[1]มีค่า211 arr[2]มีค่า89 31

  31. ผลลัพธ์: H e l ข้อมูลประเภทสายอักขระ (สตริง) • “สตริง”คืออาร์เรย์ของอักขระโดด (array of char) char s[5] = "Hello"; printf("%c %c %c\n", s[0], s[1], s[2]); 0 1 2 3 4 S H e l l o 32

  32. การรับ/แสดงผล • ฟังก์ชันมาตรฐาน (เพื่อการรับ/แสดงผลข้อมูล) ถูกเตรียมไว้ในเฮดเดอร์ไฟล์“stdio.h” • ฟังก์ชันรับข้อมูล • scanfสำหรับตัวแปรทุกชนิด (ระบุด้วย %format) • ฟังก์ชันแสดงผลข้อมูล (Output Function) • printf สำหรับตัวแปรทุกชนิด (ระบุด้วย %format) 33

  33. หน่วยความจำ : 2 30 65 5 ผลลัพธ์: 8 c (as a number) = 65 c (as a character) = A 23 c : การแสดงผลข้อมูล • ทุกอย่างในหน่วยความจำล้วนเป็นตัวเลข • การแสดงผลลัพธ์ด้วยฟังก์ชัน printfจึงต้องระบุรูปแบบตามที่เราต้องการจะเห็น int c = 65; printf("c (as a number) = %d\n", c); printf("c (as a character) = %c\n", c); 34

  34. %format ใน scanf และ printf 35

  35. ผลลัพธ์: Enter your name and age: Tony 38 Hello Tony. You are 38 years old. ตัวอย่างการใช้ scanf char name[20]; int age; printf("Enter your name and age: "); scanf("%s %d", name, &age); printf("Hello %s. You are %d years old.\n", name, age); 36

  36. START START Statement1 Statement Statement2 END Statement3 โปรแกรมที่มีคำสั่งเดียว Statementn END โปรแกรมที่มีหลายคำสั่ง การไหลของโปรแกรม • โปรแกรมแบบง่าย ทำงานรวดเดียวจากบนลงล่าง 37

  37. Relational Operators • ใช้สำหรับเปรียบเทียบความสัมพันธ์ของค่าคงที่หรือตัวแปร(Operand)ที่กำหนดให้

  38. Expression • ใช้เรียกแทนการนำค่าคงที่ หรือตัวแปร(Operand) เขียนร่วมกับตัวดำเนินการ (Operator)

  39. Relational Operators • ตัวอย่างการประมวลผลของ Relational Operators

  40. Logical (Bitwise) Operators • ใช้สำหรับเปรียบเทียบ ค่าคงที่หรือตัวแปร(Operand) เขียนร่วมกับตัวดำเนินการทางตรรกะ (Logical Operator)

  41. AND Operators • ตัวดำเนินการ และจะเป็นจริงก็ต่อเมื่อ ตัวแปรทุกตัวมีค่าเป็นจริงนอกจากนั้นเป็นเท็จทั้งหมด

  42. AND Operators • ตัวอย่างการประมวลผลของ AND Operators

  43. OR Operators • ตัวดำเนินการ หรือจะเป็นเท็จก็ต่อเมื่อ ตัวแปรทุกตัวมีค่าเป็น เท็จนอกจากนั้นเป็นจริงทั้งหมด

  44. OR Operators • ตัวอย่างการประมวลผลของ OR Operators

  45. ตัวอย่างการเปรียบเทียบตัวอย่างการเปรียบเทียบ • ตัวอย่างการเปรียบเทียบ

  46. ลำดับความสำคัญ (Precedence)ของตัวดำเนินการ • แสดงลำดับความสำคัญ จากมากไปหาน้อย ในการประมวลผล ตัวดำเนินการต่างๆ

  47. ลำดับความสำคัญ (Precedence)ของตัวดำเนินการ(ต่อ) • แสดงลำดับความสำคัญ จากมากไปหาน้อย ในการประมวลผล ตัวดำเนินการต่างๆ

  48. ตัวอย่างการประมวลผล โดยพิจารณาลำดับความสำคัญ

  49. การควบคุมการไหลของโปรแกรมการควบคุมการไหลของโปรแกรม • คำสั่งกำหนดเงื่อนไข • โครงสร้าง if • โครงสร้าง if…else • โครงสร้าง ifแบบหลายเงื่อนไข • โครงสร้าง switch-case • คำสั่งวนซ้ำ • โครงสร้าง while loop • โครงสร้าง do…while loop • โครงสร้าง for loop • โปรแกรมย่อย (ฟังก์ชัน) 50

More Related