聊一聊编程

简介: 聊一聊编程

08510c1b595ef3516453bb3016d64455.png


在我的教学的过程中,发现很多同学都觉得编程是一件很难的事情,甚至有同学说我使出了洪荒之力,上学期的《c语言》期末才考了60分,而且听很多学长说《数据结构》这门课平均通过率不到50%,于是乎不少同学都选择了迎难而退,有了换专业的想法。那么事实真的是这样吗?编程真的很难吗?



确实编程很难,你要想成为一名优秀的开发工程师确实需要具备很多条件,如你的计算机专业基础知识(算法与数据结构,操作系统,编译原理,数据库原理,计算机网络等)、英语、分析问题解决问题的能力等,这些都不是一朝一夕能够练成的,需要长时间的学习和领悟。但是如果你的目标不是那么高,而只是为了学习c语言或数据结构的基础知识,那么事情就没有你想的那么难。既然如此,那为什么还有那么多的学生觉得编程很难呢?原因在于没有掌握较好的学习方法。



今天就和大家一起来聊一聊编程初学者应该需要注意的一些地方。



1 代码格式



大家小时候都写过作文,如果你的作文字迹潦草,卷面邋遢,那么即使你的作文内容再丰富,逻辑性再强,你的得分也会很低。因为老师第一眼看了作文以后,就不想再继续看下去,所以得分低就是意料之中的事情。



写代码就和写作文一样,先不管你的代码写的多好,逻辑性多强,你要做的第一件事就是代码格式优美,该缩进的就缩进,该换行的就换行的。


代码1


d9db7f0caad420e61fa91e9bc2f11396.jpg


代码2


a1b3621d9cb7f70a7b14645161212b50.jpg


以上两个代码你更愿意看哪一个?代码1毫无格式可言,没有任何的缩进,也没有任何的换行,试想如果是你去读这样的代码,你什么感受。



所以写代码是给人读的,首先要做的一点就是优良的格式,我相信这是每一位同学都应该做到的。



2 先后顺序


做什么事情都有先后顺序,先做什么,再做什么,最后做什么。这里面都是有先后关系的,不是想到什么就做什么。


对于C语言编程来说,我们首先要写的就是程序的模板。


#include <stdio.h>



int main(){


     // 你的代码


     return 0;


}



C语言是一门面向过程的语言,也就是说一个C语言的程序是由一个个独立的函数构成,在这些函数中有一个非常特别的函数,那就是main函数。为什么特殊呢?因为它是整个程序的入口。



有了上面的基础理论之后,我们知道写C语言程序其实就是写一个个的函数。



所以,函数是如何定义的,有哪些组成部分,我相信这是每一位同学都能够做到的。



3 不要一口气吃成胖子



做什么事情都不能着急,要一步步来,心急是吃不了热豆腐的,同样对于编程也不例外。



一个程序的代码越多,其隐含bug的几率也就越大,相应的你解决bug的时间也就越长。我相信大部分同学应该都认同上面这句话,所以如果一个程序只有打印“hello,world”这个功能,那么这个程序怎么也不会出现问题。



上面这句话其实告诉了我们一个编程的基本道理:所有的大的程序都不是一气呵成的,而是一点点累积起来的。即只有在确保上一个功能正确的前提下,我才会增加一个新的功能。



举个简单的例子说明一下:


输入5位学生的一组信息,包括学号、姓名、数学成绩、计算机成绩,求得每位同学的平均分和总分,然后按照总分从高到低排序。



这是我给学生上课时布置的一道作业题,很多学生都实现了功能,但在实现的过程中遇到了很多的问题,接下来我便介绍一下,如果是我,我该怎么去实现。



步骤1:写模板。


#include <stdio.h>



int main(){



     return 0;


}



步骤2:分析题目,确定有几个任务。


通过对题目的分析,我们发现主要有3个任务:


1)输入5个学生的信息;


2)计算5位学生的平均分;


3)按照总分成绩对5位学生进行排序。



这是非常非常关键的一步,你得非常了解你要做的事情有哪些?将一个大的任务分解成多个小的任务,然后再去解决每一个小的任务。当所有的小的任务都解决了,那么大任务也就自然而然的解决了,这就是著名的“分治法”的思想。



有了上面的任务分解后,接下来我们就首先解决第一个任务:“输入5个学生的信息”。


每一个学生包含了学号、姓名、数学成绩和计算机成绩,该用什么结构来保存呢?大家之前学过C语言的知识应该都能很快想到,我们应该使用结构体。


struct student{


     int no;


     char name[20];


     float math_score;


     floatcomputer_score;


};



输入5个学生的信息,之后保存在什么地方呢?我们很快就能想到结构体。


struct student students[5];



最后便是处理如何输入的问题了,将用户输入的信息保存在上面的结构体数组里面。


有了上面的分析之后,我们能够很快写出下面的代码。


#include <stdio.h>



struct student {


   int no;


   char name[20];


   float math_score;


   floatcomputer_score;


};



struct student students[5];



