文档视界 最新最全的文档下载
当前位置:文档视界 › 计算机程序设计基础学习

计算机程序设计基础学习

计算机程序设计基础学习
计算机程序设计基础学习

13.1 计算机程序的概念

所谓计算机程序,就是一些编写的代码或指令,这些代码或指令可以驱动计算机,完成某些特定的工作。编写计算机程序的人员称为程序员。我们熟悉的一些软件系统,例如Windows,MS Office等等,其中最重要的组成部分就是计算机程序,大家用到的纷繁复杂的各种功能,都是由若干程序的片断组成,这些计算机程序是许多优秀程序员的智慧结晶。

有些读者或许会想,我并不打算成为一个专业的程序员,也不会去编写大型的软件,计算机程序对我有什么用呢?实际上,计算机技术已经渗透到各种领域,我们在日常生活和工作中总会遇到一些计算机程序可以解决的问题。掌握一些计算机程序的基础知识,便于在实际工作中解决一些问题,提高工作效率。

图13.1就是一段用Visual C++编写的程序代码。

图13.1 Visual C++程序代码

13.2 设计程序的过程

我们用实际的例子来说明设计一个程序的过程。中国古代的《算经》中有个著名的“百钱百鸡”问题:公鸡5文钱一只,母鸡3文钱一只,小鸡一文钱三只;现在要用100文钱正好买100只鸡,问公鸡、母鸡和小鸡应该各买多少只?这个问题用代数的方法很难求解,逐个数去试又很费时间。但是,如果我们利用计算机程序去分析这个问题,很快就可以得到结果。怎样用计算机程序解决这个问题呢?

13.2.1 描述问题

我们已经知道了“百钱百鸡”问题,但对于计算机来说,问题本身并不清晰。哪些是输入的参数,输入参数的约束和条件是什么?输出什么?需要对这个问题做一些整理和抽象,将问题描述为一些可以用来解决问题的要素(专业的术语叫做建立数学模型)。一般来说,表达清晰的问题描述应该具备以下三个特征:

1. 能说明问题域的相关假设

2. 列出已知条件和约束

3. 具体说明解决什么问题

例如,对于“百钱百鸡”问题,我们可以做下面的问题描述:

1. 假设:用未知数x代表公鸡的个数,y代表母鸡的个数,z代表小鸡的个数。

2. 已知条件:x、y和z都只能是正整数;买每只公鸡需5文钱,x只公鸡共需

要5x文钱;买每只母鸡需3文钱,y只公鸡共需要3x文钱;三只小鸡一文钱,小鸡个数为3的倍数,且大于等于3,z只小鸡共需要z/3文钱;

3. 解决问题:x+y+z=100且5x+3y+z/3=100时,x、y和z所有可能的值。

4. 输出:所有可以解决问题的x、y、z值。

“百钱百鸡”这个问题的描述相对要容易一些。在某些实际应用中,例如某些企业业务流程,问题描述要复杂的多,需要一定的经验、技巧和抽象能力。

13.2.2 设计算法

问题描述清楚后,就可以设计适当的计算机算法去解决问题。

1.计算机算法的概念

所谓计算机算法,就是计算机能执行的、为解决某个问题所采取的方法和步骤。计算机是一种由指令驱动的机器,只能机械地执行指令。它本身不会思考,也不会理解任何问题。要使计算机能解决问题,必须首先为如何解决问题设计一个算法,然后再根据算法编写程序。算法是抽象的解题方法,是问题求解过程的精确描述。算法有以下五个主要特征:

?有效性:算法的每一个步骤都必须可行并能达到预期目的。

?确定性:算法的每一个步骤都是明确定义的,不允许有多义性。

?有穷性:算法必须在有限的时间内执行完,即必须在有限个步骤后中止。

?足够的信息:算法有足够的输入信息(条件)。

?必定的输出:必须给用户提供解决问题的答案。

另外,一个问题可以有多种算法来解决,不同的算法可能导致程序效率的优劣。例如,如果要计算1+2+3+...+100,可以将1和2相加,然后将它们的和与3相加,依次类推。但也可以采用算法:1+2+3+...+100=(1+100)+(2+99)+...+(50+51)=101×50=5050,显而易见后者比前者的计算速度要快得多。

在设计算法时,还要注意充分利用计算机的特点,使算法尽量简练并具有较好的通用性。例如,要计算1×2×3×...×100的值,可以使用算法:

步骤1:计算1×2,得结果1×2=2;

步骤2:上个步骤的结果乘以3,得结果2×3=6;

步骤3:上个步骤的结果乘以4,得结果6×4=24;

... ...

步骤99:第98个步骤的结果乘以100,得到最终结果。

这个算法可以得到正确结果,计算机运算速度极快,可以在极短时间内完成计算。但是,该算法过于繁琐,如果上述算法写出计算机程序,至少需要99行代码。而且,如果要改算1×2×3×...×50或1×2×3×...×300时,算法和程序还需要大规模的改动。

