SlideShare a Scribd company logo
1 of 22
Download to read offline
第 1 讲 开始编写程序




                  第 1 讲 开始编写程序
  在本讲中,我们从一个经典的 HelloWorld 程序入手,解释编写程序的一些基本的概念。在本讲
的学习中,我们会涉及如下一些方面的内容:
        如何在 visual studio 中创建解决方案和项目。
        如何用窗体设计器制作简单的对话框界面。
        使用窗体控件的属性和方法完成简单的程序功能。
        了解程序设计中的对象及其成员的基本概念。
        了解 C#语言的基本语法,学会书写注释语句、赋值语句、方法调用语句等。


§1.1         示例程序:Hello, World!

§1.1.1 程序功能
  程序运行时,显示一个对话框。在对话框中输入一个名字,然后点击按钮,将显示一行“你好,
<名字>!”字符。界面如下。




§1.1.2 设计界面
  按下列操作步骤完成程序界面的设计。

  1) 创建解决方案。
  一般来说,我们开始着手编写某个应用系统的时候,总是先建立好一个解决方案。解决方案可
以简单的理解成为我们所设计和编写的所有应用系统中的组件(项目)的一个管理容器。在我们的
学习中每一讲中的所有源代码都将放到一个解决方案中。
  建立解决方案时,对应的会在硬盘上创建一个文件夹。我们推荐的最佳实践是让该解决方案中
的所有项目都分别对应解决方案目录下的一个子目录。




 -   1   -
第 1 讲 开始编写程序




2) 新建一个 windows 窗体应用程序项目。
在解决方案的上下文菜单中选择“添加(D)/新建项目(N)。
                            ”




在弹出的“添加新项目”对话框中依次选择项目类型、输入项目名称和位置,然后点击确定。




-   2   -
第 1 讲 开始编写程序




  3) 使用工具箱中的控件设计对话框界面。
  新建项目后,在 visual studio 中显示工作环境称为可视化窗体设计器。主要的操作和设计软
件非常类似。左边是工具箱,中间的设计面板,右上角是资源导航,右下角是属性框。在该示例程
序中。设计窗体的基本操作的细节详见视频演示。布置好的结果如下:




  对象化编程的基本思想就是把各种控件和组件等都当作是对象,对象就像是自然界中的实体事
物一样,具有描述该事物的数据特性。窗体和窗体上的控件都是对象,如果在改变这些对象的属性,
可以在属性框随意的设置,具体的操作请见教学视频。
  窗体组件的设置如下:
        窗体名称为 MainForm,Text 属性为“你好,C#”
                                      。


 -   3   -
第 1 讲 开始编写程序


               文本框名称为 nameText,Text 属性为空。
               问好信息标签名称为 helloMessage,Text 属性为“你好,。
                                                   ”
               两个按钮的名称分别为 helloButton 和 closeButton,Text 属性分别为“问候” “关闭”
                                                                   和    。

    4) 点击运行按钮,查看运行时的对话框显示。
    此时能正常显示界面,但是并没有我们所期望的功能。


§1.1.3 书写代码
    1) 在窗体设计器中双击“问候”按钮,进入代码编辑器。
            private void helloButton_Click(object sender, EventArgs e)

            {

                 | <-光标停留在此

            }

    光标停留在一对花括号之间,这对花括号之前的代码行表示这是一个事件处理程序(或称事件
处理方法),事件是指窗体上发生的某件事情。这里的事件是指用户在按钮上点击鼠标,我们就说按
钮发生了 Click 事件。在这对花括号之间可以写入一些语句,那么当发生了相应的事件时,就会执
行这些语句。当然相应的事件不发生时,这些语句是不会被执行的。
    在“问候”按钮的 Click 事件处理代码中输入下述语句:
                 this.helloMessage.Text = "你好," + nameText.Text;

    前面已经提到,窗体和窗体上的控件都被当作是对象,而对象的属性可以在属性框中来设置。
如果要在程序运行的时候改变对象的属性,就需要程序语言来来完成了。在 C#语言中使用“对象名.
属性名”的语法就可以简单的引用对象的成员。可以把中间的点读作汉字的“的”
                                   。
    其中,等于号的意思是赋值,在这里,等于号左边表示的是标签的 Text 属性,等于号右边表示
的是一个字符串,该字符串由文本“你好,”和文本框中的文本连接而成,中间的加号表示把两个文
本字符串连在一起。等号的意思就是把右边的字符串值放到(即赋值给)左边的属性中。
    上述语句称之为赋值语句,在 C#中还有其他各种类型的语句,在今后会逐步接触到。不论什么
语句都必须以分号结束。

    2) 同样在“关闭”按钮的 Click 事件处理代码中输入下述语句:
                 this.Close();

    前面我们使用了对象的属性,其实和自然界中的事物一样,对象除了描述自身的数据为,对象
还具备行为的特性,比如人这样的对象会拥有走路、说话、唱歌跳舞这样的行为。对象的数据和行
为统称为对象的成员,而数据常称为对象的属性,行为常称为对象的方法。使用“对象名.属性名”
和“对象名.方法名 ”
         () 的语法就可以简单的使用对象的成员了。可以把中间的点读作汉字的“的”
                                            。
    在上述句子中,this 表示的代码所属的对象,这里表示窗体本身。Close()是窗体具备的一个
关闭自己的行为。执行该语句的结果就是关闭窗体。
    最后的窗体代码如下:
namespace HelloWorld



    -   4   -
第 1 讲 开始编写程序


{

    public partial class MainForm : Form

    {

            public MainForm()

            {

                InitializeComponent();

            }



            private void helloButton_Click(object sender, EventArgs e)

            {

                this.helloMessage.Text = "你好," + nameText.Text;

            }



            private void closeButton_Click(object sender, EventArgs e)

            {

                this.Close();

            }

    }

}

     3) 运行程序。
    在文本框中输入名字,然后点击问候,就能看到问候信息的显示。点击关闭则退出程序的运行。


§1.2             进一步阅读项目代码
    通俗的理解是,软件开发就是使用某种编程语句书写指挥计算机运行的命令文件,这些文件成
为源程序文件(也称作源代码文件),源程序文件是文本文件,一般来说,都可以使用记事本打开查
看。
    编写程序的工作就是一行一行的编写代码,现在虽然有不少编程工具也可以帮我们自动生成一
些通用功能的源程序,但是真正有价值的、实际能完成我们所需要功能的代码都必须由人来完成。
    为了对程序代码有一个初步的了解,我们观察一下在上面的开发中 visual studio 开发环境为
我们生成的代码。


§1.2.1 项目中的文件夹

      obj 和 bin 文件夹

    我们书写的程序源代码无法直接运行,这些代码必须翻译成机器可以处理(即,操作系统或运
行环境可以加载运行)的执行文件,才能执行。完成这个过程的工具称为编译器。我们在 Visual
Studio 集成环境中执行生成时会自动调用编译器来编译我们的程序。

    -   5   -
第 1 讲 开始编写程序


    编译器生成的文件存放在 obj 和 bin 两个文件夹中,这些文件夹中的文件就是在编译过程中生
成的二进制文件,我们书写的源程序只有生成为二进制指令文件才能执行。简单的理解是 obj 中包
含了编译过程中生成的临时文件。而在 bin 中包含的是最终可用来执行的程序。我们可以在
bin/debug 下看到 HelloWorld.exe 文件,双击该文件就可以执行。
    我们注意到每个文件夹下又都包含一个 debug 的文件夹。这是由于在刚才的操作中我们使用的
是默认的 debug 配置,我们可以对同一个项目设计多种配置,典型的,对于最终的发布版本我们会
使用 release 配置,在生成程序时不同的配置分别存放到 obj 和 bin 的不同的目录下。


     Properties 文件夹

    在该文件夹下包含三个方面的内容:
               AssemblyInfo:程序集的信息。
               Resource:程序的资源。
               Settings:程序的设置信息。
    这部分技术在后续的中级课程中再做进一步的讲解。


§1.2.2 Program.cs 文件
    我们可以在项目文件夹下看到一个名为 Program.cs 的文件,其内容如下:
using System;

using System.Collections.Generic;

using System.Linq;

using System.Windows.Forms;



namespace HelloWorld

{

    static class Program

    {

            /// <summary>

            /// 应用程序的主入口点。

            /// </summary>

            [STAThread]

            static void Main()

            {

                 Application.EnableVisualStyles();

                 Application.SetCompatibleTextRenderingDefault(false);

                 Application.Run(new MainForm());

            }

    }


    -   6   -
第 1 讲 开始编写程序


}

    下面我们就解释在 Program.cs 中包含了一些基本的语句和基本概念:


     命名空间

    命名空间是一个区别名称的手段。比如“电视机”是一个名称,为了区别 A 厂生产的电视机和
B 厂生产的电视机,我们可以用“A 厂的电视机”和“B 厂的电视机”这样的术语来表达,在 C#的语
法中用句点来表示“的”的所属关系,所以写成“A 厂.电视机”和“B 厂.电视机”
                                       。
    这样的表达虽然很清楚具体,但是显得很麻烦。减少麻烦的方式就是使用 using 语句和
namespace 语句。

    1) using 语句:这个语句不是必须的,但是有了这个语句可以简化代码的书写。
    如果在程序的开头使用了一句“using A 厂;”,那么在后面的语句中只要说到电视机即使没有
明确指明是 A 厂的,也被视作是“A 厂.电视机”。
    在 Program 中使用了 using System.Windows.Forms;因此下述语句:
                Application.EnableVisualStyles();

    等同于:
                System.Windows.Forms.Application.EnableVisualStyles();

    2) namespace{}语句:该语句用来定义一个命名空间的范围。
    在 namespace 后面的花括号内声明的名字,都属于该命名空间。比如在上面的代码中声明了
Program 类名称,就相当于是“HelloWorld.Program”
                                    。

    3) static class <name> {}语句
    该语句用来定义一个类。关于类的概念我们将在后面进一步讲解。我们只需要知道 C#中的所有
语句都是组织在称作类的代码块中。每个类都需要有一个自己的名字,为了区别具有同样名字的类,
可以把类放到不同的命名空间之中,比如在该例子中 Program 类就放在了 HelloWorld 命名空间中。

    4) Main 方法
    类里面可以定义数据(又称为属性)和行为(又称为方法) 在这个例子中 Main 就是一个行为,
                              。
Main 是一个特殊的方法,称为程序入口点。当程序运行时,会自动执行该方法。在 Windows 下运行
的任何一个程序都需要有一个入口点。在 C#中入口点就是 Main 方法。
    请注意:这里定义类和方法都使用了 static 关键字。先记住这样的用法,在后面进一步学习类
和对象时将详细讲解相关的技术点。

    5) 注释语句:
    如果要在程序源代码中书写不被编译器处理的语句,可以使用注释语法。注释可以方便我们在
