既然要学习编程就不得不提一下信息学奥赛。
信息学奥赛的主旨在于经过比赛活动培育大批核算机爱好者,选拔优秀的计算机后备人才。信息学奥赛作为世界公认的五大奥赛之一,知识点涵盖广泛(如图论、动态规划、数据结构、数论等算法),其目的是拓宽学生的视野、培养思维、紧跟时代步伐,绝非培养青少年软件开发者!
简单来说:信息学=编程语言+算法。信息学奥赛则考查学生对算法和编程能力的掌握。
就算法而言,同一种算法可以由不同的编程语言来写。不同的语言写的算法所实现的效果是一样的,只是它们在语法和运行效率上稍微有点差异而已。编程语言只是工具,验证、实现算法的工具!算法才是核心!
但"工具"掌握得不好,又无法支撑后续的算法学习。
Part1
编程语言有很多,Pascal、C、C++、Java、Python等,为什么要选C++呢?
1、2020年开端,除NOIP以外的NOI系列其他赛事(包含冬令营、CTSC、APIO、NOI)将不再支撑Pascal语言和C语言;
2、从2022年开端,NOIP比赛也将不再支撑Pascal语言。即从NOIP2022开端,NOI系列的一切赛事将悉数取消Pascal语言。在无新增程序规划语言的状况下,NOI系列赛事自2022开端将仅支撑C++语言。
Part2
既然想用C++写出第一个欢迎程序“helloworld”,还是要了解下这个语言的来龙去脉。
Part3
比赛中运用C++语言,并不需要选手完全掌握C++语言,一些较难的内容并不学习,也为后期更复杂的运用打下基础,另外受IOI影响,在信息学比赛学习中选用C++也成了必然趋势,现在绝大多数学生也会选择C++作为信息学程序语言。
C++的学习能够培育孩子的思想能力,训练创新思想。C++课程中,需要学习组合数学、图论、根本算法、数据结构、搜索算法及数学建模等知识,能够加深学生对数学的了解,提高孩子的逻辑思想,而这些又能帮助其更好地学习其他学科。
至于从哪个年龄段去学,我的感觉是适合就好,小学四五年级就可以开端学习C++,经过C++语言的学习培育编程思想和着手能力,对C++代码有根本的认知。经过体系学习,建立根本的编程思想,把握根本指令(包含输入输出句子、运算符、变量的运用、顺序结构、分页结构、循环结构的根本运用)等,这时能够对杂乱的数学和逻辑问题有着更好的了解。当孩子开始具备了编程根底,再进行进阶学习时,就能够从高深的编程语言下手了。
Part4
不可否认的是,C++是一门难学的编程言语,但静下心来学还是可以接受的。想学好它或者想学好C++去参加信奥,必须要有明确的目标和为目标学习下去的勇气和毅力。
因为C语言的学习相对比较枯燥,过程中也必然会经历一段焦躁期。这个时候特别需要家长支持、鼓励和不放弃。
必须要多练习、多动脑、多思考、多总结。这个时候一定要有错题本儿。因为信奥其实是一个黑盒测试,就是给你一个输入。然后让你得到一个输出。这时,某一些输入能得到正确的输出,但是也有一些输入得不到。这时就需要在做题的过程中去多次总结错误的情况和细节。反复纠错、积累经验,增加自己编程的能力。
在解题或比赛的过程中,有很多同学不是不会编这道程序,能编也编的出来,但是因为会忽略掉某一些细节,导致这个程序得不到满分。
学习最快的方法就是有老师的指导,一定要相信老师的专业性。遇到问题,一定要及时沟通,有什么问题及时跟老师提,可以随时去调整进度和安排。
Part5
转入正题,再说估计有人脑袋要炸了,但这篇就是要了解下自己使用的工具,所以还是建议认真准备下。
信息学奥赛中选用的开发工具是Dev-C++,虽然官方已经停止维护该开发工具,LastUpdate停止在2016-11-29,但对于初学C++来说,不失为是一种非常适合入门的应用,大家可以到如下网站去下载安装包:
最新版本是下面这个:
具体安装过程这边不赘述,但安装完成后打开之时,大家要留意选择“简体中文”。尤其是低龄学生学习更方便一些。
Part6
下面我们通过一段经典的入门程序——“helloworld”,来大致了解下c++代码的基本格式:
#include<iostream>usingnamespacestd;intmain(){cout<<"Helloworld!";return0;}如果这是你第一次编写程序,可以尝试把上面的代码复制一份,并且你成功执行了上述过程,那么恭喜你!你已经完成了每一名程序设计者在开始学习编程时接触到的第一个,也是最有价值的一个编程任务:“你好,世界!”。
编写程序输出helloworld,对于编程者来说,是十分具有意义的一刻——这标志着你正式走进了编程的殿堂,你所将要学习的一切编程技巧,都会从此时此刻开始加入你的知识库。
欢迎成为一名编程者!
Welcome,Coder,totheworldofProgramming!
接下来我们解析下代码,里面很多词可能枯燥,慢慢理解,理解不了就无视。
第1行代码:
“#include",include就是引入、包含,iostream是c++语言中的头文件,在这个文件里面包括了很多已经写好的,可以直接给我们重复使用的常用的标准的输入输出函数或者说方法,比如:输入/输出、错误警告等。第5行代码中的cout方法就是该头文件提供的方法。
#include整条语句的意思就是你可以理解为,你的代码比喻为在生产一辆法拉利,然后你联系iostream这个厂商提供给你轮子、螺丝钉等这些原材料,这样,你在生产“法拉利”的时候,就可以直接用iostream厂家提供的轮子了,不用自个一个一个做轮子了,甚至做螺丝钉了。
第2行代码:
"usingnamespacestd;",c++不同于c的地方其中一个就是多了这么一个命名空间,这个是c++中必须要有的。关于用这个命名空间的原因,我们打个比方,随着工业革命的蓬勃发展,能够提供轮子的厂商越来越多,当我们联络的两个厂商中,都提供轮子给你时,你就要说明清楚,是要A厂商的轮子,还是B厂商的轮子。对应:随着C++的蓬勃发展,能能够提供相同方法的头文件越多越多,当我们引用的两个头文件中,都提供同样的方法(比如lunzi())给你时,你就要说明清楚,是要A文件的方法(lunzi()),还是B文件的方法(lunzi()),因此,在引入头文件之后,我们需要有个命名空间来标识,用的是谁的方法。姑且这么理解,如果还是不理解,放过也无妨。
第3行代码:
第4行代码:
是一个大括号,它标识一段代码块的开始,这里跟第7行的大括号是成对出现的,第7行的大括号标识的是这一段代码块的结束。大括号包裹着的内容,就是这个函数能够起到的作用,比如功能等等。
第5行代码:
“cout<<"HelloWorld!";”,cout就是用的iostream这个厂商提供的轮子(方法),作用就是输出“<<”后面的内容,"<<"是可以连续使用的,比如你可以试试cout<<"HelloWorld!"<<"娃哈哈"<<123<<"达拉崩吧"< 第6行代码: "return0;",表示的返回值,也就是main这个方法,你调用了它之后,它给你反馈的一个信息,就好比是,你问他5+3等于多少,它给你回答8差不多的意思,具体内涵会在以后学习到函数的时候来详细阐述,另外,这个回答的内容,跟main前面的int类型也有关系,当然也是后话。 以上就是对我们第一个c++代码进行的逐行解析,目的也是想通过这样的方式告诉大家,学习编程,就是要学会阅读代码,而阅读代码,就是需要一行一行的读懂每一条指令,有同学一听头就大了,那动辄几百行的代码,不得看的两眼昏花吗?别担心,熟悉了之后,一目十行甚至一目百行都是可能的。 实际操练一下: 大家打开Devc++后通过“Ctrl+N”快捷键新建一源文件,然后试着敲完上述代码,“Ctrl+S”快捷键按照下述方式保存后,按下“F11”快捷键编译运行看看效果吧。 未来每节课内容不会很多,关键是希望想学的同学一定要自己动手实践,把代码可以熟练运用到不用“临摹”,都可以自行完成为止,就好比写作文一样。课后大家也可以试试尝试不同的输出内容。 Part7 目前,我们知道了C++的HelloWorld程序写法、运行的结果样式和代码含义,接下来可以思考一下。