可以用另一种算法完成上述运算。设定两个变量x和i,x表示被乘数,i表示乘数。开始将1放在x中,2放在i中,计算i和x的积后,将结果再放入x,x现在等于1×2;i自加1

后变为3,再和x相乘,结果仍放入x,x现在等于1×2×3;......;继续上述过程,直到最终x等于1×2×3×...×100,算法可以描述为:

步骤1:将1放入x;

步骤2:将2放入i;

步骤3:计算i乘以x,结果放入x;

步骤4:i自己的值加1,结果放回i;

步骤5:如果i小于等于100,转入步骤3继续计算;否则,算法结束,x的值就是1×2×3×...×100的值。

可以看出,虽然这种算法的速度和前面的算法不相上下,但描述非常简捷,如果写成计算机代码,10行就足够了。另外,这种算法的灵活性很好。比如现在要改算1×2×3×...×50,只需要将步骤5的“如果i小于等于100”改为“如果i小于等于50”即可;如果要改算1×3×5×7×...×99,只需要将步骤4的“i自己的值加1”改为“i自己的值加2”即可。

“百钱百鸡”这个问题可以用穷举算法来解决。根据问题描述,公鸡和母鸡的可能个数都在1至100之间(实际上范围可以更小,这里为简单起见按照100讲述),小鸡的可能个数都在3至100之间。如果我们把公鸡、母鸡和小鸡个数的每种可能都试一下,看看哪种个数搭配正好花完100文钱,那么一定可以找到所有可能的答案。这就好比你忘记了密码箱的密码,无奈只好逐个去试。如果密码是三位的,每位可能是0~9,那么你需要试最多10×10×10=1000次。同样,如果去试公鸡、母鸡和小鸡的个数,需要100×100×33=330000次,显然这个次数对于人工尝试是痛苦的。但是,计算机如果做这个工作就太简单了,计算机的速度快,且不知疲倦,百万次的计算不到1秒即可以完成。这样,“百钱百鸡”的算法可以描述为:

步骤1:将1放入x;

步骤2:将1放入y;

步骤3:将3放入z;

步骤4:检查5x+3y+z/3和x+y+z,如果二者均等于100,则打印输出x、y和z;

步骤5:z的值加3,结果放回z(因为z只可能是3的倍数);

步骤6:如果z小于等于100,转入步骤4继续检查;否则继续下面的步骤;

步骤7:y的值加1,结果放回y;

步骤8:如果y小于等于100,则转入步骤3继续;否则继续下面的步骤;

步骤9:x的值加1,结果放回x;

步骤10:如果x小于等于100,则转入步骤2继续;否则算法结束。

注意在上述步骤中,x和y等于1,z变化时,步骤4被执行了33次;x等于1,y和z变化时,步骤4被执行了100×33次。整个算法中步骤4执行了100×100×33=330000次。

2.算法的表示

为了表示一个算法,可以用不同的方法,常用的算法表示方法有传统流程图、N-S流程图和伪代码。

(1)传统流程图

传统流程图使用一些符号和图框表示计算机算法。如表13.1所示,这些常用的流程图符号是ANSI规定的,已经被世界各国的软件提供商普遍采用。

表13.1 常用流程图符号

表13.1中菱形框的作用是对框内的条件进行判断,根据判断的结果决定走哪个分支。菱形框有一个入口,两个出口。两个出口旁边一个写Y(或T),代表逻辑真;另一个写N(或F),代表逻辑假,如图13.2所示。矩形框代表要进行的赋值、处理和计算等。流程线代表算法步骤的走向,注意不要忘记箭头。流程图较大时,可以拆分为多个子流程图,用连接点(中间加标号)连接。

“百钱百鸡”问题用传统流程图表示如图13.3所示。

传统流程图的特点是直观形象,易于理解,可以很清楚的反映出算法各框之间的逻辑关系。但当算法比较复杂时,传统流程图的表达并不理想,目前正逐步被其他表示方法代替。但传统流程图作为一种形象的方法在许多场合还被使用,读者应该熟练掌握。

(2)流程图

用传统流程图表示的算法最大的缺点是使用步骤跳转。当算法简单时尚好理解;当算法复杂时,流程跳来跳去,使人难以理解,也难于发现算法中的问题。60年代末期,出现了“结构化程序设计”理论,解决了这个问题。

“结构化程序设计”的基本思路是:

?强调算法的清晰和可读性。

?算法由一些基本结构组成。

?基本结构具有一个入口,一个出口。

?基本结构之间不允许跳转,步骤移动限制在一个基本结构内。

N-S流程图也称盒图,形状象一个多层的盒子,非常适合表达结构化算法。它抛弃了传统流程图的流程线,结构紧凑。整个算法是一个大的矩形框,框中包括若干个代表基本结构(顺序、分支和循环)的小矩形框,矩形框之间不存在跳转。

N-S流程图用矩形表示顺序、分支和循环,如图13.4所示:

图13.4 ?N-S流程图的矩形

图13.4(a)表示算法执行完A后,顺序执行B;图13.4(b)表示检查某个条件,条件成立则执行A,否则执行B;图13.4(c)和图13.4(d)表示只要条件成立,A就重复执行,直到条件不成立才结束循环。

