程序设计的基本要素是什么

程序设计的基本要素是什么,第1张

C程课本是这样写的:

拿做菜打个比方,先要有原材料,然后就是按一定的步骤加工出所需菜肴。!!

在程序设计中,原材料就是“数据结构”,而 *** 作步骤就是“算法”。计算机学家沃思有个公式:程序=算法+数据结构

实际上,一个程序除上两主要元素外,还应采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示。因此:

程序=算法+数据结构+程序设计方法+语言工具和环境。

算法是“灵魂”,数据结构是加工“对象”,语言是“工具”,编程需要采用合适的“方法”。

二级可以从VFP,c语言,java,c++,vb,access,

任选一科,考过即可,无论考哪一颗都要考二级公共基础知识。

公共基础知识

基本要求

1掌握算法的基本概念。

2掌握基本数据结构及其 *** 作。

3掌握基本排序和查找算法。

4掌握逐步求精的结构化程序设计方法。

5掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。

6掌握数据库的基本知识,了解关系数据库的设计。

考试内容

一、基本数据结构与算法

1算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。

2数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。

3线性表的定义;线性表的顺序存储结构及其插入与删除运算。

4栈和队列的定义;栈和队列的顺序存储结构及其基本运算。

5线性单链表、双向链表与循环链表的结构及其基本运算。

6树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。

7顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。

二、程序设计基础

1程序设计方法与风格

2结构化程序设计。

3面向对象的程序设计方法,对象,方法,属性及继承与多态性。

三、软件工程基础

1软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。

2结构化分析方法,数据流图,数据字典,软件需求规格说明书。

3结构化设计方法,总体设计与详细设计。

4软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。

5程序的调试,静态调试与动态调试。

四、数据库设计基础

1数据库的基本概念:数据库,数据库管理系统,数据库系统。

2数据模型,实体联系模型及E―R图,从E―R图导出关系数据模型。

3关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理 论。

4数据库设计方法和步骤:需求分析、概念设计、逻辑设计和物理设计的相关策略。

考试方式

1公共基础知识的考试方式为笔试,与C语言程序设计(C++语言程序设计、Java语言程序设计、Visual Basic语言程序设计、Visual FoxPro数据库程序设计或Access数据库程序设计)的笔试部分合为一张试卷,公共基础知识部分占全卷的30分。

2公共基础知识有l0道选择题和5道填空题。

C语言程序设计

基本要求

1熟悉TURBO C集成环境。

2熟练掌握结构化程序设计的方法,具有良好的程序设计风格。

3掌握程序设计中简单的数据结构和算法。

4TURBO C的集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力。

考试内容

一、C语言的结构

1程序的构成,MAIN函数和其他函数。

2头文件,数据说明,函数的开始和结束标志。

3源程序的书写格式。

4C语言的风格。

二、数据类型及其运算

1C的数据类型(基本类型,构造类型,指针类型,空类型)及其定义方法。

2C运算符的种类、运算优先级和结合性。

3不同类型数据间的转换与运算。

4C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。

三、基本语句

1表达式语句,空语句,复合语句。

2数据的输入与输出,输入输出函数的调用。

3复合语句。

4GOTO语句和语句标号的使用。

四、选择结构程序设计

1用IF语句实现选择结构。

2用SWITCH语句实现多分支选择结构。

3选择结构的嵌套。

五、循环结构程序设计

1FOR循环结构。

2WHILE和DO WHILE循环结构。

3CONTINUE语句和BREAK语句。

4循环的嵌套。

六、数组的定义和引用

1一维数组和多维数组的定义、初始化和引用

2字符串与字符数组。

七、函数

1库函数的正确调用。

2函数的定义方法。

3函数的类型和返回值。

4形式参数与实在参数,参数值的传递。

5函数的正确调用,嵌套调用,递归调用。

6局部变量和全局变量。

7变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。

8内部函数与外部函数。

八、编译预处理

1宏定义:不带参数的宏定义;带参数的宏定义。

2“文件包含”处理。

九、指针

1指针与指针变量的概念,指针与地址运算符。

2变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。通过指针引用以上各类型数据。

3用指针作函数参数。

4返回指针值的指针函数。

5指针数组,指向指针的指针,MAIN函数的命令行参数。

十、结构体(即“结构”)与共用体(即“联合”)

