也谈零基础学编程,需要学什么

news2024/12/23 0:30:21

也谈零基础学编程,需要学什么

  • 零基础人群
  • 语法
    • 1、注释
    • 2、变量
      • 2.1 变量命名
      • 2.2 数据类型
      • 2.3 类型强度
    • 3、 运算符
    • 4、流程控制与代码块
    • 5、函数和方法
    • 6、类
  • 算法
  • 学会使用第三方库
  • 小结

零基础人群

现在开发语言各种各样,越来越多,尤其是 python ,被广大人群称为最容易上手的开发语言,于是不少小伙伴在完全没有相关知识的情况下,直接开始自学起了 python ,但是,学的是步履蹒跚,举步维艰的样子。

这几天,在新星计划,Dream 导师的 python 基础赛道里,有个完完全全的零基础小伙伴开始自学,还特意给自己画了个脑图。。。老顾当时都惊呆了啊。

但是观察了一段时间,发现小伙伴还是不得其法,学习中充满了迷茫。

那么,老顾就以资深咸鱼的资格,说说老顾对零基础开始学习的人,应该学什么做一些议论。

CSDN 文盲老顾的博客,https://blog.csdn.net/superwfei

语法

学任意一门语言,都是从语法开始学习的,在学习语法的过程中,学习一些基础的单词(关键字),用来实现对应的语法。老顾在《python 基础系列篇:一、基本语法与基础数据类型》一文中,大略的说了一些语法问题,但是不够完整。这里老顾把老顾自己知道的语法都列举一下,让小伙伴们知道,后续会用到什么样的内容。

1、注释

书写在代码内,但是在运行时不会被执行的内容,通常具有特殊定义方式
例如,在 python 中,用 # 号作为注释
在 asp/vb 中,以单引号 ’ 表示注释,也可以写作 rem
在 c 系语言中,一般用 // 表示注释,或者 /* */ 来表示范围注释
当然,也会有其他各种各样的注释方式,注释的内容,一般是为了增强可读性,描述当前,或者后续的内容是做什么的

2、变量

用以记录数据的字符,其记录的内容会因计算或赋值发生改变。

2.1 变量命名

多数语言有有一个变量命名规则:数字字母下划线构成,且不得以数字开头。
当然,现在命名规范没那么严格了,除了不能用各种运算符,以及继续不得以数字开头外,其他规范放宽了。
比如,在 python 里,计数 = 0 ,这里计数就是一个变量了,这个命名是合法的

2.2 数据类型

计算机编程,就是对各种数据进行运算的一个过程,那么对于数据,就一定要表示出其类型来,否则,别说计算机了,就连人类自己,也不一定能猜出,某个数据到底是啥玩意,比如这样一串字符:202305,那他到底是表示的年月呢,还是表示的一个数字呢?又或者是一个邮政编码?更或者,是一个行政区划编码?

对于数据类型,在计算机中有严格的描述方式,不同的数据类型,可以使用的运算符也不同,需要自己了解后才能继续。这里列举一些常见的。

数值型
大多数语言中,数值型至少分做两个类型,整数型和浮点型,浮点型的意思就是有小数。其次,有些语言会划分的更多,比如短整型,长整型,无符号整型,单精度浮点,双精度浮点等等。

字符型
所有计算机编程,输入和输出部分,必定是字符或者字符串型,开发语言会自动将其转为计算机可处理的方式。这里字符型和字符串型又有不同,字符型一定是单字符,而字符串,则是有多个字符组成的一个字符序列。
对于不同的语言,有不同的实现方式。
比如 python 中没有严格区分字符型和字符串型,都是 str,可以用单引号定义,双引号定义,甚至三引号定义字符串。
而 c# 中,单引号定义字符型,双引号定义字符串型。
而对于字符串,还有各种不同的修饰,原因是有些不可见的符号,我们需要通过转义来进行定义,比如换行,比如回车,\r \n 之类的符号,于是产生了一个问题,比如 \ 到底怎么定义,于是约定 \ 也需要转义,变成 \\。
而有些时候,我们不希望其转义,那么就需要加上非转义修饰,比如 c# 中 @“\n”,python 中 r’\n’ 之类的,看各自语言如何定义字符串修饰。