A或B可以是一个算法步骤,也可以是一组步骤,或者是另外一种结构。这些基本结构互相嵌套,相互堆积,形成复杂的算法结构。理论上可以表示任何算法结构。

例如,“百钱百鸡”问题用N-S流程图表示图13.5所示。

N-S流程图最大的优点是实现了程序的结构化,便于人们通过流程图理解算法,即使算法比较复杂和庞大,通过N-S流程图建立、修改和维护算法也比传统流程图方便。

(3)伪代码

伪代码是一种介于自然语言和计算机程序之间的描述算法。它和实际的程序结构非常类似,但不使用特定的程序语言的语法,而是使用人们比较容易理解的自然语言。

伪代码没有固定的语法规则,形式比较自由,只要便于理解,清晰易懂就可以了。伪代码可以使用英文或中文,也可以混合使用,一般是英文的关键字加中文的说明。

“百钱百鸡”问题用伪代码表示如下:

BEGIN(算法开始)

1 -> x

do

{

1 -> y

do

{

3 -> z

do

{

if (5x+3y+z/3=100且x+y+z=100)

打印输出x, y, z

endif

z+3 -> z

}while(z<=100)

y+1 -> y

}while(y<=100)

x+1-> x

}

while(x<=100)

END(算法结束)

伪代码的书写格式比较自由,可以很容易的表达出程序员的设计思路。另外,伪代码没有图形,比较容易编辑和修改,因此,实践中熟练的软件专业人员一般使用伪代码比较多。

计算机专业学习计划两篇

计算机专业学习计划两篇 篇一:计算机专业指南学习计划 随着时代的发展和知识经济时代的发展,我认识到知识的重要性,所以我必须树立学习理念,活到老,学到老,时时学习,处处学习。 平民进步的阶梯,教育公平的砝码,学习者充实自我和增进动力的补给站,是广播电视大学的核心价值。中央电大开放教育不仅仅会教给我学科和专业知识,更重要的是帮助我掌握利用现代信息技术进行终身学习的必要技能,为以后继续学习培养良好的学习习惯,我认识到,学会运用现代信息技术进行自主学习,对我今后顺应岗位需求和生活需要,不断地获取知识和提高能力将是非常有益的。虽然,远程教育有极大的灵活性,但自己仍需时刻明白自己是独立的,自我为主的学习者,所以,制定周密而有弹性的学习计划是保证学习成功的重要因素。 我的学习计划如下: 1.参加并通过所有必修课程,如开放教育学习指南,信息管理系统,邓小平理论和三个代表重要思想,Dearnwearer网页设计,计算机应用基础,信息化管理与运作,ERP原理应用,计算机专业指南,网站实用技术,英语I,微积分初步。 2.修够上述必修课的学分80分,并参加其它选修课,使学习达到一学期需达到的76分学分。 在自学的过程中,要树立自强不息的精神,要做到以下几点:

〔1〕要有学习风险意识和刻苦学习的精神。没有辛勤的耕耘,就得不到丰收的硕果。对于学习中遇到的挫折与困难,要仔细分析问题和原因,不气馁,不放弃。 〔2〕对能否顺利毕业不产生畏惧感,坚信只要有努力就会有收获。为了下一秒的精彩,在这一秒我会百分之百付出! 〔3〕严格约束自己,根据制定的学习计划完成自己的目标,如期完成学习任务,力争做到今日事今日毕。 虽然是开放教育,但我们要自主学习,要做到勤学。 〔1〕要上好面授课,提高课堂学习效率。 〔2〕安排好业余时间,每天都要有进步。 〔3〕多听,多看,多记。 〔4〕学习中经常会遇到一些自己无法解决的问题,这就需要做到善问。 所以,我的详细措施如下: 1.认真听讲,利用电大的多媒体进行多方位的学习。在听课过程中努力听懂和积极思考的基础上做好笔记,作业,预习,复习等工作,在空间时间要通过看书,积极参加小组讨论。 2.面授课做好预习,复习工作,有了预习,老师在上课过程中可以把我们不理解,不明白的地方使我们弄懂。 3.合理分配时间,我们必须利用时间理解知识,达到举一反三。 4.成立学习小组,解决学习困难,与同学们进行学习上的交流。 5.积极参加多媒体教学,掌握学习内容。

C语言程序设计课程设计题目

