入门组CSP-J考查的第一部分:基础知识与编程环境
这部分内容属于基础常识类,对计算机的构成、操作系统、计算机网络以及计算机的发展历史有个基本认识和了解。
其中,对赛事NOI也要有个大致了解。
同时并能知道计算机的程序设计语言的基本概念,程序的开发环境和编译器的使用等。
这部分内容找些视频看看,做些了解。考试的时候大概也就一条左右。
另外,这部分中对于位、字节与字的了解,以及二进制、八进制、十进制和十六进制的理解和相互转化做重点掌握,大概会有2条左右的题目。
入门组CSP-J考查的第二部分:C++程序设计
C++是信息奥赛指定的唯一编程语言,所以C++是必学,并且是重头戏!在考试的时候,无论是入门组的CSP-J还是提高组的CSP-S,都是分两次考试。
第一次考试是笔试,全部是选择题,包括C++的程序缺空也是选择,都不需要孩子敲代码,但要能看懂程序。当然也有运气成分,因为不懂的可以盲选。
但当第一次考试的成绩出来后,按照成绩排名划分成晋级的分数线,在分数线上的才能进行第二次考试的报名。
而第二次考试就是进行上机编程考试了,这就是实打实的编程,没有选择填空那么讨巧。所以,C++的能力必须以能解决某问题的编程为最终考验。
和大部分的程序设计编程语言的学习一样,C++的学习离不开这些要点:
程序基本概念,比如常量、变量、字符串,编译和调试等
C++的基本数据类型,比如整数型、实数型、字符型、布尔型等
C++的基本语句,比如输入输出语句、if条件语句、for循环语句等
C++的基本运算,设计到的程序运算有算术运算、关系运算、逻辑运算、三目运算以及位运算等
一些数学库的常用函数,比如绝对值函数、平方根函数等
数组的了解,以及更复杂的二维数组和多维数组
结构化程序设计,也就是三种结构(顺序、分支、循环)的综合运用
字符串的处理
函数与递归
结构体与联合体,都是3星等级的难度,入门组的最高难度不超过5
指针类型,都是4星等级的难度
文件及基本读写
STL模板等
入门组CSP-J考查的第三部分:数据结构
数据结构是所有编程学习绕不开的知识,也到了学习的重难点。
入门组CSP-J考查的数据结构主要是四类,分别是线性结构、简单树、特殊树和简单图。
线性结构主要是链表、栈和队列;
简单树主要是对二叉树的学习;
特色树是对完全二叉树、哈夫曼树的学习;
图的学习是对邻接矩阵、邻接表的掌握。
入门组CSP-J考查的第四部分:算法
算法是进行整个学习的深水区。
入门的算法包括枚举法、模拟法;
基础的算法包括贪心法、递推法、递归法、二分法、倍增法等;
排序算法包括冒泡排序、选择排序、插入排序等;
搜索算法包括深度优先和广度优先;
图论算法涉及遍历和泛洪算法。
数据结构和算法的结合就是编程,最终的编程写代码的考验也就此开始。
入门组CSP-J考查的第五部分:数学与其他
因为编程离不开运算,运算离不开数学知识,涉及到初等数学,也就是初中的代数和几何
其他还有一些初等数论、取整、辗转相除法、素数筛法等,这些概念有助于孩子认识程序或编写程序时学会应用
这部分内容主要是在日常的编程训练中使用,先理解掌握数学点知识,然后掌握在C++中如何应用。
这里有一分关于信奥赛入门组CSP-J的考试大纲思维导图,可以点击查看
总之,对于在暑假备考入门组CSP-J来说,优先级排序是:
首先要确保先学会C++,学会运算、结构;
对于基本掌握C++的,要对循环、嵌套循环和数组进行重点练习;
如果c++比较硬了,就对算法进行演练,尤其是贪心和排序;
如果简单算法没问题了,那就进阶高级算法,动态规划(DP)和搜索算法。