JavaNB === * 程式設計師思考邏輯 1. **理解問題** 完全理解問題的建議方法 -->寫下你的問題,畫個塗鴉,或者將它告訴別人 ex: 我要如何到台北101 ? => 可以寫畫下問題並自己思考或則與他人分享討論 2. **制定計畫** -->輸入甚麼?輸出甚麼?中間做了甚麼? ex: 怎麼去 ? => 輸入甚麼?輸出甚麼?如何運算? 4. **分解問題** 將大問題慢慢拆開成小問題去解決 ex: 為何會失敗 ? => 將大問題拆成小問題來一個一個突破 6. 問題還是一籌莫展 ? 再從第一步重新開始 ? 7. 勤練習 ==學程式的方法 :== 1. 跟著老師動手寫 2. 詢問老師或身旁朋友 3. 留住上課的筆記跟學習做註解 ==寫程式最需要具備能力 => 推理思考、歸納整理!== ==解題過程== 1. 拆問題 (簡化思考) 2. 發現規律 - 觀察資料的模式、趨勢、或是規則等現象。 3. 統整歸納總概念 4. 設定演算 - 建立解決問題的步驟 ( 可利用寫流程圖來協助演算 ) * 情境練習 - 買飲料 1. 要買哪一家 ? 2. 怎麼去 ? 怎麼點 ? 3. 買不到飲料怎麼辦 ? ### 入門 * 物件導向 - 類別 1. 類別像是一本『規格書』 2. 屬性 --> 描述一個產品的各種特性 EX: 外觀、重量、尺寸、價格….. 3. 方法 --> 描述一個產品的操作方法() EX: 汽車的發動、關閉、前進、後退、轉彎…. 4. 我們可以透過規格書來知道東西的各種『特性』與操作方法 * 物件導向 - 物件 ```java Scanner sc = new Scanner(System.in); /* 這行程式就是告訴電腦,要依照Scanner這個類別(規格書)去製造一個物件, 這個物件叫做sc */ ``` 1. 依照規格書去生產出產品,這個產品就是物件 2. 使用物件的三大重點 : (1) 有甚麼屬性? 1-1 類似於變數,存放該物件特有的資訊。 1-2 每一物件皆有獨立的屬性,存放在獨立的記憶體中,不重複。 (2) 有甚麼方法? 就是可以對物件下的指令 EX: 方法的名稱、參數、傳回值(結果) (3) 會產生甚麼事件? 執行過程物件會主動發布甚麼事件, 而這些事件就是在物件發出後要處理他。 會模仿真實世界,由一連串的事件影響彼此且同步運行。 也像舞台劇或電視劇,一個事件導致另一個事件。 - - - # =========== 陣列篇 ============= ### 壹、陣列(Array)說明 1. Array 是一種非常重要的 ==資料結構== ( 資料結構最基本的東西就是 Array ) 2. 儲存==大量==**同性質資料**的良好方式 3. Java的陣列可透過某些**方法**或**屬性**進行更多的應用。 ###### ● 傳統Array是純粹記憶東西用,物件導向語言的Array 還有加屬性及方法來做更多應用 ### 貳、Array 應用時機 1. 大量同類型資料,例如字串(姓名,地址,電話號碼…),每日營業額、每小時氣溫、全班成績、交易金額…. 2. 這些大量資料被連續存放在記憶體中。 3. 需要時可以很方便地取出運用。 (1) 統計月/年營業額、平均氣溫 (2) 繪製氣溫變化曲線 (3) 尋找最高/低成績、最高/低氣溫 (4) 依照成績高低排序 ### 參、Array 使用方法 ==每一筆資料就得有一個變數來儲存資料!== ### 基本型 (1) #### 第一步 : 宣告 Array --> 類似宣告變數 ● 一維陣列語法 --> 資料型態 陣列名稱 [] --> 資料型態 [] 陣列名稱 [] (1) 資料型態 :int,float,…,String (2) 陣列名稱 : 陣列名稱的命名規定與變數命名規定相同 --> 將大量資料寫在同一個變數並存起來 ```java int Name [ ]; // 或 int [ ] Name; float Scores [ ]; // 或 float [ ] Scores; ``` #### 第二步 : 產生陣列實體 ● Array 語法 --> 陣列名稱 = new 資料型態 [ 元素個數 ]; ★ 使用陣列需配置元素所需要的記憶體空間!!! (1) 資料型態 (2) 元素個數 : 所需要的陣列元素個數,它必須是一個整數變數或常數(一般為常數),並且不能是long型態 ★ jAVA 陣列編號從 0 開始!! * array 記憶體存放原理 ![image alt](https://i.imgur.com/0NH7vOe.png) ``` ● 圖片解說 1. cp 看數字編號;工程師看陣列編號 2. Name[0] = ‘J’; // 把 J 字放進陣列中 Name[1] = ‘a’; // 把 a 字放進陣列中 ``` ``` java char Name [ ]; // 宣告一個陣列變數 Name = new char[6]; // 告訴電腦 array 需要多少記憶體儲存變數 float Scores [ ]; Scores = new float [50]; ``` * 陣列合併寫法 1. 可以將步驟一與二合併為一行 2. 合併與分開各有適用場合。 (1) 如果預先知道陣列的大小,適合用合併方式。 (2) 如果程式執行到某階段才能確定陣列大小,適合分開方式。 ```java char Name [ ]; // 步驟一 Name = new char[6]; // 步驟二 // 合併 1 : 步驟一與步驟二合併為一行 char Name[ ] = new char[6]; // 程式執行到某階段確定陣列大小時的合併 char Name[ ]; . . . Name = new char[6]; ``` * 陣列資料結構的常用方式 * 陣列資料結構的兩大工作 : 1.==搜尋==資料 : 2.資料==排序== :將一堆雜亂的資料,依照某個**關鍵值(Key Value)**依序排列,方便日後的查詢或使用。