1 一元稀疏多项式的运算 问题描述:设有两个带头指针的单链表表示两个一元稀疏多项式A、B,实现两个一元稀疏多项式的处理。 实现要求: ⑴输入并建立多项式; ⑵输出多项式,输出形式为整数序列:n,c1,e1,c2,e2……c n,e n,其中n是多项式的项数,c i,e i分别为第i项的系数和指数。序列按指数降序排列; ⑶多项式A和B相加,建立多项式A+B,输出相加的多项式; ⑷多项式A和B相减,建立多项式A-B,输出相减的多项式; ⑸多项式A和B相乘,建立多项式A×B,输出相乘的多项式; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 测试数据: (1) (2x+5x8-3.1x11)+(7-5x8+11x9) (2) (6x-3-x+4.4x2-1.2x9)-(-6x-3+5.4x2+7.8x15) (3)(x+x2+x3)+0 (4)(x+x3)-(-x-x-3) 2 成绩排序 假设某年级有4个班,每班有45名同学。本学期有5门课程考试,每门课程成绩是百分制。假定每个同学的成绩记录包含:学号、姓名各门课程的成绩共7项,其中学号是一个10位的字符串,每个学生都有唯一的学号,并且这4个班的成绩分别放在4个数组中,完成以下操作要求: ⑴编写一个成绩生成函数,使用随机数方法,利用随机函数生成学生的各门课程的成绩(每门课程的成绩都是0∽100之间的整数),通过调用该函数生成全部学生的成绩; ⑵编写一个平均成绩计算函数,计算每个同学的平均成绩并保存在成绩数组中; ⑶用冒泡排序法对4个班的成绩按每个同学的平均成绩的以非递增方式

进行班内排序; ⑷用选择排序法对4个班的成绩按每个同学的平均成绩的以非递增方式进行班内排序; ⑸对已按平均成绩排好序的4个班的同学的构造一个所有按平均成绩的以非递增方式排列的新的单链表; ⑹设计一个菜单,至少具有上述操作要求的基本功能。 3 迷宫问题 问题描述:以一个m×n的长方阵表示迷宫,0和1分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的通路,或得出没有通路的结论。 实现要求: ⑴实现一个以链表作存储结构的栈类型,然后编写一个求解迷宫的非递归程序。求得的通路以三元组(i,j,d)的形式输出,其中:(i,j)指示迷宫中的一个坐标,d表示走到下一坐标的方向。 ⑵编写递归形式的算法,求得迷宫中所有可能的通路; ⑶以方阵形式输出迷宫及其通路。 [测试数据] 迷宫的测试数据如下:左上角(1,1)为入口,右下角(8,9)为出口。 1 2 3 4 5 6 7 8 实现提示:

计算机图形学实验

实验1 直线的绘制 实验目的 1、通过实验,进一步理解和掌握DDA和Bresenham算法; 2、掌握以上算法生成直线段的基本过程; 3、通过编程,会在TC环境下完成用DDA或中点算法实现直线段的绘制。实验环境 计算机、Turbo C或其他C语言程序设计环境 实验学时 2学时,必做实验。 实验内容 用DDA算法或Besenham算法实现斜率k在0和1之间的直线段的绘制。 实验步骤 1、算法、原理清晰,有详细的设计步骤; 2、依据算法、步骤或程序流程图,用C语言编写源程序; 3、编辑源程序并进行调试; 4、进行运行测试,并结合情况进行调整; 5、对运行结果进行保存与分析; 6、把源程序以文件的形式提交; 7、按格式书写实验报告。 实验代码:DDA: # include # include

void DDALine(int x0,int y0,int x1,int y1,int color) { int dx,dy,epsl,k; float x,y,xIncre,yIncre; dx=x1-x0; dy=y1-y0; x=x0; y=y0; if(abs(dx)>abs(dy)) epsl=abs(dx); else epsl=abs(dy); xIncre=(float)dx/(float)epsl; yIncre=(float)dy/(float)epsl; for(k=0;k<=epsl;k++) { putpixel((int)(x+0.5),(int)(y+0.5),4); x+=xIncre; y+=yIncre; } } main(){ int gdriver ,gmode ;

计算机程序设计基础习题册(含答案)

《计算机程序设计基础》 习 题 册

班级学号姓名成绩一、单选题 1.C++源程序文件的默认扩展名为A。 A) cpp B) exe C) obj D) lik 2.由C++源程序文件编译而成的目标文件的默认扩展名为C。 A) cpp B) exe C) obj D) lik 3.由C++目标文件连接而成的可执行文件的默认扩展名为B。 A) cpp B) exe C) obj D) lik 4.编写C++程序一般需经过的几个步骤依次是B。 A)编译、编辑、连接、调试 B)编辑、编译、连接、调试 C)编译、调试、编辑、连接 D)编辑、调试、编辑、连接 5.程序中主函数的名字为 A 。 A) main B) MAIN C) Main D) 任意标识符 6.下面四个选项中,均是不合法的用户标识符的选项的是C。 A) A p_o do B)float lao _A C)b-a goto int D)_123 temp INT 7.下列变量名中合法的是C。 A) B)C)Tom B) 3a66 C) _6a7b D) $ABC 8.存储以下数据,占用存储字节最多的是 D 。 A) 0 B) ‘0’ C) “0” D) 0.0 9.在C++语言中,字符型数据在内存中的存储形式是D。 A) 补码 B) 反码 C) 原码 D) ASCII码 10.若有说明语句:char c =’\072’;则变量c A。 A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,变量的值不确定 二、填空题 1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。 2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。 3.一条表达式语句必须以__分号_;___作为结束符。 4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。 5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令