程序中书写一些供阅读者理解代码的说明文字。
    在 C#中可以使用三种注释语法,分别称为单行注释、多行注释和文档注释。如下所示:
    单行注释:使用语法,从//开始到行的结尾的所有字符均被忽略。
    多行注释:使用 /* ... */语法,所有在/*开始到*/结束的所有字符(可以跨越多行),全部被
编译器忽略。

    -   7   -
第 1 讲 开始编写程序


  文档注释:使用“///”用来书写,和“//”一样,文档注释也是一种单行注释,所不同的是我
们可以在其中书写标记,这些注释经过编程工具的处理后可以形成程序的说明文档。我们将在后续
的中级课程中进一步讲解。

     6) 调用方法的表达式语句:
  使用“类(对象).方法();”的语法就可以执行类或对象所提供的一个行为。
              Application.Run(new MainForm());

  在这个语句中调用了 System.Windows.Forms.Application 类的 Run 方法,该方法的作用是运行
一个应用程序,括号里面的“new MainForm()”表示运行程序时显示 MainForm 窗体。MainForm 窗
体就是我们在设计器中设计的窗体。


§1.2.3 MainForm 窗体文件
  Windows 窗体应用程序中的每一个窗体都由三个文件组成, MainForm 为例包括了如下三个文
                                以
件:
         MainForm.cs:在代码视图中编写的代码。
         MainForm.Designer.cs:通过设计器制作的界面外观所对应的程序。这些程序是设计自动
          生成的。可以打开查看,但是一定不要手工改动。
         MainForm.resx:界面所需要到的资源。资源是指程序运行是要显示的文本字符、图标和图
          片等等信息。


§1.3           安装 Visual Studio 集成开发环境
  安装 Visual Studio 2008 的过程非常简单。只需按提示点击下一步直到结束就可以了。详细
信息请看教学视频。需要注意的事项如下:
         对于开发用的机器,建议不要使用克隆安装的操作系统,也不要使用经过破解的免序列号
          等经过改动的操作系统,最好使用原版安装的操作系统,安装完成后输入序列号,在进一
          步手工安装最新的补丁包。
         建议使用 Windows7 操作系统或者 Windows2008。如果使用 windows xp 则由于没有 iis7 的
          支持,部分和 Web 相关的功能不被支持。如果仅学习简单的开发,使用 xp 也是可以的。
         建议安装 Visual Studio 的 2008 或者 2010 版本,不安装 2005 及以下版本。因为现在普遍
          需要 mvc、ajax 和 silverlight 等技术只有在 2008 以上版本才有了更好的支持。
         是否安装 visual studio 2008 的 sp1 补丁,根据自己需要而定,如果不需要 entity
          framework、linq 等等技术,可以不安装。
         建议在安装 visual studio 之前先安装 sql server 版本,如果先安装 visual studio 可能
          为后来安装 sqlserver 带来麻烦。因为 visual studio 中自带了 express 版本为后来的安
          装带来一些兼容性方面的 bug,虽然有解决手段(单独卸载 express 后重新装)
                                                   ,但是很麻
          烦。




  -   8   -
第 1 讲 开始编写程序



§1.4         Visual Studio 集成环境
  如图,在 msdn 中对 Visual Studio 集成环境有详细的介绍文档。包括了如下内容:
        管理解决方案和文件
        编辑代码和资源文件
        生成调试和测试
        部署应用程序和组件
        自定义开发环境并实现自动化
        用于 Visual Studio 的源代码管理
        参考信息。
  对集成环境的使用一方面需要在长期的编程中逐步熟悉,另一方面认真阅读这些文档信息才能
让我们有效发挥集成环境的价值。上面的示例的用法就是一种推荐的最佳实践。
  目前先重点了解管理解决方案中的项目和文件。下面是相关文档的摘要。
  Visual Studio 提供了两类容器,帮助您有效地管理开发工作所需的项,如引用、数据连接、
文件夹和文件。这两类容器分别叫做解决方案和项目。此外,Visual Studio 还提供解决方案文件
夹,用于将相关的项目组织成项目组,然后对这些项目组执行操作。作为查看和管理这些容器及其
关联项的界面,
      “解决方案资源管理器”是集成开发环境 (IDE) 的一部分。


   解决方案和项目

  解决方案和项目包含一些项,这些项表
示创建应用程序所需的引用、数据连接、文
件夹和文件。一个解决方案可包含多个项目,
而一个项目通常包含多个项。这些容器允许
您采用以下方式使用 IDE:
        作为一个整体管理解决方案的设置
         或管理各个项目的设置。
        在集中精力处理组成开发工作的项
         的同时,使用“解决方案资源管理
         器”处理文件管理细节。
        添加对解决方案中的多个项目有用
         或对该解决方案有用的项,而不必
         在每个项目中引用该项。
        处理与解决方案或项目独立的杂项
         文件。
        项:文件、引用、数据连接
  项可以是文件和项目的其他部分,如引用、数据连接或文件夹。在“解决方案资源管理器”中,
项可以按下列方式组织:


 -   9   -
第 1 讲 开始编写程序


         作为项目项(项目项是构成项目的项),如“解决方案资源管理器”中项目内的窗体、源文
          件和类。组织和显示方式取决于所选的项目模板以及所做的所有修改。
         作为文件的解决方案项,适用于整个解决方案,位于“解决方案资源管理器”的“解决方
          案项”文件夹中。
         作为文件的杂项文件,它们与项目或解决方案都不关联,可显示在“杂项文件”文件夹中。




§1.5          示例程序:显示图像
  在这个程序中,我们用刚学习到的一些基本概念,如设计界面、设置对象的属性、调用对象的
方法,编写一个显示图像的程序。在这个程序中,我们将进一步了解设计界面中的一些布局技巧,
同时初步使用图片框、跟踪条、公共对话框等界面组件。


§1.5.1 程序功能
  界面如图所示,点击“按钮”将显示 Windows 中的打开文件对话框,选择一个图片文件后即可
显示出相应的图像,拖动窗口的边框,可以控制图片的显示大小,拖动跟踪条则可以控制显示的透
明度。
  说明:透明度的控制受操作系统和显卡驱动的支持,操作系统需要 Windows XP SP2 以上。




 -   10   -
第 1 讲 开始编写程序



§1.5.2 设计界面
  1) 在解决方案中添加新的项目
  在解决方案中增加一个项目在 VisualStudio 中的操作是,在解决方案的右键菜单上选择新建项
目。如下所示:




  2) 在窗体中如图放置好控件。各个控件的设置如下:
控件            名称            属性
主窗体           MainForm      Text:查看图片
图片框           pictureBox1   BorderStyle:Fixed3D,SizeMode:StretchImage
跟踪条           trackBar1     Maximum:10,Minimum:0,Value:10
打开按钮          openButton    Text:打开
关闭按钮          closeButton   Text:关闭

  3) 拖动 OpenFileDialog 控件到设计中的窗体上。
  由于该组件不直接显示在窗体上,因而显示在设计器的下方,名称为 openFileDialog1。




 -   11   -
第 1 讲 开始编写程序




   4) 在窗口尺寸变化时动态调整控件的位置和大小。
   窗体控件具有一个称为锚定(Anchor)的属性,如下图所示:把 pictureBox1 的 Anchor 属性指
定为“Top,Bottom,Left,Right”后,就表示当窗口的大小发生变化时,图片框自动调整自己的大小
和位置,从而保持图片框上下边缘和左右边缘到窗体对应的上下边缘和左右边缘之间的距离不变,
其结果就是图片框自动根据窗体大小来调节自身的大小。




   同样的方式把打开和关闭两个按钮的 Anchor 属性设为:“Left,Right”。把跟踪条的 Anchor 属
性设为“Bottom,Left,Right”。




  -   12   -
第 1 讲 开始编写程序



§1.5.3 书写代码
  1) 编写打开图像的代码。
  在设计器中双击打开按钮,在代码视图中输入代码。
  private void OpenButton_Click(object sender, EventArgs e)

  {

       openFileDialog1.ShowDialog();需要键入的代码行

       pictureBox1.Image = Image.FromFile(openFileDialog1.FileName); 需要键入的代码行

  }

  openFileDialog 控件具有 ShowDialog()方法显示操作系统的打开对话框,用户选择的文件存放
在它的 FileName 属性中。
  pictureBox 控件具有 Image 属性,该属性里存放一个图像对象。
  Image 类型的 FromFile 方法的作用是把一个图像文件加载到内存中成为一个图像对象。

   2) 编写关闭窗体的代码。
  在设计器中双击关闭按钮,在代码视图中输入代码。
  private void CloseButton_Click(object sender, EventArgs e)

  {

       this.Close();需要键入的代码行

  }

  窗体的 Close()方法用来关闭窗体。

   3) 编写透明度控制的代码。
  在跟踪条的事件列表中,双击 ValueChanged 事件,就可以自动生成事件处理函数。ValueChanged
事件在跟踪条的值改变时触发。




  private void trackBar1_ValueChanged(object sender, EventArgs e)

  {


  -   13   -
第 1 讲 开始编写程序


      this.Opacity = trackBar1.Value / 10.0 ; 需要键入的代码行

 }

  this.Opacity 是窗口对象的一个属性,表示不透明的程度,它的值是 0 到 1 之间的一个数,0
表示窗体完全透明,而 1 表示完全不透明。
  trackBar1.Value 是 trackBar 的一个属性,表示跟踪条的当前值。
  注意在该代码中,使用了 10.0 而不是 10,因为在 C#中两个整数相除会得到商的整数值,而不
是一个包含小数点的实数,把除数改为一个实数后就能得到包含小数的结果了。
  当我们点击执行按钮时,依旧执行的是前面一个项目。这是由于我们的解决方案中已经有了两
个项目,而第一个项目已经被默认为启动项目。使用项目的右键菜单,可以改变解决方案中的启动
项目。操作如下:




§1.6          计算机语言简介

§1.6.1 回顾计算机的基本组成
  在《计算机软件基础》课程中我们我们知道计算有硬件和软件组成,软件的实质是控制计算机
运行的指令的序列。计算机的系统组成结构图如下:
                                      计算机

                               辅助存储(硬盘,光盘等)

                                程序            数据
              输入                                          输出


                                  中央处理器和内存



  数据在计算机的内部是用二进制表示的,包括程序和数据都以 0 和 1 的序列来表示。把数据输
入计算机的过程也就是把数据转换成计算机可以识别的和保存的二进制信息流,然后在计算机内部
进行处理,处理的方式是处理器执行程序中指令,在内存中对数据进行各种各样的运算,保存在硬
盘等辅助存储上的程序和数据可以被读入到内存使用,这个过程就称为加载,同样数据处理完成后

 -   14   -
