500 likes | 601 Views
โครงสร้างภาษาซีเบื้องต้น. ใช้สำหรับ Turbo C++ Version 3.0. โปรแกรมภาษา. ในการเขียนโปรแกรมคอมพิวเตอร์ ด้วยภาษาระดับต่ำหรือระดับสูง จะต้องเปลี่ยนภาษานั้นให้เป็นภาษาเครื่อง เพื่อให้เครื่องคอมพิวเตอร์ทำงานได้ โปรแกรมต้นฉบับ ( Source Program ) โปรแกรมที่เครื่องทำงานได้ ( Executable Program )
E N D
โครงสร้างภาษาซีเบื้องต้นโครงสร้างภาษาซีเบื้องต้น ใช้สำหรับ Turbo C++ Version 3.0
โปรแกรมภาษา ในการเขียนโปรแกรมคอมพิวเตอร์ ด้วยภาษาระดับต่ำหรือระดับสูง จะต้องเปลี่ยนภาษานั้นให้เป็นภาษาเครื่อง เพื่อให้เครื่องคอมพิวเตอร์ทำงานได้ โปรแกรมต้นฉบับ (Source Program) โปรแกรมที่เครื่องทำงานได้ (ExecutableProgram) • การเขียนโปรแกรมด้วยแอสเซมบลี (ภาษาระดับต่ำ) เป็นภาษาเครื่อง ขั้นตอนการแปลงภาษาแอสเซมบลีเป็นภาษาเครื่อง
โปรแกรมภาษา • การเขียนโปรแกรมด้วยภาษาระดับสูงเป็นภาษาเครื่อง • อินเทอร์พรีเตอร์ (Interpreter) • คอมไพเลอร์ (Compiler) ขั้นตอนการแปลภาษาโปรแกรม
ขั้นตอนพัฒนาโปรแกรม การเขียนโปรแกรมคอมพิวเตอร์ให้ทำงานได้ตามเราต้องการ ผู้เขียนโปรแกรมจะต้องรู้ว่าจะให้โปรแกรมทำอะไร มีข้อมูลอะไร และต้องการอะไรจากโปรแกรม รวมทั้งรูปแบบการแสดงผลด้วย โดยทั่วไปจะมีขั้นตอนการพัฒนาโปรแกรม ดังนี้ • การกำหนดและวิเคราะห์ปัญหา • การเขียนผังงานและซูโดโค๊ด • การเขียนโปรแกรม • การทดสอบและแก้ไขโปรแกรม • การทำเอกสารและบำรุงรักษาโปรแกรม
แนะนำภาษาซี • ภาษาที่เป็นโครงสร้าง • คำสั่งประกอบด้วยพจน์ (term) ซึ่งจะมีลักษณะเหมือนกับนิพจน์ทางพีชคณิต • มีส่วนขยายเป็นคำหลัก (keyword) ในภาษาอังกฤษ เช่น if, else, for, do และ while • สามารถใช้งานในระดับต่ำ (low-level) ได้ • สามารถใช้กับงานด้านโปรแกรมระบบ (system programming) เช่น เขียนโปรแกรมระบบปฏิบัติการ (operating system) หรือใช้กับงานทั่ว ๆ ไป • สามารถย้ายไปทำงานในเครื่องอื่นได้
ประวัติภาษาซี • ภาษาซีพัฒนาขึ้นมาในปี 1970 โดย Dennis Ritchieแห่ง Bell Telephone Laboratories, Inc. (ปัจจุบันคือ AT&T Bell Laboratories) • ต้นกำเนิดมาจากภาษา 2 ภาษา คือ ภาษา BCPL และ ภาษา B • ภาษาซีนั้นถูกใช้งานอยู่ เพียงใน Bell Laboratories จนกระทั่งปี 1978 Brian Kernighan และ Ritchie นั้นเป็นที่รู้จักกันในชื่อของ "K&R C" • ในกลางปี 1980ภาษาซีก็กลายเป็นภาษาที่ได้รับความนิยม
Preprocessor directive Global Declarations main function void main(void) { } int function () { } User define functions Local Declarations Local Declarations User define functions Statements ; Statements ; โครงสร้างโปรแกรมภาษาซี โครงสร้างภาษาซีประกอบด้วยหลายส่วน แต่ในการเขียนไม่จำเป็นจะต้องเขียนทุกส่วน
การใช้ Preprocessor Directive • ทุกโปรแกรมต้องมี • ใช้เรียกไฟล์ที่โปรแกรมใช้ในการทำงานร่วมกัน • ใช้กำหนดค่าคงที่ให้กับโปรแกรม • เริ่มต้นด้วยเครื่องหมาย # • ที่เราจะใช้กันมี 2 directives คือ • #include ใช้สำหรับเรียกไฟล์ที่โปรแกรมใชในการทำงาน • #define ใช้สำหรับกำหนดมาโครที่ให้กับโปรแกรม
การใช้ #include วิธีการใช้งาน #include <ชื่อไฟล์>หรือ #include “ชื่อไฟล์” ตัวอย่าง #include <stdio.h>(เป็นการเรียกใช้ไฟล์ stdio.h เข้ามาในโปรแกรม) #include <mypro.h>(เป็นการเรียกใช้ไฟล์ mypro.h เข้ามาในโปรแกรม) < > จะเรียกไฟล์ใน directory ที่กำหนดโดยตัวคอมไพล์เลอร์“ ” จะเรียกไฟล์ใน directory ทีทำงานอยู่ในปัจจุบัน
การใช้ #define วิธีการใช้งาน #define ชื่อ ค่าที่ต้องการ ตัวอย่าง #define START 10 (กำหนดค่า START = 10) #define A 3*5/4 (กำหนดค่า A=3*5/4) #define pi 3.14159 (กำหนดค่า pi = 3.14159) #define sum(a,b) a+b(กำหนดค่า sum(ตัวแปรที่1, ตัวแปรที่2) = ตัวแปรที่1+ตัวแปรที่2
ส่วนประกาศ (Global Declarations) • เป็นการประกาศตัวแปรเพื่อใช้งานในโปรแกรม โดยตัวแปรนั้นสามารถใช้ได้ในทุกที่ในโปรแกรม • เป็นส่วนที่ใช้ในการประกาศ Function Prototype ของโปรแกรม • ส่วนนี้ในบางโปรแกรมอาจจะไม่มีก็ได้ ตัวอย่าง int summation(float x, float y) ; (ประกาศ functionsummation) int x,y ; (กำหนดตัวแปร x,y เป็นจำนวนเต็ม) float z=3; (กำหนดตัวแปร z เป็นจำนวนจริง)
ส่วนประกาศ (Global Declarations) ตัวอย่าง #include <stdio.h> int feet,inches; void main() { feet = 6; inches = feet * 12; printf("Height in inches is %d",inches); } ผลการทำงาน Height in inches is 72
ฟังก์ชันหลักของโปรแกรม (Main Function) • ส่วนนี้ทุกโปรแกรมจะต้องมี โดยโปรแกรมหลักจะเริ่มต้นด้วย main() และตามด้วยเครื่องหมายปีกกาเปิด ‘{’ และปีกกาปิด ‘}’ • ระหว่างปีกกาจะประกอบไปด้วยคำสั่ง(Statement) ต่างๆ ที่จะให้โปรแกรมทำงาน • แต่ละคำสั่งจะต้องจบด้วยเซมิโคลอน ‘;’ (Semicolon) #include <stdio.h> void main(void) { ... Statement ; }
ฟังก์ชันหลักของโปรแกรม (Main Function) ตัวอย่าง #include <stdio.h> int feet,inches; void main() { feet = 6; inches = feet * 12; printf("Height in inches is %d",inches); } ผลการทำงาน Height in inches is 72
การสร้างฟังก์ชันใช้งานเอง (User Define Function) • สร้างฟังก์ชันหรือคำใหม่ ขึ้นมาใช้งานตามที่เราต้องการ • ระหว่างปีกกาจะประกอบด้วยคำสั่ง(Statement) ต่างๆ ที่จะให้ฟังก์ชันทำงาน • สามารถเรียกใช้ภายในโปรแกรมได้ทุกที่ #include <stdio.h> int function() void main(void) { ... Statement ; } int function() { Statement ; ... return (int value); }
การสร้างฟังก์ชันใช้งานเอง (User Define Function) ตัวอย่าง #include <stdio.h> int Feet2Inch(int); int feet,inches; void main() { feet = 6; inches = Feet2Inch(feet); printf("Height in inches is %d",inches); } int Feet2Inch(int f) { return f*12; } ผลการทำงาน Height in inches is 72
การใช้คำอธิบาย (Program Comments) • ใช้เขียนส่วนอธิบายโปรแกรม (คอมเมนต์) • ช่วยให้ผู้ศึกษาโปรแกรมภายหลังเข้าใจการทำงานของโปรแกรม • ส่วนของคำอธิบายจะถูกข้ามเมื่อคอมไพล์โปรแกรม การเขียนส่วนอธิบายโปรแกรม (comments)ทำได้ 2 วิธีคือ //สำหรับคำอธิบายไปจนถึงท้ายบรรทัด และ /*คำอธิบาย */ลักษณะการใช้เหมือนวงเล็บนั้นเอง
การใช้คำอธิบาย (Program Comments) ตัวอย่าง #include <stdio.h> // Change Feet to Inches void main() // main function { // Start int feet,inches; feet = 6; // feet 6 inches = feet * 12; // inches feet * 12 printf("Height in inches is %d", inches); // write inches } // Stop ผลการทำงาน Height in inches is 72
การใช้ printf() เป็นคำสั่งที่ใช้ในการแสดงผลออกทางจอภาพ โดยมีรูปแบบการใช้งานดังนี้ printf(“controlหรือ format string”, variable list …); control หรือ format string เป็นส่วนที่ใส่ข้อความที่จะแสดงผล และส่วนควบคุมลักษณะการแสดงผล รวมทั้งบอกตำแหน่งที่ตัวแปรจะแสดงผล variable list เป็นตัวแปรที่ต้องการจะแสดงผล ในกรณีที่ต้องการแสดงข้อความ ไม่จำเป็นต้องมีส่วนนี้
โปรแกรมที่ 1 • สร้าง folder ชื่อ 517111/รหัสนักศึกษา • สร้างไฟล์ hello.c โดยให้พิมพ์คำว่า hello world • การใช้งาน turbo c • พิมพ์ชื่อตัวเองเพิ่มอีกหนึ่งบรรทัด F2 Save Alt+F9 Compile Ctrl+F9 Compile & Run Alt+F5 Output
ตัวอย่างโปรแกรม โปรแกรม #include <stdio.h> void main() { printf(“Hello world\n"); printf(“Welcome to Computer Programming 1"); return ; } Backslash n ขึ้นบรรทัดใหม่ ผลการทำงาน Hello world Welcome to Computer Programming 1
คำแนะนำ โปรแกรม #include <stdio.h> main () { clrscr(); …. getch(); } เคลียร์หน้าจอ รอรับค่าจากคีย์บอร์ด
การใช้ Control ด้วย Backslash จากตัวอย่างที่ 3 จะเห็นได้ว่าหากต้องการให้แสดงผลข้ามบรรทัดจะต้องเพิ่ม \n ลงไป เรียกว่า backslash นอกจากนี้ยังมีตัวอื่นๆ เช่น
ตัวอย่างโปรแกรม โปรแกรม #include <stdio.h> main() { printf("%d%5.2f%s", 12, 20.3, "Example"); } ผลการทำงาน 12 20.30 Example %d %5.2f %s คือ รหัสควบคุม
รหัสควบคุมลักษณะ (Format String)
ตัวอย่างโปรแกรม โปรแกรม #include <stdio.h> #define x 65 main() { printf("%d %c %o %x\n", x, x, x, x); printf(“x = %d”, x); } ผลการทำงาน • A 101 41 • X = 65
การจัดการหน้าจอด้วยรหัสควบคุมลักษณะการจัดการหน้าจอด้วยรหัสควบคุมลักษณะ ในกรณีที่ต้องการจัดการหน้าจอแสดงผลสามารถใช้ตัวเลขร่วมกันกับรหัสควบคุมได้ เช่น %5d หมายถึง แสดงตัวเลขจำนวนเต็ม 5 หลักอย่างต่ำ %5.2f หมายถึง แสดงตัวเลขจำนวนจำนวน 5 หลักอย่างต่ำ และ ทศนิยม 2 ตำแหน่ง
X in decimal = 65 X in octadecimal = 101 X in Hexadecimal = 41 Y = 1.234 Y = 1.23e+00 CH = %C SU = “Sipakornuniversity” โปรแกรมที่ 2 • สร้างไฟล์ print.c โดย • กำหนด #define ดังต่อไปนี้ • จำนวนเต็ม X มีค่า 65 • จำนวนจริง Y มีค่า 1.23456 • ตัวอักษร CH มีค่า ‘C’ • ชุดตัวอักษร SU มีค่า “Silpakorn university” • พิมพ์ค่าต่างๆ ที่กำหนด ให้แสดงผลดังรูป
การเก็บค่าในภาษา C • ทำได้ 2 ลักษณะ คือ • แบบค่าคงที่ (Constant) • แบบตัวแปร (Variable) • การสร้างตัวแปร • ต้องรู้ว่าจะใช้ตัวแปรเก็บค่าอะไร • ประกาศตัวแปรให้เหมาะสมกับค่าที่จะเก็บ • ชนิดของตัวแปรหลักในภาษา C • ตัวแปรที่ใช้เก็บอักขระ (Character variable) • ตัวแปรที่ใช้เก็บเลขจำนวนเต็ม (Integer variable) • ตัวแปรที่ใช้เก็บเลขจำนวนจริง (Float variable)
การประกาศตัวแปร รูปแบบของการประกาศตัวแปร ชนิดตัวแปร ชื่อตัวแปร; int i;ประกาศ i ให้ชนิดเป็น integer float realnum;ประกาศ realnum ให้มีชนิดเป็น float char ch;ประกาศ ch ให้ชนิดเป็น character
การประกาศตัวแปรชนิดเดียวกันการประกาศตัวแปรชนิดเดียวกัน • เราสามารถประกาศตัวแปรหลายๆตัว ที่มีชนิดเดียวกันโดยใช้เพียง ประโยค(statement) เดียวได้ โดยใช้รูปแบบ 1. การประกาศทีละตัว เช่น int i; int j; int k; 2. การประกาศพร้อมกันหลายตัว เช่น int i, j, k;
การประกาศตัวแปรพร้อมให้ค่าเริ่มต้นการประกาศตัวแปรพร้อมให้ค่าเริ่มต้น • ในภาษา C ประโยค (statement) ของการประกาศตัวแปร สามารถกำหนดค่าเริ่มต้นให้กับตัวแปรได้ทันที โดยใช้รูปแบบ เช่น int i = 5; ชนิดตัวแปร ชื่อตัวแปร = ค่าเริ่มต้น; • นอกจากนี้ยังสามารถประกาศ หลายๆ ตัวแปรในบรรทัดเดียว กันได้อีก เช่น int i = 5, k = 3, y;
หลักการตั้งชื่อ (Identifier) ชื่อ (Identifier) ไอเดนติฟายเออร์ เป็นชื่อที่ผู้ใช้กำหนดขึ้นในโปรแกรม เช่น ชื่อค่าคงที่ ชื่อตัวแปร ชื่อฟังก์ชัน เป็นต้น • ต้องขึ้นต้นด้วยตัวอักษรภาษาอังกฤษ (ตัวใหญ่หรือเล็กก็ได้) หรือขีดล่าง ‘_’ • ตามด้วยตัวอักษรภาษาอังกฤษ ตัวเลข หรือขีดล่าง (Underscore)‘_’ • ไม่มีช่องว่างหรือตัวอักษรพิเศษอื่นๆ เช่น ‘!’, ‘@’, ‘#’, ‘$’, ‘%’, ‘^’ เป็นต้น • ตัวพิมพ์ใหญ่และเล็กจะเป็นคนละตัวกันเช่น NAME, name, Name, NamE • ห้ามซ้ำกับคำสงวน Reserve Words ของภาษา C • ห้ามตั้งชื่อซ้ำกับ Function ที่อยู่ใน Library ของภาษา C
วีธีการสร้างตัวแปรและกำหนดค่าวีธีการสร้างตัวแปรและกำหนดค่า #include <stdio.h> void main () { int age; char sex; float grade; age = 20; sex = ‘ f ’; grade = 3.14; } #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); ... }
นิพจน์ • นิพจน์อาจประกอบด้วย • ตัวแปร • ค่าคงที่ • การเรียกใช้ฟังก์ชัน • หรือมีตัวดำเนินการร่วมอยู่ก็ได้ a + b x = y c = a + b x == y ++i
ตัวดำเนินการ ลำดับความสำคัญมาก ลำดับความสำคัญน้อย
โปรแกรมที่ 3 • สร้างไฟล์ triangle.c โดยให้ • รับค่าฐานเป็นเลขจำนวนจริง • รับค่าความสูงเป็นเลขจำนวนจริง • คำนวนหาค่าพื้นที่ของสามเหลี่ยม • Area = ½ * ฐาน * สูง
การใช้ scanf() เป็นคำสั่งที่ใช้ในการรับค่า โดยมีรูปแบบการใช้งานดังนี้ scanf(“format string”, address list …); format string เป็นส่วนที่ใช้ในการใส่รูปแบบของการรับข้อมูล address list เป็นตำแหน่งของตัวแปรที่ต้องการจะเก็บข้อมูล
ตัวอย่างโปรแกรม โปรแกรม #include <stdio.h> void main() { int x ; scanf("%d",&x); printf("%d %c", x, x); return ; } ผลการทำงาน 65 65 A 66 66 B
ตัวอย่างโปรแกรม โปรแกรม #include <stdio.h> void main() { char s1[80], s2[80] ; scanf("%[0-9]%[a-zA-Z]", s1, s2); printf("%s %s", s1, s2); return ; } ผลการทำงาน 1234test 1234 test test1234 test
ตัวอย่างโปรแกรม Input Base = 12.0 Input Height = 6.0 Area of triangle is 36.00 Input Base = 3.2 Input Height = 1.2 Area of triangle is 1.92 #include <stdio.h> void main() { float b,h,area; printf("Input Base = "); scanf("%f",&b); printf("Input Height = "); scanf("%f",&h); area = 0.5*b*h ; printf("Area of triangle is %5.2f",area); return ; }
โปรแกรมที่ 4 • สร้างไฟล์ circle.c โดยให้ • รับค่ารัศมีเป็นเลขจำนวนจริง • กำหนดค่าคงที่ PI มีค่า 3.14159 • คำนวนหาค่าพื้นที่ของวงกลม • Area = PI* (รัศมี)2
ตัวอย่างโปรแกรม Input Radias = 12.0 Area of circle is 452.39 /* program to calculate area of a circle */ #include <stdio.h> #define PI 3.14159 main() { float radius, area; printf(“Input Radius = ?"); scanf("%f", &radius); area = PI * radius * radius; printf("Area of circle is %7.2f ", area); }
โปรแกรมที่ 5 • สร้างไฟล์ donut.c โดยให้ • รับค่ารัศมีของวงกลม 2 วง • กำหนดค่าคงที่ PI มีค่า 3.14159 • คำนวนหาค่าพื้นที่ของวงกลมส่วนสีเทา
ตัวอย่างโปรแกรม #include <stdio.h> #define PI 3.14159 main() { float radius1,radius2, area1, area2; printf("Input outer radius ="); scanf(%f, &radius1); printf("Input inner radius ="); scanf(%f, &radius2); if (radius2 < radius1) { area1 = PI * radius1 * radius1; area2 = PI * radius2 * radius2; printf("Area of donut is %5.2f", area1-area2); } }
จบโครงสร้างภาษาซีเบื้องต้นจบโครงสร้างภาษาซีเบื้องต้น Question ?
คำถามเกี่ยวกับ printf() จากส่วนของโปรแกรม yards = 8; feet = yards * 3; printf(“%d yards is \n”, yards); Printf(“%d feet”, feet); ผลการทำงาน คือ ? 8 yards is 24 feet
ตัวอย่างโปรแกรม โปรแกรม #include <stdio.h> void main() { char s1[80], s2[80] ; scanf("%[^0-9]%[^a-zA-Z\n]", s1, s2); printf("%s %s", s1, s2); return ; } ผลการทำงาน test1234 test 1234 1234test 1234