医用仪器软件设计-基于MFC-C3_第1页
医用仪器软件设计-基于MFC-C3_第2页
医用仪器软件设计-基于MFC-C3_第3页
医用仪器软件设计-基于MFC-C3_第4页
医用仪器软件设计-基于MFC-C3_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

医用仪器软件设计——基于MFCC++语言基础03Contents.1HelloWorld实验2简单的秒值-时间转换实验3基于数组的秒值-时间转换实验4

基于函数的秒值-时间转换实验5基于枚举的秒值-时间转换实验6基于指针的秒值-时间转换实验7基于引用的秒值-时间转换实验1.HelloWorld实验1.1实验内容通过VisualStudio的控制台创建HelloWorld.cpp文件,并对该文件进行编译和执行。1.HelloWorld实验1.2实验原理命名规范C++是大小写敏感的编程语言,即Hello与hello是不同的。本书中涉及到的类名、函数名的命名规范如下:类名和函数名:类名和函数名的首字母均为大写,如果名称由若干单词组成,那么每个单词的首字母均为大写,例如MyFirstClass。1.HelloWorld实验1.2实验原理C++程序结构以HelloWorld实验为例介绍C++的程序结构,程序清单如下:#include<iostream>usingnamespacestd;intmain(){cout<<"HelloWorld!"<<endl;return0;}#include作用:用于引用其他文件的内容。编译时,在使用include的文件中,将include所在行替换为其文件内容。符号区别:<>引用标准库;“”引用自定义文件namespace作用:命名空间,在命名重复的情况下进行区分main()函数作用:程序运行时,第一个执行的函数cout<<"HelloWorld!"<<endl;作用:编译器输出“HelloWorld!”并换行

1.HelloWorld实验1.3实验步骤创建“控制台应用”添加代码运行程序:Ctrl+F52.简单的秒值-时间转换实验2.1实验内容

一天有24小时、一小时有60分钟,一分钟有60秒,因此,一天就有24×60×60=86400秒,如果从0开始计算,每天按秒计数,则范围为0~86399。通过键盘输入一个0~86399之间的值,包括0和86399,将其转换为小时值、分钟值和秒值,并输出到VisualStudio的控制台。入口函数:main变量:小时hour,分钟min,秒sec输入:cin运算输出:cout2.简单的秒值-时间转换实验2.2实验原理—变量命名规范变量类型变量说明命名规范举例局部变量函数中的变量第一个单词首字母小写,后续单词的首字母大写,其余字母小写格式heartRate全局变量函数外的变量g字母开头,后续单词的首字母大写,其余字母小写格式gHeartRate成员变量类中的成员变量m字母开头,后续单词的首字母大写,其余字母小写格式mHeartRate静态变量static关键字声明s字母开头,后续单词的首字母大写,其余字母小写格式sHeartRate常量const关键字声明所有字母大写,不同单词之间用下画线隔开的格式HEART_RATE2.简单的秒值-时间转换实验2.2实验原理类型存储空间范围char1字节-27~(27-1)或0~(28-1)unsignedchar1字节0~(28-1)signedchar1字节-27~(27-1)int4字节-231~(231-1)unsignedint4字节0~(232-1)signedint4字节-231~(231-1)shortint2字节-215~(215-1)unsignedshortint2字节0~(216-1)signedshortint2字节-215~(215-1)longint8字节-263~(263-1)signedlongint8字节-263~(263-1)unsignedlongint8字节0~(264-1)float4字节-2128~(2128-1)double8字节-21024~(21024-1)longdouble16字节-216384~(216384-1)wchar_t2字节或4字节1个宽字符—C++基本数据类型2.简单的秒值-时间转换实验2.2实验原理输出流:cout是iostream库中ostream类型的一个对象,与流插入运算符“<<”结合使用,在代码语句末尾通过endl换行。

示例:intcurrNum=12;

cout<<"Currentnumis"<<currNum<<"."<<endl;

打印出如下信息:Currentnumis12.输入流:cin是iostream库中istream类型的一个对象,与流提取运算符“>>”结合使用。

示例:intcurrNum;