程序设计基础课程设计

设计题目:学生成绩管理系统班级:计0902 姓名:付乐颖 学号:20091221067 完成日期:2010.10.15

1. 课程设计目的和要求 随着科学的发展和社会的进步,许多过去有人工处理的繁杂事务开始交付计算机来完成。学生成绩管理系统可以说是一个得力助手,它利用计算机对学生成绩进行统一管理,实现学生成绩信息管理工作流程的系统化、规范化和自动化,提高了广大教师的工作效率。 本程序旨在训练学生的基本编程能力,了解管理信息系统的开发流程,熟悉C语言的文件等的各种基本操作,使学生能对C语言的文件操作有一个更深的理解。为进一步开发出高质量的信息管理系统打下坚实的基础。 2. 课程设计任务内容 学生包含以下信息项:学号、姓名、学院、班级、高数成绩、英语成绩、C语言成绩、总分、平均分。系统的主要功能包括: 1. 创建学生成绩信息文件,根据提示输入学生的各项信息,计算出总分和平均分,然后按学号对学生信息进行排序,并将排序后的学生成绩信息存储到一个二进制文件中。 2. 增加学生信息,在原有学生信息文件的基础上增加新的学生成绩信息,要求:增加后的学生信息仍按学号排序,并继续保存至原文件。 3. 删除学生信息,提示用户输入要进行删除操作的学号,如果在文件中有该信息存在,则将该学号所对应的学生信息删除,否则输出提示信息,并提示用户选择是否继续进行删除操作。 4. 修改学生信息,提示用户输入要进行修改操作的学号,如果在文件中有该息存在,则将提示用户输入该学号对应的要修改的选项,结果保存至原文件,并提示用户选择是否继续进行修改操作。 5. 按不同条件对学生信息进行查询操作,输出满足条件的学生信息。 (1) 按学号查询,输入一个学号,输出对应的学生信息。

计算机图形学课程设计——扫雷游戏程序设计

计算机图形学课程设计——扫雷游戏程序设计

《计算机图形学》课程设计报告 VC++扫雷游戏的程序设计 专业班级: 小组成员:

指导老师: 日期:2012年12月24日 1、需求分析 本课程设计实现类似于Windows XP操作系统自带的扫雷游戏。该设计以V isual C++ 6.0为开发环境, Windows 7/XP为程序运行平台。在程序设计中,把整个雷区看成一个二维数组,把雷方块定义为具有所在雷区二维数组的行和列、当前状态、方块属性、历史状态的结构体,采用了MFC机制解决问题的方法。整个游戏程序包括了布雷、扫雷过程和结果三个阶段,在处理鼠标响应事件中伴随着GDI绘图。程序通过调试运行,实现简单的设计目标,满足扫雷游戏初学者的需要。 通过本课程设计,以便更好的巩固计算机图形学相关知识,掌握课程设计基本的方法和技巧,同时增加同学之间的团队合作精神以及培养分析问题、解决问题的能力。 2.总体设计 2.1 功能概述 扫雷游戏的游戏界面如图1所示。在这个界面中,由众多面积均等的小方块所组成的区域称之为雷区,雷区的大小由用户设置的游戏等级决定。

图1 游戏开始时,系统会在雷区中随机布下若干个地雷。安放地雷的小方块称之为雷方块,其他的称之为非雷方块。部署完毕后,系统会在其他非雷方块中填充一些数字。某一个具体数字表示与其紧邻的8个方块 中有多少雷方块。玩家可以根据这些信息去判断是否可以鼠标点击方块, 并把认为是地雷的方块打上标识。当玩家将所有地雷找出后,其余的非雷方块区域都已打开,此时游戏结束。在游戏过程中,一旦错误地打开了雷方块则立即失败,游戏结束。 游戏规则总结: ●开始:按左键开始游戏,按按钮或菜单重新开始。 ●左键:按下时,是雷则结束,非雷则显示数字。 ●数字:代表此数字周围一圈八格中雷的个数。 ●右键:奇次按下表示雷,偶数按下表示对上次的否定。 ●结束:左键按到雷结束,找出全部雷结束。 在游戏开始后,雷区上方有两个计数器。右边的计数器显示用户扫

计算机专业课学习顺序

