程序基础(一)

一、不忘初心,方得始终!

二、学习写程序中用到的一些基础性的知识和操作等,主要是对以下几个方面进行讲解。

三、重要掌握的知识点:函数的应用。

    (一)开发入门

  (二)变量和数据类型

  (三)运算符和表达式

  (四)流程控制

  (五)数组与集合

  (六)函数

  下面是我对每个点的重点理解和总结:

(一)开发入门

  1、从一段代码开始:在控制台中输出:Hello.World,主函数中的代码如下:console.WriteLine(hello.world);  

  2、计算机语言就是人与计算机沟通的语言,源代码是用某种计算机编写的内容,编译就是把源代码转换为机器代码。

  3、程序的开发过程:Code(编码)、 Compile(编译)、 Run(运行)。

    i. C#使用的编译器是csc.exe,编译的结果保存到exe文件中。

    ii.C#如何编译:打开运行对话框(win+r-->cmd)。打开编译器:cd  编译器地址 编译文件:csc  /out:编译后存放的路径  源代码位置。

  4、IDE(Intergrated Development Environment):集成开发环境,例如visual studio、webstorm等。

  5、主函数(main函数)又叫入口函数,程序启动时运行的函数,运行时,程序从上到下依次运行每一句代码,主函数运行结束后,程序结束。

  6、输出语句:向控制台的当前位置输出文本。代码输出方式:Console.Write("文本类容");表示向当前位置输出一短文本。Console.WriteLine("文本类容");表示向当前位置输出一段文本,然后换行。

(二)变量和数据类型

  1、数据类型是数据的概括,数据是指有用的信息,C#中常见的类型有char(字符),string(字符串),double(小数),int(整数)等。

  2、计算机中一切数据都由0(低电平)和1(高电平)组成。ASCII编码共占用8位,7位有效位,共可以编码128个字符。1字节=8位。

  3、认识变量;一块存放数据的内存空间,并且与该区域的数据内容可以变化,新的数据可以覆盖以前的。在代码中使用变量,必须先声明再赋值。变量的声明:指定一块内存空间,用于存放。

  变量的声明:数据类型 变量名;

  变量的赋值:  变量名=数据;(將数据存放到变量)

