880 likes | 1.34k Views
Department of Computer Engineering Faculty of Engineering, Prince of Songkla University. 24 1 - 101 แนะนำการเขียนโปรแกรมคอมพิวเตอร์ ( Introduction to computer programming). Department of Computer Engineering Faculty of Engineering, Prince of Songkla University. บทที่ 3.
E N D
Department of Computer Engineering Faculty of Engineering, Prince of Songkla University 241 - 101แนะนำการเขียนโปรแกรมคอมพิวเตอร์(Introduction to computer programming)
Department of Computer Engineering Faculty of Engineering, Prince of Songkla University บทที่ 3 แนะนำการเขียนโปรแกรมด้วยภาษาซี Introduction to C Programming
หัวข้อศึกษา 1. โปรแกรมคอมพิวเตอร์ 2. แนะนำภาษาซีเบื้องต้น 3. อินพุทและเอาท์พุท 4. เครื่องหมายดำเนินการ
1. โปรแกรมคอมพิวเตอร์ • โปรแกรมคอมพิวเตอร์ (Computer Program) คือ ชุดคำสั่งที่เขียนขึ้นเพื่อให้คอมพิวเตอร์ทำงานได้ตามที่ต้องการ • การเขียนโปรแกรม (Programming) คือ การเขียนชุดคำสั่งด้วยภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง เช่น FORTRAN, COBOL, PASCAL, C, C++, Java, Prolog, Lisp เป็นต้น • ไม่ว่าจะเขียนโปรแกรมด้วยภาษาใด ในขั้นตอนสุดท้ายจะต้องมีการแปลให้เป็นภาษาที่คอมพิวเตอร์เข้าใจเสียก่อน
2. แนะนำภาษาซีเบื้องต้น • รูปแบบการทำงานของภาษาซี • ขั้นตอนการสร้างโปรแกรมด้วยภาษาซี • คำสั่งและชุดคำสั่ง • ตัวแปร • ค่าคงที่ • ตัวประมวลผลก่อน • การเขียนคำอธิบาย (Comment)
รูปแบบการทำงานของภาษาซีรูปแบบการทำงานของภาษาซี • ในภาษาซีจะเขียนโปรแกรมโดยการเรียกใช้โปรแกรมย่อยแต่ละชุด ที่เรียกว่า ฟังก์ชัน (Function) • ในหนึ่งโปรแกรมอาจประกอบด้วยหลายฟังก์ชันก็ได้ แต่ละฟังก์ชันจะตั้งชื่อว่าอะไรก็ได้ • โปรแกรมภาษาซีที่สามารถทำงาน (Execute) ได้จะต้องมีอย่างน้อย 1 ฟังก์ชัน ชื่อว่า main
. . . . . . รูปแบบฟังก์ชัน main หรือ ฟังก์ชัน main สามารถเขียนได้หลายรูปแบบ แต่รูปแบบที่แนะนำให้ใช้ คือ int main(void) { return 0; } int main() { return 0; }
ขั้นตอนการสร้างโปรแกรมด้วยภาษาซีขั้นตอนการสร้างโปรแกรมด้วยภาษาซี 1. สร้าง Source File ซึ่งก็คือไฟล์ข้อความ (Text File) ที่ถูกเขียนขึ้นตามหลักไวยากรณ์ (Syntax) ของภาษาซี โดยไฟล์นี้จะต้องตั้งชื่อให้มีนามสกุลเป็น .c
2. การแปลภาษา (Compile) • คอมไพเลอร์ภาษาซี (C Compiler) จะแปลงข้อความที่อยู่ใน Source File ให้กลายเป็นรหัสที่เครื่องคอมพิวเตอร์เข้าใจและเก็บไว้ในอีกไฟล์หนึ่งเรียกว่า Object File • คอมไพเลอร์ภาษาซีที่ได้รับความนิยมมีหลายตัว เช่น - Borland C (DOS, Windows) - GCC (Unix, Linux) - C-Free (Dos, Windows) - MinGW (Windows)
3. การลิงค์ (Link) • ตัวเชื่อม (Linker) จะตรวจสอบจาก Object File ว่ามีการเรียกใช้ฟังก์ชันมาตรฐานที่อยู่ใน C Library หรือไม่ • รวมฟังก์ชันมาตรฐานเหล่านั้นเข้ากับ Object File • ผลของการลิงค์ จะได้เป็นไฟล์ที่ทำงานได้ (Execute File)
C Compiler C Library Linker Execute File Source File Computer Object File Computer
คำสั่งและชุดคำสั่ง • คำสั่ง (Statement) คือ ขั้นตอนในการทำงานหนึ่งขั้นตอน ทุกคำสั่งจะต้องจบด้วยเครื่องหมาย ; เช่น printf("Hello World\n"); • กลุ่มคำสั่ง (Compound Statement) คือ คำสั่งหลายๆ คำสั่งที่อยู่ภายในเครื่องหมายปีกกา เช่น int main() { printf("Hello World\n"); return 0; }
ตัวแปร (Variable) • ตัวแปร คือ ชื่อที่ผู้เขียนโปรแกรมตั้งขึ้นมา เพื่อใช้อ้างอิงพื้นที่เก็บข้อมูลในหน่วยความจำ • ขนาดของตัวแปรจะขึ้นอยู่กับชนิดตัวแปร เช่น int, char, float, double
ชนิดตัวแปร (Variable Type) ชนิดตัวแปร รูปแบบข้อมูล ขนาด (ไบต์) char ตัวอักษร 1 ตัว 1 int จำนวนเต็ม 4 float จำนวนจริง (ทศนิยม 6 ตำแหน่ง) 4 double จำนวนจริง (ทศนิยม 12 ตำแหน่ง) 8
ชนิดตัวแปร (ต่อ) • long - ใช้นำหน้าชนิดตัวแปรอื่น เพื่อเพิ่มขนาดเนื้อที่ที่ใช้เก็บข้อมูล - ได้แก่ long int, long double • unsigned - ใช้นำหน้าชนิดตัวแปรอื่น เพื่อใช้เก็บข้อมูลที่เป็นจำนวนเต็มแบบไม่คิดเครื่องหมาย - ได้แก่ unsigned int, unsigned char, unsigned long int
การตั้งชื่อตัวแปร • อักษรตัวแรกจะต้องเป็นตัวอักษรภาษาอังกฤษหรือเครื่องหมาย _ • สามารถตั้งชื่อตัวแปรโดยใช้ตัวเลขร่วมกับตัวอักษรภาษาอังกฤษได้ แต่ห้ามใช้ตัวเลขเป็นตัวอักษรตัวแรก • ตัวอักษรภาษาอังกฤษตัวพิมพ์เล็กและตัวพิมพ์ใหญ่ถือเป็นคนละตัวกัน
การตั้งชื่อตัวแปร (ต่อ) • ห้ามตั้งชื่อซ้ำกับคำสงวน (Keywords) ซึ่งเป็นคำที่มีอยู่แล้วในภาษาซี auto default float register struct volatile break do far return switch while case double goto short typedef char else if signed union const enum int sizeof unsigned continue extern long static void
ตัวอย่างที่ 1 คำต่อไปนี้สามารถนำมาตั้งเป็นชื่อตัวแปรได้หรือไม่ number 2value grade1 student_id float _score INT
การประกาศตัวแปร • ก่อนที่จะใช้งานตัวแปรใดๆ จะต้องมีการประกาศตัวแปรทุกครั้ง • รูปแบบการประกาศตัวแปร: ชนิดตัวแปรชื่อตัวแปร; • ตัวอย่างเช่น int number; char grade;
ตัวอย่างที่ 2 • จงประกาศตัวแปรชื่อ num_std สำหรับเก็บจำนวนนักศึกษาในชั้นปีที่ 1 • จงประกาศตัวแปรชื่อ grade สำหรับเก็บค่าเกรด (A,B,C,D,E) ในวิชาฟิสิกส์ • จงประกาศตัวแปรชื่อ gpa สำหรับเก็บค่าเกรดเฉลี่ยสะสม
หากต้องการประกาศตัวแปรที่มีชนิดเดียวกันหลายๆ ตัว สามารถเขียนได้ในคำสั่งเดียวโดยใช้เครื่องหมาย , คั่นระหว่างตัวแปร เช่น int a; int b; สามารถเขียนใหม่เป็น int a,b;
การกำหนดค่าให้กับตัวแปรการกำหนดค่าให้กับตัวแปร • ใช้เครื่องหมาย = • ตัวอย่างเช่น int score; score = 80; หมายถึง กำหนดให้ตัวแปร score มีค่าเท่ากับ 80
ตัวอย่างที่ 3 จากคำสั่งต่อไปนี้ int a,b,c; a = 2; b = 3; c = a + b; จงหาค่าของตัวแปร c
ตัวอย่างที่ 4 จากคำสั่งต่อไปนี้ int a,b; a = 2; a = 5; b = a + 4; จงหาค่าของตัวแปร b
ตัวอย่างที่ 5 จากคำสั่งต่อไปนี้ int a; a = 2; a = a + 3; จงหาค่าของตัวแปร a
ค่าคงที่ (Constant) • เลขจำนวนเต็ม • 2, 100, 0, -5 • 012 หมายถึง 128 • 0x5f หมายถึง 5f16 • ใช้เนื้อที่ 4 ไบต์ (เท่ากับตัวแปรแบบ int) • เลขทศนิยม • 1.0, 2.25, 0.00, -10.72 • 4E-6 หรือ 4e-6 หมายถึง 4 x 10-6 • 1.75E+8 หรือ 1.75e+8 หมายถึง 1.75 x 108 • ใช้เนื้อที่ 8 ไบต์ (เท่ากับตัวแปรแบบ double)
ค่าคงที่ (ต่อ) • ตัวอักษร • 'A'หมายถึง ตัวอักษร A • ใช้เนื้อที่ 1 ไบต์ • ข้อความ (String) • "Computer" หมายถึง ข้อความ Computer • ใช้เนื้อที่เท่ากับ จำนวนตัวอักษร + 1 ตัวอักษรปิดท้าย String ซึ่ง ก็คือ '\0' หรืออาจเรียก ว่า Null Character
นิพจน์ (Expression) • นิพจน์ คือ การกระทำเพื่อให้ได้ผลลัพธ์มาหนึ่งค่า • ประกอบด้วย ตัวกระทำ (Operators) และ ตัวถูกกระทำ (Operands) Operator Operator 2 + 3 a - b Operands Operands
การกำหนดค่าเริ่มต้นให้กับตัวแปรการกำหนดค่าเริ่มต้นให้กับตัวแปร • เป็นการกำหนดค่าให้กับตัวแปรพร้อมกับการประกาศตัวแปร • รูปแบบ: ชนิดตัวแปร ชื่อตัวแปร = ค่าเริ่มต้น; • ตัวอย่างเช่น • int num = 2; • char ch = 'A'; • float a = 1.25, b = 0.5; • int std1 = 20, std2;
ตัวประมวลผลก่อน (Preprocessor) • ส่วนที่คอมไพเลอร์จะต้องทำก่อนที่จะเริ่มคอมไพล์โปรแกรม • มักนำหน้าด้วยเครื่องหมาย # #include #define #if #program #endif #error #ifndef #undef #elif #else #ifdef
#include • เป็นการแจ้งให้คอมไพเลอร์นำไฟล์อื่นเข้ามร่วมในการคอมไพล์ • #include <stdio.h> • ให้นำไฟล์ stdio.h มาจากไดเรกทอรีที่ได้กำหนดไว้แล้ว (/usr/include)เข้ามาร่วมในการคอมไพล์ • #include "sample.h" • ให้นำไฟล์ “sample.h” จากไดเรกทอรีปัจจุบันหรือไดเรกทอรีที่กำหนดไว้แล้ว เข้ามาร่วมในการคอมไพล์ • ใช้ในกรณีที่มีการสร้างไฟล์ .h ขึ้นมาเอง
#define • ใช้ในการกำหนดค่าคงที่ เพื่อความสะดวกในการเขียนโปรแกรม • ตัวอย่างเช่น #define PI 3.14159 หมายถึง กำหนดค่าคงที่ชื่อ PIสำหรับใช้แทนค่า 3.14159 #define START_STR "Welcome to my program." หมายถึง กำหนดค่าคงที่ชื่อ START_STRสำหรับใช้แทน ข้อความว่า Welcome to my program.
การเขียนคำอธิบาย (Comment) • มี 2 วิธี คือ • /*.............*/ • //............. • ใช้ในการอธิบายโปรแกรม • ข้อความที่ถูก comment คอมไพเลอร์จะไม่นำมาร่วมในการคอมไพล์
/*Name: Pipat Student ID: 5035512049*/ #include <stdio.h> #define PI 3.14159 int main() { float r,contour,area; r = 2.5; //calculate contour and area of circle contour = 2*PI*r; area = PI*r*r; : : return 0; }
3. อินพุทและเอาท์พุท (Input and Output) • อินพุท (Output) • การรับค่าข้อมูลจากผู้ใช้เข้าไปในเครื่องคอมพิวเตอร์ • อุปกรณ์อินพุทมาตรฐาน (Standard Input) :- คีบอร์ด, เมาส์ • เอาท์พุท (Output) • การแสดงข้อความ หรือค่าตัวแปรใดๆ ให้ผู้ใช้ได้รับรู้ • อุปกรณ์เอาท์พุทมาตรฐาน (Standard Output) :- หน้าจอ, เครื่องพิมพ์, ลำโพง
ฟังก์ชันในการแสดงผลข้อมูลฟังก์ชันในการแสดงผลข้อมูล • ฟังก์ชัน printf • ต้อง include ไฟล์ stdio.h • รูปแบบการใช้: printf(control,argument list);
การใช้ printf ในการแสดงข้อความ • มีเฉพาะส่วน control ตัวอย่างเช่น printf("Computer Engineering"); • ข้อความที่พิมพ์ออกทางหน้าจอคือ Computer Engineering
การใช้ printf ในการแสดงค่าตัวแปร, ค่าคงที่, นิพจน์ • argument list เป็นชุดของตัวแปร, ค่าคงที่, นิพจน์ ที่ต้องการนำมาแสดงผล • หากมีหลายค่าให้ใช้เครื่องหมาย , คั่น ตัวอย่างเช่น int a = 2, b = 3; printf("a = %d and b = %d\n", a,b); printf("a + b = %d", a+b); • ข้อความที่พิมพ์ออกทางหน้าจอคือ a = 2 and b = 3 a + b = 5 • %dเรียกว่า รหัสรูปแบบ (Format Code)
ตัวอย่างที่ 6 จงเขียนผลลัพธ์ของโปรแกรมต่อไปนี้ #include <stdio.h> int main() { int x = 2,y = 5; y = y + x; printf("x = %d, y = %d\n",x,y); printf("value of x-y = %d\n",x-y); return 0; }
รหัสรูปแบบ (Format Code) รหัสรูปแบบ ชนิดตัวแปร รูปแบบการแสดงผล %c char ตัวอักษร 1 ตัว %d int จำนวนเต็มฐานสิบ %f float เลขทศนิยม 6 ตำแหน่ง %s string ข้อความ (String)
รหัสรูปแบบ (ต่อ) รหัสรูปแบบ ชนิดตัวแปร รูปแบบการแสดงผล %ld long int จำนวนเต็มฐานสิบแบบ long %u unsigned int จำนวนเต็มฐานสิบแบบ unsigned %o int จำนวนเต็มฐานแปด %x int จำนวนเต็มฐานสิบหก %e float,double เลขทศนิยมที่มีเลขชี้กำลัง %lf double เลขทศนิยมแบบ double
ตัวอย่างที่ 7 จงเขียนผลลัพธ์ของโปรแกรมต่อไปนี้ #include <stdio.h> int main() { int num = 10; printf("num = %d\n",num); printf("In octadecimal, num = %o\n",num); printf("In hexadecimal, num = %x\n",num); return 0; } num = 10 In octadecimal, num = 12 In hexadecimal, num = a
ตัวอย่างที่ 8 จงเขียนผลลัพธ์ของโปรแกรมต่อไปนี้ #include <stdio.h> int main() { int num1,num2; num1 = 0xb; num2 = 010; printf("num1 = %d\n",num1); printf("num2 = %d\n",num2); return 0; } num1 = 11 num2 = 8
ตัวอย่างที่ 9 จงเขียนผลลัพธ์ของโปรแกรมต่อไปนี้ #include <stdio.h> int main() { float r1; r1 = 12.5; printf("r1 = %f\n",r1); printf("r1 = %e\n",r1); return 0; } r1 = 12.500000 r1 = 1.250000e+01
รหัส ASCII • ASCII ย่อมาจาก American Standard Code for Information Interchange • เป็นรหัสที่ใช้แทนตัวอักษร • รหัส 0 - 127: ตัวอักษรภาษาอังกฤษ, ตัวเลข, รหัสควบคุมพิเศษ เช่น Enter, Back Space, Space Bar, Tab เป็นต้น • รหัส 128 - 255: Graphic Character หรือ ตัวอักษรพิเศษของภาษาอื่นๆ เช่น ภาษาไทย
อักขระหรือตัวอักษร (Characters) • รหัสที่ใช้แทนภาพ เป็นเครื่องหมายย่อยที่สุดในการเขียน • ใช้ตัวแปรชนิด char ในการเก็บข้อมูล • ‘A’ หมายถึง อักษร A มีรหัส ASCII เป็น 65 • ‘a’ หมายถึง อักษร a มีรหัส ASCII เป็น 97 • ‘4’ หมายถึง อักษร 4 มีรหัส ASCII เป็น 52 • ‘\66’ หมายถึง อักษรที่มีรหัส ASCII เป็น 66 ซึ่งก็คืออักษร B
ตัวอย่างที่ 10 จงเขียนผลลัพธ์ของโปรแกรมต่อไปนี้ #include <stdio.h> int main() { char alpha,ch; alpha = 'A'; printf("letter %c ASCII = %d\n",alpha,alpha); alpha = 66; printf("letter %c ASCII = %d\n",alpha,alpha); ch = alpha + 1; printf("ch = %c\n",ch); return 0; } letter A ASCII = 65 letter B ASCII = 66 ch = C
สตริง (String) • กลุ่มข้อมูลที่ประกอบด้วยตัวอักขระเขียนเรียงกันไป โดยจะมีเครื่องหมาย "" (อัญประกาศ หรือ Double Quote) ล้อมรอบอยู่เสมอ • ใช้ตัวแปรชนิด char ในการเก็บข้อมูล แต่ต้องมีการกำหนดจำนวนตัวอักษรด้วย เช่น char name[10]; เป็นประกาศตัวแปรชื่อ name เป็น string ที่เก็บตัวอักขระได้ 9 ตัว รวมกับตัวอักขระปิดท้ายอีก 1 ตัวคือ '\0'รวมเป็น 10 ตัว
ตัวอย่างการใช้ตัวแปรแบบ string #include <stdio.h> int main() { char my_name[10] = “Gerrard"; printf("My name is %s\n",my_name); printf("%s %s\n","Hello",my_name); return 0; } My name isGerrard Hello Gerrard