第1章程序设计与VC语言简介课件_第1页
第1章程序设计与VC语言简介课件_第2页
第1章程序设计与VC语言简介课件_第3页
第1章程序设计与VC语言简介课件_第4页
第1章程序设计与VC语言简介课件_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

VC++实用教程

VisualC++UtilityCourse刘惊雷编著电子工业出版社2023/7/201课程内容

本课程以操作系统的程序员接口为主线,介绍了VC程序的编制方法和原理。主要内容分为三篇:VC控制台程序设计与面向对象理论(主要编写字符方式下的程序);VC的两种编程模式API编程和MFC编程(编写具有图形用户界面的应用程序);VC高级编程----基于组件的编程与应用(编写COM和DLL组件)。2023/7/202课程目标 掌握利用VC编写面向对象的控制台程序、VC双路开发具有图形用户界面的模式--API编程和MFC编程,了解基于组件的应用程序的编制方法。在整个课程的学习中,要体会Windows操作系统的两个接口(用户接口和程序员接口)的使用,熟悉VC应用程序对计算机软硬件系统的控制,掌握一些常用的程序设计方法。2023/7/203VC简介

VC(VisualC++的简称)是一种功能强大、使用灵活的程序设计语言,尤其是在使用操作系统所提供的服务与资源方面独霸群雄,VC程序设计可以深入到计算机的方方面面,但“万丈高楼平地起”,掌握程序设计有关的基础理论与应用是至关重要的。2023/7/204教材和参考书:1、教材:

VisualC++实用教程(刘惊雷编著,电子工业出版社,2005.3)2、参考书:刘惊雷、范辉等.VisualC++6.0程序设计简明教程,高等教育出版社,2001.7刘路放等.VisualC++与面向对象程序设计教程.高等教育出版社,2002.4朱磊,周彬.Windows下的C/C++高级编程.人民邮电出版社,2003.32023/7/205考核方式:习题课堂开卷考试上机调试程序2023/7/206概述 VC(VisualC++的简称)是一种功能强大、使用灵活的程序设计语言,尤其是在使用操作系统所提供的服务与资源方面独霸群雄,VC程序设计可以深入到计算机的方方面面,但“万丈高楼平地起”,掌握程序设计有关的一些基础理论与应用是至关重要的。本篇为VC控制台程序与面向对象理论,旨在为读者顺利进入VC开发领域打下坚实的基础。2023/7/207

1.1程序设计与程序设计语言

1.2程序设计方法的演变

1.3VC语言概述

习题

本章内容主要包括程序设计的四个层次,四种程序设计方法的概念,简单的具有输入输出功能的控制台程序的设计,VC集成开发环境的特点.要求了解面向对象的程序设计和基于组件的程序设计的特点,掌握结构化程序设计的特点及应用、输入输出流在控制台程序中的应用,熟悉单文件控制台应用程序的编写过程,熟练掌握程序设计四个层次的含义及每个层次的重要性。

第1章程序设计与VC语言简介2023/7/208

概述

1.1.1程序设计

1.1.2程序设计技术的四个层次

1.1.3算法与程序

1.1.4程序设计方法学基础

1.1.5程序设计语言

1.1.6程序设计的重要性概念1.1程序设计与程序设计语言2023/7/209

在计算机技术发展的历史长河中,有两个人是需要我们记忆的,一个是图灵,另一个是比尔、盖茨。图灵用数学的概念形式地对计算的本质做了解释;比尔、盖茨连续几年都为全球首富,这“地球人全知道了”,是他带领Microsoft公司,从事于计算机的灵魂——软件的开发。本书的目的,就是带领广大读者熟悉其软件开发的旗舰产品——VisualC++,通过它开始我们的程序设计,开始对计算机系统的认识过程。概述2023/7/20101.1.1 程序设计程序设计的概念:是采用某种编程语言,为了解决某个特定领域的问题,而使用某种设计方法编写计算机程序的活动。如果把小说比作程序的话,小说创作就是程序设计。只不过小说是表达人的思想,进而控制人的活动的一种代码,而计算机程序是表达机器的思想,进而控制机器活动的一种代码,当然这种代码也是和人相通的。程序设计的特征:程序设计必须采用某种语言;对领域的依赖性;采用某种设计方法进行。