第 1 讲 开始编写程序


可以保存到硬盘上,通过输出设备可以显示和打印数据处理的结果。


§1.6.2 机器语言
  机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机
的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等
特点。
  用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的含义。手编程序
时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用
的工作单元处在何种状态。这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几
十倍或几百倍。而且,编出的程序全是些 0 和 1 的指令代码,直观性差,还容易出错。现在,除了计算
机生产厂家的专业人员外,绝大多数程序员已经不再去学习机器语言了。


§1.6.3 汇编语言
  为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的英文
缩写词、字母和数字等符号来取代指令代码(如用 ADD 表示运算符号“+”的机器代码),于是就产生了
汇编语言。所以说,汇编语言是一种用助记符表示的仍然面向机器的计算机语言。汇编语言亦称符号
语言。汇编语言由于是采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一
定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一
一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质
量较高的程序。
  汇编语言中由于使用了助记符号,用汇编语言编制的程序送入计算机,计算机不能象用机器语言
编写的程序一样直接识别和执行,必须通过预先放入计算机的“汇编程序“的加工和翻译,才能变成能
够被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称源程序,
运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定
位置上,就能被计算机的 CPU 处理和执行。
  汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是
比较繁琐费时,通用性也差。汇编语言是低级语言。但是,汇编语言用来编制系统软件和过程控制软
件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。


§1.6.4 高级语言
  不论是机器语言还是汇编语言都是面向硬件的具体操作的,语言对机器的过分依赖,要求使用
者必须对硬件结构及其工作原理都十分熟悉,这对非计算机专业人员是难以做到的,对于计算机的推
广应用是不利的。计算机事业的发展,促使人们去寻求一些与人类自然语言相接近且能为计算机所接
受的语意确定、规则明确、自然直观和通用易学的计算机语言。这种与自然语言相近并为计算机所
接受和执行的计算机语言称高级语言。高级语言是面向用户的语言。无论何种机型的计算机,只要配
备上相应的高级语言的编译或解释程序,则用该高级语言编写的程序就可以通用。
  计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过“翻译


  -   15   -
第 1 讲 开始编写程序


程序”翻译成机器语言形式的目标程序,计算机才能识别和执行。这种“翻译”通常有两种方式,即编译
方式和解释方式。
   编译方式是:事先编好一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用
户由高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与
之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。
   解释方式是:源程序进入计算机时,解释程序边扫描边解释作逐句输入逐句翻译,计算机一句句
执行,并不产生目标程序。
   每一种高级(程序设计)语言,都有自己人为规定的专用符号、英文单词、语法规则和语句结构(书
写格式)。高级语言与自然语言(英语)更接近,而与硬件功能相分离(彻底脱离了具体的指令系统),
便于广大用户掌握和使用。高级语言的通用性强,兼容性好,便于移植。


§1.6.5 常见语言介绍
   高级语言有 BASIC、PASCAL、C、C++、COBOL、FORTRAN、LOG 等。目前,程序设计语言及编程环
境正向面向对象语言及可视化编程环境方向发展,出现了许多新的语言及其开发工具,如:Sun 公司
的 Java,微软公司的 C#等,这些语言的主要特点是面向对象,支持组件化开发。

   1) BASIC 语言
   BASIC 语言全称是 Beginner’s all Purpose Symbolic Instruction Code,意为“初学者通用符
号指令代码“。
      1964 年由美国达尔摩斯学院的基米尼和科茨完成设计并提出了 BASIC 语言的第一个版
本,经过不断丰富和发展,现已成为一种功能全面的中小型计算机语言。BASIC 易学、易懂、易记、
易用,是初学者的入门语言,也可以作为学习其他高级语言的基础。BASIC 有解释方式和编译方式两
种翻译程序。

   2) PASCAL 语言
   PASCAL 是一种结构程序设计语言,由瑞士苏黎世联邦工业大学的沃斯(N.Wirth)教授研制,于
1971 年正式发表。是从 ALGOL60 衍生的,但功能更强且容易使用。目前,作为一个能高效率实现的实
用 语 言 和 一 个 极 好 的 教 学 工 具 ,PASCAL 语 言 在 高 校 计 算 机 软 件 教 学 中 一 直 处 于 主 导 地 位 。
Pascal(B.Pascal)是十七世纪法国著名数学家,他于 1642 年曾发明现代台式计算机的雏型机—加减
法计算机。
   PASCAL 具有大量的控制结构,充分反映了结构化程序设计的思想和要求,直观易懂,使用灵活,既
可用于科学计算,又能用来编写系统软件,应用范围日益广泛。

   3) 通用编程语言 C
   C 语言是美国 AT&T(电报与电话)公司为了实现 UNIX 系统的设计思想而发展起来的语言工具。C
语言的主要特色是兼顾了高级语言和汇编语言的特点,简洁、丰富、可移植。相当于其他高级语言子
程序的函数是 C 语言的补充,每一个函数解决一个大问题中的小任务,函数使程序模块化。C 语言提
供了结构式编程所需要的各种现代化的控制结构。
   C 语言是一种通用编程语言,正被越来越多的计算机用户所推崇。使用C语言编写程序,既感觉
到使用高级语言的自然,也体会到利用计算机硬件指令的直接,而程序员却无需卷入汇编语言的繁琐。


   -   16   -
第 1 讲 开始编写程序


   4) COBOL 语言
   COBOL 的全称是 Common Business Oriented Language,意即:通用商业语言。
   在企业管理中,数值计算并不复杂,但数据处理信息量却很大。为专门解决经企管理问题,于 1959
年,由美国的一些计算机用户组织设计了专用于商务处理的计算机语言 COBOL,并于 1961 年美国数据
系统语言协会公布。经不断修改、丰富完善和标准化,已发展为多种版本。
   COBOL 语言使用了 300 多个英语保留字,大量采用普通英语词汇和句型,COBOL 程序通俗易懂,素
有“英语语言”之称。
   COBOL 语言语法规则严格。用 COBOL 语言编写的任一源程序,都要依次按标识部、环境部、数据
部和过程部四部分书写,COBOL 程序结构的“部”内包含“节”,“节”内包含“段”,段内包含语句,语句由字
或字符串组成,整个源程序象一棵由根到干,由干到枝,由枝到叶的树,习惯上称之为树型结构。
   目前 COBOL 语言主要应用于情报检索、商业数据处理等管理领域。

   5) Java
   Java 是 Sun 公司发明的一种计算机语言,它的跨平台、面向对象、多线程、安全、强健等特性
已广为人知。它还从一开始就采用开放策略,鼓励技术人员直接参与 Java 技术规范的提出与制定,
并提供大量免费的软件实现、文档资料及应用实例,供技术人员学习。随着 Java 应用的不断发展,
Sun 公司推出了一系列 Java 平台应用规范,包括核心平台 J2SE、企业平台 J2EE 及嵌入式平台 J2ME
规范。J2EE 企业规范又涵盖了 JDBC、Connector、JSP、Servlet、EJB 等应用规范及 JNDI、JMS、JTS
等服务规范。这些规范已经被广为接受,并成为开发各种 Java 应用的标准。
   从技术角度说,Java 包括两个方面的含义,一是作为一种高级语言,提供了如数据声明、运算
表达式和流程控制语句等等语言的功能。二是作为一种平台,在运行时由虚拟机解释执行 Java 经编
译后形成的字节码。
   作为语言,Java 是一种跨平台开发语言,能开发出跨平台的应用对象和应用程序,具有简单、
面向对象、分布式、解释执行、安全、 跨平台、高性能、多线程等特点。 作为平台,Java 平台包
括两部分内容:Java 虚拟机和 Java API。

   6) C#
   C#
    (读作 C sharp) Microsoft 开发的一种新的编程语言,
                是                      它是为生成运行在 .NET Framework
上的、广泛的企业级应用程序而设计的。C# 从 C/C++ 演变而来,它是一种简单、现代、类型安全
和面向对象的语言。 代码被作为托管代码编译,
         C#           这意味着它能够从公共语言运行库的服务中受益。
这些服务包括:语言互操作性、垃圾回收、增强的安全性以及改进的版本支持。
   C#的主要特点是:
          C# 是一种精确、简单、类型安全、面向对象的语言,它使企业程序员得以构建广泛的应用
           程序。
          通过提供垃圾回收和类型安全实现可靠性。
          通过提供内部代码信任机制保证安全性。
          完全支持可扩展元数据概念。
          对基于 Web 的组件交互提供 XML 支持。
          版本转换功能使管理和部署变得简易。

  -   17   -
第 1 讲 开始编写程序


          C# 语言提供对常用 API 样式(如 .NET Framework、COM、自动化和 C 样式 API 等)的
           访问。它还支持 unsafe 模式,在此模式下可以使用指针操作不受垃圾回收器控制的内存。
  C#具有非常广泛的应用领域,如 Web 网络开发、移动开发、桌面图形应用,是目前最新问世的
语言,所以吸取了所有以前各种语言的优点,从语言的功能上达到了一个新的高度,必将在今后的
软件工业中扮演极其重要的角色。


§1.7           关于二进制数制系统
  为了表示数量的概念,人们发明了各个各样的记数方法,如一、二、三、四、… 等汉字记数,
另外如罗马数字 I、II、III、IV、V、VI、VII、…等。这些都是数制系统的例子,数制系统就是一
整套表示数量的符号记数的规则体系。
  计算机内部的所有运算都是以二进制的方式进行的,所以我们需要对二进制做一些基本的了解。


§1.7.1 十进制数制系统
  现在我们普遍采用的是十进制数字系统,用 0、1、2、3、4、5、6、7、8、9 等十个符号表示。
在这个数值系统中所使用的符号个数一共有 10 个,称为该数制系统的基数。在该系统中比如 888 表
示的大小是:
                 2          1           0
  888 = 8 * 10 + 8 * 10 + 8 * 10
  也就是虽然符号都是一样的,但是所表示的数量却是不同的,最后面一个 8 表示 8,从右往左
                                    1                          2
第二个 8 表示的是 80(即 8 * 10 ),第三个表示的是 800(即 8 * 10 )
                                              ,也就是说,每向左移动一
个位置,数的大小就增加 10 倍,即数制系统的基数的倍数。这样的数制系统称为位置数制系统,因
为数值的大小和它所处的位置相关,十进制系统就是基数为 10 的位置数制系统。
  一个位置数制系统中数字的是有三个方面的要素决定的:
          数制系统的基数,比如十进制中的 10。
          数字符号本身,比如 8 和 6 表示的大小是不同的。
          数字的位置,比如个位上的 8 和十位上的 8 表示的大小也是不同的。
  除了 10 进制系统,世界上还存在着其他基数的数制系统,比如中国古时候一斤为十六两就是
