我是自学前端的,下班后学习,我是2022年11月21号进前端的,已经一年一个月了,现在正在自考湘潭大学的计算机专业大专,这是《高级语言程序设计》,希望学完后,对我日后的计算机之路有所帮助。加油!!!
以下内容是我在背完,并理解后记下的,而不是直接对着内容打下来的。!!!
我进前端的路不是很容易,但我并不因此退缩,我是一个比较笨的人,但我依然希望通过自己的努力去过上自己想要的生活,我热爱计算机,我愿意为此付出巨大努力,并不懈地坚持
计算机程序
最初人们使用计算机,是希望它可以帮助人们完成一些工作,这时候就遇到两个问题了。一个是做什么,另一个则是怎么做。
做什么
对于做什么,就是要确定计算机程序的功能,这需要在第一阶段完成,这对于大型程序设计是特别重要的。
怎么做
对于怎么做到一件事,我们需要知道它的步骤,才可以一步一步执行,而这就是算法。
例如:今天9点要上班
算法:
步骤1:早上7点起床
步骤2:7:30吃早饭
步骤3:8:00钟出发
步骤4:9:00钟到公司并上班
上面就是为了要做到 今天9点要上班 这件事,而设定的算法,当然,这是简单的算法,而计算机上执行的往往是特别复杂的算法。而且在让计算机程序执行算法前,我们还需要将该步骤转换为二进制才可以执行。
算法
任何一个能够解决问题的算法都必须具备以下五个特性,即可执行性、确定性、有穷性、有输入信息的说明和有输出信息的步骤。
(1)可执行性
算法中的每一个步骤都是可以执行的。 例如:“帮我去超市买个面包”,这个步骤计算机是无法做到的,这就不是一个算法。
(2)确定性
算法中的每一个步骤必须都是明确定义的,不能有歧义性(不确定性)。 例如:“将两个数字做一个运算”,这就有歧义了。哪两个数字做什么样的运算呢? “将5和7加起来”,这样才算是明确定义。所以上面的也不是一个算法。
(3)有穷性
一个算法必须在执行有穷步骤之后结束。就是说算法的步骤序列要有结束的那一刻,否则就不是算法。
(4)有输入信息的说明
有的算法可以没有输入信息,然后绝大多数算法具有输入信息。
(5)有输出信息的步骤
既然算法是用来解决给定问题的,则一个正确的算法必须将人们关心的问题的答案输出。
人们在实践中总结了 易读、易懂、易修改和易扩充 的算法规则
- 利用自顶向下的方法设计算法
- 只利用 顺序、选择、循环 三种基本结构构造算法
- 具有优美的算法表达风格
走进算法
注:S 为步骤(Step)
题:计算 1 * 2 * 3 ... * 9 * 10
算法一:
S1 计算 1 * 2 ,得到结果 2
S2 计算 2 * 3 ,得到结果 6
S3 计算 6 * 4 ,得到结果 ...
...
S9 计算 362880 * 10 ,得到结果 3628800
这里分析后可以看到 每次要乘的数字是前一个数字加1,所以以上步骤可以优化
设置 t 为 被乘数,i 为乘数,将每次计算的结果保存在 t 中, 每次使 i + 1 ,这样就可以反复将以上步骤再次执行(循环),并设置一个跳出循环的判断。
算法二:
S1 使 t = 1
S2 使 i = 2
S3 使 t * i ,并将结果保存在t中,即 t * i => t
S4 使 i 的值加1,即 i + 1 => i
S5 若 i <= 10 则返回S3继续执行;否则,算法结束。最后得到值为t。
上面这种方式好的是,如果题目变成 从1乘到100,则只需要将S5的10,改为100就可以实现了。