2023/7/20111.1.2 程序设计技术四个层次算法设计与分析程序设计语言程序设计方法学程序设计环境与工具2023/7/20121.1.3 算法与程序算法的概念:利用计算机解决问题的步骤。著名的计算机科学家沃思说“程序=数据结构+算法”,算法在程序设计中的作用可窥见一斑。如果把做菜的原料比做数据,你做出的菜比做设计的程序,那么烹饪的方法就是算法。程序:用某种语言为工具编制出来的动作序列,它是人类思想的一个载体。计算机程序是用计算机程序设计语言所要求的规范书写出来的一系列动作,它表达了程序员要求计算机进行的操作,该操作的结果是为人类服务的某种表示形式。2023/7/2013程序的特征:程序的静态与动态属性;程序是程序语言抽象的符号表示;程序是对数据实施算法的过程;程序是分层嵌套的。2023/7/2014算法在程序设计中的重要性:

算法具有时间上的稳定性;语言是用工具编制出来的动作序列,算法的理解、设计和分析都需要掌握扎实的基础理论知识。包括算法的复杂性理论,各种常用的求解方法如递归法、贪心法等;程序开发的后期,界面的设计不再是主要的问题,而数据结构和算法的设计却变得愈加重要。2023/7/20151.1.4 程序设计方法学

上个世纪60年代后期,许多软件项目的开发周期与开发成本超出预算,而生产出来的软件产品却可靠性差、可重用性差、可维护性差,这反映了整个软件行业的生产效率低下,这就是人们常说的软件危机。程序设计方法学是指在程序设计过程中应遵循的一些原理和方法。程序设计中最关心的是程序的效率和程序的可靠性。

程序的可靠性包括两个方面:程序的正确性。指程序的实现是否满足了需求,程序的正确性的证明在程序设计方法学课程中来研究;程序的健壮性,指程序异常情况下工作的能力。

2023/7/2016

程序设计方法学主要研究:

抽象数据类型理论、程序的控制结构程序的正确性证明、程序变换技术结构化程序设计(如C语言)与面向对象的程序设计(C++)范型等。

程序设计方法是独立于具体程序设计语言的技术

程序设计方法与程序设计语言是相辅相成的。采用某种程序设计方法编写程序需要相应程序设计语言作为工具程序设计语言的设计是为了支持某种程序设计方法。2023/7/20171.1.5程序设计语言程序设计语言:是一种适合于计算机和人们阅读方式的描述计算的符号系统。注:“高级语言程序设计”强调的是利用某种高级语言进行程序设计的过程,而“高级程序设计语言”强调的是对高级程序设计语言的理解和应用。与程序设计语言有关系的三类人员程序设计语言的开发者程序设计语言的实现者程序设计语言的使用者2023/7/20181.1.6*程序设计的重要性概念 程序设计的重要性,可从以下几个方面来理解:程序设计是计算机类学生毕业走向工作岗位的一项基本技能。程序设计是非计算机学生跨入计算机领域的一个实践之路。程序设计的四个层次决定了程序设计是一项全面技能的培养。2023/7/20191.2程序设计方法的演变概念

概述

1.2.1结构化程序设计概念

1.2.2面向对象程序设计

1.2.3基于组件的程序设计

1.2.4*面向Agent程序设计2023/7/2020

20世纪60年代以后,计算机硬件技术的迅速发展,导致其速度与存储容量不断提高,成本急剧下降。加之程序规模越来越大,许多程序的开发不再是仅靠个人的技艺,而需要团队的共同努力才可能完成。而旧的程序设计方法很少考虑团队各成员之间交流协作的需要,因此,为了实现程序的可靠性、可重用性和可理解性等因素,诞生了很多程序设计方法。本节阐述程序设计发展史的四种程序设计方法。概述2023/7/20211.2.1结构化程序设计结构化程序设计的核心思想:(1)程序实体主要由算法和数据结构组成;(2)其分析与设计方法采用的是“自顶向下,逐步求精”的程序设计方法;(3)在程序流程控制结构上遵循“单入口单出口”的理念;(4)任何程序的结构都是由顺序、选择与循环来完成的,取消Goto语句的使用。2023/7/2022例子【例1-1】打印自然数中前n个素数。程序的主文件是PrintPrim.cpp。

