เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf ·...

Post on 24-Feb-2020

0 views 0 download

Transcript of เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf ·...

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

2 November 2010

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

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

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

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

เนอหา

แนะน าวชา CP111

แนะน าภาษาซ

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

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

Agenda

2

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

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

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

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

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

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

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

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

4

Why study CP111 ?

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

ผสอน

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

หองพก 19-1818

ake@swu.ac.th

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

วนองคาร 13.00 – 16.00

5

Lecturer

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

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

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

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

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

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

บทท 5 - ฟงกชน

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

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

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

6

Course Syllabus

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

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

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

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

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

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

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

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

7

Rules

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

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

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

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

ภาษาระดบต า

ภาษาเคร อง

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

ยาก

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

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

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

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

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

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

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

ภาษาระดบสง

ภาษา 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);

}

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

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

Interpreted

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

Python, MATLAB, PHP, Perl, etc.

Compiled

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

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

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

11

Computer Programming Language

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

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

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

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

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

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

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.

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

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

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

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

สวสดชาวโลก

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

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

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

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

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

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

ดเพมเตมท 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

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

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

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

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

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

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

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

18

Solving Problems using Computers

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

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

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

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

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

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

• ชวงไหน ?

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

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

19

Problem Statement

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

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

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

ถาม

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

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

20

Problem Statement

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

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

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

21

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

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

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

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

22

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

TRUE FALSE

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

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

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

Programming Flowchart

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

24

แสดงผล

ค าส ง ชดค าส ง

เง อนไข

รบขอมล

ตวเชอม

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

Programming Flowchart Example

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

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

Programming Pseudocode

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

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

26

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

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

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

ตวอยาง

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

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

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

28

Example

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

ค าถามทายบท

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

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

2 November 2010

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

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

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

ลบ คณ หาร

จบบทท 1 The End of Chapter 1