给编程初学者的一封信
提醒:以下内容仅做参考,具体请自行设计。
随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?欢迎大家积极讨论
一、自学编程需要注意什么?
要有足够的时间、精力等。详细整理如下:
- 培养兴趣:自学编程前,先要培养自己对编程的兴趣,这样才能避免在遇到困难时轻易放弃。
- 明确目标:明确自己想要学习哪种编程语言和开发方向,这有助于你制定学习计划和安排时间表。
- 学习编程基础:编程基础包括计算机的工作原理、操作系统的基本概念以及常用办公软件的使用等,这些知识可以在网上查找相关资料学习。
- 不要钻牛角尖:遇到问题不要钻牛角尖,可以查阅资料或者寻求他人帮助,保持开放的心态,不断完善自己的编程思想。
- 实践为主:学习编程最重要的是实践,只有不断地实践才能真正掌握编程技能。因此,在自学编程的过程中,一定要安排充足的时间进行实践。
- 寻找学习资源:网上有许多免费的学习资源,可以根据自己的需求选择适合自己的学习资源。比如在线视频教程、编程社区、开源项目等。
- 坚持学习:自学编程需要长期坚持,制定合理的学习计划并坚持执行,才能不断进步。
-
不要只是看书学习:学习编程需要不仅仅是看书学习,需要通过实践来掌握技能。因此,在自学编程的过程中,一定要亲自动手编写代码。
-
参考其他程序员的代码:在学习过程中,可以参考其他程序员的代码,了解他们的编程思路和实现方法,不断学习和改进自己的编程技能。
-
尝试解决自己的问题:在自学编程的过程中,可以尝试着自己解决问题。这样可以帮助自己更好地理解编程思想和实现方法,同时可以提高自己的问题解决能力。
-
加入编程社区:加入编程社区可以与其他程序员互动,了解他们的编程经验和技巧,同时可以结交志同道合的朋友,提高自己的编程能力。
-
不断学习:编程技能需要不断学习才能保持自己的竞争力。因此,在自学编程的过程中,需要不断学习新的知识和技能,不断提高自己的编程能力。
二、编程初学者学什么语言好?
当然是c++了(因为我只会c++
可以看看我下面的瞎编,不过还有点参考价值
C++是一种广泛应用于系统级编程、嵌入式设备、数据库、操作系统和游戏开发等领域的编程语言。初学者学习它,有如下好处:
- 理解计算机底层执行机制:C++是一种系统编程语言,可以更好地帮助我们了解计算机底层执行机制,如内存管理、指针、栈和堆等。
- 计算机图形学和游戏开发:C++可以用于图形学和游戏开发,这是其他高级语言无法实现的。
- 速度和性能:C++是一种编译型语言,编译后的代码运行速度快,而且可以对程序进行底层优化,从而提高程序性能。
- 多平台支持:C++可以编译成多个平台的可执行文件,例如Windows、Linux、Mac等,这意味着C++程序可以在多个操作系统上运行。
- 贴近底层硬件:C++可以直接操作硬件,编写驱动程序等底层代码。
- 学习其他编程语言:了解C++的底层执行机制和语法规则,有助于学习其他编程语言。
- 面向对象编程:C++是一种面向对象编程语言,可以更好地组织代码、提高代码可维护性、复用性和可扩展性。
- 并发编程:C++支持并发编程,可以更好地利用多核处理器,提高程序运行效率。
- 高效的数据结构:C++拥有内置的高效数据结构,如数组、指针、字符串等,可以更好地处理数据。
- 通用编程:C++可以用于多种应用场景,如桌面应用、Web应用、移动设备应用等。
- 安全性:C++的编译型语言特性使其不容易被病毒攻击,同时其底层执行机制可以更好地检测代码安全性问题。
- 开发效率:C++的编译型语言特性使其编译速度更快,开发效率更高。
- 降低成本:C++的编译型语言特性使其可以生成可执行文件,从而不需要虚拟机,降低了成本。
- 稳定性:C++是一种稳定、成熟的语言,其标准化的版本保证了跨平台的一致性和兼容性。
- 嵌入式设备编程:C++可以用于嵌入式设备编程,如智能家电、机器人等。
- 大数据处理:C++具有高效的数据处理能力,可以用于大数据处理和分析。
- 游戏开发:C++可以用于游戏开发,如3D游戏、2D游戏等。
- 人工智能和机器学习:C++是人工智能和机器学习领域的重要编程语言之一,可以用于编写底层算法和模型。
- 网络编程:C++可以用于网络编程,如编写高性能的网络协议、服务器端和客户端程序等。
- 桌面应用开发:C++可以用于桌面应用开发,如Office套件、游戏等。
三.c++初学第一个程序——a+b问题
先展示代码。
#include <iostream> using namespace std; int main() { int a, b, sum; // 读取输入 cout << "Enter the value of a: "; cin >> a; cout << "Enter the value of b: "; cin >> b; // 计算 sum sum = a + b; // 输出结果 cout << "The sum of " << a << " and " << b << " is " << sum; return 0; }
首先,我们包含了 iostream 头文件,这个头文件提供了C++中输入输出流的功能。接着,我们使用 std:: 前缀,这告诉编译器我们要使用标准命名空间,这样我们就可以在程序中使用 cout 和 cin 这些标准输入输出流对象而不会产生命名冲突。在程序中,我们声明了三个整型变量 a、b 和 sum。其中 sum 是用来存储 a 和 b 的和的变量。接着,我们使用 cout 输出提示信息,要求用户输入 a 和 b 的值。这里我们使用了 cin 对象来读取用户的输入,并将输入的值存储到相应的变量中。然后,我们计算 a 和 b 的和,并将结果存储到 sum 变量中。最后,我们使用 cout 输出计算结果。在输出中,我们使用了字符串拼接的方式将各个字符串组合起来,形成最终的输出结果。
值得注意的是,在本程序中我们使用了 using namespace std;,这是因为我们在程序中使用了标准库中的 cout 和 cin 对象。如果不加上这一行,就需要在每次使用这些对象时加上 std:: 前缀,例如 std::cout << a + b;。加上 using namespace std; 就不用每次都在对象前加上 std:: 前缀,使代码更加简洁。但是这样做也有一个缺点,就是可能会造成命名冲突。如果我们在自己的代码中定义了一个名为 std 的命名空间,那么加上 using namespace std; 后,就无法使用自己的命名空间中的同名变量或函数了。
另外,C++中有多种不同的输入输出流对象可供选择,例如 cin、cin >>、cout、cout << 等。其中 cin 和 cout 是输入输出流对象的实例化对象,它们提供了输入输出的一般性方法。而 cin >> 和 cout << 则提供了对输入输出进行格式化的方法。在本程序中,我们使用了 cin >> a 和 cin >> b 来读取用户的输入,这里使用了 >> 运算符来将输入值分别赋值给变量 a 和 b。而在输出中,我们使用了 cout << "The sum of " << a << " and " << b << " is " << sum; 来输出计算结果,这里使用了 << 运算符来将字符串和变量的值拼接起来输出。同时,在字符串中也可以使用 << 和 >> 运算符来插入变量的值或读取用户的输入。
读到这里,你是否对c++有兴趣了呢?下面推荐一些资料。
六、编程资料分享
前面2个网站是C++查阅资料必须知道的网站
- cppreference
- cplusplus
- c++ 菜鸟教程 [wiki]
- stackoverflow 大部分的疑问可以在c++版块找到
C++语法
入门推荐
- 《C++程序设计语言》 c++之父的经典书籍,英文版本"The C++ Programming Language"。
- 《C++ Primer》 c++第一个编译器的作者 [book]
进阶
- 《Effective C++》
- 《More Effective C++》 2本书都是经典的建议和推荐
- 《深度探索C++对象模型》 "Inside the C++ Object Model"
- 《Modern C++ Design》
- 《C++标准程序库》 "C++ Standard Library Tutorial and Reference" 手册类,可以当作工具书。
模板
《C++ Templates: The Complete Guide》 模板元编程的经典教材,要知道整个STL库都是模板的成果
最后,推荐下C++经典书籍《C++ Primer》,可以当做工具书,有时间多翻阅一下。
c++算法学习
此处推荐董晓算法。
他是一位B站UP主,擅长 深入浅出,图解代码。
讲解的非常好,值得肯定。

最后
今天分享的就是这些了,不知道对你有没有帮助。
相关文章:
给编程初学者的一封信
提醒:以下内容仅做参考,具体请自行设计。 随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?欢迎大家积极讨论 一、自学编程需要注意什么? 要有足够的时间、精力等…...
【无功优化】基于改进教与学算法的配电网无功优化【IEEE33节点】(Matlab代码时候)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
数据在内存中的存储(超详细讲解)
目录 浮点数家族 浮点数类型在内存中的存储 一.为什么说整型和浮点数在内存中存储方式不同(证明) 二.浮点数的存储规则 浮点数在计算机内部的表示方法 1.对于M的存储和取出规则 2.对于E的存储和取出时的规则 对前面代码结果进行解释: …...
log4cplus使用示例
1、l4jlog.h封装头文件 #pragma once#include <iostream> #include <log4cplus/logger.h> #include <log4cplus/loggingmacros.h> #include <log4cplus/fileappender.h> #include <log4cplus/layout.h> #include <log4cplus/configurator.h&…...
人工智能学习07--pytorch20--目标检测:COCO数据集介绍+pycocotools简单使用
如:天空 coco包含pascal voc 的所有类别,并且对每个类别的标注目标个数也比pascal voc的多。 一般使用coco数据集预训练好的权重来迁移学习。 如果仅仅针对目标检测object80类而言,有些图片并没有标注信息,或者有错误标注信息。…...
learnOpenGL-深度测试
深度测试:OpenGL将一个片段的深度值与深度缓冲的内容进行对比。执行一个深度测试,测试通过则深度缓冲将会更新为新的深度值。测试失败则片段被丢弃。 深度测试片段着色器及模版测试之后执行。 片段着色器中内置变量gl_FragCoord的z值即为深度值。 提前深…...
阿里云服务器数据盘是什么?系统盘和数据盘区别
阿里云服务器系统盘和数据盘有什么区别?系统盘类似Windows电脑的C盘,数据盘相当于其他盘符,数据盘可以有多个而系统盘只能有一个,数据盘可有可无而云服务器系统盘是必须要有的。阿里云服务器网来详细说下阿里云服务器数据盘和系统…...
linux常用命令精选
参考文章: Top 60 Linux Interview Questions and Answers - howtouselinux 在管理和维护Linux系统时,有一些常用的命令可以帮助您进行系统初始化和配置。这些命令涵盖了各种任务,包括系统设置、用户管理、软件安装和网络配置等。 本文将为…...
人体行为足力特征分析及其应用研究_kaic
第一章 绪论 随着社会现代化的发展和科技的不断进步,我国航天事业蓬勃发展,与此同时产生了很多亟待解决的难题,康复医疗成为航天医学和康复领域的重要课题之一。载人航天实践证明,失重对航天员生理功能有很大影响,这不…...
javascript基础二十七:说说 JavaScript 数字精度丢失的问题,解决方案?
一、场景复现 一个经典的面试题 0.1 0.2 0.3 // false 为什么是false呢? 先看下面这个比喻 比如一个数 130.33333333… 这是一个除不尽的运算,3会一直无限循环,数学可以表示,但是计算机要存储,方便下次再使用,但…...
重塑工作场所:后疫情时代组织韧性的8个策略
经济寒冬来临,倒挂的收益率曲线、持续上升的利率以及层出不穷的裁员公告等等,让经济学家们得出一个结论:全球经济正在衰退。然而,经济下行周期可能是卓越公司改变其命运的最佳时机。有研究表明,相对于非经济衰退时期&a…...
TCP协议为什么要三次握手而不是两次?
TCP(Transmission Control Protocol,传输控制协议)的历史可以追溯到1970年代初期,最初的版本是RFC 793,后来经过多次更新和改进,包括RFC 1122、RFC 1323、RFC 2018、RFC 2581、RFC 2873、RFC 3168和RFC 461…...
使用Vuex进行状态管理
在Vue.js应用程序中,状态管理是一个重要的主题。当应用程序变得复杂,组件之间的状态共享和通信变得困难,这时候使用Vuex就会变得十分有用。Vuex是一个专门为Vue.js设计的状态管理库,它提供了一个集中式的状态管理方案,…...
【优化调度】基于改进遗传算法的公交车调度排班优化的研究与实现(Matlab代码实现)
目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 1 概述 本文对当前公交企业调度系统进行了分析,建立了公交排班的数学模型。本文基于数据挖掘分析的结果上,使用截面客流量数据对模型进行约束,得出了公交客流出行的空间分布规律。再以…...
IMX6ULL裸机篇之I2C实验-硬件原理图
一. I2C 实验简介 I2C实验,我们就来学习如何使用 I.MX6U 的 I2C 接口来驱动 AP3216C,读取 AP3216C 的传感器数据。 AP3216C是一个三合一的环境光传感器,ALSPSIRLED,ALS是环境光,PS是接近传感器,IR是红外L…...
华为OD机试真题 Java 实现【获取字符串中连续出现次数第k多的字母的次数】【2023Q1 100分】,附详细解题思路
一、题目描述 给定一个字符串,只包含大写字母,求在包含同一字母的子串中,长度第 k 长的子串的长度,相同字母只取最长的那个子串。 二、输入描述 第一行有一个子串(1<长度<100),只包含大写字母;第二…...
充分统计量和因子分解定理
充分统计量 定义: 设样本 X X X的服从分布 f ( X ∣ θ ) f(X|\theta) f(X∣θ), θ ∈ Θ \theta\in\Theta θ∈Θ,设 T T ( X ) TT(X) TT(X)为一统计量,若在已知 T T T的条件下,样本 X X X的条件分布与参数 θ \the…...
M1 PD安装arm ubuntu及Docker
M1 PD安装arm ubuntu 下载 Ubuntu 22.04.2 LTS https://cn.ubuntu.com/download/server/arm 参考视频安装 https://www.bilibili.com/video/BV1Mu4y1f74v/?spm_id_from333.999.0.0&vd_source9056c6d3c91a117baaceb663957daa08 PD Ubuntu安装docker 删除现有的docker安装…...
TCP协议的RST标志
下文中的内容多数来自【参考】中的文章,这边进行一个整理和总结,后续会慢慢增加出现各个 RST 包的测试代码,便于理解。 TCP的 “断开连接” 标志 RST 标志 Reset,复位标志,用于非正常地关闭连接。它是 TCP 协议首部里…...
【软件质量与软件测试 白盒测试与黑盒测试】
第十章 黑盒测试 10.1 等价类划分: 10.1.1 划分等价类 等价类是指所有数据中的一组,它们具有相同的测试结果或相同的响应。等价类划分是将输入数据分为多个等价类的过程。 10.1.2 划分等价类的方法 划分等价类方法主要包括以下几种: 特…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
【单片机期末】单片机系统设计
主要内容:系统状态机,系统时基,系统需求分析,系统构建,系统状态流图 一、题目要求 二、绘制系统状态流图 题目:根据上述描述绘制系统状态流图,注明状态转移条件及方向。 三、利用定时器产生时…...
SAP学习笔记 - 开发26 - 前端Fiori开发 OData V2 和 V4 的差异 (Deepseek整理)
上一章用到了V2 的概念,其实 Fiori当中还有 V4,咱们这一章来总结一下 V2 和 V4。 SAP学习笔记 - 开发25 - 前端Fiori开发 Remote OData Service(使用远端Odata服务),代理中间件(ui5-middleware-simpleproxy)-CSDN博客…...
NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合
在汽车智能化的汹涌浪潮中,车辆不再仅仅是传统的交通工具,而是逐步演变为高度智能的移动终端。这一转变的核心支撑,来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒(T-Box)方案:NXP S32K146 与…...
【Redis】笔记|第8节|大厂高并发缓存架构实战与优化
缓存架构 代码结构 代码详情 功能点: 多级缓存,先查本地缓存,再查Redis,最后才查数据库热点数据重建逻辑使用分布式锁,二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...
Python 实现 Web 静态服务器(HTTP 协议)
目录 一、在本地启动 HTTP 服务器1. Windows 下安装 node.js1)下载安装包2)配置环境变量3)安装镜像4)node.js 的常用命令 2. 安装 http-server 服务3. 使用 http-server 开启服务1)使用 http-server2)详解 …...
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement
Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
jdbc查询mysql数据库时,出现id顺序错误的情况
我在repository中的查询语句如下所示,即传入一个List<intager>的数据,返回这些id的问题列表。但是由于数据库查询时ID列表的顺序与预期不一致,会导致返回的id是从小到大排列的,但我不希望这样。 Query("SELECT NEW com…...
