第一篇:计算机软件实践_教学大纲
《计算机软件实践》 教学大纲
课程编号:
课程名称:计算机软件实践 学分:1 学时:16 适用专业:特种能源与烟火技术,安全工程和力学工程专业 先行课程:工程制图
一、目的与任务
1、课程简介
《计算机软件实践》课程主要讲授计算机辅助绘图和设计软件AutoCAD的使用方法。AutoCAD是应用最为广泛的计算机辅助设计软件之一,被广泛应用于机械、建筑、电子、航天、化工、冶金等领域。因此,CAD是工科类学生必须掌握和熟练应用的。课程内容主要有AutoCAD的基本绘图与编辑、尺寸标注、绘制零件图和绘制装配图等。学生通过《计算机软件实践》的学习能够对AutoCAD的使用方法有比较系统和全面的了解。
2、学习目的与任务
通过《计算机软件实践》的课程学习,使学生了解计算机辅助设计的基本概念,掌握AutoCAD基本的绘图与编辑、标注尺寸、注写文字、高级绘图与编辑、绘制零件图和装配图。使学生具备熟练应用AutoCAD设计零件的能力。
二、教学内容与学时安排
《计算机软件实践》课程的主要内容有:AutoCAD的基础知识和入门,基础绘图与编辑,文字注释与标注尺寸,高级绘图与编辑,绘制零件图,绘制装配图,创建图纸布局及打印等。
具体的教学内容和学时安排如下: 第1章 AutoCAD的基础知识和入门
(1学时)1.1 AutoCAD 2008的安装与启动 1.2 AutoCAD 2008的用户界面 1.3 AutoCAD 2008绘制环境的设置 1.4 AutoCAD 2008的基本操作 第2章 基础绘图与编辑(1学时)2.1 点、线的绘制
2.2 多边形、圆弧、圆、椭圆、椭圆弧的绘制 2.3 图案填充
2.4 复制类的基本编辑命令 2.5 改变类的基本编辑命令 2.6 修改类的基本编辑命令 第一次上机安排(1学时)
第3章 文字注释与标注尺寸(1学时)3.1 文字注释 3.2 尺寸标注 3.3 形位公差标注 3.4 实例讲解
第二次上机安排(1学时)第4章 高级绘图与编辑(1学时)4.1 绘制与编辑多段线 4.2 绘制云状线 4.3 绘制等分点 4.4 绘制圆环 4.5 选择对象 4.6 显示控制
第三次上机安排(1学时)第5章 绘制零件图(1学时)5.1 绘制零件图的方法和途径 5.2 实例讲解
第四次上机安排
(2学时)第6章 绘制装配图(1学时)2 6.1 装配图的特点及绘制步骤 6.2 实例讲解
第7章 图形输出(1学时)6.1视图与视口
6.2 模型空间与图纸空间 6.3 创建与管理布局 6.4 图形输出
第五次上机安排(4学时)
三、考核与成绩评定
考核,方式为平时作业(40%)+期末作业(60%),成绩采用百分制。
四、教材
AutoCAD 2008中文版实用教程,邵振国主编,科学出版社,2007.3
第二篇:南航计算机软件数据结构上机实践报告
数据结构实践报告整理 031040102 刘玉 简述每一部分的对象、目的和要求;
画出程序流程图;另附A4纸手绘; 附源程序清单; 实验的收获:遇到的问题以及解决的办法、方法的优缺点。
实验一 单链表的基本操作与运算
题目一:单链表的定义、创建、插入和删除操作,将数据元素显示出来。
本题目针对单链表。联表示通过一组任意的存储单元来存储线性表格中的数据元素。为了建立起数据元素之间的存储关系,设置每一个结点,结点既存放数据data,又存放其后继地址的部分next。而每个结点中只有一个指向后继的指针,所以称其为单链表。本题目的要求是创建一个新的链表,并且完成链表的创建定义。链表是一种动态管理的存储结构,链表中的每一个结点所占用的空间是根据运行是的实际需要的空间生成的。因此建立单链表是从空链表开始的,每次读入一个数据元素就申请一个结点链表的一段。在单链表中插入一个结点不需要移动元素指针的指向。而删除则需要找到木比啊偶元素的前驱结点,并且修改指针的指向。题目一需要的操作就是,对于一个新建的空链表,以其为对象进行具体的数据的插入填写。待链表中存有数据后,再进行数据的整理查找,然后删除目标数据。
//031040102单链表 #include
//定义一个链表 { int data;SLNODE *next;};void CREATE_SL(SLNODE *h)//创建一个单链表 { SLNODE *p,*s;int x;h->next=NULL;
cout<<“输入以-1结尾的一组数”< cin>>x; //开始输入数据 while(x!=-1) { s=new SLNODE[sizeof(SLNODE)]; //申请一个动态新空间 s->data=x; if(h->next==NULL) h->next=s; else p->next=s; p=s; cin>>x; } p->next=NULL; //链表最后指向空 };int Insert_LinkList(SLNODE *h,int i,int x) //在单链表第i个位置插入x { SLNODE *p,*s;int j=0; p=h;while(p->next!=NULL&&j { p=p->next; j++; } if(j!=i-1){ cout<<“i is invalid!”< return 0;} else { s=new SLNODE[sizeof(SLNODE)]; s->data=x; s->next=p->next; p->next=s; return 1; } };int Del_LinkList(SLNODE *h,int i) //删除单链表上第i个结点 { SLNODE *p,*s;int j=0;p=h;while(p->next!=NULL&&j p=p->next;j++; } if(j!=i-1){ cout<<“i is invalid!”< return 0;4 6 8 9 7 2 6 9 7 5-1 } 链表数据如下 else 4 6 8 9 7 2 6 9 7 5 { 输入需插入的数据8 if(p->next==NULL)输入需插入的结点3 { 插入成功 cout<<“第i个结点不存在链表数据如下 ”< return 0;输入需删除的结点 4 } 删除成功 else 链表数据如下 {s=p->next;p->next=s->next; 7 2 6 9 7 */ //删除结点 Deletes; //释放结点空间 return 1; } } };void Print_LinkList(SLNODE *h)//输出链表中所有元素 { SLNODE *p;p=h->next;cout<<“链表数据如下”< cout< data<<'t';} cout< data< cout<<“插入成功”< cout<<“插入失败”< cout<<“删除成功”< cout<<“删除失败”< 实验一的收获 实验一让我对于链表的创建于定义有了更多的接触与认识。之前的学习经验里主要是 扎实,VC++,涉及链表的内容,我学的不够所以这次在软件基础时间里重新再次 学习。题目一比较简单,设仅是创建和插入以及删除的基本操作。实验一的困难较小,我也是比较顺利参照课本,完成体题目一,也让我对于进一步学习链表有了兴趣和动力。由浅入深,我会一点点开展学习。在图书馆借阅一本《数据结构教程上机实验指 导》,里面对于实验的指导比较全面而且有很多实例可以参考。 上机实践二 题目二:栈、队列的顺序存储结构、链式存储结构的定义、创建、插入和删除操作,将数据元素显示出来。本题目要求掌握栈和列队。栈和列队是 两种常见的数据结构。它们的逻辑结构和线性表相同。其特点是,插入和删除等运算的位置有所限制:栈是按照先进后出的规则进行操作,而是按照先进先出的规则进行操作。堆栈技术现在的应用非常广泛,不管是编译软件还是程序设计,在操作系统和事务管理中则是广泛应用了队列技术。栈是限制在一段进行插入和删除的线性表,允许插入删除的这一端称为栈顶,固定端称为栈底。栈是运算受到限制的一种线 性表,采用顺序存储的是顺序栈,采用链式存储的是链栈。题目要求对于两种存储结构 的栈进行定义创建。对于顺序栈,首先需要申请共享的一位数组空间。即为先置空栈,然后入栈插入元素(特别要注意栈满不能插入),删除出栈(特别要注意栈空不能出栈)。对于链栈,采用带头指针的单链表来实现.队列操作的顺序队列,插入在表的队尾一端,删除在表的另外的队头一端。队的队头和队尾都是活动的,特别地需要设置队头和队尾两个指针。需要实现置空队、入队、出对、以及判别队列是否为空的运算。对于链式队列,通常是用带头结点的单链表实现的,并且设置一个队头指针(始终指向头结点)和一个队尾指针(指向当前的最后一个元素),特别地,当队列为空时队头和队尾指针均指向头结点。显示创建一个带头结点的空队,申请头尾结点,然后进行如对操作不断申请新的结点,还需要进行队列是否为空的判断操作,队空则出队失败。 //031040102 顺序栈 #include return 1;else return 0;};int Push_SeqStack(SqStack *s,ElemType x)//入栈 { if(s->top==MaxSize-1) return 0;else { s->top++; s->data[s->top]=x; return 1; } };int Pop_SeqStack(SqStack *s,ElemType x) //出栈 { if(IsEmpty_SeqStack(s)) return 0;else { x=s->data[s->top]; s->top--; return 1; } }; ElemType Top_SeqStack(SqStack *s) //取出栈顶元素 { if(IsEmpty_SeqStack(s)) return 0; else return(s->data[s->top]); };void Print(SqStack *s) //输出栈内所有元素 { if(IsEmpty_SeqStack(s)) cout<<“ 此栈为空 ”< cout<<“栈内元素为”< for(int i=s->top;i>-1;i--) cout< } };void main(){ SqStack *s;int x; s=Init_SeqStack();cout<<“ 输入一组以-1结尾的数”< s->top++; s->data[s->top]=x; cin>>x;} Print(s);cout<<“输入需插入的数”< cout<<“插入成功”< cout<<“插入失败”< Print(s); delete p;if(Pop_SeqStack(s,x)) return top; cout<<“删除成功”< cout<<“删除失败”< Print(s);} 输入一组以-1结尾的数 5 8 9 7 3 6 2 1 8-1 栈内元素为 8 1 2 6 3 7 9 8 5 输入需插入的数4 插入成功 栈内元素为 4 8 1 2 6 3 7 9 8 5 删除成功 栈内元素为 8 1 2 6 3 7 9 8 5 //031040102 链栈 #include //定义一个链栈 { elemtype data;LinkStack *next;};LinkStack *Init_LinkStack()//链栈的初始化 { LinkStack *top;top=new LinkStack[sizeof(LinkStack)];top=NULL;return top;};LinkStack *Push_LinkStack(LinkStack *top,elemtype x) //数据入栈 { LinkStack *s;s=new LinkStack[sizeof(LinkStack)];s->data=x;s->next=top;top=s;return top;};LinkStack *Pop_LinkStack(LinkStack *top,elemtype x) //数据出栈 { LinkStack *p;if(top==NULL) return NULL;else { x=top->data; p=top; top=top->next;//输出栈内所有元素 { LinkStack *p;p=top;if(p==NULL) cout<<“此栈为空”< cout<<“栈内元素为”< for(;p->next!=NULL;p=p->next) cout< data<<'t'; cout< data< s=new LinkStack[sizeof(LinkStack)]; s->data=x; s->next=top; top=s; cin>>x;} Print(top);cout<<“输入需插入的数”< 输入需插入的数15 栈内元素为 15 65 23 1 6 3 4 8 9 7 栈内元素为 65 23 1 6 3 4 8 9 7 //031040102 顺序队列 #include typedef struct queue //定义一个顺序队列 { ElemType data[MaxSize];int rear,front;}SeQueue;SeQueue*Init_Queue()//队列的初始化 { SeQueue *sq;sq=new SeQueue[sizeof(SeQueue)];sq->front=sq->rear=-1;return sq;};int IsEmpty_Queue(SeQueue *sq)//判空队列 { if(sq->rear==-1) return 1;else return 0;};int In_Queue(SeQueue *sq,ElemType x) //入队 { if(sq->rear==MaxSize-1) return 0;else { sq->rear++; sq->data[sq->rear]=x; return 1;} };int Out_Queue(SeQueue*sq) //出队 { if(IsEmpty_Queue(sq)) return 0;else { sq->front++; return(sq->data[sq->front]);} };int Front_Queue(SeQueue *sq)//读队头元素 { if(IsEmpty_Queue(sq)) return 0;else { return(sq->data[sq->front+1]);} };void Print(SeQueue *sq)//输出队列所有元素 { if(IsEmpty_Queue(sq)) cout<<“此队列为空”< cout<<“队列内元素为”< for(int i=sq->front+1;i<=sq->rear;i++) cout< cout< cin>>x;while(x!=-1){ sq->rear++; sq->data[sq->rear]=x; cin>>x;} Print(sq);cout<<“输入需插入的数”< cout<<“插入成功”< cout<<“插入失败”< cout<<“删除成功”< cout<<“删除失败”< //定义链队的结点类型 { ElemType data;QNODE *next;}; typedef struct linkqueue p=q->front->next; //封装头尾指针 if(IsEmpty_LQueue(q)){ cout<<“此栈为空”< cout<<“ 队列内元素为 ”< { for(;p->next!=q->rear->next;p=p->next)LinkQueue *q; cout< data<<'t';QNODE *p; cout< data< } //申请头尾节点 p=new QNODE[sizeof(QNODE)];//申请链队头结点 p->next=NULL;q->front=q->rear=p;return q;};void In_LQueue(LinkQueue *q,ElemType x)//入队操作 { QNODE *p;p=new QNODE[sizeof(QNODE)];//申请新结点 p->data=x;p->next=NULL;q->rear->next=p;q->rear=p;};int IsEmpty_LQueue(LinkQueue *q)//判队空 { if(q->front==q->rear) return 1;else return 0;};int Out_LQueue(LinkQueue *q,ElemType x)//出队操作 { QNODE *p;if(IsEmpty_LQueue(q)) return 0;else { p=q->front->next; q->front->next=p->next; x=p->data; delete p; if(q->front->next==NULL) //一个元素时,出队后队空还要改队尾指针 q->rear=q->front; return 1;} };void Print(LinkQueue *q){ QNODE *p;}; void main(){ LinkQueue *q;QNODE *s;int x; q=Init_LQueue();cout<<“输入一组以-1结尾的数”< { s=new QNODE[sizeof(QNODE)]; s->data=x; s->next=NULL; q->rear->next=s; q->rear=s; cin>>x; } Print(q);cout<<“输入需插入的数”< cout<<“删除成功”< else cout<<“删除失败”< 队列内元素为 8 9 4 5 3 2 1 实验二的收获 实验二是全新的知识需要理解。在之前的学习经历中没有接触到栈和队列。所以这 次是从概念开始学习的。在具体程序的学习应用时候,我对于书上提到的,首先需要的是为栈申请共享空间,有了理解和认识。特别地,在栈空的时候有s->top[0]==-1;s->top[1]==Maxsize。再有就是栈满的时候不可以入栈操作,未满的入栈操作则是先移动再赋入值。例如语句(两句的顺序不可以颠倒)s->top++;s->data[s->top]=x;由于栈的主要运算是在栈顶插入、删除。因此我在链表的头部作为栈顶,这样方便了程序,而且不需要像单链表一样为了运算方便附加一个头结点。在联系队列的相关程序时候,我理解了,列队单向空间无法利用,即为前面的已经被指针制动过的空间不能释放也无法利用。除此,队列的操作里面。有可能出现“队满”“队空”的条件相同,front==rear;需要具体区分。 上机实践三 题目三:二叉树的链式存储结构的数据结构定义、创建、先序和后序遍历,并将结果序列输出。 二叉树是有限个元素的集合,该集合或者为空、或者由一个称为根的元素以及两个不相交的、被称为左子树右子树的二叉树组成。二叉树的脸是存储结构是指,用链表来表示一颗二叉树,即用链表来表示元素的逻辑关系。二叉树的链表存储的结点有三个域组成,除了数据域外,还有两个指针域,分别用来指向该节点的左子结点和右子结点的存储地址。当左子结点或者右子结点不存在的时候,相应的指针值域为空。二叉树的遍历是指按照某种顺序结构访问二叉树的每个结点,使每个结点仅被访问一次。限定先左后右,只有三种方式即为先序遍历、中序遍历、后序遍历。遍历其实是一个递归的过程,若二叉树为空,则遍历结束,不然就按照顺序依次访问根结点、左结点、右结点。 //031040102 二叉树 #include //定义二叉树结点 { elemtype data; BiTNode *lchild,*rchild;//两结点指针 }BiTree; BiTree *Create()//二叉树的创建,递归算法 { BiTree *bt;elemtype ch;cin>>ch;if(ch=='0'){ bt=NULL;} else { bt=new BiTNode[sizeof(BiTNode)]; bt->data=ch; bt->lchild=Create(); bt->rchild=Create();} return bt;}; void PreOrder(BiTree *bt) //先序遍历二叉树,递归算法 { if(bt==NULL) return;cout< void PostOrder(BiTree *bt) //先序遍历二叉树,递归算法 { if(bt==NULL) return;PostOrder(bt->lchild);PostOrder(bt->rchild);cout< void main(){ BiTree *bt;cout<<“输入所需字符(空结点以零代替)”< 输入所需字符(空结点以零代替)frt0e000qj00m00 先序遍历可得二叉树元素为 f r t e q j m 后序遍历可得二叉树元素为 e t r j m q f 实验三的收获 二叉树可以用计算机语言来读取,通过遍历可以恢复二叉树。通过这次试验更加深刻理解二叉树。本体操作不断调用函数,递归实现遍历。实际需要的时候对于已知的二叉树的每个结点逐一访问。一次完整的便利科室的一个二叉树的结点信息由非线性排列转变为意义上的线性排列。在二叉树的链表中无法根据结点找到其父结点。不过,二叉树的链表结构灵巧简便、操作方便。特别地还节省空间。对于一个庞大的工程型程序的话,空间与简便十分重要。同样的目的,同样的结果,需要比较选择,肯定是精巧简单操作性强等等优势作为判断取舍。 上机实践四 题目四:查找:顺序查找、二分查找 查找是许多程序中最为耗费时间的部分。因此需要方法提高运行的速度和效率。顺序查找又称为线性查找,也是最为基本的查找方法之一。具体实现为:从表的一端开始,依次将关键码与给定的值比较,若找到查找成功,并且给出数据元素在表中的位置,若整个表查找完成仍未找到相同的关键码,则查找失败给出失败信息。 二分法查找只适用于顺序存储的有序表。有序表即是表中数据元素按照关键码的升序或者降序排列。去中间元素作为比较对象,若给定值与中间元素的关键码相等,则为查找成功;若给定值小于中间元素的关键码,则在中间元素的左半区继续查找,若给定值大于中间元素的关键码,则在中间元素的右半区继续查找。不断重复上述的查找过程直到查找成功,或者所查找的区域,没有该元素查找失败。 //031040102顺序查找 #include #define MaxSize 1024 typedef struct { KeyType key; //定义关键码字段 ElemType elem;//定义其他字段 }elemtype; typedef struct //顺序存储结构定义 { elemtype elem[MaxSize];//定义数组 int length; //表长度 }S_TBL; S_TBL *Init_S_TBL() //顺序表的初始化 { S_TBL *s;s=new S_TBL[sizeof(S_TBL)];s->length=-1;return s;}; int s_search(S_TBL *tbl,KeyType kx)//在表tbl中查找关键码为kx的数据元素 { tbl->elem[0].key=kx; //存放检测 for(int i=tbl->length;tbl->elem[i].key!=kx;i--); //从表尾向前查找 return i;}; void main(){ S_TBL *tbl;tbl=Init_S_TBL();int i,k;cout<<“输入一组以-1结尾的数(关键码字段)”< tbl->length++; i=tbl->length+1; tbl->elem[i].key=k; cin>>k;} i=1;cout<<“输入一组以-1结尾的数(数据元素)”< tbl->elem[i].elem=k; i++; cin>>k;} cout<<“请输入所需查找数的关键码字段:”< { flag=mid; cout<<“查找成功”< break; cout<<“所查找的数为//查找成功,元素位置设置到flag中 ”< } } } else return flag; cout<<“查找失败”< //定义关键码字段 ElemType elem; //定义其他字段 }elemtype;typedef struct //顺序存储结构定义 { elemtype elem[MaxSize];//定义数组 int length; //表长度 }S_TBL;S_TBL *Init_S_TBL() //顺序表的初始化 { S_TBL *s;s=new S_TBL[sizeof(S_TBL)];s->length=-1;return s;};int Binary_search(S_TBL *tbl,KeyType kx)//在表tbl中查找关键码为kx的数据元素 { int mid,flag=0,low=1,high=tbl->length;//1.设置初始区间 while(low<=high) //2.表空测试 { //非空,进行比较测试 mid=(low+high)/2; //3.得到中间点 if(kx high=mid-1; //调整到左半区 else if(kx>tbl->elem[mid].key) low=mid+1; //调整到右半区 else { //返回该元素在表中的位置,或返回0 };void main(){ S_TBL *tbl;tbl=Init_S_TBL();int i,k;cout<<“输入一组以-1结尾的数(关键码字段)”< tbl->length++; i=tbl->length+1; tbl->elem[i].key=k; cin>>k;} i=1;cout<<“输入一组以-1结尾的数(数据元素)”< tbl->elem[i].elem=k; i++; cin>>k;} cout<<“输入所需查找数的关键码字段”< cout<<“查找成功”< cout<<“所查找的数为”< } else cout<<“查找失败”< -1结尾的数(数据元素)33 22 11 55 99 77 88 66 44-1 输入所需查找数的关键码字段3 查找成功 所查找的数为33 实验四的收获 查找的程序对我来说不陌生。两种基本方法的比较和应用里,我留意了最大查找次 数的不同。顺序查找的进行,如果查找不成功那么会议共比较N+1次。当数据量很大的时候,平均查找长度过大,当然顺序查找对于数据的存贮方式没有任何的要求。折半查找会有一个平均查找长度以及查找的最大长度。 我比较倾向于这本查找,其查找的效率明显会高于顺序查找。特别地,我还留意到对于单链表结构,无法进行二分法的查找,因为全部的元素的定位只能从指针开始。对于线性列表只能采取顺序查找的方式。 上机实践五 题目五:排序(插入排序选择排序冒泡排序)排序是数据处理中经常使用的一种重要的运算,其目的就是将一组数据按照规定的顺序进行排列。排序的目的是便于查询和处理。插入排序的基本思想是每一步将一个待排序的元素,按照其关键字吗的大小,插入到前面已经排序号的一组元素的适当的位置上,知道所有的元素都插入为止。一般地认为插入排序是一个稳定的排序方法。选择排序,每次从当前待排序的记录中,通过依次地进行关键字妈的比较从中选择一个关键字最小的记录,并且把它与当前待排序的第一个记录进行交换。直接选择排序是一个不稳定的排序方法。冒泡排序是一种简单的交换排序的方法。一次地比较相邻两个记录的关键字,若发现两个记录的次序相反(即位前一个记录的关键字大雨后有一个记录的关键字),进行记录的交换一直到没有反序为止。极端情况下,冒泡排序会有最短与最长时间,整个队列越是接近有序,则冒泡排序的进行次数越少。 //031040102 插入排序 #include //定义关键码字段 ElemType elem; //定义其他字段 }elemtype; typedef struct //顺序存储结构定义 { elemtype elem[MaxSize]; //定义数组 int length; //表长度 }S_TBL; S_TBL *Init_S_TBL() //顺序表的初始化 { S_TBL *s;s=new S_TBL[sizeof(S_TBL)];s->length=-1;return s;}; int Binary_search(S_TBL *tbl,KeyType kx)//在表tbl中查找关键码为kx的数据元素 { int mid,flag=0,low=1,high=tbl->length;//1.设置初始区间 while(low<=high) //2.表空测试 { //非空,进行比较测试 mid=(low+high)/2; //3.得到中间点 if(kx high=mid-1; //调整到左半区 else if(kx>tbl->elem[mid].key) low=mid+1; //调整到右半区 else { flag=mid; break; //查找成功,元素位置设置到flag中 } } Return flag;//返回该元素在表中的位置,或返回0 }; void main(){ S_TBL *tbl;tbl=Init_S_TBL();int i,k;cout<<“输入一组以-1结尾的数(关键码字段)”< tbl->length++; i=tbl->length+1; tbl->elem[i].key=k; cin>>k;} i=1;cout<<“输入一组以-1结尾的数(数据元素)”< while(k!=-1)};{ void Print(RecType R[],int n) tbl->elem[i].elem=k; i++; cin>>k;} cout<<“输入所需查找数的关键码字段”< cout<<“查找成功”< cout<<“所查找的数为”< cout<<“查找失败”< k=i; for(j=i+1;j<=n;j++) if(R[j].key k=j; if(k!=i) { R[0]=R[k]; R[k]=R[i]; R[i]=R[0]; } } //输出数组内所有元素 { cout<<“关键字段为:”< cout< cout< R[++n].key=x; cin>>x;} n=0;cout<<“请输入一组以-1结尾的数(数据元素):”< R[++n].otherinfo=x; cin>>x;} cout<<“ 排序前 ”< Print(R,n);SelectSort(R,n);cout<<“排序后”< 请输入一组以-1结尾的数(数据元素): 33 22 11 44 55 66 99 88 77-1 排序前 关键字段为: 6 9 7 4 1 5 6 8 3 所有元素为: 33 22 11 44 55 66 99 88 排序后 关键字段为: 1 3 4 5 6 6 7 8 9 所有元素为: 55 44 66 33 99 11 88 22 //031040102 冒泡排序 #include #define MaxSize 50 cin>>x;typedef struct RecType } //定义排序记录的形式 cout<<“排序前:”< 请输入一组以 -1结尾的数(关键码字段): //选择排序函数 { int i,j,flag;for(i=1;i flag=1; for(j=1;j<=n-i;j++) if(R[j+1].key { flag=0; R[0]=R[j]; R[j]=R[j+1]; R[j+1]=R[0]; } if(flag==1) return;} };void Print(RecType R[],int n)//输出数组内所有元素 { cout<<“关键字段为:”< cout< cout< R[++n].key=x; cin>>x;} n=0;cout<<“请输入一组以-1结尾的数(数据元素):”< R[++n].otherinfo=x;9 8 7 4 1 5 6-1 请输入一组以-1结尾的数(数据元素): 11 22 33 44 66 55 77 88-1 排序前: 关键字段为: 6 9 8 7 4 1 5 6 所有元素为: 11 22 33 44 66 55 77 88 排序后: 关键字段为: 1 4 5 6 6 7 8 9 所有元素为: 55 66 77 11 88 44 33 22 实验五的收获 三种不同的排序方式,都是之前C++ 学习时候的重点掌握内容。 直接插入排序的算法很简洁,也很容易实现。从空间看,它只需要一个元素的辅助,从实践看该算法的主程序运行次数只比元素的个数少一。当然由于原列表的排序状况未知,其总比较次数和总的移动次数也是未定的,取平均数约为0.25N^2。对于直接选择排序,比较次数与原表元素的排列顺序无关,移动次数有关。根据冒泡排序的思想,待排序的记录有序之 后,则在下一趟的排序时候不会再有记录的交换位置,由此,我增加了一个标记flag,来直观表示每一次的排序是否需要发生交换,无交换则已经完成可以结束冒泡。特别地冒泡排序需要增加一个附加的单元来实现元素的交换。在交换时需要留意免得出错。 · 课程编号:02202001 课程名称:程序设计实践 课程性质:专业基础限选 总 学 时:30(实践学时30) 学分:2 适用专业:计算机科学与技术 《程序设计实践》教学大纲 一、教学目标 《程序设计实践》课程的教学目标旨在训练学生C语言编程的基本能力。通过本课程的训练,使学生具备后续程序设计类课程,如数据结构、算法分析与设计等,所要求的编程能力,为这些教学活动的顺利开展打下良好基础。 二、教学说明 《程序设计实践》分模块对学生的C语言编程技能进行训练,涵盖了基本设计方法、输入输出、指针、字符串、参数传递、递归调用、文件操作等项目。这些技能即是后续与程序设计类课程经常要用到的,也是日后从事C语言程序开发所必备的,乃至对掌握其他编程语言,如C++、Java和C#等也是非常有益的。 训练模块的设计,以及各模块中训练题目的选择是基于以往教学经验,挑选学生普遍薄弱以及未来经常使用的编程技能编辑而成。教师可根据具体情况,特别是学生对C语言编程的掌握情况,灵活调整训练模块和模块中的训练题目。 目前各模块基本相对独立,前后顺序可以调整,但仍建义将实验一和实验二放在最开始;实验三不晚于实验六;实验四不晚于实验五。建议每次课能抽出部分时间对与本模块相关的理论知识做简单归纳总结。 本课程是对编程能力的训练,因此反对学生参考成熟的程序,甚至鼓励学生尽量少用库函数,而是自己独立编程实现。这一点与其他程序设计类课程有所不同,望在教学实施过程中予以注意。本课程虽是对编程能力的训练,但在注重结果正确的前提下,也应注意对学生良好编程风格的培养。 鼓励学生选择与训练模块相关的,来自于自己程序开发实践活动的题目参与训练,但要事先征得教师的认可。 如果条件允许,应该全程开展对训练结果的机器自动检查。 三、教学内容及要求 实验一 基本设计方法训练 (一)实验内容 本次实验对基于程序流程图写代码,以及通过程序流程图分析代码的程序设计方法进行训练。实验题目分如下两大类,学生可分别从每类中选择1道来完成: 1.流程图转换为代码 (1)写出下列流程图对应的代码 (2)写出下列流程图对应的代码 2.代码转换为流程图 (1)画出下列代码的流程图 p = head; for(j=1;j p = p->next; while(head->next!= head) { for(j=1;j p = p->next; q = p->next; p->next = q->next; printf(“%d ”,q->number); if(q == head) head = q->next; free(q); p = p->next; } printf(“%dn”,head->number);(2)画出下列代码的流程图 r1=head1;p1=head1->next;r2=p2=head2->next;while(p1&&p2){ if(p1->index==p2->index){ p1->modulus=(p1->modulus)+(p2->modulus);p2=p2->next;free(r2);r2=p2;r1=p1;p1=p1->next;} else if(p1->index>p2->index){ r2->next=p1;r1->next=r2;p2=p2->next;r2=p2;} else if(p1->index index){ r1=p1;p1=p1->next;} 3 } (二)实验要求 能写出程序流程图对应的代码,并能画出代码对应的程序流程图。实验二 输入输出格式控制训练 (一)实验内容 本次实验对输入输出语句的使用,主要是格式控制参数的使用进行训练。实验题目分如下两大类,学生可分别从每类中选择2道来完成: 1.输入语句 (1)读入一组以空格分隔的数,把它们存入数组,用逗号分隔的方式输出,并统计数的个数。 例:【输入】20 37.5 43 5 87.0【回车】 【输出】20,37.5, 43,5,87.0 5(2)按照“学号【空格】姓名【空格】性别【空格】年龄【回车】”的格式输入若干学生信息,将他们存储在结构体数组中(即每一个学生的信息存储在一个结构体中),输入以“##”结束。统计学生信息数量,并按行输出每条学生信息(逗号分隔)。例:【输入】20142101 zhang Male 19【回车】 20142102 wang Female 18【回车】 ##【回车】 【输出】2 20142101,zhang,Male,19【回车】 20142102,wang,Female,18【回车】 (3)读入一组以制表符(Tab)分隔的数,把它们存入数组,并用逗号分隔输出。例:【输入】5【Tab】35【Tab】15【Tab】100【回车】 【输出】5,35,15,100【回车】 2.输出语句 (1)打印如下图形,层数由用户输入,最后一行左侧顶格。 * *** ***** *******(2)打印如下图形,层数由用户输入,中间一行左侧顶格。 * *** ***** *** *(3)打印倒的杨辉三角形,层数由用户输入,第一行左侧顶格。例: 3.综合类 (1)输入一组以逗号分隔的整数,以回车结尾,以每行5个,空格分隔,左对齐的方式输 出它们。 例:【输入】100,21,3950,7,8,3289,943,495,34134,343,209,47,2,7293,29,2732,843,392,24【回车】 【输出】100 3950 7 3289 943 495 34134 343 209 7293 2732 843 392 (2)输入一组以逗号分隔的整数,以回车结尾,以每行5个,空格分隔,右对齐的方式输出它们。 例:【输入】100,21,3950,7,8,3289,943,495,34134,343,209,47,2,7293,29,2732,843,392,24【回车】 【输出】 100 3950 3289 943 495 34134 343 209 7293 2732 843 392 (3)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,左对齐的方式输出它们。例:【输入】 Machine learning is the term that refers to learning patterns in the data In other words【回车】 【输出】Machine learning is that words(4)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,右对齐的方式输出它们。例:【输入】 Machine learning is the term that refers to learning patterns in the data In other words【回车】 【输出】Machine learning is that words(5)输入一组以逗号分隔的小数,以回车结尾,以每行5个,空格分隔,小数点对齐的方式输出它们。 例:【输入】10.0,2.1,39.50,7.8,328.9,9.43,49.5,341.34,34.3,2.09,0.47,2.0,7.293,29.00【回车】 【输出】 10.0 2.1 39.50 7.8 328.9 9.43 49.5 341.34 34.3 2.09 0.47 2.0 7.293 29.00(6)输入一组以空格分隔的英文单词,以回车结尾,以每行5个,空格分隔,中间对齐的方式输出它们。例:【输入】 Machine learning is the term that refers to learning patterns in the data In other words【回车】 【输出】Machine learning is that words (二)实验要求 the term learning patterns In other refers to data in the the term In other refers to learning patterns in the data the term learning patterns In other refers to data in the 能利用输入输出语句完成相应任务。实验三 指针及字符串训练 (一)实验内容 本次实验对指针的使用和字符串的操作进行训练。实验题目如下,学生可从中选择2道来完成: 1.用指针操作实现一个二维数组的转置运算。 输入:输入包含m + 1行。第一行是整数m和n,两项之间用一个空格隔开(1 <= m, n <= 10)。 其中,m,n分别为数组的行数和列数。第二行到第m + 1行每行均有n个整数,相邻两项之间用一个空格隔开。 输出:包含n行,是转置后的二维数组。每行均有m个整数,相邻两项之间用一个空格隔开。 例:【输入】3 2【回车】2【回车】5【回车】8【回车】 【输出】1 4 7【回车】5 8 2.输入一段英文,从中找出最长的英文单词。英文单词由空格分隔。(用字符指针实现,且不能调用库函数。)注:英文单词只包含大写字母和小写字母;若最长的英文单词有多个,则输出第一个。 3.输入一串符号,将其中连续的阿拉伯数字视为整数,计算并输出它们的和。(用字符指针实现,且不能调用库函数。) 例:【输入】whde12fkvf834ddei5sdlm3790wo【回车】 【输出】4641(因为12+824+5+3790=4641) (二)实验要求 能利用指针完成相应任务,并能对字符串进行操作。实验四 参数传递训练 (一)实验内容 本次实验对函数调用过程中的参数传递进行训练。实验题目如下,学生可从中选择2道来完成: 1.二维矩阵A和B作为输入参数,传入函数ADD,函数ADD完成A+B的运算,结果放在二维矩阵C中。SELECTMIN函数负责找出C中值最小的元素。编程实现上述函数,最终要求输出C和C中最小元素的值。不能用全局变量。 2.字符串str1和str2 作为输入参数,分别传入cut函数。cut函数负责从传入的字符串中截取指定范围(例如:从第2个字符开始,到第5个字符结束的部分)的内容(截取范围也作为cut函数的输入参数传入。)。截取结果分别放在字符串str3和str4中。再将str3和str4作为输入参数传入connect函数。connect函数负责将传入的两个字符串顺序拼接在一起。编程实现上述函数,要求最终输出拼接结果。不能用全局变量。 3.每个学生信息存储在一个结构体中,结构体包括学号、数学成绩、英语成绩、计算机成绩、平均成绩五部分。Ave函数负责计算一个学生的平均成绩。Find函数负责找到平均成绩最高的学生,Print函数负责按表格的形式输出一个学生的全部信息,内容全部左对齐,表头为“No.Math.Eng.Comp.Ave.”。编程实现上述函数,要求输出一个班中(不少于8人)平均成绩最高的学生的信息。 (二)实验要求 掌握根据需求选择正确的参数传递方式完成相应任务的技能。实验五 递归调用训练 (一)实验内容 本次实验对函数的递归调用进行训练。 实验题目分如下两类,学生可分别从每类中选择1道来完成: 1.基本题 (1)用递归函数完成斐波那契级数的计算,并输出斐波那契级数序列的前n项。n由用户输入。 (2)用递归函数完成下列函数的计算,并输出序列的前n项。n由用户输入。 n1m0f(m,n)f(m1,1)m0,n0f(m1,f(m,n1))其他 2.提高题 (1)用递归函数实现将给定正整数转换为二进制数的功能,并输出转换结果。正整数由用户输入。例:【输入】256 【输出】100000000(2)用递归函数实现将给定的纯小数换为二进制数的功能,并输出转换结果。纯小数由用户输入。例:【输入】0.625 【输出】0.101 (二)实验要求 能设计实现递归函数完成相应任务。实验六 文件操作训练 (一)实验内容 本次实验对文件的打开、关闭和读写等操作进行训练。实验题目分如下三类,学生可分别从每类中选择1道来完成: 1. 文件读操作 (1)直接通过对文件的读操作(即不允许将文件内容全部读入到缓冲区中),统计已知的文本文件(txt格式)中总共有多少个英文字符(区分大小写,且不算标点符号)。例如:Machine learning is the term.中的英文字符为24个。 (2)直接通过对文件的读操作(即不允许将文件内容全部读入到缓冲区中),统计已知的文本文件(txt格式)中的英文单词个数(以空格或标点符号分隔的字符串视为一个英文单词)。 例如:Machine learning isn’t a word.中的英文单词为6个。2. 文件写操作 (1)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中,也不允许将缓冲区中的内容写到文件中),将已知的文本文件(txt格式)中的指定字符c1修改为特定字符c2。c1和c2由用户指定,并作为程序的输入。 (2)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中),将已知的文本文件(txt格式)中的指定单词w1修改为特定单词w2。w1和w2由用户指定,并作为程序的输入。3. 文件创建操作 (1)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中),复制已知文 7 本文件file1中的内容到一个新的文本文件file2中。注意在file2中保持源文件中的格式。(2)通过对文件的直接读写操作(即不允许将文件内容全部读入到缓冲区中),将已知文本文件file1中指定位置的指定长度的字符串复制到一个新的文本文件file2中。指定位置由行号和起始字符位置给出。 例如:文件file1中第1行的内容为:Machine learning is the term.则复制第1行第5个字符开始的6个字符到file2中后,file2的内容为:ine le (二)实验要求 能通过对文件的操作完成相应任务。实验七 控制结构训练训练 (一)实验内容 本次实验对控制结构以及控制结构的嵌套进行训练。实验题目如下,学生可从中选择2道来完成: 1.随机输入n个正整数,编程分别求出其中在奇数位序上的(即第1、3、5、7、….个)奇数的和,以及偶数位序上的((即第2、4、6、8、….个))偶数的和。 2. 编写程序,不断读取用户的键盘输入(回车分割)。如果是英文字母则一律转换为小写字母,依次存入一个足够长的字符数组中;如果是阿拉伯数字(不超过4位)则依次放到一个足够长的整数数组中;如果是其他符号,则将其ASCII存入另一个数组中。最后输出3个数组中的内容。 3.在一段英文文章中,找到给定字符串str的所有出现,输出其出现的位置。编程实现之。 (二)实验要求 能利用顺序、分支、循环,以及它们的各种嵌套完成相应的任务。实验八 调试测试训练 (一)实验内容 本次实验对程序的调试和测试进行训练。实验题目如下,学生可从中选择1道来完成: 1.约瑟夫问题:假设有n个人围圈而坐,现在从第k人开始数数,数到m的人出列,紧接着的后续人又从1开始数数,到m出列,如此重复下去,直到全体人员出列。输出出列序列。 #include typedef struct _foruse { struct _foruse* next;int number;}foruse,*link; link create(int n);void joseph(link head, int k, int m); link create(int n){ link head =(link)malloc(sizeof(foruse));foruse *tail;int i;head->next = head;head->number = 1; tail = head;for(i=2;i<=n;i++){ foruse *p =(foruse*)malloc(sizeof(foruse));p->number = i;p->next = tail->next;tail->next = p;tail = p;} return head;} void joseph(link head, int k, int m){ int j;foruse *p;foruse *q;if(m == 1 && k == 1){ p = head;while(p->next!= head){ printf(“%d ”,p->number);q = p->next;free(p);p = q;} printf(“%dn”,p->number);} else if(m == 1 && k!= 1){ p = head;for(j=1;j p = p->next;while(head->next!= head){ for(j=1;j #include if(p3->next==p&&p3->data!=e){ printf(“no exist ,enter againn”);scanf(“%d”,&e);look(p,e);} return(p3);} int main(){ int x,s,y,i;printf(“please enter the number of people:n”);scanf(“%d”,&x);/* while(x<=2||x>=50){ printf(“out of range ,enter againn”);scanf(“%d”,&x);} */ printf(“enter each people's numbern”);LinkList head=(LNode *)malloc(sizeof(LNode));LNode *p1,*p2;p1=head;for(i=1;i<=x;i++){ p1->next=(LNode *)malloc(sizeof(LNode));scanf(“%d”,&s);p1=p1->next;p1->data=s;p1->next=head->next;} p1=head->next; for(i=1;i<=x;i++){ printf(“%d ”,p1->data);p1=p1->next;if(i%10==0)printf(“n”);} printf(“please enter the interval numbern”);scanf(“%d”,&y);while(y<1){ printf(“insignificance,erter againn”);scanf(“%d”,&y);} printf(“enter the first numbern”);scanf(“%d”,&s);p1=look(head->next,s);while(p1->next!=p1){ int j=1; while(j p1=p1->next; j++;11 } p2=p1->next; p1->next=p2->next; printf(“%d ”,p2->data); free(p2);p1=p1->next;} printf(“OK!n”);return 0;} (二)实验要求 能根据提示调试语法错误,能通过测试修正程序。实验九 综合训练 (一)实验内容 本次实验对学生使用前述实验中的各项技能完成所需任务的能力进行训练。实验题目如下,学生可从中选择1道来完成: 1.手机通讯录中每条记录包括:姓名、手机号、类别(如:同学、亲属、同事、好友等)三部分内容。请编写程序完成从文件导入手机通讯录,能对手机通讯录进行增、删、查、改,并能将手机通讯录导出到文件的功能。 2.编写程序,可以统计任给的一个英文文件(.txt格式)中每个英文字母(区分大小写)出现的频率,以及每个英文单词出现的次数。并将统计结果分别输出到两个文件中。结果按频率和次数的升序排列。 3.用数组存储一个集合中的元素,编程实现两个集合的交、并、差、对称差运算。不能改变参与运算的集合内容,不能使用全局变量。 (二)实验要求 能利用程序设计的各项技能完成相应任务。实验十 上机考试 (一)实验内容 本次实验对学生掌握和运用程序设计基本技能的情况进行考核。 (二)实验要求 能在规定的时间内完成指定的程序设计任务,并调试测试通过,得到正确的运行结果。 四、进程安排 实验一 基本设计方法训练 实验二 输入输出格式控制训练 实验三 指针及字符串训练 实验四 参数传递训练 实验五 递归调用训练 实验六 文件操作训练 实验七 控制结构训练 实验八 调试测试训练 实验九 综合训练 实验十 上机考试 3学时 3学时 3学时 3学时 3学时 3学时 3学时 3学时 3学时 3学时 五、教学参考书 《Computer Algorithms-Introduction to Design and Analysis(3rd edtion)》(影印版),Sara Baase著,高等教育出版社,2000.《Introduction to Algorithms》(影印版),Thomas Cormen,机械工业出版社,2009.《Algorithms(Fourth Edition)》(英文版·第4版),Robert Sedgewick, Kevin Wayne著,人民邮电出版社,2013.《C++数据结构与算法》(第4版),[美] 乔兹德克(Drozdek, A.)著;徐丹,吴伟敏 译,清华大学出版社,2014.《数据结构与面向对象程序设计(C++版)(》第4版),[美] 梅因(Michael Main),萨维特奇(Walter Savitch)著; 金名 等 译,清华大学出版社,2012.《数据结构》,陈越 主编,高等教育出版社,2012.《数据结构(C语言版)》,严蔚敏,吴伟民 著,清华大学出版社,2011.《程序设计实践教程》,章小莉,周知扬,张岩,赵耿,清华大学出版社,2012.六、考核方式及成绩评定参考标准 本课程安排10次实验(含1次上机考试),共30学时。除上机考试外,每个实验均按5分制打分,最后合成45分,占期末总评成绩的45%。 考核中承认学生能力差别,肯定每个学生的努力,激励独立完成任务,鼓励挑战难题,允许获取教师和同学的帮助,反对盲目抄袭和作假,引导学生按能力选题,积极动手实践,在学习中不断成长。 实验评分标准: 5分:实验预习充分,上机准时,操作熟练,能独立完成代码设计,程序调试,按时完成,代码注释充分,结果正确。 4分:实验预习良好,上机准时,操作比较熟练,能在指导下完成代码设计,顺利调试程序,按时完成,代码注释较充分,结果较正确。 3分:实验预习较好,上机准时,操作比较熟练,基本完成实验任务,代码有注释,结果基本正确。 2分:程序功能基本完整,但没有完成程序调试,无实验结果。1分:程序功能不完整,有重大问题,没有完成程序调试,无实验结果。0分:没有参加实验,也没有相应代码。 大纲撰写人:张 岩 大纲审阅人:赵 越 系部负责人:汪永好 《马克思主义基本原理概论》实践教学大纲 实践课时安排及考核 注:实践占总成绩30%,实践过程中的出勤率、参与程度,占实践的20%。 附录1: 附录2:相关电影 空《宇宙与人》;《大国崛起》;《人工智能》;《唐山大在地震》; 《摩登时代》;《夜店》;《后天》;《2012》;《PARTY》; 《海上钢琴师》;《时机器》;《我的录取通知书》;《华尔街》 《活着》;《楚门的世界》;《求求你表扬我》;《风声》;《卡拉是条狗》 《我是你爸爸》 附录3:阅读书目 1.《中华的智慧》张岱年主编 它所讲述的不是实务中的聪明机敏,而是哲学的智慧,也就是立身处世、认识宇宙和把握真理的能力。 2.《三十岁以前的毛泽东》李锐 此书用许多可靠材料讲述毛泽东青年时代的思想历程,是研究毛泽东的权威著作之一。 3.《西方的智慧》(英)罗素 一个大哲学家在他的巨著《西方哲学史》之后为普通读者写的哲学史,读此书得到的不仅有快乐,还有思想的充实、心灵的提升。 4.《历史深处的忧虑》林达 这是作者多部系列著作中的第一部,以东方留学生的眼光看美国,描述自己看到的阳光和阴影,思索背后的根源,使读者感到亲切而绝不浮泛。 5.《希腊的神话和传说》(德)斯威布著,楚图南译 要了解欧洲、认识世界,你必须了解希腊神话和传说。 6.《中国哲学史新编》,冯友兰著 冯友兰先生作为研究中国哲学史的大家,在其众多著作之中,这是一部最能代表他的研究成就的新著。 7.《活着》余华 人被生活戏弄,这部当代小说写出了人生和社会的双重荒谬。 8.《哈姆雷特》莎士比亚 没有读过莎士比亚,肯定不是一个合格的英国人,也算不得一个比较优秀的中国人。 9.《共产党宣言》马克思 美国中学生的必读书之一,社会主义中国的大学生难道不应该知道里面到底说了些什么? 10.《西方哲学史》(多种版本) 西方哲学流派甚多,理论也比较复杂,读一本《西方哲学史》后有兴趣再去读原著吧。 11.《中国科学技术史》李约瑟 由英国人来写中国科学技术史,你不想知道他的视角很独特吗? 12.《时间简史》霍金 霍金是一个科学史的奇迹,但我觉得他首先是一个生命史的奇迹。 13.《社会契约论》卢梭 不读这本书,不会懂得现代社会是在什么基础上建构起来的。 14.《只有一个地球》芭芭拉·沃德、勒内·杜博斯 只有真正理解“只有一个地球”的道理,人类才有未来。 汉译英实践教学大纲 课程名称:汉译英实践 课程编码:12120208 英文名称:Translation Practice from Chinese into English 学时:2周 课程性质:实践课 课程类别:必修 适用专业:英语 学分:2 一、课程性质与任务 根据天津科技大学外国语学院英语专业本科教学计划,第六学期前两周组织英语专业三年级学生进行汉英翻译实践,使学生有此机会用以前学过的有关英语的专业知识对汉译英的实际工作进行具体操作和实践。该实践课的任务是让学生充分以所学专业知识武装自己,全身心投入到实践工作中去,并在指导教师的帮助和指导下从中找出理论与实际的关系,进一步明确学习目标,理论联系实际。 二、课程教学的基本要求 教师应指导学生在汉英翻译实践中,按照学院的相关规定和要求进行工作,做到: 1.指导教师要求学生在规定的时间内在校内完成把大约由1500个汉字组成的篇章翻译成英文的实践工作。 2.指导学生认真完成该项实践工作,培养学生查阅资料或词典的能力。 3.学生要认真参照原文和指导教师批阅的初稿,积极认真地对初稿进行修改,并将最终的定稿连同原文与初稿一起上交。 三、课程内容及教学要求 基本实践内容: 1.实践指导教师负责提供字数大约为1500的汉语篇章篇章,题材不限,但形式要求是非对话 类;篇章的来源不限,但必须出自汉语是母语的作者。 2.学生在规定时间认真完成翻译初稿后,要及时上交给指导教师。 3.指导教师在评阅初稿时,要将翻译错误和不确切的地方用红笔标注并进行批改,然后将原稿和初稿交回学生,以进行修改并定稿。 4.学生按照指导教师的批改,结合原稿,进行整理,在规定的时间和地点按照学院规定的统一格式要求将最终的定稿进行打印并上交。汉译英实践重点: 1.学生在实践过程中,要坚持认真的态度,对指导教师提供的原文进行仔细的阅读和正确理解,保证翻译的准确性。 2.对原文中不理解的内容要积极主动地向指导教师求教,并与之保持联系并进行沟通。3.要认真阅读经过指导教师批改的初稿,加以理解,并按照统一格式进行最后修改。4.在定稿的录入、打印和递交阶段,要严格按照学院规定的相应时间进行,对无故迟交或不交的同学,将按有关规定处理。 四、考核方式 汉译英实践课程的考核方式为考查,要求学生做到: 1.按学院的相关规定在校内进行实践工作。 2.在学校按照学院的要求在规定时间将初稿上交到指导教师,并在教师批改后到学校安排的机房录入定稿,最后在学院的安排下统一打印并及时上交。 3.译文定稿要按照学院的统一格式打印。 4.指导教师根据初稿,并结合定稿的修改情况和学生的态度对学生进行评定,评语用英文写在初稿的最后一页,成绩标注在定稿封皮的右上方,并按照定稿、原稿和初稿的顺序装订。 5.每位参与汉译英实践的学生所递交的译文将由指导教师按照统一标准进行评阅,并将成绩记入档案。 制定人:姚国树 审定: 批准: 2006年 12月第三篇:《程序设计实践》教学大纲
第四篇:马克思实践教学大纲
第五篇:汉译英实践教学大纲