1结构体和共用体类型数据的定义方法和引用方法。

2用指针和结构体构成链表,单向链表的建立、输出、删除与插入。

十一、位运算

1位运算符的含义及使用。

2简单的位运算。

十二、文件 *** 作

只要求缓冲文件系统(即高级磁盘I/O系统),对非标准缓冲文件系统(即低级磁盘I/O系统)不要求。

1文件类型指针(FILE类型指针)。

2文件的打开与关闭(FOPEN,FCLOSE)。

3文件的读写(FPUTC,FGETC,FPUTS,FGETS,FREAD,FWRITE,FPRINTF,FSCANF函数),文件的定位(REWIND,FSEEK函数)。

考试方式

1笔试:120分钟,满分100分,其中含公共基础知识部分的30分。

2上机:60分钟,满分100分。

上机 *** 作包括:

(1)填空。

(2)改错。

(3)编程。

VB介绍

一、Visual Basic程序开发环境

1、Visual Basic的特点和版本。

2、Visual Basic的启动与退出。

3、主窗口:

(1)标题和菜单。

(2)工具栏。

4、其他窗口:

(1)窗体设计器和工程资源管理器。

(2)属性窗口和工具箱窗口。

二、对象及其 *** 作

1、对象:

(1)Visual Basic的对象。

(2)对象属性设置。

2、窗体:

(1)窗体的结构与属性。

(2)窗体事件。

3、控件:

(1)标准控件。

(2)控件的命名和控件值。

4、控件的画法和基本 *** 作。

5、事件驱动。

三、数据类型及其运算

1、数据类型:

(1)基本数据类型。

(2)用户定义的数据类型。

(3)枚举类型。

2、常量和变量:

(1)局部变量与全局变量。

(2)变体类型变量。

(3)缺省声明。

3、常用内部函数。

4、运算符与表达式:

(1)算术运算符。

(2)关系运算符与逻辑运算符。

(3)表达式的执行顺序。

四、数据输入、输出

1、数据输出:

(1)Print方法。

(2)与Print方法有关的函数(Tab、Spc、Space $)。

(3)格式输出(Fomat$)。

2、InputBox函数。

3、MsgBox函数和MsgBox语句。

4、字形。

5、打印机输出:

(1)直接输出。

(2)窗体输出。

五、常用标准控件

1、文本控件:

(1)标签。

(2)文本框。

2、图形控件:

(1)框,图像框的属性,事件和方法。

(2)图形文件的装入。

(3)直线和形状。

3、按钮控件。

4、选择控件:复选框和单选按钮。

5、选择控件:列表框和组合框。

6、滚动条。

7、计时器。

8、框架。

9、焦点与Tab顺序。

六、控制结构

1、选择结构:

(1)单行结构条件语句。

(2)块结构条件语句。

(3)IIf函数。

2、多分支结构。

3、For循环控制结构。

4、当循环控制结构。

5、Do循环控制结构。

6、多重循环。

7.GoTo型控制:

(1) GoTo语句。

(2) On-GoTo语句。

七、数组

1、数组的概念:

(1)数组的定义。

(2)静态数组与动态数组。

2、数组的基本 *** 作:

(1)数组元素的输入、输出和复制。

(2)For EachNext语句。

(3)数组的初始化。

3、控件数组。

C++语言程序设计

基本要求

1 掌握C++语言的基本语法规则。

2 熟练掌握有关类与对象的相关知识。

3 能够采用面向对象的编程思路和方法编写应用程序。

4 能熟练使用Visual C++60集成开发环境编写和调度程序。

考试内容

一、 C++语言概述

1 了解C++语言的基本符号。

2 了角C++语言的词汇(保留字、标识符、常量、运算符、标点符号等)。

3 掌握C++程序的基本框架(结构程序设计框架、面向对象程序设计框架等)。

4 能够使用Visual C++ 60集成开发环境编辑、编译、运行与调度程序。

二、 数据类型、表达式和基本运算

1 掌握C++数据类型(基本类型,指针类型)及其定义椒ābr> 2 了解C++的常量定义(整型常量,字符常量,逻辑常量,实型常量,地址常量,符号常量)。

3 掌握变量的定义与使用方法(变量的定义及初始化,全局变量,局部变量)。

4 掌握C++运算符的种类、运算优先级和结合性。