cout<<"请输入数字:"; cin>>currNum;—标准输入输出流2.简单的秒值-时间转换实验2.2实验原理算术运算符格式说明+A+B加法,相加运算符两侧的值-A–B减法,左操作数减去右操作数*A*B乘法,相乘操作符两侧的值/A/B除法,左操作数除以右操作数的商%A%B取余,左操作数除以右操作数的余数++A++或++A自增,操作数的值增加1--A--或--A自减,操作数的值减少1计算小时、分钟、秒值hour=tick/3600; //tick对3600取商赋值给hour

min=(tick%3600)/60; //tick对3600取余后再对60取商赋值给min

sec=(tick%3600)%60; //tick对3600取余后再对60取余赋值给sec—运算C++中的算术运算符2.简单的秒值-时间转换实验2.3代码分析代码运行结果:3.基于数组的秒值-时间转换实验3.1实验内容通过键盘输入一个0~86399之间的值,包括0和86399,将其转换为小时值、分钟值和秒值,而小时值、分钟值和秒值为数组arrTimeVal的元素,即arrTimeVal[2]为小时值、arrTimeVal[1]为分钟值、arrTimeVal[0]为秒值,并输出转换结果。入口函数:main变量:数组存储输入:cin运算输出:cout3.基于数组的秒值-时间转换实验3.2实验原理—数组数组的介绍:用于数据的存储,一旦定义一个数组,其中只能存放一种数据类型。数组的特点:①长度确定,因为数组一旦被创建,它的元素个数就不可改变;②各元素类型必须相同,不允许出现混合类型。创建数组直接声明:数据类型数组名[数组长度];使用new运算符创建动态数组:数据类型*数组名=new数据类型[数组长度];数组初始化创建数组时赋值:数据类型数组名[数组长度]={值1,值2…};数据类型数组名[]={值1,值2…};先创建再for循环赋值:intarr[4];for(inti=0;i<4;i++){arr[i]=i+1;//数组赋值arr[4]={1,2,3,4}}使用数组数组名[索引值]注意:数组索引值从0开始3.基于数组的秒值-时间转换实验3.3代码分析4.基于函数的秒值-时间转换实验4.1实验内容通过键盘输入一个0~86399之间的值,包括0和86399,用CalcHour()函数计算小时值,用CalcMin()函数计算分钟值,用CalcSec()函数计算秒值,在主函数中通过调用上述三个函数实现秒值-时间值转换,并输出转换结果。入口函数:main变量:小时hour,分钟min,秒sec输入:cin运算输出:cout4.基于函数的秒值-时间转换实验4.2实验原理—函数函数的作用:将一段经常使用的代码封装起来,完成某个功能操作,便于以后他人使用。每个C++程序至少有一个函数,即main()函数,作为入口函数。函数的定义修饰符返回值类型函数名(参数类型参数名1,参数类型参数名2,…){

