当前位置: 首页 > news >正文

给编程初学者的一封信

提醒:以下内容仅做参考,具体请自行设计。

随着信息技术的快速发展,编程已经成为一个越来越重要的技能。那么,我们该如何入门编程呢?欢迎大家积极讨论

一、自学编程需要注意什么?

要有足够的时间、精力等。详细整理如下:

  1. 培养兴趣:自学编程前,先要培养自己对编程的兴趣,这样才能避免在遇到困难时轻易放弃。
  2. 明确目标:明确自己想要学习哪种编程语言和开发方向,这有助于你制定学习计划和安排时间表。
  3. 学习编程基础:编程基础包括计算机的工作原理、操作系统的基本概念以及常用办公软件的使用等,这些知识可以在网上查找相关资料学习。
  4. 不要钻牛角尖:遇到问题不要钻牛角尖,可以查阅资料或者寻求他人帮助,保持开放的心态,不断完善自己的编程思想。
  5. 实践为主:学习编程最重要的是实践,只有不断地实践才能真正掌握编程技能。因此,在自学编程的过程中,一定要安排充足的时间进行实践。
  6. 寻找学习资源:网上有许多免费的学习资源,可以根据自己的需求选择适合自己的学习资源。比如在线视频教程、编程社区、开源项目等。
  7. 坚持学习:自学编程需要长期坚持,制定合理的学习计划并坚持执行,才能不断进步。
  8. 不要只是看书学习:学习编程需要不仅仅是看书学习,需要通过实践来掌握技能。因此,在自学编程的过程中,一定要亲自动手编写代码。

  9. 参考其他程序员的代码:在学习过程中,可以参考其他程序员的代码,了解他们的编程思路和实现方法,不断学习和改进自己的编程技能。

  10. 尝试解决自己的问题:在自学编程的过程中,可以尝试着自己解决问题。这样可以帮助自己更好地理解编程思想和实现方法,同时可以提高自己的问题解决能力。

  11. 加入编程社区:加入编程社区可以与其他程序员互动,了解他们的编程经验和技巧,同时可以结交志同道合的朋友,提高自己的编程能力。

  12. 不断学习:编程技能需要不断学习才能保持自己的竞争力。因此,在自学编程的过程中,需要不断学习新的知识和技能,不断提高自己的编程能力。

二、编程初学者学什么语言好?