计算机专业课学习顺序计算机2009-01-25 21:20:12 阅读46 评论0 字号:大中小 一. 1.c语言程序设计 2.数据结构《数据结构》严蔚敏清华大学出版社 3.计算机组成原理计算机组成原理(唐朔飞版) 二. 1.操作系统操作系统——内核与设计原理(第四版)(美)William Stallings 操作系统:设计与实现(第二版)上册(美)Andrew S.Tanenbaum Albert 2.编译原理《编译原理》作者:吕映芝张素琴蒋维杜. 出版社:清华大学出版社 《程序设计语言编译原理》作者:陈火旺出版社:国防工大出版社 3.数据库系统王珊、萨师宣的《数据库概论》 三. 1.计算机系统结构《计算机系统结构》(第二版)郑续民编清华大学出版社 2.计算机网络<<计算机网络>>谢希仁编著 、《计算机组成原理》(熟悉) 2、《数据结构》(掌握) 3、《操作系统》(了解->熟悉) 4、《The C language》(掌握) 5、《编译原理》(了解原理) 6、《汇编语言》(了解) 7、《计算机网络》(了解) 8、《软件工程》(了解) 9、《关系数据库》(熟悉) 10、《The C++Languege 》(掌握) 11、《面向对象设计》(掌握;结合C++学习) 1、《The C Programming language》(Keinighan & Dennis Ritchie 1988) 2、《The C++ Programming Languague》(Bjarne Stroustrup 1997) 3、《Inside The C++ Object Model》(lippmans) 4、《Effective C++》(同上) 5、《More Effective C++》(同上) 6、《Exceptional c++》 7、《C++面向对象高效编程》 8、《设计模式》 9、《Thinking In C++》 10、《The Standard C++ Bible》(一般推荐) 11、《The Art of Computer Programming 》 12、《Programming Windows》(Charles Petzold) 13、《VC++5.0技术内幕》 14、《MFC 深入浅出》 15、《软件需求》 16、《Advanced Windows》 17、《C++ primer》 18、《win32程序员参考手册》 19、《用TCP/IP进行网际互连》 20、《COM 本质论》

程序设计基础(知识点)

第三部分程序设计基础 3.1 程序、程序设计、程序设计语言的定义 ⑴程序:计算机程序,是指为了得到某种结果而可以由计算机等具有信息处理能力的装置执行的代码化指令序列,或者可以被自动转换成代码化指令序列的符号化指令序列或者符号化语句序列。 ⑵程序设计:程序设计是给出解决特定问题程序的过程,是软件构造活动中的重要组成部分。程序设计往往以某种程序设计语言为工具,给出这种语言下的程序。程序设计过程应当包括分析、设计、编码、测试、排错等不同阶段。 ⑶程序设计语言:程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。程序设计语言有3个方面的因素,即语法、语义和语用。 3.2 高级语言和低级语言的概念及区别 ⑴高级语言:高级语言(High-level programming language)是高度封装了的编程语言,与低级语言相对。

它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。 ⑵低级语言:低级语言分机器语言(二进制语言)和汇编语言(符号语言),这两种语言都是面向机器的语言,和具体机器的指令系统密切相关。机器语言用指令代码编写程序,而符号语言用指令助记符来编写程序。 ⑶区别: 高级语言:实现效率高,执行效率低,对硬件的可控性弱,目标代码大,可维护性好,可移植性好低级语言:实现效率低,执行效率高,对硬件的可控性强,目标代码小,可维护性差,可移植性差 了解知识:CPU运行的是二进制指令,所有的语言编写的程序最终都要翻译成二进制代码。越低级的语言,形式上越接近机器指令,汇编语言就是与机器指令一一对应的。而越高级的语言,一条语句对应的指令数越多,其中原因就是高级语言对底层操作进行了抽象和封装,

程序设计基础课程设计报告 内容样例

第一章目的与要求 书上有。 第二章需求分析 软件设计的一个重要的环节就是需求分析。本章在对ATM取款机管理系统的应用情况作了全面调查的基础上,确定系统目标,并对系统所需要的基础功能进行分析,从而确定用户的需求。以下是ATM取款机管理系统所需要的需求分析。 ATM管理系统包括六个模块:登录,挂失功能,修改密码,取款功能,转账功能,查询功能。 ①登录: 输入银行卡的账号,密码,验证银行卡的卡号,密码是否正确,之后进入主界面 ②挂失功能: 确认是否对银行卡进行挂失,挂失后账户无法操作 ③修改密码: 用户可自由对其银行卡密码进行修改,修改之后的新密码将会覆盖其原密码 ④取款功能: 用户可自由取得所持银行卡内的存款,所取款数必须在其原有账户余额之内 ⑤转账功能: 用户可将本账户中的存款转入其他账户,转账过程中,需要转入账户的账

号 ⑥查询功能: 用户可查询用户信息,其中包括用户姓名、用户身份证号码、银行卡号以及存款余额 模拟ATM取款机的操作: 首先录入账户信息,格式如下 ㈠、登录功能:输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 ㈡、查询功能:查询账户余额。 ㈢、取款功能:取款,更新余额。 ㈣、挂失功能:挂失后,该账户不能进行任何操作。 ㈤、修改密码:输入原密码和新设置密码。 ㈥、转账功能:输入转账的转出账户以及转账金额,进行转账。

第三章设计分析 3.1、ATM系统管理 3.1.1系统基本功能 首先,确定系统中存在两种用户,一种是ATM,可以进行信息录入和后台管理。另外一种是取款人,取款人主要是进行信息的查询,不能进行信息录入。所以在创建类的时候,先创建一个ATM类,然后创建取款人类,并与ATM 类形成有元,进而继承ATM的所有功能,并添加录入信息的功能。 基本功能: 登录功能---------输入帐号和密码进行登录,如密码错误提示重新输入密码,如帐号错误提示无此帐户。 查询功能---------查询账户余额。 取款功能---------取款,更新余额。 挂失功能---------挂失后,该账户不能进行任何操作。 修改密码---------输入原密码和新设置密码。 转账功能---------输入转账的转出账户以及转账金额,进行转账。、

