栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

编程学习记录——初识编程

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

编程学习记录——初识编程

前言

自从高中毕业之后 我就不经常记笔记了。后来在实习的时候 导师经常跟我讲要记录自己学习的东西 这样对自己好处比较大。我在实习的过程中也深有体会 阅读他人写的文章 再根据前人的经验来修改自己的代码 可以避开很多坑。原本记录了一些后端开发相关的知识 但是保存在公司的文档库里面了 现在我没有权限取出来 就打算整体地 系统地整理一下自己所学到的东西 并且尝试将自己学到的知识通俗地表达出来 其中可能会有很多错误 欢迎大佬为我指出问题所在 弥补我学习上的漏洞。

认识编程

很多外行眼中在键盘上行云流水的程序员 可能是电视剧看多了 大家都是全职高手 所以手速比较快。我们总是听说什么C语言大佬 攻破服务器 放出源代码这样的话 实际上程序员也是术业有专攻 就像妇科的医生去看牙科的病人一样 碰到自己不会方向的情况也是比较难解决的 但是在基础上 大家都是一样的。

言归正传 大部分编程新手进坑时 接触的语言就是Python C/C Java中的一种。其实学什么语言并不重要 语言只是一个工具 要学的其实是编程的思想。当学会了编程思想 学任何语言都将是快速且有目的的。这里我使用C 作为主要的编程语言。

这里附上RUNOOB的教程链接
C 教程|菜鸟教程
Java教程|菜鸟教程
Python教程|菜鸟教程

基本知识

在开始之前 我们应该注意自己的输入法 在大多数编程语言中 是不使用中文符号的 应使用英文符号。

变量

我们在使用编程语言编程的时候 需要储存很多的信息 那么这些信息的载体就是变量。通过给变量赋值 我们可以把数据和一些能够描述的词语联系起来 比如有一个数字20 它可以指一个人20岁 或者你兜里有20块钱 或者一般的直尺有20cm长。

通过给变量起名 money 20 我们知道有数量为20的钱 但是不知道是什么钱 如果是dollor 20 我们就知道有20美元。可见变量名会影响程序的可读性 有的人喜欢使用 a ,“b”,“c”, d 这样的变量名 虽然自己写代码的时候快乐了 但是当过一阵子再看这段代码的时候 就会产生很多疑问。

变量也是有类型的 在强类型的编程语言中 注意变量的类型尤为重要。在C 中 列举出几种常用的变量类型

类型描述bool布尔类型 储存true或falsechar通常是一个字符(8位) 且是一个整数类型string字符串类型int整数long长整型float单精度浮点数(小数)double双精度浮点数void表示类型的缺失

需要注意的是 string在C 中并不是基本数据类型 而是类类型。关于各种类型所占的空间及表示范围 附上链接 关于C和C 中的基本数据类型int、long、long long、float、double、char、string的大小及表示范围。

解释各个类型是复杂且费劲的 我们通过几个例子来简单理解它们的用法
有个班里有50个学生 该如何表达呢
int students 50; 这句话做了两件事情 第一件是定义了一个名为 students 的int型变量 第二件是将 students 这个变量赋值为50 。50是一个整数 所以可以赋值给students。那么如果我们就想来点刺激的 我就要把50.3赋值给它 后果是什么样呢 答案是会将50.3向下取整为50 。这时候又会有个疑问 我要是赋值为50.9 他会不会取整为51呢 注意是向下取整 也是会得到一个50的结果。

今天抢红包抢了一块八毛三 我该如何表达这个变量呢
float redPacket 1.83; / double redPacket 1.83; 这两种方式都是可以的 那么float和double有什么不同呢 我们这里不做讨论 附上链接 float与double类型区别。但是应当记住 在不丢失精度的情况下(float类型总共只能表示7位有效数字) 我们应当使用float。

今天下不下雨 今天下雨了 那么这个事件就是真的 没下雨就是假的。
假设今天下雨了 bool isRainning true;
假设今天没下雨 bool isRainning false;
不要尝试给bool类型的变量赋值其他类型的数据 否则会发生错误。