布尔型
也就是逻辑型,只有两个值:真/假,通常写作 true/false,一些弱类型的语言环境中,可以用 0、undefine、null、None、0长度字符串等方式来表示假,其他数据表示真,需要注意大小写,python中,写作 True/False。

日期型
一个比较特殊的数值数据,由于计算机发展也没有太久的年头,所以一般规定,以 1900年1月1日零时零分零秒作为起始时间,用一个整数来表示与这个时间的差值,也就是所谓的时间戳,将这个时间戳转成一个对象,包含年份,月份日期等数据的对象,就是日期型了。当然,不是所有的日期都是1900开始的,也有部分语言是从1970年计算的,咱也不知道为什么。

数组型
将多个数据放在一起,可以由索引/下标来进行次第访问的数据,称为数组,不可通过索引/下标访问,且其中数据无重复的,仅仅能通过枚举/迭代访问其内容的,称为集合。在不同的语言中,对数组都有各自的扩展,比如 python 就有list、tuple等,c# 有 icollection 接口实现的可变长数组/列表。

词典型
也是在不同语言,各有实现的方式,词典型与数组型的区别就在于,不再使用索引/下标来访问其内数据,而是通过键名来访问数据,通常类似的有dict、Dictionary、Hashtable、Map 之类的各种实现。

以及其他各种语言自身实现的各种奇奇怪怪的数据类型。

2.3 类型强度

在不同的语言中,对于数据类型,有着不同的验证机制,一般分作强类型,弱类型,无类型三种。

强类型
变量需要声明,在声明时给定数据类型,后续运算严格按照数据类型进行。
弱类型
变量需要声明,但在后续使用中,可以发生类型变化。
无类型
嗯,以数据类型为准,变量自身无类型。比如 python 这样的。

3、 运算符

在了解了类型后,对于不同的类型有不同的运算符,这个没有捷径,只能死记硬背了。

a = 1 赋值运算,将数值1存放到变量 a 中
a ++ 自加运算,c 系语言一般都支持,相当于 a = a + 1,这里需要注意 ++a 和 a++ 的区别,一个是先运算后使用,一个是先试用后运算
a += 2 自加运算,大多数语言都支持,相当于 a = a + 2
a == 1 比较运算
a === 1 严格比较运算,除了值之外,还要比较类型

后续不再列举,自行了解即可。基本上每个语言的教程里,都有详细的说明,这些需要完整的记住。

4、流程控制与代码块

流程控制,顾名思义,那就是控制代码运行顺序的一种指令,比如常见的循环 while、for、until、loop 之类的,比如常见的分支 if else、switch case等。以及不太推荐使用的 goto 之类的。

在理解流程控制之前,我们要明白,计算机的程序,是一行一行次第运行的,而流程控制,则是为了改变这种情况,可以将某些部分多运行几次,或者不符合预期的不运行这个样子。

// javascript
// 在控制台输出 0-9 的 10 个数字
for (var i = 0;i < 10;i++) console.log(i)

对于缺失花括号的地方,如果本行后有内容,则本行后所有内容默认为一个代码块,否则,以下一行为默认代码块(仅仅一行哦,和缩进没关系)。

在绝大多数编程语言中,我们使用花括号 {} 来表示一个代码块,代码块内的变量,其生存周期仅在该块结束前有效,在 python 中,则用缩进来表示代码块。

Hmmm,参考老顾以前的文章即可。

5、函数和方法

对于大量的可复用的代码,通常,我们会将其单独定义为一个方法或者一个函数,避免每次用到相同运算的地方都重新写一遍或复制出来一份,除了代码臃肿之外,最大的缺陷是,当算法进行调整的时候,这种不可复用的代码维护起来非常困难,因为在之后,你自己都不一定记得到底复制了几个地方。

为了减少维护难度,所以,代码的复用性是一个代码是否优秀的评判标准之一。