分析:存放n个素数的数据结构:用一维数组判断素数算法:根据素数的定义,x是素数,当且仅当x只能被1和自身x整除,因此,要确定x是不是素数,只要检查x能不能被不超过sqrt(x)的数整除即可。划分模块,逐步求精:打印自然数中前n个素数的任务划分为:判断x是否素数、找前n个素数、打印前n个素数三部分,以函数抽象之。程序实现2023/7/2023#include"stdio.h"#include"math.h"#defineMaxLen10000boolIsPrim(intx)//判断x是否素数{ for(inti=2;i<=sqrt(x);i++) if(x%i==0) returnfalse; returntrue;}voidFindPrims(inta[],intn)//找前n个素数存于数组a中{

intx=1; a[0]=2;//第一个素数是2,不用求

inti=1;//数组的下标位置

while(i<n) { x=x+2;//素数除了2外,只能是奇数,从3搜寻

if(IsPrim(x)) { a[i]=x;//将素数x放到数组a的第i个位置处

i++;//下个位置增1 } }}2023/7/2024voidPrintPrims(inta[],intn){ FindPrims(a,n);//找前n个素数存于数组a中

for(inti=0;i<n;i++)//打印数组a中存放的n个素数

printf("%8d",a[i]);printf("\n");}voidmain(){ inta[MaxLen];//a存放素数

intn;//打印的素数的个数

printf("PleaseInputnNumberToA"); scanf("%d",&n); PrintPrims(a,n);//打印a数组中的前n个素数}2023/7/2025以结构化程序设计的观点看,程序主要包括数据结构与算法,并且两者是分离的。但将函数与其操作的数据分裂开来,导致了程序维护的困难。面向对象的编程方法把一个比较复杂的问题分解成一个个能够完成独立功能的对象,把这些对象组合起来去完成一个复杂的功能。这就像计算机公司一样,用许多计算机的部件(比如机箱、内存、硬盘、显示器等)去组装一台计算机,各个零部件都能完成自己的功能,计算机公司员工所做的工作只是依照一定的方式把它们组合起来。1.2.2 面向对象程序设计2023/7/2026

面向对象的程序设计方法是将反映事物的属性与操纵该属性的方法组装成一体,形成一个实体对象。

属性是指某对象的属性,方法是指某对象的方法,比如说轮子的个数是一个属性,但必须搞清是什么对象的属性,因为汽车和自行车都有轮子;同样,当我们说加速这个方法时,必须搞清是什么对象的方法,因为汽车和自行车都有加速的方法,但其加速的原理是不一样的,即该方法的实现在不同的对象中的代码是不一样的。相同类型的对象构成一个类,对象是类的一个实例,类是构成面向对象程序设计的基石。

客观世界的问题是由实体及其相互间的关系构成的,采用面向对象的方法是把这些实体映射为对象,各对象既是一个独立的实体,又可通过消息(即让对象以某种进行操作的请求)相互作用。

2023/7/20271.2.3 基于组件的程序设计基于组件的程序设计可以说是面向对象程序设计的延伸,两者并不矛盾,可以说基于组件程序设计也采用了面向对象的技术,只不过在面向对象程序设计中,我们往往强调的是在同一个程序语言的开发环境下进行设计。面向对象程序设计的基石是类与对象,这些类可以在一个开发环境下重用,例如VC中的MFC类库就只能在VC的环境下使用,C++Builder的VCL库也主要在Borland的产品中进行重用;而在基于组件的程序设计中,程序设计的基石是组件,它是粒度更大的对象,其作用主要在于跨平台与开发语言中使用。当前的组件技术主要有CORBA与COM。在最后一篇中,我们就要利用VC来开发一个跨平台的COM组件。

2023/7/2028组件:是指系统中明确辨识的构成部分,是可以被复用的软件实体。它由组件规约和组件实现两部分组成,其中组件规约主要由组件模型来进行描述。

组件模型:是指对组件本质特征的抽象描述,当前组件的设计采用的模型主要有CORBA和COM,这些组件模型将组件的接口与实现进行了有效地分离,提高了组件交互能力,从而增加了复用的机会,并适应了目前网络环境下大型分布式系统的需要。采用组件来设计程序的好处:(1)跨平台、跨语言的支持。(2)位置透明性。(3)可伸缩性。(4)可复用性。2023/7/2029基于组件的程序设计中还有一个很重要的概念——架构。架构是整个或部分系统的可重用设计,表现为一组抽象组件及组件实例间交互的方法;另一种定义为,架构是可被应用开发者定制的应用骨架。前者是从应用方面而后者是从目的方面给出的定义。

架构的最大好处就是复用,面向对象系统最大复用方式就是程序架构的复用。

架构提供了可复用的抽象算法及高层设计,并能将大的系统分解成更小,而且能够描述组件间的内部接口,这些标准接口使得在已有的组件基础上通过组装建立各种各样的系统成为可能。

2023/7/2030*1.2.4 面向Agent程序设计在面向代理的时代,程序是由多个具有独立功能的Agent组成,程序设计的关键是设计每一个具有智能行为的Agent实体。Agent是一个被密封了的计算机系统,我们可以从以下四个方面加以理解:(1)一个Agent是一个完整的计算机实体,它内部包含了实现其目标所必需的各种子系统和子系统间相互作用的接口;(2)它能够感知自己当前所处的环境和环境状态的变化,并能够对环境的变化智能地做出自己的行动;(3)每个Agent都有自己特定的能够实现的目标;(4)每个Agent是一个自治体,它既能控制其内部的状态又能控制自己的行为。2023/7/2031面向Agent的程序设计的四个步骤:(1)分解大系统。

(2)提取Agent。(3)建立模型与软件实现。

(4)组装。2023/7/20321.3 VC语言概述

1.3.1C、C++和VC语言的关系

1.3.2VC控制台程序介绍

1.3.3一个VC单文件应用程序的实现

1.3.4标准设备的输入与输出语句

1.3.5VC控制台程序基本结构与特点

1.3.6*

VC6.0集成开发环境

2023/7/2033C语言是一种典型的结构化程序设计语言,数据和对数据的操作在C语言下是分离的,这导致了在大规模软件开发中,对程序结构的复杂性难以控制,开发出的代码复用程度较低。C++语言和C是兼容的,C语言是C++语言的一个子集。C中的关键字、语法、函数、表达式等在C++里都完全适用。C++是一种程序设计语言,VC和BCB采用的都是基于C++语言的编程工具。1.3.1 C、C++和VC语言的关系2023/7/20341.3.2 VC控制台程序介绍控制台程序:是管理基于字符(文本)界面的输入与输出;在字符界面的应用程序中,没有提供基于图形用户界面接口的Windows程序的界面函数库。输入缓冲区:输入缓冲区放的是输入事件(如键盘和鼠标)的记录;屏幕输出缓冲区是一个二维数组,存放输出到控制台窗口的字符信息和颜色信息。2023/7/20351.3.3 一个VC单文件应用

程序的实现

【例1-2】实现简单文本输出的单文件控制台程序实例。该程序的主文件是SingleFile.cpp。1.编辑

单击VisualStudio主菜单栏中的File菜单项下的New,则弹出一个新建程序对话框,在该对话框中有四个选项卡,选择Files选项卡,弹出的对话框中列出了13个选项。选中C++SourceFile列表项,并在右边的File编辑框中输入新建的单文件C++文件名称SingleFile,同时在Location编辑框中指定一个存放文件的目录

。2023/7/2036程序源代码:#include<iostream.h>voidmain(){ cout<<“这是一个简单的单文件VisuallC++程序!\n";cout<<“欢迎进入VC程序开发的世界!您的基础知识准备好了吗?"<<endl;}输入完后,按CTRL+S热键进行保存。2023/7/2037图1.1单文件建立窗口2023/7/2038

2.编译和链接

3.运行

源代码经过编译链接后就生成了可执行文件,通过单击Build|ExecuteSingle.exe选项,生成的可执行文件将被运行,按任意键,则返回到VC的主窗口。

单击VisualStudio主菜单栏中的Build菜单项下的CompileSingle.cpp,则弹出一个如图1.2所示的询问是否建立一个激活的工作区文件对话框,在该对话框中选择“是”按钮后,VC编译器将对该源代码进行编译。单击Build|BuildSingle.exe选项,将对编译好的程序进行链接。如果该程序尚未编译,则会先对其编译之,而后进行链接。2023/7/2039图1.2询问是否建立一个缺省的工作区对话框

图1.3程序输出的控制台窗口

2023/7/20401.3.4 标准设备的输入与

输出语句

VC控制台应用程序中,不仅可以使用标准C语言函数库stdio.h中提供的输入函数scanf()和输出函数printf()外,还可以使用标准输入流cin和输出流cout,它们的定义是在输入输出流式头文件iostream.h中,在使用这两个流设备时,必须在编译预处理中包含它们。在C++中,将数据从一个对象到另一个对象的流动抽象为“流”。流在使用前建立,使用后被删除。从流中获取数据的过程称为提取操作,向流中添加数据的操作称为插入操作。2023/7/20411.键盘输入

键盘输入的作用是读取用户输入的字符串,按相应变量的类型转换为二进制代码写入内存。其格式为:

cin>>变量1>>变量2>>变量3……>>变量n;

其中cin是预定义的输入流对象,代表键盘。>>为输入流对象的提取操作符,它作用于cin上可以实现从标准输入设备——键盘上输入数据。输入流cin通过>>从键盘上提取用户的输入,然后将这些值送到其后的变量中。2023/7/2042例如: intx,y; cin>>x>>y;当程序执行时,用户从键盘上输入16和28(用空格或回车分隔)时,cin的提取操作>>就把从键盘上所获取的字符串“16”和“28”,转化成整型数据存入变量x与y中。2.屏幕输出

屏幕输出作用是从内存中读取数据项,对相应的表达式求值后,转换为相应的字符串显示到屏幕上,其格式为:

cout<<表达式1<<表达式2<<表达式3…<<表达式n;2023/7/2043

其中cout是预定义的输出流对象,代表显示器。<<为输出流对象的插入操作符,它作用于cout上可以将数据输出到标准输出设备——显示器上。各个表达式是输出项,cout的插入操作符首先对各输出项的表达式求值,然后转换成字符串形式输出。例如: intx=66,y=88; cout<<x<<“\n”<<y+1<<endl;

当程序执行时,程序计算出x的值是66,把它转换成字符串输出到屏幕上,紧接着输出字符“\n”(换行字符)、表达式y+1的值89。endl的作用与“\n”一样,都是换行符。2023/7/20443.输出格式控制符

C++中的输出中,可以包含各种各样的格式控制符号,例如上面所见到的换行符endl与“\n”,还有制表符“\t”等。表1.1列出了常用的格式控制符及其功能。在使用它们时,要在程序的开头添加#include<iomanip.h>。格式控制符功能endl输出一个新行,并清空输出缓冲区setfill(charc)设置填充字符cdec/oct/hex用十进制/八进制/十六进制表示输入或输出数值setw设置输出宽度setprecision(intn)设置浮点数输出精度(包括小数)表1.1常用输出格式控制符2023/7/20451.3.5 VC控制台程序基本

结构与特点

VC语言设计的控制台程序和C语言编写DOS下的程序很相似,不同之处在于,VC语言设计的控制台程序中出现了类和对象,以及由类和对象带来的语法、语义和语用。VC控制台程序是由一个或多个文件组成,每个文件由用户自定义或VC系统自带的类、函数、变量组成。类由成员变量和成员函数组成,函数由若干个语句组成,语句是单词的集合,单词是字符的集合。2023/7/20461.main()函数VC控制台程序的执行开始点是main()函数,和C语言不同的是,VC下必须指定该函数的返回值(前面例子的返回值为void)。VC开发的带有图形用户界面(第二篇所讲的)的Windows程序的开始点是WinMain()。2.程序注释VC下,程序有两种注释的方法:一是单行注释符//,它是将//后面的一行语句作为程序的注释;二是多行注释符号/*和*/,它们必须成对出现,/*标识注释的开始,*/标识注释的结束。用户可以根据需要注释单行或多行开灵活选择相应的注释语句。2023/7/20473.编译预处理预处理中的每个命令也是一种操作,该操作指明程序在编译前所

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论