在我的教学的过程中,发现很多同学都觉得编程是一件很难的事情,甚至有同学说我使出了洪荒之力,上学期的《c语言》期末才考了60分,而且听很多学长说《数据结构》这门课平均通过率不到50%,于是乎不少同学都选择了迎难而退,有了换专业的想法。那么事实真的是这样吗?编程真的很难吗?
确实编程很难,你要想成为一名优秀的开发工程师确实需要具备很多条件,如你的计算机专业基础知识(算法与数据结构,操作系统,编译原理,数据库原理,计算机网络等)、英语、分析问题解决问题的能力等,这些都不是一朝一夕能够练成的,需要长时间的学习和领悟。但是如果你的目标不是那么高,而只是为了学习c语言或数据结构的基础知识,那么事情就没有你想的那么难。既然如此,那为什么还有那么多的学生觉得编程很难呢?原因在于没有掌握较好的学习方法。
今天就和大家一起来聊一聊编程初学者应该需要注意的一些地方。
1 代码格式
大家小时候都写过作文,如果你的作文字迹潦草,卷面邋遢,那么即使你的作文内容再丰富,逻辑性再强,你的得分也会很低。因为老师第一眼看了作文以后,就不想再继续看下去,所以得分低就是意料之中的事情。
写代码就和写作文一样,先不管你的代码写的多好,逻辑性多强,你要做的第一件事就是代码格式优美,该缩进的就缩进,该换行的就换行的。
代码1
代码2
以上两个代码你更愿意看哪一个?代码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点能够对你的编程有所帮助,为今后写出更好的代码打下基础。
你在学习编程的过程中,遇到哪些问题,欢迎在下面留言,后面会根据大家的留言情况,提供大家需要的编程知识。