投影片 1 - 銘傳大學-銘傳網頁

Download Report

Transcript 投影片 1 - 銘傳大學-銘傳網頁

資訊概論
蕭立人
1
程式設計的重要性
•
Flash => 提昇互動性
– Action Script
•
Maya 3D Models => 電腦遊戲
– C++ & DirectX
– C# & XNA
– Vertool
•
HTML 網頁 => 商業網站
– PHP & MySQL
– ASP.Net & SQL Server
•
手機 => 行動應用
– Java
– Android
•
PDA 嵌入式系統
– ARM
•
IC 與 電路設計
– HDL
– FPGA
2
學習程式設計的良性循環
思考
問題
解決
興趣
3
Tools can not Solve Problems
• 語法只是工具,工具不會自己解決問題
– 從頭到尾先對語法整體了解一次
– 瀏覽語言所支援的功能,語法大略知道即可
– 大部份時間用於程式設計的演練
– 利用程式設計的演練來熟悉語法
熟悉語
法與功
能
寫程式
4
Just do it!
• Just do it!
– 為何你的 Game 玩得那麼好
– 就是要寫
• Trial and Error
– 嚐試錯誤
– 久病終會成良醫
嚐試
提昇
功力
錯誤
心有
所感
5
Body Memory
•
•
•
•
別讓頭腦太孤單
身體也可以幫助記憶
劍隨意轉
心動不如馬上行動
6
I Can Beat You
• Searching and Thinking
– 多搜尋、多讀 、多看、多思考
• Figure out a better one
– 怎麼樣!我的方法更炫!
• Resting is working
– 總在半夢半醒之間~ zzZ
7
程式設計的境界
• 演算法+資料結構=程式 (Wirth)
• 電腦程式設計不只是技術,也是藝術 (Knuth)
8
電腦程式設計的學習進程
• 程式設計(一)
– 基本程式語言 C
• 程式設計(二)
– 物件導向語言 C++
• 資料結構
– 資料結構 資料如何表示、儲存與使用
• Java程式設計
– Java
• 視窗程式設計
– 視窗程式設計 Borland C++
• 物件導向程式設計
– 視窗程式設計 Visual Studio C#
9
電腦程式設計的學習進程
• 資料庫系統管理系統
– SQL Server
• 網頁程式設計
– HTNL, JavaScript, PHP, MySQL
• XML程式設計
– XML, XHTML, ASP.Net, Ajax, Web2.0
• 嵌入式系統程式設計
– 手機, PDA 程式設計
• 網路通訊程式設計
– Internet 程式, Socket
• 電腦遊戲製作
– 實作 3D 遊戲
• 演算法
– 如何解決問題、設計解決問題的方法
10
C 程式語言的要點
• 演進:傳統 C → ANSI C → C++ → C#
• 傳統C
– Multics System→Unix Systems(Bell Lab.)
– ANSI C
• C++
– Hybrid-Language
• 傳統C + 物件導向語言(Object Oriented Language)
• 基本功,必須要會
– 指標(Pointer)、參考(Reference)
– 遞迴程式(Recursive Programming)
– 檔案開檔、關檔、讀檔、寫檔(File Manipulation)
11
Java 的特性
• 演進:傳統 C → Objective C → Java
• Java
–
–
–
–
純粹物件導向語言(Pure Object-Oriented)
跨平台(Across Platforms)
Java虛擬機器(JVM, Java Virtual Machine)
類別庫(Class Library )
• AWT, Swing
– 行動裝置程式(Mobile Device Programming)
• 例如 Android
• 證照:SCJP
12
視窗程式設計
• 視窗程式設計以下列兩種為主
– BCB(Borland C++ Builder)
– Visual Studio C#
• 視窗程式的學習要點
– 表單程式(Window Form)
– 物件導向(Object-Oriented)
– 事件處理(Event Handling)
– 資料庫連接(Database Connection)
13
網頁程式主從架構(Client-Server Concept)
• 用戶端
– IE Browser
– Firefox
• Web伺服器
用戶端
網頁伺服器
資料庫伺服器
– Apache
– IIS(Web+FTP+SMTP)
• 資料庫伺服器(Database Server)
– Access
– SQL Server
– MySQL
14
網頁程式設計-用戶端
• HTML→DHTML
– DOM(Document Object Model)
• XML→XHTML
– XML +CSS
• JavaScript→Ajax→Web 2.0
• Ajax
– 部份擷取
– 非同步傳輸
• 動態網頁
– Flash
– XMAL(SiverLight)
15
網頁程式設計-伺服器端
• 兩種主要配合
– PHP+MySQL
– ASP.Net + SQL Server
• C#, C++, VB
• 一定要學會
– 與資料庫連結
16
資料結構
•
•
•
•
•
•
•
•
•
時間複雜度(Time Complexity)
陣列位址計算(Array)
堆疊與佇列(Stack & Queue)
鏈結串列(Linked List)
遞迴(Recursive)
樹結構(Tree)
圖形結構(Graph)
排序法(Sorting)
搜尋法(Searching)
17
時間複雜度
• 頻率計次(Step Frequency)
• 範例
– 給一個正整數 n , 找出正整數解 (x,y) 使得
x2+y2=n2
– 請比較 Program1 與 Program 2 的速度
18
Program 1
for (x=1; x<n-1; x++)
for (y=x; y<n; y++)
if (x*x+y*y==n*n)
{
printf(“(%d,%d)”,x,y);
exit(0);
}
printf(“not found”);
19
Program 2
x=1; y=n-1;
while (x<y)
{
if (x*x+y*y==n*n)
{ printf(“(%d,%d)”,x,y);
exit(0);
}
else if (x*x+y*y<n*n) x++;
else y—;
}
printf(“not found”);
20
演算法
• 貪婪法(Greedy)
– 真貪心!蛋糕總是拿最大的
• 各個擊破(Divide-and-Conquer)
– 一群人打不贏,那挑落單的呀!
• 動態程式規劃(Dynamic Programming)
– 柿子先挑軟的吃
• 迴溯法(Backtracking)
– 行不通!就換條路吧
• 分支設限(Branch-and-Bound)
– 小心!不要越走越遠
• NP Completeness
– 碰到難題,就說是難題
21
Tower of Hanoi
peg A
peg B
peg C
peg A
peg B
peg C
peg A
peg B
peg C
peg A
peg B
peg C
22
Cisco CCNA(思科)
• 為什麼是Cisco?
• 區域網路
– Discovery 1 & 2
• 廣域網路
– Discovery 3 & 4
• 證照
– CCNA, CCNP, CCIE
23
電腦遊戲製作
• 所需之基礎
– C++
– 物件導向觀念
• 可從 C++, C# 或 Java 等課程學習
– DirectX 程式設計
– 顯示卡圖形處理器(GPU)程式設計
• 入門可以先學
– Visual C# + XNA Game Studio
– Virtools
24