有关电脑学习的知识

有关电脑学习的知识 计算机专业课程体系介绍(含学习顺序)计算机专业课程自学参考有人说,计算机专业的人编的程序要比非计算机专业的人编的要好.也许这是在大多数情况下适用的,但是并不是绝对的.你在这个方面经验比别人多,研究的比别人深入,那你就比别人专业,所以要相信自己. 我本不是计算机专业的,但是本专业也学过许多计算机课程.准备把没学的补补.下面是计算机专业课程,供大家自学参考,当然这些都是基础. 离散数学,数据结构,计算机组成原理,汇编语言程序设计,面向对象技术,数据通信原理,数字电路与逻辑设计,程序设计课程设计,数据结构课程设计,计算机组成原理试验,数字电路与逻辑设计试验,计算机文化基础,计算机程序设计,线性代数A,概率论与数理统计B,普通物理B,电路电子学数据库系统,操作系统,计算机网络,计算机系统结构,光通信技术,嵌入式系统设计,Internet与web编程,Cisio/Solaris网络体系设计与实现,综合布线系统编译原理,数字系统设计VHDL,信号与系统,微机系统与接口技术,数字信号处理,软件工程,IT项目管理,七号信令系统,电子商务概论,多媒体技术,UNIX操作系统,计算机信息安全移动通信,卫星通信,计算机系统维护技术基础方面:(应该无需解释啦)⒈高等数学⒉线性代数⒊复变函数与积分变换4 概率统计硬件方面:(最终应该达到可以看懂并分析电路图;可以设计专用计算机系统的程度)⒈电路分析基础一切电子方向的基础⒉模拟电子技术基础一切电子方向的基础(开始分化方向)⒊数字电子技术基础数字电子(计算机)专业的基础⒋计算机组成原理抽象的数字电子的“可以用来计算的机器”的大原理⒌微机原理及接口技术基于8086的PC微型计算机系统的原理⒌IBM PC汇编语言程序设计8086CPU指令系统程序设计⒌计算机系统与结构抽象的数字电子计算机系统(非单指计算机)的原理⒌单片机及接口技术单芯片计算机系统的基本原理⒍(计算机)信号与系统从数字电路角度理解的计算机系统的接口与通讯软件方面:(最终应该达到可以阅读并分析程序(不单指源码);可以设计计算机程序系统)⒈离散数学⒈C语言程序设计或C++面向对象程序设计或Pascall语言程序设计⒉数据结构计算机中数据的组织与管理方式(启发式,非结论式)⒊计算方法计算机数值计算提高计算精度的方法⒋操作系统计算机系统基础管理软件的组成与实现技术⒌编译原理从源码到可执行代码的翻译过程快速有效的实现方法⒍数据库系统概论计算机中大批量数据的管理与检索方法7 SQL Server数据库一个具体的数据库系统的应用8 软件工程从工程管理的角度来管理“软件制造业”的方法9 汇编语言其它方向:(电子)信号与系统,通信原理,计算机网络,TCP/IP技术,分布式应用原理,图形学,多媒体技术基础很多朋友可能跟我一样,想学习计算机专业知识,又没机会接受正规的大学计算机教育。在此我作为过来人跟大家谈谈自己自学的感受。★确立学习方向计算机专业人才的培养目标有很多,就大学计算机专业的设置来看,大致可以概括为以下几个方面:一、计算机软件与理论本专业主要培养具有较强理论基础和设计、开发软件能力的软件人才,以满足软件开发、技术管理、科学研究和高等教育等多层次的社会需要。二、计算机应用技术本专业主要培养计算机应用技术领域的各类开发、研究、应用人才。毕业生适合的工作有:高等院校计算机科学与技术的教师和研究人员、中小型控制系统的设计实施人员、大型控制系统的应用人员、企业级MIS/ERP建设人员、基于Internet/Intranet的多媒体应用程序开发人员、数字通讯领域各类应用人员、大中型企业及涉外企业IT部门的工作人员。三、计算机系统(体系)结构本专业以并行处理、容错计算等为主要研究方向,所开设的课程反映当

计算机程序设计基础习题册含答案

《计算机程序设计基础》 计算机程序设 计基础_基础知识(一) 班级 学号 姓名 成 绩 一、 单选题 习题册

1.C++源程序文件的默认扩展名为A。 2.A) cpp B) exe C) obj D) lik 3.由C++源程序文件编译而成的目标文件的默认扩展名为C。 4.A) cpp B) exe C) obj D) lik 5.由C++目标文件连接而成的可执行文件的默认扩展名为B。 6.A) cpp B) exe C) obj D) lik 7.编写C++程序一般需经过的几个步骤依次是B。 8.A)编译、编辑、连接、调试 B)编辑、编译、连接、调试 C)编译、调试、编辑、连接 D)编辑、调试、编辑、连接9.程序中主函数的名字为 A 。 10.A) main B) MAIN C) Main D) 任意标识 符 11.下面四个选项中,均是不合法的 用户标识符的选项的是 C。 12.A) A p_o do B)float lao _A C)b-a goto int D)_123 temp INT 13.下列变量名中合法的是 C。 14.A) B)C)Tom B) 3a66 C) _6a7b D) $ABC 15.存储以下数据,占用存储字节最 多的是 D 。 16.A) 0 B) ‘0’