5 熟练掌握C++表达式类型及求值规则(赋值运算,算术运算符和算术表达式,关系运算符和关系表达式,逻辑运算符和逻辑表达式,条件运算,指针运算,逗号表达式)。

三、 C++的基本语句

1 掌握C++的基本语句,例如赋值语句、表达式语句、复合语句、输入、输出语句和空格语句等。

2 用if语句实现分支结构。

3 用switch语句实现多分支选择结构。

4 用for语句实现循环结构。

5 用while语句实现循环结构。

6 用do…while语句实现循环结构。

7 转向语句(goto,continue,break和return)。

8 掌握分支语句和循环语句的各种嵌套使用。

四、 数组、指针与引用

1 掌握一维数组的定义、初始化和访问,了解多维数组的定义、初始化和访问。

2 了解字符串与字符数组。

3 熟练掌握常用字符串函数(strlen,strcpy,streat,strcmp,strstr等)。

4 指针与指针变量的概念,指针与地址运算符,指针与数组。

5 引用的基本概念,引用的定义与使用。

Java语言程序设计

基本要求

1 掌握Java语言的特点,实现机制和体系结构。

2 掌握Java语言中面向对象的特性。

3 掌握Java语言提供的数据类型和结构。

4 掌握Java语言编程的基本技术。

5 会编写Java用户界面程序。

6 会编写Java简单应用程序。

7 会编写Java小应用程序(Applet)。

8 了解Java的应用。

考试内容

一、Java语言的特点和实现机制

二、Java体系结构

1 JDK目录结构。

2 Java的API结构。

3 开发环境设置。

4 Java程序结构。

三、Java语言中面向对象的特性

1 面向对象编程的基本概念和特征。

2 类的基本组成和使用。

3 对象的生成、使用和删除。

4 接口与包。

5 Java类库的常用类和接口。

四、Java简单数据类型及运算

1 变量和常量。

2 基本数据类型及转换。

3 Java类库中对简单数据类型的类包装。

4 运算符和表达式运算。

5 数组和字符串。

五、Java语言的基本语句

1 表达式语句。

2 条件语句。

3 循环语句。

4 注释语句。

5 异常处理。

六、Java编程技术基础

1 线程的概念和使用。

2 同步与共享。

3 串行化概念和目的。

4 串行化方法。

5 串行化的举例。

6 基于文本的应用。

7 文件和文件I/O。

8 汇集(collections)接口。

七、编写用户界面程序

1 图形用户界面。

2 AWT库简介。

3 Swing简介。

4 AWT与Swing比较。

八、编写小应用程序(Applet)

1 小应用程序概念。

2 安全机制。

3 Applet执行过程。

4 Applet的图形绘制。

5 Applet的窗口。

6 Applet的工作环境。

7 Java Application和Applet。

九、Java的应用

十、J2DK的下载和 *** 作

考试方式

1 笔试:90分钟,满分100分,其中含公共基础知识部分的30分。

2 上机 *** 作:90分钟,满分100分。

上机题目类型要求:

(1) 基本 *** 作。

(2) 简单应用。

3 综合应用

Access数据库程序设计

基本要求

1、 具有数据库系统的基础知识。

2、 基本了解面向对象的概念。

3、 掌握关系数据库的基本原理。

4、 掌握数据库程序设计方法。

5、 能使用Access建立一个小型数据库应用系统。

考试内容

一、数据库基础知识

1、 基本概念:

数据库,数据模型,数据库管理系统,类和对象,事件。

2、 关系模型(实体的完整性,参照的完整性,用户定义的完整性)关系模式,关系,元组,属性,字段,域,值,主关键字等。

3、 关系运算基本概念:

选择运算,投影运算,连接运算。

4、 SQL基本命令:查询命令, *** 作命令。

5、 Access系统简介:

(1)Access系统的基本特点。

(2)基本对象:表,查询,窗体,报表,页,宏,模块。

二、数据库和表的基本 *** 作

1、 创建数据库:

(1)创建空数据库。

(2)使用向导创建数据库。

2、 表的建立:

(1) 建立表结构:使用向导,使用表设计器,使用数据表。

(2) 设置字段属性。

(3) 输入数据:直接输入数据,获取外部数据。

3、 表间关系的建立与修改:

