235021 computer programming...
DESCRIPTION
235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์. สัปดาห์ที่ 2 การเขียนโปรแกรมภาษาซีเบื้องต้น. Credit: Narongchai.mo Mod: k.Mathiang. objectives. เข้าใจองค์ประกอบ และการทำงานของระบบคอมพิวเตอร์ - PowerPoint PPT PresentationTRANSCRIPT
235021Computer Programmingการเขี�ยนโปรแกรมคอมพิ�วเตอร�
สั�ปดาห์�ที่�� 2การเขี�ยนโปรแกรมภาษาซี�เบื้� องต"น
Credit: Narongchai.moMod: k.Mathiang
objectives
เขี"าใจองค�ประกอบื้ และการที่'างานขีองระบื้บื้คอมพิ�วเตอร�ร("จ�กและเขี"าใจขี� นตอนในการว�เคราะห์�ป)ญห์า และน'าป)ญห์ามาเขี�ยนในร(ปแบื้บื้ขีองแผนผ�งการไห์ลขีองขี"อม(ล (Flowchart Diagram) ได"ร("จ�กต�วแปรและชน�ดขีองต�วแปรร("ห์ล�กการในการต� งช��อต�วแปรพิร"อมที่� งการประกาศต�วแปรเขี"าใจห์ล�กการในการแปลงภาษาซี�เป/นโปรแกรมเขี"าใจการเขี"าถึ1งต�วแปรห์ร�อช2วงช�ว�ตขีองต�วแปรที่��ประกาศ
Outline
Introduction to C Programming1
pp2
Variables and Type of variablesVariables and Type of variables3
Naming and Variable DeclarationNaming and Variable Declaration4
The Environment of C Programming5
Flowchart Diagram
What is computer?
อ3ปกรณ์�อ�เล5กที่รอน�กสั�อย2างห์น1�ง ที่��มน3ษย�ประด�ษฐ์�ขี1 น เพิ��อน'ามาเสัร�มความสัามารถึขีองมน3ษย�ในด"านการร�บื้ร(" การจ'า การค'านวณ์ การเปร�ยบื้เที่�ยบื้ต�ดสั�นใจ ในการที่��จะสั��งให์"เคร��องคอมพิ�วเตอร�ที่'างาน จ'าเป/นต"องป7อนค'าสั��ง และจะต"องเป/นค'าสั��งที่��เคร��องคอมพิ�วเตอร�เขี"าใจ ได"แก2ภาษาเคร��องห์ร�อที่��เร�ยกเป/นภาษาอ�งกฤษว2า “Machine Language” ซี1�งประกอบื้ด"วยต�วเลขี 0 ก�บื้ 1 เที่2าน� น
Computer Architecture
MemoryCPU
ROM
RAM
I/O
InputDevices
OutputDevice Instruction/DataI/O Address
Memory AddressData/Action Arithmetic
Logic
ExecuteInstruction
Computer System
ระบื้บื้คอมพิ�วเตอร�ประกอบื้ด"วย 4 สั2วนประกอบื้1)Hardware ค�อสั2วนประกอบื้ต2างๆ ขีอง
คอมพิ�วเตอร�ที่��สัามารถึมองเห์5นและจ�บื้ต"องได"
2)Software ค�อสั2วนที่��ม�ห์น"าที่��เช��อมประสัานให์"ผ("ใช"งานก�บื้คอมพิ�วเตอร�ให์"สัามารถึที่'างานร2วมก�นได"
3)Peopleware ค�อบื้3คคลที่��เขี"ามาม�สั2วนเก��ยวขี"องก�บื้การที่'างานโดยใช"คอมพิ�วเตอร�
4)Data and Information ค�อขี"อม(ลที่��ต"องป7อนเขี"าสั(2ระบื้บื้คอมพิ�วเตอร� เพิ��อใช"ในการประมวลผล และรวมไปถึ1งขี"อม(ลห์ล�งจากการประมวลผลที่��ต"องจ�ดเก5บื้
Hardware
สั2วนประกอบื้ต2างๆ ขีองคอมพิ�วเตอร�แบื้2งได"เป/น 3 ประเภที่ ค�อ ห์น2วยประมวลผลกลาง(Central processing unit) ห์น2วยความจ'า (Memory) อ3ปกรณ์�ร�บื้ขี"อม(ลเขี"า(Input device) อ3ปกรณ์�แสัดงผลขี"อม(ล(Output device) อ3ปกรณ์�ร�บื้ขี"อม(ลเขี"าและแสัดงผล (Input/Output device)
Central Processing Unit : CPU
ห์น2วยประมวลผลกลาง (Central Processing Unit) เช2น 80486 Celeron, Pentium, Athon, Duron เป/นต"น
Memory
ห์น2วยความจ'า (Memory) เช2น SDRAM 128 MB, ROM BIOS, ฮาร�ดด�สัก�, ซี�ด�รอม
RAMROM
BIOSHDD
Input devices
อ3ปกรณ์�ที่��ม�ความสัามารถึในการเป/นห์น2วยร�บื้ขี"อม(ลเขี"า เช2น keyboard, mouse, microphone, scanner เป/นต"น
keyboard
scanner mouse
Output devices
อ3ปกรณ์�ที่��ม�ความสัามารถึในการเป/นห์น2วยแสัดงผลขี"อม(ล เช2น monitor, printer, speaker เป/นต"น
speaker printer monitor
Input/Output devices
อ3ปกรณ์�ที่��ม�ความสัามารถึในการเป/นที่� งห์น2วยร�บื้ขี"อม(ลและห์น2วยแสัดงผลขี"อม(ล เช2น Touch screen เป/นต"น
Touch
screen
Software (1)
ซีอฟที่�แวร�เป/นช3ดค'าสั��งที่��ควบื้ค3มการที่'างานขีองคอมพิ�วเตอร� โดยช3ดค'าสั��งเห์ล2าน� เร�ยกได"อ�กอย2างว2าโปรแกรมคอมพิ�วเตอร� โดยที่��วไปแบื้2งออกเป/น 2 ประเภที่ ซีอฟที่�แวร�ระบื้บื้ (System software) เช2น ซีอฟต�แวร�ระบื้บื้ปฎิ�บื้�ต�การ (Operating system: OS)
ซีอฟที่�แวร�ประย3กต� (Application Software) เช2น Browser, Games, Multimedia program, Tools เป/นต"น
Software (2)
ซีอฟที่�แวร�
ซีอฟที่�แวร�ระบื้บื้
ซีอฟที่�แวร�ประย3กต�
DosWindow
Unix
Linux
ซีอฟต�แวร�สั'าเร5จ
ซีอฟต�แวร�ใช"เฉพิาะงาน
Example of Operating Systems (1)
(Disk Operating System) ป> 1981-1995 เป/นระบื้บื้ปฏิ�บื้�ต�
การในย3ค80 ใช"การสั��งงานผ2านค'าสั��ง command line เช2น ต"อง
การตรวจจ'านวนไฟล�ในแผ2นด�สัก� ใช"ค'าสั��ง dir
Example of Operating Systems (2)
OS2 (Operating System /2) ใช"ในป>1987-2001 เป/นระบื้บื้ปฏิ�บื้�ต�การที่��พิ�ฒนาโดย Microsoft และ IBM ในช2วงแรก และต2อมา IBM เป/นผ("พิ�ฒนาต2อ ภาษาที่��ใช"ในการสัร"างค�อ C/C++
Example of Operating Systems (3)
ย(น�กซี� (Unix) เป/นระบื้บื้ปฏิ�บื้�ต�การคอมพิ�วเตอร�แบื้บื้ห์ลายงาน ห์ลายผ("ใช" ที่��เร��มพิ�ฒนาโดยกล32มพิน�กงานขีองห์"องปฏิ�บื้�ต�การ AT&T Bell Labs โดยกล32มน�กพิ�ฒนาที่��เป/นที่��ร("จ�ก ค�อ Ken Thompson, Dennis Ritchie และ Douglas McIlroy
Example of Operating Systems (4)
ล�น3กซี� (Linux) และร("จ�กในช��อ กน(/ล�น3กซี� (GNU/Linux) โดยที่��วไปเป/นค'าที่��ใช"ในความห์มายที่��ห์มายถึ1งระบื้บื้ปฏิ�บื้�ต�การแบื้บื้ย(น�กซี� โดยใช"ล�น3กซี� เคอร�เนล เป/นศ(นย�กลางที่'างานร2วมก�บื้ไลบื้ราร�และเคร��องม�ออ��น ล�น3กซี�เป/นต�วอย2างห์น1�งในฐ์านะซีอฟต�แวร�เสัร� และซีอฟต�แวร�โอเพินซีอร�สัที่��ประสับื้ความสั'าเร5จและม�ช��อเสั�ยง
Example of Operating Systems (5)
ไมโครซีอฟที่� ว�นโดวสั� (Microsoft Windows) เป/นระบื้บื้ปฏิ�บื้�ต�การ ซี1�งพิ�ฒนาโดยบื้ร�ษ�ที่ไมโครซีอฟที่� เปAดต�วเม��อป> พิ.ศ. 2528 (ค.ศ. 1985 โดยร32นแรกขีองว�นโดวสั� ค�อ ว�นโดวสั� 1.0) และครองความน�ยมในตลาดคอมพิ�วเตอร�สั2วนบื้3คคล มากกว2า 90%
Software (3)
Word
Excel
PPTNetwork
Connection
ค'านวณ์เกรด
ซีอฟต�แวร�ใช"เฉพิาะงาน
ซีอฟที่�แวร�ประย3กต�
ซีอฟต�แวร�สั'าเร5จ
ย�มห์น�งสั�อค�ดดอกเบื้� ย
ฟ)งเพิลง
How the computer work? (1)
คอมพิ�วเตอร�จะที่'างานต2างๆ ด"วยซีอฟที่�แวร�ห์ร�อโปรแกรมต2างๆ โดยจะใช"ช3ดค'าสั��งภาษาเคร��องในการที่'างาน แต2ภาษาเคร��องเป/นภาษาที่��มน3ษย�ยากที่��จะจ'าและเขี"าใจการที่'างาน ด�งน� นจ1งม�การค�ดภาษาต2างๆ ที่��ใกล"เค�ยงก�บื้ภาษาขีองมน3ษย�ขี1 นมาเพิ��อให์"มน3ษย�ใช"งานในการเขี�ยนสัร"างโปรแกรมอ��นๆภาษาที่างคอมพิ�วเตอร� ภาษาเครื่��องปรื่ะกอบด้�วยเลข 0 ก�บ 1 สามารื่ถส��งให้�
คอมพิ�วเตอรื่�ทำ!างานได้�ทำ�นทำ$ ข�อเส$ยค�อเข$ยนยาก ภาษา Assembly เป%นก&�งภาษาเครื่��องเข$ยนเป%นค!าส��ง
Neumonic สามารื่ถแปลงเป%นภาษาเครื่��องได้�ง(าย โด้ยการื่เทำ$ยบตารื่าง ห้รื่�อใช้� Assembler
ภาษาข�+นส,ง เป%นภาษาทำ$�ใกล�เค$ยงก�บภาษาของม-นษย� (ปรื่ะโยคข�อความส(วนให้ญ่(เป%นภาษาอ�งกฤษ) เช้(น ภาษา C, PASCAL, FORTRAN -> Compiler
How the computer work? (2)
ระบื้บื้ปฎิ�บื้�ต�การ (Operating System: OS)
App.
App.
App.
• Application ไม2ต"องย32งการต�ดต2อก�บื้ฮาร�ดแวร�ต2างผ("ผล�ต• Application สัร"างโดยย1ดก�บื้ Operating System
• ม�การที่'างานพิ� นฐ์านเตร�ยมไว"แล"ว
Hardware
OS
Programming Language and Development (1)
วงจรช�ว�ตซีอฟต�แวร�(Software life cycle)
Code design Code implementation
Programming Language and Development (2)
How the Program Run? คอมพิ�วเตอร�จะที่'างานก�บื้ Machine
Language
Program Code / Source Code
Translation
Machine Code
Programming Language and Development (3)
ต�วแปรภาษา (Program Translator) Interpreter
–ที่'าการแปลที่�ละค'าสั��ง–แปลเสัร5จ load แล"ว execute ได"ผลแล"ว
จ1งแปลต2อ–เช2น java, perl, python, shell script, vb script
Compiler–แปลที่� งห์มดแล"วค2อยที่'างาน–น'าไปประกอบื้ร2วมก�บื้ code สั2วนอ��นๆ ได"–เช2น c, c++, pascal
Programming Language and Development (4)
Hardware
OS
Source Code------------------------------------------------------------------------------
Interpreter
• ต"องม� Interpreter ที่'างานตลอดเวลาเพิ��อแปลค'าสั��ง• Source Code สัามารถึที่'างานได"เลย (ที่�ละค'าสั��ง)
• สัะดวกในการแก"ไขี
Interpreter
Programming Language and Development (5)
Compiler• ม�การแปล Source Code ที่� งห์มดก2อนได" Object File
• น'ามาประกอบื้ก�บื้ Code บื้างสั2วนที่��เตร�ยมไว"แล"ว (Library)
• ได"ผลล�พิธ์�เป/น machine language (Executable File)Hardware
OS
Source Code----------------------------------------
Compiler
LinkerLibrary --------------------------------
Object File----
Executable File ---
28
Language Types
High-Level Programming Language Procedural Language
–Fortran, Cobol, Basic, Pascal, C
Object-Oriented Language–C++, Delphi, Visual BASIC, C#, Java
Functional Language–Lisp
Logic Language–Prolog
Example of Language (1)
ภาษาฟอร�แที่รน (Fortran: Formula Translation)
ภาษาฟอร�แที่รน
Advantage-Disadvantage
ภาษาฟอร�แที่รน (Fortran: Formula Translation) เห์มาะก�บื้งานด"านว�ที่ยาศาสัตร�
ว�ศวกรรมศาสัตร� และคณ์�ตศาสัตร� ล�กษณ์ะขีองภาษาคล"ายสั(ตรห์ร�อสัมการ
คณ์�ตศาสัตร� ไม2เห์มาะก�บื้งานพิ�มพิ�ห์ร�องานที่��ต"องการเก5บื้
ขี"อม(ล ป)จจ3บื้�นไม2น�ยม
Example of Language (2)
ภาษาปาสัคาล (PASCAL)
ภาษาปาสัคาล
Advantage-Disadvantage
ภาษาปาสัคาล (PASCAL) ม�โครงสัร"างภาษาด�เย��ยม ที่'าให์"การที่'างาน
ขีองโปรแกรมม�ประสั�ที่ธ์�ภาพิ สัามารถึบื้อกขี"อผ�ดพิลาดขีองการเขี�ยน
โปรแกรมเพิ��อให์"แก"ไขีโปรแกรมได"ง2าย ค2อนขี"างจ3กจ�ก ม�เคร��องห์มายมากมาย ที่'าให์"
ลดความคล2องต�วในการใช"งาน
Example of Language (3)
ภาษาเบื้สั�ก (Basic: Beginner’s All-purpose Symbolic Instruction Code)
Advantage-Disadvantage
ภาษาเบื้สั�ก (Basic: Beginner’s All-purpose Symbolic Instruction Code) ค'าสั��งม�น"อย แต2ใช"งานได"อย2างม�ประสั�ที่ธ์�ภาพิ เป/นภาษาเก2าแก2 เขี"าใจง2าย และถึ(กออกแบื้บื้มาให์"
ใช"ก�บื้งานในล�กษณ์ะโต"ตอบื้ (Interactive) ใช"อ�นเที่อร�พิร�ที่เตอร� เห์มาะก�บื้ผ("เร��มห์�ดเขี�ยนโปรแกรม การเขี�ยนค'าสั��งสั'าห์ร�บื้การที่'างานค2อนขี"างยาว
ที่'าให์"การที่'างานโปรแกรมช"า
Example of Language (4)
#include<file.h>type function_name(type);type variableint main(){ type variable; statement-1; ... statement-n; return 0;}type function_name(type variable){ statement-1; ... statement-n; return(var);}
พิรื่$โปรื่เซสเซอรื่�ได้เรื่1คทำ$ฟ
ต�วแปรื่ช้น�ด้โกบอล
ฟ3งก�ช้�นห้ล�ก
ฟ3งก�ช้�นย(อย
สั2วนต�วโปรแกรม
สั2วนห์�วโปรแกรม
ต�วแปรื่ช้น�ด้โลคอล
ค!าส��ง
ฟ3งก�ช้�นโพิรื่โทำรื่ไทำพิ�
Advantage-Disadvantage
ภาษาซี� (C language) เป/นภาษาที่��ม�โครงสัร"างและม�ร(ปแบื้บื้ค'าสั��ง
ค2อนขี"างอ�สัระ ไม2ขี1 นก�บื้ระบื้บื้ปฎิ�บื้�ต�การ ไม(ข&+นอย,(ก�บช้น�ด้ของเครื่��องคอมพิ�วเตอรื่� ม�ค'าสั��งและฟ)งก�ช�นมาก ค'าสั��งจะสั� น ที่'าให์"การที่'างานเร5ว สัามารถึใช"งานได"ห์ลายประเภที่ รวมถึ1งการ
ควบื้ค3มฮาร�ดแวร�ได" ม�ขี"อยกเว"น ที่'าให์"เป/นผลเสั�ยต2อโครงสัร"าง
โปรแกรม
Evolution of Language
ภาษา BCPLมาร�ต�น ร�ชาร�ด (Martin Richards)
Basic Combined Programming Language
ภาษา Bเคน ที่อมพิ�สั�น (Ken Thompson) 1970
ภาษาซี� เด้นน�ส รื่�ทำช้$� (Dennis Ritchie)
1972 ที่�� Bell Labs เผยแพิรื่( 1978เคอร�น�กเฮน (Kernighan)
เดนน�สั ร�ที่ช�� (Dennis Ritchie)
Number System (1)
ระบื้บื้ต�วเลขีที่��มน3ษย�ที่3กคนค3"นเคย ที่��เห์5นได"ช�ดเจนที่��สั3ดค�อการน�บื้จ'านวนสั��งขีองต2างๆ ซี1�งพิบื้ว2าระบื้บื้จ'านวนสั2วนให์ญ2ที่��ใช"ก�นจะม�เลขี 0 – 9 แต2ย�งม�ระบื้บื้จ'านวนชน�ดอ��นอ�ก เช2น เลขีโรม�น ระบื้บื้คอมพิ�วเตอร�จะใช"เลขีเพิ�ยง 2 ต�ว ค�อ 0 และ 1 ซี1�งไม2เห์ม�อนก�บื้ที่��มน3ษย�ใช"ก�นปกต�เราเร�ยกระบื้บื้จ'านวนที่��ม�จ'านวนต�วเลขีที่��ใช"งานต2างก�นว2าระบื้บื้เลขีฐ์าน เช2น ระบื้บื้ต�วเลขีฐ์านสั�บื้ ระบื้บื้ต�วเลขีฐ์านสัอง เป/นต"น
Number System (2)
ฐ์านสั�บื้ประกอบื้ด"วย ต�วเลขี 0-9(525)10 = 5102 + 2101 + 5x100
ฐ์านสัองประกอบื้ด"วย ต�วเลขี 0 ก�บื้ 1(101)2 = 122 + 021 + 120
ฐ์านสั�บื้ห์กประกอบื้ด"วยต�วเลขี 0-9 และ A-F(3B2)16 = 3162 + 11161 +
2160
Number System (3)
ระบื้บื้เลขีฐ์านสั�บื้MSB
LSB10n 10n-1 …….. 102
101 100
ระบื้บื้เลขีฐ์านสัองMSB
LSB2n 2n-1 …….. 22 21 20
Number System (4)
ต�วอย2าง จงแปลง 10001112 ไปเป/นเลขีฐ์านสั�บื้
1 0 0 0 1 1 1 × × × × × × ×26 25 24 23 22 21 20
64 32 16 8 4 2 1
(1×64)+(0×32)+(0×16)+(0×8) + (1×4) + (1×2) + (1 ×1)
= 64+0+0+0+4+2+1= 71
Number System (5)
จงแปลง 45 ฐ์านสั�บื้ ให์"เป/นฐ์านสัอง
4510 = 1011012
45
11 เศษ 05 เศษ 12 เศษ 11 เศษ 0
2
222
MSB
LSB
22 เศษ 12
Number System (6)
จงแปลง 946 ฐ์านสั�บื้ ให์"เป/นฐ์านสั�บื้ห์ก946
59 เศษ 23 เศษ 11 = B
0 เศษ 3
161616
94610 = 03B216
The Conversion of Hexadecimal to Binary
ฐ์านสั�บื้ห์ก ฐ์านสัอง0 00001 00012 00103 00114 01005 01016 01107 0111
ฐ์านสั�บื้ห์ก ฐ์านสัอง8 10009 1001A 1010B 1011C 1100D 1101E 1110F 1111
Problem Analysis (1)
ขี� นตอนขีองการว�เคราะห์�ป)ญห์าสั'าห์ร�บื้เตร�ยมการก2อนลงม�อเขี�ยนโปรแกรมคอมพิ�วเตอร� ม� 5 ขี� นตอนด�งน�
1 . การที่'าความเขี"าใจก�บื้ป)ญห์า (State the problem clearly)
2. การพิ�จารณ์าล�กษณ์ะขีองขี"อม(ลเขี"าและขี"อม(ลออก(Describe the input and output)
3. การที่ดลองแก"ไขีป)ญห์าด"วยตนเอง (Work the problem by hand for a specific set of data)
45
4. การเขี�ยนขี� นตอนว�ธ์�การแก"ป)ญห์า (Develop an algorithm that is general in nature)
เขี�ยนล'าด�บื้ขี� นตอนว�ธ์�การที่'างานที่� งห์มดอย2างย2อ
เขี�ยนล'าด�บื้ขี� นตอนว�ธ์�การที่'างานอย2างละเอ�ยด
ว�ธ์�การเขี�ยนล'าด�บื้ขี� นตอนว�ธ์�• Pseudo code เขี�ยนขี� นตอนว�ธ์�ด"วย
ภาษาที่��ใกล"เค�ยงภาษาคอมพิ�วเตอร�• Flowcharts เขี�ยนขี� นตอนว�ธ์�ด"วย
ร(ปภาพิผ�งงาน5 . การที่ดสัอบื้ขี� นตอนว�ธ์�การแก"ป)ญห์า (Test
the algorithm with a variety of data sets)
46
Problem Analysis (2)
Problem Analysis Example (1)
กรณ์�ศ1กษาที่�� 1: ขี� นตอนว�ธ์�การแก"ป)ญห์าด"วยคอมพิ�วเตอร� จงเขี�ยนขี� นตอนว�ธ์�การแก"ป)ญห์าสั'าห์ร�บื้การ
ห์าปร�มาตรที่รงกระบื้อกโดยร�บื้ขี"อม(ลขีองความสั(ง และร�ศม�ขีองวงกลมที่��เป/นฐ์านขีองที่รงกระบื้อก จากน� นแสัดงค2าขีองปร�มาตรที่รงกระบื้อกที่��ค'านวณ์ได"
r
h
ปร�มาตรที่รงกระบื้อก = ¶ x r2 x h
Problem Analysis Example (2)
ขี� นตอนที่�� 1 ที่'าความเขี"าใจก�บื้ป)ญห์า การค'านวณ์ห์าปร�มาตรขีองร(ปที่รงกระบื้อก
ขี� นตอนที่�� 2 ล�กษณ์ะขีองขี"อม(ลเขี"าและขี"อม(ลออก ขี"อม(ลเขี"า ค�อ ความสั(งขีองที่รงกระบื้อก และ
ร�ศม�ขีองวงกลมที่��เป/นฐ์านขีองที่รงกระบื้อก ชน�ดขีองขี"อม(ลเขี"าความสั(ง และร�ศม�ขีองวงกลมที่��เป/นฐ์านขีองที่รงกระบื้อกเป/นขี"อม(ลชน�ดต�วเลขี
ขี"อม(ลออก ค�อ ค2าขีองปร�มาตรที่รงกระบื้อก ชน�ดขีองขี"อม(ลเป/นขี"อม(ลต�วเลขีเป/นต�วเลขีจ'านวนเต5มห์ร�อต�วเลขีที่ศน�ยมขี1 นอย(2ก�บื้ว�ธ์�การห์าค'าตอบื้
Problem Analysis Example (3)
ขี� นตอนที่�� 3 ที่ดลองแก"ไขีป)ญห์าด"วยตนเอง การค'านวณ์ห์าปร�มาตรที่รงกระบื้อก ห์าได"
จากสั(ตรปร�มาตรที่รงกระบื้อก = ¶ x ร�ศม�ยกก'าล�ง 2 x ความสั(งถึ"า ร�ศม�ขีองฐ์าน = 5 เมตร
และความสั(ง = 12 เมตรปร�มาตรที่รงกระบื้อก = 3.14159 x
52 (m2 ) x 12 (m) = 942.48 m3
Problem Analysis Example (4)
ขี� นตอนที่�� 4 การพิ�ฒนาล'าด�บื้ขี� นตอนว�ธ์�การแก"ป)ญห์า เขี�ยนอธ์�บื้ายขี� นตอนว�ธ์�การที่'างานที่� งห์มด
อย2างย2อ1. เร��มต"น2. ร�บื้ค2าความสั(ง และร�ศม�ขีองฐ์านที่รงกระบื้อก3. ค'านวณ์ค2าปร�มาตรที่รงกระบื้อก ¶ * ร�ศม�ขีองฐ์าน2 *
ความสั(ง4. แสัดงค2าขีองปร�มาตรที่รงกระบื้อก5. จบื้การที่'างาน
เขี�ยนอธ์�บื้ายขี� นตอนว�ธ์�การที่'างานอย2างละเอ�ยด
การค'านวณ์ห์าปร�มาตรขีองที่รงกระบื้อก การแก"ป)ญห์าไม2ได"ซี�บื้ซี"อนมาก สัามารถึอธ์�บื้ายแบื้บื้อย2างย2อและได"ครบื้ที่3กขี� นตอน
Problem Analysis Example (5)
ขี� นตอนที่�� 4 การพิ�ฒนาล'าด�บื้ขี� นตอนว�ธ์�การแก"ป)ญห์า รห์�สัเที่�ยม (Pseudo Code)
1. Begin2. Read High, Radius (เคร��องคอมพิ�วเตอร�จะรอร�บื้
ขี"อม(ล 2 ค2า ค�อ ความสั(งและร�ศม�ขีองฐ์าน)3. Volume = 3.14159 * Radius2 * High
(ค'านวณ์ห์าค2าปร�มาตรตามสั(ตรและเก5บื้ผลล�พิธ์�ไว")4. Write Volume (แสัดงผลล�พิธ์�ขีองปร�มาตรที่รง
กระบื้อกที่��ได")5. End
Problem Analysis Example (6)
ขี� นตอนที่�� 4 การพิ�ฒนาล'าด�บื้ขี� นตอนว�ธ์�การแก"ป)ญห์า
ผ�งงาน (Flowchart)StartInput High,
RadiusVolume <- 3.14159 *
Radius2 * High
Output Volume
End
Outline
Introduction to C Programming1
pp2
Variables and Type of variablesVariables and Type of variables3
Naming and Variable DeclarationNaming and Variable Declaration4
The Environment of C Programming5
Flowchart Diagram
Flowchart
ผ�งงาน ค�อ การเขี�ยนอธ์�บื้ายขี� นตอนว�ธ์�การที่'างานในล�กษณ์ะขีองร(ปภาพิประโยชน�ขีองผ�งงานใช"สั'าห์ร�บื้ช2วยในการพิ�ฒนาล'าด�บื้ขี� นตอนว�ธ์�การแก"ป)ญห์า เน��องจากผ�งงานเป/นการอธ์�บื้ายขี� นตอนว�ธ์�การที่'างานในล�กษณ์ะขีองร(ปภาพิ ที่'าให์"สัามารถึเห์5นล'าด�บื้ขีองขี� นตอนว�ธ์�การที่'างานได"ช�ดเจนกว2าการอธ์�บื้ายขี� นตอนว�ธ์� การที่'างานในล�กษณ์ะขีองขี"อความ
Flowchart Symbols (1)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การเร��มต"นห์ร�อสั� นสั3ดการเขี�ยนผ�งงาน(Terminal)
1 .เร��มต"นผ�งงาน
2. จบื้ผ�งงาน
ร�บื้ขี"อม(ลห์ร�อแสัดงขี"อม(ลโดยไม2ระบื้3สั��อ(Input/output)
1 .ร�บื้ค2าใสั2ในต�วแปรช��อ name
2 .แสัดงค2าจากต�วแปร area
START
STOP
display area
read name
Flowchart Symbols (2)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การประมวลผล(Process)
1 .ค'านวณ์ A
+ B และเก5บื้ไว"ใน C
2 .ก'าห์นดค2า sum เที่2าก�บื้ 0
การเปร�ยบื้เที่�ยบื้ห์ร�อต�วสั�นใจ(Compare / Decision)
เปร�ยบื้เที่�ยบื้ถึ"า i ม�ค2า
น"อยกว2าห์ร�อเที่2าก�บื้ 10
- เป/นจร�ง พิ�มพิ�ค2า i เสัร5จแล"วไปที่'าค'าสั��งอ��น ๆ
- เป/นเที่5จ ไปที่'าค'าสั��งอ��น ๆ
C = A + B
Sum = 0
i <= 10
true
false
แสด้ง i
Flowchart Symbols (3)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การแสัดงผลล�พิธ์�ที่างเคร��องพิ�มพิ�(Document)
พิ�มพิ�ค2า A
ที่างเคร��องพิ�มพิ�
การแสัดงผลล�พิธ์�ที่างจอภาพิ(Display)
แสัดงค2า A, B
บื้นจอภาพิ
print A
display A , B
Flowchart Symbols (4)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
ห์มายเห์ต3(Comment)
ร�บื้ค2าที่างการกดแป7นพิ�มพิ�(Manual Input)
ร�บื้ค2า A ที่างแป7นพิ�มพิ�
read A A = Age
read A
Flowchart Symbols (5)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การก'าห์นดค2าต2างๆ ไว"ล2วงห์น"า(Preparation)
ก'าห์นดให์" i ม�ค2าเที่2าก�บื้
1 และเพิ��มค2าที่�ละ 1
จนม�ค2าเป/น 100
จ1งออกจากการที่'างานซี' า โดยแต2ละรอบื้
บื้วกค2า sum ด"วยค2า i
แสัดงที่�ศที่างและล'าด�บื้ขีองการที่'างาน(Flow line)
for i =1 to 100
sum = sum + i
i
Flowchart Symbols (6)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
จ3ดต2อเน��องในห์น"าเด�ยวก�น(In-Page connector)
ห์ล�งจากพิ�มพิ�ค2า A
แล"วให์"ที่'าตามที่��จ3ด
ต2อเน��อง A ซี1�งอย(2ใน
ห์น"าเด�ยวก�น
จ3ดต2อเน��องที่��อย(2คนละห์น"า(Off-Page Connector)
ห์ล�งจากก'าห์นดค2า A
เที่2าก�บื้ 3 ให์"ที่'าตาม
จ3ดต2อเน��องช��อ 1 ซี1�ง
ไม2ได"อย(2ในห์น"าเด�ยวก�น
A
write A
A = 3
1
Flowchart Symbols (7)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"บื้�ตรเจาะร((Punch card)
1 .อ2านค2า A
ที่��บื้�ตรเจาะร( 1 ใบื้
2 .เจาะค2า B,C บื้นบื้�ตร 1 ใบื้
ช3ดขีองบื้�ตรเจาะร((Card Desk)
เจาะค2า B1 , B2 , Bn
บื้นบื้�ตร n ใบื้
read A
punch B , C
punch bi b=1 ,…n
Flowchart Symbols (8)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"เที่ปกระดาษ(Punched tape)
อ2านค2า ID , name
บื้นเที่ปกระดาษ
การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"เที่ปแม2เห์ล5กเป/นสั��อ(Magnatic tape)
read ID , name
Flowchart Symbols (9)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"จานแม2เห์ล5กเป/นสั��อ(Magnatic disk)
การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"ดร�มแม2เห์ล5กเป/นสั��อ(Magnatic drum)
Flowchart Symbols (10)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การที่'างานที่��ก'าห์นดไว"แล"ว เช2น โปรแกรมย2อย(Predefine Process)
เร�ยกโปรแกรม
ย2อยช��อ findGrade
ให์"ที่'างานการควบื้ค3มการที่'างานด"วยมน3ษย� บื้างคร� งเร�ยกการที่'างานแบื้บื้ออฟไลน� (Offline Processing)
findGrade
Flowchart Symbols (11)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การที่'างานแบื้บื้ออฟไลน�ขีองอ3ปกรณ์�ที่��ไม2ได"ถึ(กควบื้ค3มจากห์น2วยประมวลผลกลางโดยตรง(Auxiliary Operation)
การจ�ดเร�ยงล'าด�บื้ขี"อม(ล(Sorting)
Flowchart Symbols (12)
สั�ญล�กษณ์�
ความห์มาย ต�วอย2างการใช"
ค'าอธ์�บื้าย
การสั2งขี"อม(ลที่างสัายสั��อสัาร(Communication Link)
Flowchart Handle(1)
ที่�ศที่างขีองผ�งงานจะเร��มจากสั2วนบื้นขีองห์น"ากระดาษลงมาย�งสั2วนล2าง และจากซี"ายม�อไปขีองห์น"ากระดาษ และควรเขี�ยนเคร��องห์มายล(กศรก'าก�บื้ที่�ศที่างไว"ด"วย
67
START
STOP
read age
age > 60
“You are old”
true
false
บื้น
ล2าง
ที่�ศที่างขีองเสั"น
Flowchart Handle(2)
สั�ญล�กษณ์�ห์ร�อภาพิที่��ใช"ในการเขี�ยนผ�งงานม�ขีนาดต2างๆ ก�นได" แต2จะต"องม�ร(ปมาตรฐ์านตามความห์มายที่��ก'าห์นด
68
START
sum = 0
i = 1 to 10
sum = sum + i
i
sum
STOP
ขนาด้ของส�ญ่ล�กษณ์�ปรื่�บให้�เห้มาะสมก�บข�อความในส�ญ่ล�กษณ์�
Flowchart Handle(3)
การเขี�ยนที่�ศที่างขีองผ�งงานควรเป/นไปอย2างม�ระเบื้�ยบื้ และห์ล�กเล��ยงการขี�ดโยงไปโยงมาในที่�ศที่างต�ดก�น ถึ"าจ'าเป/นต"องโยงถึ1งก�น ควรใช"เคร��องห์มายจ3ดต2อเน��องแที่นและถึ"าเป/นไปได"ควรเขี�ยนผ�งงานให์"จบื้ในห์น"าเด�ยวก�นค'าอธ์�บื้ายในภาพิ เขี�ยนเพิ�ยงสั� น ๆ และเขี"าใจง2ายผ�งงานที่��ด�ควรจะม�ความเป/นระเบื้�ยบื้เร�ยบื้ร"อยและสัะอาด นอกจากน� แล"ว จะม�ช��อขีองผ�งงาน ผ("เขี�ยน ว�นที่��เขี�ยน และเลขีห์น"าล'าด�บื้
69
Outline
Introduction to C Programming1
pp2
Variables and Type of variablesVariables and Type of variables3
Naming and Variable DeclarationNaming and Variable Declaration4
The Environment of C Programming5
Flowchart Diagram
The Number Size of Computer
บื้�ที่ (bit) ค�อ ต�วเลขีฐ์านสัองเพิ�ยงต�วเด�ยวไบื้ที่� (Byte) ค�อ ต�วเลขีขีนาด 8 บื้�ที่เว�ร�ด (Word) ค�อ ต�วเลขีขีนาด 16 บื้�ที่ ห์ร�อ 2 ไบื้ที่�ก�โลไบื้ที่� (KB) ค�อ ต�วเลขีขีนาด 210 = 1024 ไบื้ที่�เมกะไบื้ที่� (MB) ค�อ ต�วเลขีขีนาด 210 210 ไบื้ที่�ก�กกะไบื้ที่� (GB) ค�อ ต�วเลขีขีนาด 210 210 210 ไบื้ที่�
bit : binary digit
The Memory Size of Computer
ห์น2วยความจ'า 128 MB ห์มายความว2าสัามารถึเก5บื้ขี"อม(ลได" 128 210 210 = 134217728 ต'าแห์น2ง
????
????
????
????
????
????ต'าแห์น2งที่�� 0
ต'าแห์น2งที่�� 134217727
The Number in Computer System (1)
จ'านวนเต5ม ที่��ม�เฉพิาะค2าบื้วก ขีนาด 8 bit เร�ยกว2า 1 Byte ม�ค2าเร��มจาก 0
ถึ1ง 255
ขีนาด 16 bit เร�ยกว2า 1 Word (2 Byte) ม�ค2าเร��มจาก 0 ถึ1ง 65535
0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
มาจาก 28 = 256
The Number in Computer System (2)
จ'านวนเต5มที่��ม�ที่� งค2าบื้วกและค2าลบื้ ขีนาด 8 bit ม�ค2าเร��มจาก -128 ถึ1ง 127
(2's Complement)
บื้�ที่แรกสั3ด เป/น sign bit (1 เป/นค2าลบื้, 0 เป/นค2าบื้วก)
ขีนาด 16 bit เร�ยกว2า integer ม�ค2าเร��มจาก -32,768 ถึ1ง 32,767
ขีนาด 32 bit เร�ยกว2า long integer ม�ค2าเร��มจาก
-2,147,483,648 ถึ1ง 2,147,483,647
1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1
ต�วอย2าง การแปลงเลขีจาก –5 ฐ์าน 10 เป/น 8 Bit 2’Complement ที่'าได"โดย
1) เขี�ยน เลขี 5 ในร(ปฐ์านสัองปกต� ได"0000-0101
2) ที่'าการกล�บื้บื้�ตจาก 0 เป/น 1 และ 1 เป/น 0 เร�ยกว2า 1’s Complement จะได"
0000-0101 กล�บื้บื้�ตเป/น 1111-1010
3) น'าผลจาก 1’s Complement แปลงเป/น 2’s Complement โดยการบื้วก 1 จะได"
1111-1010 + 1 = 1111-1011 เป/นค'าตอบื้
2’Complement Example
The Number in Computer System (3)
จ'านวนที่ศน�ยม ขีนาด 4 Byte เร�ยกว2า “float” ม�ค2าเร��มจาก
3.4 10-38 ถึ1ง 3.4 1038
ขีนาด 8 Byte เร�ยกว2า “double” ม�ค2าเร��มจาก 1.7 10-308 ถึ1ง1.7 10308
ขีนาด 10 Byte เร�ยกว2า “long double” ม�ค2าเร��มจาก 3.4 10-4932 ถึ1ง 3.4 104932
Sign bit Exponent bits Mantissa bits
77
The Number in Computer System (4)
The Number in Computer System (5)
The Number in Computer System (6)
ขี"อม(ลที่��เป/นต�วอ�กษรและสั�ญล�กษณ์� จะใช"รห์�สัแอสัก� (ASCII) ขีนาด 8 บื้�ที่ ซี1�งเป/นรห์�สัมาตรฐ์าน ถึ(กก'าห์นดโดยสัถึาบื้�นมาตรฐ์านแห์2งชาต�ขีองสัห์ร�ฐ์อเมร�กา (ANSI) เช2น
ต�วอ�กษร A ม�ค2าเที่2าก�บื้ 6510 ห์ร�อ 4116
ต�วอ�กษร B ม�ค2าเที่2าก�บื้ 6610 ห์ร�อ 4216
ต�วอ�กษร a ม�ค2าเที่2าก�บื้ 9710 ห์ร�อ 6116
ต�วอ�กษร 7 ม�ค2าเที่2าก�บื้ 5510 ห์ร�อ 3716ASCII : American National Standard Code for Information InterchangeANSI : American National Standard Institute
ASCII Code Table (8 bit)
~}|{zyxwvutsrqp
onmlkjihgfedcba'
_^]\[ZYXWVUTSRQP
ONMLKJIHGFEDCBA@
?>=<;:9876543210
/.-,+*)('&%$#" !
FEDCBA9876543210
F
E
D
C
B
A
9
8
7
6
5
4
3
2
1
0
ASCII Code Table (16 bit)
ASCII Code Table (16 bit)
Variables Representation (1)
7 ที่��เป/นค2าต�วเลขีจะเก5บื้ลงในห์น2วยความจ'าขีองคอมพิ�วเตอร�ด�งน� กรณ์�เก5บื้เป/นชน�ด 1 byte
กรณ์�เก5บื้เป/นชน�ด integer (2 byte)
7 ที่��เป/นอ�กขีระจะเก5บื้ลงในห์น2วยความจ'าขีองคอมพิ�วเตอร�ด�งน�
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1
0 0 0 0 0 1 1 1
0 0 1 1 0 1 1 1
84
Variables Representation (2)
ต�วอ�กษร 1 ต�ว เร�ยกว2าอ�กขีระ (Character) เช2น O การใช"งานในภาษาซี� 'O'
z การใช"งานในภาษาซี� 'z'ต�วอ�กษรเป/นช3ด เร�ยกว2าขี"อความ (string) เช2น Com การใช"งานในภาษาซี�
"Com"University การใช"งานในภาษา
ซี� " University"
Variables and Data Type of variables
ชน�ดขีองขี"อม(ล (data type) ในการเขี�ยนโปรแกรมห์น1�งๆ จะม�ขี"อม(ลต2างๆ เขี"ามาเก��ยวขี"อง เช2นการน�บื้จ'านวนรอบื้ (loop) ขีองการที่'างานโดยใช"ขี"อม(ลชน�ดจ'านวนเต5ม ห์ร�อการแสัดงขี"อความโดยใช"ขี"อม(ลชน�ดต�วอ�กษร จะเห์5นว2าขี"อม(ลต2างๆ ถึ(กแบื้2งออกเป/นห์ลายชน�ดตามจ3ดประสังค�ขีองการใช"งาน นอกจากน� ขี"อม(ลแต2ละชน�ด ย�งใช"เน� อที่��ห์น2วยความจ'า (memory) ไม2เที่2าก�นต�วแปร (Variable) ค�อ การจองพิ� นที่��ในห์น2วยความจ'าขีองคอมพิ�วเตอร�สั'าห์ร�บื้เก5บื้ขี"อม(ลที่��ต"องใช"ในการที่'างานขีองโปรแกรม โดยม�การต� งช��อเร�ยกห์น2วยความจ'าในต'าแห์น2งน� นด"วย เพิ��อความสัะดวกในการเร�ยกใช"ขี"อม(ล ถึ"าจะใช"ขี"อม(ลใดก5ให์"เร�ยกผ2านช��อขีองต�วแปรที่��เก5บื้เอาไว"
Data Type of variables
1 .ขี"อม(ลชน�ดต�วอ�กษร (Character) ค�อขี"อม(ลที่��เป/นรห์�สัแที่นต�วอ�กษรห์ร�อค2าจ'านวนเต5มได"แก2 ต�วอ�กษร ต�วเลขี และกล32มต�วอ�กขีระพิ�เศษใช"พิ� นที่��ในการเก5บื้ขี"อม(ล 1 ไบื้ต�
2. ขี"อม(ลชน�ดจ'านวนเต5ม (Integer) ค�อขี"อม(ลที่��เป/นเลขีจ'านวนเต5ม ได"แก2 จ'านวนเต5มบื้วก จ'านวนเต5มลบื้ ศ(นย� ใช"พิ� นที่��ในการเก5บื้ 2 ไบื้ต�
3. ขี"อม(ลชน�ดจ'านวนเต5มที่��ม�ขีนาด 2 เที่2า (Long Integer) ค�อขี"อม(ลที่��ม�เลขีเป/นจ'านวนเต5ม ใช"พิ� นที่�� 4 ไบื้ต�
4. ขี"อม(ลชน�ดเลขีที่ศน�ยม (Float) ค�อขี"อม(ลที่��เป/นเลขีที่ศน�ยม ขีนาด 4 ไบื้ต�
5. ขี"อม(ลชน�ดเลขีที่ศน�ยมอย2างละเอ�ยด (Double) ค�อขี"อม(ลที่��เป/นเลขีที่ศน�ยม ใช"พิ� นที่��ในการเก5บื้ 8 ไบื้ต�
ชน�ดขีองขี"อม(ลในภาษาซี�
ชน�ด ขีนาดความกว"าง ช2วงขีองค2า การใช"งาน
Char 8 บื้�ต ASCII character (-128 ถึ1ง 127) เก5บื้ขี"อม(ลชน�ดอ�กขีระ
Unsigned char
8 บื้�ต 0-255เก5บื้ขี"อม(ลอ�กขีระแบื้บื้ไม2ค�ดเคร��องห์มาย
Int, Short
16 บื้�ต -32768 ถึ1ง 32767
เก5บื้ขี"อม(ลชน�ดจ'านวนเต5ม
long 32 บื้�ต -2147483648 ถึ1ง 2147483649
เก5บื้ขี"อม(ลชน�ดจ'านวนเต5มแบื้บื้ยาว
Float 32 บื้�ต3.4E-38 ถึ1ง
3.4E+38 ห์ร�อ ที่ศน�ยม 6
เก5บื้ขี"อม(ลชน�ดเลขีที่ศน�ยม
Double 64 บื้�ต1.7E-308 ถึ1ง
1.7E+308 ห์ร�อ ที่ศน�ยม 12
เก5บื้ขี"อม(ลชน�ดเลขีที่ศน�ยม
Unsigned int
16 บื้�ต 0 ถึ1ง 65535เก5บื้ขี"อม(ลชน�ดจ'านวนเต5ม ไม2ค�ดเคร��องห์มาย
Unsigned long
32 บื้�ต 0 ถึ1ง 4294967296
เก5บื้ขี"อม(ลชน�ดจ'านวนเต5มแบื้บื้ยาว ไม2ค�ดเคร��องห์มาย
Variable
ที่'าได" 2 ล�กษณ์ะ ค�อ แบื้บื้ต�วแปรที่��เก5บื้ค2าคงที่�� (Constant) - ค2าคงที่�� แบื้บื้ต�วแปรที่��เก5บื้ค2าที่��วไป (Variable) - ต�วแปร
การสัร"างต�วแปร ต"องร("ว2าจะใช"ต�วแปรเก5บื้ขี"อม(ลอะไร ประกาศต�วแปรให์"เห์มาะสัมก�บื้ขี"อม(ลที่��จะเก5บื้(ชน�ด
ขีองขี"อม(ล)ชน�ดขีองต�วแปรห์ล�กในภาษา C ต�วแปรที่��ใช"เก5บื้อ�กขีระ (Character
variable) ต�วแปรที่��ใช"เก5บื้เลขีจ'านวนเต5ม (Integer
variable) ต�วแปรที่��ใช"เก5บื้เลขีจ'านวนจร�ง (Float
variable) ต�วแปรที่��ใช"เก5บื้อ�กขีระแบื้บื้สัตร�ง (String
variable)
Variable Declaration
ร(ปแบื้บื้ขีองการประกาศต�วแปร
int i; ปรื่ะกาศ i ให้�ช้น�ด้เป%นinteger
float realnum; ปรื่ะกาศrealnum ให้�ม$ช้น�ด้เป%น float
char ch; ปรื่ะกาศ ch ให้�ช้น�ด้เป%นcharacter
ชน�ดต�วแปร ช��อต�วแปร;
Name Identifier
ช��อ (Identifier) - ไอเดนต�ฟายเออร� เป/นช��อที่��ผ("ใช"ก'าห์นดขี1 นในโปรแกรม เช2น ช��อค2าคงที่�� ช��อต�วแปร ช��อฟ)งก�ช�น เป/นต"น ต"องขี1 นต"นด"วยต�วอ�กษรภาษาอ�งกฤษ (ต�วให์ญ2ห์ร�อ
เล5กก5ได") ห์ร�อขี�ดล2าง ‘_’ ตามด"วยต�วอ�กษรภาษาอ�งกฤษ ต�วเลขี ห์ร�อขี�ดล2าง
(Underscore) ‘_’ ไม2ม�ช2องว2างห์ร�อต�วอ�กษรพิ�เศษอ��นๆ เช2น ‘!’, ‘@’,
‘#’, ‘$’, ‘%’, ‘^’ เป/นต"น ต�วพิ�มพิ�ให์ญ2และเล5กจะเป/นคนละต�วก�นเช2น NAME,
name, Name, NamE ห์"ามซี' าก�บื้ค'าสังวน Reserve Words ขีองภาษา
C ห์"ามต� งช��อซี' าก�บื้ Function ที่��อย(2ใน Library
ขีองภาษา Cห์มายเห์ต3: คอมไพิเลอร�ในภาษาซี�สัามารถึเห์5นความแตกต2างขีองช��อต�วแปรได"ยาวไม2เก�น 8 ต�วอ�กษร และช��อต�วแปรจะแตกต2างก�นถึ"าใช"ร(ปแบื้บื้ขีองต�วอ�กษรต2างก�น
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
asm _cs _ds _es
_ss cdecl far huge
interrupt near pascal _export
Naming (Example)
ช้��อ ถ,ก/ผ�ด้ เพิรื่าะ?__0261CountervoidmyLove<3Nong JubblongAgo/Me084642XXXXprintf
Variable Declaration & Assignment Value (1)
1. ต�วแปรที่��ใช"เก5บื้อ�กขีระ แที่นด"วย char โดยอย(2ภายในเคร��องห์มาย เช2น‘ ’
# include <stdio.h>main ( ){ char reply;
reply = ‘y’; …………………}
Variable Declaration & Assignment Value (2)
การให์"ค2าต�วแปรอ�กขีระที่��เป/นรห์�สัพิ�เศษ ห์ร�อรห์�สัควบื้ค3ม อ�กขีระเห์ล2าน� ไม2สัามารถึให์"ค2าโดยตรง แต2จะที่'าได"
โดยการให์"ค2าเป/นรห์�สั ASCII ซี1�งจะเขี�ยนในร(ปขีองเลขีฐ์านแปด โดยใช"เคร��องห์มาย ‘\’ น'าห์น"า ห์ร�อใช"ต�วอ�กขีระที่��ก'าห์นดให์"ก�บื้รห์�สัน� นๆ เขี�ยนตามเคร��องห์มาย ‘\’ สั'าห์ร�บื้รห์�สับื้างต�ว เช2น• รห์�สั BELL แที่นด"วย ASCII 007 ซี1�ง
ก'าห์นดได"ด�งน� –beep = ‘\007’;
• ห์ร�อรห์�สัควบื้ค3มการขี1 นบื้รรที่�ดให์ม2 ต�วอ�กขีระที่��ก'าห์นดให์"ก�บื้รห์�สั ค�อ n สัามารถึก'าห์นดเป/น newline = ‘\n’;
Example of Basically Program
ต�วอย2างโปรแกรม
# include <stdio.h>main ( ){ char newline; newline = ‘\n’;
printf(“Hello, Good morning. %c”,newline); printf(“Hello, Good morning.\n”);}
Variable Declaration & Assignment Value (3)
2. ต�วแปรที่��ใช"เก5บื้เลขีจ'านวนเต5ม ในภาษาซี�สัามารถึใช"แที่นได" 4 ร(ปแบื้บื้ค�อ int, short, long และ unsigned สั'าห์ร�บื้การก'าห์นดต�วแปรแบื้บื้ unsigned ค�อ
จ'านวนเต5มที่��ไม2ค�ดเคร��องห์มายน� นจะต"องใช"ควบื้ค(2ก�บื้ร(ปแบื้บื้ขี"อม(ลจ'านวนเต5มชน�ดอ��น ๆ ค�อ int ห์ร�อ short ห์ร�อ long ต�วอย2างเช2น
unsigned int plusnum;unsigned long width;
unsigned short absno; /* absolute number */
Variable Declaration & Assignment Value (4)
3. ต�วแปรที่��ใช"เก5บื้เลขีจ'านวนจร�ง(ที่ศน�ยม) สั'าห์ร�บื้เลขีม�จ3ดที่ศน�ยมน� นแที่นได" 2 แบื้บื้ ค�อ float และ double โดย double เก5บื้ค2าได"เป/น 2 เที่2าขีอง float
สั'าห์ร�บื้งานที่างว�ที่ยาศาสัตร�ที่��ต"องการความละเอ�ยดในการเก5บื้ค2าม�กใช"การเก5บื้ในร(ปแบื้บื้น� ค�อเก5บื้แบื้บื้เอ5กโพิเนนซี� ด�งต�วอย2างต2อไปน�
ต�วเลขี แสัดงแบื้บื้ว�ที่ยาศาสัตร� แบื้บื้เอ5กโพิเนนซี�
9,000,000,000 9.0*1099.0e9
345,000 3.45*105 3.45e5
0.00063 6.3*10-46.3e-4
0.00000924 9.24*10-69.24e-6
Variable Declaration & Assignment Value (5)
4. ต�วแปรที่��ใช"เก5บื้อ�กขีระแบื้บื้สัตร�ง สัตร�งห์มายถึ1งต�วอ�กขีระห์ลายๆ ต�วมาประกอบื้ก�นเป/นขี"อความ ซี1�งการที่��น'าต�วแปรห์ลายๆ ต�วมาเก5บื้รวมก�นในภาษาซี�น� เร�ยกว2า อะเ“รย�(array)” ด�งน� นขี"อม(ลแบื้บื้สัตร�งค�อ อะเรย�ขีองต�วอ�กขีระน��นเอง
เคร��องห์มายขีองอะเรย�ค�อ [ ] ร(ปแบื้บื้การก'าห์นดสัตร�งจ1งม�ล�กษณ์ะด�งน�
char name[30];ห์มายถึ1ง ต�วแปร name เป/นชน�ด char ที่��ม�
ความยาว 30 ต�วอ�กษรโดยเก5บื้เป/น อะเรย� การเก5บื้น� นจะเก5บื้เร�ยงก�นที่�ละไบื้ต� และไบื้ต�สั3ดที่"ายเก5บื้รห์�สั null ค�อ \0 ด�งน� นจะเก5บื้ได"จร�งเพิ�ยง 29 ต�วอ�กษร
Variable Declaration & Assignment Value (6)
การก'าห์นดค2าให์"ต�วแปรอาจที่'าได"โดยก'าห์นดในโปรแกรม ห์ร�อก'าห์นดในขีณ์ะที่��ม�การก'าห์นดชน�ดก5ได"#include <stdio.h>void main (){
int age; char sex; float grade;
age = 20; sex = ‘f’; grade = 3.14;}
#include <stdio.h>void main (){
int age = 20; char sex = ‘f’; float grade = 3.14;}
Static Variable
การใช"งาน Static ในการประกาศต�วแปร
Register Variable
การใช"งาน Static ในการประกาศต�วแปร
Volatile Variable
การใช"งาน volatile จะใช"งานในล�กษณ์ะด�งน� 1 Memory-mapped peripheral register.
No volatile volatile
Volatile Variable
การใช"งาน volatile จะใช"งานในล�กษณ์ะด�งน� 2 Global variables modified by an interrupt service routine
Volatile Variable
การใช"งาน volatile จะใช"งานในล�กษณ์ะด�งน� 3 Global variables accessed by multiple tasks within a multi-threaded application
Volatile Variable (Example)
gcc –Wall –O3 –save-temps test.c –o test
volatile int quit =0;
Variable Naming Suggestion
ค'าแนะน'าในการต� งช��อเพิ��อให์"อ2านได"ง2าย
Outline
Introduction to C Programming1
pp2
Variables and Type of variablesVariables and Type of variables3
Naming and Variable DeclarationNaming and Variable Declaration4
The Environment of C Programming5
Flowchart Diagram
Variable Accessing & Scope resolution
Good Code Writing (1)
ล�กษณ์ะขีองการเขี�ยนโปรแกรมที่��ม�โครงสัร"างที่��ด�Tip 1: Comment like a smart person
Tip 2: Use #define a lot. No a LOT.
Good Code Writing (2)
Tip 3: Don’t use variable names that will mock you.
Replace with
Tip 4: Do error checking. You make error. Yes, you.
Good Code Writing (3)
Tip 5: “Premature optimization is the root of all evil.” – Donald Knuth
เข$ยนโค�ด้ให้�อ(านได้�ง(าย ตรื่งปรื่ะเด้1น และสามารื่ถห้าข�อผ�ด้พิลาด้ในโค�ด้ได้�ง(ายจะทำ!าการื่ออปต�ไมซ�โค�ด้ เม��อความเรื่1วห้รื่�อทำรื่�พิยากรื่ ไม(เห้มาะสมก�บโปรื่แกรื่ม
Tip 6: Don’t be too clever by haft.There is something called the IOCCC. That is, the "International Obfuscated C Code Contest." You see, C and C++, whatever their considerable advantages, lend themselves to writing nightmarishly complicated code. This contest displays the value of clear code by celebrating the insane. It's pretty awesome.
Credit: http://www.ibm.com/developerworks/library/l-clear-code/
From C to Machine Code
ขี� นตอนในการแปลงจาก C โค"ดเป/นโปรแกรมที่��สัามารถึที่'างานบื้นเคร��องคอมพิ�วเตอร�
1 .เขี�ยนโค"ดด"วยภาษา c โดยการต� งนามสัก3ลโค"ดด"วย ‘.c’
2. แปลงโค"ดภาษาไปเป/นโปรแกรมที่��ที่'างานบื้นเคร��อง จะม�ด"วยก�น 4 ขี� นตอน ค�อ
1) Pre-processing 2) Compiling3) Assembly4) Linking
3. โปรแกรมที่��พิร"อมประมวลผล
C Source Code Compile
Execute Program
Pre-processing
ในขี� นตอนน� จะที่'าการMacro substitution ค�อ การื่แทำนค(ามาโครื่ต(างๆComment are stripped off ค�อ การื่เอาค!าอธิ�บายต(างๆ ออกจากโค�ด้Expansion of the include file ค�อ การื่รื่วบรื่วมเอาส��งทำ$�อย,(ใน header file มารื่วมก�นไว�
Compiling
ในขี� นตอนน� จะที่'าการแปลงโค�ด้ภาษาซ$ไปอย,(ในรื่,ปของค!าส��งรื่ะด้�บแอสแซมบล$ (assembly level instructions)
Assembly
ในขี� นตอนน� จะที่'าการแปลงค!าส��งรื่ะด้�บต!�าจากข�+นตอนทำ$�แล�ว เป%นค!าส��งเครื่��อง(Machine Code)
Linking
ในขี� นตอนน� จะที่'าการเช้��อมค!าส��งเครื่��องทำ$�ม$การื่เรื่$ยกใช้� (call function) ต(างๆ มาเข�าไว�ด้�วยก�นกลายเป%นโปรื่แกรื่มทำ$�สามารื่ถปรื่ะมวลผลได้�
Assignment #1
เลขีฐ์านสั�บื้ เลขีฐ์านสัอง เลขีฐ์านสั�บื้ห์ก19
1F1010101
7A91110110
1272559
Assignment #2
ให์"น�สั�ตออกแบื้บื้โปรแกรมป)ญห์าการค'านวณ์โดยเล�อกป)ญห์าการค'านวณ์จากสั(ตรค'านวณ์ใดก5ได" 1 สั(ตร เพิ��อน'ามาค'านวณ์ค2าผลล�พิธ์� 1 ค2าที่'าการออกแบื้บื้ตามล'าด�บื้โดยม� การว�เคราะห์�ป)ญห์า ค2าที่��เก��ยวขี"อง (ร�บื้ค2า / ก'าห์นดค2า / แสัดง
ผล) เขี�ยน pseudo code เขี�ยน flow chart
เขี�ยนค'าตอบื้ในกระดาษ A4 สั2งงานก2อนการเร�ยนการสัอนในคร� งถึ�ดไปเขี�ยนช��อ รห์�สั สัาขีา ม3มขีวาบื้น และเขี�ยนในแนวต� ง