Visual C++ 2010 入门经典

Visual C++ 2010经典教程:MFC、C++/CLI与遗留系统维护实战指南 C++作为高性能系统开发的核心语言,其与操作系统底层的紧密交互能力是许多关键应用的基础。在Windows平台开发中,微软基础类库(MFC)通过封装Win32 API和消息映射机制,为构建桌面应用程序提供了系统化的框架方案,这一设计思想深刻影响了后续UI框架的演进。对于需要维护金融、工业控制等领域的遗留系统,或深入理解Windows桌面开发原理的工程师而言,掌握特定历史版本的技术栈具有重要工程价值。C++/CLI技术作为连接原生代码与.NET生态的桥梁,在混合编程场景中仍发挥着独特作用。本文围绕Visual 阅读详情

第二章 数据、变量和计算

2.2 定义变量

  • 变量名包含字母、数字、下划线,必须以字母或下划线开头,不允许空格,区分大小写。变量是一段内存,可引用和存储数据
  • 变量声明也属于定义(特殊情况除外)
int value; %既是声明也是定义
  • 声明是将名称以及这个名称用途的信息引入程序;定义设计分配这个名称的计算机内存
  • 变量初始化
int value = 0;
int value(0);// 函数表示法

2.3 基本数据类型

三类基本数据类型:存储整数的类型、存储非整数值的类型(浮点类型)、指定空的值集或不指定任何类型的 void 类型。

  • int 占用4个字节
  • long 占用4个字节,也可以写作 long int
long value3 = 30L; // L 表示 long 型,没有附加 L 则是 int 型
  • long long 型占用8个字节,以 LL 结尾
  • char 占用1个字节 −27∼27−1 可以存储给定值域内的整数或者存储单个 ASCII 字符的代码。
char letter = 'A';  // ' '之间单个字符
char letter = 65;   // A 的 ASCII 值是65。
  • wchar_t 占用2个字节,表示宽字符型
wchar_t letter = (0x5A); // 0x 表示16进制,左高右低
wchar_t letter = L'Z';   // L 表示16位字符代码值 
wchar_t letter = (L'Z'); // 函数表示法
  • 整型修饰符
    默认 char、int、 short、long 整型变量将存储 signed 整数值
    ▶char 和 signed char 表示不同类型。
signed value = -5; // 单独使用关键字,signed表示int
unsigned long value = 5UL; // U 表示无符号
  • Bool类型
    只有两个值的变量: true、 false,被认为是整数类型。
bool result = true; 
bool result = (true);
  • 浮点类型
    浮点型必须包含一个小数点或者一个指数或者两者都有。如果数字值既没有小数点也没有指数,则是整数。double 占用8个字节; float 占用4个字节
double value = 5.2;
float pi = 3.14159f; // f表示浮点型



图 1 - 基本数据类型

  • 在C++中,所有类型的常数都称为字面值
    ▶不能指定short型或者unsigned short 型的字面值



    图 2 - 字面值

  • 定义数据类型的同义词
    typedef 为现有的类型定义自己的类型名称。

typedef long int BigOnes;
BigOnes mynum = 0L;
  • 具有特定值集的变量
    枚举:
enum Week {Mon,Tues,Wed,Thurs,Fri,Sat,Sun} thisWeek;  // 声明了名称为 Week 的枚举类型,thisWeek 只能采用大括号之间指定的常量值。

thisWeek = Thurs; // thisWeek的值是3。

enum Week nextWeek; // 也可以忽略关键字 enum 

enum Week {Mon = 1,Tues,Wed,Thurs,Fri,Sat,Sun } thisWeek; // 默认从0开始。

▶不允许用函数表示法初始化枚举器。

2.4 基本输入输出操作

  • 从键盘输入
    通过标准输入流 cin 从键盘获得输入,使用流的析取运算符 >> ,忽略空白。
std::cin >> num1 >> num2; // 连续的值之间必须有一些空白,以便区分
  • 到命令行的输出
    通过标准输出流 cout 使用插入运算符 << 把数据传递到输出流。

  • 格式化输出
    利用操作符处理输出对齐问题。操作符在标准库头文件iomanip 中定义,因此需要添加头文件。
    setw(n)}输出的值在 n 个空格宽的字段中遵循右对齐.setw(n) 只紧跟在它的插入运算符之后的单个输出值起作用。

  • 转义序列
    以反斜杠开头



    图 3 - 转义序列

2.5 C++中的计算

  • const修饰符
const double width = 21.5*2.0; 
 const double area = width*length; // 编译器必须清楚常量表达式中的所有变量
  • 修改变量