16 进制系统,而时钟是用 60 进制的。
  可能你会问为什么世界各地都主要是使用 10 进制系统,而不是其他的 5 进制、6 进制或 7 进制
系统呢?一个解释就是人刚好有 10 个指头,人类正是在扳着指头数数的过程中创造了十进制记数的
方法。那么人们为什么不把脚趾头也用上呢?事实上还真的就有 20 进制的系统被人类使用过。


§1.7.2 二进制数制系统
  二进制就是基数为 2 的位置数制系统,因为基数为 2,所以只需要两个符号就够了,即 0 和 1。
由于基数是 2,所以每向左移动一位,所表示的数的大小就要乘以 2,比如:
  (10101110)B 的大小是
  (1706150413121100)B
           7    6       5       4       3      2    1      0
  = 1*2 + 0*2 + 1*2 + 0*2 + 1*2 + 1*2 + 1*2 + 0*2


  -   18   -
第 1 讲 开始编写程序


  = (174)D
  我们一般在一串数字的右下角写上英文字母 D 表示十进制,B 表示二进制。用十进制来表示二
进制不同位上的数的大小就是,位置从右到左从 0 开始记数。
  位置 n             10        9          8     7     6    5    4    3    2    1    0
  权值 211           210       29         28    27    26   25   24   23   22   21   20
  十进制              1024      512        256   128   64   32   16   8    4    2    1
  所以把二进制转换成十进制就是把把等于 1 的位的位置的值加起来就行了。如:
  (10010101)B = 128 + 16 + 4 + 1 = (149) D


§1.7.3 二进制和十进制之间的转换
  把十进制转换为二进制的步骤如下:
          将该十进制数除以 2,记录下余数;
          再用得到的商除以 2,继续记录下余数,重复该过程,依次记录下得到的余数,直到没有
           数字可除,即商为 0;
          按与记录的顺序相反的顺序读出余数,就是转化得到的二进制数。
  例如把 87 转化为十进制数的过程如下:
               2 |___87      … 1
               2 |___43      … 1
               2 |___21      … 1
               2 |___10      … 0
               2 |___ 5      … 1
               2 |___ 2      … 0
               2 |___ 1      … 1
                         0
  所以,
    (87)D = (1010111)B
  如果把十进制转换成其他进制的数,方法是一样的,只需除以相应的基数就行了,比如把十进
制转换成八进制,就使用应该除以 8 的余数,而不是除以 2。


§1.7.4 二进制表示的数量单位
  计算即中使用储存器来保存二进制的数据,二进制数中的符号 0 和 1 所占的储存空间为位,即
bit,八个位(bit)的存储空间称为一个字节,即 Byte,因此一个字节的存储空间最大能表示的数
  8
是 2 -1 = 255,我们可以用一个字节表示从 0,1,2,3,4,…,253,254,255 之间的任意一个数,
                                   10
10 个 bit 能表示的数的个数为 2 =1024,大约为 1000,所以把 1024 个字节称为 1 千字节, KByte,
                                                         即
简写为 KB。
  常用的存储单位如下所示:
  1 Byte = 8 bit
  l KB         = 1024 Byte


  -   19   -
第 1 讲 开始编写程序


  1 MB         = 1024 KB
  1 GB         = 1024 MB
  1 TB         = 1024 GB


§1.7.5 十六进制
  一个数用二进制表示的不足之处是可读性很差,一连串的 1 和 0,由人来看很难辨别不同的数。
       4
考虑到 2 =16,所以如果把二进制数换算成 16 进制数,那么四个二进制位恰好对应一个 16 进制的位,
二者之间的换算非常方便,而且克服了 2 进制数不容易阅读的缺点。
  16 进制位置数制系统的基数是 16,所使用的符号依次是 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F,
位置的权值从右到左依次是 1,16,256,4096,65535,…等等。
  十进制、二进制和十六进制的数值对照表:
                           十进制               二进制          十六进制
                               0              0000         0
                               1              0001         1
                               2              0010         2
                               3              0011         3
                               4              0100         4
                               5              0101         5
                               6              0110         6
                               7              0111         7
                               8              1000         8
                               9              1001         9
                               10             1010         A
                               11             1011         B
                               12             1100         C
                               13             1101         D
                               14             1110         E
                               15             1111         F
  把二进制转换成十六进制的方法是,从右到左每四个位划分成一组,然后把每一组的四个位转
换成相应的十六进制数字符号就可以了,比如:
  (1100001110011010)B
  =        ( 1100 0011 1001 1010 )B
  =        ( C      3      9    A     )H
  相反,把十六进制转换成二进制的方法就是把每一个十六进制的数字符号转换成响应的四位一
组的二进制位就可以了,比如:
           ( 1      3      D        8 )H
  =        ( 0001 0011 1101 1000)B

  -   20   -
第 1 讲 开始编写程序


  =        ( 1001111011000 )B
  甚至我们可以把 16 进制数看作是二进制数的一种特殊书写方式而已,即把 2 进制数每 4 位一组
的书写,而且对每一种 4 个位的组合用一个 1,2,3,4 到 A,B,C,D,E,F 之间的一个符号表示。这就
是为什么我们在计算机程序中经常使用 16 进制的原因。


§1.8           作业
  一、           安装 Visual Studio 2008 程序开发环境。
  在自己的计算机上安装好 visual studio 开发环境,在提交的 Q01_1 Answer.html 中说明是否
已经成功安装好开发环境,如果没有安装成功,请记录安装过程中出现的情况,注明所使用的操作
系统版本信息。

  二、           回答下列问题。
  1. 什么是计算机软件?叙述软件的基本概念、软件的基本分类、常见软件的基本功能等等。
  2. 什么是计算机硬件?叙述计算硬件的基本组成部分和各自的功能。
  3. 什么是计算机语言?叙述机器语言、汇编语言和高级语言的基本概念和主要特点。
  4. 列举 C#语言中有哪些基本数据类型?分别叙述各种类型可以存放的数据。
  将这些问题的答案书写在文档 Q01_2 Answer.html 中提交。

  三、           二进制转换的问题。

  1) 把下面的十进制数换算成二进制数和十六进制数
  A)3257          B)237         C)458       D)898

  2) 把下面的二进制数换算成十进制数和十六进制数
  A)10011011          B)11101010         C)100011111    D)101010101

  3) 把下面的十六进制数换算成十进制和二进制数
  A)FFA8          B)10A8        C)24B0      D)11FC
  将这些问题的答案书写在文档 Q01_3 Answer.html 中提交。

  四、           编写"Hello, World"程序。
  在 visual studio 2008 中编写"Hello, World"程序。编写完成后,先删除项目文件夹下的 bin
和 obj 目录,然后压缩整个项目文件为 zip 文件后提交。
  程序外观如下:




  -   21   -
第 1 讲 开始编写程序




程序要求:
        创建 winform 程序。
        程序运行时显示一个对话框,在文本框中输入一个名字后,点击问候按钮将显示:你好,
         某某某!
        点击关闭按钮,将退出程序。

五、           编写 ShowPicture 程序。

使用 Windows 公共对话框打开一个图像文件,可以控制显示的大小和透明度。界面如下:




程序要求:
        点击打开按钮时显示选择文件对话框选择某个图片文件,注意在文件对话框中使用文件扩
         展名过滤属性只列出图片文件名,其他文件不显示出来。
        窗口放大缩小时图片随着放大缩小。
        点击关闭则退出程序的运行。
        拖动透明标尺,可以改变图片显示的透明度。




-   22   -

More Related Content

Viewers also liked

今天,你就应该开始使用Html5
今天,你就应该开始使用Html5今天,你就应该开始使用Html5
今天,你就应该开始使用Html5ruandao
 
我今天学习的技术,明天会不会一钱不值
我今天学习的技术,明天会不会一钱不值我今天学习的技术,明天会不会一钱不值
我今天学习的技术,明天会不会一钱不值ruandao
 
用代码呈现,抛弃控件绑定
用代码呈现,抛弃控件绑定用代码呈现,抛弃控件绑定
用代码呈现,抛弃控件绑定ruandao
 
Introducción a Silverlight 1 y Silverlight 2
Introducción a Silverlight 1 y Silverlight 2Introducción a Silverlight 1 y Silverlight 2
Introducción a Silverlight 1 y Silverlight 2Eduard Llovet
 
Web Development in a Web Anywhere World: Then and Now
Web Development in a Web Anywhere World: Then and NowWeb Development in a Web Anywhere World: Then and Now
Web Development in a Web Anywhere World: Then and NowJames Gagliardi
 
Razvoj Air Mobilnih Aplikacija
Razvoj Air Mobilnih AplikacijaRazvoj Air Mobilnih Aplikacija
Razvoj Air Mobilnih AplikacijaIvan Ilijasic
 
Silver Light By Nyros Developer
Silver Light By Nyros DeveloperSilver Light By Nyros Developer
Silver Light By Nyros DeveloperNyros Technologies
 
Printed circuit boards pcb manufacturer link list
Printed circuit boards pcb manufacturer link listPrinted circuit boards pcb manufacturer link list
Printed circuit boards pcb manufacturer link listgrace cheng
 
IT market overview national & wisconsin
IT market overview   national & wisconsinIT market overview   national & wisconsin
IT market overview national & wisconsinTodd Nilson
 
Printed circuit boards pcb manufacturer link list
Printed circuit boards pcb manufacturer link listPrinted circuit boards pcb manufacturer link list
Printed circuit boards pcb manufacturer link listgrace cheng
 

Viewers also liked (13)

今天,你就应该开始使用Html5
今天,你就应该开始使用Html5今天,你就应该开始使用Html5
今天,你就应该开始使用Html5
 
Serviceについて
ServiceについてServiceについて
Serviceについて
 
我今天学习的技术,明天会不会一钱不值
我今天学习的技术,明天会不会一钱不值我今天学习的技术,明天会不会一钱不值
我今天学习的技术,明天会不会一钱不值
 
Silverlight
SilverlightSilverlight
Silverlight
 
用代码呈现,抛弃控件绑定
用代码呈现,抛弃控件绑定用代码呈现,抛弃控件绑定
用代码呈现,抛弃控件绑定
 
Introducción a Silverlight 1 y Silverlight 2
Introducción a Silverlight 1 y Silverlight 2Introducción a Silverlight 1 y Silverlight 2
Introducción a Silverlight 1 y Silverlight 2
 
Web Development in a Web Anywhere World: Then and Now
Web Development in a Web Anywhere World: Then and NowWeb Development in a Web Anywhere World: Then and Now
Web Development in a Web Anywhere World: Then and Now
 
Microsoft Silverlight
Microsoft SilverlightMicrosoft Silverlight
Microsoft Silverlight
 
Razvoj Air Mobilnih Aplikacija
Razvoj Air Mobilnih AplikacijaRazvoj Air Mobilnih Aplikacija
Razvoj Air Mobilnih Aplikacija
 
