学号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作为其根元素。

  • 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方法从而修改其位置。

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 Module

  • 问题2的解决方案:去找老师答疑,但是可能自己晃了晃神,后面自己又没有练习,所以就不能导入了。搜索得到的结果是

简单,打开你的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是一个类)

  • 问题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

参考资料

posted @ 2018-06-01 21:27  虹澄清晓  阅读(244)  评论(3编辑  收藏  举报
页尾