ดาวน์โหลดงานนำเสนอ
งานนำเสนอกำลังจะดาวน์โหลด โปรดรอ
1
การเขียนโปรแกรมคอมพิวเตอร์
COMPUTER PROGRAMMING ผู้สอน : อาจารย์วิริยะ ไตรปัญญาศาสตร์
2
C Programming Language:
Introduction high-level programming language developed in 1972 by Dennis-Ritchie at AT&T Bell Labs Used to develop UNIX Used to write modern operating systems Hardware independent (portable)
3
General Structure of a C Program
(1) Preprocessor Directives (2) main function heading { (3) Variable Declarations; Executable Statements; } We already covered Preprocessor Directives, now more on variable declarations and executable statements.
4
Preprocessor directive
A Simple C Program: /* A first program in C */ comment #include <stdio.h> Preprocessor Directives int main( ) { printf( "Welcome to C!\n" ); return 0; } Welcome to C! ผลจากการรันโปรแกรม Comments Text surrounded by /* and */ is ignored by compiler Used to describe program Preprocessor directive Tells computer to load contents of a certain file Library: <stdio.h> allows standard input/output operations
5
#include <stdio.h>
Preprocessor Directive in Our Simple C Program #include <stdio.h> stdio stands for standard input & output. stdio.h is a header file that contains constants and declarations needed to use input & output library functions such as printf and scanf. Since we are using printf library function in our simple C program, we include stdio.h in our program using preprocessor directives.
6
Example : C standard Library
stdio.h conio.h math.h string.h stdlib.h ctype.h
7
Main function C programs contain one or more functions,
int main() C programs contain one or more functions, exactly one of which must be main Parenthesis used to indicate a function int means that main "returns" an integer value Braces ({ and }) indicate a block of function body
8
“return” Statement return 0; Right brace }
A way to exit a function return 0, in this case, means that the program terminated normally Right brace } Indicates end of main function has been reached
9
การเขียนหมายเหตุ (Comments)
/* ข้อความหมายเหตุ */ ตัวอย่าง /* example program */ ส่วนในภาษา C++ จะใช้เครื่องหมาย // // C programming example
10
ตัวอย่างการใช้ comment ใน C
/*======================================================== * Purpose: Show comment. * Author: Viriya T. * Date: June-2018 * ======================================================*/ #include <stdio.h> #include <conio.h> int main() ตัวอย่างการใช้ comment ใน C++ // ************************************************************** // * Purpose: Show comment. // * Author: Viriya T. // * Date: June-2018 #include <stdio.h> #include <conio.h> int main()
11
a = 5; b = 10; c = a + b; a = 5; b = 10; c = a + b;
การเขียนคำสั่งในโปรแกรม รูปแบบการเขียนคำสั่งในภาษา C เป็นดังนี้ C statement; [C statement;] … ตัวอย่าง a = 5; b = 10; c = a + b; หรือ a = 5; b = 10; c = a + b; 11
12
อักขระที่ใช้ในภาษา C ข้อมูล (Data) และชนิดของข้อมูล (Data Type)
สามารถแบ่งออกเป็น 3 ชนิด ดังนี้คือ 1. ตัวอักษร (Alphabetic characters) ได้แก่ A - Z, a - z 2. ตัวเลข (Numeric characters) ได้แก่ 0 - 9 3. ตัวอักขระพิเศษ (Special characters) ได้แก่ + - * / ( ) { } % , ; : ... ข้อมูล (Data) และชนิดของข้อมูล (Data Type) ข้อมูลในภาษา C แบ่งเป็น 2 ชนิด ดังนี้ 1. ค่าคงที่ที่ใช้ในการคำนวณ แบ่งออกเป็น 1.1 ค่าคงที่จำนวนเต็ม (Integer constant) ได้แก่ ค่าคงที่จำนวนเต็ม ไม่มีจุดทศนิยม
13
1.2 ค่าคงที่ทศนิยม (Floating-point constant)
ได้แก่ ตัวเลขที่มีค่าเป็นทศนิยม สามารถแบ่ง ย่อยออกเป็น 3 ชนิด คือ 1.2.1 เลขจำนวนจริง (Floating point) 1.2.2 เลขจำนวนจริงละเอียด 2 เท่า (Double precision floating point) 1.2.3 เลขจำนวนจริงยาวละเอียด 2 เท่า (Long double precision floating point) 1.3 ค่าคงที่ที่อยู่ในระบบเลขฐานแปด (Octal constant) สามารถเขียนได้โดยใช้เลขศูนย์ (0) นำหน้าค่าในเลขฐานแปด เช่น 062 มีค่าเป็น (62)8 มีค่าเป็น (413)8
14
1.4 ค่าคงที่ที่อยู่ในระบบเลขฐานสิบหก
(Hexadecimal constant) สามารถเขียนได้โดย ใช้เลขศูนย์ (0) และตัวอักษร (X) นำหน้า เช่น 0XA15 มีค่าเป็น (A15)16 0XCF8 มีค่าเป็น (CF8)16 1.5 ค่าคงที่ที่เป็นอักขระ (Character constant) ได้แก่ ค่าคงที่ที่เป็นตัวเลขหรือตัวอักษรหรือตัว อักขระควบคุม ที่มีขนาด 1 ตัวอักขระ (1 byte) และเขียนอยู่ภายใต้เครื่องหมาย Apostrophe (‘ ‘) เช่น ‘a’, ‘\n’
15
ASCII Table : 65 97 15
16
2. ค่าคงที่ที่ไม่ใช้ในการคำนวณ
จะเป็นค่าตัวเลข ตัวอักษร หรือเครื่องหมายใดๆ ที่ เขียนภายในเครื่องหมายคำพูด (quotation mark) เรียกว่า String constant เช่น “KMUTT”, “mth165”
17
Table 1 : Data types, sizes, and ranges
Type Size (bits) Range unsigned char to 255 char to 127 unsigned int (32) 0 to 65535 short int 16 (32) to 32767 int (32) to 32767 unsigned long to long to float x to 3.4 x 1038 double x to 1.7 x 10308 long double x to 1.1x near pointer Not applicable far pointer Not applicable
18
Data Types int float double char Integers: e.g., 205, -15, 2559
Real Numbers: e.g., 3.5, , 0.2, 1.2e5, e12, e-81 float double Characters: e.g., 'A', 'b', '9' char
19
ตัวแปร (Variable)และการตั้งชื่อตัวแปร
หมายถึง ชื่อที่ผู้เขียนโปรแกรมตั้งขึ้นเพื่อใช้เก็บค่าข้อมูล ต่างๆ ที่ต้องการนำมาใช้งานในโปรแกรม มีกฎเกณฑ์การตั้งชื่อ ดังนี้ 1. ต้องขึ้นต้นด้วยตัวอักษรหรือเครื่องหมาย underscore ( _ ) 2. ตัวต่อไปเป็นตัวอักษรผสมกับตัวเลขและเครื่องหมาย _ ได้ 3. ชื่อต้องไม่มีการเว้นวรรค 4. ห้ามตั้งชื่อซ้ำกับคำสงวน (Reserved word) 5. ชื่อตัวแปรที่กำหนดขึ้นเขียนเป็นตัวเล็ก ตัวใหญ่ หรือ เขียนปนกัน จะถือว่าเป็นคนละชื่อกัน เช่น sum SUM Sum
20
Reserved Words 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 volatile do if static while
21
Variable Declarations
Syntax : int variable_list; char variable_list; double variable_list; A variable list consists of variable names seperated by commas (“,”) Purpose : - Specify the type of our variables. - Reserve memory location for them. Example : int integer1, integer2, sum; double x,y,z; char st_name;
22
ชนิดของตัวแปร (Type of Variable)
ในภาษา C สามารถทำการประกาศชนิดของตัวแปรดัง รูปแบบต่อไปนี้ type variable_list; ตัวอย่าง int a, b, c; หมายความว่า a, b, c เป็นตัวแปรที่ใช้สำหรับเก็บค่าที่เป็น เลขจำนวนเต็มที่มีค่าอยู่ระหว่าง ถึง 32767 ตัวอย่าง float salary, sale, tax, net_pay; int i, j, k;
23
การกำหนดค่าให้ตัวแปร
การกำหนดค่าให้กับตัวแปรจะใช้เครื่องหมาย = จะเป็น การนำค่าที่อยู่ด้านขวาของเครื่องหมาย = ไปเก็บไว้ในตัวแปรที่ อยู่ด้านซ้ายมือของเครื่องหมาย = ตัวอย่างเช่น int x, y; x = 5; y = 10; นิพจน์ (Expression) หมายถึงการนำค่าคงที่ ตัวแปรมาสัมพันธ์กันโดยใช้เครื่อง หมายในการคำนวณหรือการเปรียบเทียบหรือตรรกศาสตร์ อย่างใดอย่างหนึ่งในการสร้างความสัมพันธ์ นิพจน์แบ่งได้เป็น
24
1. นิพจน์คณิตศาสตร์ (Arithmetic Expression)
หมายถึงการนำค่าคงที่และตัวแปรมาสัมพันธ์กันโดยใช้ เครื่องหมายคณิตศาสตร์ (Arithmetic operator) ตัวอย่างเช่น 2x + 5y เขียนเป็นภาษา C คือ 2 * x + 5 * y x + y เขียนเป็นภาษา C คือ (x + y) / a a แต่ถ้าเขียนเป็น x + y/a ความหมายจะผิดไปเป็น x + y x2 + y2 เขียนเป็นภาษา C คือ x * x + y * y
25
เครื่องหมายคณิตศาสตร์
เครื่องหมาย ความหมาย ตัวอย่าง + การบวก a + b - การลบ x - y * การคูณ c * d / การหาร m / n % การหารที่คิดเฉพาะเศษ 9%4 (จะได้ 1) -- ลดค่าครั้งละ 1 a-- (คือ a = a - 1) ++ เพิ่มค่าครั้งละ 1 b++ (คือ b = b + 1)
26
2. นิพจน์ตรรกศาสตร์ (Logical Expression)
หมายถึงการนำค่าคงที่ ตัวแปรหรือนิพจน์มาสัมพันธ์กัน โดยใช้เครื่องหมายเปรียบเทียบ (Relational operator) และ เครื่องหมายตรรกศาสตร์ (Logical operator) ผลที่ได้จะเป็นจริง หรือ เท็จ คือ มีค่าเป็น 1 (จริง) หรือ 0 (เท็จ)
27
เครื่องหมายเปรียบเทียบ
เครื่องหมาย ความหมาย ตัวอย่าง > มากกว่า a > b >= มากกว่าหรือเท่ากับ x >= y < น้อยกว่า c < d <= น้อยกว่าหรือเท่ากับ m <= n == เท่ากับ i == j != ไม่เท่ากับ z != 0 เครื่องหมายตรรกศาสตร์ 1. && (AND) เช่น P && Q 2. | | (OR) เช่น P | | Q 3. ! (NOT) เช่น ! P
28
Truth Table ตัวอย่าง A > B A > B && A > C
1 A B A || B 1 ตัวอย่าง A > B A > B && A > C A > B > C (เขียนแบบนี้ไม่ได้)
29
ลำดับความสำคัญของเครื่องหมายในการคำนวณของนิพจน์
นิพจน์ในภาษา C จะทำการคำนวณจากซ้ายไปขวาตาม ลำดับความสำคัญของเครื่องหมายดังต่อไปนี้ คือ 1. ถ้ามีวงเล็บ ( ) จะทำการคำนวณในวงเล็บก่อนและถ้ามี วงเล็บซ้อนกันจะทำวงเล็บในสุดก่อน 2. ! (ทำจากขวาไปซ้าย) 3. * / % 5. < <= > >= 6. = = ! = 7. && 8. | |
30
ตัวอย่าง a * b / c * d - x / y * z / u + m / n
ตัวอย่าง a * b + x / y * 2 a * b + x / y * 2 3 4 ตัวอย่าง a * b / c * d - x / y * z / u + m / n
31
กฎเกณฑ์อื่นๆ ในการเขียนนิพจน์
1. ถ้าเขียนนิพจน์โดยมีค่าตัวแปรหรือค่าคงที่ต่างชนิดกัน ในนิพจน์เดียวกัน ในการคำนวณของภาษา C จะเปลี่ยนชนิด ของข้อมูลที่มีขนาดเล็กให้เป็นชนิดของข้อมูลที่ใหญ่ขึ้น 2. การหาร มีหลักการคำนวณที่ควรระวัง คือ Integer ผลลัพธ์เป็น Integer Integer Float ผลลัพธ์เป็น Float Float
32
int y = 3; float z = 3; ตัวอย่าง x / z จะได้ผลลัพธ์เป็น 2.333333
int x = 7; int y = 3; float z = 3; ถ้าเขียน x / y จะได้ผลลัพธ์เป็น 2 x / z จะได้ผลลัพธ์เป็น y / x จะได้ผลลัพธ์เป็น
33
ตัวอย่าง 5 * / 3 * 2 5 * / 3 * 2 4 24 ตัวอย่าง 4 * 3 / 5 * / 4 * 8 / / 2
34
ตัวอย่าง 1 < 3 || 2 < 4 && 4 > 5
1 < 3 || 2 < 4 && 4 > 5 ตัวอย่าง (1 < 3 || 2 < 4) && 4 > 5 ตอบ ? 1 1 1
35
y = ++x; (จะได้ x เป็น 6 y เป็น 6)
การใช้เครื่องหมาย ++ และ - - 1. การเพิ่มค่าและการลดค่าภายในตัวแปรตัวเดิมโดยใช้ เครื่องหมาย ++ และ -- (ครั้งละ 1) เช่น n = n + 1; เขียนใหม่เป็น n++; หรือ ++n; m = m - 1; เขียนใหม่เป็น m--; หรือ --m; 2. ถ้าเครื่องหมาย ++ หรือ -- อยู่หน้าตัวแปรจะเพิ่ม หรือลดค่าของตัวแปรก่อน แล้วจึงกำหนดค่าให้กับตัวแปรที่อยู่ ด้านซ้ายของเครื่องหมาย = เช่น x = 5; y = ++x; (จะได้ x เป็น 6 y เป็น 6)
36
y = x++; (จะได้ x เป็น 6 y เป็น 5)
3. ถ้าเครื่องหมาย ++ หรือ -- อยู่หลังตัวแปรจะ กำหนดค่าให้กับตัวแปรที่อยู่ด้านซ้ายของเครื่องหมาย = ก่อน แล้วจึงเพิ่มหรือลดค่าของตัวแปร เช่น x = 5; y = x++; (จะได้ x เป็น 6 y เป็น 5) กรณีที่มีการเพิ่มค่าในตัวแปรมากกว่า 1 เช่น x = x + 3; เขียนใหม่เป็น x += 3; เครื่องหมายคำนวณอื่นๆ a = a a -= 3 a = a * 3 a *= 3 a = a / 3 a /= 3 a = a % 3 a %= 3
37
จากสมการคณิตศาสตร์จงเขียนเป็นภาษา C ที่ถูกต้อง
ตอบ ตอบ
38
คำสั่งต่างๆ ในภาษา C คำสั่งในภาษา C สามารถแยกได้ 2 ลักษณะ คือ 1. คำสั่งที่เป็นรูปคำสั่งจริงๆ เช่น คำสั่งกำหนดค่า, คำสั่งควบคุม เป็นต้น 2. คำสั่งที่เป็นรูปของฟังก์ชัน เช่น คำสั่งรับข้อมูล, คำสั่งแสดงผลข้อมูล เป็นต้น
39
คำสั่งต่างๆ ในภาษา C ตัวอย่าง x = 5; y = a + b * c + d;
คำสั่งต่างๆ ดังต่อไปนี้ คำสั่งคำนวณ (Assignment Statement) เป็นคำสั่งให้เครื่องทำการคำนวณนิพจน์อย่างใดอย่าง หนึ่งหรือใช้กำหนดค่าเริ่มต้นให้กับตัวแปร รูปแบบคำสั่ง variable = expression; ตัวอย่าง x = 5; y = a + b * c + d;
40
var-list เป็นค่าตัวแปร ค่าคงที่ หรือนิพจน์ที่ต้องการนำมา
ฟังก์ชันในการแสดงผลข้อมูล ฟังก์ชัน printf( ) เป็นฟังก์ชันที่ใช้ในการแสดงผลข้อมูล ที่เก็บอยู่ในตัวแปร ค่าคงที่ หรือนิพจน์ ออกมาแสดงทางจอภาพ มีรูปแบบดังนี้ printf("control string",var-list); var-list เป็นค่าตัวแปร ค่าคงที่ หรือนิพจน์ที่ต้องการนำมา แสดงผล ถ้ามีมากกว่า 1 ค่า จะเขียนแยกกันโดย ใช้เครื่องหมาย (,) คั่น control string รหัสควบคุมการพิมพ์จะต้องเขียนอยู่ ภายใต้เครื่องหมาย “ ” ซึ่งสามารถเขียนได้ 2 ลักษณะ คือ
41
1. เป็นข้อความที่เป็นคำอธิบายที่ต้องการให้แสดงผลออกมา เช่น
printf("C programming example"); 2. เป็นรหัสรูปแบบ(Format Code) ทุกรหัสรูปแบบจะต้องอยู่หลัง เครื่องหมาย % รหัสรูปแบบที่ใช้ในการแสดงผลมีรูปแบบดังนี้ คือ รหัสรูปแบบ ความหมาย %c ใช้กับตัวแปรที่เก็บค่าที่เป็นตัวอักษรเพียงตัวเดียว %d ใช้กับเลขจำนวนเต็ม %e ใช้กับเลขทศนิยมในรูป e ยกกำลัง %f ใช้กับเลขทศนิยม %o ใช้กับเลขฐานแปด %s ใช้กับ string
42
รหัสรูปแบบ ความหมาย %u ใช้กับเลขจำนวนเต็มไม่คิดเครื่องหมาย %x ใช้กับเลขฐานสิบหก %p ใช้กับตัวชี้ตำแหน่ง (pointer) ใน control string นอกจากส่วน Format code แล้ว ยังมีอีกส่วน หนึ่งเรียกว่า Carriage control ใช้รหัสควบคุมการแสดงผล มีรูปแบบดังนี้ \n - การขึ้นบรรทัดใหม่ \t - การเว้นระยะในแนวนอนครั้งละ 8 คอลัมน์ \f - ให้เว้นการแสดงผลไปหนึ่งหน้า \r - ให้ตัวชี้ตำแหน่ง (cursor) กลับไปที่ต้นบรรทัด \b - ให้ cursor ถอยหลังกลับไปทีละ 1 ตัวอักษร
43
printf("%d\t%d\t%d\n",a,b,c);
Memory printf("Example\n"); printf("a = %d\n",a); printf("a\tb\tc\n"); printf("%d\t%d\t%d\n",a,b,c); a b c 5 10 15 ผลการรันโปรแกรม
44
การปรับเปลี่ยนรูปแบบการแสดงผลข้อมูล
การแสดงผลข้อมูลสามารถปรับเปลี่ยนรูปแบบของข้อมูล โดยแทรกตัวกำหนดลงไประหว่าง % กับ Format code ซึ่ง มีรูปแบบที่ใช้ดังนี้ 1 - ให้พิมพ์ข้อมูลชิดขอบซ้ายของ Field (โดยปกติจะ พิมพ์ชิดขวา) เช่น %-12d 2 สตริงตัวเลข เป็นการกำหนดความกว้างของ Field เช่น %8d หมายถึง ให้พิมพ์ด้วยความกว้าง 8 คอลัมน์ 3 .สตริงตัวเลข เป็นการกำหนดจำนวนตำแหน่งทศนิยม ที่จะพิมพ์ เช่น %10.2f
45
%8d %d %8.2f %f %-8d 1 2 5 . 6 ความกว้าง 8 column (ช่อง) บนจอภาพ
6 %d %8.2f %f %-8d แต่ละช่องที่แสดงตัวอักขระบนจอภาพ 1 ช่อง/ 1 ตัวอักขระ
46
printf("a = %d b = %d a + b = %d\n",a,b,a+b); printf("a\tb\ta+b\n");
int a,b; a = 5; b = 8; printf("a = %d b = %d a + b = %d\n",a,b,a+b); printf("a\tb\ta+b\n"); printf("%d\t%d\t%d\n",a,b,a+b); ผลการรันโปรแกรม
47
ฟังก์ชันในการรับข้อมูล
ฟังก์ชัน scanf( ) เป็นฟังก์ชันที่ใช้ในการรับค่าข้อมูล จากแป้นพิมพ์ (keyboard) เข้ามาเก็บไว้ในตัวแปร มี รูปแบบดังนี้ scanf("format code",&var); เครื่องหมาย & (ampersand) จะเป็นการอ้างถึง ตำแหน่ง (memory address) ที่เก็บข้อมูลของตัวแปร ถ้ามีตัวแปรมากกว่า 1 ตัว จะใช้ เครื่องหมาย , คั่น ระหว่างตัวแปร
48
printf("input date d,m,y : "); scanf("%d,%d,%d",&d,&m,&y); _
ตัวอย่าง scanf("%d",&a); printf("input date d,m,y : "); scanf("%d,%d,%d",&d,&m,&y); ผลการรันโปรแกรม _ Cursor จะกระพริบรอรับการคีย์ข้อมูล input date d,m,y : _
49
จงเขียนโปรแกรมเพื่อหาผลคูณของเลขทศนิยม 2 จำนวน โดยให้ผลลัพธ์เป็นเลขจำนวนเต็ม ซึ่งมีเงื่อนไขว่า ถ้าผลคูณของเลขทั้งสองมีค่าเลขทศนิยมตำแหน่งที่ 1 มีค่ามากกว่าหรือเท่ากับ 5 ให้ปัดขึ้นอีก 1 แต่ถ้าไม่ใช่ให้ปัดทิ้ง ดังตัวอย่างต่อไปนี้ ตัวอย่างที่ 1 a = 1.25 และ b = 1.75 ซึ่ง a * b ได้ ผลลัพธ์ให้เก็บที่ตัวแปร c ได้ 2 ตัวอย่างที่ 2 a = 1.5 และ b = ซึ่ง a * b ได้ 2.625 ผลลัพธ์ให้เก็บที่ตัวแปร c ได้ 3
50
c = a*b+0.5 c a,b Algorithm คำนวณแบบ Integer = float * float +0.5
START a,b c = a*b+0.5 c STOP
51
c a , b c = a*b+0.5 #include <conio.h> #include <stdio.h>
int main() { float a,b; int c; printf("input a,b : "); scanf("%f,%f",&a,&b); c = a * b + 0.5; printf("c = %d",c); getch(); return 0; } START a , b c = a*b+0.5 c STOP
52
ตัวอย่าง ให้เขียนผังงานและโปรแกรมเพื่อแสดงการ
ป้อนข้อมูลจำนวนเงินซึ่งเป็นเลขจำนวนเต็ม แล้วคำนวณหาว่าจำนวนเงินดังกล่าวจะ ประกอบด้วย ธนบัตรใบละ 500,100, 20 บาทอย่างละกี่ใบและประกอบด้วยเหรียญ 5, 1 บาทอย่างละกี่เหรียญ
53
OUTPUT INPUT PROCESS Algorithm คำนวณแบบ Integer = Integer / Integer
START INPUT MONEY B500 = MONEY / 500 B100 = (MONEY – B500 * 500)/ 100 PROCESS B20 = (MONEY - B500 * B100 * 100) / 20 C5 = (MONEY - B500 * B100 * B20 * 20) / 5 C1 = MONEY - B500 * B100 * B20 * 20 - C5 * 5 OUTPUT B20,C5,C1 B500,B100, STOP
54
#include <conio.h>
#include <stdio.h> int main() { int money,b500,b100,b20,c5,c1; printf("input money : "); scanf("%d",&money); b500 = money/500; b100 = (money - b500*500)/100; b20 = (money - b500*500 – b100*100)/20; c5=(money–b500*500-b100*100-b20*20)/5; c1=money–b500*500-b100*100-b20*20-c5*5; printf("b500 = %d\nb100 = %d\n",b500,b100); printf("b20 = %d\nc5 = %d\nc1 = %d",b20,c5,c1); getch(); return 0; }
55
จากส่วนของโปรแกรมที่กำหนดให้จงแสดงผลลัพธ์เมื่อ
RUN โปรแกรมในส่วนที่กำหนดให้นี้ int i , j , k , m, n; float x , y , z; i = 4; j = 5; k = 6; x = 5; y = 6; z = 9; n = k * i / j * (k * j) + i * j / k * z / i * x – k / i * y / x; m = i * j / k < x * y / z && k / x > i / y ; printf(“%d”,n); printf(“%d”,m); คำตอบ n คือ คำตอบ m คือ
56
คำสั่งควบคุม (Control Statement)
โปรแกรมหนึ่งๆ เมื่อผู้เขียนโปรแกรมป้อนคำสั่งใน โปรแกรมเข้าเครื่องคอมพิวเตอร์เรียบร้อยแล้ว เมื่อสั่งให้ คอมพิวเตอร์ทำงานตามคำสั่งในโปรแกรม โดยปกติจะ ทำงานเรียงลำดับลงมาตั้งแต่ต้นโปรแกรมจนจบโปรแกรม แต่ถ้าผู้เขียนต้องการจัดลำดับขั้นตอนการทำงานของคำสั่ง ใหม่ เช่น ให้ทำการข้ามไปทำคำสั่งใดคำสั่งหนึ่งก่อน หรือ ให้วนกลับไปทำซ้ำคำสั่งชุดเดิม ลักษณะการทำงานแบบนี้ จะต้องใช้คำสั่งควบคุมดังต่อไปนี้
57
คำสั่ง goto ตัวอย่าง goto process_1;
เป็นคำสั่งให้ไปทำงานยังคำสั่งหนึ่งคำสั่งใดโดยไม่มี เงื่อนไข (Unconditional branch statement) มีรูปแบบ คือ goto statement-label; statement-label หมายถึง ชื่อประจำคำสั่งที่ต้องการให้ไป ทำงานมีรูปแบบ คือ statement-label : ตัวอย่าง goto process_1;
58
process_1 : goto process_1; process_1 : …………… …….
แบบย้อนกลับ process_1 : ……. goto process_1; เกิดการทำงานวนไม่รู้จบ แบบข้ามไป goto process_1; …….. process_1 : …………… คำสั่งจะไม่ถูกทำงานเลย
59
คำสั่ง if 2. เท็จ (0) มีเงื่อนไข (Conditional branch statement) คำสั่ง
เป็นคำสั่งให้ไปทำงานยังคำสั่งใดคำสั่งหนึ่งโดย มีเงื่อนไข (Conditional branch statement) คำสั่ง ควบคุมแบบ if จะมีเงื่อนไขให้ตัดสินใจก่อน แล้วจึง ไปทำงาน โดยผลของการตัดสินใจเป็นไปได้ 2 ทาง คือ 1. จริง (1) 2. เท็จ (0)
60
if (condition) statement;
if Statement Syntax: if (condition) statement; Example for if Statement if ( score >= 60 ) printf( "Passed \n" );
61
if/else Statement else statement-2;
มีรูปแบบ คือ if (condition) statement-1; else statement-2; condition หมายถึงนิพจน์ตรรกศาสตร์ที่เป็นเงื่อนไข statement-1, statement-2 หมายถึงคำสั่งในภาษา C
62
หลักการทำงาน 1. ถ้า condition เป็นจริง จะทำงานใน statement-1 2. ถ้า condition เป็นเท็จ จะทำงานใน statement-2 yes no condition statement statement-2
63
if(a > b) max = a; else max = b;
ตัวอย่าง ให้แสดงการหาค่าที่มากที่สุดจากตัวเลข 2 ตัว a > b max = a max = b Yes No if(a > b) max = a; else max = b;
64
else interest = principal * 0.04;
For example, it might be that if the value of the variable "principal" is greater than 10000, then the "interest" should be computed by multiplying the principal by 0.05; if not, then the interest should be computed by multiplying the principal by A program needs some way of expressing this type of decision. In C, it could be expressed using the following "if statement": if (principal > 10000) interest = principal * 0.05; else interest = principal * 0.04;
65
ตัวอย่าง การเขียนผังงานและโปรแกรม คำนวณหาค่า S = ? เมื่อกำหนด
ให้เขียนผังงานและโปรแกรมเพื่อแสดงการ คำนวณหาค่า S = ? เมื่อกำหนด
66
ใช้ผังงานในการแสดง Algorithm ในการแก้ปัญหาโจทย์
START S = 0 N = 1 S = S + N /(N + 1) N = N + 1 No N <=99 S Yes STOP
67
ผลการรันโปรแกรม START #include <conio.h>
#include <stdio.h> int main() { int s,n; s = 0; n = 1; p_1 : s = s + n/(n+1); n++; if(n <= 99)goto p_1; printf(“s = %d",s); getch(); return 0; } S = 0 N = 1 S = S + N /(N + 1) N = N + 1 No N <=99 S Yes STOP ผลการรันโปรแกรม
68
ในกรณีที่ statement หลัง if หรือ หลัง else มีมากกว่า 1 คำสั่ง
จะต้องทำการกั้น block ให้กับกลุ่มคำสั่ง โดยใช้เครื่องหมาย { } เพื่อแสดงการเริ่มต้นและสิ้นสุดของกลุ่มคำสั่ง มีรูปแบบดังนี้ if (condition) { …... statement; ….. } else { …...
69
if(a > b) { max = a; goto p-1; } max = b; p-1 : .……….
Yes a > b No max = a max = b if(a > b) max = a; max = b; if(a > b) { max = a; goto p-1; } max = b; p-1 : .………. 69
70
else if (cond-2) statement-2; else if (cond-3) statement-3;
การเขียนคำสั่ง if ซ้อนกันในลักษณะ Nested if มีรูปแบบดังนี้ if (cond-1) statement-1; else if (cond-2) statement-2; else if (cond-3) statement-3; else statement-4; if(cond-1) if(cond-2) if(cond-3) statement-3; else statement-5; else statement-6;
71
คำสั่ง for { statement or group of statements; }
เป็นคำสั่งให้คอมพิวเตอร์ทำงานแบบวนรอบซ้ำคำสั่งชุด เดิม มีรูปแบบ คือ for (starting value ; condition ;changes) { statement or group of statements; } ตัวอย่าง for (a=1; a <= 20 ; a++)
72
หลักการทำงานของ for กำหนดค่าเริ่มต้นของตัวแปรควบคุม ทดสอบเงื่อนไข
เท็จ ทดสอบเงื่อนไข ทำคำสั่งถัดไปที่อยู่นอก Loop จริง ทำคำสั่งภายใน Loop เพิ่มหรือลดค่าของตัวแปร
73
ให้เขียนผังงานและโปรแกรมเพื่อแสดงการคำนวณหาค่า S = ? เมื่อกำหนด
#include <conio.h> #include <stdio.h> int main() { int s,n; s = 0; n = 1; p_1 : s = s + n; n++; if(n <= 99)goto p_1; printf(“s = %d",s); getch(); return 0; } #include <conio.h> #include <stdio.h> int main() { int s,n; s = 0; for(n=1;n<=99;n++) s = s + n; printf(“s = %d",s); getch(); return 0; } 73
74
ตัวอย่าง การเขียนโปรแกรมโดยใช้คำสั่ง for
จงเขียนผังงานและโปรแกรมเพื่อทดสอบว่าตัวเลขตั้งแต่ 1 ถึง 999 มีตัวเลขที่เป็นเลขคี่และหารด้วย 7 ลงตัวมีอยู่กี่ตัว
75
printf("Output n = %d\n",n); getch(); return 0;
#include <conio.h> #include <stdio.h> int main() { int n,i; n = 0; for(i=1;i<=999;i++) if(i%2==1 && i%7==0) n++; printf("Output n = %d\n",n); getch(); return 0; }
76
Nested Loops Loops may be nested just like other control structures (e.g. the if statement). A nested loop consists of an outer loop with one or more inner loops.
77
= 1 + 125 + 27 = 153 ตัวอย่าง การเขียนโปรแกรมโดยใช้คำสั่ง for
จงเขียนผังงานและโปรแกรมเพื่อทดสอบว่าตัวเลขตั้งแต่ 100 ถึง 999 มีตัวเลขใดบ้างที่มีคุณสมบัติดังนี้ = = = 153
78
#include <stdio.h>
#include <conio.h> int main() { int n1,n2,i,j,k; for(i=1;i<=9;i++) { for(j=0;j<=9;j++) { for(k=0;k<=9;k++) { n1 = i*100 + j*10 + k; n2 = i*i*i + j*j*j + k*k*k; if(n1==n2) printf("n = %d\n",n1); } } } getch(); return 0; }
79
statement or group of statements; }
คำสั่ง while เป็นคำสั่งที่เขียนขึ้นเมื่อต้องการให้คอมพิวเตอร์ทำงาน เป็นแบบวนรอบ (loop) ซ้ำคำสั่งชุดเดิม มีรูปแบบ คือ while (condition) { statement or group of statements; } ตัวอย่าง while (num <=20) {
80
หลักการทำงานของ while
เท็จ ทดสอบเงื่อนไข ทำคำสั่งถัดไปที่อยู่นอก Loop จริง ทำคำสั่งภายใน Loop 80
81
statement or group of statements; } while (condition);
คำสั่ง do while คำสั่ง do while จะทำคำสั่งที่ต้องการก่อนแล้วจึง ตรวจสอบเงื่อนไข ถ้าเป็นจริงก็จะกลับขึ้นมาทำคำสั่งที่ต้องการ ใหม่อีกรอบจนกว่าเงื่อนไขจะไม่จริงก็จะออกจาก loop มี รูปแบบ คือ do { statement or group of statements; } while (condition); ตัวอย่าง do { } while (score > 0);
82
หลักการทำงานของ do while
ทำคำสั่งภายใน Loop เท็จ ทดสอบเงื่อนไข ทำคำสั่งถัดไปที่อยู่นอก Loop จริง 82 82
83
ตัวอย่าง การเขียนโปรแกรมในการใช้คำสั่งแบบ loop
ให้เขียนโปรแกรมเพื่อคำนวณหาค่า ห.ร.ม. ของตัวเลข 2 จำนวน เช่น ถ้าป้อนข้อมูล 16, 24 จะได้ห.ร.ม. คือ 8
84
#include <conio.h>
#include <stdio.h> int main() { int a,b,n,i,gcd; printf("input a,b : "); scanf("%d,%d",&a,&b); if(a < b) n = a; else n = b; for(i=1 ; i<=n ; i++) { if(a%i==0) if(b%i==0) gcd = i; } printf("gcd = %d",gcd); getch(); return 0; }
85
{ if(a%i==0) if(b%i==0) gcd = i; i++; } #include <conio.h>
#include <stdio.h> int main() { int a,b,n,i,gcd; printf("input 2 number a,b : "); scanf("%d,%d",&a,&b); if(a < b) n = a; else n = b; i=1; while(i<=n) { if(a%i==0) if(b%i==0) gcd = i; i++; } printf("gcd = %d",gcd); getch(); return 0; }
86
#include <conio.h>
#include <stdio.h> int main() { int i,j,k,n; printf("input level no. : "); scanf("%d",&n); for(i=1;i<=n;i++) printf("*"); printf("\n"); for(i=1;i<=n-2;i++) { for(j=1;j<=i;j++) printf(" "); for(j=1;j<=n-2-i;j++) printf("+"); printf("*\n"); } for(k=1;k<n;k++) getch(); return 0; } ตัวอย่างโปรแกรมพิมพ์รูป ตามที่กำหนดเพื่อฝึกการเขียนโปรแกรมแบบวนลูป
87
จงเขียนโปรแกรมสั่งพิมพ์รูปตามแบบที่กำหนดโดยป้อนข้อมูลตัวเลข(1 - 9)เพื่อกำหนดจำนวนชั้นที่ต้องการพิมพ์
* 1 7 2 6 3 5 4 87
88
คำสั่ง break คำสั่ง continue
เป็นคำสั่งให้ออกจากการทำงานของคำสั่ง case หรือให้ การทำงานแบบวนรอบของคำสั่ง for, while, do while เพื่อให้ ไปทำงานยังคำสั่งที่อยู่ถัดต่อจากคำสั่งของ loop มีรูปแบบคือ break; คำสั่ง continue คำสั่ง continue ถ้าอยู่ใน loop ของคำสั่ง while และ do while จะทำให้โปรแกรมข้ามไปทดสอบเงื่อนไข แต่สำหรับ forโปรแกรมจะไปเพิ่มหรือลดค่าของตัวแปรควบคุมตามที่ กำหนดไว้จากนั้นจึงทดสอบเงื่อนไข มีรูปแบบ คือ continue;
89
ตัวอย่าง การเขียนโปรแกรมโดยใช้คำสั่ง break
ให้เขียนผังงานและโปรแกรมเพื่อแสดงการป้อน ข้อมูลคะแนนสอบของนักศึกษากลุ่มหนึ่งในวิชา CSS 112 แล้วคำนวณหาค่าเฉลี่ยของวิชานั้นสำหรับ นักศึกษากลุ่มนั้น
90
ผังงานแสดง Algorithm ในการเขียนโปรแกรมแบบที่ 1 แบบที่ไม่รู้จำนวนข้อมูล
START SUM = 0 เงื่อนไขการหยุดป้อนข้อมูล N = 1 SCORE Yes SCORE < 0 N = N - 1 No SUM = SUM + SCORE AVE = SUM / N N = N + 1 AVE STOP
91
#include <conio.h>
#include <stdio.h> int main() { float sum=0 , score , ave; int n; for(n=1 ; ; n++) { printf(“input score student %d : ” ,n); scanf(“%f”,&score); if(score < 0) break; sum += score; } n--; ave = sum / n; printf(“average score = %.2f”,ave); getch(); return 0; }
92
ผังงานแสดง Algorithm ในการเขียนโปรแกรมแบบที่ 2
แบบที่รู้จำนวนข้อมูลที่แน่นอนที่ต้องการป้อน START N SUM = 0 I = 1 No I<=N Yes SCORE AVE = SUM / N SUM = SUM + SCORE AVE I = I + 1 STOP 92
93
#include <conio.h>
#include <stdio.h> int main() { float sum=0,score,ave; int n,i; printf("number of data : "); scanf("%d",&n); for(i=1;i<=n;i++) { printf("input score %d : " ,i); scanf("%f",&score); sum += score; } ave = sum / n; printf("average score = %.2f",ave); getch(); return 0; }
94
ตัวอย่าง จงเขียนโปรแกรมเพื่อทำการหาว่าตัวเลขตั้งแต่เลข 1 จนถึงตัวเลขตัวสุดท้ายที่ต้องการทดสอบ(ให้ Input ตัวเลขนี้เข้าไปในเครื่อง) มีตัวเลขใดบ้างที่มีคุณสมบัติดังนี้คือ นำตัวประกอบทุกตัวของตัวเลขนั้นมาบวกกันจะได้เท่ากับตัวเลขนั้น ตัวอย่างเช่น เลข มีตัวประกอบคือ 1, 2, 3 นำตัวเลข ได้เท่ากับ 6
95
ตัวอย่าง ให้เขียนผังงานเพื่อป้อนข้อมูลวันที่,เดือน,และปีใน
ตัวอย่าง ให้เขียนผังงานเพื่อป้อนข้อมูลวันที่,เดือน,และปีใน ปัจจุบันแล้วคำนวณว่าวันดังกล่าวเป็นวันที่เท่าไรของปี
96
#include <stdio.h>
#include <conio.h> main() { int sumday,day,i,d,m,y; sumday = 0; printf("input d,m,y : "); scanf("%d,%d,%d",&d,&m,&y); for(i=1;i<m;i++) { printf("input number of day in month %d = ",i); scanf("%d",&day); sumday = sumday + day; } sumday = sumday + d; printf(“Output is %d days of the year",sumday); getch(); return 0; }
97
switch Statement To select one of several alternatives.
Selection is based on the value of an expression. Expression could be a single value. The type of expression can be either int or char type, but not double.
98
คำสั่ง switch( ) มีรูปแบบคำสั่ง คือ
switch (v) { case constant1 : statement; break; case constant2 : statement; . default : statement; }
99
#include <conio.h>
#include <stdio.h> int main() { int grade; printf("input grade : "); scanf("%d",&grade); switch (grade) { case 4 : printf("grade A"); break; case 3 : printf("grade B"); break; case 2 : printf("grade C"); break; case 1 : printf("grade D"); break; case 0 : printf("grade F"); break; default : printf("grade code error"); } getch(); return 0;
100
#include <conio.h>
#include <stdio.h> int main() { char code; printf("input ship code : "); scanf("%c",&code); switch (code) { case 'B' : case 'b' : printf("Battership\n"); break; case 'C' : case 'c' : printf("Cruiser\n"); break; case 'D' : case 'd' : printf("Destroyer\n"); break; case 'F' : case 'f' : printf("Frigate\n"); break; default : printf("Unknown ship code %c\n",code); } getch(); return 0; }
101
ตัวอย่าง การเขียนโปรแกรมโดยใช้ คำสั่ง switch
จงเขียนโปรแกรมเพื่อป้อนข้อมูลนิพจน์คณิตศาสตร์แล้วทำการคำนวณผลค่านิพจน์นั้นออกมา ตัวอย่าง การป้อนข้อมูลและผลลัพธ์ที่ได้ Input expression : 1.5*1.5 Output =
102
ตัวแปรหมวด (Array) type บอกชนิดของตัวแปร array_name ชื่อตัวแปรหมวด
ตัวแปรหมวด หมายถึง การตั้งชื่อตัวแปรในโปรแกรมที่ใช้ ชื่อเพียงชื่อเดียวสามารถเก็บข้อมูลได้มากกว่า 1 ค่า โดยมีตัวเลข ในวงเล็บซึ่งเรียกว่า ตัวพ่วง (subscript) เป็นตัวแสดงตำแหน่ง กำกับไว้เพื่อบอกว่าเป็นตัวที่เท่าไรในตัวแปรหมวดนั้น ตัวแปรหมวด 1 มิติ (One dimension) หมายถึง ตัวแปรหมวดที่มีตัวพ่วงเพียงตัวเดียว มีรูปแบบคือ type array_name [n]; type บอกชนิดของตัวแปร array_name ชื่อตัวแปรหมวด n ตัวเลขที่แสดงตำแหน่งหรือจำนวนของข้อมูลใน ตัวแปรหมวดนั้นโดยเริ่มตั้งแต่ 0 ถึง n - 1
103
ตัวอย่าง int score[10]; หมายถึง กำหนดตัวแปรหมวดชื่อ score เป็นเลขจำนวนเต็มมี ขนาดเป็น 10 คือ มีสมาชิก 10 ตัว เริ่มตั้งแต่ score[0],score[1], score[2],…,score[9] [0] [1] [2] [9] score ….
104
ตัวอย่าง การเขียนโปรแกรมโดยใช้ Array
ให้เขียนโปรแกรมเพื่อแสดงการป้อนข้อมูลเลข จำนวนเต็มจำนวนหนึ่งเก็บไว้ใน Array a แล้วหาค่า มากที่สุด(สมมติว่ามีค่าเดียว)ออกมาและแสดงผลออก ทางจอภาพ
105
Flowchart แบบที่ 1 เขียนโปรแกรมโดยไม่รู้จำนวนข้อมูลที่แน่นอน START 1
n = i - 1 i = 1 big = a[1] สร้างเงื่อนไขในการหยุดป้อนข้อมูล a[i] i = 2 Yes a[i] < 0 1 No Yes No a[i] > big i = i + 1 big = a[i] i = i + 1 Flowchart Yes i <= n No big STOP
106
if(a[i] > big) big=a[i];
#include <conio.h> #include <stdio.h> int main() { int a[100],big,n,i; for(i=1; ;i++) { printf("a[%d] = ",i); scanf("%d",&a[i]); if(a[i] < 0)break; } n = i - 1; big = a[1]; for(i=2; i<=n ;i++) if(a[i] > big) big=a[i]; printf("Big a = %d\n",big); getch(); return 0; } ผลการรันโปรแกรม Memory a [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] a[1] = 5 a[2] = 1 a[3] = 3 a[4] = 8 a[5] = 9 a[6] = 2 a[7] = 4 a[8] = 7 a[9] = 6 a[10] = -1 Big a = 9 5 1 3 8 เงื่อนไขในการหยุดป้อนข้อมูล 9 2 4 7 6 -1 n 9
107
Flowchart แบบที่ 2 เขียนโปรแกรมโดยกำหนดจำนวนข้อมูลที่แน่นอน 1 START
n big = a[1] i = 2 i = 1 No Yes No a[i] > big i <= n 1 big = a[i] Yes a[i] i = i + 1 i = i + 1 Yes i <= n Flowchart No big STOP
108
{ printf("a[%d] = ",i); scanf("%d",&a[i]); } #include <conio.h>
#include <stdio.h> int main() { int a[100],big,n,i; printf("input n : "); scanf("%d",&n); for(i=1;i<=n;i++) { printf("a[%d] = ",i); scanf("%d",&a[i]); } big = a[1]; for(i=2;i<=n;i++) if(a[i] > big) big = a[i]; printf("Big a = %d\n",big); getch(); return 0; } ผลการรันโปรแกรม Memory a [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] input n : 9 a[1] = 5 a[2] = 1 a[3] = 3 a[4] = 8 a[5] = 9 a[6] = 2 a[7] = 4 a[8] = 7 a[9] = 6 Big a = 9 5 1 3 8 9 2 4 7 6
109
ตัวอย่าง การเขียนโปรแกรมโดยใช้ Array
จงเขียนผังงานและโปรแกรมภาษา C เพื่อป้อนข้อมูล เลขฐานสิบ แล้วทำการแปลงเลขฐานสิบนี้ให้เป็น เลขฐานสองจำนวน 8 bit
110
ผังงานแสดง Algorithm ในการเขียนโปรแกรม
START Input 1 N I = 0 I = 7 B[I] Output B[I] = N%2 Process I = I + 1 N = N / 2 Yes I <= 7 I = I - 1 No Yes I >= 0 STOP No 1 110
111
ให้นักศึกษาลองฝึกเขียนโปรแกรมจากผังงานที่กำหนดมาให้
112
ตัวอย่าง การเขียนโปรแกรมโดยใช้ Array
ให้เขียนโปรแกรมเพื่อแสดงการป้อนข้อมูลคะแนน สอบของนักศึกษากลุ่มหนึ่งในวิชา CSS 112 แล้ว คำนวณหาค่าเฉลี่ยของวิชานั้นสำหรับนักศึกษากลุ่ม นั้นและหาจำนวนนักศึกษาที่สอบได้คะแนนมากกว่า หรือเท่ากับค่าเฉลี่ยและจำนวนนักศึกษาที่สอบได้ คะแนนต่ำกว่าค่าเฉลี่ยว่ามีจำนวนอย่างละกี่คน
113
#include <conio.h>
#include <stdio.h> int main() { float sum=0 , score[100] , ave; int i , n , low=0 , high=0; for(n=1 ; ; n++) { printf(“input score student %d : ” ,n); scanf(“%f”,&score[n]); if(score[n] < 0) break; sum += score[n]; } n--; ave = sum / n; for(i=1 ; i <= n ; i++) { if(score[i] < ave) low++; else high++; } printf(“average score = %.2f\n”,ave); printf(“low = %d\nhigh = %d”,low,high); getch(); return 0; }
114
การกำหนดค่าให้กับตัวแปรหมวด
เป็นการกำหนดค่าเริ่มต้นให้กับตัวแปรหมวด มีรูปแบบคือ type array_name [n] = {value list}; ตัวอย่าง int box[5] = {5,10,25,30,35}; box ตัวอย่าง char ch[3] = {‘m’, ‘o’, ‘d’}; ch m o d char word[5] = “kmutt”;
115
#include <stdio.h> int main() { int a[10] , i;
การกำหนดค่าเริ่มต้นของ Array ให้เป็น 0 #include <stdio.h> int main() { int a[10] , i; for(i=0; i<=9 ; i++) a[i] = 0; printf("a[%d] = %d\n",a[i]); getch(); return 0; } ผลการรันโปรแกรม a[0] = 0 a[1] = 0 a[2] = 0 a[3] = 0 a[4] = 0 a[5] = 0 a[6] = 0 a[7] = 0 a[8] = 0 a[9] = 0 115
116
char word[ ]= {‘A’, ‘E’, ‘I’, ‘O’, ‘U’};
การกำหนดค่าเริ่มต้น Array Initialization ในรูปแบบอื่นๆ int a[10] = {0}; int x[5]={2,6,8,9,5,4}; int y[10] = {1,2,6,8,9}; int z[ ] = {12,17,16,18,19}; char word[ ]= {‘A’, ‘E’, ‘I’, ‘O’, ‘U’}; syntax error 116
117
ตัวอย่าง ให้เขียนโปรแกรมเพื่อป้อนข้อมูล
ตัวอย่าง ให้เขียนโปรแกรมเพื่อป้อนข้อมูล วันที่, เดือนและปีในปัจจุบันแล้วคำนวณว่าวันที่ ดังกล่าวเป็นวันที่เท่าไรของปี( )
118
#include <stdio.h> #include <conio.h> int main()
{ int sumday,i,d,m,y; int day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31} sumday = 0; printf("input d,m,y : "); scanf("%d,%d,%d",&d,&m,&y); for(i=1 ; i<m ; i++) sumday = sumday + day[i]; sumday = sumday + d; printf("Output is %d days",sumday); getch(); return 0; }
119
ตัวอย่าง การเขียนโปรแกรมโดยใช้ Array
จงเขียนโปรแกรมเพื่อแสดงสถิติของปริมาณน้ำฝนที่ตกในแต่ละเดือนของปี โดยให้แสดงผลเป็นรูปกราฟแท่ง ตารางข้อมูลสถิติ Month 1 2 3 4 5 6 7 8 9 10 11 12 Volume 25 30 32 20 14 119
120
ตัวอย่าง การเขียนโปรแกรมโดยใช้ Array
จงเขียนโปรแกรมเพื่อจัดเรียงลำดับตัวอักษรในคำว่า MOD ใหม่เพื่อให้เป็นคำอื่นที่มีความหมายหรือไม่ก็ได้จะได้กี่คำอะไรบ้างให้แสดงผลออกมา
121
จงเขียนโปรแกรมเพื่อหาความถี่ของคะแนนสอบวิชาหนึ่ง
แล้วแสดงผลเป็นรูปกราฟแท่งพร้อมทั้งหาค่าเฉลี่ยด้วย ตัวอย่าง วิชาหนึ่งมีคะแนนเต็ม 10 คะแนนจะได้ผลลัพธ์ดังนี้ SCORE FREQUENCY ========================= *** ** ***** ** ****** ***** ****** ** ** 10 Mean = 5.26
122
score 5 frequency frequency[score] = frequency[score]+1; หรือ
[0] score [1] [2] 5 [3] [4] [5] frequency[score] = frequency[score]+1; หรือ frequency[score]++; [6] [7] [8] [9] [10]
123
#include <conio.h>
#include <stdio.h> int main() { int frequency[11]={0}, i , j , n , score; float sum=0,mean; for(i=1;;i++) { printf("input score %d : ",i); scanf("%d",&score); if(score < 0) break; frequency[score]++; sum = sum + score; } n = i - 1; mean = sum / n; printf("\nScore\tFrequency"); printf("\n==========================="); for(i=0;i<=10;i++) { printf("\n%3d\t",i); for(j=1;j<=frequency[i];j++) printf("*"); } printf(“\n mean = %.2f”,mean); getch(); }
124
ตัวแปรหมวด 2 มิติ (Two dimension)
หมายถึง ตัวแปรหมวดที่มีการจัดข้อมูลเป็นแถว(row)และ คอลัมน์(column)คือมีตัวพ่วงที่แสดงตำแหน่ง 2 ตัว มีรูปแบบคือ type array_name [m][n]; m ตัวพ่วงที่แสดงตำแหน่งของแถว (row) n ตัวพ่วงที่แสดงตำแหน่งของคอลัมน์ (column) ตัวอย่าง float sale[4][3]; 0 1 2 1 2 3
125
table i j int table[5][5]; int i, j; for (i=0; i < 5; i++)
for (j=0; j < 5; j++) table[i][j]= i*j; table Columns 1 2 3 4 1 2 3 4 Rows 2 4 6 8 3 6 9 12 i j 4 8 12 16 1 1 2 4 5 3 2 4 3 1 5 Memory 125
126
ตัวอย่าง การเขียนโปรแกรม Array 2 มิติ
จงเขียนโปรแกรมเพื่อสร้างค่าข้อมูล matrix a ขนาด n x n โดยมีค่าข้อมูลของสมาชิกในตำแหน่งต่างๆ ดังรูป พร้อมทั้งแสดงผลบนจอภาพ ตัวอย่าง ข้อมูล matrix a ขนาด 4 x 4
127
#include <conio.h>
#include <stdio.h> int main() { int a[10][10],i,j,n; printf("input order of matrix n = "); scanf("%d",&n); for(i=1;i<=n;i++) for(j=1;j<=n;j++) { if(i==j) a[i][j] = 0; else if(i<j) a[i][j] = 1; else a[i][j] = -1; }
128
printf("matrix A\n"); for(i=1;i<=n;i++) { printf("\n"); for(j=1;j<=n;j++) printf("%5d",a[i][j]); } getch(); return 0;
129
จงเขียนโปรแกรมเพื่อป้อนข้อมูล matrix a ขนาด m x n
แล้วหาสมาชิกที่มีค่ามากที่สุดในแต่ละแถวนอน(row)ออกมา พร้อมทั้งแสดงผลบนจอภาพ ตัวอย่าง ข้อมูล matrix a ขนาด 4 x 3 5 8 2 6 1 7 9 4 3 4 7 2 จะได้ผลลัพธ์คือ ค่ามากที่สุดในแถวที่ 1 คือ 8 ค่ามากที่สุดในแถวที่ 2 คือ 7 ค่ามากที่สุดในแถวที่ 3 คือ 9 ค่ามากที่สุดในแถวที่ 4 คือ 7
130
#include <conio.h>
#include <stdio.h> int main() { int a[10][10],max[10],i,j,m,n; printf("input order of matrix m,n = "); scanf("%d,%d",&m,&n); printf("input matrix A\n"); for(i=1;i<=m;i++) for(j=1;j<=n;j++) { printf("a[%d][%d] = ", i , j); scanf("%d",&a[i][j]); }
131
for(i=1;i<=m;i++) { max[i] = a[i][1]; printf("\n"); for(j=1;j<=n;j++) { printf("%6d",a[i][j]); if(a[i][j]> max[i]) max[i] = a[i][j]; } } { printf("\nThe max element in row %d = " ,i); printf(" %d", max[i]); } getch(); return 0;
132
#include <conio.h> #include <stdio.h> main() {
ให้คำนวณหาผลบวกในแนวคอลัมน์ของเมตริก A ขนาด m x n #include <conio.h> #include <stdio.h> main() { int a[10][10],c[10],i,j,m,n; printf("input order of matrix A m,n = "); scanf("%d,%d",&m,&n); printf("\ninput element of matrix A\n"); for(i=1;i<=m;i++) for(j=1;j<=n;j++) { printf("a[%d][%d] = ",i,j); scanf("%d",&a[i][j]); } Input ขนาด m , n Input ข้อมูล เมตริก A
133
for(i=1;i<=n;i++) { c[i] = 0; for(j=1;j<=m;j++) c[i]+=a[j][i]; }
for(i=1;i<=m;i++) { printf("\n"); for(j=1;j<=n;j++) printf("%6d",a[i][j]); คำนวณผลบวกในแนวคอลัมน์เก็บใน Array C พิมพ์ผลข้อมูลเมตริก A %6d %6d %6d
134
printf("\n "); for(i=1;i<=6*n;i++) printf("="); printf("\n"); for(i=1;i<=n;i++) printf("%6d",c[i]); getch(); return 0; } Output ที่ต้องการ
135
ตัวแปรหมวด 3 มิติ (Three dimension)
ตัวแปรหมวด 3 มิติ มีรูปแบบคือ type array_name [m1][m2][m3]; ตัวอย่าง float product[3][2][2]; 1 2
136
ตัวอย่าง int mat_a [3][2]={2,4,6,8,10,12}; 0 1 mat_a 0 1 2 char name[4][15]={“Central”, “Robinson”, “Imperial”, “Lotus”}; int abc[ ][3]={1,2,3,10,11,12,20,21,22};
137
ฟังก์ชัน gets( ) ฟังก์ชัน gets( ) ใช้สำหรับข้อมูลชนิด string หรือ ข้อความ ซึ่งป้อนเข้าเครื่องทาง keyboard มีรูปแบบคือ gets(string); เมื่อป้อนข้อมูลเสร็จแล้วกด Enter จะทำให้ cursor ขึ้นบรรทัด ใหม่หลังจากกด Enter ฟังก์ชัน getchar( ) เป็นฟังก์ชันที่ใช้สำหรับรับข้อมูลเข้ามาทาง keyboard ที ละ 1 ตัวอักษร โดยต้องกด Enter เมื่อสิ้นสุดข้อมูล และจะแสดง ตัวอักษรบนจอภาพ มีรูปแบบคือ getchar( ); cursor จะขึ้นบรรทัดใหม่หลังจากกด Enter รับข้อมูลแล้ว
138
ฟังก์ชัน getche( ) ฟังก์ชัน getch( )
เป็นฟังก์ชันที่ใช้สำหรับรับข้อมูลเข้ามาทาง keyboard ที ละ 1 ตัวอักษร เมื่อป้อนข้อมูลเสร็จไม่ต้องกด Enter จะแสดงตัว อักษรบนจอภาพ และ cursor จะไม่ขึ้นบรรทัดใหม่ มีรูปแบบคือ getche( ); ฟังก์ชัน getch( ) ใช้เหมือนกับ getche( ) ต่างกันตรงที่จะไม่แสดงตัวอักษร เมื่อป้อนข้อมูล มีรูปแบบคือ getch( );
139
ฟังก์ชัน putchar( ) ฟังก์ชัน puts( )
เป็นฟังก์ชันที่ใช้ให้เครื่องแสดงผลบนจอภาพทีละ 1 ตัว อักษร มีรูปแบบคือ putchar( ); ฟังก์ชัน puts( ) ใช้แสดงผลข้อมูลที่เป็นข้อความที่เก็บไว้ในตัวแปรหมวด ออกมาบนจอภาพ มีรูปแบบคือ puts(array_name);
140
ตัวอย่าง จงเขียนโปรแกรมเพื่อป้อนประโยคภาษาอังกฤษเข้าไปในเครื่อง แล้วให้หาว่าในประโยคนี้แต่ละคำมีกี่ตัวอักษรและให้แสดงผลออกมาด้วย Array 1 2 3 4 5 . I l o v e c m p u t r g a i n
141
#include <conio.h>
#include <stdio.h> int main() { char w[50]; int i,n=0,m=1; printf("Input sentence : "); gets(w); for(i=0;w[i]!='\0';i++) { if(w[i]==' '){printf("\nchar in word %2d = %2d",m,n); m++; n=0; continue; } else if(w[i]=='.'){printf("\nchar in word %2d = %2d",m,n); break;} n++; } getch(); return 0;
142
การเก็บข้อมูลตัวอักษรใน Array
จงเขียนโปรแกรมเพื่อป้อนประโยคภาษาอังกฤษเข้าไปในเครื่อง แล้วให้หาว่ามีตัวอักษร A ถึง Z อยู่อย่างกี่ตัว และให้แสดงผลออกมาด้วย การเก็บข้อมูลตัวอักษรใน Array C C O M P U T E R P R O G R A M M I N G \0
143
#include <conio.h>
#include <stdio.h> int main() { char word[100]; int count[27]={0},i,j,k,n; printf("Input sentence : "); gets(word); for(i=0;word[i]!='\0';i++) { n = word[i]; if(n>=65 && n<=90) count[n-64]++; else if(n>=97 && n<=122) count[n-96]++; }
144
printf("\nChar Number\n");
for(i=1;i<=26;i++) printf("%3c%14d\n",i+64,count[i]); getch(); return 0; }
145
จงเขียนโปรแกรมเพื่อใช้ในการตรวจข้อสอบแบบปรนัย
(4 ตัวเลือก a,b,c,d)จำนวน 10 ข้อๆละ 1 คะแนนโดยป้อนข้อมูลชื่อและคำตอบของนักศึกษาแต่ละคนเข้าไปในเครื่อง แล้วหาผลคะแนนสอบที่ได้และแสดงผลออกมาด้วย ตัวอย่าง ผลคะแนนสอบที่ได้เป็นดังนี้ NAME SCORE ================================= MANA MEETHONG MALI SINMEE TAWAT THAIDEE BOONMA BOONMAK
146
#include <conio.h>
#include <stdio.h> int main() { char st_n[100][20],key[10],ans[10]; int score[100],i,j,k,n; printf("key word : "); gets(key); for(i=1;;i++) { printf("input data no. %d\n",i); printf("input name : "); gets(st_n[i]); if(st_n[i][0]=='*')break; printf("input ans : "); gets(ans); score[i]=0; for(k=0;k<10;k++) if(key[k]==ans[k])score[i]++; }
147
n = i - 1; printf("Name Score\n"); printf(" \n"); for(i=1;i<=n;i++) printf("%-25s%3d\n",st_n[i],score[i]); getch(); return 0; }
148
ตัวอย่าง จงเขียนโปรแกรมเพื่อป้อนหมายเลขโทรศัพท์เข้าไปในเครื่อง แล้วให้แสดงผลเป็นคำอ่านหมายเลขโทรศัพท์นั้นเป็นคำในภาษาอังกฤษ ตัวอย่าง ป้อนหมายเลขโทนศัพท์ จะได้ผลดังนี้ zero two four seven zero eight nine two two
149
printf("\n\nThe telephone is "); for(i=0;tel[i]!='\0';i++)
#include <stdio.h> #include <conio.h> int main() { char tel[10]; char num[10][10]={"ZERO","ONE","TWO","THREE", "FOUR","FIVE","SIX","SEVEN","EIGHT","NINE"}; int i,n; printf("Input Telephone no.(0-9) : "); gets(tel); printf("\n\nThe telephone is "); for(i=0;tel[i]!='\0';i++) { n = tel[i]-48; printf("%s ",num[n]); } getch(); return 0; }
150
ตัวอย่าง จงเขียนโปรแกรมเพื่อป้อนค่าข้อมูล a[1] ถึง a[n] เข้าไปในเครื่อง แล้วให้ทำการเรียงลำดับข้อมูล(Sort)จากน้อยไปหามากและให้แสดงผลออกมาด้วย
151
#include <conio.h>
#include <stdio.h> int main() { int a[100],b,i,j,n; for(i=1;;i++) { printf("input a[%d] = ",i); scanf("%d",&a[i]); if(a[i]<0) break; } n = i - 1; for(i=1;i<n;i++) for(j=i+1;j<=n;j++) { if(a[i]< a[j]) continue; else { b = a[i]; a[i] = a[j]; a[j] = b; } }
152
printf("a[%d] = %d\n",i,a[i]); getch(); return 0; }
for(i=1;i<=n;i++) printf("a[%d] = %d\n",i,a[i]); getch(); return 0; } ผลการรันโปรแกรม
153
ตัวอย่าง เทคนิคการใช้ Flag
ให้เขียนโปรแกรม Input ข้อมูลเก็บไว้ใน Array 1 มิติ จำนวนไม่เกิน 100 ข้อมูลโดยจะหยุดการป้อนข้อมูลเมื่อป้อนข้อมูลเป็นค่าติดลบ แล้วทำการป้อนข้อมูลตัวเลขและค้นหาว่าข้อมูลตัวเลขนี้มีอยู่ใน Array ดังกล่าวข้างต้นหรือไม่ ถ้ามีอยู่ใน Array ให้แสดงผลดังนี้ This number is in the Array position # 6 แต่ถ้าไม่มีอยู่ใน Array ให้แสดงผลดังนี้ This number is not in the Array
154
flag = 0; #include <conio.h> #include <stdio.h> int main()
{ int a[100],b,i,flag,n; for(i=1;;i++) { printf("input a[%d] = ",i); scanf("%d",&a[i]); if(a[i]<0) break; } n = i - 1; printf("select no. = "); scanf("%d",&b); flag = 0; for(i=1;i<=n;i++) { if(a[i]==b){ flag = i; break; }} if(flag==0) printf("This number is not in the Array"); else printf("This number is in the Array position#%d",flag); getch(); return 0; }
155
จงเขียนโปรแกรมเพื่อป้อนข้อมูลเก็บใน matrix a ขนาด
n x n แล้วหาผลบวกของสมาชิกที่อยู่ในแนวเส้นทแยงมุมทั้งสอง พร้อมทั้งแสดงผลค่า matrix a และผลบวกทั้ง 2 ค่าออกมาด้วย ตัวอย่าง ผลที่แสดงออกมาเป็นดังนี้ Sum of diagonal 1 = 28 Sum of diagonal 2 = 36
156
#include <conio.h>
#include <stdio.h> int main() { int a[10][10],dia[3]={0}; int i,j,n; printf("input order of matrix n = "); scanf("%d",&n); printf("input matrix A\n"); for(i=1;i<=n;i++) for(j=1;j<=n;j++) { printf("a[%d][%d] = ",i,j); scanf("%d",&a[i][j]); }
157
for(i=1;i<=n;i++) { dia[1]=dia[1]+a[i][i]; dia[2]=dia[2]+a[i][n-i+1]; } printf("\nOutput Matrix a\n"); { printf("\n"); for(j=1;j<=n;j++) printf("%5d",a[i][j]); } printf("\ndiagonal 1 sum = %d",dia[1]); printf("\ndiagonal 2 sum = %d",dia[2]); getch(); return 0;
158
จงเขียนโปรแกรมเพื่อป้อนข้อมูลเก็บใน matrix a ขนาด
m x n แล้วหาผลบวกของสมาชิกที่อยู่ในแนวตั้ง(column)ทุกแนว พร้อมทั้งแสดงผลค่า matrix a และผลบวกของทุกๆแนวตั้งออกมาด้วย ตัวอย่าง ผลที่แสดงออกมาเป็นดังนี้ ========================
159
การเก็บข้อมูลชื่อและนามสกุลใน Array
จงเขียนโปรแกรมเพื่อป้อนชื่อและนามสกุลเข้าไปในเครื่อง แล้วให้แสดงผลโดยพิมพ์นามสกุลขึ้นก่อนแล้วตามด้วยชื่อพร้อมทั้งให้เปลี่ยนตัวอักษรตัวเล็กให้เป็นตัวใหญ่ให้หมดทุกตัว(ชื่อและนามสกุลเก็บอยู่ในตัวแปรหมวดตัวเดียว) การเก็บข้อมูลชื่อและนามสกุลใน Array M a l e e M a k b o o n \0 ผลพิมพ์ที่ต้องการ MAKBOON MALEE
160
ขอให้โชคดีในการสอบกลางภาค
GOOD LUCK
งานนำเสนอที่คล้ายกัน
© 2025 SlidePlayer.in.th Inc.
All rights reserved.