给编程初学者的一封信
提醒:以下内容仅做参考,具体请自行设计。
随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?欢迎大家积极讨论
一、自学编程需要注意什么?
要有足够的时间、精力等。详细整理如下:
- 培养兴趣:自学编程前,先要培养自己对编程的兴趣,这样才能避免在遇到困难时轻易放弃。
- 明确目标:明确自己想要学习哪种编程语言和开发方向,这有助于你制定学习计划和安排时间表。
- 学习编程基础:编程基础包括计算机的工作原理、操作系统的基本概念以及常用办公软件的使用等,这些知识可以在网上查找相关资料学习。
- 不要钻牛角尖:遇到问题不要钻牛角尖,可以查阅资料或者寻求他人帮助,保持开放的心态,不断完善自己的编程思想。
- 实践为主:学习编程最重要的是实践,只有不断地实践才能真正掌握编程技能。因此,在自学编程的过程中,一定要安排充足的时间进行实践。
- 寻找学习资源:网上有许多免费的学习资源,可以根据自己的需求选择适合自己的学习资源。比如在线视频教程、编程社区、开源项目等。
- 坚持学习:自学编程需要长期坚持,制定合理的学习计划并坚持执行,才能不断进步。
-
不要只是看书学习:学习编程需要不仅仅是看书学习,需要通过实践来掌握技能。因此,在自学编程的过程中,一定要亲自动手编写代码。
-
参考其他程序员的代码:在学习过程中,可以参考其他程序员的代码,了解他们的编程思路和实现方法,不断学习和改进自己的编程技能。
-
尝试解决自己的问题:在自学编程的过程中,可以尝试着自己解决问题。这样可以帮助自己更好地理解编程思想和实现方法,同时可以提高自己的问题解决能力。
-
加入编程社区:加入编程社区可以与其他程序员互动,了解他们的编程经验和技巧,同时可以结交志同道合的朋友,提高自己的编程能力。
-
不断学习:编程技能需要不断学习才能保持自己的竞争力。因此,在自学编程的过程中,需要不断学习新的知识和技能,不断提高自己的编程能力。
二、编程初学者学什么语言好?
当然是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 划分等价类的方法 划分等价类方法主要包括以下几种: 特…...

UE5 学习系列(二)用户操作界面及介绍
这篇博客是 UE5 学习系列博客的第二篇,在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下: 【Note】:如果你已经完成安装等操作,可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作,重…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...

如何将联系人从 iPhone 转移到 Android
从 iPhone 换到 Android 手机时,你可能需要保留重要的数据,例如通讯录。好在,将通讯录从 iPhone 转移到 Android 手机非常简单,你可以从本文中学习 6 种可靠的方法,确保随时保持连接,不错过任何信息。 第 1…...
Neo4j 集群管理:原理、技术与最佳实践深度解析
Neo4j 的集群技术是其企业级高可用性、可扩展性和容错能力的核心。通过深入分析官方文档,本文将系统阐述其集群管理的核心原理、关键技术、实用技巧和行业最佳实践。 Neo4j 的 Causal Clustering 架构提供了一个强大而灵活的基石,用于构建高可用、可扩展且一致的图数据库服务…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

一些实用的chrome扩展0x01
简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序,无论是测试应用程序、搜寻漏洞还是收集情报,它们都能提升工作流程。 FoxyProxy 代理管理工具,此扩展简化了使用代理(如 Burp…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...

Linux-进程间的通信
1、IPC: Inter Process Communication(进程间通信): 由于每个进程在操作系统中有独立的地址空间,它们不能像线程那样直接访问彼此的内存,所以必须通过某种方式进行通信。 常见的 IPC 方式包括&#…...