对于函数和方法,需要理解形参和实参的概念,也可以参考其他人的文章,或老顾之前的文章。

6、类

刚才说到了函数和方法,通常,对于某一类相关的函数、方法,我们会封装到一个大类中,然后引用该类,并用点符号,来引用类中所定义的各种方法或函数。

比如 python

import re
x = re.findall(r'\d+','123 456 789')

这段代码就表示,引入 re 包,使用 re 包中,findall 函数

基本上,除了 javascript 外,其他语言都是仅仅能调用预定义内容,而 javascript 则可以用点语法调用 object 中所定义的键名,很是逆天。

算法

在了解并牢记了以上的内容后,需要从算法开始学起,《算法,离你并不遥远》一文中,老顾也提到了,不必一定要买本算法书去啃,学会拆分问题,分析问题,解决问题,才是算法的根本目的。

比如最简单的排序方法,就有各种各样的算法,可以去尝试理解其思路,其内在逻辑,变量数据是怎么变动的,运算流程是怎么控制的,只有理解了这些,你才会在学习的过程中,培养出编程的思路来。

如果仅仅是抄代码并运行成功,其实并没有多大用处。除非封装好的包,我们只需要调用其方法,其他所有需要我们进行控制的代码,我们都需要明确的知道,我们需要怎么一步一步的实现其运算。

以最简单的例子来说明,我们需要得出一个从1 到 100 的数字之和。

用数学方法来做,很简单,等差数列公式啊。。。。嗯,当我没说。

老顾现在不会等差数列了。怎么办?

定义一个变量,用来保存求和结果
让这个变量从1开始加,一直加到100
最后输出这个求和结果

第一个拆分问题结果出来了,现在是继续拆分问题,怎么让变量从1加到100

定义一个循环,让其循环100次
每次在循环中,使用来保存求和结果的变量,加上一个数字

问题又来了,怎么可以让这个变量每次加的数字,是一个递增的自然数呢?

在循环外定义一个变量,每次循环,该变量加1,

那么,最后的程序逻辑也就出来了。以 javascript 为例

sum = 0
for (var i = 1; i <= 100; i+++ ){
	sum += i;
}
console.log(sum)

又或者 python

s,i = 0,0
while i < 100:
	i += 1
	s += i
print(s)

具体到程序中,循环条件怎么设置, i+= 和 s+= 谁先谁后的问题,就需要彻底了解清楚其变量变化过程,才会有概念了。

而最重要的一环,就是需要对每一个变量,每一次运算,有个预估,不管是具体值也好,范围也好,都有一个预期,并对类型有这明确的概念。

总之呢,编程,就是一个将人类思路或算法,转变成程序语言的逻辑代码的过程。

拆分问题,分析问题,实现问题,会一直伴随着开发的过程。

学会使用第三方库

任何一门编程语言,其自身所实现的内容都不会太多,而某些常见问题,常用需求,又没有必要完全自己重新实现一遍,所以,学会使用各种包/库,是一个进阶的过程。

最常见的,一个圆周率数字,我可以自己定义为 3.14,也可以定义为 3.14159,但是很多时候,这个精度就不够了,并且,对于不同平台或者不同人群做代码叙述的时候,可能每个人的习惯不同,定义的数字也略有区别了,所以为了统一,可以使用数学库中预定义的内容,Math.Pi,这样,就可以减少代码书写,并且也具有统一性,减少了分歧。

有比如,取整,不管是向下取整,还是向上取整,我相信绝大多数人,不会自己去实现一遍,通常都是使用预定义的类库中,调用相应的方法来完成的。

小结

基本上,学完这些内容,不能说精通一门编程语言,也可以输熟练掌握了。所有后续的编程工作,其实就是在这些基础的内容上腾挪转移的。

用各种流程控制,来实现不同的算法,对应上现实中,各种业务上不同的需求和逻辑。

那么,回过头来,零基础学编程,最主要的就是学会语法,了解数据类型,掌握流程控制三个项了,学号了这三项内容,其他内容就可以举一反三,以此类推的学习下去了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/532038.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法训练-双指针

