30
อ. เอก ตังคนานนท์ อ. เอก ตังคนานนท์ 2 November 2010 เอกสารประกอบการสอนวิชา CP111 มหาวิทยาลัยศรีนครินทรวิโรฒ เริ ่มต้นโปรแกรมภาษาซี Introduction to C/C++ Programming Language

เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท อ. เอก ตงคนานนท

2 November 2010

เอกสารประกอบการสอนวชา CP111

มหาวทยาลยศรนครนทรวโรฒ

เรมตนโปรแกรมภาษาซ Introduction to C/C++ Programming Language

Page 2: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

เนอหา

แนะน าวชา CP111

แนะน าภาษาซ

การออกแบบการเขยนโปรแกรม

เครองมอในการอธบายโปรแกรม

Agenda

2

Page 3: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท อ. เอก ตงคนานนท 3

แนะน าวชา CP111 Introduction to CP111

Page 4: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ท าไมตองเรยน CP111 ?

เพอฝกแนวคดใหเปนระบบ

เพอใหเขาใจถงศลปะการเขยนโปรแกรม

เพอเปนพนฐานส าหรบการเขยนโปรแกรมภาษาอนๆ

เพอน าการเขยนโปรแกรมภาษาซไปประยกตใชงาน

4

Why study CP111 ?

Page 5: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ผสอน

อ.เอก ตงคนานนท

หองพก 19-1818

[email protected]

เวลาออฟฟสส าหรบ CP111

วนองคาร 13.00 – 16.00

5

Lecturer

Page 6: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

เคาโครงการเรยนการสอน

บทท 1 - เรมตนโปรแกรมภาษาซ

บทท 2 - ตวแปร ประเภทตวแปร ตวด าเนนการ

บทท 3 - การรบและการแสดงขอมล

บทท 4 - โครงสรางของโปรแกรมและการควบคม

บทท 5 - ฟงกชน

บทท 6 - ประเภทตวแปรขนสง

บทท 7 – ไลบรารพนฐาน

บทท 8 – โครงสรางขอมลพนฐาน

6

Course Syllabus

Page 7: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ขอตกลงในการเรยน

ไมคยกนในชนเรยน เพราะจะไดมสมาธในการเรยนและไมไป

รบกวนสมาธของเพอน

หากอยหนาเครองคอมพวเตอรใหท ากจกรรมท เกยวกบการ

เรยนการสอนเทานน

หามมใหมการคดลอกงานจากคนอนโดยปราศจากการอางอง

หากตรวจพบ plagiarism จะไดเกรด E ทนท

7

Rules

Page 8: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท อ. เอก ตงคนานนท 8

แนะน าภาษาซ Introduction to C Programming Language

Page 9: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ภาษาคอมพวเตอรระดบต า

ภาษาระดบต า

ภาษาเคร อง

มลกษณะเปนเลขฐานสอง เปนภาษาทคอมพวเตอรเขาใจไดดแตคนเขาใจได

ยาก

ภาษาแอสเซมบล

เร มมการใชตวอกษรแทนชดค าส งท เปนเลขฐานสอง แตกยงท าใหการพฒนา

โปรแกรมเปนไปไดคอนล าบาก

ภาษาอนๆ ท มความเกยวของกบสถาปตยกรรมของคอมพวเตอรโดยตรง

9

Low-Level Computer Programming Language

0100 0101 1010 1111

1101 1010 1011 1100

1010 1111 1011 1000

1100 0010 0110 1011

1011 0101 1101 1001

push dx ah

mov ds, ax

mov ah, 9

int 21h

Page 10: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ภาษาคอมพวเตอรระดบสง

ภาษาระดบสง

ภาษา C/C++

เปนภาษาทถกออกแบบมาใหมนษยสามารถเขาใจไดงายและสามารถใช

ส งงานคอมพวเตอรไดอยางมประสทธภาพ

ภาษาอนๆ ท มการบดบงการตดตอกบสถาปตยกรรมของ

คอมพวเตอร

10

High-Level Computer Programming Language

int a;

for (a = 1; a < 10; a++) {

printf('a = %d' , a);

printf('2 x a = %d', 2 * a);

}

Page 11: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ลกษณะการท างานของภาษาระดบสง

Interpreted

เปนภาษาทท างานผาน interpreter

Python, MATLAB, PHP, Perl, etc.

Compiled

เปนภาษาท ถกแปลงใหเปนภาษาเครองกอนแลวจงท างาน

C, C++, COBOL, Visual Basic, etc.

บางภาษาอาจท างานไดท งสองรปแบบ

11

Computer Programming Language

อาจแบงเพมเตมเปน Translated

หมายถงภาษาท มการแปลงเปน

ภาษาอนกอนแลว compile โดย

ภาษาท เปนท นยมแปลงไปคอ C

Page 12: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

คอมไพเลอรภาษาซ

Preprocessor

macro substitution

conditional compilation

“source-level” transformations

output is still C

Compiler

generates object file

machine instructions

Linker

combine object files

(including libraries)

into executable image

12

The C Complier

Citation: Yale N. Patt, Sanjay J. Patel. Introduction to Computing Systems 2nd Edition Pg 295 - 297.

Page 13: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

พฒนาการของภาษาคอมพวเตอร

13 Citation: Yale N. Patt, Sanjay J. Patel. Introduction to Computing Systems 2nd Edition Pg 294.

Page 14: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

สวสดชาวโลก

14

Hello World !!!

#include<stdio.h> int main() { printf("Hello World"); return 0; }

