4.1布尔逻辑

  布尔比较运算符

  ==  !=   <   >    <=    >=

  处理布尔值的布尔值运算符

  ! & | ^(异或)

  条件布尔运算符

  &&   ||  比&和|性能更好    比如&&只需判断前面的布尔值为false,整体值就为false,不用计算后面的布尔值

  1.布尔赋值运算符

    &=  |=  ^=

  2.按位运算符

    &  |  ^  ~

    位移运算符 >>  <<

    位移赋值运算符>>=   <<=

  3.运算符优先级(更新)

    ++,--(用作前缀);(),+,-(一元),!,~

    *,/,%

    +,-

    <<,>>

    <,>,<=,>=

    ==,!=

    &

    ^

    |

    &&

    ||

    =,*=,/=,%=,+=,-=,>>=,<<=,&=,^=,|=赋值运算符

    ++,--(用作后缀)

4.2 goto语句

  goto  <labelName>

4.3 分支

  1.三元运算符

    ? :

  2.if语句

    if(){}else{}

  3.switch语句

    switch()

    {

      case val1:……;break;

       case val2:……;break;

       ……

       default:如果没有匹配的val值,有default,执行default中的代码

    }

    声明常量:指定变量类型和关键字const,同时必须给它们赋值。

4.4.循环:重复执行语句

  1.do循环

    do

    {先执行一次判断while()内的值,为true则再次执行,false退出循环

    }while();

  2.while循环

      while(){}先判断while()内的值,true才开始执行

  3.for循环

    for(int i=0;i<4,i++){}

  4.循环中断

    break:立即终止循环

    continue:立即终止当前循环,进入下一次循环

    goto:跳出循环到指定标记位置上

    return:跳出循环及包含该循环的函数

  5.无限循环

    while(true){}    利用break等退出


Mandelbrot集合示例(书中给出的示例代码用C#)

  1. class Program
  2. {
  3. //Mandelbrot图像中的每个位置都对应于公式N=x+y*i中的一个复数。其实数部分是x,虚数部分是y,i是-1的平方根。图像中各个位置的x和y坐标对应于虚数的x和y部分
  4. //图像中的每个位置用参数N来表示,它是x*x+y*y的平方根。如果这个值大于或等于2,则这个数字对应的位置值是0。如果参数N的值小于2,就把N的值改为N*N-N(N=(x* x-y* y-x)+(2*x* y-y)*i)),并再次测试这个新N值。如果这个值大于或等于2,则这个数字对应的位置值是1。这个过程一直继续下去,直到我们给图像中的位置赋一个值,或迭代执行的次数多于指定的次数为止。”
  5. static void Main(string[] args)
  6. {
  7. //N的实数和虚数部分
  8. double realCoord, imagCoord;
  9. //存储计算过程中的临时信息
  10. double realTemp, imagTemp, realTemp2, arg;
  11. //记录在参数N(arg)等于或大于2之前的迭代次数
  12. int iterations;
  13. //选择合适的边界值来显示Mandelbrot图像的主要部分,如果想放大这个图像,可以放大这些边界值。
  14. for (imagCoord = 1.2; imagCoord >= -1.2; imagCoord -= 0.05)
  15. {
  16. //两个for循环处理图像中的一个点,给N指定一个值。
  17. for (realCoord = -0.6; realCoord <= 1.77; realCoord += 0.03)
  18. {
  19. //初始化变量
  20. iterations = ;
  21. realTemp = realCoord;
  22. imagTemp = imagCoord;
  23. arg = (realCoord * realCoord) + (imagCoord * imagCoord);
  24.  
  25. //2是4的平方根,所以仅计算x^2+y^2的值,while循环执行迭代,
  26. while ((arg < ) && (iterations < ))
  27. {
  28. //N*N-N的实数部分
  29. realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp)
  30. - realCoord;
  31. //N*N-N的虚数部分
  32. imagTemp = ( * realTemp * imagTemp) - imagCoord;
  33. realTemp = realTemp2;
  34. arg = (realTemp * realTemp) + (imagTemp * imagTemp);
  35. //当前点的值存储在iterations中
  36. iterations += ;
  37. }
  38.  
  39. //选择要输出的字符
  40. switch (iterations % )
  41. {
  42. case :
  43. Console.Write(".");
  44. break;
  45. case :
  46. Console.Write("o");
  47. break;
  48. case :
  49. Console.Write("O");
  50. break;
  51. case :
  52. Console.Write("@");
  53. break;
  54. }
  55. }
  56. //内层循环结束后需要结束一行,所以输出换行符。
  57. Console.Write("\n");
  58. }
  59. Console.ReadKey();
  60. }
  61. }

