细读《从问题到程序(第二版)》第一章学习总结

李磊20199131 细读《从问题到程序(第二版)》第一章学习总结

教材学习内容总结

  • 编程需要掌握的工作方式                  
    我们需要从问题的要求出发,从高层开始设计程序,并逐步分解程序功能。当程序所需的功能分解到一定的程序后,就可以借助程序语言的结构,描述程序工作中的细节步骤了。
  • 高级语言中两种基本的实现技术-编译和解释          
    编译:采用编译的方式实现高级语言:针对具体语言开发出一个翻译软件,它能将通过高级语言编写出来的程序翻译成能被计算机所识别的机器语言                            
    解释:针对具体语言开发出一个解释软件,它能将写好的程序学送给正在运行这个软件的计算机。 
                                 
    基于以上两种高级语言的实现方式,最常用的还是编译。
  • c语言的特点                        
    1)c语言比较简单,是一个比较小的语言;2)c语言提供丰富的程序机制;3)c语言提供了一套预处理命令;4)相对汇编语言效率更高。
  • 程序开发过程图
  • 程序中的错误                       
    编译程序中主要存在局部语法错误和程序里上下文关系的错误。另外,在程序执行的时候可能会出现一些警告,根据作者经验,警告预示着隐藏比较深的实际错误,必须弄清楚,不然可能会对整个程序产生致命的问题,必须确认警告无关紧要时,才方可留在那里。   
    程序运行中的错误可能是违反了系统环境的要求,也有可能是编程导致的死循环,或者数学逻辑上错误;还有一种情况是运行结果为达到预期要求也属于程序错误

教材学习中的问题和解决过程

  

  • 问题1:在使用VS编程时,发现软件编码使用的是UTF编码,解码后在窗口显示时所使用的解码是GBK,所以窗口上汉字的显示出现了乱码,因此引发思考。计算机程序的编写从问题机器语言发展到汇编语言,再突破到各式各样的高级语言,逐步切合人类的理解力,极大简化了编程。由于英文编程起步早以及方便性,至今基本全部还是在使用英文编程,为什么使用汉字实现编程普及如此困难?
  • 问题1解决方案:由于我们所使用的键盘都是输入字母,如果要用中文来写,首先还要通过输入法把那些字母转换成汉字,但是对于英文就不需要这层转化。于是,如果用中文,不得不说别说更容易理解,反而增加了麻烦,降低了效率。也就是说,谁方便快捷就选择谁,科技的发展跟国界和地域都没有太直接的关系,如果中文更好,自然有很多人使用中文。
        然而,中文编程虽然很早就出现过,为何却没有流行起来呢。首先,这与我国的计算机的技术有关,中国计算机技术发展相对于美国来说晚了一些。因此我国的编程套路早就形成了,也就是说,早就习惯于使用英文编写。即使能够开发一套中文编程,不仅需要很大的成本,想要拓展也是有一定难度的。而且,编程所需的技术要求也是很高的,我国现有的技术未必能开发出比英文编程更加实用的中文编程。也正因为如此,中文编程在某种程度上制约了我国发展。因为电脑不是中国发明的,编程也同样不是。

感悟                              
二读比第一次读理解更加深刻,后续继续加油

原文地址:https://www.cnblogs.com/lilei0915lgz/p/11764118.html

时间: 2024-10-12 10:51:05

细读《从问题到程序(第二版)》第一章学习总结的相关文章

对一千万条数据进行排序---编程珠玑第二版 第一章

本书第一章提出了一个看似简单的问题,有最多1000万条不同的整型数据存在于硬盘的文件中,如何在1M内存的情况下对其进行尽可能快的排序. 每个数字用4byte,1M即可存储250 000个数据,显然,只要每次对250 000个数据排序,写入到文件中即可,重复40次. 那么如何选出每次遍历的二十五万条数据呢?有如下两个策略: 1.对一千万条数据遍历40次,第i次遍历时,判断数是否属于[i*250000,i*250000+249999),如果是,则读入内存,当第i次遍历完成时,内 存中有了二十五万条数

The C Programming Language第二版第一章习题(部分)

