计算机软件技术基础(实践)课程设计报告书.docx
- 文档编号:525916
- 上传时间:2023-04-29
- 格式:DOCX
- 页数:35
- 大小:53.06KB
计算机软件技术基础(实践)课程设计报告书.docx
《计算机软件技术基础(实践)课程设计报告书.docx》由会员分享,可在线阅读,更多相关《计算机软件技术基础(实践)课程设计报告书.docx(35页珍藏版)》请在冰点文库上搜索。
辽宁省高等教育自学考试 软件技术(应用本科)专业
课程设计报告书
课程名称计算机软件技术基础(实践)
助学单位
姓 名
准考证号
成 绩
二O一二 年四月
35
实验1 操作系统实验
1Linux系统的常用基本操作
实验目的
(1)掌握Linux系统的常用基本操作;
(2)了解Linux系统及其操作。
实验要求
(1)用户的登录、注销与关机;
(2)Shell的使用;
实验步骤
(1)启动linux操作系统。
(2)登录:
linuxlogin:
作为系统管理员,第一次进入系统当然要以超级用户的身份进入,和NT中Administrators身份对应的linux帐号是root;Password:
按照你心里想的输入密码,然后直接回车,OK,成功登录,系统提示:
[root@linux/root]#
(3)用户退出登录有两种方法,一种是exit命令——这个命令一般的系统都会提供,一种
是logout——有些系统如果提供了exit就不再提供这个命令了,例如redhat7.0。
执行的结果是回到上次转换身份前的用户状态。
例如,你先用root登录,再su为bluewind,然后你执行exit,就回到了root身份,再执行exit,连root也退出了,回到登录提示符的状态
(4)在linux系统里,可以使用多种不同类型的shell。
一般来说,在/etc目录下会有个
shells文件,该文件是目前系统中可用的shell类型列表。
一般包括如下几行:
/bin/bash
/bin/sh
/bin/ash
/bin/bsh
/bin/tcsh
/bin/csh
而最常用的主要是Bourneshell(sh),Cshell(csh)和BourneAgainShell(bash)三种。
sh是UNIX最初使用的shell,并且在每一种UNIX上都可以使用。
它在编程方面非常优秀,但和用户的交互却比较逊。
csh更多的考虑了界面的友好性,但普遍的认为CShell的编程接口不如sh。
由于它的编程语法和c比较相近,所以它还是被许多C程序员所使用。
bash是sh的扩展,并与sh完全兼容,并在吸取c和konshell的优点的基础上对sh增加了和增强了很多特性。
它是大多数linux系统中默认的shell。
下面我们将主要介绍bash的简单使用。
2Linux系统的文件和权限管理
实验目的
(1)Linux文件权限管理;
(2)Linux文件权限管理及方法。
实验要求
(1)了解chmod用于改变文件;
(2)了解chmod的访问权限;
实验步骤
chmod用于改变文件或目录的访问权限。
用户用它控制文件或目录的访问权限。
该命令有两种用法。
一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
1.文字设定法
语法:
chmod[who][+|-|=][mode]文件名命令中各选项的含义为:
操作对象who可是下述字母中的任一个或者它们的组合:
u表示“用户(user)”,即文件或目录的所有者。
g表示“同组(group)用户”,即与文件属主有相同组ID的所有用户。
o表示“其他(others)用户”。
a表示“所有(all)用户”。
它是系统默认值。
操作符号可以是:
+添加某个权限。
-取消某个权限。
=赋予给定权限并取消其他所有权限(如果有的话)。
设置mode所表示的权限可用下述字母的任意组合:
r可读。
w可写。
x可执行。
X只有目标文件对某些用户是可执行的或该目标文件是目录时才追加x属性。
s在文件执行时把进程的属主或组ID置为该文件的文件属主。
方式“u+s”设置文件的用户ID位,“g+s”设置组ID位。
t保存程序的文本到交换设备上。
u与文件属主拥有一样的权限。
g与和文件属主同组的用户拥有一样的权限。
o与其他用户拥有一样的权限。
文件名:
以空格分开的要改变权限的文件列表,支持通配符。
在一个命令行中可给出多个权限方式,其间用逗号隔开。
例如:
chmodg+r,o+rexample%使同组和其他用户对文件example有读权限。
2.数字设定法
我们必须首先了解用数字表示的属性的含义:
0表示没有权限,1表示可执行权限,
2表示可写权限,4表示可读权限,然后将其相加。
所以数字属性的格式应为3个从0
到7的八进制数,其顺序是(u)(g)(o)。
例如,如果想让某个文件的属主有“读/写”二种权限,需要把4(可读)+2(可写)
=6(读/写)。
数字设定法的一般形式为:
语法:
chmod[mode]文件名
指令实例:
chmoda+xsort
%即设定文件sort的属性为:
文件属主(u)增加执行权限
与文件属主同组用户(g)增加执行权限其他用户(o)增加执行权限
chmodug+w,o-xtextIT,
%即设定文件text的属性为:
文件属主(u)增加写权限
与文件属主同组用户(g)增加写权限其他用户(o)删除执行权限
chmodu+sa.out0
%假设执行chmod后a.out的权限为(可以用ls–la.out命令来看):
–rws——x——x1ininusers7192Nov414:
22a.out
并且这个执行文件要用到一个文本文件shiyan1.c,其文件存取权限为“–rw——”,即该文件只有其属主具有读写权限。
当其他用户执行a.out这个程序时,他的身份因这个程序暂时变成inin(由于chmod)
命令中使用了s选项),所以他就能够读取shiyan1.c这个文件(虽然这个文件被设定为其他人不具备任何权限),这就是s的功能。
因此,在整个系统中特别是root本身,最好不要过多的设置这种类型的文件(除非必要)这样可以保障系统的安全,避免因为某些程序的bug而使系统遭到入侵。
chmoda–xmm.txtIT,
chmod–xmm.txtchmodugo–xmm.txt
%以上这三个命令都是将文件mm.txt的执行权限删除,它设定的对象为所有使用者。
$chmod644mm.txt
%即设定文件mm.txt的属性为:
-rw-r——r——文件属主(u)inin拥有读、写权限
与文件属主同组人用户(g)拥有读权限其他人(o)拥有读权限
chmod750wch.txt
%即设定wchtxt这个文件的属性为:
-rwxr-x——文件主本人(u)inin可读/可写/可执行权
与文件主同组人(g)可读/可执行权其他人(o)没有任何权限
3实验目的
(1)Linux系统下的C语言的使用;
实验要求
(1)Linux系统下工具的使用
(2)Linux系统下库的学习
实验步骤
1.使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。
新手的话推荐使用vim,这也是我目前使用的文本编辑器。
2.makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成
makefile文件。
3.gcc和gdb的基本用法。
掌握gcc的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用gcc把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。
4.svn/cvs的基本用法。
这是linux,也是开源社区最常用的版本管理系统。
可以去试着参加sourceforge上的一些开源项目。
5.无论是在哪个平台做软件开发,对于库的学习都很重要,linux下的开发库很多,我主要介绍一下我常常用到的一些库。
(1)glib库
glib 库是gtk+和gnome的基础库,并具是跨平台的,在linux、unix和windows下都可以用。
glib库对于linux平台开发的影响就像 MFC对windows平台开发的影响一样,很多开源项目都大量的使用了glib库,包括gimp、gnome、gaim、evolution和linux下的集群软件heartbeat.因为glib库自带有基本的数据结构实现,所以在学习
glib库的时候可以顺便学习一下基本的数据结构(包括链表、树、队列和hash表)。
(2)libxml库
libxml是linux平台下解析XML文件的一个基础库,现在很多实用软件都用XML格式的配置文件,所以也有必要学习一下。
(3)readline库
readline 库是bashshell用的库,如果要开发命令行程序,那么使用readline库可以减少很多工作量,比如bash里的命令行自动补全,在readline里就已经有实现,当然你也可以用自己的实现替代库的行为。
readline库有很多网站介绍的,只要google一下readline就可以找到一堆了。
(4)curses库
curses 库以前是vi程序的一部分,后来从vi里提取出来成为一个独立的库。
curses库对于编写终端相关的程序特别有用,比如要在终端某一行某一列定位输出,改变终端字体的颜色和终端模式。
linux下的curses库用的是GNU实现的ncurses(new
curses的意思)。
(5)gtk+和KDE库
这两个库是开发GUI应用程序的基础库,现在linux下的大部份GUI程序都是基于这两个库开发的,对于它们的学习也是很有必要的。
实验目的
实验2汇编语言程序设计
(一)
(1)熟悉DEBUG有关命令的使用方法
(2)利用DEBUG验证相关汇编指令
(3)利用DEBUG调试汇编程序段
实验要求
(1)熟悉DEBUG有关命令,要求达到“熟练掌握”层次。
(2)利用DEBUG验证相关汇编指令,要求达到“基本掌握”层次。
(3)利用DEBUG调试程序段,要求达到“初步掌握”层次。
实验步骤
启动DEBUG程序,DEBUG程序用于调试可执行文件。
格式:
DEBUG[[drive:
][path]filename[testfile-parameters]]
参数:
[drive:
][path]filename
指定待调试可执行文件的所在位置及文件名。
testfile-parameters
指定待设计可执行文件需要的命令参数。
相关命令
A(汇编,Assemble)C(比较,Compare)D(卸出,Dump)E(输入数据,Enter))F(填充,Fill)G(执行,Go)H(十六进行运算,Hex)I(读输入口,Input)L(装入,Load)M(移动,MOVE)N(命令,NAME)O(写输出口,OUTPUT)P(调试循环程序,PROCEED)Q(退出,QUIT)R(寄存器,REGISTER)S(找寻,SEARCH)T(跟踪,TRACE)U(反汇编,UNASSEMBLE)W(写盘,WRITE)
XA(分配扩充内存,ALLOCATEEM)XD(释放分配的扩充内存,DEALLOCATEEM)
XM(扩展内存页影像,MAPEXMPAGES)XS(显示扩充内存状态,DISPLAYEMSTATUS)
二,常用debug命令介绍
(1)显示,修改寄存器内容显示所有寄存器内容
格式:
-r 回车
功能:
以十六进制形式显示cpu内部个寄存器的值;以符号形式显示标志寄存器的各标志位(除tf外)的值;并将CS:
IP所指的内存内容反汇编成一条指令,可视为将要执行的指令。
修改寄存器
格式:
-r 寄存器名 回车
-rdsDS0AF
:
0AE0
-r
ds的内容由原来的0af0h修改为0ae0h
修改标志值格式:
-rf例:
-rf
NVUPEIPLNZNAPONC -ovng回车
将of,sf的值分别修改为1。
(2)汇编,反汇编指令汇编命令A
格式:
-A内存地址 回车反汇编命令U
格式:
-u内存块 回车
功能:
分三列显示反汇编的结果,第一列为指令首地址,第二列为16进制形式的指令机器码,第三列为指令的助记符。
-u1270:
100
1270:
0100
B402
MOV
AH,02
1270:
0102
B261
MOV
DL,61
1270:
0104
CD21
INT
21
1270:
0106
CD20
INT
20
1270:
0108
0000
ADD
[BX+SI],AL
1270:
010A
0000
ADD
[BX+SI],AL
1270:
010C
0000
ADD
[BX+SI],AL
1270:
010E
0000
ADD
[BX+SI],AL
1270:
0110
0000
ADD
[BX+SI],AL
1270:
0112
0000
ADD
[BX+SI],AL
1270:
0114
0000
ADD
[BX+SI],AL
1270:
0116
0000
ADD
[BX+SI],AL
1270:
0118
0000
ADD
[BX+SI],AL
1270:
011A
0000
ADD
[BX+SI],AL
1270:
011C0000 ADD [BX+SI],AL
1270:
011E0000 ADD [BX+SI],AL
(3)执行程序
1.单步执行
格式:
-t=内存地址回车格式:
-p=内存地址回车
功能:
用命令中的内存地址的段地址和偏移地址修改cs和ip,然后执行由cs:
ip
指向的内存单元处的一条指令,显示各寄存器的值,并反汇编下一条指令,返回debug状态。
执行结果:
ah=2,cs值不变,ip的值增加2,cs:
ip指向第二条指令
2.多步执行
格式:
-t=内存地址 执行指令的条数格式:
-p=内存地址 执行指令的条数
3.连续执行
-g=内存地址
4.断点执行
格式:
-g=内存地址断点地址
3.利用DEBUG调试汇编程序段
DEBUG的的A命令可以汇编出简单的COM文件,所以DEBUG编写的程序一定要由地址100h
(COM文件要求)开始才合法。
输入A100;从
1.DS:
100开始汇编
2.输入MOVDL,1;将数值01h装入DL寄存器
3.输入MOVAH,2;将数值02h装入DL寄存器
4.输入INT21;调用DOS21号中断2号功能,用来逐个显示装入DL的字符
5.输入INT20;调用DOS20号中断,终止程序,将控制权交回给DEBUG
6.请按Enter键
7.现在已将汇编语言程序放入内存中了,输入G(运行)
8.出现结果:
输出一个符号。
实验3汇编语言程序设计
(二)
实验目的
(1)循环程序设计
(2)分支程序设计
(3)子程序设计
实验要求
(1)循环程序设计,要求达到“基本掌握”层次。
(2)分支程序设计,要求达到“基本掌握”层次。
(3)子程序设计,要求达到“初步掌握”层次。
实验步骤
1.循环程序设计#include
{
charchBuf[80];cin.getline(chBuf,80);inti=0;
intsum=0;intj;
while(chBuf[i])
{
if(chBuf[i]>='0'&&chBuf[i]<='9'){j=chBuf[i]-'0';
sum+=j;
}i++;
}
cout< } 2.分支程序设计programchezhan;vars: real; n: longint;begin readln(n);s: =2.5; ifn>10thens: =s+(n-10)*1.5;writeln(s); end. 3.子程序设计 /程序没测试,直接回的,你自己调试一下。 #defineMAXLENGTH10typedefstruct_tag_node { charbuf[2048];intlength; }_tag_NODE; boolgetMin(const_tag_NODE*node,char*showList,intsave[]) { save[0]=0;//save[0]记录已经存了多少个负数if(NULL==node||NULL==showList)returnfalse;if(strlen(showList) chartemp[20]; for(inti=0;i { if(node->buf[i]=='-') { for(j=i+1;j { if(node->buf[j]<'0'||node->buf[j]>'9') { memset(temp,0,strlen(temp));memcpy(temp,node->buf[i],j-i-1);temp[j-i]='\0'; save[0]++; save[save[0]]=atol(temp);break; } } } } if(save[0]==0)returnfalse;intmin=0;for(j=1;j<=save;j++) { if(save[j] } sprintf(showList,"%s%d%c","MIN=",min,'B');returntrue; } 实验4编译技术实验 (一) 实验目的 (1)设计待分析的语言子集的词法和语法 (2)编制和调试词法分析程序 (3)编制一个递归下降语法分析程序 实验要求 (1)设计待分析的语言子集的词法和语法,要求达到“基本掌握”层次。 (2)编制和调试词法分析程序,要求达到“熟练掌握”层次。 (3)编制一个递归下降语法分析程序,要求达到“熟练掌握”层次。 实验步骤 1.设计待分析的语言子集的词法和语法设计待分析的语言子集的词法: #include voidRetract(charstr[30]) { for(intj=0;j<30;j++)str[j]=0; } voidmain() { while (1) { charch; ch=getchar(); if(isspace(ch)){ch=getchar();}if(isdigit(ch)) { strToken[i]=ch;i++; if(i==1) { printf("NUM: "); fprintf(out,"NUM: "); } } else { printf("%s",strToken);fprintf(out,"%s",strToken); i=0; Retract(strToken);if(ch=='+') { printf("\n+\n");fprintf(out,"\n+\n"); } elseif(ch=='-') { printf("\n-\n"); fprintf(out,"\n-\n"); } elseif(ch=='*') { printf("\n*\n");fprintf(out,"\n*\n"); } elseif(ch=='/') { printf("\n/\n");fprintf(out,"\n/\n"); } elseif(ch=='(') { printf("\n(\n"); fprintf(out,"\n(\n"); } elseif(ch==')') { printf("\n)\n"); fprintf(out,"\n)\n"); } elseexit(0); } } fclose(out); } 2.编制和调试词法分析程序 词法分析程序的运行流程: #include #definenull0 intline=0,error=0,mark1=0,mark2=0;char*sname; FILE*sfp,*nfp,*ifp,*kfp,*cfp,*pfp;charib[50][20]; charcb[50][10]; intmain(intargc,char*argv[]) {charsbuff[SIZE];charnbuff[SIZE];inti; int number(chars[],inti);intletter(chars[],inti); int operation(chars[],inti);void seti(chars[]); void setc(chars[]); voidcfile(chars1[],chars2[],intm);voiderror2(chars[]); voiderror1(chars[]);voiderror3(chars[]);voidopenall(); voidwriteall();voidcloseall();if(argc! =2) { printf("Pleaseinputthefileyouwanttocompile: \n");exit (1); } else sname=argv[1];sfp=fopen(argv[1],"r");op
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机软件 技术 基础 实践 课程设计 报告书
![提示](https://static.bingdoc.com/images/bang_tan.gif)