int main(){



   int i = 0;


   for(; i<2;i++){


      scanf("%d,%s,%f,%f", &students[i].no, students[i].name,&students[i].math_score, &students[i].computer_score);


   }



   return 0;


}



但是这里面大家需要注意的一点是,我的代码虽然写完了,但是我并没有验证它的正确性,所以还应该加上一些验证性代码。


#include <stdio.h>



struct student {


   int no;


   char name[20];


   float math_score;


   floatcomputer_score;


};



struct student students[5];



int main(){



  // 实现任务1的代码


   int i = 0;


   for(; i<5;i++){


      scanf("%d,%s,%f,%f", &students[i].no, students[i].name,&students[i].math_score, &students[i].computer_score);


   }



  // 为了验证任务1代码正确性而写的额外的代码

   for(i = 0; i <5; i++){

      printf("%d, %s, %f,%f", students[i].no, students[i].name,students[i].math_score, students[i].computer_score);

   }

   return 0;

}


只有在完成任务1的代码并且验证它的正确性之后,我才会开始第2个任务的代码编写。



以上就是给大家分析的什么叫编程的基本方法,只有在确认上一个任务完全正确的前提下,才会开始新的任务。



总结


希望上面介绍的3点能够对你的编程有所帮助,为今后写出更好的代码打下基础。



目录
相关文章
|
9月前
|
存储 关系型数据库 MySQL
由浅入深:数据库编程概念与实战
由浅入深:数据库编程概念与实战
184 1
|
人工智能 分布式计算 Java
【C++初阶】前言——C++的发展简述及学习方法分享
之前我们一直分享C语言和使用C语言完成数据结构的初阶的文章,今天我们正式进入C++的学习,这篇文章主要是给大家带来的是C++的由来、以及和C语言的区别、更主要的是和大家分享自己的学习方法,给一些我的建议。
|
3月前
|
机器学习/深度学习 人工智能 算法
编程之路:从代码到哲学的感悟
【10月更文挑战第42天】在编程的世界里,每一行代码都是思想的体现。本文将通过个人的技术成长经历,探讨如何从简单的代码编写进阶到对技术哲学的理解。我们将一起走进编程的内在世界,发现那些隐藏在键盘敲击背后的深刻意义。
|
2月前
编程之路:从代码到哲学的思考之旅
在数字世界的编织中,每一行代码都是我们与机器对话的语言。本文将带领读者穿梭于编程的世界,探索技术背后的深层意义,以及如何通过代码实现个人成长和对世界的理解。我们将一起走进编程的内在逻辑,解锁那些隐藏在键盘敲击声中的哲理,并分享一些实用的编程技巧。
37 3
|
8月前
|
Linux 开发工具 C++
技术笔记:RustGUI编程
技术笔记:RustGUI编程
|
5月前
|
JavaScript 前端开发 Python
探索编程的本质:从代码到哲学的奇妙旅程
该文档指导如何安装NodeJS及PyExecJS。首先从官网下载并安装NodeJS,验证安装是否成功可通过命令`node --version`检查版本。PyExecJS则通过`pip install PyExecJS`进行安装。安装后,通过Python导入`execjs`模块可查看执行JS的环境,并使用`eval`和`compile`函数执行JavaScript代码或编译JS脚本。具体案例展示了简单的JS执行与环境选择方法。
23 1
|
6月前
|
算法 JavaScript 前端开发
探索代码之美——从小白到大牛的编程旅程
【8月更文挑战第26天】在编程的世界里,每一行代码都是构建梦想的基石。本文将带你领略编程的魅力,从最初的迷茫到技术的熟练,一起见证一个编程爱好者如何通过不断学习和实践,解锁新技能,最终成为领域内的专家。让我们跟随这段旅程,发现那些看似晦涩难懂的代码背后的艺术与哲理。
|
5月前
|
程序员 项目管理 数据库
探索代码之美:从小白到大牛的编程旅程
【9月更文挑战第9天】在编程的世界里,每个人都是从零开始,但每一步的成长都能让我们更接近技术的深渊。本文将通过个人的技术感悟,带你领略编程的魅力和挑战,从基础语法的学习到复杂项目的管理,一起见证一个程序员如何在实践中不断进步,最终达到技术的新高度。
48 0
|
6月前
|
算法 Java 程序员
探索代码之美——从小白到大牛的编程旅程深入理解Java中的异常处理机制
【8月更文挑战第29天】编程,一门看似神秘而复杂的艺术,实则充满无限可能与创造的乐趣。本文将带你走进编程的世界,从最初的迷茫与困惑,到逐步掌握编程思维,再到深入理解代码背后的哲学,一起见证一个编程小白如何成长为技术大牛的奇妙旅程。
|
7月前
编程之路:从代码到架构的心路历程
【7月更文挑战第9天】在数字世界的迷宫中,每一行代码都承载着创造者的梦想与挑战。本文将通过个人技术感悟的镜头,探索编程实践的深层次价值,从最初的代码编写到复杂的系统架构设计,揭示技术成长的内在逻辑和情感变迁。我们将一同穿梭在技术的森林里,寻找那些让代码生动起来的秘密。
43 2