1.8 编写一个统计空格,制表符与换行符个数的程序 1 #include <stdio.h> 2 main(){ 3 int c,nl,tl,kl; 4 nl=tl=kl=0; 5 6 while( (c=getchar()) != EOF ){ 7 if(c=='\n') 8 ++nl; 9 if(c=='\t') 10 ++tl; 11 if(c==' ') 12 ++kl; 13 } 14 printf("空格 换行符 制表符\n"); 15 printf("

具体数学第二版第一章习题(2)

16.令$n=2^{m}+t,0\leq t < 2^{m}$,即$n=({1b_{m-1}b_{m-2}...b_{2}b_{1}b_{0}})_{2}$.令$g(n)=A_{n}\alpha +B_{n}\gamma +C_{n}\beta _{0}+D_{n}\beta _{1}$ (1)设$\alpha =1,\beta _{0}=\beta _{1}=\gamma =0$,那么可以得到$g(1)=1,g(2n)=g(2n+1)=3g(n)$,所以$g(n)=3^{m}=A_{n}\al

Java 线程第三版 第一章Thread导论、 第二章Thread的创建与管理读书笔记

第一章 Thread导论 为何要用Thread ? 非阻塞I/O I/O多路技术 轮询(polling) 信号 警告(Alarm)和定时器(Timer) 独立的任务(Task) 并行算法 第二章 Thread的创建与管理 一.什么是Thread ? Thread是所在主机执行的应用程序任务(task). 只有一个线程的例子: public class Factorial { public static void main(String[] args) { int n = 5; System.ou

《C语言程序设计基础1》第二学期第一周学习总结

**<C语言程序设计基础1>第二学期第一周学习总结 一. 本周学习内容总结 一维数组,了解了一维数组的定义(定义一个数组,需要明确数组变量名,数组元素的类型和数组大小,即数组中元素的数量) 一维数组定义的一般形式为:类型名,数组名[数组长度] 类型名指定数组中每个元素的类型:数组名是数组变量的名称,是一个合法的标识符: 数组长度是一个整型常量表达式,设定数组的大小.数组是一些具有相同类型的数据的集合,数组中的数据按照一定的顺序排列存放.同一数组中的每个元素都具有相同的数据类型,有统一的标识符及

《lua程序设计(第二版)》学习笔记(二)

直接上代码 1: -- 第2章 类型与值 2: -- 动态类型的语言,每个值都携带自身类型信息 3: print("类型打印,每个值都携带自身类型"); 4: print(type("Hello world")); -- string 完全采用8位编码,字符可以具有任何数值编码,可以将任意二进制数据存储到字符串中 5: --[[ 6: string是不可变值,不能像C一样修改一个字符创中某个字符,而是应该 7: 创建一个新的字符串; 8: 和其他对象一样,都是自动内

《Python基础教程(第二版)》学习笔记 -&gt; 第十章 充电时刻 之 标准库

SYS sys这个模块让你能够访问与Python解释器联系紧密的变量和函数,下面是一些sys模块中重要的函数和变量: 函数和变量 描述 argv 命令行参数,包括脚本和名称 exit([arg])                退出当前的程序,可选参数为给定的返回值或者错误信息 modules 映射模块名字到载入模块的字典 path 查找模块所在目录的目录名列表 platform 平台标识符 stdin 标准输入流-- 一个类文件对象 stdout 标准输出流-- 一个类文件对象 stderr

《lua程序设计(第二版)》学习笔记(五)

-- 第 5 章 函数 -- 一种对语句和表达式进行抽象的主要机制 print(os.date()); -- 打印日期 Sun Apr 20 12:44:46 2014 -- 一看到sun,感慨广州没有晴天 -- 函数没有参数也要括号 -- 特殊情况:只有一个参数的时候, 并且参数一个string/table构造式,可不写括号 print "Hello world" -- dofile "chapter03.lua" -- 冒号操作符:为面向对象式的调用而提供的函数

《python基础教程(第二版)》学习笔记 字符串(第3章)

<python基础教程(第二版)>学习笔记 字符串(第3章)所有的基本的序列操作(索引,分片,乘法,判断成员资格,求长度,求最大最小值)对字符串也适用.字符串是不可以改变的:%左侧是格式字符串,右侧是需要格式化的值print '%s=%d' % ('x',100) ==> x=100%% 格式字符串中出现 %模板字符串:from string import Templates=Template('$x is 100');  s.substitute(x='ABC');  ==> '