Silver Light By Nyros Developer
Silver Light By Nyros DeveloperSilver Light By Nyros Developer
Silver Light By Nyros Developer
 
Printed circuit boards pcb manufacturer link list
Printed circuit boards pcb manufacturer link listPrinted circuit boards pcb manufacturer link list
Printed circuit boards pcb manufacturer link list
 
IT market overview national & wisconsin
IT market overview   national & wisconsinIT market overview   national & wisconsin
IT market overview national & wisconsin
 
Printed circuit boards pcb manufacturer link list
Printed circuit boards pcb manufacturer link listPrinted circuit boards pcb manufacturer link list
Printed circuit boards pcb manufacturer link list
 

Similar to 第1讲 开始编写程序

Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Gelis Wu
 
Spring框架,技术详解及使用指导
Spring框架,技术详解及使用指导Spring框架,技术详解及使用指导
Spring框架,技术详解及使用指导yiditushe
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001rainx1982
 
Recycle Open Source Projects
Recycle Open Source ProjectsRecycle Open Source Projects
Recycle Open Source ProjectsGeorge Ang
 
2006 recycle opensourceprojects
2006 recycle opensourceprojects2006 recycle opensourceprojects
2006 recycle opensourceprojectsGeorge Ang
 
JavaScript 脚本控件(二)
JavaScript 脚本控件(二)JavaScript 脚本控件(二)
JavaScript 脚本控件(二)RANK LIU
 
Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引(简体中文版)Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引(简体中文版)babyyellow li
 
Xcode开发员入门导引
Xcode开发员入门导引Xcode开发员入门导引
Xcode开发员入门导引Sophia Lindsey
 
2006年招聘试题
2006年招聘试题2006年招聘试题
2006年招聘试题yiditushe
 
Lotus domino开发教程
Lotus domino开发教程Lotus domino开发教程
Lotus domino开发教程dyzm_2000
 
Django敏捷开发 刘天斯
Django敏捷开发 刘天斯Django敏捷开发 刘天斯
Django敏捷开发 刘天斯liuts
 
Flex20100906
Flex20100906Flex20100906
Flex20100906reasonpun
 

Similar to 第1讲 开始编写程序 (20)

N bear
N bearN bear
N bear
 
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
Visual studio 2012 與 asp.net 4.5 (新功能與開發介紹) 第一天
 
C+
C+C+
C+
 
C#
C#C#
C#
 
Spring框架,技术详解及使用指导
Spring框架,技术详解及使用指导Spring框架,技术详解及使用指导
Spring框架,技术详解及使用指导
 
beidakejian
beidakejianbeidakejian
beidakejian
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
Les3
Les3Les3
Les3
 
掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001掌星 移动互联网开发笔记-Vol001
掌星 移动互联网开发笔记-Vol001
 
Recycle Open Source Projects
Recycle Open Source ProjectsRecycle Open Source Projects
Recycle Open Source Projects
 
2006 recycle opensourceprojects
2006 recycle opensourceprojects2006 recycle opensourceprojects
2006 recycle opensourceprojects
 
JavaScript 脚本控件(二)
JavaScript 脚本控件(二)JavaScript 脚本控件(二)
JavaScript 脚本控件(二)
 
Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引(简体中文版)Xcode开发员入门导引(简体中文版)
Xcode开发员入门导引(简体中文版)
 
Xcode开发员入门导引
Xcode开发员入门导引Xcode开发员入门导引
Xcode开发员入门导引
 
2006年招聘试题
2006年招聘试题2006年招聘试题
2006年招聘试题
 
Lotus domino开发教程
Lotus domino开发教程Lotus domino开发教程
Lotus domino开发教程
 
Ch01
Ch01Ch01
Ch01
 
Django敏捷开发 刘天斯
Django敏捷开发 刘天斯Django敏捷开发 刘天斯
Django敏捷开发 刘天斯
 
Les 3 ppt
Les 3 pptLes 3 ppt
Les 3 ppt
 
Flex20100906
Flex20100906Flex20100906
Flex20100906
 

