【vb精品源码栏目提醒】:网学会员vb精品源码为您提供编写第一个应用程序 - 其它资料参考,解决您在编写第一个应用程序 - 其它资料学习中工作中的难题,参考学习。
ltltpage 20gtgt page begin 第三章 编写第一个应用程序 介绍了 C语言的这么多优点 您可能已经有些不耐烦了 好 那就让我们开始 C的开发之路吧 本章介绍如何生成您的第一个 C程序 这是一个最基本的 C应用程序 程序中的代码在全书中将经常出现 我一直坚信 只有不断练习才是最好的学习方式 所以建议读者从本章开始 对书中所提供的程序示例 亲自进行编辑 编译和运行 在这个过程中 您将获得开发C程序的有益经验 3.1 Welcome 程序 可以这么说 与用户没有任何交互的应用程序根本没有任何用处 病毒和黑客当然除外 然而即使是病毒程序的作者 也常常喜欢在自己得逞之后炫耀一番学习任何一门语言 绝大多数情况下人们都是从输入输出开始的 第一个程序总是非常简单的 我们让用户通过键盘输入自己的名字 然后程序在屏幕上打印一条欢迎信息 程序的代码是这样的 程 程序 序清 清单单 3-1 using System class Welcome static void Main Console.WriteLinequotPlease enter your name:quot Console.ReadLine Console.WriteLinequotWelcome to youquot 您可以在任意一种编辑
软件中完成上述代码的编写 然后把文件存盘 文件名叫做 Welcome.cs 典型的 C源文件通常都是以 .cs 作为文件的扩展名 3.2 代 码 分 析 首先要提出的是 C语言是大小写敏感的 这一点对于 C 和 C程序员没什么问ltltpage 21gtgt page begin题 只是要提醒一下
VB 和
Delphi 的程序员 接下来让我为您逐条地分析上面的 C程序语句3.2.1 名字空间 using System 表示导入名字空间 高级语言总是依赖于许多系统预定义的元素 如果您是 C 或 C的程序员 那么您一定对使用include 之类的语句来导入其它 C 或 C源文件再熟悉不过了 C中的含义与此类似 用于导入预定义的元素 这样在自己的程序中就可以自由地使用这些元素 如果没有导入名字空间的话 我们该怎么办呢 程序还能保持正确吗 答案是肯定的 那样的话 我们就必须把代码改写成下面的样子 程 程序 序清 清单 单 3-2 class Welcome static void Main System.Console.WriteLinequotPlease enter your name:quot System.Console.ReadLine System.Console.WriteLinequotWelcome to youquot 也 就 是 说 在 每 个 Console 前 加 上 一 个 前 缀 System.这个小原点 . 表示 Console是作为 System 的成员而存在的 C中抛弃了 C 和 C中繁杂且极易出错的操作符像 :和 -gt 等 C中的复合名字一律通过 . 来连接 System 是.Net 平台框架提供的最基本的名字空间之一 有关名字空间的详细使用方法我们将放在第十七章中详细介绍 在这里 只要我们学会怎样导入名字空间就足够了3.2.2 类和类的方法 让我们从写第一个程序时就记住 每个东西都必须属于一个类 如果您是 C 或 C的程序员 请暂时忘掉那些全局变量 在程序的第二行 class Welcome 声明了一个类 类的名字叫做 Welcome 这个程序为我们所作的事情就是依靠它来完成的 和 C C中一样 源代码块被包含在一对大括号 和 中 每一个右括号 总是和它前面离它最近的一个左括号 相配套 如果左括号 和右括号 没有全部配套 那程序就是一个错误的程序 static void Main表示类 Welcome 中的一个方法 方法总是为我们完成某件
工作的 注意 在 C程序中 程序的执行总是从 Main方法开始的 一个程序中不允许出ltltpage 22gtgt page begin现两个或两个以上的 Main方法 对于习惯了写 C 控制台程序的读者 请牢记 C中Main方法必须被包含在一个类中3.2.3 程序的输入和输出 程序所完成的输入输出功能都是通过 Console 来完成的 Console 究竟是什么呢它是在名字空间中 System 已经为我们定义好的一个类 这里我们不用管它是怎么完成工作的 只要使用它就可以了 上面的代码中 类 Console 为我们展现了两个最基本的方法 WriteLine 和 ReadLineConsole.ReadLine 表示接受输入设备输入 Console. WriteLine 则用于在输出设备上输出 我们再为读者介绍 Console 中用于输入输出的另两个方法 Read 和 Write 它们和ReadLine 与 WriteLine 的不同之处在于 ReadLine 和 WriteLine 执行时相当在显示时多加了一个回车键 而使用 Read 和 Write 时则光标不会自动转移到下一行 让我们再对例子
程序进行扩展 使得用户的输入对输出产生作用 程 程序序清 清单 单 3-3 using System class Welcome static void Main Console.WriteLinequotPlease enter your name:quot string name Console.ReadLine Console.WriteLinequotWelcome to you0quotname 我们用到了 string name Console.ReadLine这条语句 其中 string name 表示声明一个字符串类型的变量 name 系统定义的 Console 类提供的方法 ReadLine的返回值类型为 string 所以 这句话表示从输入设备读取一个字符串 并把读取的值赋予变量 name 再来看一下程序的最后一条输出语句 Console.WriteLinequotWelcome to you0quotname 这条语句表示在屏幕上对输出的字符串进行格式化 其中表示用方法的第二个参数来替代格式化后字符串相应的位置 对字符串进行格式化的参数可以是一个字符串也可以是一个字符 或者是一个整数 等等 采用这种方式最多可以格式化三个变量比如 int x 3 string name1 “Mike”ltltpage 23gtgt page begin string name2 “John” Console.WriteLinequotWelcome to you 0 times1 and2quotxname1name2 和绝大多数编程语言一样 C提供了字符串类型 string 它与 C 中的 MFC 为我们提供的类十分类似 C中的 string 类型是一个引用类型 引用类型在第四章中我们有详细说明 为标准字符集 利用 string 可以方便地对字符串进行连接 截断等操作比如 string s “Good” “Morning” char x s3 例子
演示了字符串 s 由两个字符串 Good 和 Morning 相加得到 字符串还可以通过下标进行索引 得到一个字符 上面的例子中字符 x 的值为 o 所以 源程序 3-4 和源程序 3-3 的作用没什么区别 程 程序 序清 清单 单 3-4 using System class Welcome static void Main Console.WriteLinequotPlease enter your name:quot string message “Welcome to you “ Console.ReadLine Console.WriteLinemesage 3.3 运 行 程 序 理解了源程序中每条代码的具体含义之后 下一步要做的就是让这个程序真正能够运行 不过对源代码即使还有不明白的地方也没有关系 在后续章节的
学习中 您最终会熟练掌握这些概念的 如果您的电脑上安装了 Visual Studio .Net 则可以在集成开发环境 IntegratedDeveloper Environment IDE 中直接选择快捷键或菜单命令 编译并执行源文件 如果您不具备这个条件 那么您至少需要安装 Microsoft .Net Framework SDK 这样才能够不妨碍您在本书中继续学习 C语言 实际上 .Net 平台内置了 C的编译器下面让我们使用这个微软提供的命令行编译器对我们的程序进行编译 启动一个命令行提示符 在屏幕上输入一行命令 csc welcome.csltltpage 24gtgt page begin 我们假设您已经将 welcome.cs 文件保存在当前目录下 如果一切正常 welcome.cs文件将被编译 运行 屏幕上出现一行字符 提示您输入姓名 Please enter your name: 输入任意个字符并按下回车键 屏幕将打印出欢迎信息 Welcome to you 注意 和到目前为止我们使用过的绝大多数编译器不同 在 C中 编译器只执行编译这个过程 而在 C 和 C中要经过编译和链接两个阶段 换而言之 C源文件并不被编译为目标文件 .obj 而是直接生成可执行文件 .exe 或动态链接库 .dllC编译器中不需要包含链接器 编译选项 我们可以灵活地使用 .Net 平台提供的命令行编译器的不同选项 选择不同的编译方式 从而灵活地对编译进行控制 例如 如果我们希望对源文件 Welcome.cs 进行编译 生成名为 MyWelcome.exe 的可执行文件 我们可以采用这样的命令 csc/out: MyWelcome.exe Welcome.cs 如果我们并不需要一个可执行文件 而仅仅是希望简单地检查源文件中是否存在语法错误 则命令可以写成 csc/nooutput: Welcome.cs 如果不知道各个选项的具体含义 可以通过求助来获得 csc/ 为方便读者 我们在表 3-1 中按字母排序的顺序列出了命令行编译器 csc
常用的参数及其用途 更详细的信息请参阅 C联机帮助
文档 表 3-1 命令行编译器选项 选项 作用 指定响应文件 / 列出编译命令选项 /addmodule 指定一个或多个模块作为装配的一部分 /baseaddress 指定载入动态链接库的首选地址 /bugreport 生成一个报告文件 其中包含程序 Bug 的详细信息 /checked 指定算术运算的溢出是否会导致程序在运行时抛出一个异常 /codepage 指定编译的所有源文件所使用的代码页 /debug 给出调试信息 /define 定义预处理程序的符号 /doc 由文件注释生成 XML 文件 /fulpaths 指定输出的绝对路径 /help 列出编译命令选项 /incremental 允许对源文件进行递增式编译 /linkresource 在装配时链接指定的 NET 资源ltltpage 25gtgt page begin /main 指定 Main 方法所处的位置 /nologo 编译过程中不显示编译信息 /nooutput 编译源文件但不输出 /nostdlib 不导入标准库 mscorlib.dl. 续表 选项 作用 /nowarn 编译过程中不生成警告信息 /optimize 指定编译时是否进行优化 /out 指定输出文件 /recurse
搜索子目录以寻找源文件 /reference 从包含装配的文件中导入元数据 /resource 把
NET 资源内嵌到输出文件 /target 指定输出文件的格式 /target:exe 输出文件为 exe 可执行文件 /target:library 输出文件为链接库 /target:module 输出文件为模块 /target:winexe 输出文件为 winexe 可执行文件 /unsafe 允许编译使用了不安全关键字的代码 /warn 设置警告级别 /warnaserror 把警告信息作为错误看待 /win32icon 把 .ico 图标文件插入到输出文件 /win32res 把 Win32 资源插入到输出文件 .4 添 加 注 释 应用程序并不是只要你自己一个人能看懂就够了 不管以前计算机老师或者是编程书籍是否已经告诫过 这里我还要再一次强调 养成良好的代码注释的习惯 这是一名优秀的程序员必备的条件之一 代码注释不会浪费您的编程时间 它只会提高您的编程效率 使您的程序更加清晰 完整 友好 注释的方式和 没有区别 每一行中双斜杠 后面的内容 以及在分割符 和 之间的内容都将被编译器忽略 这样 我们就可以采用 进行单行注释 采用分割符和进行多行注释 让我们对 Welcome 程序加上注释 程 程序序清 清单 单 3-5 源文件 welcome.cs / 说明 这里是我的第一个 程序ltltpage 26gtgt page begin using System class Welcome static void Main Console.WriteLinequotPlease enter your name:quot 要求用户输入姓名 Console.ReadLine 读取用户输入 Console.WriteLinequotWelcome to youquot 本行代码用于打印欢迎信息 您可以在这里添加自己的代码 程序在这里结束 上 面 的 注 释 似 乎 有 些 小 题 大 做 但 它 毕 竟 说 明 了中注释的使用方法 下面是对 程序进行注释时要注意的两个问题 首先 避免在 之后的单行注解中使用反斜杠符号 因为反斜杠符号 在 中是一个续行符 这样做往往会导致你所不希望的结果出现 例如 当你写了类似于下面的代码 Console.WriteLine“The result is:0” / 150 在编译这段代码时 表示逻辑上同一行剩余的所有文字被作为注释看待而续行符 则将这一行同下一行连接起来 那么第二行也被作为注释的一部分 这时编译器找不到与第一行的左括号 相匹配的右括号 因此编译出错 其次 分割符 和 之间的注释不能有嵌套注释 这是因为编译器从遇到第一个分割符 开始 将忽略下一个直到遇上下一个与之匹配的分割符 才认为注释结束 这样编译器就会对多余的
报告错误 认为没有 与之相匹配 一些程序员经常习惯于把程序中不需要或暂时不需要的代码片段首尾分别加上分割符 和 这时 如果这些代码片段本身又含有注释的话 我们所讨论的这种错误就会发生 这时 我们建议您换一种方式 把预处理语句 if endif 等贯穿在程序中使用 因为它们可以强制编译器忽略已包含注释的
源代码片段 从而通过这种方式来实现源代码的嵌套注释 以上提到的在注释中可能发生的两种
问题 如果编译器报告错误 那已经是很幸运的了 如果是原本错误的程序被误认为是正确的加以编译 或者程序代码的原意因ltltpage 27gtgt page begin此被曲解 造成的错误往往很难发现 那时造成的后果将会严重得多 3.5 小 结 在本章中我们写了第一个 C程序 Welcome 通过对该程序的分析和理解 我们学习到了 如何在应用程序中与用户进行交互 如何通过 System 预定义的类 Console 提供的方法来进行输入输出和对字符串进行格式化 如何编译 C源文件 如何向代码中添加注释复习题 1 C程序通常都是如何开始执行的 2 Console 类为我们提供了那些输入输出的手段 3 说明如何使用编译器生成不同类型的输出文件 4 对源代码进行注释是必须的吗 为什么 5 说说在 C代码中添加注释要注意那些问题ltltpage 28gtgt page begin 第二部分 C程序
设计基础 第四章 数 据 类 型 应用程序总是需要处理数据 而现实世界中的数据类型多种多样 我们必须让计算机了解需要处理什么样的数据 以及采用哪种方式进行处理 按什么格式保存数据等等 比如 在编码程序中需要处理单个字符 在定购票系统需要打印货币金额 在科学运算中不同情况下我们需要不同精度的小数 这些都是不同的数据类型 其实 任何一个完整的程序都可以看成是一些数据和作用于这些数据上的操作的说明 每一种高级语言都为开发人员提供一组数据类型 不同的语言提供的数据类型不尽相同 在本书第一部分 我们为读者简要地介绍了 C语言的主要特点和运行环境 并且创建了第一个简单的 C应用程序 本章将会给你介绍 C的数据类型
系统 在这一章中 你将系统地学习 C语言为我们提供的数据类型 以及使用这些数据类型时的要点 对于程序中的每一个用于保存信息的量 使用时我们都必须声明它的数据类型以便编译器为它分配内存空间 C的数据类型可以分为两大部分 值类型和引用类型 如果你是一名编程新手 本章将是你继续学习 C的基础 应该牢牢掌握本章提到的各种数据类型 而对于有一定 C 和 C经验的读者来说 对本章的内容不会感到困难 但在阅读本章和紧接着的几章里 要把注意力集中到文章中 C独有的特点 尤其是与 C 和 C的区别 这才是关键所在 4.1 值 类 型 在具体讲解各种类型之前 我们先提一下变量的概念 在下一章我们将对变量作进一步的讨论 从用户角度来看 变量就是存储信息的基本单元 从系统角度来看变量就是计算机内存中的一个存储空间 下面我们开始介绍值类型 C的值类型可以分为以下几种 简单类型 Simple types 结构类型 Struct types 枚举类型 Enumeration types 简单类型 有时人们也称为纯量类型 是直接由一系列元素构成的数据类型 C 语ltltpage 29gtgt page begin言中为我们提供了一组已经定义的简单类型 从
计算机的表示角度来看 这些简单类型可以分为整数类型 布尔类型 字符类型和实数类型4.1.1 整数类型 顾名思义 整数类型的变量的值为整数 数学上的整数可以从负无穷大到正无穷大 但是由于计算机的存储单元是有限的 所以计算机语言提供的整数类型的值总是在 一 定 的 范 围 之 内 C 中 有 九 种 整 数 类 型 短 字 节 型 sbyte字节型 byte 短整型 short 无符号短整型 ushort 整型 int 无符号整型uint 长整型 long无符号长整型 ulong 划分的依据是根据该类型的变量在内存中所占的位数 位数的概念是按照 2 的指数幂来定义的 比如说 8 位整数 则它可以表示 2 的 8 次方个数值即 256 这和我们在 Windows 系统中显示属性是一样的 比如 16 位真彩色 表示一共可以显示 2 的 16 次方即 65536 种颜色 这些整数类型在数学上的表示以及在计算机中的取值范围如表 4-1 中所示 表 4-1 整数类型.