(1) 表间关系的概念:一对一,一对多。

(2) 设置参照完整性。

(3) 建立表间关系。

4、 表的维护:

(1) 修改表结构:添加字段,修改安段,删除字段,重新设置主关键字。

(2) 编辑表内容:添加记录,个性记录,删除记录,复制记录。

(3) 调整表外观。

5、 表的其他 *** 作:

(1) 查找数据。

(2) 替换数据。

(3) 排序记录。

(4) 筛选记录。

三、查询的基本 *** 作

1、查询分类

(1) 选择查询。

(2) 参数查询。

(3) 交叉表查询。

(4) *** 作查询。

(5) SQL查询。

2、查询准则

(1) 运算符。

(2) 函数。

(3) 表达式。

3、创建查询

(1) *** 作已创建的查询

(2) 编辑查询中的字段。

(3) 编辑查询中的数据源。

(4) 排序查询的结果。

四、窗体的基本 *** 作

1、 窗体分类:

(1) 纵栏式窗体

(2) 表格式窗体

(3) 主/子窗体

(4) 数据表窗体

(5) 图表窗体

(6) 数据透视表窗体

2、 创建窗体:

(1) 使用向导创建窗体。

(2) 使用设计器创建窗体:控件的含义及种类,在窗体中添加和修改控件,设置控件的常见属性。

五、报表的基本 *** 作

1、报表分类:

(1) 纵栏式报表。

(2) 表格式报表。

(3) 图表报表。

(4) 标签报表。

2、使用向导创建报表。

3、使用设计器编辑报表。

4、在报表中计算和汇总。

六、页的基本 *** 作

1、数据访问页的概念。

2、创建数据访问页:

(1) 自动创建数据访问页。

(2) 使用向导数据访问页。

七、宏

1、宏的基本概念。

2、宏的基本 *** 作:

(1) 创建宏;创建一个宏,创建宏组。

(2) 运行宏。

(3) 在宏中使用条件。

(4) 设置宏 *** 作参数。

(5) 常用的宏 *** 作。

八、模块

1、模块的基本概念:

(1) 类模块。

(2) 标准模块。

(3) 将宏转换为模块。

2、创建模块:

(1) 创建VBA模块:在模块中加入过程,在模块中执行宏。

(2) 编写事件过程:键盘事件,鼠标事件,窗口事件, *** 作事件和其他事件。

3、调用和参数传递。

4、VBA程序设计基础:

(1) 面向对象程序设计的基本概念。

(2) VBA编程环境:进入VBE,BE界面。

(3) VBA编程基础:常量,变量,表达式。

(4) VBA程序流程控制:顺序控制,选择控制,循环控制。

(5) VBA程序的调试:设置断点,单步跟踪,设置监视点。

考试方式

1、笔试:90分钟,满分100分,其中含公共基础知识部分的30分。

2、上机 *** 作:90分钟,满分100分。

上机 *** 作包括:

(1) 基本 *** 作。

(2) 简单应用。

(3) 综合应用

2005年计算机等级考试二级Visual FoxPro(VFP)考试大纲

基本要求

1具有数据库系统的基础知识。

2基本了解面向对象的概念。

3掌握关系数据库的基本原理。

4掌握数据库程序设计方法。

5能够使用Visual FoxPro建立一个小型的数据库应用系统。

考试内容

一、Visual Foxpro的基础知识

1基本概念:数据库,数据模型,数据库管理系统、类和对象、事件、方法。

2关系数据库:

(1)关系数据库:关系模型、关系模式、关系、元组、属性、域、主关键字和外部关键字。

(2)关系运算:投影、选择、联接。

(3)数据库的一致性和完整性:实体完整性、域完整性、参照完整性。

3Visual FoxPro系统特点与工作方式:

(1)Windows版本的数据库特点。

(2)数据类型和主要文件类型。

(3)各种设计器和向导。

(4)工作方式:交互方式(命令方式、可视化 *** 作)和程序运行方式。

4Visual Foxpro的基本数据元素:

(1)常量、变量、表达式。

(2)常用函数:字符处理函数、数值运算函数、日期时间函数、数据类型转换函数、测试函数。

二、Visual FoxPro数据库的基本 *** 作

1数据库和表的建立、修改与有效性检验:

(1)表结构的建立与修改。