ex01_01.c

#include<iostream> using namespace std; int main() { cout << "Hello World" << endl; return 0; }

ex01_02.cpp

Page 15: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

สวสดชาวโลกหลายๆ คร ง

15

Hello World More!!!

#include<stdio.h> int main() { int a = 0; while (a < 10) { printf("Hello World"); a++; } return 0; }

ex01_03.c

#include<iostream> using namespace std; int main() { int a = 0; while (a < 10) { cout << "Hello World" << endl; a++; } return 0; }

ex01_04.cpp

Page 16: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

โปรแกรมส าหรบภาษาอนๆ

ดเพมเตมท http://www.99-bottles-of-beer.net

จะเหนวาภาษาคอมพวเตอรแตละชนดคลายคลงกน ถาเขาใจภาษาหนงกจะเขาใจท เหลอไดโดยเรว

16

Other Computer Languages

class HelloWorld { public static void main(String [] args) { int a = 0; while (a < 10) { System.out.println("Hello World"); a++; } } }

ex01_05.java

for a in range(0, 10): print "Hello World"

ex01_07.py

for ($a = 0; $a < 10; $a++) print "Hello World";

ex01_08.php

Page 17: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท อ. เอก ตงคนานนท 17

การออกแบบการเขยนโปรแกรม Computer Programming Design

Page 18: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

การแกปญหาดวยคอมพวเตอร

จะบอกคอมพวเตอรใหท างานตามท เราตองการไดอยางไร ?

การแปลงการแกปญหาออกมาเปนขนตอนตางๆ

การน าเอาขนตอนท ไดนนไปพฒนาเปนโปรแกรม

18

Solving Problems using Computers

Page 19: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ท าปญหาใหชดเจน (1/2)

ปญหาสวนใหญไมชดเจน คลมเครอ

ใหหาผลรวมของจ านวนเตม 1 ถง 10

• ระหวาง หรอ ต งแต ?

ใหหาพนท ใตกราฟของสมการ f(x) = x2 + 5

• ชวงไหน ?

ใหนบจ านวนตวอกษรทงหมดใน slide หนาน

• สญลกษณตางๆ ชองวาง ฯลฯ นบดวยหรอไม ?

19

Problem Statement

Page 20: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ท าปญหาใหชดเจน (2/2)

การจดการกบปญหาท ไมชดเจน คลมเครอ

ถาม

ท าตามท เขาใจและอธบายเอาไวในสวนทคลมเครอ

(ไมควรใชวธนใน CP111)

20

Problem Statement

Page 21: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

แกปญหาอยางมระบบ (1/2)

แบงปญหาหลกออกเปนปญหายอยๆ

21

Page 22: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

แกปญหาอยางมระบบ (2/2)

ลกษณะความสมพนพของปญหายอยๆ

ท าตามล าดบ ท าตามเงอนไข ท าซ าตามเงอนไข

22

เง อนไข เง อนไข TRUE FALSE

TRUE FALSE

Page 23: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท อ. เอก ตงคนานนท 23

เคร องมอในการอธบายโปรแกรม Algorithm Description Tools

Page 24: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

Programming Flowchart

ใชแสดงการท างานของโปรแกรมดวยรปภาพ

24

แสดงผล

ค าส ง ชดค าส ง

เง อนไข

รบขอมล

ตวเชอม

Page 25: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

Programming Flowchart Example

25 Citation: http://www.trinity.edu/student_org/thetatau/report_files/image005.jpg

Page 26: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

Programming Pseudocode

ใชแสดงการท างานของโปรแกรมดวยประโยคงายๆ โดยมการ

จดยอหนาท เปนระบบ

26

Page 27: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

Programming Pseudocode Example

27

1 function Dijkstra(Graph, source):

2 for each vertex v in Graph: // Initializations

3 dist[v] := infinity // Unknown distance function from source to v

4 previous[v] := undefined // Previous node in optimal path from source

5 dist[source] := 0 // Distance from source to source

6 Q := the set of all nodes in Graph

// All nodes in the graph are unoptimized - thus are in Q

7 while Q is not empty: // The main loop

8 u := vertex in Q with smallest dist[]

9 if dist[u] = infinity:

10 break // all remaining vertices are inaccessible from source

11 remove u from Q

12 for each neighbor v of u: // where v has not yet been removed from Q.

13 alt := dist[u] + dist_between(u, v)

14 if alt < dist[v]: // Relax (u,v,a)

15 dist[v] := alt

16 previous[v] := u

17 return dist[]

Page 28: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท

ตวอยาง

จงนบจ านวนสระภาษาไทยทปรากฏบนสไลดแผนน

จงค านวนคาสวนสงเฉลยของนกศกษาในหองน

จงหาวนคลายวนเกดของนกศกษาในหองนคนถดไป

28

Example

Page 29: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท อ. เอก ตงคนานนท 29

ค าถามทายบท

จะขนสไลดทายชวโมงท ท าการสอน

Page 30: เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf · 2012-08-06 · เพื่อเป็นพื้นฐานส

อ. เอก ตงคนานนท อ. เอก ตงคนานนท

2 November 2010

บทท 2 ตวแปร ประเภทตวแปร ตวด าเนนการ

จะเขยนโปรแกรมใหเกบขอมลระหวางการค านวนไดอยางไร ประเภทของขอมลท

จดเกบมแบบไหนบาง ลกษณะของการค านวนสามารถท าอะไรไดบางนอกจากบวก

ลบ คณ หาร

จบบทท 1 The End of Chapter 1