學號20172328《程序設計與數據結構》第十一週學習總結

學號20172328《程序設計與數據結構》第十一週學習總結

教材學習內容總結 (Java和Anroid開發學習指導)

  • 1.初識Anroid
  • studio中的應用程序結構:Project窗口中有兩個主要的節點,app和Gradle Scripts。
    • app :包含應用程序中全部的組件,有三個節點 manifests、java、res。
      • manifests:包含了一個AndroidManifests.xml文件,它描述了應用程序。
      • java:包含了全部的Java應用程序和測試類。
      • res:包含了資源文件。在這個目錄下還有一些目錄:drawable(包含了用於各類屏幕分辨率的圖像)、layout(包含了佈局文件)、menu(包含了菜單文件)、mipmap(包含了用於各類屏幕分辨率的app圖標)、還有value(包含了字符串和其餘值)
  • R類:一個通用的Java類,能夠在項目的app/bulid/generated/source目錄下找到。R包含了嵌套的類,該類反過來包含了你的全部的資源的資源ID。每次你添加、修改、刪除資源的時候,都會生成R。
  • 2.Anroid清單文件:每一個Android應用程序都必須有一個叫作AnroidManifests的清單文件,它用來描述應用程序。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.secondactivitydemo" >

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.secondactivitydemo.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.example.secondactivitydemo.ThirdActivity"
            android:label="@string/title_activity_second" >
        </activity>
    </application>

</manifest>

清單文件是一個XML文件,使用manifest做爲其根元素。html

  • 3.活動是包含了用戶界面組件的一個窗口,用戶能夠和這些用戶界面組件交互。啓動一個活動,每每意味着顯示一個窗口。Anroid應用程序能夠包含多個活動,而且經過在應用程序清單文件中聲明來指定主活動。
  • 4.啓動另外一個活動
  • 啓動另外一個活動很簡單,能夠經過調用startActivity(intent)其中intent是Anroid.content.Intent類的一個實例。能夠看書本上的SecondActivityDemo項目。
  • 5.UI(user interface)組件
  • 使用Anroid studio建立UI很容易,打開一個活動的佈局文件(res/layout),而且將UI組件拖曳到中間的活動屏幕上便可。當咱們完成插入組件後,咱們能夠在項目的清單文件中看修改的部分。
android:icon="@drawable/ic_launcher"    
android:label="@string/app_name"
android:theme="@style/AppTheme"

drawable一般指一個圖像文件,String都是指字符串引用。前端

  • 6.Toast
  • Toast是一個小的彈出對話框,用於顯示一條消息給用戶。當預約時間段後,Toast氣泡會本身消失。
  • anroid.wedget.Toast類是建立Toast的模板,要建立一個Toast,調用它的構造方法,接收Context做爲一個參數。
  • Toast還提供了兩個靜態的makeText方法來建立Toast實例。
Toast toast = Toast.makeText(this.TextValue.toast LENGTH_LONG);
toast.shouw();

通常狀況下,一個toast會顯示在靠近激活活動的底部。可是,也能夠調用其show方法以前調用其setGravity方法從而修改其位置。java

public void setGravity(int gravity,int xoffset,int yoffset)
  • 通知:
  • 通知是出如今狀態欄的一條消息。和toast不一樣的是,通知是長久的,而且將保持顯示,直到關閉它或者關閉設備。
  • 通知是Andriod.app.Noficiation的實例,建立一個通知最簡便的方法,是使用一個叫作Bulider的嵌套類,能夠傳遞一個Context來實例化該類。而後能夠在該Bulider上調用bulid方法來建立一個Nofication。
Notification n = new Notification.Builder(context).bulid();