(2)表记录的浏览、增加、删除与修改。

(3)创建数据库,向数据库添加或从数据库删除表。

(4)设定字段级规则和记录级规则。

(5)表的索引:主索引、候选索引、普通索引、唯一索引。

2多表 *** 作:

(1)选择工作区。

(2)建立表之间的关联:一对一关联、一对多关联。

(3)设置参照的完整性。

(4)表的联接JOIN:

内部联接

外部连接:左联接、右联接、完全联接。

(5)建立表间临时关系。

3建立视图与数据查询:

(1)查询文件的建立、执行与修改。

(2)视图文件的建立、查看与修改。

(3)建立多表查询。

三、关系型数据库标准语言SQL

1、SQL的数据定义功能:

(1)CREATETABLE-SQL。

(2)ALTERTABLE-SQL。

2SQL的数据修改功能:

(1)简单查询。

(2)嵌套查询。

(3)联接查询。

(4)分组与计算查询。

(5)集合的并运算。

四、项目管理器、设计器和向导的使用

1使用项目管理器:

(1)使用“数据”选项卡。

(2)使用“文档”选项卡。

2使用表单设计器:

(1)在表单中加入和修改控件对象。

(2)设定数据环境。

3使用菜单设计器:

(1)建立主选项。

(2)设计子菜单。

(3)设定菜单选项程序代码。

4使用报表设计器:

(1)生成快速表。

(2)修改报表布局。

(3)设计分组报表。

(4)设计多栏报表。

5使用应用程序向导。

五、Visual FoxPro程序设计

1、命令文件建立与运行:

(1)程序文件建立。

(2)简单的交互方式输入输出命令。

(3)应用程序的调试与执行。

2结构化程序设计:

(1)顺序结构程序设计。

(2)分支结构程序设计。

(3)循环结构程序设计。

3过程与过程调用:

(1)子程序设计与调用。

(2)过程与过程文件。

(3)局部变量和全局变量、过程调用中的参数传递。

考试方式

1笔试:90分钟。

2上机考试:90分钟。

上机 *** 作包括:

(1)基本 *** 作。

(2)简单应用。

(3)综合应用。

其中 VFP,ACCESS都很简单,vfp是过关率最高的

希望对你有所帮助

不对,数组本身的存储结构是线性的,就是说它是连续存储的,但是数组中元素可以存储指针,就是指针型数组,它就可以利用数组处理非线性的数据。比如将一个链表每个结点的地址存入数组,那样访问数组,就是处理非线性的数据了

《数据结构》在计算机科学中是一门综合性的专业基础课。数据结构的研究不仅涉及到计算机硬件(特别是编码理论、存储装置和存取方法等)的研究范围,而且和计算机软件的研究有着更密切的关系,无论是编译程序还是 *** 作系统,都涉及到数据元素在存储器中的分配问题。在研究信息检索时也必须考虑如何组织数据,以便查找 存取数据元素更为方便。 数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。 计算机科学中中,数据结构不仅是一般程序设计(特别是非数值计算的程序设计)的基础,而且是设计和实现编译程序、 *** 作系统、数据库系统及其他系统程序和大型应用程序的重要基础。 本课程的目的和任务是:通过本课程的学习,使学生能正确分析数据对象的特点,具有选择适当的数据结构和相应算法的本领,掌握对算法进行时间和空间复杂性分析的技巧;通过本课程的学习,使学生能养成良好的程序设计风格,并能独立设计和实现一些复杂算法。

数据结构应该这样学,学习离散数学和线性代数。

数据结构从文字上面来看,为数据和结构两部分。这样就很容易联系到数据结构的本质是一种对于数据结构化的知识。

数据结构和程序设计语言本身没有任何联系,唯一有的关系就实用程序语言去描述数据结构。因为数据结构是一种抽象数据,通过程序设计语言可以将在计算机中进行实现。

今天大学里数据结构课程常用来描述数据结构的语言有C程序设计语言,C++程序设计语言和JAVA程序设计语言。

1 学习方法

因为要准备这个话题, 所以我认真的思考了我的学习方法, 但是我觉得基本上我就是上课前看看书、上课时认真听课、 下课以后复习复习、当然还有做作业时很认真的去做。根本谈不上什么好方法, 不过我还是有一些话要送给大家。