我有个朋友叫“小红” 该如何表达呢
首先“小红”不是一个字符 而是一个字符串 所以我们应当使用string
string friendName 小红 赋值给string类型的变量的字符串都应该加双引号 除非它是另一个字符串类型变量。

什么时候使用char呢 在我们需要表示单个字符的时候 或者需要在单个字符上做运算的时候 就使用char。
char lettet a 注意这里的引号是单引号 双引号用于字符串 单引号用于字符。

函数

一个非常熟悉的名字 但它不是我们平时在数学中见到的f(x) 2x这样形式的东西。
在编程语言中 什么是函数

函数是组织好的 可重复使用的 用来实现单一或者相关联功能的代码段。

在上文也提到过“方法”这个词 函数也就是方法。

那么函数有什么作用呢

函数能提高应用的模块性 减少代码的冗余。函数可以分解流程 实现模块化开发。

那我们来认识一下C 中的函数长什么样子

#include iostream 
using namespace std;
int main()
 cout Hello World ; // 输出 Hello World
 return 0;

每一个程序员都要经过“Hello World”的洗礼。
int main()就是一个函数 {}中间包含了它的内容 main函数只能为int型 但是在某些编译器中 它可以是void型。
既然函数有了类型 那么它就一定要有返回值 什么类型的函数就返回什么类型的数据 如果这个函数不需要返回值 那么它就应该是void型。但是main函数比较特殊 它是简单程序的入口 如果你不设置返回值 它也会自动返回0 。
该段代码中的其余部分将在下文给出解释。

面向对象

先来了解关于面向对象(Object Oriented)的基本知识

C 程序可以定义为对象的集合 这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象 方法、即时变量。

对象 - 对象具有状态和行为。例如 一只狗的状态 - 颜色、名称、品种 行为 - 摇动、叫唤、吃。对象是类的实例。类 - 类可以定义为描述对象行为/状态的模板/蓝图。方法 - 从基本上说 一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。

可以举一个形象的例子 来辅助理解

智能手机是一个类 有很多属性包括 品牌、型号、屏幕大小 CPU型号 运行内存、储存空间等等。但是这些属性并没有被赋予一个确定的值 所以它不是具体的一台智能手机 而是很多很多智能手机的一个概况 即蓝图。现在有一台华为nova 9 那么它的各项属性都被赋予了一个有意义的值 品牌是华为、型号是nova 9、屏幕大小是xxxx CPU是xxx。那么它就是智能手机类的一个实例。同样的一台小米手机、一台三星手机 一台Iphone也都是智能手机的实例。
那么状态有了 行为呢 行为就是这个手机的功能 它能接电话 能上网 能拍照片 能看视频 能玩游戏。我们也可以把这些行为叫做类方法。

有一句话是这样说的 “万物皆为对象。”
以此类推 人 汽车 电脑可以看作是一个类 自己身边的某某同学 奔驰某某型号轿车 华硕某某型号电脑可以看作是一个对象 也是前面类的实例。

环境安装

了解了一些相关的基础知识后 我们想要尝试打出来一段代码。但是只用txt是不行的 要装一个编译器 来编译运行我们的代码。上文已经说过使用C 作为例子 默认使用windows10系统 我安装了Clion 如果是mac os要安装Xcode。
如何安装Clion集成开发工具
我们要支持正版软件 不要搞破解。如果你是学生 可以去官网申请学生许可。

基础语法Part1 Hello World

要大显身手了 打开Clion 看到如下窗口

你的界面也许跟我的不一样 但是不影响 点击New Project创建新项目 找一个你认为合适的位置 并修改项目名称 选择C 11标准。我们只是学习编程基础 用不到更新的标准。点击右下角的Create 并等待右下角进度条走完。

然后就可以看到如下界面 Clion已经给我们创建好了一个HelloWorld的文件。
需要时时牢记的是 C/C Java中每写完一条语句 后面就需要写一个分号。


