程序设计,俗称编程,是一个比较专业的概念。初学者,甚至一部分开发人员,都不能很简单的解释这个概念,所以初学者觉得程序设计是一件很有科技含量或者是很高深的学科,其实这些都是误解。那么程序设计到底是什么呢?
程序其实就是把需要做的事情用程序语言描述出来。类似作家,就是把自己头脑中的创意用文字描述出来。所以学习程序,主要的三个问题是:做什么、怎么做和如何描述,具体如下:
1、做什么
做什么就是程序需要实现的功能。
2、怎么做
怎么做就是如何实现程序的功能,在编程中,称为逻辑,其实就是实现的步骤。
3如何描述
就是把怎么做用程序语言的格式描述出来。
所以,对于有经验的程序设计人员来说,学习新的程序设计语言的速度会比较快,就是因为第1和第2个问题基本解决了,只需要学习第3个问题即可了。
对于“做什么”的问题,可能初学者觉得会比较简单,其实在大型项目开发,例如ERP,企业都不能很详细的说明需要实现具体的功能,这就需要有专门的人员去发掘具体的功能,这个用程序的术语叫做需求分析。举个例子吧,例如某个人要找个女朋友,如果你大概去问他,他会说,找个中等的就可以了,但是这个还不是具体的需求,你可能需要问一下,要求女朋友的年龄是多少,身高是多少等等具体的问题。所以说,搞清楚“做什么”也不是简单的事情,需要专门的人员从事该工作。
对于“怎么做”的问题,是初学者,甚至很有经验的开发人员都头疼的事情,这个称作程序逻辑。因为实际的功能描述和程序设计语言之间不能直接转换,就像作家需要组织自己的思路和语言一样,程序设计人员也需要进行转换,而且现实世界和程序世界之间存在一定的差异,所以对于初学者来说,这是一个非常痛苦的过程,也是开始学习时最大的障碍。由于计算机自身的特点,“怎么做”的问题其实就是数据和 *** 作的问题,某个顶级大师曾经说过:“程序=数据结构+算法”,把这个问题描述的简单准确。那么“怎么做”的问题,就变成了持有那些数据,以及如何 *** 作这些数据的问题。先简单的介绍这么多,大家仔细体会吧。
对于“如何描述”的问题,是学习程序最容易,也是最枯燥的问题。其实就是学“透”一套格式,并且深刻理解语言的特点。学程序语言,就像学汉语差不多,需要学习字怎么写,学习语法结构等,只是不需要像汉语这样学那么多年,但是学好一个语言还是要耐得住寂寞。语法的学习需要细致,只有深刻领悟了语法的格式才能够熟练使用该语言。
前面介绍的是程序的概念,那么为什么叫程序设计,其实这个设计和现实中的设计一样。例如你自己盖个小棚子,只需要简单的规划即可,也就是编程中的小程序,而如果需要建造一栋大楼,肯定需要进行设计吧,程序也是这样。所以把编程叫做程序设计了。
看完上述的这些,你都了解了吗?想学习编程,又不知从何入手?那就来课课家教育,这里汇聚海量高清IT实战视频教程,涵盖30+技术领域,拥有编程语言,设计、web开发、华为认证等。不怕学不会,就怕你不学,课课家在线精品课程,一线专家讲授,24小时答疑,覆盖PC端以及手机,随时随地学习,给你一个新的学习体验。悄悄告诉你,课课家教育“五一·限时5折”活动火热预售哦!火速前往了解详情吧!
单片机是电子专业的核心课程,学习起来有一定的综合要求。
单片机需要软件编程基础,硬件方面的模电,数电基础,基础打好,后面上手实践学习会方便点
学习单片机需要的工具
1实验板(参考吴鉴鹰单片机开发板)
如果你对单片机还一无所知,那么自制或者购买一块实验板是比较好的选择。通常在实验板上会设计一些开关、LED指示灯、数码管、各种接口芯片等常用器件,通过对这些器件的编程练习,逐步掌握单片机的编程技术。
2仿真机
仿真机的用途是替代电路板上的单片机芯片,仿真机通过串行口、USB接口等方式与与PC机联机通信,接收PC端控制软件发出的指令,以单步、过程单步、全速运行等各种方式来执行程序,以单步或过程单步方式执行程时,每次执行完程序后可以将执行的结果反馈到PC端的控制软件中显示出来。由于单片机编程时必须要明确每一条指令执行完毕后会有什么样的结果,弄清实际运行后的结果是否与设想的结果相符,因此,仿真功能对于单片机的学习和开发可以起到很重要的帮助作用。
3编程器或者下载线
其用途是将代码写入单片机芯片内部。对于学习者来说,有了仿真机也可暂时不配编程器或下载线,因为有了实验板、仿真机就可以做实验了。但是建议配置一台,这样可以对单片机开发的各个环节都有所了解。
4万用表、电烙铁等电子制作工具
单片机开发,不是简单的编程,到目前为止,还少有纯粹的“单片机程序员”,通常要求开发者软、硬件方面都要熟悉,因此,这些电子制作工作还是要配备的。
需要说明的是,这里所说的仿真机、实验板、下载线或编程器等都是就一般概念而言的,并不涉及到具体的产品,市场上也有一些产品在设计时将实验板、仿真功能、下载或编程功能等中的一部分或者全部都集成到一块板上,构成一整套的实验系统。
学习单片机从哪开始
如果你已经有了上面的基础,你可以直接上手吴鉴鹰单片机开发板了
每个人的情况不一样,我下面的描述可能并不适合每一个看到这篇文章的人。
一、C/C++语言
如果你的基础很差, 建议不要一开始就学C++语言,从C开始学起,对程序有个初步的认识,循序渐进。C语言的书嘛,先买一本 300 页以内的,把书中的每一个例子都通过键盘敲打进去到 Visual studio里面去,然后单步执行,逐行调试去看各个变量的值。或者自行添加一些printf语句去输出变量的值。这样当你看完一本书后, 你就有编写小程序的感觉了。
记住,千万不要偷懒,不敲进去,自以为聪明, 能看懂, 或者直接从光盘复制。偷懒的代价是会花费更多的时间学习,最后还没有学会,给自己的自信心造成巨大打击,再也不想学程序了。
C语言看完一本书后,下来你就可以买一本C++的书看了。 C++的书也是一样, 必须300页以内的那种,不要一来就想学《C++ Primer中文版》这样的好书, 因为太厚了,怕你没有信心能够看完,即使你很有信心,花费一年的时间才看完,不值得。这种经典的厚的好书, 适合作为资料查阅,不适合挨个细节都看。
还是要提醒各位,一定要把书中的例子挨个敲打到电脑里面, 单步执行。一定不要从光盘复制, 一定要单步执行。
经过两本书的磨练, 估计你对C/C++肯定有比较深入的了解了, 下来应该可以进入实战了。
二、带界面的应用程序
学会了C/C++语言本身,可能还没有什么成就感,毕竟都是控制台的程序, 老是输出一串字符串, 整天面对各黑框框,成就感估计不是那么爽。要是能搞个带UI界面的程序就爽了。
下来就看个人的志向了, 如果走微软路线, 那你下来学MFC好了,如果要走开源路线, 那开源跨平台的界面库多得是。
通用的并且简单的就是 wxWidget 了, 官方网站为 >
因为在内存中你的a[],b[]两个数组是连续存放的,当你的b[]刚刚越界以后,它的数组结束符会占到a[]的位置里面,因此a[]可以看做是提前结束了,如果是第结束符在a[0]上那么a[]就什么也输出不了了,如果你的b[]越界多一点,a[]还可能输出一点东西
常见脱壳知识:1PUSHAD (压栈) 代表程序的入口点
2POPAD (出栈) 代表程序的出口点,与PUSHAD想对应,一般找到这个OEP就在附近拉!
3OEP:程序的入口点,软件加壳就是隐藏了OEP(或者用了假的OEP),
只要我们找到程序真正的OEP,就可以立刻脱壳。
开始正式介绍方法啦!!
方法一:
1用OD载入,不分析代码!
2单步向下跟踪F8,是向下跳的让它实现
3遇到程序往回跳的(包括循环),我们在下一句代码处按F4(或者右健单击代码,选择断点——运行到所选)
4绿色线条表示跳转没实现,不用理会,红色线条表示跳转已经实现!
5如果刚载入程序,在附近就有一个CALL的,我们就F7跟进去,这样很快就能到程序的OEP
6在跟踪的时候,如果运行到某个CALL程序就运行的,就在这个CALL中F7进入
7一般有很大的跳转,比如 jmp XXXXXX 或者 JE XXXXXX 或者有RETE的一般很快就会到程序的OEP。
方法二:
ESP定理脱壳(ESP在OD的寄存器中,我们只要在命令行下ESP的硬件访问断点,就会一下来到程序的OEP了!)
1开始就点F8,注意观察OD右上角的寄存器中ESP有没出现。
2在命令行下:dd 0012FFA4(指在当前代码中的ESP地址),按回车!
3选种下断的地址,下硬件访问WORD断点。
4按一下F9运行程序,直接来到了跳转处,按下F8,到达程序OEP,脱壳
方法三:
内存跟踪:
1:用OD打开软件!
2:点击选项——调试选项——异常,把里面的忽略全部√上!CTRL+F2重载下程序!
3:按ALT+M,DA 打开内存镜象,找到第一个rsrc按F2下断点,
然后按SHIFT+F9运行到断点,接着再按ALT+M,DA 打开内存镜象,找到RSRC上面的CODE,按
F2下断点!然后按SHIFT+F9,直接到达程序OEP,脱壳!
方法四:
一步到达OEP(前辈们总结的经验)
1开始按Ctrl+F,输入:popad(只适合少数壳,包括ASPACK壳),然后按下F2,F9运行到此处
2来到大跳转处,点下F8,脱壳之!
方法五:
1:用OD打开软件!
2:点击选项——调试选项——异常,把里面的√全部去掉!CTRL+F2重载下程序!
3:一开是程序就是一个跳转,在这里我们按SHIFT+F9,直到程序运行,记下从开始按F9到程序
运行的次数!
4:CTRL+F2重载程序,按SHIFT+F9(次数为程序运行的次数-1次
5:在OD的右下角我们看见有一个SE 句柄,这时我们按CTRL+G,输入SE 句柄前的地址!
6:按F2下断点!然后按SHIFT+F9来到断点处!
7:去掉断点,按F8慢慢向下走!
8:到达程序的OEP,脱壳
Exit 方法停止在所有线程上运行的所有消息循环,并关闭应用程序的所有窗口。该方法并不强制退出该应用程序
试试这几个:
EnvironmentExit(0)
SystemDiagnosticsProcessGetCurrentProcess()Kill();
以上就是关于为什么中国没有诞生程序设计语言呢全部的内容,包括:为什么中国没有诞生程序设计语言呢、单片机好学不、怎样自学C++,以成为程序员等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)