双指针 同向双指针3. 无重复字符的最长子串209. 长度最小的子数组713. 乘积小于 K 的子数组 相向双指针167. 两数之和 II - 输入有序数组15. 三数之和438. 找到字符串中所有字母异位词 滑动窗口接雨水 同向双指针 3. 无重复字符的最长子串 题目链接 class Solution { public:…

09——svg中path的使用

一、path 是 svg 中最强大的图形 用于定义一个 路径所有命令均允许小写字母。大写 表示绝对定位&#xff0c;小写 表示 相对定位 &#xff08;相对于上一个结束的坐标&#xff09;d 属性中包含所有路径的点&#xff0c;可根据命令缩写 自由组合 命令 名称 …

阿里云备案服务码是什么?备案服务码申请及限制说明

阿里云备案服务码是什么&#xff1f;ICP备案服务码怎么获取&#xff1f;阿里云备案服务码分为免费和付费两种&#xff0c;申请备案服务码是有限制条件的&#xff0c;需要你的阿里云账号下有可用于申请备案服务码的云产品&#xff0c;如云服务器、建站产品、虚拟主机等&#xff…

【刷题之路Ⅱ】LeetCode 475. 供暖器

【刷题之路Ⅱ】LeetCode 475. 供暖器 一、题目描述二、解题1、方法1——排序后二分法1.1、思路分析1.2、代码实现 2、方法2——排序后双指针2.1、思路分析2.2、代码实现 一、题目描述 原题连接&#xff1a; 475. 供暖器 题目描述&#xff1a; 冬季已经来临。 你的任务是设计一…

怎样能把两张照片拼成一张图片,5种工具分享

怎样能把两张照片拼成一张图片&#xff1f;图片拼合的应用场景是很多的。比如将几张相册中的照片拼成一张合影、将多个地图截图拼合在一起形成一个更大的区域地图、将多个漫画图像合并成一本漫画册等。这项技术可以方便地将多张图片整合为一张&#xff0c;节省时间和精力。 因此…

ThinkPHP6布局的方式之模板布局,全局配置方式,模板标签方式,动态方法布局

ThinkPHP6布局的方式之模板布局 ThinkPHP的模板引擎内置了布局模板功能支持&#xff0c;可以方便的实现模板布局以及布局嵌套功能。 有三种布局模板的支持方式&#xff1a;全局配置方式&#xff0c;模板标签方式&#xff0c;动态方法布局。 第一种方式&#xff1a;全局配置方…

有价值项目分享,缺项目可直接搜索(持续更新中)

​近来统计一下最近发的一些资源&#xff0c;包括CSDNB站微信公众号三个平台&#xff0c;仅包括Java资源&#xff08;SSMSpringBootuniapp&#xff09;、部分硬件、安卓资源&#xff0c;一共30758492588275个&#xff0c;可覆盖95%的毕业题目&#xff0c;大家可在相关归档内获取…

2023 年破解 PDF 密码的 5 种最佳方法

世界越来越依赖数字文档和信息存储。最流行和广泛使用的数字文档文件格式之一是便携式文档格式 (PDF)。PDF 文件用途广泛、可靠&#xff0c;并提供高级别的安全性以保护敏感信息免遭未经授权的访问。保护 PDF 的一种常用方法是通过密码保护。在这篇博文中&#xff0c;我们将讨论…

从SRM到采购供应链,云时通SRM助力东明实现采购数字化再升级!

随着制造业不断向高端跃升&#xff0c;十年来&#xff0c;中国制造企业早已具备全球领先水平。而引领制造业向数字化、网络化、智能化转型升级&#xff0c;是中国智造进一步跨越的关键。 1995年&#xff0c;浙江东明不锈钢制品股份有限公司(以下简称“东明”)成立&#xff0c;作…

超细!从零安装压测工具 jmeter(附JDK下载安装教程,20230516的JDK8最新版)

两步走&#xff0c;安装 JDK 和 jmeter&#xff0c;如果安装了JDK的同志可以直接看第二步。 针对的操作系统&#xff1a;Windows。 下载JDK 官网指路&#xff08;处于稳定性考虑&#xff0c;安装的JDK8&#xff09;&#xff1a; Java Downloads | Oraclehttps://www.oracle.c…

Java配置方式使用Spring MVC

文章目录 基于Java配置方式使用Spring MVC一、创建Maven项目二、添加相关依赖三、创建日志属性文件四、创建首页文件五、创建Spring MVC配置类六、创建Web应用初始化配置类七、创建演示控制器八、配置Tomcat服务器九、启动服务器&#xff0c;查看效果 基于Java配置方式使用Spri…

「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变

「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变 参考&鸣谢 HTTP1.0、HTTP1.1、HTTP2.0的关系和区别 doubleYong 计算机网络_HTTP1.0、HTTP1.1和HTTP2.0的区别 一只前端小马甲 文章目录 「计算机网络」HTTP1.0、HTTP1.1和HTTP2.0的演变一、先说结论二、HTTP网络请求过程三…

【01】一步一步命令行输出VC hello world

一步一步命令行输出VC hello world 安装VS2022编写hello world程序配置cl.exe编译helloworld.cpp总结 安装VS2022 VS2022的安装程序下载地址:https://visualstudio.microsoft.com/zh-hans/downloads/ 。下载完成之后点击程序会进入到选择安装VS2022组件的安装程序&#xff0c;…

小红的好数组陡峭值之和

题目如下 这个题我一开始是先生成满足0&#xff0c;1&#xff0c;2的全排列&#xff0c;但是n很大时很快就超出内存限制了&#xff0c;后来想到用动态规划的方法做&#xff0c;这里先分析一下。 n2时&#xff0c;有01&#xff0c;02&#xff0c;10&#xff0c;12&#xff0c;2…

自动化设备应用之样本手册

Lookbook&#xff0c;新品展示图&#xff0c;是时尚品牌的必备品。Lookbook既展示了新系列&#xff0c;也突出了品牌的基本调性。创建样本手册是释放创造力并从其他时装设计师中脱颖而出的机会。有吸引力的封面、精心策划的图像、精巧的布局、颜色标识和传达风格都是品牌内容传…

建构筑物安全监测

监测要求 1&#xff09;观测点应设置在观测段结构构件的控制断面上&#xff1b; 2&#xff09;平面应力状态的结构应力观测宜设置三向应变观测点,主应力方向明晩的部位可设置单向或两向应变观测点&#xff1b; 3&#xff09;建筑物的重要部位应增设观测点&#xff1b; 4&am…

ControlNet让SD变得可控

ControlNet是一个用于深度神经网络的控制技术&#xff0c;它可以通过操作神经网络块的输入条件来控制神经网络的行为。在这里&#xff0c;“网络块”是指常用的神经层集合&#xff0c;例如“resnet”块、“conv-bn-relu”块、多头注意力块等。通过克隆神经网络块的参数并应用零…

软考A计划-真题-分类精讲汇总-第十七章(数据结构与算法)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 &#x1f449;关于作者 专注于Android/Unity和各种游戏开发技巧&#xff0c;以及各种资源分享&am…

智慧档案馆建设之八防十防常用的设备

档案八防十防常用的十款设备 序号 名称 1 温湿度传感器 2 空气质量云测仪 3 恒湿净化一体机 4 健康防护一体机 5 综合智能触摸一体化区域控制器 6 空调红外学习控制模块 7 漏水检测控制器及感应线 8 数字烟雾传感器 9 红外防盗传感器 10 系统软件平台 附…

redis高级篇(1)

分布式缓存 单节点redis的问题: 1)数据丢失的问题&#xff0c;redis是基于内存来进行存储的&#xff0c;当服务器重启的时候可能会丢失数据 2)无法满足高并发场景 3)如果redis宕机&#xff0c;那么这个服务不可用&#xff0c;所以就需要有一种自动的故障恢复手段&#xff0c;必…