第一行#include iostream 指程序包含了iostream这个文件 是C 的输入输出库文件。cout和cin就是在这个文件中定义的。在引用了这个文件之后 我们才能使用cout和cin。如果你把这一行删除 会发现cout和cin变成红色 提示发现了编译错误。
我们删除“std::” 并在第二行添加using namespace std;。std是标准库的命名空间 我们在学习编程基础时不会用到其他的命名空间 所以我们开头直接使用std的命名空间即可。
main()函数是程序的入口 程序会从main()函数的第一句开始执行。
cout是输出流 你可以把它看作一个对象 看作是控制台 用两个箭头指向它 把箭头后面的东西输出出去。 Hello, World! 则是一个字符串。endl是换行命令 在输出完 Hello, World! 后 输出流会换行。我们在这里介绍一个转义符n 它与endl有着相同的作用 而它们的用法不同。

cout Hello, World! endl;
cout Hello, World!n ;

这两句代码的输出结果是相同的。

现在我们的代码是这样的

#include iostream 
using namespace std;
int main() 
 cout Hello, World! endl;
 return 0;

不管三七二十一 我们先跑一遍。

可以看到程序成功运行


那么你的第一个程序就成功运行起来了。你可以试着修改一下双引号之间的文字 多加几个cout或者双箭头 运行一下看看是什么结果。可以试着把如下代码复制进main()函数中 运行一下看看结果是什么样的。

 cout Hello, World! endl;
 cout Test 123 ;
 cout 没有换行 现在换了 endl;
 cout 再来试试另一种换行符n我觉得这一行还不长 没必要再写一个cout和endl 那样打的字更多n ;

学会了输出 我们现在要学习一下输入和计算了。
在这之前 我们引入“注释”的概念。

注释就是对代码的解释和说明 其目的是让人们能够更加轻松地了解代码。注释是编写程序时 写程序的人给一个语句、程序段、函数等的解释或提示 能提高程序代码的可读性。
注释只是为了提高可读性 不会被计算机编译。

注释是给程序员看的 程序是不会读这些东西的 希望大家也要养成一个良好的写注释的习惯 对自己对别人都有好处。
在C/C 和Java中 单行注释可以使用// 多行注释则可以使用。举个例子

//这是一个单行注释
 这是一个多行注释
 第二行也是注释

简单的加减法

你现在是某个班级的数学课代表 有两个小组长负责给你交作业。组长A交了8本作业 组长B交了6本作业 你们班一共有20个人 那么你手里有几本作业 班里有多少人没交作业
这样简单的算术题 小学生做的比我好 那么我不屑于做这种简单的加减法 就让程序来做好了。
我们首先了解一下在编程中加减乘除运算式的书写规则。平时我们计算加法都是直接 8 6 14 但是在程序中不能这样写 电脑不知道你写的是什么东西 它不是老师 不会读你的算式。
我们要先声明五个个变量 一个是组长A交的作业数量 一个是组长B交的作业数量 一个是你收到了多少作业 一个是全班的人数 一个是没交作业的人数。因为作业和人不可能是半份或者0.3份 我们要用整数类型。

int homeworkA 8; //A组组长交了8本作业
int homeworkB 6; //B组组长交了6本作业
int myHomework 0; //我手里的作业 需要计算 先初始化为0
int studentNumber 20; //班里学生的人数
int missingHomework 0; //没有交作业的人数 需要计算 先初始化为0

然后让组长AB的两个变量相加 现在多出来一个数字 我们存在哪里呢 就存在你收到的作业的那个变量中。程序的计算需要使用赋值的形式 即结果在左 算式在右

myHomework homeworkA homeworkB; //我收到的作业是小组A和小组B的作业的和
missingHomework studentNumber - myHomework; //没交作业的人数是全班人数和我收到的作业数量的差

这样一来 myHomework原本的0值会被加法得出的14替换 同理missingHomework也一样。我们现在输出结果

cout I received myHomework homework. endl;
cout There are still missingHomework people who haven t handed in their homework. endl;