注意:  

  变量名在声明和赋值时要完全相同。

  声明的类型和赋值的类型要完全相同。

  4、变量的命名: 给变量取的名称。

  硬性要求:只能由数字,字母,下划线组成,变量名不得以数字开头,名称不能与关键词相同,同一个函数中变量名不得相同。

  软性要求:变量名要望文知意,变量名首字母要小写,除第一个单词外其他单词字母要大写。(驼峰命名法)

  5、变量的使用技巧:i.对多个同类型的变量声明,可以在一条声明语句中完成。ii.在声明时初始化。

  6、变量的三要素:数据类型、变量名、变量值。(三要素缺一不可)

  7、数据运算:支持运算(+),(—),(*),(/),(%)返还类型与运算类型相同。 运算类型 int与int类型运算 返还类型:int。double与double类型运算 返还类型:double。double类型与int类型运算返回类型:double。

  8、运算类型: 將一个类型的数据转换成另一个新的类型的数据,原数据不变。任意类型转换 string。待转换的数据.ToString(); 返回类型:string。

  类型转换总结图:

                       

  double 互转 int:

  取值范围小的数字类型转化取值范围大的数字类型用隐式转换,不需要额外的代码,计算机自动完成转换。

  取值范围大的数字类型转化取值范围小的数字类型用显式转换 需要编写额外代码,计算机不会自动转换。

  double转换为int:int(带转换的字符);

  int转换为double:直接写成int a=b(b是double类型);

  string 转换 数字类型,string 转换 int,int.Parse(待转换的字符串)。

  string 转换 double double.Parse(待转换的字符串),返回类型:double。

       补充:数字类型

                             

                         

  9、转义符: (换行符)、 (制表符)、\(转移符,输出斜杠)。

  10、代码注释:单行文本注释(//注释内容)、多行文本注释(/***注释类容**/)、文档注释(在函数签名前面输入///,系统会自动补全)。

(三)开发入门

  1、运算符和表达式:运算符(操作符)是一个用于运算的符,他作用于一个或多个操作符。

  2、逻辑运算符:用于判断真假,返回的值为false或者true。常见逻辑运算符。&&,两个bool类型进行运算时,真真为真 其他为假。||,两个bool类型进行运算,假假为假 其他为真。! 除了他是一元运算符其他全是二元运算符。bool类型 用于表示真假两种状态的类型  true和false。

  3、位运算符:用于进制运算。常见的有:&与、|或、^异或、<<左移、>>右移、~取补。

     位运算总结图:

                           

  4、算数运输符:+,-,*,/,%,++,--。书写方式:变量名++,计算返回结果,与变量相同,將变量的值自增1 。书写方式:++变量名,计算返回结果为变量值变量值加1,將变量的值自增1。

  5、赋值运算符:=,+=,-=,*=,/=,%=,他意思是x+=运算代码  x=x+运算代码。赋值符号不能用于变量初始化  返回结果与变量值相同。

  6、三目运算符:操作数1 ?操作数2 : 操作数3,操作数1必须是bool类型,其他可以任何类型,但操作2和操作3类型必须相同,如果操作数1判断为真,操作数2为返回结果

如果操作数1判断为假,操作数3位返回结果。

  7、常见的运算符(小括号)()用于:类型转换、改变运算顺序、函数调用。

  8、表达式:一条有意义的语句,并且该语句至少包含一个操作数和一个操作符 ,每一个表达式都有一个返回类型,每个表达式都可以与其他表达式进行运算,只要类型符合要求。

  9、使用多个运算符的常见场景:

     i.赋值运算,永远最后运行。数字运算,按照数学中的运算顺序进行。

     ii.类型转换和函数调用,这里的类型转换是指显式转换。

     iii.使用多个运算符的常见场景,逻辑运算,在逻辑运算时,將&&和||符号两端的表达式看做一个整体。

     iv.其他运算,在不知顺序的情况下,使用小括号或分开书写来控制运算顺序。

     v.三目运算,a>b?"123":b.ToString();//如果a>b,则取123的结果,否则取b.ToString();

(四)流程控制

  1、流程图:使用标准化的图形方案,分析某个功能的实现步骤

  2、常见的流程控制语句分类

    类别         关键字                      

    选择语句      if、else、switch、case

    循环语句      do、for、foreach、in、while

    跳转语句      break、continue、default、goto、return

  3、if判断流程控制语句 。代码格式:

      if(条件1){

      } else if(条件2){

      }else(条件3){

      }

  表示如果条件1成立,则执行代码,否则判断2是否成立,如果成立则执行代码2,如果都不成立,执行代码N,如果某个大括号只有一句代码,则可以省略掉。

  4、变量作用域,可以简单的理解,某个变量在定义所在的大括号,在大括号内,该变量有效,大括号外无效,在某个位置定义变量的时候,变量名不得与作用域覆盖该位置的变量名相同。

  5、switch循环 代码格式:

      switch(变量或表达式):

        case 值1:代码1;

        break;

        case 值2 :代码2;

        break;

        default:代码N;

        break;

  先计算变量或表达式的值,將该值从上到下依次和case后面的值进行比较,若与某一个case后面的值相同,则运行该case下面的代码,若与所有的case后面的值都不相同,则运行default后面的代码 。

  6、while循环 表达意义,如果代码为真,则执行循环体,之后再判断是否为真,就这样一直执行下去,直到为假,才结束。返回类型必须是bool类型。

  7、do while循环: 先执行循环体,再判断条件是否满足,如果满足则执行,再判断,直到为假才结束。

  8、for循环:运行表达式1,判断是否为真,如果为真则执行循环体,执行完再运行表达式2,接着在判断循环条件,直到为假才结束。

     示例:打印九九乘法表

        for (int i = 1; i <= 9; i++){
          for (int j = 1; j <= i; j++){
            Console.Write(j + "*" + i + "=" + i * j + " ");
        }
          Console.WriteLine();
        }

              Console.ReadLine();

  9、break和continue。

     i.break,立即结束当前循环。

     ii.continue,立即结束当次循环,进入下一次循环。

  10、查找问题,根据需求,在一组数据中找到需要的数据。

  11、简单查找 在样本中一次寻找目标数据,循环一点是从样本的第一个数据开始,在到达样本最后一个数据后结束,循环中一定包含一个判断,给判断用于判断当前的数据是否是目标类型。

(五)数组与集合

  1、数组,能存放任意多个同类型的数据 单个的数据叫做数组项 排序的名称叫做 索引(下标) 从0开始,依次为数组中每一个数组编号 int类型。

  2、声明:数据类型[ ]变量名 赋值:变量名=new 数据类型[长度];

  3、一个数据创建和它每一个数组项的值为数组项类型的默认值。数据项的读取与修改。读取:变量名[索引]。修改:变量名[索引]=值;。

  4、读写数据的长度 ,变量名.Length定长性,一个数组在创建后它的长度固定不变  。

  5、数组的遍历 是指从数组的第一场开始依次取完数组的所有项 ,要实现数组的遍历,可以使用循环,循环变量从0开始,依次取到数组的最大下标(数组的下标-1),在循环中使用循环变量作为下标即可取出数据每一项的值。

  6、集合,List<数据类型> 变量名;赋值:变量名=new List<数据类型>();。添加元素:变量名.Add(要添加的数据)(在集合的后面添加元素);插入元素:变量名.Insent(索引,要插入的数据)(在集合指定位置插入元素)

  7、删除元素:变量名.RemovAt(索引)(删除指定下标的元素)变量名.Remove(数据)(删除集合中第一个位置出现的数据);修改元素 ,变量名[索引]=值;元素。  获取集合的长度:变量名.Count。

       集合的操作总结图:

                      

  8、foreach循环,只能用于遍历数组或集合,代码格式:foreach(数据类型  变量 in 数据或集合)

  for和foreach的对比:

       for:可以用于任何形式的重复行为、在循环体中,可以进行任何操作、遍历速度慢,执行效率低。

         foreach:只能用于遍历、不能更改循环目标、遍历速度快,执行效率高。

(六)函数

  1、认识函数:函数用于解决重复代码,难以阅读。好处:具有独立功能,并能通过名称重复使用的代码。减少重复代码,并使代码简洁易读。

  2、函数的声明必须在class中。

  3、函数的声明和调用:

     声明:函数的声明是指给一段代码取名称。

            static void 函数名(){
            //函数体
            }

     调用:函数的调用是指通过函数名称去执行函数体。

           语法:函数名();

  4、作用域和标识符:
  作用域:一个变量,仅在它所定义的大括号中有效;不同作用域中的变量,拥有独立的内存空间;当作用域结束时,该变量的数据会从内存中移除。

  标识符:变量名,函数名,类名,接口名,委托名,其他;必须符合标识符的命名规范(驼峰命名法)(变量名 首字母小写)(函数名 首字母大写);注意:标识符必须有数字、字母、下划线组成,并且不能以数字开头,若不满足该要求,则出现编译错误;除标识符本身的要求外,不同的标识符有自己的特殊要求。

  5、 声明带参数的函数:要完成一件事,需要知道的额外条件。书写语法:数据类型 参数名,数据类型,参数名......

    static void Add(int a,int b){
    //输出a+b的结果
    }

    声明函数时,参数必须包含数据类型和参数名,在函数体中,可以将参数当做变量使用。

  6、调用带参数的函数:

  调用语法:函数名(参数列表)

 

  函数去完成一件事时,如果需额外的条件,就必须声明函数;声明函数时,必须指定每个形参的类型和名称;调用函数时,实数的数量和类型必须和形参匹配;实参和形参相互独立。

  7、 声明带返回值的函数:

  函数的声语法:

      static 返回类型 函数名(形参列表){
      函数体
      }

  8、调用带返回值的函数语法:函数名(实参列表)。

  9、函数签名:函数签名是一个函数的函数名、参数列表、返回类型的统称。

  10、学习函数的关键在于编写正确的函数签名,对于函数实现者者,仅需要知道函数签名即可,函数签名,是函数体要实现的目标。对于函数调用者,也仅需要知道函数签名即可。

    示例:

        //从指定的连接地址下载文件,保存到指定路径
        static void DownFile(string fileUrl,string savePath)

  11、可使用文档注释来解释模糊的函数签名。

  12、函数重载(overload),多个函数可以使用同一个函数名;重载的条件是参数的数量或者类型不同;重载的作用是降低调用难度;当调用重载的函数时,计算机会根据实参自动匹配。

  13、函数的相互作用:在任何函数体中,都可以调用函数。只要代码运行到调用的函数的语句,就会去执行调用的函数体。

  14、递归:是指在函数体中直接或间接的调用自身;递归必须有终止条件,否则,将会出现无限递归;无限递归会耗尽内存,导致程序崩溃,必须避免。

 

原文地址:https://www.cnblogs.com/wgl0126/p/7397688.html