《计算机导论课程报告.doc》由会员分享,可在线阅读,更多相关《计算机导论课程报告.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、计算机导论课程报告计算机导论课程报告课程报告要求每人提交一份打印的纸质课程报告。篇幅:8-10A4页。要求摘要和参考文献。鼓励正文中使用图表表述。要打印封面,报告的格式要规范。不允许相互抄袭和直接抄袭科技论文,要有自己的观点和想法。12月29日课堂上交报告。课程论文内容第一部分:围绕某个专题,从历史的演变,发展状态和未来趋势等展开讨论,论题要有新颖性、时代性和方向性。下面列举几个课程报告的方向供参考。人工智能/数据库/计算机网络/数据挖掘/密码/信息安全/集群/云计算软件项目管理/软件工程数据、信息和知识计算机程序设计语言计算机操作系统/体系结构1Web技术/某一个技术应用方法和技术神经网络/
2、网格/进化计算/计算机图像数据库/网络/网页设计/信息安全/病毒第二部分:根据个人情况,通过本科课程学习和自己对计算机学科的了解,对教学方法进行讨论,下面列举几个课程报告的方向供参考。对计算机学科/某一专业的认识/之我见计算机与社会计算机专业及大学四年的专业学习规划计算机专业与专业人生规划Xxx(研究方向、学科、课程等)学习方法计算机专业学习方法论之我见计算机专业教学计划之我见我的大学生活专业学习2面格式:佛山科学技术学院本科生课程考试考生姓名考生学号系、年级考试科目计算机导论考试日期2021年12月29日3封内容格式:题目摘要:关键词:正文:(四号、1.2倍行间距)参考文献:(按引用先后顺序
3、)扩展阅读:计算机导论课程报告计算机学院网络工程专业面向对象程序设计课程报告(2021/2021学年第二学期)学生姓名:学生班级:学生学号:授课教师:2021年6月27日内容简介本学期主要学习了计算机语言程序设计,包括汇编语言和高级程序语言设计(C语言和C+语言)的基本介绍和初级应用。其中第一章的语言介绍,旨在系统的了解计算机的构造原理和计算机语言的特点,以及通过对比其他语言了解计算机的逻辑思维范式,只是系统的介绍,让其对计算机语言有一个初步系统的了解。第二章汇编语言的介绍学习,是对以后的高级程序语言即C语言和C+语言做铺垫,学习目的旨在进一步了解计算机语言的逻辑特点和使用方法。熟悉计算机的思
4、维方式,为以后学习C语言和C+语言打基础。熟悉各种逻辑指令和操作方法,练习一些使用编写一些简单的逻辑指令,熟悉程序操作在计算机内的运行情况和方法。了解程序的基本原理。第三章的高级语言程序设计,是在原来的汇编语言基础上进一步去深入学习语言程序设计,C语言和C+语言属于高级语言程序设计,学习使用这两种语言需要多种知识的了解,本章的学习重点就是介绍这两种语言的具体操作流程和使用的逻辑指令,练习熟悉各种库语言的使用,在实际操作中加深对程序语言的认识,并对各种语句操作有系统的认识为以后进一步学习做基础。目录第一章计算机语言概述.5第一节.语言.51.11.语言(学习格式思维了解和掌握语言共同性).51.
5、12.程序设计(算法程序).51.13语言结构.5第二节.计算机硬件结构.51.21.冯诺伊曼结构.51.22CPU从内存取指令数据.61.23CPU的内部结构.6第二章汇编语言程序设计.7第一节汇编语言的特点及其操作.72.11汇编语言的特点.82.12.汇编语言简易的操作.8第二节.程序流程图画法.92.21.基本概念.92.22.常用算法流程图符号和功能.9第三节.中断机制(INTERRUPT软中断).102.31.int3代码:处理结束程序(间接寻址机制).102.32.int21代码.112.33.中断.112.35.子程序调用.122.35.扩展(与数据有关的寻址方式).13第三章
6、高级语言程序设计.14第一节C语言的概念与特点.143.11.C语言的概念.143.12.设计design.14第二节高级语言程序的初步认识.153.21.标识符.153.22库runtime(运行库).163.23内存的分配,数据的分配,和一些指令的初步认识.17扩展知识:格式化输入输出函数.20第三节循环结构.213.31.If结构.213.32Switch语句.213.33.For循环语句.223.34While语句.3.35Dowhile语句.233.36循环嵌套结构.24第四节指针.253.41.指针的概念.253.42.指针的类型.263.43.指针应用中常见的错误.27第五节函数
7、.283.51.函数的概念.283.52函数的描述.293.53.函数的申明与调用.293.54函数的传值方式.29第六节递归程序设计和调用.303.61递归程序的调用.30第七节.数组.313.71.数组的定义与初始化.313.72.多维数组.313.73.字符数组.32第一章计算机语言概述第一节.语言1.11.语言(学习格式思维了解和掌握语言共同性)1.自然语言:如汉语,法语,英语2.人工语言(1).世界语言(中间语言)(2).计算机语言高级数据库语言和C语言(低级)(与硬件相关,系统语言)为机器开发低级(OS)机器语言特点:移植性差可读性差复杂性高可维护性差3.C语言特点(1).可以做到
8、机器语言的功能(2).与机器语言的差别20%效率高1.12.程序设计(算法程序)设计:组织分解:将复杂,大,任务简单易完成易理解1.13语言结构1.字母表:机器语言01自然语言Az2.词汇表(由字母构成)3.句子(由词汇构成)4.段落(由句子构成)5.章节(由段落构成):节即高级语言中的函数,章包括字段,文件。第二节.计算机硬件结构1.21.冯诺伊曼结构现在计算机的结构是由冯诺伊曼在1945年提出的它明确规定新型计算机有5个组成部分:计算器CA;逻辑控制装置CC;存储器M;输入I;输出O。并详细描述了这5个部分的职能和相互关系。以后称此结构为冯诺伊曼式结构其图示如下1.22CPU从内存取指令数
9、据1.指令周期(1)fetch取指令(2)decoder解指令if(3)取数据(4)execute执行指令if(5)将结果存入内存1.23CPU的内部结构CPU内部结构包括:运算器,控制器,寄存器。关系如下图:输入输出IO1.Address地址总线Bus2.Date数据总线3.Control控制总线与Bus相连1.寄存器类型Ax加法寄存器存被加数运算结果BX基址寄存器内存的起始位置CX计数寄存器配合寻址DX数据寄存器存放中间数据2.段寄存器CS:代码段基址DS:数据段基址SS:stack栈节省内存3.标志寄存器:flag8位Zero0位Carry进位overflaws溢出第二章汇编语言程序设计
10、用机器语言编程的痛苦,人们进行了一种有益的改进:用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言。然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。第一节汇编语言的特点及其操作2.11汇编语言的特点(1).面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。(2).保持了机器语言的优点,具有直接和简捷的特点。2.12.汇编语
11、言简易的操作(1).打开debug程序:所在位置系统目录system32debug.exe,.打开开始运行debug(2).内存命令,使用“-?”了以查看可以使用的命令“-d+数字”进入相应内存地址“-r”显示相应内存当前的值“-e+数字”查看并修改当前内存值,改下个直接按空格,回车结束修改。(3).实际操作例如对01110100金额00011101进行加法操作:计算机的逻辑:先将两数与操作左移一位若有进位结束无进位求异或(结果与进位求异或)进位不为零则重复如图示:求以下两数和汇编语言020001110100MOVDL0200020100011101MOVAL0201A:MOVCLAL先与操作
12、AND00010100ANDALDL左移SHL00101000SHLAL1异或XOR01101001判断进位是否为0JC(end)AND00101000XCHGALDLSHL01010000XORALCLXOL01000001TESTDLFFAND01000000JZ(end)SHL10000000JMPAXOR01000001int3AND00000000SHL00000000进位全为0XOR10010001输出结果即91(4).移位和转位Shift简写SH移动命令SHL左移SHR右移Relate简写RO转位命令ROL左转ROR右转图示:Carry00010左移1Carry000100010
13、010右移100100(5).跳转Jump+目的地址JZ+目的,相等跳转JC有错位跳转JNC无错位跳转第二节.程序流程图画法2.21.基本概念流程图是一种用带线头的箭头将有限几个几何图形框连接起来的,其中框用来表示指令动作或指令顺序或条件判断,箭头用来说明算法走向。流程图通过形象化的图示,能够较好的表示算法中描述的各种结构,有了流程图程序设计可以更方便和严谨。2.22.常用算法流程图符号和功能表示开始或结束表示算法数据中数据的输入或输出表示为程序的表达语句,对数据进行处理表示对数据进行判断表示算法中处理流程的走向例如:根据以下画流程图1.从内出取两个二进制数2.求无进位和3.左移一位4.无进位
14、和与进位做二进制加法5.在求出进位后,判断进位是否为0,若为0结束,不为0则判断是否溢出。开始进位=0?从内存取两个二进左移1位求无进位和(XOR)CF=1?求进位(AND)将进位与无进位和放入内存中结束注释:算法要写明基本思路,用自然语言写流程,判断循环和结束条件第三节.中断机制(interrupt软中断)2.31.int3代码:处理结束程序(间接寻址机制)以16位机制为例,以32所得字节数来得到当前地址,然后再运行中断机制。038A07036280520410330320211结果“int3”运算32找到6号地址位置,并取出放入IP中。注释:中断处理机制程序在外存中,当放入内存中并不固定的
15、内存数。中断处理程序地址表:一般的0号中断在内存0300中,1号在0320中,2号在0380中,3号在03A0中。2.32.int21代码从键盘读一个字符到AL中:AH01从键盘读一串字符(以结尾):AH0A向显示器写一个字符到AL中:AH02向显示器写一串字符(以结尾):AH09其中AH表示内存高8位,用来放功能符号例:1)写一个字符到标准输出(显示器)MOVAH=2MOVDL=“41”A的ASCII码为41int212)读一个字符到显示器MOVAH=1int212.33.中断中断和子程序调用的共同机制,浮动代码器,可以访问浮动代码,并对浮动代码在内存的位置和内存中的位置移动重定位程序。2.
16、34.栈(堆栈stack)1.特点:后进先出LIFO先进后出FIFO2.保存环境push进栈(压栈)pushAX:表示将AX的数据压到堆栈中POP出栈(退栈)2.35.子程序调用1.取址永IP指针取指令,调整IP值到下一条指令地址2.执行指令:例如JMP105则会用105改变IP中原有值3.执行(call)pushIP用address修改IP值4.取指(RET)例:1.执行RETPOPIP则执行call的下一条指令,执MOVCLALCall200MOVAH1MOVAL5RET11611811A200子程序调用实验例题:显示一串字符内存设置:主程序:04004D,41,49,4E,main子程序
17、:041053,55,42sub420程序设计:(1).改写内存值D400显示内存0400E400改写内存4D,41,44,4E,3D,3E,24“24”是的ASCII码E41053,55,42,3D,3E,2442,41,43,4EBack行完116指令IP1182.取指(call200)调整IP,11AIP1.执行指令(call)pushIP,然后200IP2.取指(MOVAL5)3.RET取指RET执行指令POPIP(11AIP)然后取指(MOVAH1)E42042,41,43,24(2).主程序3.子程序A100在0200处写程序MOVAH,09MOVAH,09MOVDX,0410MO
18、VDX,0400Int21Int21RET返回CALL200调用子程序MOVAH,09MOVDX,0420Int21Int1(3).程序运行G=100从内存100处开始运行结果显示main=sub=back用t指令观察程序运行具体变化,观察每步运行。这种调用子程序和寻址方式在处理大量数据时效率高,速度快,修改起来方便。2.35.扩展(与数据有关的寻址方式)1.立即寻址2.寄存器寻址.有效地址四种成分:位移量,基址,变址,比例因子。.有效地址的计算方式:EA=基址+(变址比例因子)+位移量3.直接寻址适用于处理单个变量,要处理某个存放在储存器中的变量,可以用直接寻址方式把该变量先取到一寄存器中然
19、后再进一步处理4.寄存器间寻址方式操作数的有效地址只包含基址,寄存器内容或变址寄存器内容5.寄存器相对寻址方式(直接变址寻址方式)操作数的有效地址为基址寄存器或变址寄存器的内容和指令的位移量6.基址变址寻址方式操作数的有效地址是一个基址寄存器和变址寄存器内容组成。7.相对基址变址寻址方式操作数的有效地址是一个基址寄存器和变址寄存器内容和指令中制定的位移量组成8.比例寻址方式操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上位移量之和,所以有效地址有三部分组成。9.基址比例变址寻址方式操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上基址寄
20、存器的内容。所以有效地址有三部分组成。10.相对基址比例变址寻址方式操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上基址寄存器的内容再加上位移量的和。所以有效地址有四部分组成第三章高级语言程序设计第一节C语言的概念与特点3.11.C语言的概念C是一种结构化的程序设计语言,它简明易懂功能强大,可使程序员不必关注程序在何种机器上运行,而致力于问题本身处理。C语言集高级语言与低级语言功能于一体,适合于各种硬件平台,既可用于各种软件的开发,也适用于应用软件的开发。C语言具有丰富的运算符和数据类型,便于实现各种复杂的类型的数据结构;它可以直接访问内存的物理地址,直接对硬件的
21、底层操作,能实现汇编语言的大部分功能,因此,也有人把C语言称为中级语言;C语言还可以进行位的运算,实现对数据的“位”操作。另外,C语言还具有效率高,可移植性强等特点。3.12.设计design1.选择(methods方法,techniques技术,tools工具)来满足需求(requirements),同时满足正确,成本(硬件,软件,人力资源)和效率。高级语言如C语言有标识符,地址包括指令地址,数据地址和函数地址例如:#include#include表示宏(marro)CharszHello=!Hello;Intmain()第一条命令指令从这里开始Cout(2).用“_”,“09”,“az”,
22、“AZ”是规范标识符(3).C语言或C+语言中大小写字母表示不同标识符(4).开头小写字母要表明内存中所存数据类型例如:chuserinput:表明接收用户输入n(整数数字)coefficient:存的是整数db/dw:小数szstandNO:符号(5).定义布尔值Is(开头)NUM:是一个数字吗?(6).定义常数Const:doublePI=3.14const类型:(字符串,整数,小数等)全大写标识符=最后值(7).标号是有多个字母构成其中首字母大写,其他小写(8).单词过长时可以缩写字符(符合惯例)3.标识符的基本数据类型(1).包括数据类型和数据含义Char字符型,1个字节int整数型,
23、4个字节double浮点型,8个字节bool布尔型,1个字节shortint,2个字节例如:C语言中charszstudNo10(9位)大于9位就会溢出C+中charszstudNo:#include3.22库runtime(运行库)1.C库与C+库的比较C库:加后缀.h如:#include#include#include#includeC+库类库不加.h如#include,#include等Usingnamespacestd使用标准C+库例如程序:#include使用标准C库/#include/Usingnamespacestd;使用标准C+库Intmain()Charch=a;单引号表示字
24、符长度为1/双引号表示字符长度为2Intnum1=8;ShortIntnum2=5;Doubledw=0.5;Boolb=true;Cout00000005&num0200;Num=5;直接寻址*( 取地址中的值2.C语言中有printf()表示格式化输出函数,其包含在这个库中printf(“格式”)标识符列表如果“:”以整数输出如果“f”以小数输出如果“x”以十六进制输出如果“c”以字符输出L表示显示长度,D表示小数点位数,f以什么格式输出例如:%8.2f8:长度为8,2:小数点第二位,f:以小数输出“+”表示右对齐“-”表示左对齐3.标识符内存分配(1).标识符在某函数内部从栈上分配,一旦
25、return退出,函数从内存空间释放。(2).标识符定义在所有程序之外,内存从栈上分配,只有从程序退出(程序结束)相应空间程序才释放。(3).虽然定义在某函数内部,但若是用static定义(静态)则为全局的内存分配的规矩从偶数开始,这样做只需一个周期即可。例如:Char:a61:420e741Shortint:10a:420e762Int:55:420e784char:a61:420e741Int:55:420e784Shortint:10a:420e764.If(条件判别)逻辑表达式Printf格式化输入输出Cout使用scanf()注意1).要注意数值型数据和字符型数据的取值特点,如果要同
26、时输入这两种类型的数据,可采取先输入字符数据后输入数值型数据,以减少错误的发生。2).为减少错误的发生,建议在scanf()语句中不要加入可见字符,如果想知道应该输入什么数据,可以再scanf()语句前面加上一个提示语句。*扩展知识:格式化输入输出函数1.格式化输出函数(1).作用:控制字符串的指定格式(2).格式:Printf(“控制字符串”,输出项列表)(3).输出项列表:常量,变量,表达式。输出多项时,各项要用逗号隔开。控制字符串是由格式说明和普通字符组成,只有普通字符串时不需要输出列表(4).格式说明格式%;(5).输出格式字符d十进制整数e科学计数法o八进制输出hd十进制输出短数型l
27、d十进制输出长数型u无符号x十六进制f浮点小数c字符型s字符串2.格式化输入函数scanf()(1).格式:Scanf(“控制字符串”,输入项目列表);规定数据输入格式Scanf()中输入列表中变量地址前应加操作符“&”变量类型与中格式说明一致(2).格式说明格式%1)字符宽度如scanf(“%3d”,&a);数据宽度不能超过3个字符2)字符头“*”*按规定格式输出但不赋变量,作用跳过相应的数据。例:intx=0j=0z=Scanf(“%d%*d%d”, 若输入112233结果x=11y=33z未赋值*第三节循环结构3.31.If结构if语句是最简单的分支结构,一般形式为:If()例如ifel
28、se语句:if()else如果真执行语句A若否执行语句BIf语句的嵌套If()Elseif()Else任意嵌套在ifelse结构中任意执行程序中插入if结构或ifelse结构3.32Switch语句1.一般形式为:switch()Case:语句序列1;Case:语句序列2;Case:语句序列nDefault:语句序列(n+1);2.常量表达式如:整型字符型枚举型流程图:由于switch语句形式不具有通常意义上的“分支”根据switch语句的语法规则:程序在满足第i个条件后,从语句序列i开始执行,直到为止3.33.For循环语句1.for语句其循环次数是通过一个循环变量来控制的故把这种循环称为计
29、数循环包含3个重要组成部分(1).初始化循环控制变量(2).测试循环条件(3).变更循环控制变量的值2.格式:其一般形式为For(;)3.功能:如下4个步骤(1).计算对循环变量进行初始化(2).判断若“假”退出,若“真”执行循环(3).计算更新循环变量的值(4).转第二步For语句流程图While语句的流程图3.34While语句1.格式:一般形式while()构成循环体语句用来更新计算变量的值3.35Dowhile语句1.一般形式:DoWhile()2.语法功能(1).执行(2).计算条件表达式,若值为真则执行步骤1若为假则退出循环执行下一条语句。3.36循环嵌套结构1.概念:循环结构的嵌
30、套,指的是在某一循环结构的语句中,包含有另一个循环结构,理论上,循环嵌套的深度不受限制,但实际中不提倡使用嵌套层次太多的循环结构。2.使用嵌套的结构:要注意嵌套的层次,不能交叉,嵌套的内外层循环不能使用同名的循环变量,并列结构的内外层循环允许使用同名的循环变量。举例:九九乘法表:#includevoidmain()inti,j;for(i=1;i1*5=52*5=103*5=154*5=205*5=251*6=62*6=123*6=184*6=245*6=306*6=361*2=72*7=143*7=214*7=285*7=356*7=427*7=491*8=82*8=163*8=244*8=325*8=406*8=487*8=568*8=641*9=92*9=183*9=274*9=365*9=456*9=547*9=638*9=729*9=81第四节指针3.41.指针的概念在C语言中,指针被用来表示内存单元的地址。指针变量的值就是某个