lhs op= rhs  // op : + - *  /  % <<  >>  & ^  

等价于

 lhs = lhs op (rhs) 
++ count;
--count;
count ++ ;
count -- ;
count +=  1;
count  -= 1;



图 4 - 运算符

2.6 类型转换和强制类型转换

  • 先类型转换再运算,转换过程中不会改变被转换变量本身的类型,临时存储,运算完成后释放。

  • 任何 char、signed char、unsigned char、short、unsigned short 在操作之前至少被转换成 int 类型。
    ▶赋值语句中的隐式类型转换会造成信息丢失。

  • 显示类型转换

static_cast<the type to convert to>(expression);}
  • 转换优先级
long double > double > float > unsigned long long > long long > unsigned long > long > unsigned int > int

2.7 Auto 关键字

  • auto关键字用作变量的类型,根据初始值判断变量的类型。初始值也可以是表达式
    ▶表达式中的变量必须在之前初始化
auto n = 16; // Type is int

const auto pi = 3.14159L; // Type is long double

2.8 查看类型

  • typeid操作符可以查看表达式的类型:
typeid(expression).name()
  • 需要头文件 #include < typeinfo >
cout << "Type of x*y is" << typeid(x*y).name() << endl; 

2.9 按位运算符

  • 按位运算符只处理整型变量或者整型常量,把操作数看成一系列单独的位。
  • 运算符有: & 与 ; | 或 ; ^ 异或 ; ~ 非 ; >> 右移 ; << 左移
  • 按位与操作可进行掩码操作,把变量中不必要的位设置为0,必要的位设置为1。
char first = 'A';   
char last  = 'Z';       
first ^= last;
last ^= first;
first ^= last; // 交换A和Z,适用于所有值
  • 移位运算要补0。只要位不丢失,向左移动 n 位,相当于原值乘以 2n; 向右移动 n 位,相当于原值除以 2n
  • 要注意移位运算符和输入/出流运算符的区分,加括号来区分
  • 要注意有符号整数的移位运算。有符号整数移位时,符号位将向右传递。
char number = -104; // Binary representation is 1001 1000
number >>=  2; // Result is 1110 0110

2.10 lvalue 和 rvalue

  • lvalue 指的是内存中持续存储数据的一个地址;rvalue是临时存储的表达式结果。所有产生lvalue的表达式都可以出现在赋值语句中等号的左边。表达式的结果不是lvalue就是rvalue。
int a = 0 , b = 0 , c =0;

a = b + c; //  b + c 的结果临时存储在一个内存位置中,赋值后则丢弃结果的内存位置。 b + c 的结果是 rvalue   

b = ++a;// ++a的结果是递增之后的 a ,a++是 lvalue

c = a++; // a++临时将 a 的值存储为表达式的结果,然后递增 a , ++a 是rvalue

2.11 了解存储时间和作用域

变量可以有三种不同的存储时间:自动存储时间;静态存储时间;动态存储时间。

  • 自动变量
    在一个代码块内声明的变量,具有局部作用域。自动变量占用的空间在一个称为栈的内存区域中自动分配。

  • 生存期是执行过程中的一个期间,从创建该变量开始,到销毁该变量并且释放其占用的内存时结束。

  • 变量的作用域是指可以在其中访问这个变量的程序代码区域。
    内部作用域可以访问在外部作用域开始处声明的变量,而且会修改外部作用域变量的值。

  • 全局变量
    在所有代码块和类之外声明的变量称为全局变量,具有全局作用域。表明在全局变量声明的位置之后,所有的函数都可以访问他们。在默认情况下,全局变量具有静态存储时间,从程序开始到程序结束时为止。全局变量的初始化在 main( ) 函数执行之前。
    ▶全局变量可被具有相同名称的局部变量隐藏,可用域解析运算符 :: 获得全局变量



    图 5 - 作用域

  • 静态变量
    在一个代码块作用域内声明一个变量,但是要要让它有静态存储时间,利用 static 可以实现该功能。实际上,即使静态变量是在一个代码块中声明,并且只能从这个代码块内部使用,但是在程序的生存期内,它将持续存在。它的作用域仍然是这个代码块,但具有静态存储时间。

static int count; // 如果声明静态变量时,没有提供初始值,则程序对它进行初始化。默认初始值为0。

▶如果没有初始化自动变量,则它包含的数据是最近使用它的所占用的内存的程序留下来的无用值

2.12 名称空间
利用 using 声明将一个名称从 std 名称空间导入源文件。

