- 分享
CSP-J/S 初赛复习(1)-计算机基本常识、进制与编码
- 2023-9-13 8:18:51 @
计算机常识
本节我们主要说计算机的基本常识问题,常识性问题一般没有固定的范围,考察的范围除了计算机相关的一些知识外,还会考察一些信息学竞赛常识,比如以前的比赛就考察了中国计算机学会于(?)年创办全国青少年计算机程序设计竞赛,甚至会考察一些比赛规则及计算机界一些名人,奖项,事迹等等,基本上每年都会出现几道这样的题。
一些计算机历史及人物等知识点:
艾伦(阿兰)·麦席森·图灵:英国数学家,计算机之父,人工智能之父,计算机逻辑的奠基者,提出“图灵机”概念,1966年由美国计算机协会ACM设“图灵奖”,是计算机界最负盛名、最崇高的一个奖项,有“计算机界的诺贝尔奖”之称,每年评选出一名计算机科学家,目前获得该奖项的华人学者仅有2000年图灵奖得主姚期智教授。现代计算机的基础是抽象的图灵机。(NOIP2017,2018提高组)
王选:汉字激光照排系统的创始人,为新闻、出版全过程的计算机化奠定了基础,被誉为“汉字印刷术的第二次发明”。中国计算机学会王选奖原名“中国计算机学会创新奖”,于2005年创立,每年评选一次,属于社会力量设立的科学技术奖。2006年,为了纪念王选院士为中国计算机事业做出的非凡贡献,学中国计算机学会将中国计算机学会创新奖更名为中国计算机学会王选奖。(NOIP2017提高组)
冯·诺依曼:美籍匈牙利数学家,现代电子计算机之父,世界上第一台现代意义的通用计算机EDVAC(离散变量自动电子计算机,二进制)的发明者,提出①存储程序思想 ②计算机硬件设备由存储器、中央处理器、控制器、输入设备和输出设备五部分组成
世界上第一台电子计算机:ENIAC(电子数值积分计算机,十进制),由宾夕法尼亚大学的莫奇莱教授和埃克特博士等为计算弹道轨迹而研制。
布莱士·帕斯卡:法国科学家,制造出机械计算机的第一人。
莱布尼茨:德国数学家,发明了“乘法器”,即能够连续重复地做加法减法。
巴贝奇:英国剑桥大学科学家,设计的“分析机”有齿轮式“存贮仓库”和“运算室”、“控制器”、输入输出部件,首次提出了类似于现代计算机五大部件的逻辑结构。
阿达·奥古斯塔:英国数学家,拜伦的女儿,第一个写软件的人,穿孔机程序创始人,建立了循环和子程序概念,为计算程序拟定“算法”。
香农:美国数学家,创立了开关电路理论,把二进制与运用以脉冲方式处理信息的继电器开关相对应,从理论到技术改变了数字电路的设计方向。
姚期智(清华就有姚班,就是以他的名字命名的):中国获图灵奖的大神
NOIP / CSP等的历史(基本每年都考):
NOI:中国计算机学会于1984年(当年,*提出计算机要从娃娃抓起)创办全国青少年计算机程序设计竞赛,即全国青少年信息学奥林匹克竞赛,是国内包括港澳在内的省级代表队最高水平的大赛。
NOIP:中国计算机学会于1995年创办全国青少年信息学奥林匹克联赛。NOIP在同一时间、不同地点以各省市为单位由特派员组织。全国统一大纲、统一试卷,初、高中或其他中等专业学校的学生可报名参加。联赛分初赛和复赛,初赛考察通用和实用的计算机科学知识,以笔试为主。复赛为程序设计,须在计算机上调试完成。参加初赛者须达到一定分数线后才有资格参加复赛。联赛分普及组和提高组两个组别,难度不同,分别面向初中和高中阶段的学生。
从2005年开始,NOIP不再支持Basic;从2022年开始,不再支持Pascal。
选手进入考场时,只许携带笔、橡皮等非电子文具入场。禁止携带任何电子产品或机器设备入场,无存储功能的手表除外;手机(关机)、U盘或移动硬盘、键盘、鼠标、闹钟、计算器、书籍、草稿纸及背包等物品必须存放在考场外。如有违规带入的,一经发现,NOI各省特派员可直接取消违规选手的参赛资格。
CCSP:大学生计算机系统与程序设计竞赛,由中国计算机学会(CCF)于2016年发起的一个面向大学生的竞赛,每年举办一次,考察的是算法、编程以及计算机系统设计能力,旨在进一步提高计算机教育质量,使学生通过竞赛进一步学习和掌握计算机系统知识,同时对高校计算机教育产生引领作用。
CSP:中国计算机学会于2014年推出CCF计算机软件能力认证,该项认证重点考察软件开发者实际编程能力,由中国计算机学会统一命题、统一评测,委托各地设立的考试机构进行认证考试。该项认证每年大约3、9、12月各举办一次。认证者不限年龄,不限学历,不限报考次数,不限国籍 ,在报名官网注册账户后均可报名参加认证。语言:C/C++(Dev-CPP 5.4.0 (Min GW 4.7.2)),Java(Eclipse (Java SDK 1.7.0_15)),Python(3.6.5) 浏览器:Chrome
CSP认证考试可以带纸质资料进入考场,不过只能是常用语言的程序设计基础书、数据结构的相关书籍。不允许U盘、手机等电子设备进入考场。
CSP-S/J:认证开始15分钟后,认证者不能再进入认证点。如有认证者提前离开认证点,除身体特别原因外,须在认证进行2小时后方可准予离开。在第一轮认证期间,任何人不得将试卷携带出考场。认证者进入考场时,监考检查认证者携带物品。认证者只许携带笔、橡皮等非电子文具入场。禁止携带任何电子产品或机器设备入场,无存储功能的手表除外;手机(关机)、U盘或移动硬盘、键盘、鼠标、闹钟、计算器、书籍、草稿纸及背包等物品必须存放在考场外。如有违规带入的,一经发现,CSP-J/S认证总负责人可直接取消违规认证者的参加资格。
CSP-S/J:认证开始15分钟后,认证者不能再进入认证点。如有认证者提前离开认证点,除身体特别原因外,须在认证进行2小时后方可准予离开。在第一轮认证期间,任何人不得将试卷携带出考场。认证者进入考场时,监考检查认证者携带物品。认证者只许携带笔、橡皮等非电子文具入场。禁止携带任何电子产品或机器设备入场,无存储功能的手表除外;手机(关机)、U盘或移动硬盘、键盘、鼠标、闹钟、计算器、书籍、草稿纸及背包等物品必须存放在考场外。如有违规带入的,一经发现,CSP-J/S认证总负责人可直接取消违规认证者的参加资格。
**主要可以分为以下几类: **
计算机基本常识:
1.计算机和信息社会(信息社会的主要特征、计算机的主要特征、数字通信网络的主要特征、数字化)
2.信息输入输出基本原理(信息交换环境、文字图形多媒体信息的输入输出方式)
3.信息的表示与处理(信息编码、微处理部件MPU、内存储结构、指令,程序,和存储程序原理、程序的三种基本控制结构)
4.信息的存储、组织与管理(存储介质、存储器结构、文件管理、数据库管理)
5.信息系统组成及互连网的基本知识(计算机构成原理、槽和端口的部件间可扩展互连方式、层次式的互连结构、互联网络、TCP/IP协议、HTTP协议、WEB应用的主要方式和特点)
6.人机交互界面的基本概念(窗口系统、人和计算机交流信息的途径(文本及交互操作))
7.信息技术的新发展、新特点、新应用等。
计算机基本操作:
1. Windows和LINUX的基本操作知识
2. 互联网的基本使用常识 (网上浏览、搜索和查询等)
3. 常用的工具软件使用(文字编辑、电子邮件收发等)
计算机中的进制与编码
古时候,人们是如何来传递消息的?
当年周幽王为博褒妃一笑,不顾众臣反对,竟数次无故点燃边关告急用的烽火台,使各路诸侯,长途跋涉,匆忙赶去救驾。结果,被戏而回。周幽王从此便失信于诸侯,最后,当边关真的告急之时,他点燃烽火却再也没人赶来救他了!不久,便死于刀下,亡了西周。西周第九代国君是周厉王,贪财好色,昏庸残暴,激起了公元前841年的“国人(平民)暴动”。周朝从此衰落下去,社会动荡不安。
扯远了,我们说有城池A和城池B,城池B为前线,当城池B受到攻击的时候,需要城池A派来援兵。这个时候城池B点着了防火台,如果只有一个烽火台,那么只有点着火和没点火两种状态。无法准确表示攻击城池B的军队数量,这个时候,有人想到了一种表示方法。
我每一座烽火台都可以表示两种状态,点火和未点火,分别用0和1来表示。
那两座烽火台呢? 没有烽火台被点着火的时候,表示没有敌人,只点着第一座烽火台的时候,表示来了一个敌人,只点着第二座烽火台的时候,表示来了2个敌人。 当两座烽火台都被点着的时候,就表示来了3个人。表示数字 0-3。
如果有三座烽火台呢? 三座烽火台的时候表示了8中状态。表述数字0 -7
如果有四座烽火台呢 0000 0001 0010 0011 0100 0101 0110 0111
1000 1001 1010 1011 1100 1101 1110 1111
以此类推:
当有8座烽火台的时候,最大可以表示多少? 如果敌人来了130个人,如何表示呢?
150人又如何表示?
咱们平时用的进制是10进制。在计算机中,还有另外两种进制八进制和十六进制
十进制: 逢十进一
表示数字:0123456789
二进制:逢二进一
表示数字:0 1
八进制: 逢八进一
01234567
作用:在某些编程语言里提供了使用八进制符号来表示数字的能力,而且还是有一些比较古老的Unix应用在使用八进制。
和二进制之间的转换:
2-->8 : 取三合一 8-->2 :取一分三
十六进制: 逢十六进一
表示数字:01234567ABCDEF
计算机中的单位:
位 bit (比特)(Binary Digits):存放一位二进制数,即 0 或 1,最小的存储单位。 字节 byte:8个二进制位为一个字节(B),最常用的单位。 1B(bytes) = 8bit 1KB (Kilobyte 千字节)=1024B, 1MB (Megabyte 兆字节 简称“兆”)=1024KB, 1GB (Gigabyte 吉字节 又称“千兆”)=1024MB, 1TB(Trillionbyte 万亿字节 太字节)=1024GB, 1PB(Petabyte 千万亿字节 拍字节)=1024TB, 1EB(Exabyte 百亿亿字节 艾字节)=1024PB, 1ZB (Zettabyte 十万亿亿字节 泽字节)= 1024 EB, 1YB (Yottabyte 一亿亿亿字节 尧字节)= 1024 ZB, 1BB (Brontobyte 一千亿亿亿字节)= 1024 YB
硬盘空间少比买的时候要少?
是因为 换算时他们将 1024 按照 1000来算 256G的硬盘:256G= ?Bytes:按1000来算
256G 硬盘 1K = 1000B 1M = 1000K 1G = 1000M = 1000*1000*1000B =1000000000B 256G = 256000000000B
256000000000/1024/1024/1024 B = 238.4185791015625 G 500GB*1000*1000*1000/1024/1024/1024=465.66
百兆宽带,下载速度只能达到十多兆。
宽带运营商按照二进制来计算,所以要100M的宽带要除8才是下载的速度。
拓展:
二进制的编码
计算机内部是由集成电路这种电子部件构成的,电路只可以表示两种状态——通电、断电
因为这个特性,计算机内部只能处理二进制。那为什么我们能在计算机上看到字母和特殊字符呢?
如果我们用一个二进制数字表示一个字符,比如说用“0100 0001”来表示A。
根据这个对应关系,我们制作一个表格,这个表格里一个二进制数字对应一个字符。
这就是编码。
这套编码叫ASCII(美国(国家)信息交换标准(代)码),使用7个或8个二进制位进行编码的方案,最多可以给256个字符。使用了ASCII码,不同的计算机之间就可以实现数据的标准化。 但是ASCII使用的时候有一些限制。他最多之可以表示256个字符。如果有其他的字符就无能为力了。ASCII只能表示26个基本的拉丁字母、阿拉伯数字和英式标点。因此也只能用于显示现代美国英语。 后来计算机世界开始有了其他语言,ASCII码已经无法满足需求。后来不同语言的人各自为自己定制了一套属于自己的编码,同时与ASCII保持兼容。这些编码统称MBCS,到了这里大家都开始好似用双字节。(中国的叫GB*,比如GBK). 在后来有人开始觉得,这么多编码,有些编码之间还不兼容,太让人头大了,于是有这么一群人就坐在一起想出了一个办法:所有的语言都使用同一种编码,这种编码就是Unicode。Unicode使用最少2个字节(1个字节=1BYTE=8bit=一个长度为8的二进制数) 来表示字母和符号等,有时候是4个字节。这样就解决了上面遇到的问题。 Unicode又叫万国码,是业界的一种标准。但是有人又觉得如果我要表示一个ASCII里的字符,使用unicode来表示不是太浪费空间了吗,于是就有人想出了另外一种解决方案——UTF-8。 UTF-8是对Unicode编码的压缩和优化,最大的特点是它采用了变长的编码方式,他不再是最少使用2个字节,而是将所有的字符进行分类。ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存… GB2312是1980年国家制定的汉字内码规范,收录了6千多汉字及符号,表示的符号有限 ;国家标准化委员会又制定了GB13000,GB13000制定的原则与GB2312不同,GB13000以国际化为目标, 该标准编码参照了Unicode 2.0 标准编码,与GB2312完全不兼容,因早期的计算机中的汉卡采用了GB2312,无法顺利向GB13000过渡,所以GB13000变成了一个纸面上的 标准,无法推广-;有了这个经验之后,国家标准化委员会制定了GBK标准,他兼容GB2312标准,同时在GB2312标准的基础上扩展了GB13000包含的字。
其他相关资料: 常见编程语言:
分两类:面向对象和面向过程。
高级语言和低级语言的区别:
高级语言需要编译运行,常数较大,运行速度慢。而低级语言常数极小,运行速度快。此外,高级语言更容易移植。
常见低级语言:
汇编
面向对象的高级语言:
C++,Java,EIFFEL,Simula 67等。
面向过程的高级语言:
C,Fortran语言。
更多:
结构化语言:代码和数据分离,专门描述一个功能单元逻辑要求。它不同于自然语言,也区别于任何特定的程序语言(如VB、VC 等),是一种介于两者之间的语言。结构化描述语言一般采用英语,既有自然语言灵活性强、表达丰富的特点,又清晰易读和逻辑严密,还是一种用于数据库查询和编程的语言,已经成为关系型数据库普遍使用的标准,对程序设计和数据库的维护都带来了极大的方便,广泛地应用于各种数据查询。
Pascal:语法严谨,层次分明,程序易写,可读性强,是第一个结构化编程语言。它基于ALGOL编程语言,是面向过程的编译型语言程序语言。
C:结构化编译型编程语言,具有变量作用域以及递归功能的过程式语言,是面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点,在程序设计中备受青睐。C语言的设计影响了众多后来的编程语言,例如C++、Java、C#等。
面向对象语言:以对象作为基本程序结构单位,用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分,类、对象的思想实现程序共享,适合大型程序。Simula是第一个面向对象语言。
VB(Visual Basic):Microsoft开发的一种通用的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化混合型(侧重于解释)程序设计语言,是一种可用于微软自家产品开发的语言。
C++:面向对象的编译型程序设计语言,最初它被称作“C with Classes”(包含类的C语言),是C语言的继承,进一步扩充和完善了C语言。它是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言,支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设计等多种程序设计风格。
Java:跨平台、分布式、多线索、面向对象的混合型(侧重于解释)程序设计语言,是一种先编译后解释的语言,所以它不如全编译性语言快。许多的Android应用都是Java程序员开发者开发,Java还广泛应用于企业级Web应用开发和移动应用开发。
解释语言:应用程序源代码一边由相应语言的解释器“翻译”成目标代码(机器语言),一边执行,每条语言只有在执行才被翻译,每执行一次就翻译一次,因此效率比较低,而且不能生成可独立执行的可执行文件 。解释程序的优点是当语句出现语法错误时,可以立即引起程序员注意,而程序员在程序开发期间就能进行校正。一般地来说,如果你听别人说到动态语言,大多都是指解释型语言。eg.Python
编译语言:编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码 (机器语言),因此其目标程序可以脱离其语言环境独立执行,使用比较方便、效率较高 。Java 程序需要编译,但是没有直接编译成为机器语言,而是编译成为字节码,然后在 Java 虚拟机上用解释方式执行字节码。这种运行方式带来了一些优势,但同时直接导致了复杂的环境、不算很高的效率和很多的争议。