学期(2022-2023) 学号(20221403) 《计算机基础与程序设计》第八周学习总结
作业信息
这个作业属于哪个课程 | <班级的链接>(如2022-2023-1-计算机基础与程序设计) |
---|---|
这个作业要求在哪里 | <作业要求的链接>(如2022-2023-1计算机基础与程序设计第八周作业 |
这个作业的目标 | 功能设计与面向对象设计,面向对象设计过程,面向对象语言三要素,汇编、编译、解释、执行 |
作业正文 | ... 本博客链接 |
教材学习内容总结
- 功能设计与面向对象设计的区别
- 功能设计是按照产品定位的初步要求,在对用户需求及现有产品进行功能调查分析的基础上,对所定位产品应具备的目标功能系统进行概念性构建的创造活动。
- 面向对象设计采用与结构化设计不一样的视角,他是将世界抽象成一系列具有一定职责的自由数据个体,个体之间相互协作,共同完成高级的行为.
- 面向对象设计过程
- 先根据需求找出对象
- 抽象每一个对象为类
- 找出各对象之间的关系,使用组合、继承、分类、扩展等描述这些关系
- 找出每个对象实体要做的事,写对象方法
- 找出每个类在不需要有对象实体的情况下要做的事,写类方法
- 面向对象语言三要素
- 封装、继承、多态
- 封装把数据和动作集中在一起,使数据和动作的逻辑属性与他们的实现细节分离。(实现信息隐蔽的语言特性)
- 继承是指类获取其他类的属性(数据字段和方法)的机制。被继承类叫超类,继承后的类叫派生类或子类
- 多态是语言在运行时确定给定调用将执行哪些可能的方法的能力。
- 汇编与编译
- 汇编语言是一种低级编程语言算法简单,通常用汇编器将汇编语言指令翻译成机器码,最终执行的是汇编器输出的机器码。
- 编译程序把高级编程语言(如Java、C#)编写的程序转换为可执行的机器语言。其具体过程是先把高级语言编写的程序转换为汇编指令(assembly instruction),然后再转换为可执行的机器语言。
- 解释
- 解释与编译类似,书上提到第二代高级语言分为两种,一种是要编译的,一种是要解释的。
- 解释语言时要用到解释器,解释器是一种程序,用于翻译和执行语句序列。(可看作模拟器或虚拟机)(而汇编器或编译器叫翻译器)
- 翻译器只用适合的机器语言生成等价的程序,这个程序再单独运行,但速度要快。
模拟器直接执行输入的程序,但速度要慢。
- 执行
- 执行是机器理解并运行其所得的机器代码
上周考试错题总结
Which level provides a view that deals with the underlying data structure used to manage the data?
A. Implementation level
B. Logical level
C. Array level
D. Linked level
E. Application level
正确答案: A ; 我的作答: B
代码调试中的问题和解决过程
在做输入一个正整数,要求以相反的顺序输出该数。用递归方法实现。
这道题时出现了问题。
- 在刚开始看这道题时没有思路,如何用递归法将一个数进行逆序并输出。
- 经过在CSDN网站上借鉴学习,了解到可以通过将该数进行对10求余得到最后一个数并输出,并将该数更替为原来的数除10并再次对新数进行递归。依次重复就能得到从最后一个数逐个向前输出到第一个数,得到该数的逆序。
- 参考文章(递归版)输入一个正整数n,输出其反序数
- 问题:
- 我在第一次写好代码并运行时出现下述情况:
- 在函数中加上了if(n>0)语句后再次运行才能成功:
- 问题是我两次输入的n都是大于零的,为什么会出现两种不一样的运行结果?
- 以下分别是两次运行的代码:
1.
点击查看代码
#include<stdio.h>
void NI(int n)
{
printf("%d",n%10);
NI(n/10);
}
int main(void)
{
int n;
printf("Enter number:");
scanf("%d",&n);
NI(n);
printf("\n");
}
点击查看代码
#include<stdio.h>
void NI(int n);
int main()
{
int n;
printf("Enter number:");
scanf("%d",&n);
NI(n);
printf("\n");
}
void NI(int n)
{
if(n>0)
{
printf("%d",n%10);
NI(n/10);
}
}
- 解决过程:通过询问同学,老师,了解了递归函数需要有结束条件,在该函数中若不加(n>0)则在输出最后一个数后将一直输出0成为死循环导致运行失败。
学习进度条
代码行数(新增/累积) | 博客量(新增/累积) | 学习时间(新增/累积) | 重要成长 | |
---|---|---|---|---|
目标 | 5000行 | 30篇 | 400小时 | |
第八周 | 300/1800 | 1/15 | 30/90 |