2024-2025 20241308《计算机基础与程序设计》第五周总结
|这个作业属于哪个课程|<2024-2025-1-计算机基础与程序设计(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP)>|
|这个作业要求在哪里|<2024-2025-1计算机基础与程序设计第一周作业](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276)>|
|这个作业的目标|Pep/9虚拟机 机器语言与汇编语言 算法与伪代码 测试:黑盒,白盒|
|作业正文|
教材学习内容总结
在《C语言程序设计》第4章中,我学到了数据的格式化屏幕输出、数据的格式化键盘输入、单个字符的输入输出、用getchar()输入数据存在的问题、用%c输入字符时存在的问题。学完《计算机科学概论》第6章,我能够区分机器语言和汇编语言,描述虚拟机Pep/9的重要特性,区分立即寻址模式和直接寻址模式,编写一个简单的机器语言程序,描述创建和运行汇编语言程序的步骤,编写一个简单的汇编语言程序,区分给汇编器的指令和要翻译的指令,区分执行一个算法和开发一个算法,描述表达算法时使用的伪代码结构,使用伪代码来描述算法,描述两种测试方式,为简单的汇编语言程序设计和实现测试方案。
教材学习中的问题和解决过程
屏幕输出:
在C语言程序设计中,屏幕输出主要通过以下几种常见方式实现:
一、使用printf函数(最常用)
- 它是stdio.h头文件里提供的标准输出函数。
- 基本语法:printf("输出内容格式字符串", 要输出的变量列表);
- 例如:
include <stdio.h>
int main() {
int num = 10;
printf("输出一个整数:%d\n", num);
return 0;
}
二、使用putchar函数
- 也是stdio.h里的函数。
- 它用于输出单个字符。
- 比如:
include <stdio.h>
int main() {
char ch = 'A';
putchar(ch);
putchar('\n');
return 0;
}
这里先输出字符'A',然后通过putchar('\n')输出换行符实现换行效果。
单个字符的输入输出:
在C语言中,单个字符的输入输出主要通过以下函数来实现:
输入单个字符
- getchar函数:
- 所在头文件:stdio.h。
- 功能:从标准输入设备(通常是键盘)读取一个字符。
- 示例用法:
include <stdio.h>
int main() {
char ch;
ch = getchar();
printf("你输入的字符是:%c\n", ch);
return 0;
}
在上述示例中,通过getchar函数从键盘读取一个字符并存储到变量ch中,然后再用printf函数输出该字符。
输出单个字符
- putchar函数:
- 所在头文件:stdio.h。
- 功能:将一个字符输出到标准输出设备(通常是屏幕)。
- 示例用法:
include <stdio.h>
int main() {
char ch = 'A';
putchar(ch);
putchar('\n');
return 0;
}
这里先定义了字符变量ch并赋值为'A',然后通过putchar函数将该字符输出到屏幕上,最后再通过putchar输出换行符'\n'使输出换行。
通过这两个函数,就可以方便地实现单个字符在C语言程序中的输入和输出
机器语言与汇编语言:
一、机器语言
- 定义:机器语言是计算机能够直接识别和执行的二进制指令代码,由0和1组成的序列。每一种计算机都有其特定的机器语言指令集,这些指令直接控制计算机硬件的操作,比如控制CPU进行数据运算、内存读写、I/O设备的操作等。
- 特点:
- 执行效率极高,因为计算机硬件可以直接执行,无需任何转换过程。
- 编写难度极大,全是二进制代码,对于人类来说非常难以理解、记忆和编写,很容易出错,且开发效率极低。
- 可移植性极差,不同型号的计算机,其机器语言指令集往往不同,所以针对一种计算机编写的机器语言程序,通常无法直接在另一种计算机上运行。
二、汇编语言
- 定义:汇编语言是一种面向机器的程序设计语言,它用助记符来代替机器语言中的二进制指令代码,使得程序员能够相对更容易地编写程序来控制计算机硬件的操作。例如,用“MOV”代表数据传送指令等。这些助记符指令与特定的机器语言指令有一一对应的关系。
- 特点:
- 相比机器语言,汇编语言的可理解性有所提高,程序员通过助记符能大概了解程序的功能,编写程序时出错的概率相对降低一些,开发效率也稍高一点。
- 执行效率依然很高,因为汇编语言编写的程序经过汇编程序的翻译后,能很高效地转换为机器语言并被计算机执行。
- 可移植性也较差,虽然比机器语言稍好一点,但由于不同计算机的硬件结构不同,其对应的汇编语言指令集也存在差异,所以在一台计算机上编写的汇编程序,一般不能直接在另一台计算机上运行,通常需要针对不同计算机进行一定的修改。
机器语言是计算机硬件能直接执行的最底层语言,而汇编语言则是在其基础上通过助记符进行了一定的“人性化”改造,但两者都与具体的计算机硬件紧密相关,在可移植性等方面存在明显局限。
基于AI的学习
我学习了计算机科学概论第 6 章的内容,请你以苏格拉底的方式问我问题,一次一个问题。
那很不错呀,不过我尚不知晓这第6章具体所讲内容呢。姑且先问你这么一个问题吧:在你所学的这章内容里,你可明晰其中最为关键之点,足以让你向旁人清晰阐述其核心要义的所在之处呀?
机器语言与汇编语言。
啊,那你既已学过相关内容,我且来问你哦。你且说说,机器语言全是由那0和1组成的指令代码,这般晦涩难懂,那汇编语言又是如何在这之上做了改变,让程序员能稍许轻松去编写控制计算机硬件之程序的呀?
用助记符吧。
哈哈,不错呀,确实是用助记符来做了改进呢。那我再问啦,虽说汇编语言用助记符代替了机器语言的二进制指令,可不同计算机的硬件结构各有差异呀,那这汇编语言在不同计算机上使用时,是不是也会遇到诸多不便之处呀?
是的
嗯,甚是有理呀。那既知晓会有诸多不便,我便再问啦,那在面对这些因计算机不同而产生的不便时,有没有何种法子或者说思路,可以尝试去缓解或者克服这些问题呢?
不知道
无妨无妨呀。那且再听我一问哦,既然汇编语言相较机器语言已用助记符使其更易理解些,那你觉得在何种具体情境之下,人们还是会更倾向于直接使用机器语言而非汇编语言呢?
你能举一些例子吗?
那我来说几个不同编程语言的例子呀。
Python语言
比如要计算1到100的整数之和,用Python就可以这样写:
sum_num = 0
for i in range(1, 101):
sum_num += i
print(sum_num)
Java语言
同样计算1到100的整数之和,Java代码示例如下:
public class Main {
public static void main(String[] args) {
int sum_num = 0;
for (int i = 1; i <= 100; i++) {
sum_num += i;
}
System.out.println(sum_num);
}
}
C语言
以下是C语言实现计算1到100整数之和的代码:
include <stdio.h>
int main() {
int sum_num = 0;
int i;
for (i = 1; i <= 100; i++) {
sum_num += i;
}
printf("%d\n", sum_num);
return 0;
}
这几种编程语言在语法、格式等方面都各有特点,处理同样的任务却有着不同的实现方式呢。