using std::cout; //这就允许在源文件中使用名称cout且它被解释为std::out。之后的代码使用此名称时无需限定符。
  • 名称空间提供了一种将在程序某一部分使用的名称与另一部分使用的名称分隔开的方法。例如:多人协作的项目,避免相同名称应用到不同的函数,造成的混淆。
using namespace std ; // using 指令 
  • 与 using 声明不同,其作用是把来自 std 的名称空间的所有名称导入源文件。这样就可以引用在该名称空间中定义的所有名称,而不必在程序中限定名称。实际上否定了使用名称空间的主要原因——即防止意外的名称冲突。

  • 声明名称空间
    定义自己的名称空间.利用关键字 namespace 可以声明一个名称空间

namespace myStuff
{

// Code that I  want to have in the namespace myStuff

}

▶不能在函数内声明名称空间
▶一定不能把 main( ) 函数的定义放在名称空间内。表明执行开始的函数 main( ) 必须始终在全局名称空间作用域内。
▶可以使用名称空间包括函数、全局变量和其他有名称的实体(例如程序中的类)。

  • 多个名称空间
    对于一个具有给定名称的名称空间,可以有多个声明,所有具有给定名称的名称空间块的内容都可以在同一个名称空间内。
namespace myStuff
{

}

namespace caculateStuff
{
//从该名称空间块内引用第一个名称空间快中的名称,必须限定他们。
} 

namespace myStuff
{
//第一个声明的继续,该名称空间块内引用第一个名称空间块中的名称,不必限定他们
}
Visual C++2010入门经典 中文版(选章) 函数是C++中实现特定功能的代码块,它们可以被声明和定义。函数的声明指定了函数的名称、返回类型和参数列表,而定义则提供了函数的具体实现。声明通常放在头文件中(.h 或 .hpp),定义则放在源文件中(.cpp)。// 函数声明// 函数定义在上述代码中,add函数被声明为接受两个整型参数并返回一个整型值。其定义给出了函数如何执行加法的具体实现。通常,函数声明用于告诉编译器函数的存在及如何调用它,而函数定义则实际编写了执行的代码。在C++中,类是构建面向对象程序设计的基本单位。 阅读详情

相关推荐

Visual C++ 2010入门与实践英文原版

安装Visual Studio 2010首先要求系统满足最低配置标准,然后执行安装程序并按照提示选择组件。重要的是要注意确保安装了Visual C++开发工具,这包括Visual C++编译器和调试器等关键组件。配置方面,需要设置好开发环境路径、工具链和调试参数,以适应开发者的个人习惯和项目需求。在C++中,类是创建对象的蓝图,而对象是类的实例。通过类,开发者可以封装数据和功能,从而实现复杂的数据结构和算法。对象的创建通常涉及内存的分配、构造函数的调用、成员函数的使用和析构函数的执行。

weixin_35871529的博客 407

Visual C++ 2010 Express和EasyX初学者入门

本文将介绍Visual C++ 2010 Express创建Win32控制台(Console)程序、创建WIN32项目(project)程序,及其EasyX的用途和使用。

cnds123的专栏 7123

《Visual C++ 2010入门经典(第5版) 》源码

《Visual C++ 2010入门经典(第5版) 》源码

Microsoft Visual C++2010安装教程并编写入门案例

目录 一、下载安装包 二、安装步骤 (1)下载安装包,解压文件 (2)以管理员身份运行setup.exe安装程序 (3)点击下一步 (4)选择同意协议,然后下一步 (5)选择软件安装目录,然后点击安装 (6)稍等几分钟,就可以安装完成 (7)软件安装成功,点击退出 三、打开软件,发送到桌面快捷方式 (1)按快捷键(win+s),搜索2010 (2)右键打开文件位置 (3)右键选择文件,发送到桌面快捷方式 (4)然后,桌面上就快捷方式 (5)打开软件,进入到软件主界面...

猿小白的博客 4万+

3D Slicer-最强大的开源医学图像分割工具简要概述

3D Slicer 是一个免费的开源软件平台,用于医学、生物医学和其他 3D 图像的可视化、处理、分割、配准和分析。读/写DICOM图像和多种其他格式;三维图像、多边形网格和体积渲染的交互式可视化;手动编辑和标记图像;使用刚性和非刚性算法融合和共同配准数据;图像自动分割;跟踪图像引导程序的设备。所有的功能模块可在工具栏里找到,提供搜索,下拉选择,左右切换等功能。3D slicer的大概情况就介绍到这里。它的功能非常强大,也没有必要说掌握每个功能的使用。

Tina姐的博客 2万+