代碼調試中的問題和解決過程

  • 問題1.剛開始安裝Anroid studio的時候一路next下來,錯誤不是不少,而後打開後就和別人的界面不一樣,運行的按鍵是灰色的。
  • 問題1的解決方案:當時就不知道怎麼解決,百度了一下,是個人gradle包沒有導入。因而找到網址去下載嘍,順順利利地解決了本身的問題。
  • 問題2:想要導入文件,結果顯示失敗了,忘記沒有截圖,大概的步驟是我這會截下的圖。File —— New —— import Modulenode

  • 問題2的解決方案:去找老師答疑,可是可能本身晃了晃神,後面本身又沒有練習,因此就不能導入了。搜索獲得的結果是android

    簡單,打開你的studio,左上角點擊「File」->"New"->"Import Project",而後在出現的目錄選擇界面找到你的代碼,就是你上邊那個圖的,看見裏邊有一個build.gradle了麼,直接點擊這個就OK,studio會幫你直接生成相應的文件,固然你也能夠直接把整個代碼導進去,都同樣.數據庫

  • 問題2的解決方案:我跟着作了一遍,看起來很順利的樣子可是仍是沒法導入,出現的問題都一模一
    樣,因此多次失敗的馨雨同窗暫時的放棄了高級導入方法,乖乖的去兩個文件夾中複製、粘貼,作了一名搬運工。
  • 問題3:2018年5月30日傍晚時間7點左右,正在作實驗2做業的我開了太多後臺進程,因而乎Anroid studio卡死在我懷裏。我不忍心關上本身的筆記本電腦,硬生生的打開任務管理器關掉了它,而後再打開它的時候安卓小綠就不在了,當時包着一絲幻想,反覆打開屏幕,點擊省略框,但是就是沒有個人小綠。當時也不知道問題出在那裏?運行不能夠,看不到andriod小綠的目錄。搜索也搜不到,就請教了王文彬同窗,(ノ´▽`)ノ♪(請不要問我爲何沒有截圖,當時都慌的不行,固然是忙着解決問題啦
  • 問題3的解決方案:通過王文彬同窗大約兩個小時(很是感激)的調試,最終解決了問題。我在詢問他解決過程的時候,他其實經歷了兩個小時的修補,改的東西不少,因此不是一個單因素問題。是多方面緣由,可是最主要的就是當我關掉進程後個人配置文件自動脫離了,因此須要從新下載或者找到導入個人Anroid studio。
  • 問題4:當我覺得萬事大吉準備好好作實驗的時候,我導入的書上代碼統統變紅,像是我媽媽作的青蝦放入沸水中秒秒鐘變成紅蝦。仔細一看,R是紅的,menu也是紅的。

    編程

  • 問題4的解決方案:看截圖呦呦呦
    數組

上週錯題總結

  • 問題1: Abstract Data Types have which of the following object-oriented features?(抽象數據結構有什麼面對對象的特性?)
    A .information hiding(信息隱藏)
    B .inheritance(繼承)
    C .polymorphism(多態)
    D .message passing(消息傳遞)
    E .all of the above(以上全部)數據結構

  • 問題1分析和領悟:正確答案A。我當時選擇B。雖然全部這些答案都是面向對象的特色,但抽象數據類型封裝了數據結構和操做數據結構的方法,也就是信息隱藏。所以,全部的ADT都使用隱藏的信息,這樣數據結構就不能直接從ADT外部操縱,其餘面向對象的特性是不符合ADT的。
  • 問題2:One operation that we might want to implement on a Stack and a Queue is full, which determines if the data structure has room for another item to be added. This operation would be useful(咱們可能想要在已經滿的堆棧和隊列上實現一個操做,怎麼作才能讓這個數據結構有容納另外一個條目的空間?)
    A .only if the Queue or Stack is implemented using an array(只有當這個隊列或者棧是用數組實現的時候)
    B .only if the Queue or Stack is implemented using a linked list(只有當這個隊列或者棧是用列表實現的時候)
    C .only for a Queue(只有隊列能夠)
    D .only for a Stack(只有堆棧能夠)
    E .none of the above, a full operation is not useful at all
    (上述都不能夠,對已滿的操做都不能夠)
  • 問題2分析和領悟:正確答案選A,我當時選擇E。因爲隊列是一個靜態大小的物體,若是它被填滿,那麼任何添加類型的操做,都應該被阻止。這能夠經過首先檢查結構是否完整來肯定。若是數據結構是使用鏈表來實現的,這是沒必要要的,由於(咱們假設)老是會有動態內存來添加新元素。
  • 問題3:In a linked list in Java(Java中的鏈表裏面)
    A .the link is an object(link是一個對象)
    B .the link is a node(link是一個節點)
    C .the link is a reference(link是一個引用)
    D .the link is an int(link是一個整數)
    E .the link is a class(link是一個類)app

  • 問題3分析和領悟:正確答案選C,我當時選擇的是A。在一個鏈表中,連接是對下一個節點的引用。經過檢查參考資料的內容,經過「取消引用」來跟蹤連接。節點對象。對象是類的實例。節點的數據部分極可能是int,以及其餘類型的數據。
  • 問題4: A linear data structure
    A .always has more than one link per node(每一個節點老是有多個連接)
    B .is sometimes represented as a tree or a graph(有時被表示爲樹或圖形)
    C .can have but a single link per node(每一個節點只能有一個連接)
    D .almost always is kept in sorted order either ascending or descending(幾乎老是按順序排列,要麼上升,要麼降低)
  • 問題4分析和領悟:正確答案選擇C。我當時選擇A。線性數據結構是指當你繪製它的圖像時,它顯示爲一個鏈接節點的行。它是「線性的」即看起來像一條直線。一個簡單的列表就是這樣一個數據結構的一個例子,所以一個線性數據結構可能只有一個節點的一個連接。顯示爲樹或圖形的數據結構不是線性的,它們是二維的(至少)。沒有要求線性數據結構以任何順序、排序或其餘方式保存。
  • 問題5:A simple linear list(一個簡單的線性表

    A .is an example of a degenerate tree(是退化樹的一個例子)
    B .is an example of a degenerate graph(是一個簡併圖的例子)
    C .is an example of a degenerate digraph(是一個退化的digraph的例子)
    D .cannot be represented as a degenerate tree, graph or digraph(不能表示爲退化樹,圖或雙圖)
    E .none of the above(以上都不對)

  • 問題5分析和領悟:正確答案A,我當時的選項D,一個簡單的線性列表被定向,從它的起始節點到它的結束節點。圖和圖都沒有起始節點,可是樹確實是樹的根。因此,一個簡單的線性列表就是一個退化樹的例子,它有一個分支因子,每一個節點都有一個單獨的繼承者,從根開始,到單個葉子(結束節點)結束。
  • 問題6: The push and enqueue operations are essentially the same operations, push is used for Stacks and enqueue is used for Queues.(push和enqueue本質上是相同的操做,push被用於堆棧和enqueue用於隊列。)
    A .true
    B .false
  • 問題6分析和領悟: 正確答案選B,當時我選的是A,真的是很理解不透徹啊!雖然這兩個操做都是爲各自的抽象數據類型「添加」或「插入」操做,但它們的不一樣之處在於,老是在堆棧的頂部(或前端)添加,而enqueue老是在隊列的後面添加。

結對及互評

  • 20172301:由於電腦自身的問題耽誤了他的正常學習,我在作數據庫時也是這樣,別人都進行的很順利,很快速,可是我被端口、內部配置、沒法打開所困擾,第一步都走不下去,這種感受快要抹掉我全部的熱情。可是,快要不表明徹底抹殺熱情,人是須要有點執念的就像老人與海中所說的:一我的能夠被毀滅,但不能被戰勝;況且只是學習過程當中一點小小的挫折呢!我期待看到他補好的、和以前同樣流光溢彩的博客。
  • 20172304:依舊簡約風,確實不太上心,雖然已經學期末尾,但仍是有始有終的好。

其餘(感悟、思考等,可選)

這學期立刻就要結束了,程序設計與數據結構這門課也是陪伴了我整整一個學期。絕不誇張的講,我在這門課上花的時間是最多的,但仍是因爲能力不足、瞭解不夠在學習深度方面很欠缺。在學習過程當中也是困難不斷、各類問題,有時候都以爲這不只考驗個人學習水平,還在極大程度上考驗個人心態和情緒控制度。

    經過學習這門課確實看到了我本身的自學能力和實踐應用能力稍有欠缺。在學習的過程當中,也看到了好多同窗的優秀之處,不只僅是編程能力,更是對同窗的無私幫助,樂於分享,敢於發問,勤于思考感到深深地由衷地敬佩。

    還有一兩週這學期就要進入尾聲的。就像本身很喜歡的一句話同樣「靡不有初,鮮克有終」,我必定會堅持去完成這門課的學習。固然課程還會在下學期繼續,那就迎接它擁抱它吧。

學習進度條

代碼行數(新增/累積) 博客量(新增/累積) 學習時間(新增/累積)
目標 5000行 30篇 400小時
第一週 100/100 1/1 15/15
第二週 377/477 1/2 20/35
第三週 280/757 2/4 22/57
第四周 973/1730 1/5 35/92
第五週 1000/2730 1/6 40/132
第六週 729 /3459 1/7 40/172
第七週 660/4119 2/9 30/192
第八週 1417/5536 3/12 40/232
第九周 1139/6675 2/14 60/292
第十週 758/7433 2/14 40/332

參考資料

相關文章
相關標籤/搜索