我能行!

   个人觉得这句话非常重要,不知道大家是怎样看待数据结构这门课的, 有多少人觉得数据结构很难呢?我知道还是有一些同学这样觉得的, 有时候我跟我的朋友讲要怎样学,讲了一大堆以后, 他就向我抱怨:我以前c++都没有学好, 数据结构更学不好了, 这哪跟哪的话啊,数据结构与c++没有什么关系,我想假如抱有这样的心态, 自己就不相信自己, 那是不可能学好的, 然后那些觉得数据结构很难的同学, 我想他们应该会很看重数据结构的吧, 然后就一天到晚捧着一本数据结构, 这样不会觉得很累吗?而且因为觉得很难, 就容易不相信自己, 学的效率也不会很好, 个人认为数据结构很好学, 很容易学, 或许这有点妄自菲薄吧, 但是因为我觉得很容易, 当然就会觉得自己没问题, 学得很轻松, 效果也还可以。大家都是从高考走过来的, 应该知道心态的重要性吧, 两种不同的心态, 完全就是两种不同的效果。  学了这么久数据结构了, 我们到底在学些什么呢? 不知道大家有没有想过, 那现在我们现在来归纳一下我们学习的内容吧, 其实学到现在我们也就学了几种普通的数据结构, 象二叉树, 树, 图,还有排序的问题, 前面的线性表和字符串也就是一些概念, 当然还有一个很重要的KMP算法, 然后在每种数据结构中我们也就是学到了若干处理的算法,  我想真正数起来也就是几十个算法吧。 学习数据结构也就是要掌握这几十种算法, 多简单。至于如何掌握每个算法呢, 我想就是多看看书, 重要的是能够理解。

我能独自完成作业!

这里我的定义和老师的不同, 老师是鼓励大家讨论的, 不过我发现还是有一些同学就是先问好别人算法,然后再自己写, 虽然这个不算抄袭作业, 但自己基本上没有一个思考问题的过程, 虽然要理解算法也会要思考很多, 但是因为没有自己独立的思考过程, 要自己写程序、 写算法的时候根本写不出来, 所以我想如果真的想学好数据结构的话, 最好是能够自己思考问题, 不要刚想了一会就觉得做不出来, 然后就去问其他人。其实老师给我们的作业还是基于我们的水平的, 我绝对相信我们自己能够独自想出算法, 虽有可能会比较长时间吧, 但是这样肯定会比问其他人学到更多的东西。当然我并不是说不要问同学, 有时候就是脑筋转不过来,一问别人就懂了, 当然问了别人不能只是我知道了这个算法, 还应该去想如何思考才能得到这个算法,这样水平会提高很多。

多实验!

这个就没有太多理由了, 我一直觉得编程是一门熟练科学, 多编程,水平肯定会提高, 最重要的是能够养成一种感觉,就是对程序对算法的敏感, 为什么那些牛人看一个算法一下子就看懂了?而自己要看很久才能弄懂, 而且弄懂了过了一阵子又忘记了?其实这个是因为牛人们以前看的程序很多, 编得也很多, 所以他们有了那种感觉,所以我觉得大家应该多看程序, 多写程序, 培养自己的感觉。

2 复习和考试的技巧

我想大家应该都有这样的感觉,就是觉得自己什么都掌握了, 但是在考试的时候就是会犯晕, 有时候一出考场就知道错在哪个了, 然后考完以后一对答案,发现其实考得很简单, 应该都是自己会做的, 这个就是与自己的复习和考试的技巧有关系了。

