1 241-101 Introduction to Computer Programming คคคคคคคคคคคคคคค คคคคคคคคคคคคคคคคคคค [email protected]. th บบบบบ บบบบบ 2 2 บบบบบบบบบบ บบบบบบบบบบ C C Basic C Program Basic C Program
Jan 19, 2016
1
241-101 Introduction to Computer Programming
คณาจารย์�ภาควิ�ชาวิ�ศวิกรรมคอมพิ�วิเตอร�[email protected]
บทท�� บทท�� 22แนะนภษ แนะนภษ CC
Basic C ProgramBasic C Program
2
241-101 Introduction to Computer Programming
คณาจารย์�ภาควิ�ชาวิ�ศวิกรรมคอมพิ�วิเตอร�[email protected]
แนะนภษ แนะนภษ CCขั้��นตอนการพิ�ฒนาโปรแกรมโครงสร�างโปรแกรมภาษา C
ต�วิแปรและต�วิดำ#าเน�นการการแสดำงผลและร�บค&า
ขั้�อผ�ดำพิลาดำที่()เก�ดำขั้*�นบ&อย์
241-101 Introduction to Computer Programming
3
ภษภษซี� ซี� C C Programming Programming
LanguageLanguage• ถู�กออกแบบและสร้�งขึ้��นในปี� พ.ศ . 2515
1972( ) โดย Dennis Ritchie
−เปี#นภษเชิ%งโคร้งสร้�ง (structured programming) โดยมี�กร้น%ยมีและเร้�ยกใชิ�ฟั)งก*ชิ+น
−มี�โคร้งสร้�งและลด+บกร้เขึ้�ยนท��มี�ควมีย-ดหย/0น−สมีร้ถูเขึ้�ถู�งอ/ปีกร้ณ์*ฮร้*ดแวร้*ได�โดยตร้ง −สมีร้ถูขึ้ยยโปีร้แกร้มีเปี#น C++
241-101 Introduction to Computer Programming
4
ขึ้+�นตอนกร้พ+ฒนโปีร้แกร้มีขึ้+�นตอนกร้พ+ฒนโปีร้แกร้มี• เขั้(ย์นซอร�สโค�ดำ (source code) ผ&านโปรแกรม
ประเภที่ Text Editor หร-อ IDE (Integrated Development Environment) ส#าหร�บโปรแกรมภาษาซ( โดำย์ให�บ�นที่*กเป/นไฟล� นามสก2ล .C−ซอร�สโค�ดำจะต�องเป/นไปตามโครงสร�างประโย์คขั้องภาษา C
• คอมไพิล�โปรแกรม หากซอร�สโค�ดำถู4กต�อง จะไดำ�ออบเจ5คไฟล� (นามสก2ล .OBJ หร-อ .O)
• ล�งค�ออบเจ5คไฟล�เขั้�าดำ�วิย์ก�น กลาย์เป/นไฟล�ที่()ม(ภาษาเคร-)อง ที่()สามารถูน#ามาร�นไดำ�−นามสก2ล .EXE ส#าหร�บ Windows−ไฟล�ที่()ม(ส�ที่ธิ� execute ส#าหร�บ Linux (หร-อ Unix)
241-101 Introduction to Computer Programming
5
ขึ้+�นตอนกร้พ+ฒนโปีร้แกร้มีภษขึ้+�นตอนกร้พ+ฒนโปีร้แกร้มีภษซี�ซี�
Compiler(c-free, gcc, dev-c++)
Linker
Object code(file.o)
Source Code( file.c )
Preprocessing & Compilation
ไฟล�ภาษาเคร-)อง หร-อ ไฟล�โปรแกรม(ไฟล�ที่()ที่#างานไดำ�)Machine code / Program / executable file
( file.exe )
Linking
241-101 Introduction to Computer Programming
6
3 3 ขึ้+�นตอนขึ้องกร้พ+ฒนขึ้+�นตอนขึ้องกร้พ+ฒนโปีร้แกโปีร้แกร้ร้ มี มี (1)(1)
ขึ้+�น ขึ้+�น 1: Preprocessing1: Preprocessing
ที่#างานโดำย์โปรแกรมที่()เร(ย์กวิ&าpreprocessor
ที่#าการแก�ไขั้โค7ดำในหน&วิย์ควิามจ#าหล�ก (RAM) โดำย์ที่#าการแก�ไขั้ตามขั้�อควิามในซอคโค7ดำ
น#าช&องวิ&างและ comments ออกจากโค7ดำ โค7ดำที่()อย์4&ในฮาร�ดำดำ�สไม&ม(การเปล()ย์นแปลง
241-101 Introduction to Computer Programming
7
ขึ้+�น ขึ้+�น 2: Compilation2: Compilation
o ที่#างานโดำย์โปรแกรมที่()ช-)อวิ&า compilero ที่#าการแปลโค7ดำที่()ไดำ�จากขั้��นที่() 1 มาอย์4&ในร4ปขั้อง object code หร-อ machine code ซ*)งเป/นภาษาเคร-)อง
o ที่#าการตรวิจสอบหา ขั้�อผ�ดำพิลาดำ syntax และ warningso ที่#าการบ�นที่*กผลที่()ไดำ�ลงไปในฮาร�ดำดำ�ส หากม(การส�)ง
o หากที่()ขั้�อผ�ดำพิลาดำเก�ดำขั้*�น จะไม&ม(การสร�างไฟล� object ออกมาo ไฟล� object จะถู4กสร�างขั้*�นหากม( warnings แต&ต�องไม&ม( errors
ใดำๆ
3 3 ขึ้+�นตอนขึ้องกร้พ+ฒนขึ้+�นตอนขึ้องกร้พ+ฒนโปีร้แกโปีร้แกร้ร้ มี มี (2)(2)
241-101 Introduction to Computer Programming
8
ขึ้+�น ขึ้+�น 3: Linking3: Linking
o รวิม object ขั้องโปรแกรมก�บ object อ-)นๆ เพิ-)อสร�างเป/นโปรแกรมที่()สามารถูร�นไดำ�
oObject code อ-)นๆไดำ�มาจาก Run-Time Library หร-อ ไลบราร()อ-)นๆ หร-อ object code ที่()ม(การสร�างขั้*�นมา
ก&อนหน�าน(�oบ�นที่*กโปรแกรมที่()สามารถูร�นไดำ�ลงฮาร�ดำดำ�ส
o หากม(ขั้�อผ�ดำพิลาดำ (errors) ใดำๆ เก�ดำขั้*�น (หา library ไม&พิบ , เขั้(ย์นไฟล�ลงดำ�สก�ไม&ไดำ� , ฯลฯ) จะไม&ม(การสร�างโปรแกรมที่()
ร�นไดำ� (executable file)o เม-)อส#าเร5จ ผลล�พิธิ� จะไดำ�ไฟล�โปรแกรมที่()ร �นไดำ� (EXE file)
3 3 ขึ้+�นตอนขึ้องกร้พ+ฒนขึ้+�นตอนขึ้องกร้พ+ฒนโปีร้แกโปีร้แกร้ร้ มี มี (2)(2)
241-101 Introduction to Computer Programming
9
• ม(การแปล Source Code ที่��งหมดำก&อนไดำ� Object File
• น#ามาประกอบก�บ Code บางส&วินที่()เตร(ย์มไวิ�แล�วิ (Library)
• ไดำ�ผลล�พิธิ�เป/น machine language (Executable File)
Hardware
OSOS
Source Code----------------------------------------------------
CompilerCompiler
LinkerLinkerLibrary ------------------------------------------
Object File --.obj
Executable File --.exe
ขึ้+�นตอนกร้พ+ฒนโปีร้แกร้มีขึ้+�นตอนกร้พ+ฒนโปีร้แกร้มี
241-101 Introduction to Computer Programming
10
# include <stdio.h>int main (void){ // My first program
printf(“Hello World!!!”); system(“PAUSE”); return 0;}
เปี#นโปีร้แกร้มีส+�งพ%มีพ*ขึ้�อควมี Hello World!!!
โปีร้แกร้มีแร้กก+บภษ โปีร้แกร้มีแร้กก+บภษ CC Pre-processor
ฟั)งก*ชิ+น main
ขึ้อบเขึ้ตขึ้องฟั)งก*ชิ+น main
คส+�ง
commentคอธิ%บยโปีร้แกร้มี
241-101 Introduction to Computer Programming
11
ส0วนต0งๆ ในโปีร้แกร้มีภษซี� ส0วนต0งๆ ในโปีร้แกร้มีภษซี� Comment ส0วนห+วและ/หร้-อส0วนอ-�นๆขึ้อง
โปีร้แกร้มี ส0วนขึ้อง preprocessors
int main ( void ) { ส0วนขึ้องโปีร้แกร้มี return 0 ; }
241-101 Introduction to Computer Programming
12
Comment Comment คอธิ%บยโปีร้แกร้มีคอธิ%บยโปีร้แกร้มี• comment เป/นขั้�อม4ลที่()ช&วิย์ให�ขั้�อม4ลเก()ย์วิก�บโปรแกรม• ใช�อธิ�บาย์หน�าที่()การที่#างานขั้องโปรแกรม ฟ;งก�ช�น หร-อค#า
ส�)ง เพิ-)อควิามง&าย์ในการที่#าควิามเขั้�าใจ• เขั้(ย์นดำ�วิย์ภาษาอะไรก5ไดำ� (ภาษาไที่ย์ก5ไดำ�)• ไม&ม(ผลกระที่บก�บการที่#างานขั้องโปรแกรม• ในขั้ณะที่ดำลองแก�ไขั้โปรแกรม ส&วินใดำต�องการขั้�ามไป ใช�
comment ป<ดำไวิ�ก&อน ไม&ต�องลบ code ออกที่��งหมดำ เผ-)อต�องการเร(ย์กกล�บมาใช�ใหม&ไดำ�
• เราสามารถูเขั้(ย์นค#าอธิ�บาย์โปรแกรมไดำ�สองแบบ ค-อ
// คอธิ%บยเร้%�มีต�นจกจ/ดน�� ไปีจนหมีดบร้ร้ท+ด
/* คอธิ%บยเร้%�มีต�นจกจ/ดน�� ไปีจนถู�งเคร้-�องหมียจบ แมี�จะขึ้�มีบร้ร้ท+ดไปีก9ตมี */
241-101 Introduction to Computer Programming
13
ส0วนขึ้อง ส0วนขึ้อง PreprocessorPreprocessor
• บรรที่�ดำที่()เร�)มต�นดำ�วิย์ เคร-)องหมาย์ # เร(ย์กวิ&าpreprocessor ต�วิอย์&างเช&น−#define symbol another_symbol
•ใช�ในการแที่นที่()ค#าที่()ก#าหนดำ (symbol) ที่2กค#าในซอร�สโค�ดำดำ�วิย์ค#าที่()ก#าหนดำ (another_symbol)
•ม�กใช�ในการก#าหนดำค&าคงที่() เพิ-)อสะดำวิกต&อการแก�ไขั้•เช&น ในไฟล�ซอร�สโค�ดำม(โค�ดำที่()เก()ย์วิก�บก�บเลขั้ 50 ซ*)งใช�ใน
การต�ดำเกรดำ ซ*)งม(การใช�ในหลาย์จ2ดำขั้องโปรแกรม เราใช� #define เพิ-)อให�ง&าย์ต&อการเปล()ย์นแปลง
•#define FAIL_SCORE 50
241-101 Introduction to Computer Programming
14
ส0วนขึ้อง ส0วนขึ้อง PreprocessorPreprocessor
− #include <stdio.h> ซ*)งเป/นต�วิบอกวิ&าให�น#าheader file ขั้องมาตราฐานการส&งร�บขั้�อม4ล ในstdio.h เขั้�ามาในโปรแกรมดำ�วิย์ เน-)องจากจ#าเป/นต�องใช�
− โดำย์ header file ต�วิน(�ม(ขั้�อม4ลขั้องค#าส�)ง printf() ที่()ใช�ในโปรแกรมขั้องเรา
241-101 Introduction to Computer Programming
15
stdio.hstdio.h เป/น header file ขั้องไลบราร()ขั้องฟ;งก�ช�นที่()
ช&วิย์ให�เราสามารถูเขั้(ย์นโปรแกรมไดำ�โดำย์ไม&จ#าเป/น ต�องเขั้(ย์นโปรแกรมเดำ�มๆหลาย์ๆคร��ง
เน-)องจากฟ;งก�ช�นบางต�วิน��นม(ขั้นาดำย์าวิและม( ควิามซ�บซ�อน การที่()ไม&ต�องเขั้(ย์นฟ;งก�ช�นเหล&าน(�
เองที่#าให�การเขั้(ย์นโปรแกรมง&าย์และเร5วิขั้*�น การใช�งานฟ;งก�ช�นเหล&าน(�ย์�งเป/นการที่#าให�ง&าย์ต&อ
การเร(ย์นร4 �โปรแกรม เน-)องจากที่#าให�อ&านโปรแกรมง&าย์
241-101 Introduction to Computer Programming
16
int main ( void )int main ( void )
• ที่2กๆโปรแกรมจะต�องม(ฟ;งก�ช�นที่()ช-)อวิ&าmain. เพิราะน(�เป/นส&วินแรกที่()โปรแกรมจะเร�)มที่#างาน
• ฟ;งก�ช�น main( ) ถู4กก#าหนดำขั้*�นให�เป/นส&วินแรกขั้องโปรแกรมที่()จะถู4กร�นเพิ-)อให�สะดำวิกแก&
การอ&านโปรแกรม ที่2กโปรแกรมต�องม(ฟ;งก�ช�นที่()ม(ช-) อน(� และต�องม(เพิ(ย์งฟ;งก�ช�นเดำ(ย์วิเที่&าน��น
เพิ-)อให�โปรแกรมสามารถู compile และที่#างานไดำ�
241-101 Introduction to Computer Programming
17
int main ( void )int main ( void )
• “คสงวน “คสงวน int” int” ท��นหน� ท��นหน� main( ) main( ) เปี#นต+วบอกเปี#นต+วบอกว0ฟั)งก*ชิ+นจะมี�กร้ส0งว0ฟั)งก*ชิ+นจะมี�กร้ส0งค0ออกค0ออกเปี#นชิน%ดต+วเลขึ้เปี#นชิน%ดต+วเลขึ้จนวนเต9มีจนวนเต9มี (int (int มีจก มีจก integer) integer) เมี-�อจบเมี-�อจบฟั)งก*ชิ+นฟั)งก*ชิ+น
• “วงเล9บท��ตมีหล+งคสงวน “วงเล9บท��ตมีหล+งคสงวน main” main” บอกให�บอกให�ทร้บว0น��ค-อฟั)งก*ชิ+นทร้บว0น��ค-อฟั)งก*ชิ+น
• “คสงวน “คสงวน voidvoid” ” บอกให�ทร้บว0ฟั)งก*ชิ+นด+งบอกให�ทร้บว0ฟั)งก*ชิ+นด+งกล0วไมี0มี�กร้กล0วไมี0มี�กร้ร้+บร้+บ ค0เขึ้�จกภยนอก ค0เขึ้�จกภยนอก(parameter/argument)(parameter/argument)
• int main( )int main( ) มี�ควมีหมียเด�ยวก+บ มี�ควมีหมียเด�ยวก+บ int int main(void)main(void)
241-101 Introduction to Computer Programming
18
ส0วนขึ้องโปีร้แกร้มีส0วนขึ้องโปีร้แกร้มี• วงเล9บปี�กกเปี:ด { บอกให�ทร้บว0ส0วนขึ้องฟั)งก*ชิ+น
หร้-อขึ้อบเขึ้ตขึ้องโค;ดเร้%�มีต�นท��ใด• วงเล9บปี�กกปี:ด } บอกให�ทร้บว0ส0วนขึ้องฟั)งก*ชิ+น
หร้-อขึ้อบเขึ้ตขึ้องโค;ดส%�นส/ดท��ใด• เคร้-�องหมีย ; บอกให�ทร้บว0คส+�งหน��งจบลง
( ต�องใส0ไว�หล+งคส+�งท/กคส+�ง มี%ฉะน+�นจะเก%ด syntax error
• กร้ย0อหน�ในกร้เขึ้�ยนโปีร้แกร้มีเปี#นล+กษณ์ะกร้ เขึ้�ยนโปีร้แกร้มีท��ด� เพ-�อให�สะดวกต0อกร้หขึ้อบเขึ้ต
ขึ้องคส+�ง
241-101 Introduction to Computer Programming
19
printf (“Hello World!!!”) ;printf (“Hello World!!!”) ;
• บรรที่�ดำน(�เป/นส&วินค#าส�)งขั้องภาษาซ(• เป/นการเร(ย์กใช�ฟ;งก�ช�นช-)อวิ&า printf ( ) โดำย์ม(การส&ง
ผ&านค&าเขั้�าไปในฟ;งก�ช�น หน*)งค&า “Hello World!!!” เป/น ค&าชน�ดำ string
•argument (parameter): ค&าที่()ส&งผ&านเขั้�าไปในฟ;งก�ช� )น
241-101 Introduction to Computer Programming
20
return 0 ;return 0 ;
• เน-�องจกฟั)งก*ชิ+น main() มี�กร้ส0งค0กล+บมี ก0อนจะจบฟั)งก*ชิ+นจ�งต�องมี�กร้ใชิ�คส+�ง return
ตมีด�วยต+วเลขึ้ท��จะส0งกล+บไปี โดยค0ท��ส0งกล+บไปี จะถู�กส0งไปีให�ร้ะบบปีฏิ%บ+ต%กร้ (operating
systems)• ค0 0 เปี#นต+วบอกว0โปีร้แกร้มีทงนเสร้9จส%�น
สมีบ�ร้ณ์*• ย+งไมี0ต�องก+งวลก+บเร้-�องน��ตอนน�� เพ�ยงให�จว0
ต�องใส0คส+�งน��ไว�ในตอนท�ยขึ้องฟั)งก*ชิ+นmain() ท/กคร้+�ง
241-101 Introduction to Computer Programming
21
# include <stdio.h>int main (void){ printf(“My name is Tommy \n”); return 0;}
จงแสดงผลล+พธิ*ขึ้องโปีร้แกร้มี
ต+วอย0งโปีร้แกร้มีต+วอย0งโปีร้แกร้มี
ผลกร้ร้+นโปีร้แกร้มี My name is Tommy
241-101 Introduction to Computer Programming
22
# include <stdio.h>int main (void){
printf(“Tommy Kim\n 53102999\n”);return 0;
}
จงเขึ้�ยนโปีร้แกร้มีแสดงชิ-�อ นมีสก/ล พร้�อมีก+บร้ห+สน+กศ�กษ
ทดสอบควมีเขึ้�ใจทดสอบควมีเขึ้�ใจ
ผลกร้ร้+นโปีร้แกร้มี: Tommy Kim53102999
23
241-101 Introduction to Computer Programming
คณาจารย์�ภาควิ�ชาวิ�ศวิกรรมคอมพิ�วิเตอร�[email protected]
ต+วแปีร้และต+วดเน%นกร้ต+วแปีร้และต+วดเน%นกร้
241-101 Introduction to Computer Programming
24
ชิน%ดขึ้�อมี�ลพ-�นฐนชิน%ดขึ้�อมี�ลพ-�นฐน• ภษ C เปี#นภษท��เขึ้�มีงวดก+บเร้-�องชิน%ด
ขึ้�อมี�ล−int ต�วิเลขั้จ#านวินเต5ม−float ต�วิเลขั้ที่ศน�ย์ม−double ต�วิเลขั้ที่ศน�ย์มที่()ม(ควิามจ2เป/น 2 เที่&า−char ต�วิอ�กษร
• ชิน%ดขึ้�อมี�ลบงต+ว อจทงนร้0วมีก+บต+วปีร้+บปีร้/ง signed, unsigned, short และ long
241-101 Introduction to Computer Programming
25
ขึ้�อมี�ลขึ้�อมี�ล• โปรแกรมส&วินใหญ่&เก()ย์วิขั้�องก�บการประมวิลผล
ขั้�อม4ล• ขั้�อม4ลภาย์ในโปรแกรม
−ค&าคงที่()−ต�วิแปร
• ขั้�อม4ลจากภาย์นอก−การกดำ keyboard−ไฟล�−ระบบเคร-อขั้&าย์−อ-)นๆ
241-101 Introduction to Computer Programming
26
ค0คงท�� ค0คงท�� Constant ValueConstant Value• ต+วเลขึ้จนวนเต9มี (ฐนส%บ Decimal ) เชิ0น 10, 20, -5
−เลขึ้ฐน 16 (Hexadecimal) เชิ0น 0x32, 0x5FB (ขึ้��นต�นด�วย 0 x)
−เลขึ้ฐน 8 (Octal ) เชิ0น 013, 041, 07 (ขึ้��นต�นด�วยศ�นย*)• ต+วเลขึ้ทศน%ยมี เชิ0น 7.2, 5.6, 0.002, 2e-3, -
3.14159e2, -314.159• ต+วอ+กษร้ เชิ0น 'c' ,'1', '5' , ' ' (space), ‘$'
−ต+วอ+กษร้พ%เศษท��ขึ้��นต�นด�วย \ เชิ0น '\t'−อ+กขึ้ร้ะพ%เศษสมีร้ถูยกเล%กควมีพ%เศษได�โดยใชิ� \ นหน� เชิ0น
'\\' ค-ออ+กขึ้ร้ะ \• ขึ้�อควมี String (ไมี0ใชิ0ขึ้�อมี�ลชิน%ดพ-�นฐน ) เชิ0น "Hello"
−ขึ้�อควมีว0งเปีล0 "" −ขึ้�อควมีท��มี�ต+วอ+กษร้ว0ง(space)หน��งต+ว " "
241-101 Introduction to Computer Programming
27
ขึ้�อมี�ลต+วอ+กษร้ ขึ้�อมี�ลต+วอ+กษร้ Character Character ขั้นาดำหน*)งไบต�
เก5บค&าเป/นจ#านวินเต5มไดำ� 256 ค&า 0( _255 หร-อ -128_1
27
ค&าจ#านวินค-อรห�สขั้องต�วิอ�กษร ตามมาตรฐานASCII เร(ย์กวิ&าร้ห+สแอสก�� (ASCII)
241-101 Introduction to Computer Programming
28
ต+วแปีร้ ต+วแปีร้ VariableVariable• ใชิ�หน0วยควมีจขึ้องคอมีพ%วเตอร้*ในกร้จดจขึ้�อมี�ล• ยกท��จะอ�งอ%งตแหน0งในหน0วยควมีจ เร้จ�งใชิ�ชิ-�อ
ขึ้องต+วแปีร้ในกร้อ�งอ%ง• ต+วแปีร้ต�องถู�กปีร้ะกศก0อนกร้ใชิ�งน• กร้ปีร้ะกศต+วแปีร้ ปีร้ะกอบด�วย ชิน%ดขึ้�อมี�ล ชิ-�อ
ต+วแปีร้ (อจจะมี�กร้กหนดค0เร้%�มีต�นด�วย ) และตมีด�วย ; (semi-colon) เชิ0น int x; หร้-อ int x = 2; ชิ-�อต+วแปีร้ เปี#นกร้ปีร้ะกอบก+นร้ะหว0ง ต+วอ+กษร้ ต+วเลขึ้
เคร้-�องหมีย _ (underscore) ท+�งน��ห�มีขึ้��นต�นด�วยต+วเลขึ้ และไมี0เปี#นคสงวน
241-101 Introduction to Computer Programming
29
ต+วอย0งกร้ปีร้ะกศใชิ�งนต+วอย0งกร้ปีร้ะกศใชิ�งนต+วแปีร้ต+วแปีร้• ประกาศต�วิแปร c ม(ชน�ดำเป/นต�วิอ�กษร 1 ต�วิ
char c;
• ประกาศต�วิแปร count ม(ชน�ดำเป/นเลขั้จ#านวินเต5มพิร�อมที่��งก#าหนดำให�ม(ค&าเที่&าก�บ 8 int count=8;
• ประกาศต�วิแปร price ม(ชน�ดำเป/นเลขั้ที่ศน�ย์ม float price;
241-101 Introduction to Computer Programming
30
ต+วอย0งกร้ปีร้ะกศต+วแปีร้ต+วอย0งกร้ปีร้ะกศต+วแปีร้ ปีร้ะกศต+วแปีร้ชิ-�อ happy มี�ชิน%ดเปี#นต+วอ+กษร้ 1 ต+ว
พร้�อมีท+�งกหนดให�มี�ค0เปี#นต+วอ+กษร้ C ( capital letter พ%มีพ*ใหญ่0 )
char happy=‘C’; ปีร้ะกศต+วแปีร้ easy มี�ชิน%ดเปี#นเลขึ้จนวนเต9มีพร้�อมี
ท+�งกหนดให�มี�ค0เท0ก+บ 5 และ ต+วแปีร้ Easy มี�ชิน%ดเปี#นเลขึ้จนวนเต9มีพร้�อมีท+�งกหนดให�มี�ค0เท0ก+บ 10
int easy=5, Easy=10; หร้-อ int easy=5; int Easy=10;
ประกาศต�วิแปรช-)อ test ม(ชน�ดำเป/นเลขั้ที่ศน�ย์มม(ค&าเที่&าก�บ 75.
float test=7.5;
241-101 Introduction to Computer Programming
31
กร้ต+�งชิ-�อต+วแปีร้กร้ต+�งชิ-�อต+วแปีร้
• อ+กษร้ต+วแร้กจะต�องเปี#นต+วอ+กษร้ภษอ+งกฤษหร้-อ เคร้-�องหมีย
_ (underline character) สมีร้ถูต+�งชิ-�อต+วแปีร้โดยใชิ�ต+วเลขึ้ร้0วมีก+บ
ต+วอ+กษร้ภษอ+งกฤษ ได�แต0ห�มีใชิ�ต+วเลขึ้เปี#นต+วอ+กษร้ต+วแร้ก ต+วอ+กษร้ภษอ+งกฤษต+วพ%มีพ*เล9กและต+วพ%มีพ*ใหญ่0ถู-อเปี#นคนละต+วก+น เชิ0น name ก+บ NAME
241-101 Introduction to Computer Programming
32
auto default float register structvolatile break do for returnswitch while case double gotoshort typedef char else ifsigned union const enum intsizeof unsigned continue extern longstatic void
• ห�มีต+�งชิ-�อซี�ก+บคสงวน (Keywords) ซี��งเปี#นคท��มี�อย�0แล�วในภษC
กร้ต+�งชิ-�อต+วแปีร้กร้ต+�งชิ-�อต+วแปีร้
241-101 Introduction to Computer Programming
33
ต+วอย0งต+วอย0งคต0อไปีน��สมีร้ถูนมีต+�งเปี#นชิ-�อต+วแปีร้ได�
หร้-อไมี0
number
2value
grade1
student_id
float
_score
$age
Number-person
241-101 Introduction to Computer Programming
34
ต+วอย0งกร้ใชิ�งนต+วแปีร้ต+วอย0งกร้ใชิ�งนต+วแปีร้#include <stdio.h>#define NUM 5
int main(){ int x = NUM; float y; y = x + NUM; printf("%.1f\n", y); return 0;}
NUM ไม&ใช&ต�วิแปร แต&จะถู4กแที่นดำ�วิย์5 ก&อนการคอมไพิล�
ผลล�พิธิ�ขั้องการค#านวิณ เป/นไปตามชน�ดำขั้�อม4ลขั้องต�วิถู4กดำ#าเน�นการที่()ใหญ่&ส2ดำint + float => float
x เป/นต�วิแปร ชน�ดำจ#านวินเต5ม
ค&า y ถู4กก#าหนดำค&าโดำย์เคร-)องหมาย์ =ดำ�านซ�าย์เป/นต�วิแปรดำ�านขั้วิาเป/นการค#านวิณต�วิเลขั้
241-101 Introduction to Computer Programming
35
ต+วดเน%นกร้ทงคณ์%ตศสตร้* ต+วดเน%นกร้ทงคณ์%ตศสตร้* Arithmetic OperatorsArithmetic Operators
• ต�วิดำ#าเน�นการที่างคณ�ตศาสตร� ม( 5 ต�วิ ค-อ บวิก ลบ ค4ณ หาร มอดำ4ล�ส ( + - * / % ตามล#าดำ�บ)
• มอดำ4ล�สค-อการหาเศษขั้องการหาร ใช�ไดำ�ก�บจ#านวินเต5มเที่&าน��น
• มอดำ4ล�ส ค-อ เคร-)องหมาย์ที่()ให�ผลล�พิธิ�เป/น เศษขั้องการหาร ค-อ 13%5 ไดำ� 3
• ผลล�พิธิ�ขั้องน�พิจน� จะม(ชน�ดำขั้�อม4ล ตามชน�ดำขั้�อม4ลที่()ใหญ่&ที่()ส2ดำขั้องต�วิถู4กดำ#าเน�นการ−int x =6; float y = 2.0;−x* 5 ผลล�พิธิ�ที่()ไดำ�ค-อ น�พิจน�ขั้อง int−x/5 ผลล�พิธิ�ที่()ไดำ�ค-อ น�พิจน�ขั้อง int (เลขั้ที่ศน�ย์มจะหาย์ไป)−x* y ผลล�พิธิ�ที่()ไดำ� ค-อ น�พิจน�ขั้อง float
241-101 Introduction to Computer Programming
36
ต�วิอย์&างต�วิอย์&างจากค#าส�)งต&อไปน(�int a,b,c;
a = 2;
b = 3;
c = a + b;
จงหาค&าขั้องต�วิแปร c C = 5C = 5
241-101 Introduction to Computer Programming
37
ต�วิอย์&างต�วิอย์&าง
จกคส+�งต0อไปีน��int a,b;a = 2;a = 5;b = a + 4;จงหค0ขึ้อง
ต+วแปีร้ b
จกคส+�งต0อไปีน��
int a;
a = 2;
a = a + 3;
จงหค0ขึ้องต+วแปีร้ a
241-101 Introduction to Computer Programming
38
ต+วดเน%นกร้ทงคณ์%ตศสตร้* ต+วดเน%นกร้ทงคณ์%ตศสตร้* (Arithmetic Operator)(Arithmetic Operator)
เคร้-�องหมีย ควมีหมีย+ บวก- ลบ* ค�ณ์/ หร้% หร้เอเศษ (Modulo)++ เพ%�มีค0คร้+�งละ 1-- ลดค0คร้+�งละ 1
241-101 Introduction to Computer Programming
39
ลด+บขึ้องต+วดเน%นกร้ลด+บขึ้องต+วดเน%นกร้
เคร้-�องหมีย ท%ศกร้ทงน() ซี�ยไปีขึ้ว
* / % ซี�ยไปีขึ้ว+ - ซี�ยไปีขึ้ว
ก0อน
หล+ง
241-101 Introduction to Computer Programming
40
กร้กหนดค0 และลด+บขึ้องกร้ กร้กหนดค0 และลด+บขึ้องกร้ดเน%นกร้ดเน%นกร้
• ล#าดำ�บขั้องต�วิดำ#าเน�นการ จะเก�ดำขั้*�นตามระดำ�บขั้องต�วิดำ#าเน�นการ−ค4ณ และหาร จะกระที่#าก&อนบวิกและลบ ถู�าระดำ�บเที่&าก�น จ*งค#านวินจาก
ซ�าย์ไปขั้วิา
• เพิ-)อป@องก�นควิามส�บสน ควิรใช� ( ) เพิ-)อระบ2วิ&าต�วิดำ#าเน�นการใดำต�องที่#าก&อน− เช&น (sum/4) + (max*lowest) เป/นต�น
น%พจน*ทงขึ้วมี-อขึ้องเคร้-�องหมีย น%พจน*ทงขึ้วมี-อขึ้องเคร้-�องหมีย = = ต�องถู�กปีร้ะเมี%น ต�องถู�กปีร้ะเมี%น
ผลล+พธิ*ขึ้องน%พจน*ถู�กนไปีบ+นท�กในต+วแปีร้ทงซี�ยมี-อผลล+พธิ*ขึ้องน%พจน*ถู�กนไปีบ+นท�กในต+วแปีร้ทงซี�ยมี-อ
answer = sum / 4 + MAX * lowest;
14 3 2
241-101 Introduction to Computer Programming
41
ต�วิอย์&างต�วิอย์&าง จงหาค&าขั้องน�พิจน�ต&อไปน(�จงหาค&าขั้องน�พิจน�ต&อไปน(�10/5 _____________
3/9 _____________
7/2 _____________
7.0/2 _____________
21%4 _____________
10%7 _____________
10%2 _____________
3%7 _____________
22
00
33
3.53.5
11
33
00
33
241-101 Introduction to Computer Programming
42
10 + 2 * 3 * -1 _____________
2 * 5 % 8 + -7 _____________
(3 + 5/2)*(7 - 3 - 5%2)_____________
ต�วิอย์&างต�วิอย์&าง.. จงหาค&าขั้องน�พิจน�ต&อไปน(�จงหาค&าขั้องน�พิจน�ต&อไปน(�
44
-5-5
1515
55 * * 3 3
241-101 Introduction to Computer Programming
43
•ก#าหนดำให� x, y และ z เป/นต�วิแปรจ#านวินเต5ม จงหาค&าขั้องต�วิแปร x, y และ z หล�งจากส&วินขั้องโปรแกรมขั้�างล&างน(�ที่#างานเสร5จ
int x = 7; int y = 2; int z = 4; x = x / y; y = z; y = z % 6; z = z / 2;
ก. x=7 y=2 z=4ขั้. x=3 y=4 z=2ค. x=3 y=4 z=4ง. x=7 y=2 z=2
241-101 Introduction to Computer Programming
44
ควมีแตกต0งขึ้องเคร้-�องหมีย = และ ==o เคร้-�องหมีย = เปี#นต+วกหนดค0 o เคร้-�องหมีย == เปี#นเคร้-�องหมียเปีร้�ยบเท�ยบ ต+วอย0งเชิ0น
หมียถู�ง เปี#นกร้กหนดค0ให�ก+บต+วแปีร้ point ให�มี�ค0เท0ก+บ 30
หมียถู�ง เปี#นกร้ตร้วจสอบว0ค0 point มี�ค0เท0ก+บ 30 หร้-อไมี0
ต+วอย0งต+วอย0ง
point = 30;
point == 30;
241-101 Introduction to Computer Programming
45
ต+วดเน%นกร้เพ%�มีค0และต+วดเน%นกร้ลดต+วดเน%นกร้เพ%�มีค0และต+วดเน%นกร้ลดค0ค0
(Increment & Decrement)(Increment & Decrement)
• ต+วดเน%นกร้ ++ จะบวกหน��งเขึ้�ก+บต+วแปีร้ท��ถู�กดเน%นกร้
• ต+วดเน%นกร้ -- จะลบหน��งออกจกต+วแปีร้ท��ถู�กดเน%นกร้
241-101 Introduction to Computer Programming
46
ต�วิอย์&างต�วิอย์&าง จงเขั้(ย์นผลล�พิธิ�ขั้องโปรแกรมต&อ จงเขั้(ย์นผลล�พิธิ�ขั้องโปรแกรมต&อไปน(�ไปน(�
//increment.c#include <stdio.h>int main(){ int a = 2,b,c; b = ++a; printf(“b= %d a= %d\n”,b,a); c = b++; printf(“b= %d c= %d\n”,b,c);
return 0;}
b= 3 a= 3b= 3 a= 3
b= 4 c=3b= 4 c=3
241-101 Introduction to Computer Programming
47
กร้แปีลงชิน%ดขึ้�อมี�ลกร้แปีลงชิน%ดขึ้�อมี�ล• การแปลงชน�ดำขั้�อม4ล เก�ดำขั้*�นไดำ� 3 ที่างดำ�วิย์ก�น• ที่างที่() 1 การแปลงผ&านเคร-)องหมาย์ =
int a = 3; double y=a; printf("y %f",y); // 3.000
• ที่างที่() 2 การแปลงเม-)อเก�ดำการดำ#าเน�นการ− เม-)อ a * b โดำย์ a และ b เป/น int
int a = 3,b,c; float y=1.5; printf("%f",(a*y)); //4.5000
• ที่างที่() 3 การแปลงผ&านการที่#าคาสต��ง (Casting)
241-101 Introduction to Computer Programming
48
//cast.c#include <stdio.h>int main(){ int a =10, b=4; double x1,x2,x3; printf("a/b= %d \n",(a/b));
x1=a/b; printf("x1= %f \n",x1); x2= (double)(a/b); printf("x2= %f \n",x2);
x3= (double)a/b; printf("x3= %f \n",x3); return 0;}
241-101 Introduction to Computer Programming
49
ต+วดเน%นกร้ปีร้ะกอบ ต+วดเน%นกร้ปีร้ะกอบ (Compound Operator)(Compound Operator)
• เปี#นร้�ปีย0อขึ้องต+วดเน%นกร้และต+วแปีร้ท��ถู�กดเน%นกร้
• ต+วอย0งเชิ0นx = x + 1; เขึ้�ยนแทนได�ด�วย x += 1;a = a - b; เขึ้�ยนแทนได�ด�วย a -= b;x = x * 2; เขึ้�ยนแทนได�ด�วย x *= 2;y = y / 5; เขึ้�ยนแทนได�ด�วย y /= 5;
241-101 Introduction to Computer Programming
50
ต+วอย0งต+วอย0งจากค#าส�)งต&อไปน(� int num1 = 3,num2 = 1;
num1 *= 4;
num2 += num1 - 2;
จงหาค&าขั้องต�วิแปร num2 num2=11num2=11
241-101 Introduction to Computer Programming
51
ขึ้อบเขึ้ตขึ้องต+วแปีร้ขึ้อบเขึ้ตขึ้องต+วแปีร้• ต+วแปีร้ถู�กปีร้ะกศได�ท+�งภยนอก และภยในฟั)งก*ชิ+น• ต+วแปีร้ท��ถู�กปีร้ะกศภยในฟั)งก*ชิ+น
−ถู�กสร้�งขึ้��น เมี-�อฟั)งก*ชิ+นเร้%�มีทงน−ถู�กทลย เมี-�อฟั)งก*ชิ+นจบกร้ทงน−เปี#นท��ร้��จ+ก ภยในเคร้-�องหมีย { และ } ขึ้องฟั)งก*ชิ+นท��มี�
กร้ปีร้ะกศเท0น+�น−ไมี0สมีร้ถูอ�งอ%งจกฟั)งก*ชิ+นอ-�นได� แมี�ว0 ต+วแปีร้น+�นย+งไมี0
ได�ถู�กทลย• ต+วแปีร้ท��ถู�กปีร้ะกศภยนอกฟั)งก*ชิ+น (ในเบ-�องต�น
นศ. ไมี0ควร้ใชิ�ต+วแปีร้ล+กษณ์ะน��)−ถู�กสร้�งขึ้��น และดร้งอย�0 ตลอดกร้ทงนขึ้องโปีร้แกร้มี−เปี#นท��ร้��จ+ก ในท/กๆ ฟั)งก*ชิ+นภยในไฟัล*เด�ยวก+น−สมีร้ถูร้��จ+กก+นต0งไฟัล*ได� โดยใชิ�ต+วปีร้+บปีร้/ง extern
241-101 Introduction to Computer Programming
52
ต�วิอย์&างการใช�ต�วิแปรภาย์ในต�วิอย์&างการใช�ต�วิแปรภาย์ใน// internal.c#include <stdio.h>void my_func();int main(){ double x = 1.1; my_func(); printf(“In main x = %f\n”,x); return 0;}void my_func(){ double x; x = 2.5; printf(“In my_func x = %f\n”,x);}
241-101 Introduction to Computer Programming
53
ต�วิอย์&างการใช�ต�วิแปรภาย์นอกต�วิอย์&างการใช�ต�วิแปรภาย์นอก//external.c#include <iostream.h>double x; void my_func();int main(){ x = 1.1; my_func(); printf(“In main x = %f\n”,x); return 0;}void my_func(){ x = 2.5; printf(“In my_func x = %f\n”,x);}
241-101 Introduction to Computer Programming
54
ต+วแปีร้ภยในท��มี�ชิ-�อเด�ยวก+บต+วแปีร้ต+วแปีร้ภยในท��มี�ชิ-�อเด�ยวก+บต+วแปีร้ภยนอกภยนอก// variable.c
#include <stdio.h>double x;void my_func();int main(){ double x = 1.1; my_func(); printf(“In main x = %f\n”,x);
return 0;}void my_func(){ x = 2.5; printf(“In my_func x = %f\n”,x);}
55
241-101 Introduction to Computer Programming
คณาจารย์�ภาควิ�ชาวิ�ศวิกรรมคอมพิ�วิเตอร�[email protected]
กร้แสดงผลและกร้ร้+บค0กร้แสดงผลและกร้ร้+บค0
น�พิจน�ก�บการแสดำงผลและการร�บค&าการแสดำงผล
การร�บค&า
241-101 Introduction to Computer Programming
56
น%พจน*ก+บกร้แสดงผลและร้+บค0น%พจน*ก+บกร้แสดงผลและร้+บค0• คอมพิ�วิเตอร�สามารถูแสดำงผลไดำ�หลาย์ร4ปแบบเช&น
ขั้�อควิาม ภาพิ เส(ย์ง• การเขั้(ย์นโปรแกรมช��นตอนเป/นการแสดำงผลดำ�วิย์
ขั้�อควิาม• ภาษา C ไม&วิ&าจะเป/นการแสดำงผลหร-อร�บค&าเบ-�องต�น จะ
ที่#าผ&านขั้�อควิาม• ส�)งที่()ต�องการแสดำงผลต�องแปลงจากน�พิจน�ต&างๆ ไป
เป/นขั้�อควิาม• ส�)งที่()ต�องการน#าเขั้�าจะต�องแปลงจากขั้�อควิามเป/น
น�พิจน�
241-101 Introduction to Computer Programming
57
น%พจน*ก+บกร้แสดงผลน%พจน*ก+บกร้แสดงผล
xต�วิแปรหร-อค&าคงที่()ใน RAM(ถู4กประกาศผ&าน int x;)
และป;จจ2บ�นเก5บค&าในเลขั้ฐาน 2
ฟ;งก�ช�น printfถู4กเร(ย์กดำ�วิย์ printf(“%d”, x)
10
แปลงต�วิแปร x ตามร4ปแบบที่()ก#าหนดำเพิ-)อเปล()ย์นให�เป/นขั้�อควิามแล�วิน#าไปแสดำงผลบนหน�าจอ
241-101 Introduction to Computer Programming
58
น%พจน*ก+บกร้ร้+บค0น%พจน*ก+บกร้ร้+บค0
10
xต�วิแปรหร-อค&าคงที่()ใน RAM(ถู4กประกาศผ&าน int x;)
และป;จจ2บ�นเก5บ เลขั้ฐาน 2
ฟ;งก�ช�น printfถู4กเร(ย์กดำ�วิย์ scanf(“%d”, &x)
แปลงขั้�อควิามที่()ไดำ�ร�บเป/นชน�ดำตามร4ปแบบที่()ก#าหนดำและก#าหนดำให�น#าค&าไปใส&ต�วิแปร x
โปรแกรมหย์2ดำรอร�บค&าจากผ4�ใช�ผ4�ใช�พิ�มพิ� 1 และ 0 ซ*)งเป/นขั้�อควิามปรากฏบนหน�าจอขั้�อควิามถู4กส&งไปย์�ง scanf เม-)อผ4�ใช�กดำ Enter
241-101 Introduction to Computer Programming
59
กร้แสดงผล• ใช�ฟ;งก�ช�น printf ในการร�บค&า• เช&น printf(“%s has %d\n”, name,
salary);• %s และ %d เร(ย์กวิ&า Code Format• พิาราม�เตอร�ต�วิแรกค-อร4ปแบบขั้องผลล�พิธิ�ตาม
ดำ�วิย์น�พิจน� 0 หร-อมากกวิ&า โดำย์ให�ม(จ#านวินเที่&าก�บ Code Format ที่()ระบ2ไวิ�ในร4ปแบบ
• น�พิจน�ที่()ก#าหนดำหล�งร4ปแบบ จะต�องม(ชน�ดำตรงหร-อเที่(ย์บเที่&าตามระบ2ไวิ�ใน Code Format
241-101 Introduction to Computer Programming
60
กร้ร้+บค0กร้ร้+บค0• ใช�ฟ;งก�ช�น scanf ในการร�บค&า• เช&น scanf(“%d”, &x);
• โดำย์พิาราม�เตอร�ต�วิแรกค-อ ร4ปแบบ และต�วิหล�งค-อต+วแปีร้ (เปี#นน%นพจน*ไมี0ได� ) ที่()ม(ชน�ดำตรงหร-อเที่(ย์บเที่&าก�บที่()ระบ2ไวิ�ใน Code Format
• ต�วิแปรที่()ตามหล�งจะต�องม(การระบ2เคร-)องหมาย์ & ย์กเวิ�นส#าหร�บขั้�อควิามเที่&าน��น
241-101 Introduction to Computer Programming
61
//print.c#include<stdio.h>int main(){
printf("Welcome\t\tto my program\n"); printf("C language is\teasy\n\n"); printf("\"Good bye\"\n"); return 0;
}
Escape sequence หร้-อ ร้ห+สควบค/มี\a เส�ยง beep\t แท9ปีในแนวนอน\n ขึ้��นบร้ร้ท+ดใหมี0
\” Double Quote “\’ Single Quote ‘
241-101 Introduction to Computer Programming
62
ต+วอย0งต+วอย0ง//input.c#include<stdio.h>int main(){ char name[100]; int salary; printf("Please enter your name: "); scanf("%s", name); printf("Please enter your salary: "); scanf("%d", &salary); printf("%s gets %d\n", name, salary); }
จงเพิ�)มเต�มโปรแกรมเพิ-)อร�บค&า น#�าหน�ก (weight)แล�วิแสดำงผลล�พิธิ�
241-101 Introduction to Computer Programming
63
Code FormatCode Format ที่()ควิรร4 �ที่()ควิรร4 �
• %c = ต�วิอ�กษรหน*)งต�วิ (character)• %d = ต�วิเลขั้จ#านวินเต5ม (decimal integer)• %f = เลขั้ที่ศน�ย์ม (floating-point
number)• %.2f = เลขั้ที่ศน�ย์ม 2 ต#าแหน&ง • %o = เลขั้ฐานแปดำ (octal number)• %s = ขั้�อควิาม (string)
241-101 Introduction to Computer Programming
64
#include<stdio.h>
int main() { int a = 14, b = 3; int i = 10, j = 2, k = 5, x = 4, y = 5; /*Difference between / and %% */ printf("Difference between / and %\n"); printf("a = %3d , b = %3d \n",a,b); printf("a/b = %3d \n",a/b); printf("a%%b = %3d \n\n",a%b); return 0;}
ExampleExample
241-101 Introduction to Computer Programming
65
#include<stdio.h>
int main() { int a = 14, b = 3; int i = 10, j = 2, k = 5, x = 4, y = 5; /*Using casting*/ printf("Using casting\n"); printf("(float) a/b = %f\n\n",(float)a/b); return 0;}
ExampleExample
241-101 Introduction to Computer Programming
66
#include<stdio.h>
int main() { int a = 14, b = 3; int i = 10, j = 2, k = 5, x = 4, y = 5; /*Precedence of arithmetic operators*/ printf("Precedence of arithmetic operators\n"); printf("i = 10, j = 2, k = 5, x = 4, y = 5\n"); printf("i+j*k = %d\n",i+j*k); printf("(i+j)*k = %d\n",(i+j)*k); printf("i+(j*k) = %d\n",i+(j*k)); printf("x*y+i/10*k-8 = %d\n",x*y+i/10*k-8); return 0;}
ExampleExample
241-101 Introduction to Computer Programming
67
#include <stdio.h>int main (){ int i,j; printf("Enter the value of i: "); scanf("%d",&i);
printf("\nEnter the value of j: "); scanf("%d",&j);
/* Logical Operator */ printf("\nUsing Logical Operator\n"); printf(" i&&j is %d\n",i&&j); printf(" i||j is %d\n",i||j); printf(" !i is %d\n",!i); printf(" !j is %d\n",!j);
return 0;}
ExampleExample
241-101 Introduction to Computer Programming
68
กรณ(ศ*กษาขั้�อผ�ดำพิลาดำที่()เก�ดำขั้*�นกรณ(ศ*กษาขั้�อผ�ดำพิลาดำที่()เก�ดำขั้*�น
• Case 1: ล-มีปี:ดปี�กกขึ้อง main
• Case 2: พ%มีพ*คว0 #include ผ%ด• Case 3: พ%มีพ* stdio.h ผ%ด• Case 4: พ%มีพ*ชิ-�อฟั)งก*ชิ+น main ผ%ด• Case 5: ล-มี ;• Case 6: ล-มี ; อ�กคร้+�ง• Case 7: ล-มี ; หลย ๆ จ/ด• Case 8: ล-มีปีร้ะกศต+วแปีร้
68
241-101 Introduction to Computer Programming
69
กรณ(ศ*กษาขั้�อผ�ดำพิลาดำที่()เก�ดำขั้*�น กรณ(ศ*กษาขั้�อผ�ดำพิลาดำที่()เก�ดำขั้*�น ((ต&อต&อ))
• Case 9: ล-มีปี:ดวงเล9บเวลใชิ� printf หร้-อ scanf
• Case 10: ล-มีเปี:ดวงเล9บเวลใชิ� printf หร้-อ scanf
• Case 11: ล-มีปี:ดเคร้-�องหมียคพ�ด• Case 12: ล-มีเปี:ดเคร้-�องหมียคพ�ด• Case 13: ล-มีเปี:ดวงเล9บเคร้-�องหมียคพ�ด• Case 14 : เอต+วแปีร้ไปีใส0ค0คงท��• ขึ้�อผ%ดพลดบงอย0ง คอมีไพเลอร้*เต-อนเร้ไมี0ได�
69
241-101 Introduction to Computer Programming
70
Case 1: Case 1: ล-มป<ดำปBกกาขั้อง ล-มป<ดำปBกกาขั้อง mainmain
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดIn function `main':
syntax error at end of input
•กร้ต�ควมีร้�ปีแบบมี�ขึ้�อผ%ดพลดตอนท�ยขึ้องโปีร้แกร้มี
1.#include<stdio.h>
2.main(){
241-101 Introduction to Computer Programming
71
CaseCase 2 2: : พิ�มพิ�ค#าวิ&า พิ�มพิ�ค#าวิ&า #include #include ผ�ดำผ�ดำ
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดLine 1:
invalid preprocessing directive #inlude
•กร้ต�ควมี ส&วินขั้อง preprocessor ไม&ถู4กต�อง ในส&วินขั้อง #inlude
1.#inlude<stdio.h>
2.main(){
3.}
241-101 Introduction to Computer Programming
72
CaseCase 3: 3: พิ�มพิ� พิ�มพิ� stdio.h stdio.h ผ�ดำผ�ดำ
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดLine 1:
stio.h: No such file or directory.
•กร้ต�ควมีไม&ม(ไฟล�ที่()ก#าหนดำ ให�ตรวิจสอบช-)อไฟล�ให�ถู4กต�อง
1.#inlude<stdio.h>
2.main(){
3.}
241-101 Introduction to Computer Programming
73
CaseCase 4 4: : พิ�มพิ�ช-)อฟ;งก�ช�น พิ�มพิ�ช-)อฟ;งก�ช�น main main ผ�ดำผ�ดำ
•ไมี0มี�ขึ้�อผ%ดพลดในกร้คอมีไพล*•ผ%ดพลดในขึ้ณ์ะล%งค*
[Linker error] undefined reference to `WinMain@16'
ld returned 1 exit status
ไม&สามารถูหา main ฟ;งก�ช�นไดำ�
1.#inlude<stdio.h>
2.man(){
3.}
241-101 Introduction to Computer Programming
74
CaseCase 5: 5: ล-ม ล-ม ;;
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดIn function main:
Line 4: syntax error before '}' token
•กร้ต�ควมี−ไปีย+งบร้ร้ท+ดท�� 4 และมีองหคส+�งในบร้ร้ท+ดก0อนหน�ว0ตกหล0น ; หร้-อไมี0
1.#inlude<stdio.h>
2.main(){
3. int x
4.}
241-101 Introduction to Computer Programming
75
CaseCase 6: 6: ล-ม ล-ม ; ; อ(กคร��งอ(กคร��ง
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดIn function main:
Line 4: syntax error before "x"
•กร้ต�ควมี−ไปีย+งบร้ร้ท+ดท�� 4 และมีองหคส+�งในบร้ร้ท+ดก0อนหน�ว0ตกหล0น ; หร้-อไมี0
1.#inlude<stdio.h>
2.main(){
3. int x
4. x = 2;
5.}
241-101 Introduction to Computer Programming
76
CaseCase 7: 7: ล-ม ล-ม ; ; หลาย์ ๆ จ2ดำหลาย์ ๆ จ2ดำ
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดIn function main:
Line 4: syntax error before "x"
•คอมีไพเลอร้*บอกแค0อ+นเด�ยว ให�แก�ท�ละจ/ด
1.#inlude<stdio.h>
2.main(){
3. int x
4. x = 2
5.}
241-101 Introduction to Computer Programming
77
CaseCase 8: 8: ล-มประกาศต�วิแปรล-มประกาศต�วิแปร
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดIn function main:
Line 3: `x' undeclared (first use in this function)
•กร้ต�ควมีส+งเกตจกหมียเลขึ้บร้ร้ท+ดจกน+�น ด�ว0ต+วแปีร้ใด ท��อย�0ภยใน ‘… ‘ ท��ถู�กร้ะบ/ว0 ไมี0ได�ปีร้ะกศ (undeclared) ก0อนนมีใชิ�งน
1.#inlude<stdio.h>
2.main(){
3. x = 2;
4.}
241-101 Introduction to Computer Programming
78
CaseCase 9: 9: ล-มป<ดำวิงเล5บเวิลาใช� ล-มป<ดำวิงเล5บเวิลาใช� printf printf หร-อ หร-อ scanfscanf
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดIn function main:
Line 3: syntax error before ';' token
•กร้ต�ควมี มี�ขึ้�อผ%ดพลดเก%ดขึ้��นท��บร้ร้ท+ดท�� 3 และมี�ขึ้�อผ%ดพลดก0อน(syntax error befor)
จะส0วนขึ้องโปีร้แกร้มี(token) ;
1.#inlude<stdio.h>
2.main(){
3. printf("Hi\n";
4.}
241-101 Introduction to Computer Programming
79
CaseCase 10: 10: ล-มเป<ดำวิงเล5บเวิลาใช� ล-มเป<ดำวิงเล5บเวิลาใช� printf printf หร-อ หร-อ scanfscanf
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดIn function main:
Line 3: syntax error before string constant
•กร้ต�ควมี บร้ร้ท+ดท�� 3 มี�ร้�ปีแบบผ%ดพลดก0อนจะเร้%�มีชิ/ดขึ้�อควมี “…”
1.#inlude<stdio.h>
2.main(){
3. printf"Hi\n");
4.}
241-101 Introduction to Computer Programming
80
CaseCase 11: 11: ล-มป<ดำเคร-)องหมาย์ค#าพิ4ดำล-มป<ดำเคร-)องหมาย์ค#าพิ4ดำ
•ขึ้�อควมีแสดงขึ้�อผ%ดพลดIn function main:
Line 3: missing terminating " character
Line 4: syntax error before '}' token
•กร้ต�ควมีบรรที่�ดำที่() 3 ขั้าดำเคร-)องหมาย์ป<ดำขั้�อควิาม (”) ที่#าให�เก�ดำขั้�อผ�ดำพิลาดำอ-)น ๆ ตามมาให�ที่#าการแก�ขั้�อผ�ดำพิลาดำที่()อย์4&ตอนต�นส2ดำก&อน
1.#inlude<stdio.h>
2.main(){
3. printf("Hi\n);
4.}
241-101 Introduction to Computer Programming
81
CaseCase 12: 12: ล-มเป<ดำเคร-)องหมาย์ค#าพิ4ดำล-มเป<ดำเคร-)องหมาย์ค#าพิ4ดำ
•In function main:−Line 3: stray '\' in program −Line 3: `Hi' undeclared (first use in this function) −Line 3: syntax error before "n" −Line 3: missing terminating " character
•กร้ต�ควมีบรรที่�ดำที่() 3 เน-)องจากตกเคร-)องหมาย์ค#าพิ4ดำขั้องขั้�อควิาม ที่#าให�คอมไพิเลอร�ต(ควิาม ค#าต&าง ๆ ในขั้�อควิาม และแสดำงขั้�อผ�ดำพิลาดำมากมาย์ เพิราะค#าเหล&าน��นไม&ตรงหล�กการ
1.#inlude<stdio.h>
2.main(){
3. printf(Hi\n");
4.}
241-101 Introduction to Computer Programming
82
CaseCase 13: 13: ล-มเป<ดำวิงเล5บเคร-)องหมาย์ค#าพิ4ดำล-มเป<ดำวิงเล5บเคร-)องหมาย์ค#าพิ4ดำ
•In function main:−Line 3: stray '\' in program
−Line 3: `printfHi' undeclared (first use in this function)
−Line 3: syntax error before "n"
−Line 3: missing terminating " character
•ต�ควมีเชิ0นเด�ยวก+บกร้ล-มีเคร้-�องหมียคพ�ดแต0ย%�งผ%ดพลดมีกกว0เพร้ะทให�คส+�ง printf ผ%ดพลดไปีด�วย น+�นค-อเปี#นคส+�งท��ไมี0ร้��จ+ก
1.#inlude<stdio.h>
2.main(){
3. printfHi\n");
4.}
241-101 Introduction to Computer Programming
83
CaseCase 1144 : : เอาต�วิแปรไปใส&ค&าคงที่()เอาต�วิแปรไปใส&ค&าคงที่()
•In function main:−Line 4: invalid lvalue in assignment
•กร้ต�ควมี บรรที่�ดำที่() 4 การให�ค&าไม&ถู4กต�องเน-)องจาก ค&าที่างซ�าย์(lvalue-left value)ควิรเป/น
ต�วิแปร
1.#inlude<stdio.h>
2.main(){
3. int x;
4. 2 = x;
5.}
241-101 Introduction to Computer Programming
84
ขั้�อผ�ดำพิลาดำบางอย์&าง คอมไพิเลอร�เต-อนเราขั้�อผ�ดำพิลาดำบางอย์&าง คอมไพิเลอร�เต-อนเราไม&ไดำ�ไม&ไดำ�
1.int x;
2.scanf("%d"); //very dangerous!!
3.scanf("%d", x);//forgot &
4.printf("%d");
5.printf("Hi", x);
241-101 Introduction to Computer Programming
85
เอกสร้อ�งอ%งเอกสร้อ�งอ%ง• คณาจารย์�ผ4�สอนวิ�ชา Introduction to Computer
Programming, เอกสารประกอบการบรรย์าย์วิ�ชา 241-101 Introduction to Computer Programming, คณะวิ�ศวิกรรมศาสตร�, มหาวิ�ที่ย์าล�ย์สงขั้ลานคร�นที่ร�, 2551
• อ.ส2ธิน แซ&วิ&อง, เอกสารประกอบการบรรย์าย์อบรมภาษาซ(เบ-�องต�น, คณะวิ�ศวิกรรมศาสตร�, มหาวิ�ที่ย์าล�ย์สงขั้ลานคร�นที่ร�, 30 ม(นาคม 2552
• Y. D. Liang, Supplement II.C:Dev-C++ Tutorial for Introduction to C++ Programming, http://www.bloodshed.net/dev/devcpp.html
• ดำร. แสงส2ร(ย์� วิส2พิงศ�อ�ย์ย์ะ, เอกสารประกอบการบรรย์าย์อบรมภาษาซ(เบ-�องต�น, คณะวิ�ศวิกรรมศาสตร�, มหาวิ�ที่ย์าล�ย์สงขั้ลานคร�นที่ร�, 30 ม(นาคม 2552 ปีร้+บปีร้/งโดย อ.อน+นท* ชิกส/ร้%วงค*
อ.สก/ณ์ เจร้%ญ่ปี)ญ่ญ่ศ+กด%Bอ.มี+ลล%ก อ/ณ์หว%วร้ร้ธิน*
241-101 Introduction to Computer Programming
86
สร2ปกฎส#าค�ญ่สร2ปกฎส#าค�ญ่• ซอร�สโค�ดำเก�ดำจากการผสมค#าและส�ญ่ล�กษณ� คอมไพิล�
และล�งค� เป/นโปรแกรมที่()บรรจ2ภาษาเคร-)อง• ค&าคงที่()ในโปรแกรมอย์4&ในร4ปขั้องต�วิเลขั้ ที่ศน�ย์ม ต�วิ
อ�กษร (ภาย์ใต�เคร-)องหมาย์ ' ') และ ขั้�อควิาม (ภาย์ใต�เคร-)องหมาย์ " ")
• ต�วิแปรต�องถู4กประกาศก&อนการใช�งาน โดำย์ระบ2ช-)อ และชน�ดำขั้องขั้�อม4ล
• การใช�ช-)อขั้องต�วิแปรหล�งการประกาศ เป/นการใช�ค&าขั้�อม4ลที่()ต�วิแปรจ#าไวิ�
• ฟ;งก�ช�นม(ส�ญ่ล�กษณ�ระบ2ขั้อบเขั้ต ค-อ { และ }• ค#าส�)งต�องจบดำ�วิย์เคร-)องหมาย์ ;
241-101 Introduction to Computer Programming
87
สร2ปกฎส#าค�ญ่สร2ปกฎส#าค�ญ่• การดำ#าเน�นการ ผลล�พิธิ�จะไดำ�น�พิจน�ตามชน�ดำขั้�อม4ล
ขั้องต�วิถู4กดำ#าเน�นการชน�ดำที่()ใหญ่&ที่()ส2ดำ• การใช�เคร-)องหมาย์ = ที่างซ�าย์ต�องเป/นต�วิแปร
เที่&าน��น ที่างขั้วิาเป/นน�พิจน�ที่()ม(ชน�ดำเที่(ย์บเที่&าหร-อขั้ย์าย์ให�เป/นชน�ดำเดำ(ย์วิก�บต�วิแปรไดำ� (ย์กเวิ�นการใช� casting)
• การเร(ย์กใช�ฟ;งก�ช�น พิาราม�เตอร�จะต�องเป/นน�พิจน�ชน�ดำเดำ(ย์วิก�บที่()ระบ2ไวิ�ในต�นแบบขั้องฟ;งก�ช�น
• การเร(ย์กใช�ฟ;งก�ช�นที่()ม(การค-นค&า ถู-อเป/นน�พิจน�ที่()ม(ชน�ดำเดำ(ย์วิก�บที่()ระบ2ไวิ�ในต�นแบบขั้องฟ;งก�ช�น และม(ค&าขั้�อม4ลเป/นค&าที่()ค-นกล�บมา
241-101 Introduction to Computer Programming
88
สร้/ปีกฎสค+ญ่สร้/ปีกฎสค+ญ่
• ต�วิแปร ถู-อเป/นน�พิจน� แต&น�พิจน�ไม&ใช&ต�วิแปร• การแสดำงผลต�องก#าหนดำร4ปแบบ และถู�าในร4ป
แบบน��นม(การก#าหนดำ Code Format พิาราม�เตอร�ที่()ตามหล�งร4ปแบบ ต�องเป/น น�พิจน� ชน�ดำเดำ(ย์วิก�นหร-อเที่(ย์บเที่&า
• การร�บค&า พิาราม�เตอร�จะต�องเป/น ต�วิแปร ที่()ม(ชน�ดำตามที่()ระบ2ไวิ�ใน Code Format และต�องม(การใส& & หน�าต�วิแปร (ย์กเวิ�นขั้�อควิามเพิ(ย์งกรณ(เดำ(ย์วิ)