C) “0” D) 17.在C++语言中,字符型数据在内存中的存储形式是D。 18.A) 补码 B) 反码 C) 原码 D) ASCII码 19.若有说明语句:char c =’\072’;则变量c A。 20.A) 包含1个字符 B) 包含2个字符 C) 包含3个字符 D) 说明不合法,变量的值不确定 二、填空题 1.C++头文件和源程序文件的扩展名分别为.h和.cpp 。 2.C++语言规定,标识符只能由字母、数字、下划线三种字符组成,而且第一个字符必须是字母或下划线。 3.一条表达式语句必须以__分号_;___作为结束符。 4.用于从键盘上为变量输入值的标准输入流对象是___cin____;用于输出表达式值的标准输出流对象是__cout____。 5.在一个C++程序文件中,若要包含另外一个头文件或程序文件,则应使用以_#include___标识符开始的预处理命令 计算机程序设计基础_基础知识(二) 班级学号姓名成绩 一、单选题 1.下列哪一个是C++语言中合法的变量 C A) 8ZSe B) ±A0 C) X0_2 D) ’x0’2.已知ch是字符型变量,下面不正确的赋值语句是A 3.A) ch='a+b' B) ch='\0'

程序设计基础课程设计

1 矩阵的操作(6人) 设有两个矩阵A=(a ij)m×n,B=(b ij)p×q 实现要求: ⑴编写矩阵输入函数INPUT_MAT,通过该函数完成矩阵的输入并返回保存矩阵的数组和对应矩阵的行数、列数。(不能使用全局变量) ⑵编写矩阵输出函数OUTPUT_MAT,通过该函数完成矩阵的输出。 ⑶求矩阵的转置,矩阵的转置A’=(a ji)n×m,转置前输出原矩阵,转置后输出转置矩阵。 ⑷求矩阵A、B的和。矩阵A和B能够相加的条件是:m=p,n=q;矩阵A和B如果不能相加,请给出提示信息;若能够相加,则求和矩阵C并输出C。 C=A+B=(c ij)m×n,其中c ij=a ij+b ij ⑸求矩阵A、B的积。矩阵A和B能够相乘的条件是:p=n;矩阵A和B 如果不能相乘,请给出提示信息;若能够相乘,则求积矩阵D并输出D。 D=A×B=(d ij)m×q,其中d ij=∑a ik×b kj,k=1,2,……,n ⑹设计一个菜单,具有求矩阵的转置、求矩阵的和、求矩阵的积、退出等基本的功能。在求矩阵的和或求矩阵的积时要求能够先提示输入两个矩阵的,然后再进行相应的操作。

2 数据汇总 (6人) 问题描述: 在数据处理中经常需要对大量数据进行汇总,将相同关键字记录的某些数据项的值叠加起来,生成一个分类汇总表。 假设某超级市场销售有m种商品(假设商品的编号为1,2,3,┅┅,m),有n台前台收款机(假设收款机的编号为1,2,3,┅┅,n)进行收款,以记录的形式提供给计算机,每个记录表示某台收款机的一种商品一次交易的数量和销售额。记录由4个域组成:收款机编号、商品编号、销售数量、销售金额。构造一个结构体类型,每次销售数据以一个结构体变量保存在一个数据文件中。实现要求: ⑴编写实现将数据记录插入到数据文件的最后的函数; ⑵编写以收款机为单位的数据分类处理函数。构造n个单链表,每个链表保存一台收款机的销售记录,这n个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪台收款机。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到n个单链表; ⑶统计每台收款机的销售总额; ⑷编写以商品为单位的数据分类处理函数。构造m个单链表,每个链表保存一种商品的销售记录,这m个单链表的头指针存放在一个指针数组中,通过数组的下标就可以知道是哪种商品。读取数据文件的记录,将所有的销售记录(数据文件中的全部记录)分解插入到m个单链表; ⑸以商品为单位,统计每种商品的销售总额。 ⑹设计一个菜单,具有插入数据记录、按收款机统计销售总额、按商品统计销售总额、退出系统等最基本的功能。

计算机程序设计基础

计算机程序设计基础 ——精讲多练C/C++语言 程序的基本结构 1、在屏幕上显示如下图形: **************** * Hello World * **************** #include using namespace std; int main() { cout<<"****************"< using namespace std; int main() { double x,y,sum,sub,mult,div; cout<<"Please enter the two Numbers for calculation:"; cin>>x>>y; sum=x+y; sub=x-y; mult=x*y; div=x/y; cout<

相关文档 最新文档