首先就是复习, 前面已经说过其实我们学的算法也就是几十个, 那么我们的任务也就是理解这几十个算法, 复习也就是要加深你的理解。如何理解算法, 然后理解到什么程度呢? 是能默出整个算法吗?其实不是这样的, 数据结构的考试有它的特点, 考过期中考试了, 大家应该都发现数据结构其实不要求你把整个算法背出来, 它注重考察你的理解, 那么怎么考察呢?其实也就是两种方式吧, 一种就是用实例, 就是给你一个例子, 要你用某个算法运行出结果, 我想这个期末考试的时候仍然会有很多这样的题目, 比如排序那块就很好出这样的题目,要复习这种题目我觉得很简单,就是每个算法都自己用例子去实践一下, 以不变应万变,我期中复习的时候就是这样去做的, 而且考试之前我就觉得那个并查集的题目就很有可能会考, 于是就自己出了几个例子,做了一下。另外一种考察方式就是算法填空和算法改错, 可能有一些同学觉得这种题目很难, 其实我们首先可以确定这两种题目肯定是与书上算法有关系的, 只要理解了书上的算法就可以了,有人觉得看完书以后什么都懂了, 而且要默也默得出来, 其实不是这样的,算法改错和填空主要是考察的细微处, 虽然你觉得你默得出来, 那是能够默出算法的主体部分, 很多细微的地方你就会很容易忽略。我想大家考过期中考以后应该都有这种感觉吧?那要怎样解决这种问题呢? 我觉得有两种方法, 一种就是自己去编程实现, 这种方法比较有意义,还能够提高编程水平,  另外一种就是用实例分析算法的每句话, 我认为这种方法是最有效的。

然后还有一种题目, 就是最后的写算法的题目, 我觉得这种题目还是很好解决的, 只要是能够自己做出作业的, 基本上都会很容易做出来,这也是为什么我前面觉得平时做作业应该自己独立思考的原因,同时做这种题目千万要小心, 尤其是题目简单的时候, 那肯定会有一些小地方要考虑清楚,一不小心就会被扣掉很多分, 这样很不值。

我觉得考试的时候没有太多要讲的, 只要复习好了, 考试的时候细心一点就可以了, 然后就是做一个题目开始就要尽量保证正确,如果觉得留在那里等后面做完了再来检查,这样错误还是很有可能检查不出来, 我期中考试的时候就基本上没有检查, 因为我做每个题目都是确保正确, 用的时间也挺多的, 然后也觉得没有检查的必要了。

一个学生学习数据结构的体会(转)

读《数据结构(C语言版)》(1)

今天开始认真读这本清华版的数据结构,严蔚敏和吴伟民编著。也许你会奇怪我为什么会选择这本C语言描述的数据结构书,现在的数据结构不都用面向对象语言描述吗?其实这本书不是我选的,而是我参加的机试指定的参考书。不过对于本书选用的语言,我倒有自己的看法。用C语言描述显然有很多不便,但是在一个充斥着用OO描述数据结构的世界里,从OO中抽身出来用C看待数据结构的思想,也许更能看清数据结构的本质。

好了,言归正传。在今天这第一篇文章里,我来探讨一下数据结构的基本概念。作者一开篇就归纳了计算机解题的一般步骤:“首先要从具体问题抽象出一个适当的数学模型,然后设计一个解此数学模型的算法,最后编出程序,进行测试、调试直至得到最终解答。”我把它再进一步归纳一下,就是:抽象数学模型——设计算法——编写程序。这个思路非常重要,除了一些非常简单的问题,所有的程序设计都应该遵循这三个基本步骤。我们平时写程序常犯的错误是忽略第一个或第二个步骤,或者更甚者,前两个都忽略。

在设计数学模型的过程中,实际上就引出了数据结构的概念。本书中作者给出的定义是:“简单来说,数据结构是一门研究非数值计算的程序设计问题中计算机的 *** 作对象以及它们之间的关系和 *** 作等的学科。”国内的教材为了语言上的严谨常常把话说得很难懂。请大家注意这句话里的这几个关键词:1)非数值计算,这说明了数据结构这门学科的应用范围,如果你想解一个线性方程组,大概很难直接找到合适的数据结构;2) *** 作对象,也就是问题中的数据及其表示的形式;3)关系,即数据间的关系;4) *** 作,即针对数据的 *** 作。

把以上的定义用公式写出来,就是

Data_Structure = (D, S)

其中D是数据元素的有限集,S是D上关系的有限集。所以在设计数据结构时,首要的任务就是找出要 *** 作的数据,其次是挖掘出数据间的关系。这两步完成以后,数据的逻辑结构就定下来了。其中数据间的结构有以下几种:

集合,这和数学中的集合概念是一致的;

线性结构,即数据元素之间一对一的关系;

树形结构,即数据元素之间一对多的关系;

图状结构或网状结构,即数据元素之间多对多的关系。