函数体 (return返回值;)}修饰符:一般情况下不写,用于定义函数的访问类型,如virtual、static。返回值类型:函数返回值的数据类型,若无返回值使用void,函数体中不需要return语句。函数名:函数的实际名称。要求见名知意,命名采用第一个单词首字母大写,如果名称由若干单词组成,那么每个单词的首字母均为大写,其余字母小写的格式命名。参数列表:带有数据类型的变量名列表,称为形参。表示函数的不确定因素。函数的声明:若自定义函数位于main函数之后,需要在main函数之前进行声明。4.基于函数的秒值-时间转换实验4.3代码分析5.基于枚举的秒值-时间转换实验5.1实验内容通过键盘输入一个0~86399之间的值,包括0和86399,使用CalcTimeVal()函数计算时间值(包括小时值、分钟值和秒值),通过枚举区分具体是哪一种时间值,返回值为计算出的时间值,在main()函数中通过调用CalcTimeVal()实现秒值-时间值转换,并输出转换结果。入口函数:main变量:小时hour,分钟min,秒sec输入:cin运算输出:cout5.基于枚举的秒值-时间转换实验5.2实验原理—枚举使用场景:一个变量只有几种可能的值,通过枚举把可能的值一一列举出枚举类型enumEnumTimeVal{TIME_VAL_HOUR,TIME_VAL_MIN,TIME_VAL_SEC,}关键字:enum使用注意:枚举类型一旦定义,枚举就相当于全局常量,在switch…case…语句中直接使用枚举常量,不需要枚举类型switch…case…语句作用:判断一个变量与一系列值中某个值是否相等switch(表达式){case常量值1:

语句块1 [break;]…case常量值n:

语句块n [break;]default:

语句块n+1 [break;]}switch语句中表达式的值必须与case常量值的数据类型相同。规则如下:(1)当表达式的值与case常量值相等时,则执行case语句后面的语句块,直到遇到break语句为止。当遇到break语句时,程序跳转到switch…case…语句后面的语句执行。(2)case语句并不一定都要包含break语句,如果没有break语句,程序会继续执行下一条case语句,直到出现break语句为止。(3)default语句在没有case常量值和表达式的值相等的时候执行。enum枚举类型名{

枚举常量1,

枚举常量2,

…..}5.基于枚举的秒值-时间转换实验5.3代码分析6.基于指针的秒值-时间转换实验6.1实验内容通过键盘输入一个0~86399之间的值,包括0和86399,将其转换为小时值、分钟值和秒值,并且将小时值、分钟值和秒值分别存放在指针p的(p+2)地址、(p+1)地址和(p+0)地址,最后输出转换结果。入口函数:main变量:指针输入:cin运算输出:cout6.2实验原理—指针6.基于指针的秒值-时间转换实验指针的含义:指针是一个变量,它的值为另一个变量的地址,即内存位置的直接地址。可通过指针保存地址(&取地址符,获取变量的地址)可通过指针访问内存(*解引用符,访问指针指向的内存)内存编号从0开始,用十六进制数表示内存地址,32位系统占4个字节,64位系统占8个字节指针变量的定义语法:数据类型*变量名;指针访问内存:通过解引用(指针前加*)来找到指针指向的内存指针指向整型变量:inta=1; //定义整型变量aint*p; //定义整型指针p=&a; //指针指向变量地址,&代表取地址*p=88; //通过指针修改变量a的值指针所占内存空间:32位系统占4个字节,64位系统占8个字节cout<<"p所占内存空间="<<sizeof(p)<<endl;

cout<<"p所占内存空间="<<sizeof(int*)<<endl;6.2实验原理—空指针6.基于指针的秒值-时间转换实验空指针的含义:赋为NULL值的指针被称为空指针,空指针指向内存中编号为0的空间。空指针的用途:初始化指针变量int*p;*p=10;//程序报错指针的初始化建议:为所有未使用的指针赋NULL值,同时在使用指针前对指针进行判空处理,就可以防止误用一个未初始化的指针注意1:使用未初始化的指针是引发运行时错误的一大原因注意2:空指针指向的内存为系统占用,不可访问int*p1=NULL;*p1=100;//程序崩溃inta=1;

int*p3=NULL;p3=&a;if(NULL!=p3)//使用指针前对指针进行判空处理

*p3=8;6.2实验原理—释放内存6.基于指针的秒值-时间转换实验背景介绍:当程序的内存需求只能在运行时确定时需进行动态内存分配。例如,当需要的内存取决于用户输入。在这些情况下,程序需要动态分配内存,使用结束时需要显式地释放内存。释放内存的两种方式:通过new分配的内存使用delete来释放内存通过malloc分配的内存使用free来释放内存释放内存带来的问题:delete和free只是释放了指针指向的内存,指针本身未被释放,此时指针存储的是一些垃圾值,就是通常所说的“野指针”。“野指针”指向已经释放的内存可能会导致数据错乱。解决方案:在执行释放内存操作后,应该及时将指针指向NULL地址6.2实验原理—指针操作一维数组6.基于指针的秒值-时间转换实验创建动态数组数据类型*数组名=new数据类型[数组长度];动态数组的长度可在运行中确定数组指针变量名=数组名(都指向数组第一个元素地址)数组元素存放在连续地址空间中(一个存储单元存储一个字节)数组指针类型和数组数据类型需保持一致创建长度为4的动态整型数组:int*arr=newint[4];for(inti=0;i<4;i++){*(arr+i)=i+1;//同arr[i]=i+1;}通过指针给数组赋值1234数组名:arrarr[0]arr[1]

温馨提示

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

评论

0/150

提交评论