OCC WebGL案例编译实战:从FreeType配置到静态库生成

本文详细记录了将OCC(Open CASCADE Technology)3D图形库编译为WebAssembly(Wasm)并在浏览器中通过WebGL渲染的实战过程。重点解决了FreeType库的交叉编译配置、OCC核心库的裁剪与静态库生成,以及WebGL样例项目的CMake改造等关键步骤,为开发者提供了从环境搭建到最终集成的完整指南。

weixin_28831461的博客 317

《Visual C++ 2010入门教程》系列二:安装、配置和首次使用VS2010

作者:董波 ...

Jno19880的博客 585

在Mac上搭建本地AI工作流:Dify与DeepSeek的完美结合

本文介绍了在Mac上搭建本地AI工作流的方法,结合Dify平台和DeepSeek模型。Dify是一个开源的大语言模型应用开发平台,支持可视化AI应用开发。部署步骤包括:1)安装Homebrew和Docker;2)克隆Dify代码库;3)配置环境变量并启动服务。同时,使用Ollama工具本地部署DeepSeek模型,将其集成到Dify中创建聊天助手。通过配置模型接口和新建应用,用户可以在本地环境中实现AI对话功能。这种方案既保证了数据隐私,又提供了灵活的AI应用开发能力。

Linda的自动化测试之旅 1536

【VC ++ 2010】 C语言 计算机二级编译器 Visual C ++ 2010 Express(中文学习版)的安装与使用

文章目录一、安装包地址二、安装VC++ 2010 一、安装包地址 链接:https://pan.baidu.com/s/1iclKvwh39gB41Y3svD48Pg 提取码:0w0g 二、安装VC++ 2010 右键解压到当前文件夹,双击setup.exe

将冲破艾迪i的博客 2万+

从MRF8P9040N数据手册到ADS仿真:手把手教你搞定LDMOS功放设计(附完整模型下载)

本文详细解析了MRF8P9040N LDMOS功率放大器的数据手册关键参数,并提供了在ADS中进行仿真的完整指南。从模型导入、直流工作点验证到负载牵引与阻抗匹配设计,逐步指导工程师完成高效功放设计。文章还包含调试技巧和常见问题解决方案,帮助优化射频功放性能。

weixin_27015733的博客 490

MICROSAR OS:第一个task是如何执行起来的?

MICROSAR OS是Vector公司开发的符合AUTOSAR OS规范的实时操作系统。本文介绍MICROSAR

humu7733的博客 2571

C程序设计语言——VC++2010安装教程

VC++2010版本的安装步骤详细过程,有需要的自取喔~

A_lIjInnUo的博客 4万+

5G LDPC编码实战:从校验矩阵到Matlab代码实现(附完整源码)

本文深入解析5G NR标准中的LDPC编码工程实现,聚焦于从3GPP协议中的QC-LDPC校验矩阵到高效Matlab代码的转换。文章详细阐述了基础矩阵(BG1/BG2)选择、提升因子确定以及利用双对角结构的快速编码算法,并提供了完整的、可优化的Matlab源码,旨在帮助通信算法工程师和开发者快速构建5G LDPC编码仿真原型,为硬件实现奠定基础。

table的专栏 377

MicrosoftVisualStudioC2010入门经典完全版.pdf下载介绍:快速掌握Visual Studio C++ 2010的必备教材

MicrosoftVisualStudioC2010入门经典完全版.pdf下载介绍:快速掌握Visual Studio C++ 2010的必备教材 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在编程学习的过程中,选择一本适合的入门教材至关重要。《Microsoft Visual Studio C++ 2010入门经典》完全版.pdf 是一款专为编程爱好者量身打造的经...

gitblog_06780的博客 1132

STM32 W5500 Freemodbus Modbus TCP协议功能实现

STM32F103VCT6 W5500(SPI1),实现Modbus-TCP协议的功能

坚韧与专注 2万+

(持续更新中!)详解【计算机类&面试真题】军队文职考试 ——第二期(真题+解析)| 网络协议的三个核心要素;交互式系统中的非剥夺策略;中断和陷入的区别;可变分区管理中的硬件机制;数据库系统的优点

本篇博客将讨论军队文职面试(计算机类)的几个关键问题。我们将介绍网络协议的核心要素(帮助你理解网络通信的基本原理)、交互式系统中的非剥夺策略(解释为何这是一个优秀的策略以及其对用户体验、系统稳定性和可预测性的影响)、中断和陷入的区别(从引起原因、处理机制、权限级别和应用等方面进行阐述)、可变分区管理的硬件机制以及数据库系统与文件系统的优点比较。通过阅读本文,您将深入了解这些话题,为面试准备和实际应用提供有价值的知识。

