第2章 程序设计基础
- 格式:doc
- 大小:45.50 KB
- 文档页数:5
第2课Visual Basic语言基础本章学习目标:基本语言规则数据类型运算符与表达式语言结构子过程与函数本章要点:语言规则语言结构2.1课前导读Visual Basic语言是在BASIC语言的基础上进一步发展而来,不但保留了BASIC语言简单易用的特点,而且增加了面向对象和结构化的编程方法。
由于Visual Basic程序代码可读性强、运行速度快、数据类型丰富、语法与自然语言接近及结构严谨,从而成为众多程序员首选的编程语言。
Visual Basic是真正易学易用的结构化语言,以至于专业人员可以用Visual Basic 实现其他Windows编程语言的功能,初学者只要掌握一些关键语法就可以建立实用的应用程序。
2.2.6 运算符与表达式表达式是关键字、运算符、变量和常数的组合,其值可以是字符串、数值或者对象。
表达式可以用来执行算式、操作字符或是检测数据。
表达式书写规则:从左到右在一行上书写,无高低之分;可以用圆括号括起,以提高运算的优先级或增加表达式的清晰度。
不能使用方括号或花括号,圆括号可以出现多个,但必须配对使用。
1.算术运算符与表达式算术运算符是指用于执行实数或整数运算的操作符,主要包括+(加法)、-(减法)、*(乘法)、^(指数运算)、/(除法)、\(取模数)、Mod(取余数)。
各个算术运算符的作用见表2-3,表中MyValue的值为3。
2.字符运算符与表达式字符串运算符有两个:“&”和“+”,它们都是将两个字符串连接起来。
两者的区别是:(1)“+”:连接符两旁若一个为数字字符型或逻辑型,另一个为数值型,则自动转换为数值型,然后进行算术加运算;若一个为非数字字符型,另一个为数值型,则出错。
(2)“&”:连接符两旁的操作数不管是字符型还是数值型,则在进行连接操作前,系统先将操作数转换成字符型,然后再连接。
3.比较运算符与表达式比较运算符用来表示两个或多个值或表达式之间的关系,结果为逻辑常数。
Python程序设计基础习题答案与分析程昱第1章基础知识1.1 简单说明如何选择正确的Python版本。
答:在选择Python的时候,一定要先考虑清楚自己学习Python的目的是什么,打算做哪方面的开发,有哪些扩展库可用,这些扩展库最高支持哪个版本的Python,是Python 2.x还是Python 3.x,最高支持到Python 2.7.6还是Python 2.7.9。
这些问题都确定以后,再做出自己的选择,这样才能事半功倍,而不至于把大量时间浪费在Python的反复安装和卸载上。
同时还应该注意,当更新的Python版本推出之后,不要急于更新,而是应该等确定自己所必须使用的扩展库也推出了较新版本之后再进行更新。
尽管如此,Python 3毕竟是大势所趋,如果您暂时还没想到要做什么行业领域的应用开发,或者仅仅是为了尝试一种新的、好玩的语言,那么请毫不犹豫地选择Python 3.x系列的最高版本(目前是Python 3.4.3)。
1.2 为什么说Python采用的是基于值的内存管理模式?Python采用的是基于值的内存管理方式,如果为不同变量赋值相同值,则在内存中只有一份该值,多个变量指向同一块内存地址,例如下面的代码。
>>> x = 3>>> id(x)10417624>>> y = 3>>> id(y)10417624>>> y = 5>>> id(y)10417600>>> id(x)10417624>>> x = [1, 2, 3, 1, 1, 2]>>> id(x[0])==id(x[3])==id(x[4])True1.3 解释Python中的运算符“/”和“//”的区别。
答:在Python 2.x中,“/”为普通除法,当两个数值对象进行除法运算时,最终结果的精度与操作数中精度最高的一致;在Python 3.x中,“/”为真除法,与除法的数学含义一致。
《程序设计基础(C/C++)》课程教学大纲一、课程信息英文名称:Foundation of Programming (C/C++)授课方式:机房授课课程类别:学科基础课程性质:必修学分:3学时:54学时适用对象:计算机类专业等先修课程:计算机导论开课院系:软件工程系、计算机科学与技术系等二、课程简介《程序设计基础(C/C++)》是软件工程、计算机科学与技术等计算机类本科专业的学科基础课程。
本课程主要的教学内容是C++语言的基本数据类型与表达式,程序基本控制结构,函数、数组及指针的运用,以及输入/输出流类的应用等。
课程以程序设计方法贯穿始终,从语法规则到编程实践,力求在掌握基本程序设计方法的同时,培养学生良好的程序设计习惯,养成良好的专业素养。
本课程的教学方式采用机房上课演示讲授并辅以学生上机练习,充分利用课堂网络教学环境,与PPT、板书、课后思考题和练习题等相结合,并结合课程设计教学环节,使学生能够掌握C/C++程序设计的基本方法,学会对现实世界中的问题及其解决方法用C++语言进行描述。
三、课程任务、目标与要求1.课程任务《程序设计基础(C/C++)》是学习计算机编程的入门课程,学生不仅要学习C/C++语言的基本知识和程序设计方法,还要上机编程实践,掌握计算机调试程序的基本技能,为后续课程的学习打下良好的编程基础。
2.课程基本要求2.1课程目标《程序设计基础(C/C++)》课程着重对学生编程实践能力的培养。
要求学生重视上机编程实践,广学多练,不断地培养和提高编程兴趣;充分利用现代信息技术及互联网资源,运用发散性思维方式,对相关知识进行扩展,开阔视野,在循序渐进中提高编程能力。
2.2 课程目标与毕业要求之间的对应关系本课程要求学生掌握软件工程和计算机学科有关程序设计的基本理论和基本知识;掌握对现实世界中问题及其解决方法用C++语言进行描述的分析方法和技术;具有运用C/C++语言进行程序设计的基本能力;了解程序设计方法和C/C++语言的理论发展动态和行业需求。
第1章C语言概述【习题1-1】简述C语言的特点。
答:C语言的特点:C语言简洁、紧凑、使用灵活、方便;运算符丰富;数据结构丰富;C是结构式语言;C语法限制不太严格,程序设计自由度大;C语言允许直接访问物理地址;C语言程序生成代码质量高;C语言适用范围大,可移植性好。
【习题1-2】简述上机调试运行C程序的操作步骤。
答:上机运行C语言程序的操作步骤为:启动Visual C++ 6.0→建立工程→创建源程序文件→输入(编辑)源程序内容→保存源程序文件→编译源程序文件→连接目标程序→执行程序→开始另一个程序。
【习题1-3】上机运行本章的3个例题。
答:略。
【习题1-4】请从以下的4个选项中选择一个正确答案。
(1)A (2)A (3)C (4)B【习题1-5】参照本章例题,编写一个C语言程序,输出以下信息:**************Nice to meet you!**************编写程序如下:#include<stdio.h>void main(){printf("**************\n");printf("Nice to meet you!\n");printf("**************\n");}第2章基本数据类型和运算符【习题2-1】上机编辑并调试本章所有例题。
答:略。
【习题2-2】下面哪些是合法的常量?⑴20 0.5 012 13e5.1 E-5 8e4 5. 0x6a⑵'mn' "OK" "a" '\012' "a/b" '\\'答:⑴合法的常量有:20 0.5 012 8e4 5. 0x6a⑵合法的常量有: "OK" "a" '\012' "a/b" '\\'【习题2-3】下面的变量名中哪些是合法的?A&b abc123 abc% AbC a_b_cint _abc 123abc a\b?ca bc a*bc 'a'bc答:合法的变量名有:abc123 AbC a_b_c _abc【习题2-4】指出下面的变量定义哪些是正确的,哪些是不正确的,为什么?⑴Int i,j;⑵float a,b;⑶int a,b;float a,b;⑷float a,int b;⑸char 'a';答:⑴错误,因为关键字Int 应该全为小写字母⑵正确⑶错,因为同一变量在程序的同一处不应该声明为不同的数据类型⑷错,因为不同类型的变量要分别声明,其间应使用分号,而不是逗号⑸错,'a'表示字符常量,不能用作变量名【习题2-5】把下列数学式子写成C 语言表达式。
第二章 程序设计基础 程序设计方法与风格 1.源程序文档化 源程序文档化应考虑如下几点: (1)符号名的命名:符号名的命名应具有一定的实际含义,以便于对程序功能的理解。 (2)程序注释:正确的注释能够帮助读者理解程序。 (3)视觉组织:为使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次 2.数据说明的方法 一般应注意: (1)说明次序规范化 (2) 变量说明有序化:语句说明多个变量时,变量按照字母顺序排序为好。 (3)使用注释来说明复杂数据的结构。 3.语句的结构 程序应该简单易懂,语句构造应该简单直接 不应该为提高效率而把语句复杂化。一般应注意如下 (1)在一行内只写一条语句: (2)程序编写应优先考虑清晰性; (3)除非对效率有特殊要求,程序编写要做到清晰第一,效率第二。 (4)首先要保证程序正确,然后才要求提高速度: (5)避免使用临时变量而使程序的可读性下降; (6)避免不必要的转移; 7)尽可能使用库函数; (8)避免采用复杂的条件语句: (9)尽量减少使用“否定”条件的条件语句; (10)数据结构要有利于程序的简化; (11)要模块化,使模块功能尽可能单一化; (12)利用信息隐蔽,确保每一个模块的独立性 (13)从数据出发去构造程序: (14)不要修补不好的程序,要重新编写: 4.输入和输出 在设计和编程时都应该考虑如下原则: (1)对所有的输入数据都要检验数据的合法性; (2)检查输入项的各种重要组合的合理性; (3)输入格式要简单,以使得输入的步骤和操作尽可能简单; (4)输入数据时,应允许使用自由格式: (5)应允许缺省值; (6)输入一批数据时,最好使用输入结束标志: (7)在以交互式输入/输出方式进行输入时,要在屏幕上使用提示符明确提示输入的请求,同时在数据输入过程中和输入结束时,应在屏幕上给出状态信息; (8)当程序设计语言对输入格式有严格要求时,应保持输入格式与输入语句的一致性;给所有的输 出加注释,并设计输出报表格式。 2.2 结构化程序设计 2.2.1结构化程序设计的原则 结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。 1.自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。 2.逐步求精:对复杂问题,应设计一些子目标作过渡,逐步细化。 3.模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。 4.限制使用goto语句 使用GOTO语句会使程序执行效率较高;否定的结论是,GOTO语句是有害的,是造成程序混乱的祸根,程序的质量与GOTO语句的数量成反比,应该在所有高级程序设计语言中取消GOTO语句。 (1)滥用GOTO语句确实有害,应尽量避免; (2)完全避免使用GOTO语句也并非是个明智的方法更清楚、效率更高; (3)争论的焦点不应该放在是否取消GOTO语句,而应该放在用什么样的程序结构上。 2.2.2 结构化程序设计基本结构与特点 三种基本控制结构: 1. 顺序结构:是顺序执行结构,所谓顺序执行,就是按照程序语句行的自然顺序,一条语句一条语句地执行程序。 2.选择结构:选择结构又称为分支结构,它包括简单选择和多分支选择结构,这种结构可以根据设定的条件,判断应该选择哪一条分支来执行相应的语句序列。 3.重复结构:重复结构又称为循环结构,它根据给定的条件,判断是否需要重复执行某一相同的或类似的程序段,利用重复结构可简化大量的程序行。 在程序设计语言中,重复结构对应两类循环语句: 1) 对先判断后执行循环体的称为当型循环结构。 2) 对先执行循环体后判断的称为直到型循环结构, 结构化程序设计方法设计出的程序具有明显的优点: 其一,程序易于理解、使用和维护。 其二,提高了编程工作效率,降低软件开发成本。
2.2.3 结构化程序设计原则和方法的应用 结构化程序设计的具体实施中,要注意把握如下要素: 1.使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑: 2.选用的控制结构只准许有一个入口和一个出口; 3.程序语句组成容易识别的块,每块只有一个入口和一个出口; 4.复杂结构应该用嵌套的基本控制结构进行组合嵌套来实现; 5.语言中所没有的控制结构,应该采用前后一致的方法来模拟: 6.严格控制GOTO语句的使用。 2.3 面向对象的程序设计方法 面向对象方法已经发展成为主流的软件开发方法。 面向对象方法之以下主要优点。 1. 与人类习惯的思维方法一致 传统的程序设计方法是面向过程的,其核心方法是以算法为核心,把数据和过程作为相互独立的部分,数据代表问题空间中的客体,程序则用于处理这些数据,在计算机内部数据和程序是分开存放的。 面向对象方法和技术以对象为核心。对象是由数据和容许的操作组成的封装体,与客观实体有直接的对应关系。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联; 2.稳定性好 面向对象方法基于构造问题领域的对象模型,以对象为中心构造软件系统。它的基本作法是用对象模拟问题领域中的实体,以对象间的联系刻画实体间的联系。所以,当对系统的功能需求变化时并不会引起软件结构的整体变化,往往仅需要作一些局部性的修改。以对象为中心构造的软件系统也是比较稳定的。 而传统的软件开发方法以算法为核心,开发过程基于功能分析和功能分解。用传统方法所建立起来的软件系统的结构紧密地依赖于系统所要完成的功能,当功能需求发生变化时将引起软件结构的整体修改。因此,这样的软件系统是不稳定的。 3.可重用性好 传统的软件重用技术是利用标准函数库,实际的库函数往往仅提供最基本、最常用的功能 使用传统方法学开发软件时,人们强调的是功能抽象,认为具有功能内聚性的模块是理想的模块,也就是说,如果一个模块完成一个且只完成一个相对独立的子功能,那么这个模块就是理想的可重用模块,但是,具有功能内聚性的模块并不是自含的和独立的,相反,它必须在数据上运行。如果要重用这样的模块,则相应的数据也必须重用。 在面向对象方法中所使用的对象,其数据和操作是作为平等伙伴出现的。因此,对象具有很强的自含性,此外,对象所固有的封装性,使得对象的内部实现与外界隔离,具有较强的独立性。 面向对象的软件开发技术在利用可重用的软件成分构造新的软件系统时,有很大的灵活性。有两种方法可以重复使用一个对象类: 一种方法是创建该类的实例,从而直接使用它; 另一种方法是从它派生出一个满足当前需要的新类。 继承性机制使得子类不仅可以重用其父类的数据结构和程序代码,而且可以在父类代码的基础上方便地修改和扩充,这种修改并不影响对原有类的使用。 4.易于开发大型软件产品 5.可维护性好 (1)用面向对象的方法开发的软件稳定性比较好。 (2)用面向对象的方法开发的软件比较容易修改。 (3)用面向对象的方法开发的软件比较容易理解。 (4)易于测试和调试。 2.3.2 面向对象的方法基本概念 1.对象 对象可以用来表示客观世界中的任何实体,它既可以是具体的物理实体的抽象 面向对象的程序设计方法中涉及的对象是构成系统的一个基本单位,它由一组表示其静态特征的属性和它可执行的一组操作组成。 不同对象的同一属性可以具有相同或不同的属性值。 属性值应该指的是纯粹的数据值,而不能指对象。 操作描述了对象执行的功能,若通过消息传递,还可以为其他对象使用。 操作的过程对外是封闭的,即用户只能看到这一操作实施后的结果。 只需要调用就可以了,用户不必去关心这一过程是如何编写的。事实上,这个过程已经封装在对象中,用户也看不到。对象的这一特性,即是对象的封装性。 ’ 对象有如下一些基本特点: (1)标识惟一性。指对象是可区分的,并且由对象的内在本质来区分 (2)分类性。指可以将具有相同属性和操作的对象抽象成类。 (3)多态性。指同一个操作可以是不同对象的行为。 (4)封装性。从外面看只能看到对象的外部特性,即只需知道数据的取值范围和可以对该数据施加的操作,根本无需知道数据的具体结构以及实现操作的算法。对象的内部,即处理能力的实行和内部状态,对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。 (5)模块独立性好。对象是面向对象的软件的基本模块,它是由数据及可以对这些数据施加的操作所组成的统一体,而且对象是以数据为中心的,操作围绕对其数据所需做的处理来设置,没有无关的操作。内聚性强。 2.类(Class)和实例(1nstance) 类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,它描述了属于该对象类型的所有对象的性质,而一个对象则是其对应类的一个实例。 当使用“实例”这个术语时,必然是指一个具体的对象。 例如:Integer是一个整数类,它描述了所有整数的性质。因此任何整数都是整数类的对象,而一个具体的整数“123”是类Integer的一个实例。 类是关于对象性质的描述,它同对象一样,包括一组数据属性和在数据上的一组合法操作。 3.消息(Message) 消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。 消息传递过程中,由发送消息的对象(发送对象)的触发操作产生输出结果,作为消息传送至接受消息的对象(接受对象),引发接受消息的对象一系列的操作。 消息中只包含传递者的要求,它告诉接受者需要做哪些处理,但并不指示接受者应该怎样完成这些处理。 消息完全由接受者解释,接受者独立决定采用什么方式完成所需的处理,发送者对接受者不起任何控制作用。 一个对象能够接受不同形式、不同内容的多个消息; 相同形式的消息可以送往不同的对象,不同的对象对于形式相同的消息可以有不同的解释,能够做出不同的反映。 一个消息由下述三部分组成: ①接收消息的对象的名称; ②消息标识符(也称为消息名) ⑧零个或多个参数。 4.继承(1nheritance)