当然是c++(因为我只会c++

可以看看我下面的瞎编,不过还有点参考价值

C++是一种广泛应用于系统级编程、嵌入式设备、数据库、操作系统和游戏开发等领域的编程语言。初学者学习它,有如下好处:

  1. 理解计算机底层执行机制:C++是一种系统编程语言,可以更好地帮助我们了解计算机底层执行机制,如内存管理、指针、栈和堆等。
  2. 计算机图形学和游戏开发:C++可以用于图形学和游戏开发,这是其他高级语言无法实现的。
  3. 速度和性能:C++是一种编译型语言,编译后的代码运行速度快,而且可以对程序进行底层优化,从而提高程序性能。
  4. 多平台支持:C++可以编译成多个平台的可执行文件,例如Windows、Linux、Mac等,这意味着C++程序可以在多个操作系统上运行。
  5. 贴近底层硬件:C++可以直接操作硬件,编写驱动程序等底层代码。
  6. 学习其他编程语言:了解C++的底层执行机制和语法规则,有助于学习其他编程语言。
  7. 面向对象编程:C++是一种面向对象编程语言,可以更好地组织代码、提高代码可维护性、复用性和可扩展性。
  8. 并发编程:C++支持并发编程,可以更好地利用多核处理器,提高程序运行效率。
  9. 高效的数据结构:C++拥有内置的高效数据结构,如数组、指针、字符串等,可以更好地处理数据。
  10. 通用编程:C++可以用于多种应用场景,如桌面应用、Web应用、移动设备应用等。
  11. 安全性:C++的编译型语言特性使其不容易被病毒攻击,同时其底层执行机制可以更好地检测代码安全性问题。
  12. 开发效率:C++的编译型语言特性使其编译速度更快,开发效率更高。
  13. 降低成本:C++的编译型语言特性使其可以生成可执行文件,从而不需要虚拟机,降低了成本。
  14. 稳定性:C++是一种稳定、成熟的语言,其标准化的版本保证了跨平台的一致性和兼容性。
  15. 嵌入式设备编程:C++可以用于嵌入式设备编程,如智能家电、机器人等。
  16. 大数据处理:C++具有高效的数据处理能力,可以用于大数据处理和分析。
  17. 游戏开发:C++可以用于游戏开发,如3D游戏、2D游戏等。
  18. 人工智能和机器学习:C++是人工智能和机器学习领域的重要编程语言之一,可以用于编写底层算法和模型。
  19. 网络编程:C++可以用于网络编程,如编写高性能的网络协议、服务器端和客户端程序等。
  20. 桌面应用开发: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 这些标准输入输出流对象而不会产生命名冲突。在程序中,我们声明了三个整型变量 ab 和 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++中有多种不同的输入输出流对象可供选择,例如 cincin >>coutcout << 等。其中 cin 和 cout 是输入输出流对象的实例化对象,它们提供了输入输出的一般性方法。而 cin >> 和 cout << 则提供了对输入输出进行格式化的方法。在本程序中,我们使用了 cin >> a 和 cin >> b 来读取用户的输入,这里使用了 >> 运算符来将输入值分别赋值给变量 a 和 b。而在输出中,我们使用了 cout << "The sum of " << a << " and " << b << " is " << sum; 来输出计算结果,这里使用了 << 运算符来将字符串和变量的值拼接起来输出。同时,在字符串中也可以使用 << 和 >> 运算符来插入变量的值或读取用户的输入。

读到这里,你是否对c++有兴趣了呢?下面推荐一些资料。

六、编程资料分享

前面2个网站是C++查阅资料必须知道的网站

  1. cppreference
  2. cplusplus
  3. c++ 菜鸟教程 [wiki]
  4. stackoverflow 大部分的疑问可以在c++版块找到

C++语法

入门推荐

  1. 《C++程序设计语言》 c++之父的经典书籍,英文版本"The C++ Programming Language"。
  2. 《C++ Primer》 c++第一个编译器的作者 [book]

进阶

  1. 《Effective C++》
  2. 《More Effective C++》 2本书都是经典的建议和推荐
  3. 《深度探索C++对象模型》 "Inside the C++ Object Model"
  4. 《Modern C++ Design》
  5. 《C++标准程序库》 "C++ Standard Library Tutorial and Reference" 手册类,可以当作工具书。

模板

《C++ Templates: The Complete Guide》 模板元编程的经典教材,要知道整个STL库都是模板的成果

最后,推荐下C++经典书籍《C++ Primer》,可以当做工具书,有时间多翻阅一下。

c++算法学习

此处推荐董晓算法。

他是一位B站UP主,擅长 深入浅出,图解代码。

讲解的非常好,值得肯定。

 最后

今天分享的就是这些了,不知道对你有没有帮助。

相关文章:

给编程初学者的一封信

提醒&#xff1a;以下内容仅做参考&#xff0c;具体请自行设计。 随着信息技术的快速发展&#xff0c;编程已经成为一个越来越重要的技能。那么&#xff0c;我们该如何入门编程呢&#xff1f;欢迎大家积极讨论 一、自学编程需要注意什么&#xff1f; 要有足够的时间、精力等…...

【无功优化】基于改进教与学算法的配电网无功优化【IEEE33节点】(Matlab代码时候)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…...

数据在内存中的存储(超详细讲解)

目录 浮点数家族 浮点数类型在内存中的存储 一.为什么说整型和浮点数在内存中存储方式不同&#xff08;证明&#xff09; 二.浮点数的存储规则 浮点数在计算机内部的表示方法 1.对于M的存储和取出规则 2.对于E的存储和取出时的规则 对前面代码结果进行解释&#xff1a; …...

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简单使用

如&#xff1a;天空 coco包含pascal voc 的所有类别&#xff0c;并且对每个类别的标注目标个数也比pascal voc的多。 一般使用coco数据集预训练好的权重来迁移学习。 如果仅仅针对目标检测object80类而言&#xff0c;有些图片并没有标注信息&#xff0c;或者有错误标注信息。…...

learnOpenGL-深度测试

深度测试&#xff1a;OpenGL将一个片段的深度值与深度缓冲的内容进行对比。执行一个深度测试&#xff0c;测试通过则深度缓冲将会更新为新的深度值。测试失败则片段被丢弃。 深度测试片段着色器及模版测试之后执行。 片段着色器中内置变量gl_FragCoord的z值即为深度值。 提前深…...

阿里云服务器数据盘是什么?系统盘和数据盘区别

阿里云服务器系统盘和数据盘有什么区别&#xff1f;系统盘类似Windows电脑的C盘&#xff0c;数据盘相当于其他盘符&#xff0c;数据盘可以有多个而系统盘只能有一个&#xff0c;数据盘可有可无而云服务器系统盘是必须要有的。阿里云服务器网来详细说下阿里云服务器数据盘和系统…...

linux常用命令精选

参考文章&#xff1a; Top 60 Linux Interview Questions and Answers - howtouselinux 在管理和维护Linux系统时&#xff0c;有一些常用的命令可以帮助您进行系统初始化和配置。这些命令涵盖了各种任务&#xff0c;包括系统设置、用户管理、软件安装和网络配置等。 本文将为…...

人体行为足力特征分析及其应用研究_kaic

第一章 绪论 随着社会现代化的发展和科技的不断进步&#xff0c;我国航天事业蓬勃发展&#xff0c;与此同时产生了很多亟待解决的难题&#xff0c;康复医疗成为航天医学和康复领域的重要课题之一。载人航天实践证明&#xff0c;失重对航天员生理功能有很大影响&#xff0c;这不…...

javascript基础二十七:说说 JavaScript 数字精度丢失的问题,解决方案?

一、场景复现 一个经典的面试题 0.1 0.2 0.3 // false 为什么是false呢? 先看下面这个比喻 比如一个数 130.33333333… 这是一个除不尽的运算&#xff0c;3会一直无限循环&#xff0c;数学可以表示&#xff0c;但是计算机要存储&#xff0c;方便下次再使用&#xff0c;但…...

重塑工作场所:后疫情时代组织韧性的8个策略

经济寒冬来临&#xff0c;倒挂的收益率曲线、持续上升的利率以及层出不穷的裁员公告等等&#xff0c;让经济学家们得出一个结论&#xff1a;全球经济正在衰退。然而&#xff0c;经济下行周期可能是卓越公司改变其命运的最佳时机。有研究表明&#xff0c;相对于非经济衰退时期&a…...

TCP协议为什么要三次握手而不是两次?

TCP&#xff08;Transmission Control Protocol&#xff0c;传输控制协议&#xff09;的历史可以追溯到1970年代初期&#xff0c;最初的版本是RFC 793&#xff0c;后来经过多次更新和改进&#xff0c;包括RFC 1122、RFC 1323、RFC 2018、RFC 2581、RFC 2873、RFC 3168和RFC 461…...

使用Vuex进行状态管理

在Vue.js应用程序中&#xff0c;状态管理是一个重要的主题。当应用程序变得复杂&#xff0c;组件之间的状态共享和通信变得困难&#xff0c;这时候使用Vuex就会变得十分有用。Vuex是一个专门为Vue.js设计的状态管理库&#xff0c;它提供了一个集中式的状态管理方案&#xff0c;…...

【优化调度】基于改进遗传算法的公交车调度排班优化的研究与实现(Matlab代码实现)

目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 1 概述 本文对当前公交企业调度系统进行了分析&#xff0c;建立了公交排班的数学模型。本文基于数据挖掘分析的结果上&#xff0c;使用截面客流量数据对模型进行约束&#xff0c;得出了公交客流出行的空间分布规律。再以…...

IMX6ULL裸机篇之I2C实验-硬件原理图

一. I2C 实验简介 I2C实验&#xff0c;我们就来学习如何使用 I.MX6U 的 I2C 接口来驱动 AP3216C&#xff0c;读取 AP3216C 的传感器数据。 AP3216C是一个三合一的环境光传感器&#xff0c;ALSPSIRLED&#xff0c;ALS是环境光&#xff0c;PS是接近传感器&#xff0c;IR是红外L…...

华为OD机试真题 Java 实现【获取字符串中连续出现次数第k多的字母的次数】【2023Q1 100分】,附详细解题思路

一、题目描述 给定一个字符串&#xff0c;只包含大写字母&#xff0c;求在包含同一字母的子串中&#xff0c;长度第 k 长的子串的长度&#xff0c;相同字母只取最长的那个子串。 二、输入描述 第一行有一个子串(1<长度<100)&#xff0c;只包含大写字母&#xff1b;第二…...

充分统计量和因子分解定理

充分统计量 定义&#xff1a; 设样本 X X X的服从分布 f ( X ∣ θ ) f(X|\theta) f(X∣θ)&#xff0c; θ ∈ Θ \theta\in\Theta θ∈Θ&#xff0c;设 T T ( X ) TT(X) TT(X)为一统计量&#xff0c;若在已知 T T T的条件下&#xff0c;样本 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标志

下文中的内容多数来自【参考】中的文章&#xff0c;这边进行一个整理和总结&#xff0c;后续会慢慢增加出现各个 RST 包的测试代码&#xff0c;便于理解。 TCP的 “断开连接” 标志 RST 标志 Reset&#xff0c;复位标志&#xff0c;用于非正常地关闭连接。它是 TCP 协议首部里…...

【软件质量与软件测试 白盒测试与黑盒测试】

第十章 黑盒测试 10.1 等价类划分&#xff1a; 10.1.1 划分等价类 等价类是指所有数据中的一组&#xff0c;它们具有相同的测试结果或相同的响应。等价类划分是将输入数据分为多个等价类的过程。 10.1.2 划分等价类的方法 划分等价类方法主要包括以下几种&#xff1a; 特…...

JavaScript教程(高级)

面向对象编程介绍 两大编程思想 &#xff08;1&#xff09;、 面向过程编程&#xff1a; &#xff08;缩写 POP&#xff09;&#xff08; Process-oriented programming&#xff09;面向过程就是分析出解决问题所需要的步骤&#xff0c;然后用函数把这些步骤一步一步实现&am…...

C++进阶 —— 范围for(C++11新特性)

目录 一&#xff0c;范围for介绍 二&#xff0c;范围for注意事项 一&#xff0c;范围for介绍 范围for&#xff08;range-based for loop&#xff09;是C11新引入的特性&#xff0c;可遍历各种序列结构的容器&#xff08;如数组、vector、list等&#xff09;&#xff1b;每次循…...

ELK +Filebeat日志分析系统

一、 ELK日志分析系统概述 1、ELK简介 ELK是三个开源软件的缩写&#xff0c;分别表示&#xff1a;Elasticsearch , Logstash, Kibana , 它们都是开源软件。新增了一个FileBeat&#xff0c;它是一个轻量级的日志收集处理工具(Agent)&#xff0c;Filebeat占用资源少&#xff0c…...

万字解析PELT算法!

Linux是一个通用操作系统的内核&#xff0c;她的目标是星辰大海&#xff0c;上到网络服务器&#xff0c;下至嵌入式设备都能运行良好。做一款好的linux进程调度器是一项非常具有挑战性的任务&#xff0c;因为设计约束太多了&#xff1a; 它必须是公平的快速响应系统的throughp…...

腾讯云服务器端口怎么全开?教程来了

腾讯云服务器端口怎么全开&#xff1f;云服务器CVM在安全组中设置开通&#xff0c;轻量应用服务器在防火墙中设置&#xff0c;腾讯云百科来详细说下腾讯云服务器端口全开放教程&#xff1a; 目录 腾讯云服务器端口全部开通教程 云服务器CVM端口全开放教程 轻量应用服务器开…...

深入理解Java虚拟机:JVM高级特性与最佳实践-总结-13

深入理解Java虚拟机&#xff1a;JVM高级特性与最佳实践-总结-13 Java内存模型与线程Java内存模型原子性、可见性与有序性先行发生原则 Java内存模型与线程 Java内存模型 原子性、可见性与有序性 Java内存模型是围绕着在并发过程中如何处理原子性、可见性和有序性这三个特征来…...

租售keysight E8257D 50G模拟信号发生器 销售/回收

是德&#xff08;Keysight&#xff09; E8257D 模拟信号发生器 Keysight E8257D (Agilent) PSG 模拟信号发生器提供业界领先的输出功率、电平精度和高达 67 GHz 的相位噪声性能&#xff08;工作频率可达 70 GHz&#xff09;。Agilent PSG 模拟信号发生器的高输出功率和卓越的电…...

【C++】什么是函数模板/类模板?

文章目录 一、函数模板1.什么是函数模板&#xff1f;2.函数模板格式3.函数模板原理4.函数模板实例化&#xff08;1&#xff09;隐式实例化&#xff08;2&#xff09;显示实例化 二.类模板1.类模板定义格式2.类模板的实例化 总结 一、函数模板 1.什么是函数模板&#xff1f; 函…...

为什么是ChatGPT引发了AI浪潮?

目录 BERT和GPT简介 BERT和GPT核心差异 GPT的优势 GPT的劣势 总结 随着近期ChatGPT的火热&#xff0c;引发各行各业都开始讨论AI&#xff0c;以及AI可以如何应用到各个细分场景。为了不被时代“抛弃”&#xff0c;我也投入了相当的精力用于研究和探索。但在试验的过程中&…...

批处理文件(.bat)启动redis及任何软件(同理)

批处理文件 每次从文件根目录用配置文件格式来启动redis太麻烦了 可以在桌面上使用批处理文件&#xff08;.bat&#xff09;启动Redis&#xff0c;请按照以下步骤进行操作&#xff1a; 打开文本编辑器&#xff0c;如记事本。 在编辑器中输入以下内容&#xff1a; 将文件保存…...