追光者♂:记录、分享、总结、提升,现象级专栏《Python从入门到人工智能》作者,无惧黑暗,坚信曙光 1707

探索编程新世界:《Visual C++ 2010入门经典.pdf带书签版》

探索编程新世界:《Visual C++ 2010入门经典.pdf带书签版》 去发现同类优质开源项目:https://gitcode.com/ 项目核心功能/场景 深入浅出学习Visual C++ 2010,轻松掌握编程基础与开发环境。 项目介绍 《Visual C++ 2010入门经典.pdf带书签版》是一部专为编程初学者打造的全面教程。本书由知名编程入门教程作家【美】Ivor Horton撰写,...

gitblog_06702的博客 973

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

《Microsoft Visual Studio C++ 2010入门经典》完全版.pdf下载介绍

《Microsoft Visual Studio C++ 2010入门经典》完全版.pdf下载介绍 去发现同类优质开源项目:https://gitcode.com/ 《Microsoft Visual Studio C++ 2010入门经典》是一份专为学习Visual Studio C++ 2010编写的经典教材。本资源文件包含了完整版的内容,旨在帮助开发者快速掌握Visual Studio C+...

gitblog_06762的博客 418

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Visual C++ 2010入门经典.pdf(带书签版)简介

Visual C++ 2010入门经典.pdf(带书签版)简介 去发现同类优质开源项目:https://gitcode.com/ 《Visual C++ 2010入门经典.pdf》带您走进Visual C++编程的世界,由享有盛誉的编程入门教程作家【美】Ivor Horton撰写。此书为英文原版,采用PDF格式,文件大小为47Mb,并配备了方便阅读的书签功能。 本书是面向编程初学者的全面教程,深入...

gitblog_06780的博客 335

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visual c++ 2010 入门经典 笔记

第1章使用Visual C++2010编程 1.1 .NET Framework 1.2 CLR CLI是一种标准规范,而CLR是微软对CLI的实现。 两种方式: 非托管C++或本地C++:本地执行的代码,MFC和API SDK。 托管的C++:运行在CLR中的C++代码。动态分配的内存自动释放,但性能损失。 对于新的应用程序,应该在一开始就决定使用托管的C++还是非托管的C++

sharing的专栏 953

《Visual C++ 2010入门经典》读书笔记

1.   P32   VS2010在Win32控制台中默认使用Unicode字符                不使用Unicode方法:Project -> Properties -> Configuartion -> General -> Project Defaults -> Character Set -> Not Set 2.   P39   _tmain由头文件tchar.h定

at99ak77的专栏 709

Visual Studio 2010 c++经典入门教程

系列教程地址:http://www.jizhuomi.com/software/129.html 要源文件和课件的请留言,留下口口邮箱

借你一秒 6612

《C++语言入门经典》一1.2 Visual Studio 2010 集成编译环境

1.2 Visual Studio 2010 集成编译环境 C++的开发环境有很多种,例如,常见的Visual C++ 6.0 等。Visual Studio 2010 是微软公司继Visual C++ 6.0 之后新设计的集成开发环境,它更加支持C++标准规范,对新标准——C++0x 提供全面的支持。下面就来介绍它的使用方法。 1.2.1 安装Visu...

weixin_34277853的博客 464

昨天终于把《VISUAL C++ 2010入门经典_第5版(中文版)》看完一遍了

昨天还是比较开心的,从去年底到现在,虽然中间因为一些事情耽误了,但总算是坚持读完一遍,并耐着性子把书上所有的本地C++例题代码都敲了一遍,也是第一次坚定了自己的信心,以前老觉得书上的例子不好执行,不是印刷错就是细节没写清楚,经典的书还是很不一样,点个赞!!!

ycxiujiang_20161127的博客 1523

《Visual c++2013入门经典(第7版)》上机练习:为 Win32 控制台应用程序创建项目

看到《那些年我们追过的Wrox精品红皮计算机图书》有奖活动下载了《Visual c++2013入门经典(第7版)》的试读PDF,开始学习。这本书的读者对象本书针对任何想要学习如何使用 Visual C++编写在 Microsoft Windows 操作系统下运行的 C++应用程序的读者。阅读本书不需要预先具备任何特定编程语言的知识。如果属于下列 3 种情形之一,你就适合学习本教程:● 属于编程新手

无知人生,记录点滴 1万+
QuantumCodes
博客等级 码龄9年 3粉丝 1原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值