1k likes | 1.22k Views
C. การเขียนโปรแกรม. ด้วยภาษา. ++. โดย...ครูทองสุข เอี่ยมศิริ. สำนักงานเขตพื้นที่การศึกษาฉะเชิงเทรา เขต 1. บทที่ 1. ภาษาซี เบื้องต้น. มีอะไรบ้างในบทนี้. 1.1 บทนำการเขียนโปรแกรม 1.2 ซอฟต์แวร์คืออะไร? 1.3 ภาษาคอมพิวเตอร์ 1.4 โปรแกรมที่เขียนจะทำงานอย่างไร?
E N D
C การเขียนโปรแกรม ด้วยภาษา ++ โดย...ครูทองสุข เอี่ยมศิริ สำนักงานเขตพื้นที่การศึกษาฉะเชิงเทรา เขต 1
บทที่ 1 ภาษาซีเบื้องต้น
มีอะไรบ้างในบทนี้ 1.1 บทนำการเขียนโปรแกรม 1.2 ซอฟต์แวร์คืออะไร? 1.3 ภาษาคอมพิวเตอร์ 1.4 โปรแกรมที่เขียนจะทำงานอย่างไร? 1.5 ไฟล์โปรแกรมที่ได้จากการแปลภาษา 1.7 ประวัติของภาษาซี 1.8 พัฒนาการของคอมไพเลอร์ภาษาซี 1.9 ระบบช่วยเหลือของคอมไพเลอร์ภาษาซี 1.10 สรุป
1.1 บทนำการเขียนโปรแกรม • เราเขียนโปรแกรมไปเพื่ออะไร • เพราะว่าในหลักสูตรที่เรียนอยู่บังคับวิชานี้ • เพราะอาจารย์ให้เขียนโปรแกรมส่งอาทิตย์หน้า • เพราะอยากเพิ่มพูนความรู้ด้านคอมพิวเตอร์ • เพราะต้องการเขียนโปรแกรมไว้ใช้เอง • ฯลฯ • การเขียนโปรแกรมก็เหมือนการแก้โจทย์ปัญหา เราจะต้องทราบว่าเราต้องการอะไรเพื่อสร้างโปรแกรมใหม่ๆ ตามที่เราต้องการ
1.2 ซอฟต์แวร์คืออะไร ? • ซอฟต์แวร์ (Software) หรือโปรแกรมคอมพิวเตอร์(Computer Program) คือโปรแกรมที่ถูกเขียนขึ้นมาจากภาษาคอมพิวเตอร์และถูกแปลงให้เป็นภาษาเครื่องเพื่อให้คอมพิวเตอร์ทำงานอย่างใดอย่างหนึ่งตามที่เราต้องการ • แบ่งออกเป็น 2 ประเภทใหญ่ๆ คือ • System software • Application software
System Software • เป็นโปรแกรมที่ทำงานเกี่ยวกับระบบคอมพิวเตอร์ มีหน้าที่ในการควบคุมอุปกรณ์ฮาร์ดแวร์ทุกชนิด และจัดตารางการทำงานทั้งฮาร์ดแวร์และซอฟต์แวร์ที่ทำงานกับฮาร์ดแวร์ทุกตัวซึ่งก็คือระบบปฏิบัติการ(Operating System:OS) นั่นเอง • ได้แก่ DOS, Windows, Linux, Mac OS, OS/2
Application Software • เป็นโปรแกรมที่ถูกสร้างขึ้นเพื่อทำงานด้านต่างๆ ซึ่งก็ถูกเขียนขึ้นจากโปรแกรมภาษาต่างๆ • เช่น PowerDVD, Windows Media Player, Winamp, Word, Calculator, SPSS • สามารถแบ่งออกได้หลายประเภทดังนี้ • โปรแกรมพิมพ์งาน • โปรแกรมเกม • โปรแกรมยูทิลิตี้ • โปรแกรมมัลติมีเดีย • โปรแกรมสำหรับระบบ • โปรแกรมภาษาสำหรับพัฒนาซอฟต์แวร์
1.3 ภาษาคอมพิวเตอร์ • แบ่งออกเป็น 2 ประเภทใหญ่ๆ คือ • ภาษาระดับต่ำ ได้แก่ ภาษาเครื่อง และภาษา Assembly • ภาษาระดับสูง ได้แก่ Basic, Pascal, Ada, C, Cobol, Fortran และอื่นๆ • ความแตกต่างระหว่างภาษาระดับสูงและระดับต่ำคือ ภาษาระดับต่ำ ควบคุมอุปกรณ์ฮาร์ดแวร์คอมพิวเตอร์ได้ดีกว่า แต่เขียนยาก และยาวมาก ส่วนภาษาระดับสูงเขียนง่ายเข้าใจง่ายกว่าเพราะใกล้เคียงภาษามนุษย์ แต่มีข้อจำกัดในการควบคุมฮาร์ดแวร์
1.4 โปรแกรมที่เขียนขึ้นจะทำงานได้อย่างไร ? • โปรแกรมที่เขียนขึ้นมา ไม่ว่าจะเขียนโดยใช้อิดิเตอร์(editor) อะไรก็ตาม จะได้ซอร์สโค้ด(source code) ซึ่งจะเก็บในรูปแฟ้มข้อมูล ซึ่งจะมีนามสกุลแตกต่างกันไปดังนี้ ภาษา นามสกุล ตัวอย่าง C .c hello.c C++ .cpp hello.cpp Pascal .pas hello.pas Perl .pl hello.pl PHP .php hello.php Java .java hello.java
กระบวนการแปลโปรแกรม ---- ---- ---- ซอร์สโค้ด กระบวนการแปลโปรแกรม โปรแกรมที่สามารพทำงานได้ โดยไม่ต้องมี source code
ตัวแปลภาษา • คอมไพเลอร์(compiler) • คอมไพเลอร์จะอ่านโปรแกรมทั้งหมดก่อน เมื่อเจอข้อผิดพลาดก็จะแจ้งให้แก้ไข แต่ถ้าไม่พบข้อผิดพลาดใดๆ ในโปรแกรม ก็จะแปลให้เป็นโปรแกรมที่พร้อมจะทำงานดังรูป
ตัวแปลภาษา ขอตรวจสอบดูก่อน มีข้อผิดพลาด ไปแก้ไขมาใหม่ Main() { printf(“XX”); printf(“YY”); } ถูกต้อง ผ่านได้ กระบวนการแปลโปรแกรม
ตัวแปลภาษา • อินเตอร์พรีเตอร์(interpreter) • อินเตอร์พรีเตอร์จะอ่านโปรแกรมมาทีละบรรทัดและทำตามคำสั่งแบบบรรทัดต่อบรรทัดถ้าเจอข้อผิดพลาดโปรแกรมจะหยุดและแจ้งให้ทราบว่าผิดพลาด • ตัวอย่างเช่นการแปลภาษา HTML
1.5 ไฟล์โปรแกรมที่ได้จากการแปลภาษา • เมื่อเขียนโปรแกรมเสร็จ ผ่านการแปลภาษาแล้วผลที่ได้ก็จะเป็นไฟล์โปรแกรมที่สามารถนำไปใช้ได้เลย โดยอาจก๊อปปี้ลงดิสก์ไปเปิดที่เครื่องอื่นๆ ได้ ซึ่งจะเป็นไฟล์โปรแกรมแยกจากตัวซอร์สโค้ดที่เราเขียน • ไฟล์โปรแกรมที่ได้นั้นเป็นไฟล์แบบเลขฐานสอง หรือไบนารีไฟล์(.exe)เรียกว่าเอ็กซีคิวเทเบิ้ลไฟล์(executable file)
1.6 ประวัติของภาษาซี • C มีต้นกำเนิดมาจากภาษาคอมพิวเตอร์ยูนิกซ์(UNIX) • นำเอาภาษาเครื่องมาใช้ในการพัฒนาโปรแกรมอื่นๆ และพัฒนาเป็นระบบปฏิบัติการ(OS) และได้สร้างภาษาบี(B) ขึ้นมา เพื่อช่วยให้การเขียนโปรแกรมทำได้ง่ายขึ้น ต่อมา Dennis Ritchie จาก Bell Lab ได้นำภาษานี้มาพัฒนาต่อและใช้ชื่อว่า C เพราะเป็นภาษาต่อจาก B ในยุคนั้นจะทำงานบนยูนิกซ์เป็นส่วนมาก
จากภาษา C สู่ C++ • ภาษา C ได้มีการพัฒนาต่อโดยใช้แนวคิดโปรแกรมเชิงวัตถุ หรือ OOP(Object Oriented Programming) • เกิดภาษาใหม่เรียกว่า “ซี พลัส พลัส” (C++) • ภาษาซียังเป็นต้นฉบับให้กับอีกหลายๆ ภาษาในปัจจุบันเช่น Java, C# (อ่านว่าซีชาร์ป) • C# คือภาษาที่ออกแบบมาเพื่อทำงานบนแพลตฟอร์ม .NET
1.7 พัฒนาการของคอมไพเลอร์ภาษา C • DOS >> Turbo C • Windows >> • Microsoft Visual C++ • Borland C++ • Borland C++ Builder • Symantec C/C++
1.8 ระบบช่วยเหลือของคอมไพเลอร์ภาษา C • เมื่อติดตั้งคอมไพเลอร์ภาษา C แล้วจะมีระบบช่วยเหลือมาให้ด้วย • Visual C++ จะมีระบบช่วยเหลือที่ชื่อ MSDN(Microsoft Developer Network
1.9 สรุป • คอมไพเลอร์ภาษา C ที่ในปัจจุบันมีหลายตัว แต่มีพื้นฐานมาจากมาตรฐานเดียวกันคือ ANSI C ซึ่งจะเป็นมาตรฐานของการเขียนโปรแกรมภาษา C บนยูนิกซ์ Linux หรือ Windows โดยใช้คอมไพเลอร์ Visual C++, Borland C++, GNU C/C++ • ภาษาซีเป็นพื้นฐานของภาษา C++, Java, C# จบแล้วครับ ไม่ยากเลยใช่ไหม
บทที่ 2 รหัสควบคุม และการคำนวณ
มีอะไรบ้างในบทนี้ 2.1 รหัสควบคุมในภาษา C 2.2 ใส่คำอธิบาย(Comment) ลงในโปรแกรม 2.3 การคำนวณในภาษา C 2.4 นิพจน์การคำนวณ 2.5 การคำนวณทศนิยม 2.6 สรุป
2.1 รหัสควบคุมในภาษา C • \a ส่งเสียง Beep • \n ขึ้นบรรทัดใหม่ • \t แท็บในแนวนอน • \b ย้อนกลับไป 1 ตัวอักษร • \v แท็บในแนวตั้ง • \f ขึ้นหน้าใหม่ • \r รหัส Return • \’ แทนตัวอักษร Single Quote(’) • \’’ แทนตัวอักษร Double Quote(’’) • \\ แทนตัวอักษร Backslash(\) • \000 แทนตัวอักษรที่มีค่า ASCII เท่ากับ 000 ในระบบเลขฐานแปด • \xhh แทนตัวอักษรที่มีค่า ASCII เท่ากับ hh ในระบบเลขฐานสิบหก
2.1 รหัสควบคุมในภาษา C • #include<stdio.h> • Void main() • { • printf(“== Welcome == \n\n”); • printf(“Alert\a\n”); • print(“1 2 \b3 4\n”); • printf(“backslash \\ \n”); • printf(“show \” \n”); • printf(“show \ ‘hello\’ \n”); • printf(“ascii \123 \n”); • printf(“ascii \x2e \n”); • }
2.2 ใส่คำอธิบาย(comment)ลงในโปรแกรม • // ใช้ในการใส่คำอธิบายแบบบรรทัดเดียว โดยจะมีผลให้ข้อความใดๆ หลังจากเครื่องหมาย // ไปจนสุดบรรทัดนั้นๆ เป็นคำอธิบายทั้งหมด • /*..*/ ใช้ในการใส่คำอธิบายแบบหลายบรรทัด โดยจะมีผลให้ข้อความใดๆ ที่อยู่ระหว่าง /* และ */ กลายเป็นคำอธิบาย(อาจจะเป็น 1 บรรทัดหรือมากกว่าก็ได้) • เช่น • /* • Program by Sasalak Thongkhao • sasalak@riska.ac.th • */ • //include stdio.h for printf command • #include<stdio.h>
2.3 การคำนวณในภาษาซี • เครื่องหมายหรือโอเปอเรเตอร์(Operator) มีดังนี้ • + เครื่องหมายบวก(Addition) • - เครื่องหมายลบ(Subtraction) • * เครื่องหมายคูณ(Multiplication) • / เครื่องหมายหาร(Division) • % เครื่องหมายหารแบบเอาเศษเป็นคำตอบ(Mod)
2.3 การคำนวณในภาษาซี • ตัวอย่าง math1.c • #include<stdio.h> • void main() • { • Printf(“%d\n”,250+43); • } %d เป็นการกำหนดรูปแบบของผลลัพธ์เป็นจำนวนเต็มฐานสิบ และแทนที่ลงตรงตำแหน่ง %d 293 ผลลัพธ์ที่ได้
2.3 การคำนวณในภาษาซี • ตัวอย่าง math1update.c • #include<stdio.h> • void main() • { • printf(“Answer is %d.\n”,250+43); • printf(“%d %d\n”,5-3,10-2); • printf(“%d \n”,5*5); • printf(“%d \n”,7/3); • printf(“%d \n”,7%3); • } ผลลัพธ์ที่ได้ Answer is 293 2 -22 25 2 1
2.4 นิพจน์การคำนวณ • ลำดับการคำนวณนิพจน์ทางคณิตศาสตร์ • เครื่องหมายที่อยู่หน้าตัวเลข เช่น -2 • (...) วงเล็บ • *,/ เครื่องหมายคูณและหาร • +,- เครื่องหมายบวกและลบ
2.4 นิพจน์การคำนวณ • ตัวอย่าง math2.c • #include<stdio.h> • void main() • { • printf(“A = %d\n”,(10-5)*3+(2+10)/4); • } ผลลัพธ์ที่ได้ A = 18
2.4 การคำนวณทศนิยม • ใช้ %f (f ย่อมาจาก float) • #include<stdio.h> • void main() • { • printf(“Area = %f”,0.43*3*4); • } ผลลัพธ์ที่ได้ Area = 5.160000
2.4 การคำนวณทศนิยม • ตัวอย่าง math4.c • #include<stdio.h> • void main() • { • printf(“Average = %f\n”,(65.5+15.4+22.0)/3); • } ผลลัพธ์ที่ได้ Average = 34.300000
2.5 สรุป ในการคำนวณนั้น ไม่ว่าจะเป็นเลขจำนวนเต็มหรือ เลขทศนิยมก็ตาม เราสามารถใส่นิพจน์ให้กับการคำนวณได้ เช่น การใส่วงเล็บเพื่อให้ลำดับการคำนวณเป็นไปตามที่ ต้องการ และถ้าคาดว่าผลลัพธ์ที่ได้จากการคำนวณจะออกมา เป็นเลขทศนิยมเราจะต้องแสดงค่าโดยใช้ %f เพื่อให้ได้ค่า ที่ถูกต้อง จบแล้วครับ ไม่ยากเลยใช่ไหม
บทที่ 3 ตัวแปรในภาษาซี
มีอะไรบ้างในบทนี้ 3.1 การเก็บค่าในภาษาซี 3.2 กฎการตั้งชื่อตัวแปร 3.3 วิธีการสร้างตัวแปรและการกำหนดค่า 3.4 ภาษาซีกับตัวแปรแบบข้อความ 3.5 การแสดงค่าจากตัวแปร 3.6 การนำตัวแปรไปใช้ในการคำนวณ 3.7 การรับค่ามาเก็บไว้ในตัวแปร 3.8 ค่าคงที่ในภาษาซี 3.9 สรุป
3.1 การเก็บค่าในภาษา C • มี 2 ลักษณะคือ • เก็บค่าแบบค่าคงที่(constant) • เก็บค่าแบบตัวแปร(variable) • ค่าคงที่เมื่อสร้างขึ้นมาแล้วเราจะไม่สามารถเปลี่ยนแปลงแก้ไขค่าได้เลย เช่น a=20; • การเก็บค่าแบบตัวแปรสามารถเปลี่ยนแปลงค่าเป็นอะไรก็ได้ตามที่ต้องการ เช่น char ch;
3.1 การเก็บค่าในภาษา C • การสร้างตัวแปรจะต้องทราบว่าตัวแปรนั้นเก็บค่าอะไร เช่น เลขจำนวนเต็ม เลขทศนิยม ข้อความ หรือตัวอักษร เป็นต้นโดยแบ่งออกเป็นประเภทดังนี้ • Character Variable ตัวแปรที่ใช้เก็บอักขระ • Integer Variable ตัวแปรที่ใช้เก็บเลขจำนวนเต็ม • Float Variable ตัวแปรที่ใช้เก็บเลขจำนวนทศนิยม
Character Variable • แบ่งออกเป็น 2 ลักษณะ คือ • Char เก็บค่า ASCII ของตัวอักษรได้ตั้งแต่ -128 ถึง 127 • Unsigned char เก็บค่า ASCII ของตัวอักษรได้ตั้งแต่ 0-255 • ตัวแปรแบบ character จะใช้ในกรณีที่เราต้องการเก็บอักขระ 1 ตัว เช่น a,b หรือ c เป็นต้น สิ่งที่เราเก็บก็คือ ตัวอักษร 1 ตัว ซึ่งมีค่า ASCII อยู่ระหว่าง 0 ถึง 255 ดังนั้นถ้าเราประกาศตัวแปรแบบ char เราจะใช้ตัวแปรนั้นเก็บข้อมูลได้เป็นค่าใดค่าหนึ่งในรหัส ASCII เท่านั้น
Character Variable • วิธีประกาศตัวแปรแบบ Character เขียนได้ดังนี้ • char ch; • unsigned char c; • ส่วนมากแล้วมักไม่มีความแตกต่างระหว่าง char และ unsigned char ดังนั้นจึงมักประกาศเป็น char เป็นส่วนใหญ่ -128 ถึง127 0 ถึง 255
Integer Variable • แบ่งออกเป็น 2 ประเภท คือ • int หรือ short เก็บเลขจำนวนเต็มตั้งแต่ -32,768 ถึง 32,767 • Long เก็บเลขจำนวนเต็มตั้งแต่ -2,147,483,648 ถึง 2,147,483,647 • วิธีการใช้คือถ้าต้องการตัวเลขจำนวนเต็มมากกว่า 32,767 เราจะต้องประกาศตัวแปรแบบ long ถ้าน้อยกว่าก็ประกาศแบบ int ดังตัวอย่าง
Integer Variable • int a,b,c; • int age; • int height; • long salary,money; • เราประกาศตัวแปร a,b,c ageheight แบบ int เนื่องจาก ต้องการให้เก็บค่าที่อยู่ระหว่าง -32,768 ถึง 32,767 เท่านั้น แต่ salary และ money มีโอกาสจะมีค่ามากกว่า นั้นดังนั้นจึงต้องประกาศเป็น long
Float Variable • แบ่งออกเป็น 3 ประเภท คือ • Float เก็บทศนิยมได้ 3.4E+/-38 (ทศนิยม 7 ตำแหน่ง) • Double เก็บทศนิยมได้ 1.7E+/-308 (ทศนิยม 15 ตำแหน่ง) • Long Double เก็บทศนิยมได้ 1.2E+/-4932 (ทศนิยม 19 ตำแหน่ง) float grade; double rate; long double longrate;
กฎการตั้งชื่อตัวแปร • ต้องไม่มีอักษรพิเศษใดๆ ประกอบอยู่ด้วย เช่น ! @ # $ % ^ & * ( • สามารถใช้เครื่องหมาย underscore ( _ ) ได้ • ชื่อตัวแปรมีตัวเลขปนอยู่ได้ แต่ต้องไม่ขึ้นต้นด้วยตัวเลข • ห้ามมีช่องว่างระหว่างชื่อ • ใช้ได้ทั้งพิมพ์เล็ก และพิมพ์ใหญ่ • ชื่อเหมือนกันแต่เป็นพิมพ์เล็กพิมพ์ใหญ่ ถือว่าคนละชื่อกัน • ห้ามตั้งชื่อซ้ำกับคำสงวน เช่น char long while do
#include<stdio.h> void main() { int age; char sex; float grade; age = 20; sex = ‘f’; grade = 3.14; } 3.3 วิธีการสร้างตัวแปรและการกำหนดค่า • #include<stdio.h> • void main() • { • int age = 20; • char sex = ‘f’; • float grade = 3.14; • }
3.4 ภาษาซีกับตัวแปรแบบข้อความ • นำตัวแปร char มาเรียงต่อกันเรียกว่าตัวแปรแบบสตริง(String) • การประกาศตัวแปรแบบสตริง จะต้องกำหนดขนาดด้วยตัวอย่าง • char name[15] = “Jacky Chan”; • ตัวแปรชื่อ name มีความยาว 15 ช่องตัวอักษร และเก็บข้อความ Jacky Chan เอาไว้ ซึ่งการประกาศตัวแปร 15 ช่องเอาไว้ ที่เหลือจะเป็นช่องว่างเฉยๆ ไม่มีตัวอักษรบรรจุอยู่ J a c k y C h a n 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
3.5 การแสดงค่าจากตัวแปร ผลลัพธ์ที่ได้ • #include<stdio.h> • void main() • { int age = 20; char sex = ‘f’; float grade = 3.14; char name[10] = “malee”; printf(“You are %s\n”,name); printf(“You are %c\n”,sex); printf(“You are %d years old\n”,age); printf(“You grade is %f\n”,grade); • } You are malee You are f You are 20 years old Your grade is 3.140000
ตารางแสดงสัญลักษณ์แสดงผลตารางแสดงสัญลักษณ์แสดงผล สัญลักษณ์ ใช้สำหรับ %d แสดงค่าที่เป็นเลขจำนวนเต็ม %s แสดงค่าที่เป็นสตริง %f แสดงค่าที่เป็นเลขทศนิยม %c แสดงค่าที่เป็นตัวอักษร 1 ตัว %o แสดงค่าของตัวเลขในรูปฐานแปด %x แสดงค่าของตัวเลขในรูปฐานสิบหก
3.6 การนำตัวแปรไปใช้ในการคำนวณ • #include<stdio.h> • void main() • { int a; int b; int c; int ans; a = 20; b = 40; c = 5; ans = (a+b)/c; printf(“Answer is %d\n”, ans); • } ผลลัพธ์ที่ได้ Answer is 12
เครื่องหมายที่ใช้กับตัวแปรเครื่องหมายที่ใช้กับตัวแปร • ++ เพิ่มค่าขึ้น 1 • -- ลดค่าลง 1 • += เพิ่มค่าตามจำนวนที่ต้องการ • -= ลดค่าตามจำนวนที่ต้องการ • *= คูณค่าในตัวแปรด้วยจำนวนที่ต้องการ • /= หารค่าในตัวแปรด้วยจำนวนที่ต้องการ
เครื่องหมายที่ใช้กับตัวแปรเครื่องหมายที่ใช้กับตัวแปร • int a = 5; • int b = 6; คำสั่ง มีผลเหมือนกับ ผลที่ได้ a+=4; a=a+4; บวกค่าอีก 4 b--; b=b-1; ลดค่าลงไป 1 a*=2; a=a*2; a คูณ 2 a/=2 a=a/2; a หารด้วย 2
3.7 การรับค่ามาเก็บไว้ในตัวแปร ผลลัพธ์ที่ได้ • ตัวอย่าง scanf1.c • #include<stdio.h> • void main() • { • int age; • printf(“How old are you ?\n”); • scanf(“%d”,&age); • printf(“You are %d years old.\n”,age); • } How old are you? 20 You are 20 years old.