告诉老师 有这么多人没交作业

输入数据

你这个课代表挺称职的。你每天都得收作业 每天不交作业的人数也是不一样的 所以对于这种不确定的数字 我们打算让小组长来告诉你。
既然有cout 那就肯定有cin 一进一出 程序才能交互。我们上面说

cout是输出流 你可以把它看作一个对象 看作是控制台 用两个箭头指向它 把箭头后面的东西输出出去。

那么cin就是输入流 你可以把它看作一个对象 看作是控制台 它从控制台拿到了数据会传输进来 你就用箭头从它这里指向你想赋值的变量。

int homeworkA 0; //A组不知道收了几本作业
int homeworkB 0; //B组不知道收了几本作业
int myHomework 0; //我手里的作业 需要计算 先初始化为0
int studentNumber 20; //班里学生的人数
int missingHomework 0; //没有交作业的人数 需要计算 先初始化为0

现在你要让两个组长告诉你作业数量 先去问A组 再去问B组

cin homeworkA homeworkB;

输入有两种常用的方式。假如这次A组收了9本 B组收了7本 输入两个数字时 你不能直接输入97 因为那是一个数字 中间要有分割符号 这里支持使用空格当作分隔符 也可以直接一次输入一个数字按一下回车。

myHomework homeworkA homeworkB; //我收到的作业是小组A和小组B的作业的和
missingHomework studentNumber - myHomework; //没交作业的人数是全班人数和我收到的作业数量的差
cout I received myHomework homework. endl;
cout There are still missingHomework people who haven t handed in their homework. endl;

这样就又算出来了。

简单的四则运算

加减乘除 一个都不能少。在程序中 运算也是有先后顺序的 乘除的优先级高于加减 但是在同级下 是需要加括号来确定先后顺序的 这与数学中的做法没有什么差别。
这次考试成绩出来了 数学老师让你算一下班里数学的平均分 因为让你一个一个人去加每个人的分数太繁琐了 数学老师替你加好了 总分是1526分。
因为平均分经常有小数点 所以我们要使用浮点数。还记得上面所说的float和double了吗 这里应该选什么呢 这种平均分一般不会超过小数点后三四位 所以我们使用float。

float totalScore 1526; //注意这里的总分使用了float 运算要相同类型
float studentNumber 20;
float averageScore 0;
averageScore totalScore / studentNumber; //注意在程序中除号是“ / ”
cout The averageScore is averageScore endl;

老师说办公室没有练习本了 你去给他买30本 回来告诉他价格。一本练习本一块五 那三十本是多少呢 因为钱带了小数 我们同样使用浮点数计算。

float unitPrice 1.5;
float amount 30;
float totalPrice 0;
totalPrice unitPrice * amount; //注意在程序中称号是“ * ”
cout The totalPrice is totalPrice endl;

老师很开心 觉得你是个得力的小助手 你脸上笑嘻嘻 心里哭唧唧。

现在四则运算你已经会写了 你可以把你今天去食堂吃饭的钱 把今天玩游戏花了多少秒 把今天去菜市场买的每棵菜的价格算出来了。

文字的表达

你说我光会输出个数字也不行啊 别人经常跟我说话 又不是一个单纯的数字。
其实大同小异 我们现在只做一个简单的输入一个单词并且输出的程序。

string word null ; // 初始化你的变量是个好习惯
cin word;
cout word endl;

随便你在键盘上输入什么东西 它都会存到word这个字符串类型的变量中去 然后输出出来。

人类的本质是什么 复读机

到此你已经认识了编程 并且可以写出一个简单的输入输出 能计算乘除加减的程序了 还可以当个复读机。编程是不是没有想象中的那么难
下一次你还将扮演这个任劳任怨的课代表 面对A组长说交了11本 B组长说交了10本的尴尬情况 面对被老师罚做从1加到50的算术 并且尝试在老师不来的情况下摸鱼不算题。

如有知识点的错误烦请您指出
Thank you

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267497.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号