C++ 程序设计课程介绍
来源:互联网 发布:6379端口 编辑:程序博客网 时间:2024/05/05 01:10
我在大学所学东西,在这倾我所有。简单说是我在大学的课件。也可以说是一个很实用的菜鸟入门课程。课程是IBM教程。§
课程介绍
使用书籍
- IBM C、C++
- Accelerated C++
Practical Programming by Example – Andre Koenig, Barbara I. Moo
- 其他编程工具书,在深入编程后逐步介绍
课程目的和要求
- 了解程序设计的一般方法
- 掌握编程语言基础
- 了解面向对象编程的基本概念
- 培养基础编码能力和逻辑思维能力
第一讲 C&C++编程介绍
内容安排
- C,C++语言及其他编程语言的介绍
- 程序设计工具
- C 语言编程简介
程序语言的发展过程
- 0和1。二进制是计算机唯一能识别的和执行的语言
- 汇编程序语言。符号化的机器语言,用专门的翻译工具把符号翻译成机器语言
- 高级程序设计语言。 接近自然语言和数学表达式。 常用的语言有:Basic,C,C++,Pascal,Java等等,需要翻译成计算机能够识别的机器语言。
- 面向过程的语言(4GL)。只说明要完成一项任务,而不用说名怎样去做。如SQL
指令:指示不同的对象去完成同一件任务,需要发出不同的指令
程序:一序列的计算机指令,指示计算机去完成一项工作。如:
- 输入X
- 输入Y
- 计算X+Y
- 输出计算结果
程序语言:程序采用的语言。如:
- 机器语言 0,1
- 汇编语言:
- C,Pascal,C++, JAVA, VB.NET ,C#
- SQL
程序设计工具的作用
- 编译(compile)——将程序翻译成机器语言
- 查错——检查程序中的拼写错误和语法 错误
- 可视化编程——所见即所得的控件编程
主要内容:
1. 简介
计算机主要用于解决大量的计算性问题--问题繁简不一:
- 简单问题:计算一系列数的平均值
计算一定本金的利息收入
- 复杂问题:如,对联立微分方程求解
计算矩阵的乘积
统计词典中某一词汇的出现频率
包括:辨别个人的指纹或声音
模拟一场战争演习的状况
下一局高水平的国际象棋
- 计算机的功能极为强大,它可以同时执行好几个任务。
- 然而事实上,它仍只是一台机器,没有思考的能力。它只能实现由用户或程序交给它的命令。
- 程序员不能给计算机性质不明的命令。所以所有命令都应明确且详细定义过。
- 算法的概念便应运而生了。
2. 算法
- 波斯数学家Abu Jafar Mohammed Ibn Musa Al Khwarizmi 在公元二世纪开发出这一方法并验证其有效;
- 法国人了解此方法后,将之命名为AlKhwarizmi 或 algorism;
- 这个词演化为algorithm,即我们今天所称之算法。
2.1. 算法示例
示例 1.1
假设有三个数字A、B 和C,我们要找出较大的那个:
S1:获取这三个数字A、B 和C。
S2:如果A>B 为真,则A 是较大的数字。
否则较大的数字是B。
S3:如果第二步中找出的较大数字小于C,则 现在较大的数字是C。
否则,仍是第二步中获得的较大数字
示例 1.2
假设我们要判断所给的整数是不是素
数。一个非负的整数如果不可被除 1 和它自
身以外的数除尽即为素数。因此,要判断给
定的整数 n 是否是素数,我们需要检查 n 是
否可以被 1 到 n 之间的某一整数整除。解决
此问题的算法如下:
S1:通过输入获取整数 n。
S2:检查它是否可以被变量 j 整除,j 的值在 2 到 n-1 之间。
S3:如果 n 可以被 j (2 <= j < n-1) 整除,那么整数 n 不是素数,否则 n 是素数。
示例 1.3
假设我们要计算二次方程 ax2 + bx + c = 0 的
根,其中系数 a、b 和 c 是输入值。算法:
S1: 通过输入获取系数 a、b 和 c 的值。
S2:计算判别式 discriminant = b2 – 4ac。
S3:如果判别式 discriminant < 0,根为虚数。运算结束。
S4: 如果判别式 discriminant = 0,则两根相等,root1 = root2 = -b/2a。运算结束。
S5:否则,根为 –b + sqrt (discriminant)/2a 和 –b - sqrt (discriminant)/2a。
示例 1.4
假设我们要统计元音字母(A、E、I、O、U)在一个文本文件中出现的次数。解决这一问题的过程极为简单。每次从文本中抽取一个字符并检查它是否为元音字母。如果它是,那么将之计入特定元音的数量中,否则忽略这个字符。重复此操作,检查文本中的所有字母。这一过程的算法如下:
S1:将 CounterA、CounterE、CounterI、 CounterO 和 CounterU 的值设为0。
S2:读取文本中的第一个字符。
S3:重复下列子布骤直到读至文本的末尾:
如果字符 = A 或 a,CounterA 的值加1。
如果字符 = E 或 e,CounterE 的值加1。
如果字符 = I 或 i,CounterI 的值加1。
如果字符 = O 或 o,CounterO 的值加1。
如果字符 = U 或 u,CounterU 的值加1。
否则,略过字符。
读取下一个字符。
S4:显示 CounterA、CounterE、CounterI、 CounterO 和 CounterU 的值。
算法示例总结
上述示例演示的算法包括:算术计算、检验两个数值是否相等、有选择地执行一系列步骤以及根据条件重复定义好的一系列步骤。我们现在开始学习算法的种类。
3. 算法的种类
算法可宽泛地分为三类:
• 有限的,确定性算法
• 有限的,非确定性算法
• 无穷算法
3.1. 有限的、确定性算法
这类算法在有限的一段时间内终止。它们可能要花很长时间来执行指定的任务,但仍将在一定的时间内终止。这类算法得出的结果常取决于输入。换言之,只要知道输入值,我们就能得出确切的结果。我们在现实生活中遇到的大多数算法都属于这一类。求二次方程的根、找出 1 到 1000000 之间的所有素数和求方阵的逆矩阵都属于有限的确
定性算法。
3.2. 有限的、非确定性算法
这类算法在有限的一段时间内终止。然而,对于一个(或一些)给定的输入,算法的结果并不是唯一的或确定的。
例如生成一个随机数的算法。在数学上有一种经过证明的方法,叫做乘法同余生成法(multiplicative congruential generator ), 通过如下形式的函数实现:Xi = (aXi-1) mod m,其中 a 和 m 为遵循一定规则的常数。所涉及的算法为非确定性算法,因为通过该算法获得的结果每每不同。可是,这正达到了该算法的目的,即生成随机数。
3.3. 无穷算法
是那些由于没有定义终止条件,或定义的条件无法由输入的数据满足而不终止运行的算法。
- 通常,无穷算法的产生是由于未能正确定义终止条件。
- 用途:
1、监控一个核反应堆的温度(只要反应堆还在工作,这个任务就该持续运作)。此任务会一直运行,直至有一个外部刺激因素使之停止。
2、列举无穷小数pi 的所有位。计算 pi 将会得出一个无穷小数。这个算法在数学运算中是极为有用的。
4. 计算机基本组成
- 《导论》已介绍,在此仅复习带过
- 计算机是一种电子设备,它使用算法帮助解决计算问题。
- 一个现代的计算机系统由处理器、存储器、输入/输出设备的互连系统组成
5. 什么是计算机程序?
- 是以一种适合计算机使用的语言表达出来的算法
- 由一系列经明确定义的无歧义的指令组成。
例:一个计算两数相除的程序,由一系列指导计算机如何计算除法的指令组成。输入这两个数后,计算机就会在这个程序的帮助下执行这些指令并得出结果。
- 开发来解决特定的问题的程序称为软件。
- 计算机程序有许多种。一些计算机程序用于协助控制计算机系统的运作并优化资源的使用。它们被称为系统程序, 编写这些程序的人被称为系统程序员。
- 还有一些程序,专门为一个特定的问题或一系列相关的问题提供解决方案。这些程序称为应用程序。大多数计算机程序都属于此类。
- 应用程序的涵盖范围很广,从计算阶乘的简单程序到解算复杂的差分方程体系的程序、下国际象棋的程序等都在其列。
- 计算机程序都是用特定的计算机编程语言写成的。
6. 为什么我们需要编程语言?
- 一个算法必须可为计算机理解。一个程序通过一系列指令来达到这个目的。因此,程序里的指令必须清晰,定义明确而无歧义。
- 自然语言(例如英语)的语法过于丰富。语义对于开发者、学习者和使用者而言过于复杂。
- 为了保证沟通的清晰与明确编程语言必须毫无歧义。
由此,我们需要一种语法简单,语义精确,性质明
确的计算机编程语言。
6.1. 编程语言的级别
编程语言有不同的层次:
- 机器语言
- 汇编语言
- 高级语言
- 面向对象编程语言
- 过程化语言
6.1.1. 机器语言
- 最基础级别,计算机二进制数处理。
- 用二进制形式编写的指令称为机器语言。 机器语言将一系列命令以二进制形式(0 和 1 的字符串)传递给计算机。
- 计算机的电路可以直接以二进制方式执行这些指令。
6.1.2. 汇编语言
- 机器语言: 对计算机 è 极为方便
对人类 è 乏味冗长
表示相加,使用符号“add”
比 1000101001010100 更适合人类 。
同样,符号“sub”代表减(subtract),“mul”代表乘(multiply)。
- 汇编语言对每个机器语言指令都有对应的符号(或助记符)。
- 缺点:使用非常简单的指令(例如 add、sub、mul、move 等等)编写程序比较麻烦。
6.2.3. 高级语言
- 比机器语言或汇编语言更简单
- 指令集更接近自然语言,被广泛使用
- 语法和语义通过对指令进行明确定义
- 已有约有数百种高级语言被开发。其流行程度不一。大多数高级语言都是通用语言,例如 C、Pascal、FORTRAN、C++、Java 等等。用于编写各种应用程序。
- 高级语言分面向对象编程语言&过程化语言 两类
6.1.4 面向对象编程语言
- 面向对象软件主要针对对象
- 对象是一个“设备”,它接收并发送消息
- 对象实际上包含
※ 代码(一系列计算机指令)和
※ 数据(指令要处理的信息)
通常,代码和数据分开;
然而,在一个面向对象编程语言中,代码和数据
被融为一个对象
- 流行的面向对象编程语言包括 C++ 和 Java。
6.1.5 过程化语言:
- 使用这种语言,编程者必须给计算机一系列必须遵循的步骤,以获
- 得所需的输出。流行的过程化语言包括 Basic、Pascal 和 C。
7. 编译器
编译器是一种将输入的高级语言(例如 C)翻译为一系列计算机机器语言的指令的计算机程序。
8.程序设计工具和程序语言的关系
- 一种程序设计工具都是针对一种特定语言的。
Vc++ ------------------- C++
Delphi ------------------- pascal
Jbuilder eclipse myeclipse ------------------- java
VS.NET ------------------- VB.NET, C#
- C++ 程序设计课程介绍
- C程序设计课程主页 :12-13-2
- C程序设计课程-第四堂课后作业
- C程序设计课程 第六堂课后作业
- C程序设计课程-第七堂课后预习
- C程序设计课程-第七次实验报告
- C程序设计课程第十一堂课后作业
- C程序设计课程第八次实验任务
- C程序设计课程第八次实验任务
- C程序设计课程-第八次实验任务
- C程序设计课程第十二堂课后作业
- C程序设计课程第九次实验任务
- C程序设计课程第九次上级任务
- C程序设计课程 第十三堂课后作业
- C程序设计课程第十次实验任务
- C程序设计课程 第十一次实验任务
- C程序设计课程-第十一次实验任务
- C语言及程序设计基础 课程主页
- 动态生成控件,回传和视图状态(ViewState)
- 赴日邀请涵样本
- 关于仿制的一个ACE跟踪类
- 关于volatile和synchronized
- 别让目标伤了自己
- C++ 程序设计课程介绍
- NET面试问题及答案
- Quick Memory Editor 5.0
- 《大规模C++程序设计》读书笔记10
- 20余款网页按钮和标志生成站点(在线按钮制作)~ - 恋上CSharp - 博客园
- 优化PHP代码的40条建议
- 用APMServ5.2.0快速搭建PHP本地服务器|下载
- 数据结构
- 在windows下安装CVS