บทท 6 โครงสรางและไวยากรณภาษาซ
1. โครงสรางโปรแกรมภาษาซ
2. ประโยคค าสงในภาษาซ
3. ขอมล คาคงทและตวแปร
4. ตวด าเนนการและนพจน
5. ฟงกชนพนฐาน
หนวยท 6 โครงสรางและไวยากรณภาษาซ
สาระการเรยนร
1. อธบายสวนประกอบของโครงสรางภาษาซได
2. จ าแนกค าสงในภาษาซได
3. บอกลกษณะการเขาถงขอมลได
4. ประกาศคาคงทในโปรแกรมในภาษาซได
5. จ าแนกลกษณะขอมลพนฐานได
6. ประกาศตวแปรในโปรแกรมภาษาซได
7. จ าแนกชนดของตวแปรได
8. บอกขอก าหนดในการตงชอตวแปรได
9. บอกวธการเปลยนประเภทตวแปรได
10. จ าแนกประเภทของตวด าเนนการในภาษาซได
11. เขยนนพจนในภาษาซได
12. อธบายการใชฟงกชนพนฐานในภาษาซได
13. เขยนโปรแกรมภาษาซรบขอมลและแสดงผลขอมลได
สมรรถนะการเรยนร
หนวยท 6 โครงสรางและไวยากรณภาษาซ
แผนผงความคด (Mind Mapping) ของหนวยการเรยนร
โครงสรางและไวยากรณภาษาซ
โครงสรางโปรแกรมภาษาซ ไวยากรณภาษาซ
สวนหว
สวนฟงกชนหลก
สวนก าหนดฟงกชนทสรางขน
ประโยคค าสง
ขอมล
ตวแปร
ตวด าเนนการ
นพจน
นพจน ฟงกชนพนฐาน
หนวยท 6 โครงสรางและไวยากรณภาษาซ
โปรแกรมทเขยนดวยภาษาซ มลกษณะโครงสรางแบงออกเปนสวน ๆ ดงน
1.สวนค าสงพร-โพรเซสเซอร (Pre-processor Command)
2.สวนประกาศ (Global Declarations)
3.สวนฟงกชนหลก (Main Function)
4.สวนก าหนดฟงกชนทสรางขน (User Defined Functions)
โครงสรางโปรแกรมภาษาซ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
เปนสวนทอยสวนแรกของโปรแกรม อยกอนฟงกชนหลก (Main
Function) ในสวนยงมองคประกอบทส าคญ ไดแก สวนค าสงพร-
โพรเซสเซอร สวนประกาศตวแปรแบบโกลบอลและประกาศฟงกชนท
สรางขนใชเอง
1. สวนค าสงพร-โพรเซสเซอร (Pre-processor Command)
2. สวนประกาศ (Global Declarations)
สวนหว (Header)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• #include Include text from a file
• #define Define a macro
• #ifdef Test if a symbol is defined
• #ifndef Test if a symbol is not defined
• #if Test if compile-time condition hold
• #elif Same elseif
• #endif End a pre-processor conditional
• #line Give a line number for compile message
• #pragme Implementation dependent directive
• #undef Undefine a macro
ประโยคค าสงพรโพรเซสเซอร
หนวยท 6 โครงสรางและไวยากรณภาษาซ
#include
ใชส าหรบสงใหคอมไพเลอร น าไฟลทระบเขามารวมกบโปรแกรมกอนทจะท าการแปล
โปรแกรม สามารถเขยนได 2 รปแบบ คอ
#include <files.h>
โปรแกรมจะเรมคนหาไฟลจากไดเรกทอรทก าหนด เชน
#include <conio.h>
#include <stdio.h>
#include "files.h"
โปรแกรมจะเรมคนหาไฟลจากไดเรกทอรปจจบนกอน ถาหาไมพบกจะไปคนหาในไดเรกทอรท
ก าหนด เชน
#include "conio.h"
#include "stdio.h"
ตวอยางการใชค าสงพรโพรเซสเซอร
หนวยท 6 โครงสรางและไวยากรณภาษาซ หนวยท 6 โครงสรางและไวยากรณภาษาซ
#define
ใชส าหรบประกาศและก าหนดคาคงท
รปแบบ
#define ชอคาคงท คาทก าหนด
เชน
#define PI 3.1415926
#define NAME "Nuntchayathorn"
ตวอยางการใชค าสงพรโพเซสเซอร
หนวยท 6 โครงสรางและไวยากรณภาษาซ
อยในสวนหว (Header) ของโปรแกรมทอยถดจากสวนค าสงพร-
โพรเซสเซอร เปนสวนทใชในการประกาศตวแปรแบบโกลบอล (Global Variable)
หรอ ประกาศฟงกชนขนใชเองในโปรแกรม User-Defined Function
– Global Variable Declaration
– User-Defined Function Declaration
สวนประกาศ (Global Declarations)
หนวยท 6 โครงสรางและไวยากรณภาษาซ หนวยท 6 โครงสรางและไวยากรณภาษาซ
– void function_name();
– void function_name(arguments);
– return_type function_name();
– return_type function_name(arguments);
รปแบบการประกาศฟงกชน
หนวยท 6 โครงสรางและไวยากรณภาษาซ
เปนสวนทก าหนดการท างานหลก เมอสงรนโปรแกรมจะท างานในสวนนทนท สามารถเขยนได 2 รปแบบ คอ
• รปแบบของโปรแกรมหลก
void main( ) {
local variable declaration;
statements;
...
}
• รปแบบของฟงกชนหลก
int main( ) {
local variable declaration;
statements;
...
return 0;
}
สวนฟงกชนหลก (Main Function)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
ในภาษาซสามารถเขยนฟงกชน ได 4 รปแบบ
• แบบไมมการรบคาและสงคากลบ
• แบบมการรบคาแตไมมการสงคากลบ
• แบบไมมการรบคาแตมการสงคากลบ
• แบบมการรบคาและสงคากลบ
สวนก าหนดฟงกชนทสรางขน (User Defined Functions)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
1. แบบไมมการรบคาและสงคากลบ
void function_name( ) {
local variable declaration;
statements;
}
สวนก าหนดฟงกชนทสรางขน (User Defined Functions)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
2. แบบมการรบคาแตไมมการสงคากลบ
void function_name( parameter ) {
local variable declaration;
statements;
}
สวนก าหนดฟงกชนทสรางขน (User Defined Functions)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
3. แบบไมมการรบคาแตมการสงคากลบ
return_type function_name( ) {
local variable declaration;
statements;
var = ... ;
return var;
}
หนวยท 6 โครงสรางและไวยากรณภาษาซ หนวยท 6 โครงสรางและไวยากรณภาษาซ
สวนก าหนดฟงกชนทสรางขน (User Defined Functions)
4. แบบมการรบคาและสงคากลบ
return_type function_name( parameter ) {
local variable declaration;
statements;
var = ... ;
return var;
}
หนวยท 6 โครงสรางและไวยากรณภาษาซ
สวนก าหนดฟงกชนทสรางขน (User Defined Functions)
ประโยคค าสงในภาษาซ ม 2 ลกษณะ คอเปนค าสงและฟงกชน ประโยค
ค าสงสามารถใชไดทนท สวนฟงกชนจะตองมการน าไลบรารไฟลทไดนยาม
ฟงกชนตาง ๆ ไว โดยการ include ไฟลเหลานนไวในสวนหวโปรแกรม ประโยค
ค าสง (Statements) ทกค าสงจะพมพดวยอกษรตวเลกทงหมด และตองจบค าสงทก
ค าสงดวยเครองหมาย ; (Semi-colon) เสมอ อาจมขอยกเวน ทไมตองใส
เครองหมาย ; (Semi-colon) เชน กรณทค าสงนน มขอบเขตค าสง { } อาจไมตองจบ
ค าสงดวยเครองหมาย ; กได (จะใส ; หรอไมใสกได)
ประโยคค าสง (Statements) ในภาษาซ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
ค าสงในภาษาซ สามารถแบงเปนกลมค าสงตาง ๆ ไดดงน คอ
• ค าสงประกาศตวแปร (Variables Declaration)
• ค าสงก าหนดคา (Assignments)
• ค าสงเงอนไข และ ค าสงเลอกท า (Condition)
• ค าสงวนรอบการท างาน (Looping)
• ฟงกชนแสดงผล (Output)
• ฟงกชนรบขอมล (Input)
• ฟงกชนการค านวณ ตรวจสอบและแปลงขอมลตาง ๆ
• ฟงกชนเกยวกบสตรง (String functions)
• ฟงกชนเกยวกบวนและเวลา และเกยวกบเสยง
• ฟงกชนเกยวกบการท างานในโหมดกราฟก
• ฟงกชนด าเนนการเกยวกบไฟล
ค าสงในภาษาซ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
รปแบบ type var_list;
เชน
int a,b,c;
float f;
double d,ans;
char ch;
char str[30];
เปนตน
ค าสงประกาศตวแปร (Variables Declaration)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
รปแบบ var = Expression;
เชน
a = 0;
b = a;
n= 10;
sum = n*(n+1)/2;
เปนตน
ค าสงก าหนดคา (Assignments)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• if
• if else
• switch/case
ค าสงเงอนไข และ ค าสงเลอกท า (Condition)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• do while
• while
• for
ค าสงวนรอบการท างาน (Looping)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
ฟงกชนทถกนยามไวในไฟล conio.h, stdio.h ไดแก
• printf( )
• putchar( )
• puts( )
• cprintf( )
• clrscr( )
• clreol( )
• gotoxy( )
เปนตน
ฟงกชนแสดงผล (Output)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
ฟงกชนทถกนยามไวในไฟล conio.h, stdio.h ไดแก
• scanf( )
• getch( )
• getche( )
• getchar( )
• gets( )
เปนตน
ฟงกชนรบขอมล (Input)
หนวยท 6 โครงสรางและไวยากรณภาษาซ หนวยท 6 โครงสรางและไวยากรณภาษาซ
• abs( )
• atoi( )
• atof( )
• atol( )
• rand( )
• randomize( )
• qsort( )
• max( )
• min( )
• strtod( )
• strtol( )
• stetold( )
• swap( )
• system( )
• time( )
เปนตน
ฟงกชนการค านวณ ตรวจสอบและแปลงขอมลตาง ๆ
ฟงกชนตาง ๆ ทถกนยามในไฟล stdlib.h ไดแก
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• isalnum( )
• isalpha( )
• isdigit( )
• islower( )
• isupper( )
• tolower( )
• toupper( )
เปนตน
ฟงกชนการค านวณ ตรวจสอบและแปลงขอมลตาง ๆ
ฟงกชนตาง ๆ ทถกนยามในไฟล ctype.h ไดแก
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• exp( )
• sqrt( )
• pow( )
• sin( )
• cos( )
• tan( )
• log( )
• log10( )
• ceil( )
• floor( )
• fabs( )
เปนตน
ฟงกชนการค านวณ ตรวจสอบและแปลงขอมลตาง ๆ
ฟงกชนตาง ๆ ทถกนยามในไฟล math.h ไดแก
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• strlen( )
• strcpy( )
• strcat( )
• strcmp( )
เปนตน
ฟงกชนเกยวกบสตรง (String functions)
ฟงกชนตาง ๆ ทถกนยามในไฟล string.h ไดแก
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• gettime( )
• getdate( )
• settime( )
• setdate( )
• sound( )
• delay( )
• nosound( )
เปนตน
ฟงกชนเกยวกบวนและเวลา และเกยวกบเสยง
ฟงกชนตาง ๆ ทถกนยามในไฟล dos.h ไดแก
หนวยท 6 โครงสรางและไวยากรณภาษาซ
arc( )
bar( )
bar3d( )
circle( )
cleardevice( )
closegraph( )
drawpoly( )
ellipse( )
fillellipse( )
fillpoly( )
floodfill( )
getcolor( )
getimage( )
getmaxx( )
getmaxy( )
getx( )
gety( )
imagesize( )
initgraph( )
line( )
linerel( )
lineto( )
moverel( )
moveto( )
outtext( )
outtextxy( )
pieslice( )
putimage( )
putpixel( )
rectangle( )
setbkcolor( )
setcolor( )
setfillpattern( )
setfillstyle( )
settextstyle( )
เปนตน
ฟงกชนเกยวกบการท างานในโหมดกราฟก
ฟงกชนตาง ๆ ทถกนยามในไฟล graphics.h ไดแก
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• fopen( )
• fgetc( )
• fgets( )
• fputs( )
• fputc( )
• fscanf( )
• fprintf( )
• fseek( )
• feof( )
• fclose( )
เปนตน
ฟงกชนด าเนนการเกยวกบไฟล
ฟงกชนตาง ๆ ทถกนยามในไฟล stdio.h ไดแก
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• รปแบบการเขยนหมายเหต บรรทดเดยว (Single-Line Comment)
โดยพมพเครอง Double slash // หนาขอความทท าเปนหมายเหต
รปแบบ
// ค าอธบาย หรอ หมายเหต เขยนไวในบรรทดเดยว
• รปแบบการเขยนหมายเหตแบบหลายบรรทด (Multi-Line Comment)
โดยขนตนดวยเครองหมาย /* และสนสดดวยเครองหมาย */
รปแบบ
/*
ค าอธบาย หรอ หมายเหตตาง ๆ สามารถเขยนไดหลาย ๆ บรรทด
*/
การเขยนหมายเหตในโปรแกรมภาษาซ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
หมายถง สงทเกยวกบปญหา หรอสงทน ามาใชในการเขยนโปรแกรม
เมอน าขอมลเขาสคอมพวเตอร ขอมลจะถกเกบไวในสวนของหนวยความจ าหลก
ในพนททไดจองไวส าหรบเกบขอมล โดยมการก าหนดชอในการเขาถงขอมลนน
ซงชอทใชส าหรบอางองถงขอมล ม 2 ลกษณะ คอ เปนคาคงท และตวแปร
ขอมล (Data)
หนวยท 6 โครงสรางและไวยากรณภาษาซ หนวยท 6 โครงสรางและไวยากรณภาษาซ
ท าหนาทส าหรบเกบพกขอมล ตามแตละชนดทไดประกาศไว แตเปนคาทไมสามารถเปลยนแปลงไดอก
จดประสงคเพอทจะน าชอคาคงทไปใชในโปรแกรม ในภาษาซ ควรก าหนดชอคาคงทดวยตวพมพใหญ เพอใหแตกตาง
จากตวแปร การก าหนดคาคงท ในภาษาซสามารถท าได 2 รปแบบ คอ
• รปแบบท 1 เปนการก าหนด Macro
#define cont_name value
เชน
#define PI 3.1415926
#define OWNER "Nuntchayathorn"
• รปแบบท 2 เปนการประกาศคาคงท
const type cont_name = value ;
เชน
const float PI = 3.1415926 ;
const char OWNER[ ] = "Nuntchayathorn" ;
คาคงท (Constant)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
Literals
คอค าทใชแสดงคาคงท ในภาษาซสามารถแบงเปน 4 ประเภท ดงน
• Integer literal
• Floating-point literal
• Character literal
• String literal
ขอมลพนฐาน (Primitive Data Type)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
คาคงทจ านวนเตม
– เลขฐานสบ (Decimal) เปนเลขฐานสบทใชทวไป
– เลขฐานแปด (Octal) สามารถน าไปค านวณได โดยการพมพตวเลขขนตนดวยเลข 0
เชน 071, 032, 0144
– เลขฐานสบหก (Hexadecimal) สามารถน าไปค านวณได โดยการพมพขนตนดวย
0x หรอ 0X เชน 0xff, 0x54, 0XA9
Integer literal
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• ในโปรแกรม Turbo C/C++ V3.0 ม 2 ขนาดคอมขนาด 16 บต กบ 32 บต
แบงเปน 4 ชนด คอ
– int มขนาด 16 บต
เปนแบบคดเครองหมาย มคาอยระหวาง -32768 ถง +32767
– unsigned int มขนาด 16 บต
เปนแบบไมคดเครองหมาย มคาอยระหวาง 0 ถง 65535
– long มขนาด 32 บต
เปนแบบคดเครองหมาย มคาอยระหวาง -2147483648 ถง +2147483647
– unsigned long มขนาด 32 บต
เปนแบบไมคดเครองหมาย มคาอยระหวาง 0 ถง 4294967295
เลขจ านวนเตม
หนวยท 6 โครงสรางและไวยากรณภาษาซ
คอคาคงทเลขทศนยม การพมพหรอแสดงตวเลขทศนยม มอย 2 รปแบบ คอ
– แบบมาตรฐาน เชน 0.123456
– แบบวทยาศาสตร เชน 1.2345e-1 หรอ 1.2345E-1
Floating-point literal
หนวยท 6 โครงสรางและไวยากรณภาษาซ
ในภาษาซ มเลขทศนยมอย 3 ชนด คอ
• แบบ float
มขนาด 32 บต มคาอยระหวาง 3.4 x 10-38 ถง 3.4 x 10+38
แสดงจดทศนยม 6 หลก
• แบบ double
มขนาด 64 บต มคาอยระหวาง 1.7 x 10-308 ถง 1.7 x 10+308
แสดงจดทศนยม 15 หลก
• แบบ long double
มขนาด 80 บต มคาอยระหวาง 3.4 x 10-4932 ถง 1.1 x 10+4932
แสดงจดทศนยม 19 หลก
เลขจ านวนจรง
หนวยท 6 โครงสรางและไวยากรณภาษาซ
คอคาคงทตวอกษร ทมความยาว 1 ตวอกขระ โดยตองเขยนอยใน
เครองหมาย ' ' (Single Quote) ซงแบงออกเปนตวอกษรทมองเหนได กบตวอกษรทใช
ในการควบคมการพมพ
• ตวอกษรปกต
ไดแก ตวอกษรทปรากฏอยแปนพมพ a-z, A-Z, 0-9, และสญลกษณตาง ๆ
บนแปนพมพ
• ตวอกษรทใชในการควบคมการพมพ
ใชแทนการแสดงผลอกขระหรอแปนพมพบางตว เชน แทนคย Enter, Tab,
Backspace เปนตน จะตองแสดงโดยใช Escape Sequences ซงไดแก \\, \',
\", \r, \n, \f, \t, \b, \0
Character literal
หนวยท 6 โครงสรางและไวยากรณภาษาซ
หมายถงขอมลทมตวอกขระตงแต 1 ตวขนไป ตองเขยนอยใน
เครองหมาย " " (Double Quote)
คาคงท String เชน "Hello World", "Samutsongkhram",
"คอมพวเตอร", "1234567890" ทกสตรงจะปดดวยรหส \0 เสมอ
ในการจองพนทในการจดเกบสตรงตองจองเกบรหสปดนเพมอกหนง
ตวอกษร ดงนนในการประกาศตวแปรส าหรบก าหนดขนาดความยาวของขอความ
ตองเผออกหนงต าแหนงส าหรบจดเกบขอมลปดสตรงนเสมอ ในภาษาซ สามารถ
ก าหนดความยาวของขอความไดไมเกน 254 ตว
String literal
หนวยท 6 โครงสรางและไวยากรณภาษาซ
ตวแปรท าหนาทส าหรบเกบพกขอมล ตามแตละชนดทไดประกาศไว
สามารถเปลยนแปลงคาไดตลอดเวลา ดงนนตวแปรจงหมายถง ชอทใชในการ
อางองพนทในหนวยความจ าหลกทจองไวเพอเกบขอมล การจองหนวยความจ าท า
ไดโดยการประกาศตวแปร ซงสามารถอางองถงขอมลไดโดยไมตองรต าแหนงท
เกบจรงของขอมล ซงการจองหนวยความจ าส าหรบตวแปรแตละตวจ าเปนจะตองม
การประกาศตวแปรกอน
ตวแปร (Variable)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• ตวแปรประเภทพนฐาน (Scalar)
เปนตวแปรทใชในการแทนคาขอมลไดเพยงคาเดยว
• ตวแปรประเภทตวแปรชดหรออารเรย (Array)
เปนตวแปรทสามารถเกบขอมลไวไดหลายคาโดยใชชอตวแปรเดยวกน
โดยมตวช (Index) เปนตวระบต าแหนงทเกบคาขอมล
ประเภทของตวแปร
หนวยท 6 โครงสรางและไวยากรณภาษาซ
ชวงของขอมล (Range)
Type Range
char -128 ถง +127
int, short -32,768 to +32,767
long -2,147,483,648 to +2,147,483,647
unsigned char 0-255
unsigned int 0 to 65,535
unsigned long 0 to 4,294,967,295
float -3.4e-38 to +3.4e+38
double -1,7e-308 to +1.7e+308
long double -3.4e-4932 to +1.1e+4932
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• ประกอบดวยอกษรภาษาองกฤษ a ถง z และตวเลข 0 ถง 9 แตตวแรกตอง
เปนตวอกษร A-Z หรอ a-z หรอขดเสนใต _ (Underscore) เทานน
• หามเวนวรรค สามารถใชเครองหมาย _ และ $ ในการตงชอได
• หามใชค าสงวน (Reserved Word) ในการตงชอ
• ในขอบเขตเดยวกน หามตงชอซ ากน
• การพมพชอโดยใชอกษรตวใหญกบตวเลกถอวาเปนคนละตวแปรกน
• ควรตงชอใหสอความหมาย หรอเปนค านาม
• นยมตงชอตวแปรเปนตวเลก ถาเปนคาคงทจะใชตวพมพใหญทงหมด
หลกการตงชอตวแปร
หนวยท 6 โครงสรางและไวยากรณภาษาซ
auto
break
case
char
const
continue
default
do
double
else
enum
extern
float
for
goto
if
int
long
register
return
short
signed
sizeof
static
struct
switch
typedef
union
unsigned
void
volatile
while
ค าสงวน (Reserved Word)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
วธการเปลยนประเภทของตวแปรในภาษาซ ท าได 2 วธ คอ
1.การเปลยนประเภทของตวแปรโดยอตโนมต (Implicit type conversion)
2.โดยวธทเรยกวาการ Casting
การเปลยนประเภทของตวแปร
หนวยท 6 โครงสรางและไวยากรณภาษาซ
หมายถง ตวทท าหนาทเชอมโยงคาหรอกระท ากบคาตาง ๆ กบขอมลและ
ตวแปรตามค าสง เพอใหไดผลลพธตามตองการ แบงเปน 6 ประเภท
• ตวด าเนนการทางคณตศาสตร
• ตวด าเนนการทางตรรกะ
• ตวด าเนนการเปรยบเทยบ
• ตวด าเนนการเพมคาและลดคา
• ตวด าเนนการระดบบต
• ตวด าเนนการก าหนดคา
ตวด าเนนการ (Operator)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• + บวก,
• - ลบ,
• * คณ,
• / หาร และ
• % หารเอาเศษ (Remainder) or Modulo
ตวด าเนนการทางคณตศาสตร (Arithmetic or Mathematic Operator)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
&& And และ
|| Or หรอ
! Not ไม, ตรงกนขาม
ตวด าเนนการทางตรรกะ (Logical Operator)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
< นอยกวา Less than
<= นอยกวาหรอเทากบ Less than or Equal
> มากกวา Greater than
>= มากกวาหรอเทากบ Greater than or Equal
== เทากบ, เทากน Equal
!= ไมเทากบ, ไมเทากน Not equal
ตวด าเนนการเปรยบเทยบ (Relational Operator)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
++ เพมคา Increment
-- ลดคา Decrement
ตวด าเนนการเพมคาและลดคา (Increment and Decrement Operator)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
& And
| Or
^ Exclusive Or
~ Complement
>> Right Shift
<< Left Shift
ตวด าเนนการระดบบต (Bit-wise Operator)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
+=
-=
*=
/=
%=
&=
|=
^=
<<=
>>=
ตวด าเนนการก าหนดคา (Assignment Operator)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
1. ( )
2. !, ++, --
3. *, /, %
4. +, -
5. <, <=, >, >=
6. ==, !=
7. &&
8. ||
9. *=, /=, %=, +=, -=
ทศทางการท างาน จากซายไปขวา
ล าดบการท างานของตวด าเนนการ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
หมายถง การน าคาคงท ตวแปร และตวด าเนนการมาประกอบกน เพอ
เขยนเปนค าสงใหตวแปลภาษาคอมพวเตอรเขาใจ และสามารถท างานตามค าสง
ไดผลลพธตามตองการ
นพจน (Expression)
สตร นพจน
k1 = n * (n + 1) / 2;
f1 = a * a + 2 * a * b + b * b;
c = sqrt(a * a + b * b);
K=0.25 * a * a * sqrt(3);
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• clrscr(); - ลางหนาจอในโหมดเทกซ
• clreol(); - ลบขอความจากต าแหนงเคอรเซอรไปจนสดบรรทด
• delline(); - ลบบรรทด
• gotoxy(); - ยายต าแหนงเคอรเซอรไปยงต าแหนงทระบ
• wherex(); - คนคาต าแหนงคอลมนทเคอรเซอรปรากฏ (1-80)
• wherey(); - คนคาต าแหนงบรรทดทเคอรเซอรปรากฏ (1-25)
• textcolor(); - ก าหนดสตวอกษร (0-15)
• textbackground(); - ก าหนดสพน (0-7)
• textmode(); - เขาสโหมดเทกซ (C80)
Basic Function in C Mode Text
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• cprintf(); - แสดงผลขอความหรอคาตวแปรตามสทก าหนด
• printf(); - แสดงผลขอความหรอคาตวแปร
• sprintf(); - แปลงขอมลตวเลขใหเปนขอความ
• puts(); - แสดงผลขอความ
• putch(); - แสดงผลอกขระ
• getch(); - รบคาอกขระจากแปนพมพโดยจะไมแสดงอกขระทปอน
• getche(); - รบคาอกขระจากแปนพมพโดยจะแสดงอกขระทปอน
• gets(); - รบคาขอความจากแปนพมพมาเกบไวในตวแปรสตรงทระบ
• scanf(); - รบคาขอมลจากแปนพมพมาเกบไวในตวแปรทระบ
• window(); - ก าหนดพนทหนาตาง
หนวยท 6 โครงสรางและไวยากรณภาษาซ
Basic Function in C Mode Text (ตอ)
• initgraph(); - เขาสโหมดกราฟก
• closegraph(); - ออกจากโหมดกราฟก
• cleardevice(); - ลางหนาจอในโหมดกราฟก
• setcolor(); - ก าหนดส
• setfillstyle(); - ก าหนดรปแบบการระบาย
• settextstyle(); - ก าหนดรปแบบขอความ
• arc(); - วาดเสนโคง
• bar(); - วาดแทงสเหลยม
• bar3d(); - วาดแทงสเหลยมสามมต
• circle(); - วาดวงกลม
Basic Function Graphics Mode
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• ellipse(); - วาดวงร
• pieslice(); - วาดสวนซกวงกลม
• line(); - วาดเสนตรงจากจดหนงไปยงจดหนงตามทระบพกด
• lineto(); - วาดเสนตรงจากจดเดมไปยงอกจดทระบพกด
• linerel(); - วาดเสนตรงจากจดเดมไปยงจดทอยหางตามระยะหางทก าหนด
• moveto(); - ยายพกดไปทใหมตามทระบ
• moverel(); - ยายพกดไปทใหมหางจากพกดเดมตามระยะหางทก าหนด
• floodfill(); - ระบายสทต าแหนงพกดทก าหนดไปจนจดสนสดตามสทระบ
• outtext(); - แสดงขอความทก าหนดในพกดปจจบน
• outtextxy(); - แสดงขอความทก าหนดตามพกดทก าหนด
หนวยท 6 โครงสรางและไวยากรณภาษาซ
Basic Function Graphics Mode (ตอ)
การแสดงผลบนจอในโหมดขอความ (Text Mode) โปรแกรม Turbo C มขนาด
จอมาตรฐาน 80 x 25 คอม 80 คอลมน และ 25 บรรทด
textmode(C80);
เปนฟงกชนเขาสโหมดเทกซ (Text mode) หนาตางมาตรฐาน 80 x 25, 16 ส
clrscr();
เปนฟงกชนใน TurboC ท าหนาทลางหนาจอ (Clear screen) พรอมน า
เคอรเซอร ไปยงต าแหนงซายบนบรรทดแรกของจอ (คอต าแหนง 1,1) ซงฟงกชนนมใชใน
Turbo C เทานน หากใชกบ C ของคายอน ใหใชค าสง system("cls"); แทนได
clreol();
เปนฟงกชน ลบขอความตงแตต าแหนงทเคอรเซอรปรากฏอยไปจนสดบรรทดนน
ถาเคอรเซอรอยทคอลมนแรก ค าสงนกจะเปนการลบขอความในบรรทดนนทงบรรทด
ฟงกชนเกยวกบการแสดงผลทางจอภาพ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
เปนฟงกชนมาตรฐานในภาษาซทใชในการแสดงผลลพธออกทางจอภาพ ณ ต าแหนงทเคอรเซอรปรากฏอย
รปแบบ
printf("ขอความ");
printf("control_format",exp1 [,exp2[,...expN]]); Control_format อาจประกอบไปดวย ขอความ หรอ อกขระ
ควบคมการแสดงผลลพธ หรอ รหสรปแบบ อยภายในเครองหมายค าพด " " แตรวมความยาวทงหมดไมเกน 254 อกขระ
exp1, exp2, ... expN คอเปนคาขอมล หรอตวแปร หรอนพจนกได
จ านวนของ expression จะตองสมพนธกบชนดและจ านวนรหสรปแบบทอยในเครองหมายค าพด เชน
printf("Hello");
printf("\n");
printf("Welcome to Thailand\n");
printf("\nValue A\t\tValue B\t\tSum\n");
printf("%3d\t\t%3d\t\t%3d\n",a,b,(a+b));
printf("Score = %3d\t\tGrade = %.2f\n",78,3.5);
printf("Score = %3d\t\tGrade = %.2f\n",score,grade);
printf()
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• \a Bell
• \b Backspace
• \f Form feed
• \n New line
• \r Carriage return
• \t Horizontal tab
• \\ back slash
• \' Single quote
• \" Double quote
• \0 Null
อกขระควบคมการแสดงผลลพธ (Escape Control)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
หมายถง รหสรปแบบขอมล เพอก าหนดประเภทขอมลทก าหนด โดยตองระบภายใน
เครองหมาย " " (Double Quote)
– %c ใชกบขอมลประเภท char
– %d ใชกบขอมลประเภท int - เลขฐานสบ
– %u ใชกบขอมลประเภท unsigned int
– %l ใชกบขอมลประเภท long
– %lu ใชกบขอมลประเภท unsigned long
– %e ใชกบขอมลประเภท float ในรป e ยกก าลง
– %f ใชกบขอมลประเภท float
– %lf ใชกบขอมลประเภท double
– %g ใชกบขอมลประเภท float
– %h ใชกบขอมลประเภท short int
– %o, %O ใชกบขอมลประเภท - เลขฐานแปด
– %0x,%0X ใชกบขอมลประเภท - เลขฐานสบหก
– %s ใชกบขอมลประเภท ขอความ (String)
– %p ใชกบตวแปรพอยนเตอร (Pointer)
รหสรปแบบขอมล (Format code)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• putchar()
เปนฟงกชนมาตรฐานในภาษาซทใชในการแสดงอกขระออกทางจอภาพ
รปแบบ putchar(ch);
โดย ch เปนตวแปรชนดอกขระ
• puts()
เปนฟงกชนมาตรฐานในภาษาซทใชในการแสดงขอความออกทางจอภาพ
รปแบบ puts(str);
โดย str เปนตวแปรชนดขอความ หรอ สายอกขระ
• gotoxy( )
เปนฟงกชนยายเคอรเซอรไปต าแหนง x และ y
รปแบบ gotoxy(x,y);
x มคาอยระหวาง 1-80
y มคาอยระหวาง 1-25
ฟงกชนเกยวกบการแสดงผลทางจอภาพ (ตอ)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
เปนฟงกชนก าหนดขนาดของหนาตางในโหมดเทกซ ซงมคาโดยปรยาย
(Default) = 80 x 25 (80 คอลมน 25 บรรทด)
รปแบบ
window(left, top, right, bottom);
left ขอบหนาตางดานซาย มคาอยระหวาง 1-80
right ขอบหนาตางดานขวา มคาอยระหวาง 1-80 แตตองมากกวา left
top ขอบหนาตางดานบน มคาอยระหวาง 1-25 แตตองนอยกวา bottom
bottom ขอบหนาตางดานลาง มคาอยระหวาง 1-25 แตตองมากกวา top
window()
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• textcolor(fc);
fc = คาสตวอกษร
สามารถก าหนดได 16 ส มคาอยระหวาง 0-15
• textbackground(bc);
bc = คาสพน
สามารถก าหนดได 8 ส มคาอยระหวาง 0-7
• cprintf()
เปนฟงกชนส าหรบพมพขอความทเปนส ใชกบ Turbo C เทานน
การก าหนดสตวอกษรและสพน และค าสงแสดงผล
หนวยท 6 โครงสรางและไวยากรณภาษาซ
// by Nuntchayathorn Chatrsuwun
#include <conio.h>
#include <stdio.h>
void main()
{
clrscr();
for (int i=32; i<=255; i++)
{
if (i == 128) getch();
printf(" %03d(%02X) %c",i,i,i);
}
getch();
}
ตวอยาง โปรแกรมแสดงรหสแอสก (ASCII Code)
หนวยท 6 โครงสรางและไวยากรณภาษาซ
ผลการรนโปรแกรม
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• scanf()
เปนฟงกชนในการรบขอมลจากแปนพมพ (Keyboard) เขาไปเกบไวในตวแปรท
ก าหนด โดยชนดขอมลสามารถก าหนดได ทกประเภท ดงนนฟงกชนนจงเปนฟงกชนทนยมใช
กนมากในการรบขอมล เมอค าสงนท างาน จะปรากฏเคอรเซอร (Cursor) กระพรบรอรบ
การปอนขอมล ใหเราพมพขอมลทตองการแลวกดคย Enter
รปแบบ scanf("format", &var);
"format" : รหสรปแบบขอมล (Format code)
var : ตวแปรทจะท าหนาทเกบคาทรบเขามาจากแปนพมพ
โดยชอตวแปรจะตองน าดวยเครองหมาย & เสมอ
ยกเวนถาเปนตวแปรชนดขอความ อาจจะไมตองใสเครองหมาย & กได
ฟงกชนรบคาขอมลทางแปนพมพ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
scanf("%d", &n);
เปนการรบขอมลตวเลขจ านวนเตมฐานสบจากแปนพมพมาเกบไวทตวแปร n
scanf("%s", str); หรอ
scanf("%s",&str);
เปนการรบขอมลทเปนขอความ มาเกบไวทตวแปร str
scanf("%c", &ch);
เปนการรบขอมลอกขระจากแปนพมพมาเกบไวในตวแปร ch
การรบคาทางแปนพมพใหกบตวแปรเดยว
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• แบบตองกดคย Enter ทกครง
getchar( )
เปนฟงกชนทใชส าหรบรบขอมลประเภทตวอกขระจากแปนพมพ โดยรบขอมลครง
ละ 1 ตวอกขระเทานน ดงนนตวแปรทมารบคา กจะตองประกาศเปนชนด char ดวย เมอปอน
อกขระ 1 ตวแลว ตองกดคย Enter
รปแบบ
var = getchar();
เชน
char ch;
printf("Enter your charactor : ");
ch = getchar();
การรบขอมลชนดอกขระ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• แบบไมตองกดคย Enter ทกครง
getch();
เปนฟงกชนส าหรบรบขอมลชนดอกขระจากแปนพมพ 1 อกขระ โดยไม
ตองกดคย Enter จะไมแสดงคาอกขระ
getche();
เปนฟงกชนส าหรบรบขอมลชนดอกขระจากแปนพมพ 1 อกขระ โดยไม
ตองกดคย Enter จะแสดงอกขระทกด
การรบขอมลชนดอกขระ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
• gets()
เปนฟงกชนทใชส าหรบรบขอมลชนดขอความจากแปนพมพ และเมอปอนขอมลทเปน
ขอความเสรจแลว ใหกดคย Enter
รปแบบ gets(str);
str คอตวแปรชนดขอความไวส าหรบเกบขอมลชนดขอความทปอนจากแปนพมพ
เชน
char str[30];
printf("Enter your name : ");
fflush(stdin); gets(str);
printf("Your name is %s\n",str);
การรบขอมลชนดขอความ
หนวยท 6 โครงสรางและไวยากรณภาษาซ
จบการน าเสนอ
บทท 6 โครงสรางและไวยากรณภาษาซ
หนวยท 6 โครงสรางและไวยากรณภาษาซ