235021 computer programming...

118
235021 Computer Programming กกกกกกกกกกกกกกกกกกกกกกกกกก กกกกกกกกกก 2 กกกกกกกกกกกกกกกกกกกกก กกกกกกกกก Credit: Narongchai.mo Mod: k.Mathiang

Upload: arden-carney

Post on 01-Jan-2016

45 views

Category:

Documents


0 download

DESCRIPTION

235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์. สัปดาห์ที่ 2 การเขียนโปรแกรมภาษาซีเบื้องต้น. Credit: Narongchai.mo Mod: k.Mathiang. objectives. เข้าใจองค์ประกอบ และการทำงานของระบบคอมพิวเตอร์ - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

235021Computer Programmingการเขี�ยนโปรแกรมคอมพิ�วเตอร�

สั�ปดาห์�ที่�� 2การเขี�ยนโปรแกรมภาษาซี�เบื้� องต"น

Credit: Narongchai.moMod: k.Mathiang

Page 2: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

objectives

เขี"าใจองค�ประกอบื้ และการที่'างานขีองระบื้บื้คอมพิ�วเตอร�ร("จ�กและเขี"าใจขี� นตอนในการว�เคราะห์�ป)ญห์า และน'าป)ญห์ามาเขี�ยนในร(ปแบื้บื้ขีองแผนผ�งการไห์ลขีองขี"อม(ล (Flowchart Diagram) ได"ร("จ�กต�วแปรและชน�ดขีองต�วแปรร("ห์ล�กการในการต� งช��อต�วแปรพิร"อมที่� งการประกาศต�วแปรเขี"าใจห์ล�กการในการแปลงภาษาซี�เป/นโปรแกรมเขี"าใจการเขี"าถึ1งต�วแปรห์ร�อช2วงช�ว�ตขีองต�วแปรที่��ประกาศ

Page 3: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 4: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

What is computer?

อ3ปกรณ์�อ�เล5กที่รอน�กสั�อย2างห์น1�ง ที่��มน3ษย�ประด�ษฐ์�ขี1 น เพิ��อน'ามาเสัร�มความสัามารถึขีองมน3ษย�ในด"านการร�บื้ร(" การจ'า การค'านวณ์ การเปร�ยบื้เที่�ยบื้ต�ดสั�นใจ ในการที่��จะสั��งให์"เคร��องคอมพิ�วเตอร�ที่'างาน จ'าเป/นต"องป7อนค'าสั��ง และจะต"องเป/นค'าสั��งที่��เคร��องคอมพิ�วเตอร�เขี"าใจ ได"แก2ภาษาเคร��องห์ร�อที่��เร�ยกเป/นภาษาอ�งกฤษว2า “Machine Language” ซี1�งประกอบื้ด"วยต�วเลขี 0 ก�บื้ 1 เที่2าน� น

Page 5: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Computer Architecture

MemoryCPU

ROM

RAM

I/O

InputDevices

OutputDevice Instruction/DataI/O Address

Memory AddressData/Action Arithmetic

Logic

ExecuteInstruction

Page 6: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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บื้

Page 7: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Hardware

สั2วนประกอบื้ต2างๆ ขีองคอมพิ�วเตอร�แบื้2งได"เป/น 3 ประเภที่ ค�อ ห์น2วยประมวลผลกลาง(Central processing unit) ห์น2วยความจ'า (Memory) อ3ปกรณ์�ร�บื้ขี"อม(ลเขี"า(Input device) อ3ปกรณ์�แสัดงผลขี"อม(ล(Output device) อ3ปกรณ์�ร�บื้ขี"อม(ลเขี"าและแสัดงผล (Input/Output device)

Page 8: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Central Processing Unit : CPU

ห์น2วยประมวลผลกลาง (Central Processing Unit) เช2น 80486 Celeron, Pentium, Athon, Duron เป/นต"น

Page 9: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Memory

ห์น2วยความจ'า (Memory) เช2น SDRAM 128 MB, ROM BIOS, ฮาร�ดด�สัก�, ซี�ด�รอม

RAMROM

BIOSHDD

Page 10: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Input devices

อ3ปกรณ์�ที่��ม�ความสัามารถึในการเป/นห์น2วยร�บื้ขี"อม(ลเขี"า เช2น keyboard, mouse, microphone, scanner เป/นต"น

keyboard

scanner mouse

Page 11: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Output devices

อ3ปกรณ์�ที่��ม�ความสัามารถึในการเป/นห์น2วยแสัดงผลขี"อม(ล เช2น monitor, printer, speaker เป/นต"น

speaker printer monitor

Page 12: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Input/Output devices

อ3ปกรณ์�ที่��ม�ความสัามารถึในการเป/นที่� งห์น2วยร�บื้ขี"อม(ลและห์น2วยแสัดงผลขี"อม(ล เช2น Touch screen เป/นต"น

Touch

screen

Page 13: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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 เป/นต"น

Page 14: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Software (2)

ซีอฟที่�แวร�

ซีอฟที่�แวร�ระบื้บื้

ซีอฟที่�แวร�ประย3กต�

DosWindow

Unix

Linux

ซีอฟต�แวร�สั'าเร5จ

ซีอฟต�แวร�ใช"เฉพิาะงาน

Page 15: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Operating Systems (1)

(Disk Operating System) ป> 1981-1995 เป/นระบื้บื้ปฏิ�บื้�ต�

การในย3ค80 ใช"การสั��งงานผ2านค'าสั��ง command line เช2น ต"อง

การตรวจจ'านวนไฟล�ในแผ2นด�สัก� ใช"ค'าสั��ง dir

Page 16: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Operating Systems (2)

OS2 (Operating System /2) ใช"ในป>1987-2001 เป/นระบื้บื้ปฏิ�บื้�ต�การที่��พิ�ฒนาโดย Microsoft และ IBM ในช2วงแรก และต2อมา IBM เป/นผ("พิ�ฒนาต2อ ภาษาที่��ใช"ในการสัร"างค�อ C/C++

Page 17: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Operating Systems (3)

ย(น�กซี� (Unix) เป/นระบื้บื้ปฏิ�บื้�ต�การคอมพิ�วเตอร�แบื้บื้ห์ลายงาน ห์ลายผ("ใช" ที่��เร��มพิ�ฒนาโดยกล32มพิน�กงานขีองห์"องปฏิ�บื้�ต�การ AT&T Bell Labs โดยกล32มน�กพิ�ฒนาที่��เป/นที่��ร("จ�ก ค�อ Ken Thompson, Dennis Ritchie และ Douglas McIlroy

Page 18: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Operating Systems (4)

ล�น3กซี� (Linux) และร("จ�กในช��อ กน(/ล�น3กซี� (GNU/Linux) โดยที่��วไปเป/นค'าที่��ใช"ในความห์มายที่��ห์มายถึ1งระบื้บื้ปฏิ�บื้�ต�การแบื้บื้ย(น�กซี� โดยใช"ล�น3กซี� เคอร�เนล เป/นศ(นย�กลางที่'างานร2วมก�บื้ไลบื้ราร�และเคร��องม�ออ��น ล�น3กซี�เป/นต�วอย2างห์น1�งในฐ์านะซีอฟต�แวร�เสัร� และซีอฟต�แวร�โอเพินซีอร�สัที่��ประสับื้ความสั'าเร5จและม�ช��อเสั�ยง

Page 19: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Operating Systems (5)

ไมโครซีอฟที่� ว�นโดวสั� (Microsoft Windows) เป/นระบื้บื้ปฏิ�บื้�ต�การ ซี1�งพิ�ฒนาโดยบื้ร�ษ�ที่ไมโครซีอฟที่� เปAดต�วเม��อป> พิ.ศ. 2528 (ค.ศ. 1985 โดยร32นแรกขีองว�นโดวสั� ค�อ ว�นโดวสั� 1.0) และครองความน�ยมในตลาดคอมพิ�วเตอร�สั2วนบื้3คคล มากกว2า 90%

Page 20: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Software (3)

Word

Excel

PPTNetwork

Connection

ค'านวณ์เกรด

ซีอฟต�แวร�ใช"เฉพิาะงาน

ซีอฟที่�แวร�ประย3กต�

ซีอฟต�แวร�สั'าเร5จ

ย�มห์น�งสั�อค�ดดอกเบื้� ย

ฟ)งเพิลง

Page 21: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

How the computer work? (1)

คอมพิ�วเตอร�จะที่'างานต2างๆ ด"วยซีอฟที่�แวร�ห์ร�อโปรแกรมต2างๆ โดยจะใช"ช3ดค'าสั��งภาษาเคร��องในการที่'างาน แต2ภาษาเคร��องเป/นภาษาที่��มน3ษย�ยากที่��จะจ'าและเขี"าใจการที่'างาน ด�งน� นจ1งม�การค�ดภาษาต2างๆ ที่��ใกล"เค�ยงก�บื้ภาษาขีองมน3ษย�ขี1 นมาเพิ��อให์"มน3ษย�ใช"งานในการเขี�ยนสัร"างโปรแกรมอ��นๆภาษาที่างคอมพิ�วเตอร� ภาษาเครื่��องปรื่ะกอบด้�วยเลข 0 ก�บ 1 สามารื่ถส��งให้�

คอมพิ�วเตอรื่�ทำ!างานได้�ทำ�นทำ$ ข�อเส$ยค�อเข$ยนยาก ภาษา Assembly เป%นก&�งภาษาเครื่��องเข$ยนเป%นค!าส��ง

Neumonic สามารื่ถแปลงเป%นภาษาเครื่��องได้�ง(าย โด้ยการื่เทำ$ยบตารื่าง ห้รื่�อใช้� Assembler

ภาษาข�+นส,ง เป%นภาษาทำ$�ใกล�เค$ยงก�บภาษาของม-นษย� (ปรื่ะโยคข�อความส(วนให้ญ่(เป%นภาษาอ�งกฤษ) เช้(น ภาษา C, PASCAL, FORTRAN -> Compiler

Page 22: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

How the computer work? (2)

ระบื้บื้ปฎิ�บื้�ต�การ (Operating System: OS)

App.

App.

App.

• Application ไม2ต"องย32งการต�ดต2อก�บื้ฮาร�ดแวร�ต2างผ("ผล�ต• Application สัร"างโดยย1ดก�บื้ Operating System

• ม�การที่'างานพิ� นฐ์านเตร�ยมไว"แล"ว

Hardware

OS

Page 23: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Programming Language and Development (1)

วงจรช�ว�ตซีอฟต�แวร�(Software life cycle)

Code design Code implementation

Page 24: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Programming Language and Development (2)

How the Program Run? คอมพิ�วเตอร�จะที่'างานก�บื้ Machine

Language

Program Code / Source Code

Translation

Machine Code

Page 25: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 26: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Programming Language and Development (4)

Hardware

OS

Source Code------------------------------------------------------------------------------

Interpreter

• ต"องม� Interpreter ที่'างานตลอดเวลาเพิ��อแปลค'าสั��ง• Source Code สัามารถึที่'างานได"เลย (ที่�ละค'าสั��ง)

• สัะดวกในการแก"ไขี

Interpreter

Page 27: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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 ---

Page 28: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 29: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Language (1)

ภาษาฟอร�แที่รน (Fortran: Formula Translation)

ภาษาฟอร�แที่รน

Page 30: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Advantage-Disadvantage

ภาษาฟอร�แที่รน (Fortran: Formula Translation) เห์มาะก�บื้งานด"านว�ที่ยาศาสัตร�

ว�ศวกรรมศาสัตร� และคณ์�ตศาสัตร� ล�กษณ์ะขีองภาษาคล"ายสั(ตรห์ร�อสัมการ

คณ์�ตศาสัตร� ไม2เห์มาะก�บื้งานพิ�มพิ�ห์ร�องานที่��ต"องการเก5บื้

ขี"อม(ล ป)จจ3บื้�นไม2น�ยม

Page 31: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Language (2)

ภาษาปาสัคาล (PASCAL)

ภาษาปาสัคาล

Page 32: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Advantage-Disadvantage

ภาษาปาสัคาล (PASCAL) ม�โครงสัร"างภาษาด�เย��ยม ที่'าให์"การที่'างาน

ขีองโปรแกรมม�ประสั�ที่ธ์�ภาพิ สัามารถึบื้อกขี"อผ�ดพิลาดขีองการเขี�ยน

โปรแกรมเพิ��อให์"แก"ไขีโปรแกรมได"ง2าย ค2อนขี"างจ3กจ�ก ม�เคร��องห์มายมากมาย ที่'าให์"

ลดความคล2องต�วในการใช"งาน

Page 33: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Language (3)

ภาษาเบื้สั�ก (Basic: Beginner’s All-purpose Symbolic Instruction Code)

Page 34: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Advantage-Disadvantage

ภาษาเบื้สั�ก (Basic: Beginner’s All-purpose Symbolic Instruction Code) ค'าสั��งม�น"อย แต2ใช"งานได"อย2างม�ประสั�ที่ธ์�ภาพิ เป/นภาษาเก2าแก2 เขี"าใจง2าย และถึ(กออกแบื้บื้มาให์"

ใช"ก�บื้งานในล�กษณ์ะโต"ตอบื้ (Interactive) ใช"อ�นเที่อร�พิร�ที่เตอร� เห์มาะก�บื้ผ("เร��มห์�ดเขี�ยนโปรแกรม การเขี�ยนค'าสั��งสั'าห์ร�บื้การที่'างานค2อนขี"างยาว

ที่'าให์"การที่'างานโปรแกรมช"า

Page 35: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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งก�ช้�นโพิรื่โทำรื่ไทำพิ�

Page 36: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Advantage-Disadvantage

ภาษาซี� (C language) เป/นภาษาที่��ม�โครงสัร"างและม�ร(ปแบื้บื้ค'าสั��ง

ค2อนขี"างอ�สัระ ไม2ขี1 นก�บื้ระบื้บื้ปฎิ�บื้�ต�การ ไม(ข&+นอย,(ก�บช้น�ด้ของเครื่��องคอมพิ�วเตอรื่� ม�ค'าสั��งและฟ)งก�ช�นมาก ค'าสั��งจะสั� น ที่'าให์"การที่'างานเร5ว สัามารถึใช"งานได"ห์ลายประเภที่ รวมถึ1งการ

ควบื้ค3มฮาร�ดแวร�ได" ม�ขี"อยกเว"น ที่'าให์"เป/นผลเสั�ยต2อโครงสัร"าง

โปรแกรม

Page 37: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Evolution of Language

ภาษา BCPLมาร�ต�น ร�ชาร�ด (Martin Richards)

Basic Combined Programming Language

ภาษา Bเคน ที่อมพิ�สั�น (Ken Thompson) 1970

ภาษาซี� เด้นน�ส รื่�ทำช้$� (Dennis Ritchie)

1972 ที่�� Bell Labs เผยแพิรื่( 1978เคอร�น�กเฮน (Kernighan)

เดนน�สั ร�ที่ช�� (Dennis Ritchie)

Page 38: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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น ระบื้บื้ต�วเลขีฐ์านสั�บื้ ระบื้บื้ต�วเลขีฐ์านสัอง เป/นต"น

Page 39: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 40: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Number System (3)

ระบื้บื้เลขีฐ์านสั�บื้MSB

LSB10n 10n-1 …….. 102

101 100

ระบื้บื้เลขีฐ์านสัองMSB

LSB2n 2n-1 …….. 22 21 20

Page 41: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 42: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Number System (5)

จงแปลง 45 ฐ์านสั�บื้ ให์"เป/นฐ์านสัอง

4510 = 1011012

45

11 เศษ 05 เศษ 12 เศษ 11 เศษ 0

2

222

MSB

LSB

22 เศษ 12

Page 43: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Number System (6)

จงแปลง 946 ฐ์านสั�บื้ ให์"เป/นฐ์านสั�บื้ห์ก946

59 เศษ 23 เศษ 11 = B

0 เศษ 3

161616

94610 = 03B216

Page 44: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

The Conversion of Hexadecimal to Binary

ฐ์านสั�บื้ห์ก ฐ์านสัอง0 00001 00012 00103 00114 01005 01016 01107 0111

ฐ์านสั�บื้ห์ก ฐ์านสัอง8 10009 1001A 1010B 1011C 1100D 1101E 1110F 1111

Page 45: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 46: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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)

Page 47: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Problem Analysis Example (1)

กรณ์�ศ1กษาที่�� 1: ขี� นตอนว�ธ์�การแก"ป)ญห์าด"วยคอมพิ�วเตอร� จงเขี�ยนขี� นตอนว�ธ์�การแก"ป)ญห์าสั'าห์ร�บื้การ

ห์าปร�มาตรที่รงกระบื้อกโดยร�บื้ขี"อม(ลขีองความสั(ง และร�ศม�ขีองวงกลมที่��เป/นฐ์านขีองที่รงกระบื้อก จากน� นแสัดงค2าขีองปร�มาตรที่รงกระบื้อกที่��ค'านวณ์ได"

r

h

ปร�มาตรที่รงกระบื้อก = ¶ x r2 x h

Page 48: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Problem Analysis Example (2)

ขี� นตอนที่�� 1 ที่'าความเขี"าใจก�บื้ป)ญห์า การค'านวณ์ห์าปร�มาตรขีองร(ปที่รงกระบื้อก

ขี� นตอนที่�� 2 ล�กษณ์ะขีองขี"อม(ลเขี"าและขี"อม(ลออก ขี"อม(ลเขี"า ค�อ ความสั(งขีองที่รงกระบื้อก และ

ร�ศม�ขีองวงกลมที่��เป/นฐ์านขีองที่รงกระบื้อก ชน�ดขีองขี"อม(ลเขี"าความสั(ง และร�ศม�ขีองวงกลมที่��เป/นฐ์านขีองที่รงกระบื้อกเป/นขี"อม(ลชน�ดต�วเลขี

ขี"อม(ลออก ค�อ ค2าขีองปร�มาตรที่รงกระบื้อก ชน�ดขีองขี"อม(ลเป/นขี"อม(ลต�วเลขีเป/นต�วเลขีจ'านวนเต5มห์ร�อต�วเลขีที่ศน�ยมขี1 นอย(2ก�บื้ว�ธ์�การห์าค'าตอบื้

Page 49: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Problem Analysis Example (3)

ขี� นตอนที่�� 3 ที่ดลองแก"ไขีป)ญห์าด"วยตนเอง การค'านวณ์ห์าปร�มาตรที่รงกระบื้อก ห์าได"

จากสั(ตรปร�มาตรที่รงกระบื้อก = ¶ x ร�ศม�ยกก'าล�ง 2 x ความสั(งถึ"า ร�ศม�ขีองฐ์าน = 5 เมตร

และความสั(ง = 12 เมตรปร�มาตรที่รงกระบื้อก = 3.14159 x

52 (m2 ) x 12 (m) = 942.48 m3

Page 50: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Problem Analysis Example (4)

ขี� นตอนที่�� 4 การพิ�ฒนาล'าด�บื้ขี� นตอนว�ธ์�การแก"ป)ญห์า เขี�ยนอธ์�บื้ายขี� นตอนว�ธ์�การที่'างานที่� งห์มด

อย2างย2อ1. เร��มต"น2. ร�บื้ค2าความสั(ง และร�ศม�ขีองฐ์านที่รงกระบื้อก3. ค'านวณ์ค2าปร�มาตรที่รงกระบื้อก ¶ * ร�ศม�ขีองฐ์าน2 *

ความสั(ง4. แสัดงค2าขีองปร�มาตรที่รงกระบื้อก5. จบื้การที่'างาน

เขี�ยนอธ์�บื้ายขี� นตอนว�ธ์�การที่'างานอย2างละเอ�ยด

การค'านวณ์ห์าปร�มาตรขีองที่รงกระบื้อก การแก"ป)ญห์าไม2ได"ซี�บื้ซี"อนมาก สัามารถึอธ์�บื้ายแบื้บื้อย2างย2อและได"ครบื้ที่3กขี� นตอน

Page 51: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 52: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Problem Analysis Example (6)

ขี� นตอนที่�� 4 การพิ�ฒนาล'าด�บื้ขี� นตอนว�ธ์�การแก"ป)ญห์า

ผ�งงาน (Flowchart)StartInput High,

RadiusVolume <- 3.14159 *

Radius2 * High

Output Volume

End

Page 53: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 54: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart

ผ�งงาน ค�อ การเขี�ยนอธ์�บื้ายขี� นตอนว�ธ์�การที่'างานในล�กษณ์ะขีองร(ปภาพิประโยชน�ขีองผ�งงานใช"สั'าห์ร�บื้ช2วยในการพิ�ฒนาล'าด�บื้ขี� นตอนว�ธ์�การแก"ป)ญห์า เน��องจากผ�งงานเป/นการอธ์�บื้ายขี� นตอนว�ธ์�การที่'างานในล�กษณ์ะขีองร(ปภาพิ ที่'าให์"สัามารถึเห์5นล'าด�บื้ขีองขี� นตอนว�ธ์�การที่'างานได"ช�ดเจนกว2าการอธ์�บื้ายขี� นตอนว�ธ์� การที่'างานในล�กษณ์ะขีองขี"อความ

Page 55: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 56: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 57: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Symbols (3)

สั�ญล�กษณ์�

ความห์มาย ต�วอย2างการใช"

ค'าอธ์�บื้าย

การแสัดงผลล�พิธ์�ที่างเคร��องพิ�มพิ�(Document)

พิ�มพิ�ค2า A

ที่างเคร��องพิ�มพิ�

การแสัดงผลล�พิธ์�ที่างจอภาพิ(Display)

แสัดงค2า A, B

บื้นจอภาพิ

print A

display A , B

Page 58: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Symbols (4)

สั�ญล�กษณ์�

ความห์มาย ต�วอย2างการใช"

ค'าอธ์�บื้าย

ห์มายเห์ต3(Comment)

ร�บื้ค2าที่างการกดแป7นพิ�มพิ�(Manual Input)

ร�บื้ค2า A ที่างแป7นพิ�มพิ�

read A A = Age

read A

Page 59: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 60: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 61: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 62: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Symbols (8)

สั�ญล�กษณ์�

ความห์มาย ต�วอย2างการใช"

ค'าอธ์�บื้าย

การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"เที่ปกระดาษ(Punched tape)

อ2านค2า ID , name

บื้นเที่ปกระดาษ

การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"เที่ปแม2เห์ล5กเป/นสั��อ(Magnatic tape)

read ID , name

Page 63: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Symbols (9)

สั�ญล�กษณ์�

ความห์มาย ต�วอย2างการใช"

ค'าอธ์�บื้าย

การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"จานแม2เห์ล5กเป/นสั��อ(Magnatic disk)

การร�บื้ห์ร�อแสัดงขี"อม(ลโดยใช"ดร�มแม2เห์ล5กเป/นสั��อ(Magnatic drum)

Page 64: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Symbols (10)

สั�ญล�กษณ์�

ความห์มาย ต�วอย2างการใช"

ค'าอธ์�บื้าย

การที่'างานที่��ก'าห์นดไว"แล"ว เช2น โปรแกรมย2อย(Predefine Process)

เร�ยกโปรแกรม

ย2อยช��อ findGrade

ให์"ที่'างานการควบื้ค3มการที่'างานด"วยมน3ษย� บื้างคร� งเร�ยกการที่'างานแบื้บื้ออฟไลน� (Offline Processing)

findGrade

Page 65: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Symbols (11)

สั�ญล�กษณ์�

ความห์มาย ต�วอย2างการใช"

ค'าอธ์�บื้าย

การที่'างานแบื้บื้ออฟไลน�ขีองอ3ปกรณ์�ที่��ไม2ได"ถึ(กควบื้ค3มจากห์น2วยประมวลผลกลางโดยตรง(Auxiliary Operation)

การจ�ดเร�ยงล'าด�บื้ขี"อม(ล(Sorting)

Page 66: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Symbols (12)

สั�ญล�กษณ์�

ความห์มาย ต�วอย2างการใช"

ค'าอธ์�บื้าย

การสั2งขี"อม(ลที่างสัายสั��อสัาร(Communication Link)

Page 67: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Handle(1)

ที่�ศที่างขีองผ�งงานจะเร��มจากสั2วนบื้นขีองห์น"ากระดาษลงมาย�งสั2วนล2าง และจากซี"ายม�อไปขีองห์น"ากระดาษ และควรเขี�ยนเคร��องห์มายล(กศรก'าก�บื้ที่�ศที่างไว"ด"วย

67

START

STOP

read age

age > 60

“You are old”

true

false

บื้น

ล2าง

ที่�ศที่างขีองเสั"น

Page 68: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Handle(2)

สั�ญล�กษณ์�ห์ร�อภาพิที่��ใช"ในการเขี�ยนผ�งงานม�ขีนาดต2างๆ ก�นได" แต2จะต"องม�ร(ปมาตรฐ์านตามความห์มายที่��ก'าห์นด

68

START

sum = 0

i = 1 to 10

sum = sum + i

i

sum

STOP

ขนาด้ของส�ญ่ล�กษณ์�ปรื่�บให้�เห้มาะสมก�บข�อความในส�ญ่ล�กษณ์�

Page 69: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Flowchart Handle(3)

การเขี�ยนที่�ศที่างขีองผ�งงานควรเป/นไปอย2างม�ระเบื้�ยบื้ และห์ล�กเล��ยงการขี�ดโยงไปโยงมาในที่�ศที่างต�ดก�น ถึ"าจ'าเป/นต"องโยงถึ1งก�น ควรใช"เคร��องห์มายจ3ดต2อเน��องแที่นและถึ"าเป/นไปได"ควรเขี�ยนผ�งงานให์"จบื้ในห์น"าเด�ยวก�นค'าอธ์�บื้ายในภาพิ เขี�ยนเพิ�ยงสั� น ๆ และเขี"าใจง2ายผ�งงานที่��ด�ควรจะม�ความเป/นระเบื้�ยบื้เร�ยบื้ร"อยและสัะอาด นอกจากน� แล"ว จะม�ช��อขีองผ�งงาน ผ("เขี�ยน ว�นที่��เขี�ยน และเลขีห์น"าล'าด�บื้

69

Page 70: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 71: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

The Number Size of Computer

บื้�ที่ (bit) ค�อ ต�วเลขีฐ์านสัองเพิ�ยงต�วเด�ยวไบื้ที่� (Byte) ค�อ ต�วเลขีขีนาด 8 บื้�ที่เว�ร�ด (Word) ค�อ ต�วเลขีขีนาด 16 บื้�ที่ ห์ร�อ 2 ไบื้ที่�ก�โลไบื้ที่� (KB) ค�อ ต�วเลขีขีนาด 210 = 1024 ไบื้ที่�เมกะไบื้ที่� (MB) ค�อ ต�วเลขีขีนาด 210 210 ไบื้ที่�ก�กกะไบื้ที่� (GB) ค�อ ต�วเลขีขีนาด 210 210 210 ไบื้ที่�

bit : binary digit

Page 72: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

The Memory Size of Computer

ห์น2วยความจ'า 128 MB ห์มายความว2าสัามารถึเก5บื้ขี"อม(ลได" 128 210 210 = 134217728 ต'าแห์น2ง

????

????

????

????

????

????ต'าแห์น2งที่�� 0

ต'าแห์น2งที่�� 134217727

Page 73: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 74: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 75: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

ต�วอย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

Page 76: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 77: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

77

The Number in Computer System (4)

Page 78: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

The Number in Computer System (5)

Page 79: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 80: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 81: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

ASCII Code Table (16 bit)

Page 82: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

ASCII Code Table (16 bit)

Page 83: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 84: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

84

Variables Representation (2)

ต�วอ�กษร 1 ต�ว เร�ยกว2าอ�กขีระ (Character) เช2น O การใช"งานในภาษาซี� 'O'

z การใช"งานในภาษาซี� 'z'ต�วอ�กษรเป/นช3ด เร�ยกว2าขี"อความ (string) เช2น Com การใช"งานในภาษาซี�

"Com"University การใช"งานในภาษา

ซี� " University"

Page 85: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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บื้เอาไว"

Page 86: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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 ไบื้ต�

Page 87: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

ชน�ดขีองขี"อม(ลในภาษาซี�

ชน�ด ขีนาดความกว"าง ช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ค�ดเคร��องห์มาย

Page 88: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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)

Page 89: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Variable Declaration

ร(ปแบื้บื้ขีองการประกาศต�วแปร

int i; ปรื่ะกาศ i ให้�ช้น�ด้เป%นinteger

float realnum; ปรื่ะกาศrealnum ให้�ม$ช้น�ด้เป%น float

char ch; ปรื่ะกาศ ch ให้�ช้น�ด้เป%นcharacter

ชน�ดต�วแปร ช��อต�วแปร;

Page 90: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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างก�น

Page 91: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 92: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Naming (Example)

ช้��อ ถ,ก/ผ�ด้ เพิรื่าะ?__0261CountervoidmyLove<3Nong JubblongAgo/Me084642XXXXprintf

Page 93: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Variable Declaration & Assignment Value (1)

1. ต�วแปรที่��ใช"เก5บื้อ�กขีระ แที่นด"วย char โดยอย(2ภายในเคร��องห์มาย เช2น‘ ’

# include <stdio.h>main ( ){ char reply;

reply = ‘y’; …………………}

Page 94: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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’;

Page 95: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Example of Basically Program

ต�วอย2างโปรแกรม

# include <stdio.h>main ( ){ char newline; newline = ‘\n’;

printf(“Hello, Good morning. %c”,newline); printf(“Hello, Good morning.\n”);}

Page 96: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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 */

Page 97: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 98: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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 ต�วอ�กษร

Page 99: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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;}

Page 100: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Static Variable

การใช"งาน Static ในการประกาศต�วแปร

Page 101: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Register Variable

การใช"งาน Static ในการประกาศต�วแปร

Page 102: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Volatile Variable

การใช"งาน volatile จะใช"งานในล�กษณ์ะด�งน� 1 Memory-mapped peripheral register.

No volatile volatile

Page 103: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Volatile Variable

การใช"งาน volatile จะใช"งานในล�กษณ์ะด�งน� 2 Global variables modified by an interrupt service routine

Page 104: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Volatile Variable

การใช"งาน volatile จะใช"งานในล�กษณ์ะด�งน� 3 Global variables accessed by multiple tasks within a multi-threaded application

Page 105: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Volatile Variable (Example)

gcc –Wall –O3 –save-temps test.c –o test

volatile int quit =0;

Page 106: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Variable Naming Suggestion

ค'าแนะน'าในการต� งช��อเพิ��อให์"อ2านได"ง2าย

Page 107: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 108: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Variable Accessing & Scope resolution

Page 109: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Good Code Writing (1)

ล�กษณ์ะขีองการเขี�ยนโปรแกรมที่��ม�โครงสัร"างที่��ด�Tip 1: Comment like a smart person

Tip 2: Use #define a lot. No a LOT.

Page 110: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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.

Page 111: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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/

Page 112: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

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

Page 113: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Pre-processing

ในขี� นตอนน� จะที่'าการMacro substitution ค�อ การื่แทำนค(ามาโครื่ต(างๆComment are stripped off ค�อ การื่เอาค!าอธิ�บายต(างๆ ออกจากโค�ด้Expansion of the include file ค�อ การื่รื่วบรื่วมเอาส��งทำ$�อย,(ใน header file มารื่วมก�นไว�

Page 114: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Compiling

ในขี� นตอนน� จะที่'าการแปลงโค�ด้ภาษาซ$ไปอย,(ในรื่,ปของค!าส��งรื่ะด้�บแอสแซมบล$ (assembly level instructions)

Page 115: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Assembly

ในขี� นตอนน� จะที่'าการแปลงค!าส��งรื่ะด้�บต!�าจากข�+นตอนทำ$�แล�ว เป%นค!าส��งเครื่��อง(Machine Code)

Page 116: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Linking

ในขี� นตอนน� จะที่'าการเช้��อมค!าส��งเครื่��องทำ$�ม$การื่เรื่$ยกใช้� (call function) ต(างๆ มาเข�าไว�ด้�วยก�นกลายเป%นโปรื่แกรื่มทำ$�สามารื่ถปรื่ะมวลผลได้�

Page 117: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Assignment #1

เลขีฐ์านสั�บื้ เลขีฐ์านสัอง เลขีฐ์านสั�บื้ห์ก19

1F1010101

7A91110110

1272559

Page 118: 235021 Computer Programming การเขียนโปรแกรมคอมพิวเตอร์

Assignment #2

ให์"น�สั�ตออกแบื้บื้โปรแกรมป)ญห์าการค'านวณ์โดยเล�อกป)ญห์าการค'านวณ์จากสั(ตรค'านวณ์ใดก5ได" 1 สั(ตร เพิ��อน'ามาค'านวณ์ค2าผลล�พิธ์� 1 ค2าที่'าการออกแบื้บื้ตามล'าด�บื้โดยม� การว�เคราะห์�ป)ญห์า ค2าที่��เก��ยวขี"อง (ร�บื้ค2า / ก'าห์นดค2า / แสัดง

ผล) เขี�ยน pseudo code เขี�ยน flow chart

เขี�ยนค'าตอบื้ในกระดาษ A4 สั2งงานก2อนการเร�ยนการสัอนในคร� งถึ�ดไปเขี�ยนช��อ รห์�สั สัาขีา ม3มขีวาบื้น และเขี�ยนในแนวต� ง