第1讲 开始编写程序

  • 1. 第 1 讲 开始编写程序 第 1 讲 开始编写程序 在本讲中,我们从一个经典的 HelloWorld 程序入手,解释编写程序的一些基本的概念。在本讲 的学习中,我们会涉及如下一些方面的内容:  如何在 visual studio 中创建解决方案和项目。  如何用窗体设计器制作简单的对话框界面。  使用窗体控件的属性和方法完成简单的程序功能。  了解程序设计中的对象及其成员的基本概念。  了解 C#语言的基本语法,学会书写注释语句、赋值语句、方法调用语句等。 §1.1 示例程序:Hello, World! §1.1.1 程序功能 程序运行时,显示一个对话框。在对话框中输入一个名字,然后点击按钮,将显示一行“你好, <名字>!”字符。界面如下。 §1.1.2 设计界面 按下列操作步骤完成程序界面的设计。 1) 创建解决方案。 一般来说,我们开始着手编写某个应用系统的时候,总是先建立好一个解决方案。解决方案可 以简单的理解成为我们所设计和编写的所有应用系统中的组件(项目)的一个管理容器。在我们的 学习中每一讲中的所有源代码都将放到一个解决方案中。 建立解决方案时,对应的会在硬盘上创建一个文件夹。我们推荐的最佳实践是让该解决方案中 的所有项目都分别对应解决方案目录下的一个子目录。 - 1 -
  • 2. 第 1 讲 开始编写程序 2) 新建一个 windows 窗体应用程序项目。 在解决方案的上下文菜单中选择“添加(D)/新建项目(N)。 ” 在弹出的“添加新项目”对话框中依次选择项目类型、输入项目名称和位置,然后点击确定。 - 2 -
  • 3. 第 1 讲 开始编写程序 3) 使用工具箱中的控件设计对话框界面。 新建项目后,在 visual studio 中显示工作环境称为可视化窗体设计器。主要的操作和设计软 件非常类似。左边是工具箱,中间的设计面板,右上角是资源导航,右下角是属性框。在该示例程 序中。设计窗体的基本操作的细节详见视频演示。布置好的结果如下: 对象化编程的基本思想就是把各种控件和组件等都当作是对象,对象就像是自然界中的实体事 物一样,具有描述该事物的数据特性。窗体和窗体上的控件都是对象,如果在改变这些对象的属性, 可以在属性框随意的设置,具体的操作请见教学视频。 窗体组件的设置如下:  窗体名称为 MainForm,Text 属性为“你好,C#” 。 - 3 -
  • 4. 第 1 讲 开始编写程序  文本框名称为 nameText,Text 属性为空。  问好信息标签名称为 helloMessage,Text 属性为“你好,。 ”  两个按钮的名称分别为 helloButton 和 closeButton,Text 属性分别为“问候” “关闭” 和 。 4) 点击运行按钮,查看运行时的对话框显示。 此时能正常显示界面,但是并没有我们所期望的功能。 §1.1.3 书写代码 1) 在窗体设计器中双击“问候”按钮,进入代码编辑器。 private void helloButton_Click(object sender, EventArgs e) { | <-光标停留在此 } 光标停留在一对花括号之间,这对花括号之前的代码行表示这是一个事件处理程序(或称事件 处理方法),事件是指窗体上发生的某件事情。这里的事件是指用户在按钮上点击鼠标,我们就说按 钮发生了 Click 事件。在这对花括号之间可以写入一些语句,那么当发生了相应的事件时,就会执 行这些语句。当然相应的事件不发生时,这些语句是不会被执行的。 在“问候”按钮的 Click 事件处理代码中输入下述语句: this.helloMessage.Text = "你好," + nameText.Text; 前面已经提到,窗体和窗体上的控件都被当作是对象,而对象的属性可以在属性框中来设置。 如果要在程序运行的时候改变对象的属性,就需要程序语言来来完成了。在 C#语言中使用“对象名. 属性名”的语法就可以简单的引用对象的成员。可以把中间的点读作汉字的“的” 。 其中,等于号的意思是赋值,在这里,等于号左边表示的是标签的 Text 属性,等于号右边表示 的是一个字符串,该字符串由文本“你好,”和文本框中的文本连接而成,中间的加号表示把两个文 本字符串连在一起。等号的意思就是把右边的字符串值放到(即赋值给)左边的属性中。 上述语句称之为赋值语句,在 C#中还有其他各种类型的语句,在今后会逐步接触到。不论什么 语句都必须以分号结束。 2) 同样在“关闭”按钮的 Click 事件处理代码中输入下述语句: this.Close(); 前面我们使用了对象的属性,其实和自然界中的事物一样,对象除了描述自身的数据为,对象 还具备行为的特性,比如人这样的对象会拥有走路、说话、唱歌跳舞这样的行为。对象的数据和行 为统称为对象的成员,而数据常称为对象的属性,行为常称为对象的方法。使用“对象名.属性名” 和“对象名.方法名 ” () 的语法就可以简单的使用对象的成员了。可以把中间的点读作汉字的“的” 。 在上述句子中,this 表示的代码所属的对象,这里表示窗体本身。Close()是窗体具备的一个 关闭自己的行为。执行该语句的结果就是关闭窗体。 最后的窗体代码如下: namespace HelloWorld - 4 -
  • 5. 第 1 讲 开始编写程序 { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } private void helloButton_Click(object sender, EventArgs e) { this.helloMessage.Text = "你好," + nameText.Text; } private void closeButton_Click(object sender, EventArgs e) { this.Close(); } } } 3) 运行程序。 在文本框中输入名字,然后点击问候,就能看到问候信息的显示。点击关闭则退出程序的运行。 §1.2 进一步阅读项目代码 通俗的理解是,软件开发就是使用某种编程语句书写指挥计算机运行的命令文件,这些文件成 为源程序文件(也称作源代码文件),源程序文件是文本文件,一般来说,都可以使用记事本打开查 看。 编写程序的工作就是一行一行的编写代码,现在虽然有不少编程工具也可以帮我们自动生成一 些通用功能的源程序,但是真正有价值的、实际能完成我们所需要功能的代码都必须由人来完成。 为了对程序代码有一个初步的了解,我们观察一下在上面的开发中 visual studio 开发环境为 我们生成的代码。 §1.2.1 项目中的文件夹  obj 和 bin 文件夹 我们书写的程序源代码无法直接运行,这些代码必须翻译成机器可以处理(即,操作系统或运 行环境可以加载运行)的执行文件,才能执行。完成这个过程的工具称为编译器。我们在 Visual Studio 集成环境中执行生成时会自动调用编译器来编译我们的程序。 - 5 -
  • 6. 第 1 讲 开始编写程序 编译器生成的文件存放在 obj 和 bin 两个文件夹中,这些文件夹中的文件就是在编译过程中生 成的二进制文件,我们书写的源程序只有生成为二进制指令文件才能执行。简单的理解是 obj 中包 含了编译过程中生成的临时文件。而在 bin 中包含的是最终可用来执行的程序。我们可以在 bin/debug 下看到 HelloWorld.exe 文件,双击该文件就可以执行。 我们注意到每个文件夹下又都包含一个 debug 的文件夹。这是由于在刚才的操作中我们使用的 是默认的 debug 配置,我们可以对同一个项目设计多种配置,典型的,对于最终的发布版本我们会 使用 release 配置,在生成程序时不同的配置分别存放到 obj 和 bin 的不同的目录下。  Properties 文件夹 在该文件夹下包含三个方面的内容:  AssemblyInfo:程序集的信息。  Resource:程序的资源。  Settings:程序的设置信息。 这部分技术在后续的中级课程中再做进一步的讲解。 §1.2.2 Program.cs 文件 我们可以在项目文件夹下看到一个名为 Program.cs 的文件,其内容如下: using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; namespace HelloWorld { static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); } } - 6 -
  • 7. 第 1 讲 开始编写程序 } 下面我们就解释在 Program.cs 中包含了一些基本的语句和基本概念:  命名空间 命名空间是一个区别名称的手段。比如“电视机”是一个名称,为了区别 A 厂生产的电视机和 B 厂生产的电视机,我们可以用“A 厂的电视机”和“B 厂的电视机”这样的术语来表达,在 C#的语 法中用句点来表示“的”的所属关系,所以写成“A 厂.电视机”和“B 厂.电视机” 。 这样的表达虽然很清楚具体,但是显得很麻烦。减少麻烦的方式就是使用 using 语句和 namespace 语句。 1) using 语句:这个语句不是必须的,但是有了这个语句可以简化代码的书写。 如果在程序的开头使用了一句“using A 厂;”,那么在后面的语句中只要说到电视机即使没有 明确指明是 A 厂的,也被视作是“A 厂.电视机”。 在 Program 中使用了 using System.Windows.Forms;因此下述语句: Application.EnableVisualStyles(); 等同于: System.Windows.Forms.Application.EnableVisualStyles(); 2) namespace{}语句:该语句用来定义一个命名空间的范围。 在 namespace 后面的花括号内声明的名字,都属于该命名空间。比如在上面的代码中声明了 Program 类名称,就相当于是“HelloWorld.Program” 。 3) static class <name> {}语句 该语句用来定义一个类。关于类的概念我们将在后面进一步讲解。我们只需要知道 C#中的所有 语句都是组织在称作类的代码块中。每个类都需要有一个自己的名字,为了区别具有同样名字的类, 可以把类放到不同的命名空间之中,比如在该例子中 Program 类就放在了 HelloWorld 命名空间中。 4) Main 方法 类里面可以定义数据(又称为属性)和行为(又称为方法) 在这个例子中 Main 就是一个行为, 。 Main 是一个特殊的方法,称为程序入口点。当程序运行时,会自动执行该方法。在 Windows 下运行 的任何一个程序都需要有一个入口点。在 C#中入口点就是 Main 方法。 请注意:这里定义类和方法都使用了 static 关键字。先记住这样的用法,在后面进一步学习类 和对象时将详细讲解相关的技术点。 5) 注释语句: 如果要在程序源代码中书写不被编译器处理的语句,可以使用注释语法。注释可以方便我们在 程序中书写一些供阅读者理解代码的说明文字。 在 C#中可以使用三种注释语法,分别称为单行注释、多行注释和文档注释。如下所示: 单行注释:使用语法,从//开始到行的结尾的所有字符均被忽略。 多行注释:使用 /* ... */语法,所有在/*开始到*/结束的所有字符(可以跨越多行),全部被 编译器忽略。 - 7 -
  • 8. 第 1 讲 开始编写程序 文档注释:使用“///”用来书写,和“//”一样,文档注释也是一种单行注释,所不同的是我 们可以在其中书写标记,这些注释经过编程工具的处理后可以形成程序的说明文档。我们将在后续 的中级课程中进一步讲解。 6) 调用方法的表达式语句: 使用“类(对象).方法();”的语法就可以执行类或对象所提供的一个行为。 Application.Run(new MainForm()); 在这个语句中调用了 System.Windows.Forms.Application 类的 Run 方法,该方法的作用是运行 一个应用程序,括号里面的“new MainForm()”表示运行程序时显示 MainForm 窗体。MainForm 窗 体就是我们在设计器中设计的窗体。 §1.2.3 MainForm 窗体文件 Windows 窗体应用程序中的每一个窗体都由三个文件组成, MainForm 为例包括了如下三个文 以 件:  MainForm.cs:在代码视图中编写的代码。  MainForm.Designer.cs:通过设计器制作的界面外观所对应的程序。这些程序是设计自动 生成的。可以打开查看,但是一定不要手工改动。  MainForm.resx:界面所需要到的资源。资源是指程序运行是要显示的文本字符、图标和图 片等等信息。 §1.3 安装 Visual Studio 集成开发环境 安装 Visual Studio 2008 的过程非常简单。只需按提示点击下一步直到结束就可以了。详细 信息请看教学视频。需要注意的事项如下:  对于开发用的机器,建议不要使用克隆安装的操作系统,也不要使用经过破解的免序列号 等经过改动的操作系统,最好使用原版安装的操作系统,安装完成后输入序列号,在进一 步手工安装最新的补丁包。  建议使用 Windows7 操作系统或者 Windows2008。如果使用 windows xp 则由于没有 iis7 的 支持,部分和 Web 相关的功能不被支持。如果仅学习简单的开发,使用 xp 也是可以的。  建议安装 Visual Studio 的 2008 或者 2010 版本,不安装 2005 及以下版本。因为现在普遍 需要 mvc、ajax 和 silverlight 等技术只有在 2008 以上版本才有了更好的支持。  是否安装 visual studio 2008 的 sp1 补丁,根据自己需要而定,如果不需要 entity framework、linq 等等技术,可以不安装。  建议在安装 visual studio 之前先安装 sql server 版本,如果先安装 visual studio 可能 为后来安装 sqlserver 带来麻烦。因为 visual studio 中自带了 express 版本为后来的安 装带来一些兼容性方面的 bug,虽然有解决手段(单独卸载 express 后重新装) ,但是很麻 烦。 - 8 -
  • 9. 第 1 讲 开始编写程序 §1.4 Visual Studio 集成环境 如图,在 msdn 中对 Visual Studio 集成环境有详细的介绍文档。包括了如下内容:  管理解决方案和文件  编辑代码和资源文件  生成调试和测试  部署应用程序和组件  自定义开发环境并实现自动化  用于 Visual Studio 的源代码管理  参考信息。 对集成环境的使用一方面需要在长期的编程中逐步熟悉,另一方面认真阅读这些文档信息才能 让我们有效发挥集成环境的价值。上面的示例的用法就是一种推荐的最佳实践。 目前先重点了解管理解决方案中的项目和文件。下面是相关文档的摘要。 Visual Studio 提供了两类容器,帮助您有效地管理开发工作所需的项,如引用、数据连接、 文件夹和文件。这两类容器分别叫做解决方案和项目。此外,Visual Studio 还提供解决方案文件 夹,用于将相关的项目组织成项目组,然后对这些项目组执行操作。作为查看和管理这些容器及其 关联项的界面, “解决方案资源管理器”是集成开发环境 (IDE) 的一部分。  解决方案和项目 解决方案和项目包含一些项,这些项表 示创建应用程序所需的引用、数据连接、文 件夹和文件。一个解决方案可包含多个项目, 而一个项目通常包含多个项。这些容器允许 您采用以下方式使用 IDE:  作为一个整体管理解决方案的设置 或管理各个项目的设置。  在集中精力处理组成开发工作的项 的同时,使用“解决方案资源管理 器”处理文件管理细节。  添加对解决方案中的多个项目有用 或对该解决方案有用的项,而不必 在每个项目中引用该项。  处理与解决方案或项目独立的杂项 文件。  项:文件、引用、数据连接 项可以是文件和项目的其他部分,如引用、数据连接或文件夹。在“解决方案资源管理器”中, 项可以按下列方式组织: - 9 -
  • 10. 第 1 讲 开始编写程序  作为项目项(项目项是构成项目的项),如“解决方案资源管理器”中项目内的窗体、源文 件和类。组织和显示方式取决于所选的项目模板以及所做的所有修改。  作为文件的解决方案项,适用于整个解决方案,位于“解决方案资源管理器”的“解决方 案项”文件夹中。  作为文件的杂项文件,它们与项目或解决方案都不关联,可显示在“杂项文件”文件夹中。 §1.5 示例程序:显示图像 在这个程序中,我们用刚学习到的一些基本概念,如设计界面、设置对象的属性、调用对象的 方法,编写一个显示图像的程序。在这个程序中,我们将进一步了解设计界面中的一些布局技巧, 同时初步使用图片框、跟踪条、公共对话框等界面组件。 §1.5.1 程序功能 界面如图所示,点击“按钮”将显示 Windows 中的打开文件对话框,选择一个图片文件后即可 显示出相应的图像,拖动窗口的边框,可以控制图片的显示大小,拖动跟踪条则可以控制显示的透 明度。 说明:透明度的控制受操作系统和显卡驱动的支持,操作系统需要 Windows XP SP2 以上。 - 10 -
  • 11. 第 1 讲 开始编写程序 §1.5.2 设计界面 1) 在解决方案中添加新的项目 在解决方案中增加一个项目在 VisualStudio 中的操作是,在解决方案的右键菜单上选择新建项 目。如下所示: 2) 在窗体中如图放置好控件。各个控件的设置如下: 控件 名称 属性 主窗体 MainForm Text:查看图片 图片框 pictureBox1 BorderStyle:Fixed3D,SizeMode:StretchImage 跟踪条 trackBar1 Maximum:10,Minimum:0,Value:10 打开按钮 openButton Text:打开 关闭按钮 closeButton Text:关闭 3) 拖动 OpenFileDialog 控件到设计中的窗体上。 由于该组件不直接显示在窗体上,因而显示在设计器的下方,名称为 openFileDialog1。 - 11 -
  • 12. 第 1 讲 开始编写程序 4) 在窗口尺寸变化时动态调整控件的位置和大小。 窗体控件具有一个称为锚定(Anchor)的属性,如下图所示:把 pictureBox1 的 Anchor 属性指 定为“Top,Bottom,Left,Right”后,就表示当窗口的大小发生变化时,图片框自动调整自己的大小 和位置,从而保持图片框上下边缘和左右边缘到窗体对应的上下边缘和左右边缘之间的距离不变, 其结果就是图片框自动根据窗体大小来调节自身的大小。 同样的方式把打开和关闭两个按钮的 Anchor 属性设为:“Left,Right”。把跟踪条的 Anchor 属 性设为“Bottom,Left,Right”。 - 12 -
  • 13. 第 1 讲 开始编写程序 §1.5.3 书写代码 1) 编写打开图像的代码。 在设计器中双击打开按钮,在代码视图中输入代码。 private void OpenButton_Click(object sender, EventArgs e) { openFileDialog1.ShowDialog();需要键入的代码行 pictureBox1.Image = Image.FromFile(openFileDialog1.FileName); 需要键入的代码行 } openFileDialog 控件具有 ShowDialog()方法显示操作系统的打开对话框,用户选择的文件存放 在它的 FileName 属性中。 pictureBox 控件具有 Image 属性,该属性里存放一个图像对象。 Image 类型的 FromFile 方法的作用是把一个图像文件加载到内存中成为一个图像对象。 2) 编写关闭窗体的代码。 在设计器中双击关闭按钮,在代码视图中输入代码。 private void CloseButton_Click(object sender, EventArgs e) { this.Close();需要键入的代码行 } 窗体的 Close()方法用来关闭窗体。 3) 编写透明度控制的代码。 在跟踪条的事件列表中,双击 ValueChanged 事件,就可以自动生成事件处理函数。ValueChanged 事件在跟踪条的值改变时触发。 private void trackBar1_ValueChanged(object sender, EventArgs e) { - 13 -
  • 14. 第 1 讲 开始编写程序 this.Opacity = trackBar1.Value / 10.0 ; 需要键入的代码行 } this.Opacity 是窗口对象的一个属性,表示不透明的程度,它的值是 0 到 1 之间的一个数,0 表示窗体完全透明,而 1 表示完全不透明。 trackBar1.Value 是 trackBar 的一个属性,表示跟踪条的当前值。 注意在该代码中,使用了 10.0 而不是 10,因为在 C#中两个整数相除会得到商的整数值,而不 是一个包含小数点的实数,把除数改为一个实数后就能得到包含小数的结果了。 当我们点击执行按钮时,依旧执行的是前面一个项目。这是由于我们的解决方案中已经有了两 个项目,而第一个项目已经被默认为启动项目。使用项目的右键菜单,可以改变解决方案中的启动 项目。操作如下: §1.6 计算机语言简介 §1.6.1 回顾计算机的基本组成 在《计算机软件基础》课程中我们我们知道计算有硬件和软件组成,软件的实质是控制计算机 运行的指令的序列。计算机的系统组成结构图如下: 计算机 辅助存储(硬盘,光盘等) 程序 数据 输入 输出 中央处理器和内存 数据在计算机的内部是用二进制表示的,包括程序和数据都以 0 和 1 的序列来表示。把数据输 入计算机的过程也就是把数据转换成计算机可以识别的和保存的二进制信息流,然后在计算机内部 进行处理,处理的方式是处理器执行程序中指令,在内存中对数据进行各种各样的运算,保存在硬 盘等辅助存储上的程序和数据可以被读入到内存使用,这个过程就称为加载,同样数据处理完成后 - 14 -
  • 15. 第 1 讲 开始编写程序 可以保存到硬盘上,通过输出设备可以显示和打印数据处理的结果。 §1.6.2 机器语言 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。它是计算机 的设计者通过计算机的硬件结构赋予计算机的操作功能。机器语言具有灵活、直接执行和速度快等 特点。 用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的含义。手编程序 时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用 的工作单元处在何种状态。这是一件十分繁琐的工作,编写程序花费的时间往往是实际运行时间的几 十倍或几百倍。而且,编出的程序全是些 0 和 1 的指令代码,直观性差,还容易出错。现在,除了计算 机生产厂家的专业人员外,绝大多数程序员已经不再去学习机器语言了。 §1.6.3 汇编语言 为了克服机器语言难读、难编、难记和易出错的缺点,人们就用与代码指令实际含义相近的英文 缩写词、字母和数字等符号来取代指令代码(如用 ADD 表示运算符号“+”的机器代码),于是就产生了 汇编语言。所以说,汇编语言是一种用助记符表示的仍然面向机器的计算机语言。汇编语言亦称符号 语言。汇编语言由于是采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一 定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记符与指令代码一 一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质 量较高的程序。 汇编语言中由于使用了助记符号,用汇编语言编制的程序送入计算机,计算机不能象用机器语言 编写的程序一样直接识别和执行,必须通过预先放入计算机的“汇编程序“的加工和翻译,才能变成能 够被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称源程序, 运行时汇编程序要将源程序翻译成目标程序。目标程序是机器语言程序,它一经被安置在内存的预定 位置上,就能被计算机的 CPU 处理和执行。 汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是 比较繁琐费时,通用性也差。汇编语言是低级语言。但是,汇编语言用来编制系统软件和过程控制软 件,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。 §1.6.4 高级语言 不论是机器语言还是汇编语言都是面向硬件的具体操作的,语言对机器的过分依赖,要求使用 者必须对硬件结构及其工作原理都十分熟悉,这对非计算机专业人员是难以做到的,对于计算机的推 广应用是不利的。计算机事业的发展,促使人们去寻求一些与人类自然语言相接近且能为计算机所接 受的语意确定、规则明确、自然直观和通用易学的计算机语言。这种与自然语言相近并为计算机所 接受和执行的计算机语言称高级语言。高级语言是面向用户的语言。无论何种机型的计算机,只要配 备上相应的高级语言的编译或解释程序,则用该高级语言编写的程序就可以通用。 计算机并不能直接地接受和执行用高级语言编写的源程序,源程序在输入计算机时,通过“翻译 - 15 -
  • 16. 第 1 讲 开始编写程序 程序”翻译成机器语言形式的目标程序,计算机才能识别和执行。这种“翻译”通常有两种方式,即编译 方式和解释方式。 编译方式是:事先编好一个称为编译程序的机器语言程序,作为系统软件存放在计算机内,当用 户由高级语言编写的源程序输入计算机后,编译程序便把源程序整个地翻译成用机器语言表示的与 之等价的目标程序,然后计算机再执行该目标程序,以完成源程序要处理的运算并取得结果。 解释方式是:源程序进入计算机时,解释程序边扫描边解释作逐句输入逐句翻译,计算机一句句 执行,并不产生目标程序。 每一种高级(程序设计)语言,都有自己人为规定的专用符号、英文单词、语法规则和语句结构(书 写格式)。高级语言与自然语言(英语)更接近,而与硬件功能相分离(彻底脱离了具体的指令系统), 便于广大用户掌握和使用。高级语言的通用性强,兼容性好,便于移植。 §1.6.5 常见语言介绍 高级语言有 BASIC、PASCAL、C、C++、COBOL、FORTRAN、LOG 等。目前,程序设计语言及编程环 境正向面向对象语言及可视化编程环境方向发展,出现了许多新的语言及其开发工具,如:Sun 公司 的 Java,微软公司的 C#等,这些语言的主要特点是面向对象,支持组件化开发。 1) BASIC 语言 BASIC 语言全称是 Beginner’s all Purpose Symbolic Instruction Code,意为“初学者通用符 号指令代码“。 1964 年由美国达尔摩斯学院的基米尼和科茨完成设计并提出了 BASIC 语言的第一个版 本,经过不断丰富和发展,现已成为一种功能全面的中小型计算机语言。BASIC 易学、易懂、易记、 易用,是初学者的入门语言,也可以作为学习其他高级语言的基础。BASIC 有解释方式和编译方式两 种翻译程序。 2) PASCAL 语言 PASCAL 是一种结构程序设计语言,由瑞士苏黎世联邦工业大学的沃斯(N.Wirth)教授研制,于 1971 年正式发表。是从 ALGOL60 衍生的,但功能更强且容易使用。目前,作为一个能高效率实现的实 用 语 言 和 一 个 极 好 的 教 学 工 具 ,PASCAL 语 言 在 高 校 计 算 机 软 件 教 学 中 一 直 处 于 主 导 地 位 。 Pascal(B.Pascal)是十七世纪法国著名数学家,他于 1642 年曾发明现代台式计算机的雏型机—加减 法计算机。 PASCAL 具有大量的控制结构,充分反映了结构化程序设计的思想和要求,直观易懂,使用灵活,既 可用于科学计算,又能用来编写系统软件,应用范围日益广泛。 3) 通用编程语言 C C 语言是美国 AT&T(电报与电话)公司为了实现 UNIX 系统的设计思想而发展起来的语言工具。C 语言的主要特色是兼顾了高级语言和汇编语言的特点,简洁、丰富、可移植。相当于其他高级语言子 程序的函数是 C 语言的补充,每一个函数解决一个大问题中的小任务,函数使程序模块化。C 语言提 供了结构式编程所需要的各种现代化的控制结构。 C 语言是一种通用编程语言,正被越来越多的计算机用户所推崇。使用C语言编写程序,既感觉 到使用高级语言的自然,也体会到利用计算机硬件指令的直接,而程序员却无需卷入汇编语言的繁琐。 - 16 -
  • 17. 第 1 讲 开始编写程序 4) COBOL 语言 COBOL 的全称是 Common Business Oriented Language,意即:通用商业语言。 在企业管理中,数值计算并不复杂,但数据处理信息量却很大。为专门解决经企管理问题,于 1959 年,由美国的一些计算机用户组织设计了专用于商务处理的计算机语言 COBOL,并于 1961 年美国数据 系统语言协会公布。经不断修改、丰富完善和标准化,已发展为多种版本。 COBOL 语言使用了 300 多个英语保留字,大量采用普通英语词汇和句型,COBOL 程序通俗易懂,素 有“英语语言”之称。 COBOL 语言语法规则严格。用 COBOL 语言编写的任一源程序,都要依次按标识部、环境部、数据 部和过程部四部分书写,COBOL 程序结构的“部”内包含“节”,“节”内包含“段”,段内包含语句,语句由字 或字符串组成,整个源程序象一棵由根到干,由干到枝,由枝到叶的树,习惯上称之为树型结构。 目前 COBOL 语言主要应用于情报检索、商业数据处理等管理领域。 5) Java Java 是 Sun 公司发明的一种计算机语言,它的跨平台、面向对象、多线程、安全、强健等特性 已广为人知。它还从一开始就采用开放策略,鼓励技术人员直接参与 Java 技术规范的提出与制定, 并提供大量免费的软件实现、文档资料及应用实例,供技术人员学习。随着 Java 应用的不断发展, Sun 公司推出了一系列 Java 平台应用规范,包括核心平台 J2SE、企业平台 J2EE 及嵌入式平台 J2ME 规范。J2EE 企业规范又涵盖了 JDBC、Connector、JSP、Servlet、EJB 等应用规范及 JNDI、JMS、JTS 等服务规范。这些规范已经被广为接受,并成为开发各种 Java 应用的标准。 从技术角度说,Java 包括两个方面的含义,一是作为一种高级语言,提供了如数据声明、运算 表达式和流程控制语句等等语言的功能。二是作为一种平台,在运行时由虚拟机解释执行 Java 经编 译后形成的字节码。 作为语言,Java 是一种跨平台开发语言,能开发出跨平台的应用对象和应用程序,具有简单、 面向对象、分布式、解释执行、安全、 跨平台、高性能、多线程等特点。 作为平台,Java 平台包 括两部分内容:Java 虚拟机和 Java API。 6) C# C# (读作 C sharp) Microsoft 开发的一种新的编程语言, 是 它是为生成运行在 .NET Framework 上的、广泛的企业级应用程序而设计的。C# 从 C/C++ 演变而来,它是一种简单、现代、类型安全 和面向对象的语言。 代码被作为托管代码编译, C# 这意味着它能够从公共语言运行库的服务中受益。 这些服务包括:语言互操作性、垃圾回收、增强的安全性以及改进的版本支持。 C#的主要特点是:  C# 是一种精确、简单、类型安全、面向对象的语言,它使企业程序员得以构建广泛的应用 程序。  通过提供垃圾回收和类型安全实现可靠性。  通过提供内部代码信任机制保证安全性。  完全支持可扩展元数据概念。  对基于 Web 的组件交互提供 XML 支持。  版本转换功能使管理和部署变得简易。 - 17 -
  • 18. 第 1 讲 开始编写程序  C# 语言提供对常用 API 样式(如 .NET Framework、COM、自动化和 C 样式 API 等)的 访问。它还支持 unsafe 模式,在此模式下可以使用指针操作不受垃圾回收器控制的内存。 C#具有非常广泛的应用领域,如 Web 网络开发、移动开发、桌面图形应用,是目前最新问世的 语言,所以吸取了所有以前各种语言的优点,从语言的功能上达到了一个新的高度,必将在今后的 软件工业中扮演极其重要的角色。 §1.7 关于二进制数制系统 为了表示数量的概念,人们发明了各个各样的记数方法,如一、二、三、四、… 等汉字记数, 另外如罗马数字 I、II、III、IV、V、VI、VII、…等。这些都是数制系统的例子,数制系统就是一 整套表示数量的符号记数的规则体系。 计算机内部的所有运算都是以二进制的方式进行的,所以我们需要对二进制做一些基本的了解。 §1.7.1 十进制数制系统 现在我们普遍采用的是十进制数字系统,用 0、1、2、3、4、5、6、7、8、9 等十个符号表示。 在这个数值系统中所使用的符号个数一共有 10 个,称为该数制系统的基数。在该系统中比如 888 表 示的大小是: 2 1 0 888 = 8 * 10 + 8 * 10 + 8 * 10 也就是虽然符号都是一样的,但是所表示的数量却是不同的,最后面一个 8 表示 8,从右往左 1 2 第二个 8 表示的是 80(即 8 * 10 ),第三个表示的是 800(即 8 * 10 ) ,也就是说,每向左移动一 个位置,数的大小就增加 10 倍,即数制系统的基数的倍数。这样的数制系统称为位置数制系统,因 为数值的大小和它所处的位置相关,十进制系统就是基数为 10 的位置数制系统。 一个位置数制系统中数字的是有三个方面的要素决定的:  数制系统的基数,比如十进制中的 10。  数字符号本身,比如 8 和 6 表示的大小是不同的。  数字的位置,比如个位上的 8 和十位上的 8 表示的大小也是不同的。 除了 10 进制系统,世界上还存在着其他基数的数制系统,比如中国古时候一斤为十六两就是 16 进制系统,而时钟是用 60 进制的。 可能你会问为什么世界各地都主要是使用 10 进制系统,而不是其他的 5 进制、6 进制或 7 进制 系统呢?一个解释就是人刚好有 10 个指头,人类正是在扳着指头数数的过程中创造了十进制记数的 方法。那么人们为什么不把脚趾头也用上呢?事实上还真的就有 20 进制的系统被人类使用过。 §1.7.2 二进制数制系统 二进制就是基数为 2 的位置数制系统,因为基数为 2,所以只需要两个符号就够了,即 0 和 1。 由于基数是 2,所以每向左移动一位,所表示的数的大小就要乘以 2,比如: (10101110)B 的大小是 (1706150413121100)B 7 6 5 4 3 2 1 0 = 1*2 + 0*2 + 1*2 + 0*2 + 1*2 + 1*2 + 1*2 + 0*2 - 18 -
  • 19. 第 1 讲 开始编写程序 = (174)D 我们一般在一串数字的右下角写上英文字母 D 表示十进制,B 表示二进制。用十进制来表示二 进制不同位上的数的大小就是,位置从右到左从 0 开始记数。 位置 n 10 9 8 7 6 5 4 3 2 1 0 权值 211 210 29 28 27 26 25 24 23 22 21 20 十进制 1024 512 256 128 64 32 16 8 4 2 1 所以把二进制转换成十进制就是把把等于 1 的位的位置的值加起来就行了。如: (10010101)B = 128 + 16 + 4 + 1 = (149) D §1.7.3 二进制和十进制之间的转换 把十进制转换为二进制的步骤如下:  将该十进制数除以 2,记录下余数;  再用得到的商除以 2,继续记录下余数,重复该过程,依次记录下得到的余数,直到没有 数字可除,即商为 0;  按与记录的顺序相反的顺序读出余数,就是转化得到的二进制数。 例如把 87 转化为十进制数的过程如下: 2 |___87 … 1 2 |___43 … 1 2 |___21 … 1 2 |___10 … 0 2 |___ 5 … 1 2 |___ 2 … 0 2 |___ 1 … 1 0 所以, (87)D = (1010111)B 如果把十进制转换成其他进制的数,方法是一样的,只需除以相应的基数就行了,比如把十进 制转换成八进制,就使用应该除以 8 的余数,而不是除以 2。 §1.7.4 二进制表示的数量单位 计算即中使用储存器来保存二进制的数据,二进制数中的符号 0 和 1 所占的储存空间为位,即 bit,八个位(bit)的存储空间称为一个字节,即 Byte,因此一个字节的存储空间最大能表示的数 8 是 2 -1 = 255,我们可以用一个字节表示从 0,1,2,3,4,…,253,254,255 之间的任意一个数, 10 10 个 bit 能表示的数的个数为 2 =1024,大约为 1000,所以把 1024 个字节称为 1 千字节, KByte, 即 简写为 KB。 常用的存储单位如下所示: 1 Byte = 8 bit l KB = 1024 Byte - 19 -
  • 20. 第 1 讲 开始编写程序 1 MB = 1024 KB 1 GB = 1024 MB 1 TB = 1024 GB §1.7.5 十六进制 一个数用二进制表示的不足之处是可读性很差,一连串的 1 和 0,由人来看很难辨别不同的数。 4 考虑到 2 =16,所以如果把二进制数换算成 16 进制数,那么四个二进制位恰好对应一个 16 进制的位, 二者之间的换算非常方便,而且克服了 2 进制数不容易阅读的缺点。 16 进制位置数制系统的基数是 16,所使用的符号依次是 0,1,2,3,4,5,6,7,8,9, A,B,C,D,E,F, 位置的权值从右到左依次是 1,16,256,4096,65535,…等等。 十进制、二进制和十六进制的数值对照表: 十进制 二进制 十六进制 0 0000 0 1 0001 1 2 0010 2 3 0011 3 4 0100 4 5 0101 5 6 0110 6 7 0111 7 8 1000 8 9 1001 9 10 1010 A 11 1011 B 12 1100 C 13 1101 D 14 1110 E 15 1111 F 把二进制转换成十六进制的方法是,从右到左每四个位划分成一组,然后把每一组的四个位转 换成相应的十六进制数字符号就可以了,比如: (1100001110011010)B = ( 1100 0011 1001 1010 )B = ( C 3 9 A )H 相反,把十六进制转换成二进制的方法就是把每一个十六进制的数字符号转换成响应的四位一 组的二进制位就可以了,比如: ( 1 3 D 8 )H = ( 0001 0011 1101 1000)B - 20 -
  • 21. 第 1 讲 开始编写程序 = ( 1001111011000 )B 甚至我们可以把 16 进制数看作是二进制数的一种特殊书写方式而已,即把 2 进制数每 4 位一组 的书写,而且对每一种 4 个位的组合用一个 1,2,3,4 到 A,B,C,D,E,F 之间的一个符号表示。这就 是为什么我们在计算机程序中经常使用 16 进制的原因。 §1.8 作业 一、 安装 Visual Studio 2008 程序开发环境。 在自己的计算机上安装好 visual studio 开发环境,在提交的 Q01_1 Answer.html 中说明是否 已经成功安装好开发环境,如果没有安装成功,请记录安装过程中出现的情况,注明所使用的操作 系统版本信息。 二、 回答下列问题。 1. 什么是计算机软件?叙述软件的基本概念、软件的基本分类、常见软件的基本功能等等。 2. 什么是计算机硬件?叙述计算硬件的基本组成部分和各自的功能。 3. 什么是计算机语言?叙述机器语言、汇编语言和高级语言的基本概念和主要特点。 4. 列举 C#语言中有哪些基本数据类型?分别叙述各种类型可以存放的数据。 将这些问题的答案书写在文档 Q01_2 Answer.html 中提交。 三、 二进制转换的问题。 1) 把下面的十进制数换算成二进制数和十六进制数 A)3257 B)237 C)458 D)898 2) 把下面的二进制数换算成十进制数和十六进制数 A)10011011 B)11101010 C)100011111 D)101010101 3) 把下面的十六进制数换算成十进制和二进制数 A)FFA8 B)10A8 C)24B0 D)11FC 将这些问题的答案书写在文档 Q01_3 Answer.html 中提交。 四、 编写"Hello, World"程序。 在 visual studio 2008 中编写"Hello, World"程序。编写完成后,先删除项目文件夹下的 bin 和 obj 目录,然后压缩整个项目文件为 zip 文件后提交。 程序外观如下: - 21 -
  • 22. 第 1 讲 开始编写程序 程序要求:  创建 winform 程序。  程序运行时显示一个对话框,在文本框中输入一个名字后,点击问候按钮将显示:你好, 某某某!  点击关闭按钮,将退出程序。 五、 编写 ShowPicture 程序。 使用 Windows 公共对话框打开一个图像文件,可以控制显示的大小和透明度。界面如下: 程序要求:  点击打开按钮时显示选择文件对话框选择某个图片文件,注意在文件对话框中使用文件扩 展名过滤属性只列出图片文件名,其他文件不显示出来。  窗口放大缩小时图片随着放大缩小。  点击关闭则退出程序的运行。  拖动透明标尺,可以改变图片显示的透明度。 - 22 -