演示结果为:

章节习题要求用户输入图像的边界,并显示选中的图像部分。当前代码输出的字符应正好能放在控制台应用程序的一行上,考虑如何使每个选中的图像正好占据

大小相同的空间,以最大化可视区域。

  1. class Program
  2. {
  3. //Mandelbrot图像中的每个位置都对应于公式N=x+y*i中的一个复数。其实数部分是x,虚数部分是y,i是-1的平方根。图像中各个位置的x和y坐标对应于虚数的x和y部分
  4. //图像中的每个位置用参数N来表示,它是x*x+y*y的平方根。如果这个值大于或等于2,则这个数字对应的位置值是0。如果参数N的值小于2,就把N的值改为N*N-N(N=(x* x-y* y-x)+(2*x* y-y)*i)),并再次测试这个新N值。如果这个值大于或等于2,则这个数字对应的位置值是1。这个过程一直继续下去,直到我们给图像中的位置赋一个值,或迭代执行的次数多于指定的次数为止。”
  5. static void Main(string[] args)
  6. {
  7. //N的实数和虚数部分
  8. double realCoord, imagCoord;
  9. double realMax = 1.77;
  10. double realMin = -0.6;
  11. double imagMax = -1.2;
  12. double imagMin = 1.2;
  13. double realStep;
  14. double imagStep;
  15. //存储计算过程中的临时信息
  16. double realTemp, imagTemp, realTemp2, arg;
  17. //记录在参数N(arg)等于或大于2之前的迭代次数
  18. int iterations;
  19. //选择合适的边界值来显示Mandelbrot图像的主要部分,如果想放大这个图像,可以放大(其实是减小)这些边界值。
  20. while (true)
  21. {
  22. //设定跨度以保证每个选中的图像正好占据大小相同的空间,以最大化可视区域。
  23. realStep = (realMax - realMin) / 79;
  24. imagStep = (imagMax - imagMin) / 48;
  25. for (imagCoord = imagMin; imagCoord >= imagMax; imagCoord += imagStep)
  26. {
  27. //两个for循环处理图像中的一个点,给N指定一个值。
  28. for (realCoord = realMin; realCoord <= realMax; realCoord += realStep)
  29. {
  30. //初始化变量
  31. iterations = ;
  32. realTemp = realCoord;
  33. imagTemp = imagCoord;
  34. arg = (realCoord * realCoord) + (imagCoord * imagCoord);
  35.  
  36. //2是4的平方根,所以仅计算x^2+y^2的值,while循环执行迭代,
  37. while ((arg < ) && (iterations < ))
  38. {
  39. //N*N-N的实数部分
  40. realTemp2 = (realTemp * realTemp) - (imagTemp * imagTemp)
  41. - realCoord;
  42. //N*N-N的虚数部分
  43. imagTemp = ( * realTemp * imagTemp) - imagCoord;
  44. realTemp = realTemp2;
  45. arg = (realTemp * realTemp) + (imagTemp * imagTemp);
  46. //当前点的值存储在iterations中
  47. iterations += ;
  48. }
  49.  
  50. //选择要输出的字符
  51. switch (iterations % )
  52. {
  53. case :
  54. Console.Write(".");
  55. break;
  56. case :
  57. Console.Write("o");
  58. break;
  59. case :
  60. Console.Write("O");
  61. break;
  62. case :
  63. Console.Write("@");
  64. break;
  65. }
  66. }
  67. //内层循环结束后需要结束一行,所以输出换行符。
  68. Console.Write("\n");
  69. }
  70. //当前边界值
  71. Console.WriteLine("Current limits:");
  72. Console.WriteLine("realCoord:from {0} to {1} ", realMin, realMax);
  73. Console.WriteLine("imagCoord:from {0} to {1} \n", imagMin, imagMax);
  74.  
  75. //输入新的边界值
  76. Console.WriteLine("Enter new limits:");
  77. //实数
  78. Console.WriteLine("realCoord:from:");
  79. realMin = Convert.ToDouble(Console.ReadLine());
  80. Console.WriteLine("realCoord:to:");
  81. realMax = Convert.ToDouble(Console.ReadLine());
  82. //虚数
  83. Console.WriteLine("imagCoord:from:");
  84. imagMin = Convert.ToDouble(Console.ReadLine());
  85. Console.WriteLine("imagCoord:to:");
  86. imagMax = Convert.ToDouble(Console.ReadLine());
  87.  
  88. }
  89. }
  90. }

原边界(-0.6,1.2)  (1.77,-1.2)

现边界(-0.6,1.2) (0,0)