然而只有逻辑结构是不够的,程序要能够运行,必须把数据的逻辑结构在计算机中表示出来,也就是设计物理结构。大多数高级语言都对数据的物理结构有较好支持,如各种数据类型。作者在解释数据类型的概念时说到:“引入数据类型的目的,从硬件的角度看,是作为解释计算机内存中信息含义的一种手段,而对使用数据类型的用户来说,实现了信息的隐蔽,即将一切用户不必了解的细节都封装在类型中。”这个概括非常精辟,从中可以看出以后的OOP只是在更高层次上对信息的封装和隐蔽。

对数据类型进一步扩展,作者引出了抽象数据类型的概念。抽象数据类型(ADT)是指一个数学模型以及定义在该模型上的一组 *** 作。在引入抽象数据类型后,使逻辑结构更加独立,从而让程序员可以更加专注于逻辑结构的设计。把抽象数据类型用公式表示出来,就是(D, S, P),其中D是数据对象,S是D上的关系集,P是对D的基本 *** 作集。如果计算机解题一定要遵循一个通用的模式的话,上面这个式子就给出了答案。

读《数据结构(C语言版)》(2)

本节谈一谈算法分析和大O估算法(big-O notation)。算法效率的度量一般采用事前分析估算的方法,通常的做法是,“从算法中选取一种对于所研究的问题(或算法类型)来说是基本 *** 作的原 *** 作,以该基本 *** 作重复执行的次数作为算法的时间量度”。谈到这里时,作者引出了大O估算法。

在本书中,作者对大O估算法的介绍显得有些草率。一开始就冒出一个式子T(n) = O(n3),然后在本页最底下用小字介绍了所谓的“"O"的形式定义”:若f(n)是正整数n的一个函数,则xn=O(f(n))表示存在一个正的常数M,使得当n≥n0时都满足|xn|≤M|f(n)|。也许是我数学基础太差,总之看到这个定义时我一头雾水。不知道为什么作者没有花一点篇幅介绍大O估算法的由来和定义。我google了一下,发现了这样的介绍:

Definition: A theoretical measure of the execution of an algorithm, usually the time or memory needed, given the problem size n, which is usually the number of items Informally, saying some equation f(n) = O(g(n)) means it is less than some constant multiple of g(n) The notation is read, "f of n is big oh of g of n"

Formal Definition: f(n) = O(g(n)) means there are positive constants c and k, such that 0 ≤ f(n) ≤ cg(n) for all n ≥ k The values of c and k must be fixed for the function f and must not depend on n

Note: As an example, n2 + 3n + 4 is O(n2), since n2 + 3n + 4 < 2n2 for all n > 10 Strictly speaking, 3n + 4 is O(n2), too, but big-O notation is often misused to mean equal to rather than less than The notion of "equal to" is expressed by Θ(n)

The importance of this measure can be seen in trying to decide whether an algorithm is adequate, but may just need a better implementation, or the algorithm will always be too slow on a big enough input For instance, quicksort, which is O(n log n) on average, running on a small desktop computer can beat bubble sort, which is O(n2), running on a supercomputer if there are a lot of numbers to sort To sort 1,000,000 numbers, the quicksort takes 20,000,000 steps on average, while the bubble sort takes 1,000,000,000,000 steps!

Any measure of execution must implicitly or explicitly refer to some computation model Usually this is some notion of the limiting factor For one problem or machine, the number of floating point multiplications may be the limiting factor, while for another, it may be the number of messages passed across a network Other measures which may be important are compares, item moves, disk accesses, memory used, or elapsed ("wall clock") time

(以上介绍来自:Paul E Black, "big-O notation", from Dictionary of Algorithms and Data Structures, Paul E Black, ed, NIST)

另外,这个帖子也讨论了算法的时间复杂度估计,说得非常通俗易懂。

读《数据结构(C语言版)》(3)

问题描述

设计一个可进行复数运算的演示程序。

基本要求

实现下列六种基本运算:

由输入的实部和虚部生成一个复数;

两个复数求和;

两个复数求差;

两个复数求积;

从已知复数中分离出实部;

从已知复数中分离出虚部。

运算结果以相应的复数或实数的表示形式显示。

(全文见附件)

以上就是关于程序设计的基本要素是什么全部的内容,包括:程序设计的基本要素是什么、普通的关系型数据库用的是什么类型的数据结构、程序设计语言中的数组一般是顺序存储结构,因此,利用数组只能处理线性结构等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9695104.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存