还剩28页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
313.
1.
11.语言(学习格式思维了解和掌握语言共同性)
1.自然语言如汉语,法语,英语
2.人工语言
(1).世界语言(中间语言)
(2).计算机语言
①高级数据库语言和C语言(低级)(与硬件相关,系统语言)为机器开发
②低级(OS)机器语言特点移植性差可读性差复杂性高可维护性差
3.C语言特点
(1).可以做到机器语言的功能
(2).与机器语言的差别20%效率高
1.
12.程序设计(算法程序)设计组织分解将复杂,大,任务简单易完成易理解
1.
13.语言结构
1.字母表机器语言01自然语言Az
2.词汇表(由字母构成)
3.句子(由词汇构成)
4.段落(由句子构成)
5.章节(由段落构成)节即高级语言中的函数,章包括字段,文件第二节.计算机硬件结构
1.
21.冯诺伊曼结构现在计算机的结构是由冯诺伊曼在1945年提出的它明确规定新型计算机有5个组成部分
①计算器CA;
②逻辑控制装置CC;
③存储器M;
④输入I;
⑤输出0并详细描述了这5个部分的职能和相互关系以后称此结构为冯诺伊曼式结构其图示如下
1.
22.CPU从内存取指令数据
1.指令周期1fetch取指令2decoder解指令if3取数据4execute执行指令if5将结果存入内存
1.
23.CPU的内部结构CPU内部结构包括运算器,控制器,寄存器关系如下图输入输出
101.Address地址总线Bus
2.Date数据总线
3.Control控制总线与Bus相连
1.寄存器类型Ax加法寄存器存被加数运算结果BX基址寄存器内存的起始位置CX计数寄存器配合寻址DX数据寄存器存放中间数据
2.段寄存器CS代码段基址DS数据段基址SSstack栈节省内存
3.标志寄存器flag8位ZeroO位Carry进位overflaws溢出第二章.汇编语言程序设计用机器语言编程的痛苦,人们进行了一种有益的改进用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,“MOV”代表数据传递等等,这样一来,人们很容易读懂并理解程序在干什么,纠错及维护都变得方便了,这种程序设计语言就称为汇编语言,即第二代计算机语言然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序第一节.汇编语言的特点及其操作
2.H.汇编语言的特点
(1).面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的
(2).保持了机器语言的优点,具有直接和简捷的特点
2.
12.汇编语言简易的操作
(1).打开debug程序所在位置系统目录Wsystem32\\debug.exe,.打开开始运行debug
(2).内存命令,使用“-?”了以查看可以使用的命令“-d+数字”进入相应内存地址“-r”显示相应内存当前的值“-e+数字”查看并修改当前内存值,改下个直接按空格,回车结束修改
(3).实际操作例如对01110100金额00011101进行加法操作:计算机的逻辑先将两数与操作左移一位若有进位结束无进位求异或(结果与进位求异或)进位不为零则重复如图示求以下两数和汇编语言
[0200]01110100M0VDL
[0200]
[0201]00011101M0VAL
[0201]A MOVCLAL先与操作AND00010100ANDALDL左移SHL00101000SHLAL1异或X0R01101001判断进位是否为OJCendANDOO101000XCHGALDLSHL01010000X0RALCLX0L01000001TESTDLFFAND01000000JZendSHL10000000JMPAX0R01000001int3AND00000000SHLOOOOOOOO进位全为0X0R10010001输出结果即91
(4).移位和转位Shift简写SH移动命令SHL左移SHR右移Relate简写R0转位命令ROL左转ROR右转图不Carry00010左移1Carry000100010010右移100100
(5).跳转Jump+目的地址JZ+目的,相等跳转JC有错位跳转JNC无错位跳转第二节.程序流程图画法
2.
21.基本概念流程图是一种用带线头的箭头将有限几个几何图形框连接起来的,其中框用来表示指令动作或指令顺序或条件判断,箭头用来说明算法走向流程图通过形象化的图示,能够较好的表示算法中描述的各种结构,有了流程图程序设计可以更方便和严谨
2.
22.常用算法流程图符号和功能表示开始或结束表示算法数据中数据的输入或输出表示为程序的表达语句,对数据进行处理表示对数据进行判断表示算法中处理流程的走向例如根据以下画流程图
1.从内出取两个二进制数
2.求无进位和
3.左移一位
4.无进位和与进位做二进制加法
5.在求出进位后,判断进位是否为0,若为0结束,不为0则判断是否溢出开始进位二0从内存取两个二进左移1位求无进位和(X0R)CF=1求进位(AND)将进位与无进位和放入内存中结束注释算法要写明基本思路,用自然语言写流程,判断循环和结束条件第三节.中断机制(interrupt软中断)
6.
31.int3代码处理结束程序(间接寻址机制)以16位机制为例,以3X2所得字节数来得到当前地址,然后再运行中断机制038A070362805204103303201*1结果“int3”运算3X2找到6号地址位置,并取出放入IP中注释中断处理机制程序在外存中,当放入内存中并不固定的内存数中断处理程序地址表一般的0号中断在内存0300中,1号在0320中,2号在0380中,3号在03Ao中
2.
32.int21代码从键盘读一个字符到AL中AH01从键盘读一串字符(以结尾)AH0A向显示器写一个字符到AL中AH02向显示器写一串字符(以结尾)AH09其中AH表示内存高8位,用来放功能符号例1)写一个字符到标准输出(显示器)M0VAH=2M0VDL=41”A的ASCII码为41int212)读一个字符到显示器MOVAH=lint
212.
33.中断中断和子程序调用的共同机制,浮动代码器,可以访问浮动代码,并对浮动代码在内存的位置和内存中的位置移动重定位程序
2.
34.栈(堆栈stack)
1.特点后进先出LIFO先进后出FIF
02.保存环境push进栈(压栈)pushAX表示将AX的数据压到堆栈中POP出栈(退栈)
2.
35.子程序调用
2.取址永IP指针取指令,调整IP值到下一条指令地址
2.执行指令例如JMP105则会用105改变IP中原有值
3.执行(call)pushIP用address修改IP值
4.取指(RET)例
1.执行RETPOPIP则执行call的下一条指令,执M0VCLALCall200M0VAH1MOVAL5RET11611811A200子程序调用实验例题显示一串字符内存设置主程序04004D,41,49,4E,main子程序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指令IP
1183.取指call200调整IP,11AIP
1.执行指令call pushIP,然后200IP
2.取指M0VAL
53.RET取指RET执行指令POPIP11AIP然后取指M0VAH1E42042,41,43,
242.主程序
3.子程序A100在0200处写程序M0VAH,09M0VAH,09M0VDX,0410M0VDX,0400Int21Int21RET返回CALL200调用子程序MOVAH,09M0VDX,0420Int21Intl
3.程序运行G二100从内存100处开始运行结果显示main二》sub二》back用t指令观察程序运行具体变化,观察每步运行这种调用子程序和寻址方式在处理大量数据时效率高,速度快,修改起来方便
2.
35.扩展与数据有关的寻址方式
1.立即寻址
2.寄存器寻址.有效地址四种成分位移量,基址,变址,比例因子
1.有效地址的计算方式EA=基址+变址X比例因子+位移量
23.直接寻址适用于处理单个变量,要处理某个存放在储存器中的变量,可以用直接寻址方式把该变量先取到一寄存器中然后再进一步处理
4.寄存器间寻址方式操作数的有效地址只包含基址,寄存器内容或变址寄存器内容
5.寄存器相对寻址方式(直接变址寻址方式)操作数的有效地址为基址寄存器或变址寄存器的内容和指令的位移量
6.基址变址寻址方式操作数的有效地址是一个基址寄存器和变址寄存器内容组成
7.相对基址变址寻址方式操作数的有效地址是一个基址寄存器和变址寄存器内容和指令中制定的位移量组成
8.比例寻址方式操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上位移量之和,所以有效地址有三部分组成
9.基址比例变址寻址方式操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上基址寄存器的内容所以有效地址有三部分组成
10.相对基址比例变址寻址方式操作数的有效寻址地址是一个变址寄存器和变址寄存器内容和指令中指定比例因子再加上基址寄存器的内容再加上位移量的和所以有效地址有四部分组成第三章.高级语言程序设计第一节.C语言的概念与特点
3.
11.C语言的概念C是一种结构化的程序设计语言,它简明易懂功能强大,可使程序员不必关注程序在何种机器上运行,而致力于问题本身处理C语言集高级语言与低级语言功能于一体,适合于各种硬件平台,既可用于各种软件的开发,也适用于应用软件的开发C语言具有丰富的运算符和数据类型,便于实现各种复杂的类型的数据结构;它可以直接访问内存的物理地址,直接对硬件的底层操作,能实现汇编语言的大部分功能,因此,也有人把C语言称为中级语言;C语言还可以进行位的运算,实现对数据的“位”操作另外,C语言还具有效率高,可移植性强等特点
3.
12.设计designl.选择(methods方法,techniques技术,tools工具)来满足需求(requirements),同时满足正确,成本(硬件,软件,人力资源)和效率高级语言如C语言有标识符,地址包括指令地址,数据地址和函数地址例如#include#include表示宏(marro)CharszHello[]=!Hello;IntmainO第一条命令指令从这里开始{Cout
(2).用“—”,09”,“az”,“AZ”是规范标识符
(3).C语言或C++语言中大小写字母表示不同标识符
(4).开头小写字母要表明内存中所存数据类型例如chuserinput表明接收用户输入n(整数数字)coefficient存的是整数db/dw小数szstandNO符号
(5).定义布尔值Is(开头)NUM是一个数字吗?
(6).定义常数ConstdoublePI=
3.14const类型(字符串,整数,小数等)全大写标识符二最后值
(7).标号是有多个字母构成其中首字母大写,其他小写
(8).单词过长时可以缩写字符(符合惯例)
3.标识符的基本数据类型
(1).包括数据类型和数据含义Char字符型,1个字节int整数型,4个字节double浮点型,8个字节bool布尔型,1个字节shortint,2个字节例如C语言中charszstudNo
[10](9位)大于9位就会溢出C++中charszstudNo#include
3.
22.库runtime(运行库)LC库与C++库的比较C库力口后缀.h如#include#include#include#includeC++库类库不加.h如Winclude,^include等Usingnamespacestd使用标准C++库例如程序ftinclude使用标准C库〃#include〃Usingnaniespacestd;使用标准C++库IntmainO{Charch=a;单引号表示字符长度为1/双引号表示字符长度为2Intnuml=8;Shortlntnum2=5;Doubledw=
0.5;Boolb=true;Cout00000005num0200;Num=5;直接寻址*()num;取地址中的值
2.C语言中有printf()表示格式化输出函数,其包含在这个库中printf(“格式”)标识符列表对计算机学科/某一专业的认识/之我见计算机与社会计算机专业及大学四年的专业学习规划计算机专业与专业人生规划Xxx(研究方向、学科、课程等)学习方法计算机专业学习方法论之我见计算机专业教学计划之我见我的大学生活专业学习2面格式佛山科学技术学院本科生课程考试考生姓名考生学号系、年级考试科目计算机导论考试日期201*年12月29日3封内容格式题目摘要关键词正文(四号、
8.2f8长度为8,2小数点第二位,f以小数输出“+”表不右对齐表不左对齐
3.标识符内存分配
1.标识符在某函数内部从栈上分配,一旦return退出,函数从内存空间释放
2.标识符定义在所有程序之外,内存从栈上分配,只有从程序退出程序结束相应空间程序才释放
3.虽然定义在某函数内部,但若是用static定义静态则为全局的内存分配的规矩从偶数开始,这样做只需一个周期即可例如Chara61420e741Shortint10a420e762Int55420e784char a61420e741Int55420e784Shortint10a420e
764.If条件判别逻辑表达式Printf格式化输入输出Cout使用scanf注意
1.要注意数值型数据和字符型数据的取值特点,如果要同时输入这两种类型的数据,可采取先输入字符数据后输入数值型数据,以减少错误的发生
2.为减少错误的发生,建议在scanf语句中不要加入可见字符,如果想知道应该输入什么数据,可以再scanf语句前面加上一个提示语句x^x^x^LxX^X^X^xx%^x x^x%^xx^x****扩展知识格式化输入输出函数
1.格式化输出函数
1.作用控制字符串的指定格式
2.格式Printf控制字符串”,输出项列表
3.输出项列表常量,变量,表达式输出多项时,各项要用逗号隔开控制字符串是由格式说明和普通字符组成,只有普通字符串时不需要输出列表
4.格式说明格式%口;
5.输出格式字符d十进制整数e科学计数法八进制输出hd十进制输出短数型Id十进制输出长数型U无符号X十六进制f浮点小数C字符型S字符串
2..格式化输入函数scanf
1.格式Scanf控制字符串”,输入项目列表;规定数据输入格式Scanf中输入列表中变量地址前应加操作符“”变量类型与中格式说明一致
2.格式说明格式%口1字符宽度如scanf“%3d”,a;数据宽度不能超过3个字符2字符头“*”*按规定格式输出但不赋变量,作用跳过相应的数据例intx二Oj二Oz二Scanf%d%*d%d”,xyz;若输入112233结果x=lly=33z未赋值^Xx第三节.循环结构
3.
31.If结构if语句是最简单的分支结构,一般形式为If例如ifelse语句ifelse如果真执行语句A若否执行语句BIf语句的嵌套IfElseif Else任意嵌套在ifelse结构中任意执行程序中插入if结构或ifelse结构
3.
32.Switch语句
1.一般形式为switch Case语句序列1;Case语句序列2;Case语句序列nDefault语句序列n+1;}
2.常量表达式如整型字符型枚举型流程图由于switch语句形式不具有通常意义上的“分支”根据switch语句的语法规则程序在满足第i个条件后,从语句序列i开始执行,直到为止
3.
33.For循环语句
1.for语句其循环次数是通过一个循环变量来控制的故把这种循环称为计数循环包含3个重要组成部分
11.初始化循环控制变量
2.测试循环条件
3.变更循环控制变量的值
2.格式其一般形式为For;;{}
3.功能如下4个步骤
1.计算对循环变量进行初始化
2.判断若“假”退出,若“真”执行循环
3.计算更新循环变量的值
4.转第二步For语句流程图While语句的流程图
334.While语句
1.格式:一般形式while{}构成循环体语句用来更新计算变量的值
435.Dowhile语句
1.一般形式:DoWhile}
2.语法功能
1.执行
2.计算条件表达式,若值为真则执行步骤1若为假则退出循环执行下一条语句
3.
36.循环嵌套结构
1.概念循环结构的嵌套,指的是在某一循环结构的语句中,包含有另一个循环结构,理论上,循环嵌套的深度不受限制,但实际中不提倡使用嵌套层次太多的循环结构
2.使用嵌套的结构要注意嵌套的层次,不能交叉,嵌套的内外层循环不能使用同名的循环变量,并列结构的内外层循环允许使用同名的循环变量举例九九乘法表ftincludevoidmain{inti,j;fori=l;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语言中,指针被用来表示内存单元的地址指针变量的值就是某个内存单元的地址或称为某内存单元的指针指针的引入为系统存取数据提供了一种“间接访问”方式所谓间接访问,是先访问存放变量地址的存储单元,得到该变量的地址,再对变量内容进行访问指针变量是一种特殊变量系统为指针变量分配一块连续存储单元不是供其存储数据,而是存储内存地址因此,指针变量是存储内存地址的变量例如假设有intI=-5;Charch=,A;Floatx=
7.34;则变量i,ch,x占用的内存可由下图表示整数型变量i占2单元,字符型变量ch占一个单元;二浮点型变量x占4个单元
3.
42.指针的类型
1.指向简单变量的指针指针所指的数据类可以是简单的数据类型例
1.int*p,i;p=i;意思是指针变量指向整型变量i.char*p,a;p=a;意思是指针变量指向字符型变量a
3.int*p,a
[10];p=a;意思是指针变量指向数组a
2.指向数组的指针指针所指的数组既可以是一维数组,也可以是多维数组例main{int
[4]={2,4,6,8};int*p;for p=a;pq=p;printf,%d\\n,,**q+l+1;}分析:指针数组p的各个指针变量指向数组a的各行首地址,q指向指针数组p的首地址,*q+l等同p[l],如此,**q+l+l便等同*p[l]+l也就是a[l][l],因此程序输出7O
5、指向函数的指针指针变量指向函数的首地址,然后通过该指针变量调用该函数定义如int*p o例intmaxinta,intb{returnaba b;}main{intmaxint,int;int*p;inta,b;p=max;scanfn%d,%dn,a,b;printfmax=%d\\nK,*pa,b;分析int*p表示定义了一个指向函数的指针变量,函数名max代表了函数的入口地址,执行p二max后,p指向了函数max,*p a,b便是通过p调用函数max
6、指向文件的指针C语言对文件的操作并不是直接通过文件名进行的,而是根据文件名生成一个文件指针,通过该指针来对文件进行操作.定义如:FILE*fP;fp为文件指针,此时fp不指向任何文件
3.
43.指针应用中常见的错误
1.把数据赋给指针变量指针在使用前必须进行初始化,赋予指针的值必须是地址例main{inti=6,*p;p=6;printf“*p=%d\\n,*p;}正确语句p=i;是一个取变量地址的运算符
2.指针常量运算错误程序中常量指针是不能被修改的典型有数组名指针常量和指向字符串常量的指针例main{inta
[5]={l,2,3,4,5},*p;p=a;printf u%d\\nn,*++a;}正确语句printf%d\\n,*++p;
3、指针赋值类型不一致例main{int*p,a
[3]
[3]={{1,2,3},{4,5,6},{7,8,9}};p=a;printfu%d\\n,,*p;}正确语句:p=a[O];或p=a[O]
[0];如果一定把a赋值给p,必须先将a转换成整型指针类型,如p=int*a;特别是将多维数组赋值给指针变量时应注意类型匹配第五节.函数
3.
51.函数的概念
1.函数概念在C语言中函数可分为两大类,一类是系统定义的标准函数,又称库函数,其函数申明一般是放在系统的include目录下以.h为后缀的头文件中,如在程序中要用到某个库函数,必须在调用该函数之前用#门01116命令将函数库的信息包含到本程序中另外一类是自定义的函数,这类函数是根据问题的特殊要求而设计的,自定义的函数为程序的模块化提供了有效的技术支撑,有利于函数的维护和扩充
2.函数定义函数定义一般形式为[存储类型符][返回值类型符]函数名{函数语句体}*说明
1.[存储类型符]是指函数作用范围,有两种形式static和extern.
2.[返回值类型符]是指函数体语句执行完后,函数返回类型,如int,float,char等,若函数无返回值则用空类型void来定义函数返回值,默认值为int
3.52函数的描述
1.接口函数的描述
2.函数名:如scanf Oprintfstand等
3.函数功能:一些语句的集合,这些语句组合在一起完成一项操作,返回所需要的结果
4.输入参数例如char*szl第一个函数的首地址char*sz2第二个函数的地址
5.输出参数传递结果
6.返回值“int”返回什么位置
7.函数签名参数个数和类型只要个数和类型又不相同的,函数就不同其中函数名相同但里面的参数个数和模型不同称为函数的重载
3.
53.函数的申明与调用
1.函数的申明函数申明语句的一般形式为【储存类型符】【返回值类型符】函数名【形参说明表】;
2.函数的调用一个函数写好后,若不通过函数调用,是不会发挥任何作用的,函数调用是通过函数调用语句来实现的,分为以下两种形式
1.函数无返回值的函数调用语句
2.函数有返回值的函数调用语句
3.54函数的传值方式
1.调用方式变量名二函数名;在调用函数时,若函数是有参数的,则必须采用实参表将每一个实参的值相应地传递给每一个形参变量,形参变量在接收实参表传过来的值时,会在内存临时开辟的新空间,以保存形参变量的值,当函数执行完毕时,这些临时开辟的内存空间会被释放,并且形参的值在函数中无论是否发生变化,都不会影响实参变量的值的变化,这就是函数的传值方式
2.传值方式自定义函数在程序中的使用顺序有以下两种形式
1.先进行函数申明,再进行函数调用,函数定义放在main函数后面函数申明应放在函数调用的前面,具体位置与编译环境有关
2.函数定义放在main函数的前面,再进行函数调用在这种情况下,可以不进行函数申明第六节.递归程序设计和调用
3.61递归程序的调用
1.直接递归调用直接递归调用是指在函数定义的语句中,存在着调用本函数的语
2.间接递归调用间接递归调用是指在不同函数定义中,存在着互相调用函数语句的情况递归有几个部分组成
1.结束条件最小规模
2.递归条件即n与n-1的关系例如用递归求阶乘ttincludelnt jcint;intMain{intn=l;coutpleaseenterainteger\\n;cinn;coutlntj=l{ifn==l{j=l;}Else{j=jcn-l*n;}Returnj;}}运行结果为pleaseenterainteger输入5结果5!=120第七节.数组
3.
71.数组的定义与初始化
1.一维数组的定义为了与简单变量区别开来,数组利用其下标来区分不同变量,一维数组的定义格式[存储类型][数组大小];如inta
[6];数组名为a,它有6个元素,分别为a
[0].a[l].a
[2]、a
[3],a
[4],a
[5],每个元素都代表一个整型变量数组在内存中式按顺序连续存放着,占用的内存大小为,每一个元素占用内存大小的和
2.一维数组的初始化C语言允许在定义数组的同时,可以对数组中的元素赋初始值,称为数组的初始化其格式为[statick数组名□={};
3.
51.二维数组的概念二维数组的应用很广,如平面上的一组电的集合就可用二维数组表式,每个点代表着X轴的横坐标和代表着Y轴的纵坐标来表式,应此平面上的电可用二维数组表式
2.二维数组的定义二维数组的定义格式为数组名[行元素个数][列元素个数];如charword
[3]
[2];/*数组word,具有3行2列,每一个数组元素的值都是字符型数据*/intnum
[2]
[4];/*数组num,具有2行4歹U,每一个数组元素的值都是整型数据*/floatterm
[4]
[3]/*数组term,具有4行3列,每一个数组元素的值都是浮点型数据*/
3.多维数组的定义多维数组的定义格式为数组名[元素1的个数][元素2的个数][元素3的个数][元素N的个数];
4.二维数组及多维数组的初始化同一维数组一样,可以在定义的同时对数组元素赋以初值对二维数组及多维数组的元素赋初始值时,采用按行优先的顺序对数组元素赋值赋值时可以采用对元素全部赋值和部分赋值两种方式
3.
73.字符数组
1.字符串的输入
1.向数组元素name
[0]输入一个字符,其概念与简单的字符变量的输入相同,既scanf u%c,,name
[0];
2.向数组输入整个字符串scanf%s”,name;或scanf“媚”,name;
3.字符串的输出用printf函数可输出一个或几个数组元素,也可以将存放在字符数组中的字符输出,例如printf%c,%s”,name
[0],name;先输出一个字符数组元素的值name
[0],然后输出name数组中整个字符串如果name数组中的元素值如图所示,则printf函数输出为v,veryname
[0]name
[1]name
[2]name
[3]name
[4]name
[5]name
[6]na me
[7]name
[8]veryhot\\0这是由于在用printf%s,name;来输出字符串时,会把空格符也当成字符串的结束符另外C语言提供了一个输出函数puts,用它可输出字符串的空格
1.
51.
51.
51.
51.
72.
82.
92.
92.
102.
102.
112.
122.
143.
143.
153.
153.
163.
213.
213.
3.
233.
253.
253.
263.
293.
313.
313.
个人认证
优秀文档
获得点赞 0