相当于放大了原来的图像的一部分:大概是这一部分?目前只能理解到这个程度了

C#入门经典 Chapter4 流程控制的更多相关文章

  1. JAVA入门基础及流程控制

    JAVA入门基础及流程控制 数据类型 位 存储单位 eg:0001 0011 八位 字节 byte 处理数据单位 一字节等于八位 eg:1b=0011 0001 类变量: static int num ...

  2. Shell入门教程:流程控制(1)命令的结束状态

    在Bash Shell中,流程控制命令有2大类:“条件”.“循环”.属于“条件”的有:if.case:属于“循环”的有:for.while.until:命令 select 既属于“条件”,也属于“循环 ...

  3. Python 入门基础3 --流程控制

    今日目录: 一.流程控制 1. if 2. while 3. for 4. 后期补充内容 一.流程控制--if 1.if判断: # if判断 age = 21 weight = 50 if age & ...

  4. 【重点】Shell入门教程:流程控制(3)条件判断式的真假值

    之前曾提到,在Bash中什么是真什么是假,是以命令的结束状态是否为0来做判断.传回0,即为真:传回非0,即为假. 在Bash中,这种可以影响程序流程的式子,称为条件判断式.判断式的操作数分成“单元”及 ...

  5. Shell入门教程:流程控制(5)for 循环

    for循环的运作方式,是将 串行 的元素的元素一一取出,依序放入制定的变量中,然后重复执行含括的命令区域(在 do 与 done 之间),直到所有元素取尽为止. 其中,串行是一些字符串的组合,彼此用 ...

  6. Shell入门教程:流程控制(6)while 循环

    while循环的语法: while 条件测试 do     命令区域 done 举例: #!/bin/bash declare -i i=1 declare -i sum=0 while ((i< ...

  7. Java入门教程三(流程控制)

    概述 程序有 3 种结构:顺序结构.选择结构和循环结构.分别为:if elseswitch case,while与do while,for, foreach,return,break ,continu ...

  8. 【重点】Shell入门教程:流程控制(2)条件判断的写法

    第三节:条件判断的写法 if条件判断中,if的语法结构中的“条件判断”可以有多种形式.测试结果是真是假,就看其传回的值是否为0. 条件测试的写法,有以下10种: 1.执行某个命令的结果 这里的命令,可 ...

  9. Shell入门教程:流程控制(4)case 条件判断

    case的语法结构: case 待测项 in 样式串1] 命令区域1 ;; (样式串2) 命令区域2 ;; 样式串3) 命令区域3 ;; *) 命令区域 ;; esac 命令区域,可以是单一指令或多行 ...

随机推荐

  1. 九度oj 题目1046:求最大值

    题目1046:求最大值 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:11782 解决:4789 题目描述: 输入10个数,要求输出其中的最大值. 输入: 测试数据有多组,每组10个数. ...

  2. Display PowerPoint slide show within a VB form or control window

    The example below shows how to use VB form/control as a container application to display a PowerPoin ...

  3. fetch api & response header

    how to get fetch response header in js https://stackoverflow.com/questions/43344819/reading-response ...

  4. hdu 2647拓扑排序 容器

    #include<stdio.h> #include<queue> #include<vector> #include<iostream> using ...

  5. Prime Land(poj 1365)

    题意:这题题意难懂,看了题解才知道的.比如第二组sample,就是5^1*2^1=10, 求10-1即9的质因数分解,从大到小输出,即3^2.本来很简单的嘿,直接最快速幂+暴力最裸的就行了. #inc ...

  6. codevs4419 FFF 团卧底的菊花

    题目描述 Description FFF 团卧底在这次出题后就知道他的菊花可能有巨大的危险,于是他提前摆布好了菊花阵,现在菊花阵里有若干朵菊花,出现次数最多的那一朵就是出题人的,你的任务是需要找出出题 ...

  7. Linux 安装 RabbitMQ

    转载文章,地址:https://www.cnblogs.com/uptothesky/p/6094357.html 侵删!

  8. Ubuntu18.04卸载lnmp

    1.卸载 apache2 sudo apt-get --purge remove apache2* sudo apt-get autoremove apache2 (--purge 是完全删除并且不保 ...

  9. Install nginx-clojure on CentOS 7

    Install nginx-clojure on CentOS 7 1. install open-jdk-7 sudo yum install java-1.7.0-openjdk-devel 2. ...

  10. 1. 数组之差TapeEquilibrium Minimize the value |(A[0] + ... + A[P-1]) - (A[P] + ... + A[N-1])|.

    数组之差 package com.code; public class Test03_3 { public static int solution(int[] A) { int size = A.le ...