เริ่มต้นโปรแกรมภาษาซีteacheraromdee.yolasite.com/resources/chapter01.pdf ·...
TRANSCRIPT
อ. เอก ตงคนานนท อ. เอก ตงคนานนท
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
เวลาออฟฟสส าหรบ 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