202111051156计算机基础与编程环境.mp4

提升学生计算思维创设智慧课

关于学习电脑的推荐

笔记本电脑的配置,建议CPU i7,内存8G或者16GB,其他的没有特殊要求。

有几点注意的:

  1. 不建议买很贵的,因为很贵就会觉得珍惜成累赘,不舍得用,怕坏怕丢
  2. 电子产品更新换代很快,两三年基本就全新一套
  3. 不用买游戏本,学习用不上,纯是玩游戏,如果想好好玩游戏,买个台式机,好点
  4. 品牌方面,建议的品牌是大品牌,我比较喜欢thinkpad,因为键盘布局很合理,按键舒适
  5. 其他方面,就看预算,看外观是否喜欢即可,没有特别要注意的

有几点是必须避免的:

  1. 电脑正常操作都要卡一卡的,那是要重装操作系统的,重装一下就能好
  2. 电脑键盘脏的不像样子的,也是很糟糕

    Windows环境下的操作

    Windows操作系统快捷键

  • ctrl + c 复制
  • ctrl + v 粘贴
  • ctrl + z 回退

  • win + r 打开运行命令窗口,输入cmd,打开命令行窗口

  • win + d 桌面最小化
  • win + e 打开我的电脑

  • 鼠标右键,然后按wf,创建文件夹快捷操作

  • alt + tab 不同窗口之间的切换,按的顺序是按住alt,点tab。

  • 一般请非常熟练操作alt + tab切换,练习两个窗口之间的来回切换,提高学习效率。

    Windows下使用Dev C++

  • 关闭符号自动补全

  • 关闭代码自动补全
  • 不要改乱七八糟的字体,尽量使用自带
  • 代码字体大小,使用Ctrl + 滚轮

  • 快捷键

  • Ctrl + d,删除一整行
  • Ctrl + Shift + e,复制一行
  • Ctrl + Shift + 上/下,上下移动一整行
  • Ctrl + /,注释一整行
  • home/end,快速移动到行首/行尾

    必须使用Chrome浏览器

    很多学生用浏览器用的是360浏览器,而这个浏览器的广告实在太多,蹦出来频次高,内容娱乐化强,都是小游戏小电影的,影响注意力集中。一般情况下,学习期间,使用Chrome浏览器。

电脑上的杀毒软件不用安那么多,个人电脑没必要搞那么多,就安一个360防火墙足够。还有很多学生,安装一些游戏,一顿安装,被自动安装了一个小软件、小游戏,清理清理。

macOS环境下的操作

macOS,是很好的,不用装一个Windows系统,搞一个脱裤子放屁。熟悉一下操作的事情,不是大事,不用纠结。这些都是写代码的身外物,坚持使用7天,就会对macOS熟悉了。

VS Code(Visual Studio Code),我不建议用这个了

macOS下不能使用DEV C++,如果用vim,学习成本比较高(学习vim是非常好的,其实成本很低,跟我线下上课的孩子,都会使用,因为我有小妙招)
我们可以选择vscode,安装C++插件,就可以编译运行.cpp文件
非常建议,禁止使用自动补全符号,自动补全代码等IDE自带功能

vscode的插件和配置,其实不太好搞的,有可能搞废了,一般专业人士还不会弄。
常见的插件有:

  • code runner
  • C/C++
  • C/C++ Compile Run

如果发现代码运行起来后,没办法结束(就是无法进行下一次编译运行),检查一下如下配置

  • Run In Terminal

image.png
注意一下,vscode里面自带代码补全,这个要关闭,具体方法,百度一下。在设置里,搜索“suggest”,把所有的suggest全都关闭,保持一个清爽的工作界面,和编程习惯。

Vim,建议直接用vim了

vim+linux的操作,确实比较专业化了,不是那么容易掌握,但是掌握了之后,比其他的好一万倍。如果我的学生是macOS,就直接找我,电脑拿给我,或者我远程过去配置好,演示给你。你自己再熟悉,这样比较合适。下面的这些是配置文件,在网上很多博客都有写,只是很难操作,个人终端电脑也有很多环境的问题,不是很简单能处理好的。不必自己操作,我给你配置好,你会用日常操作就可以了。

快捷键那些,是用到什么,去搜一下。然后,写到小本本上,用两天,就属于自己了。

  1. // macos的vim里面复制粘贴不好弄,很费劲
  2. // MacVim这个要安装一下,然后自定义命令,把vim定义成MacVim的vim,使用起来
  3. // 从2021年9月1日,开始支持C++14
  4. // https://www.noi.cn/xw/2021-09-01/735729.shtml
  5. // 于是,我们可以把g++命令也修改一下 默认带上 std=c++14,就方便了
  6. // 以下是我的配置文件,这个有一点技术难度。能力积累一段时间后,可以用用这个,比dev好用的。
  7. // 正式比赛的时候,也是用这个。
  1. // .vimrc配置文件
  2. set fileencodings=ucs-bom,utf-8,cp936,gb18030,big5,euc-jp,euc-kr,latin1
  3. syntax on
  4. set tabstop=4
  5. set softtabstop=4
  6. set shiftwidth=4
  7. set autoindent
  8. set clipboard=unnamed
  9. "vmap "+y :w !pbcopy<CR><CR>
  10. "nmap "+p :r !pbpaste<CR><CR>
  11. "colorscheme morning
  12. set nu
  1. // .bash_profile自定义全局命令
  2. alias ll='ls -l -rt'
  3. alias vim='/Applications/MacVim.app/Contents/MacOS/Vim'
  4. alias py='python3.8'
  5. alias g++='g++ -std=c++14'
  1. 新打开一个terminal
  2. ls,看一下有文件
  3. cd Desktop
  4. ls
  5. cd workspace
  6. mkdir 1047:判断能否被357整除
  7. ls
  8. cd 1047:判断能否被357整除
  9. ls
  10. vim 1047.cpp
  11. // 开始编程
  12. exc
  13. :w
  14. command + t
  15. g++ -o exe 1047.cpp
  16. ./exe
  17. // 提交代码
  18. // 回到vim上
  19. gg
  20. 99y // 复制99行
  21. 切换到oj上,command + v粘贴
  22. // 一个题目就结束了
  23. // 常用的linux命令
  24. ls
  25. ll 查看文件夹里有什么东西
  26. pwd 查看当前的文件路径
  27. 注意,不要在linux下使用rm命令,因为现在你的经验不足,不要用这种危险的命令
  28. open . 用访达打开当前的文件夹
  29. // 常用的vim命令
  30. i 进入到insert模式
  31. exc 退出insert模式,进入普通模式
  32. 在普通模式下,可以进行保存,退出的操作
  33. :w 保存
  34. :wq 保存并退出
  35. :q! 退出,不保存修改
  36. gg 光标移动到第一行
  37. 99y 复制99
  38. yyp 复制粘贴一行
  39. dd 删除一行
  40. :10 快速移动光标到第10
  41. shift a 光标移动到当前行的最后一个位置,进入插入模式
  42. // 移动文件的命令
  43. 当前文件夹下,有一个文件1000.cpp 文件夹1000:入门测试题目
  44. 这种是创建完文件夹后,没有进入到文件夹里面,就直接vim写程序了,保存在了外面
  45. 下面这个命令是把.cpp文件移动到文件夹下面
  46. mv 1000.cpp 1000:入门测试题目

中英文输入法的切换

无论是Windows,还是macOS,都要有一个舒适快捷的中英文输入的设置。很多家长,不清楚这个的重要。我们是靠计算机吃饭的,这家伙事得好用,才能发挥威力。(很多学生、家长,并不知道自己的电脑的设置,是不好用的,而是在不好用的环境下,觉得自己还弄的挺好。这是事实,应该多借鉴一下其他人的电脑,用一用,体验两把。)

首先,要有一个英语的语言,一般写代码,就在这个输入法下面去写。别在搜狗输入法下去写,搜狗按shift可以切换中英文,这在写代码的时候,很容易误操作。狗屎一样。

很多孩子的输入法设置的有问题,比如中英文切换不好切,或者没有美国标准键盘的输入法,没有安装英语安装包。孩子自身本来就不会操作电脑,然后输入法一恶心,编程的时候,经常按到shift,会非常难受,影响学习体验。

有的同学,用的搜狗输入法,用的皮肤,还有用动图皮肤的,这都是不好的行为,动图很可爱,注意力就全在动图上。
image.png
image.png
把英语设置为首选项,这样使用cmd的时候,就会默认是英文,这点非常重要。懂的人,都很痛。
image.png
win + 空格,切换到ENG输入法

键盘的正确使用

image.png
Typing practice,这个呢,是Willam Lin推荐的,大神推荐的确实好用。
我用了,也说好。怎么个好法呢,配上我的CHERRY,一个字,神清气爽~

练习时,注意手型,慢慢就养成了。避免:一指禅、奇葩手型、奇葩胳膊肘、奇葩的把鼠标放到电脑上使用、奇葩的把鼠标USB接口接到右手边USB碍事的操作。

练习要点:
这个在前期的时候,练习标准就是,每一次打开电脑就撸一把,然后继续干自己要干的事情。不用特意为了练习打字,投入整段时间。使用高频、短平快的方式,练习这个是最为高效的。一段时间后,感觉手痒痒了,就用一两个小时,去把Typing practice打通关,你会感觉一个质的飞跃,相信我,你会爽到起飞。
这个方法,也适用于成人。

【重点】创建文件夹、创建.cpp文件,再编程

题目文件夹的命名,cpp文件的命名

  1. 创建一个文件夹workspace
  2. 在workspace下,每一个题目一个文件夹
  3. 每一个题目文件夹下,创建 新建文本文档.txt,修改文件名和文件类型为,题目英文名字.cpp

例如,workspace/10 - [在线测评解答教程] A+B Problem/a+b.cpp

避免在Dev C++中,直接ctrl+n,新建,然后 随便保存到电脑的某个角落里,未命名1、未命名2。没人教,这么一个有实际价值的本领。文件管理习惯,就连很多工作多年的家长朋友,也感到深深的头疼。

这个东西,不是常识,是靠有意识的训练得来的。比如,你有那么多的事项工作,尤其是做文字工作的,如何去整理自己材料,控制好版本,这是一个复杂的事情。如果是产品研发、设计工作,良好的文件管理能力,是一个必备的基本能力。

学习看报错信息

编译错误的信息,都是英文的,刚接触的同学,看的眼花缭乱。这些报错信息书本上也没有,家长也看不懂。所以,这个环节,尽量让有经验的老师带一带,手把手教几次,就看懂了。后面就可以独立练习,增强功力了。

image.png
image.png
image.png
image.png
典型的报错信息:

  1. 少写了分号
  2. cmd命令行窗口未关闭带来的ld错误,双击cmd的左上角可以快速关闭。
  3. 少写了括号、关键字写错,引发的一大堆错误。其实只是头文件写错了,但孩子会被一片红字搞懵
  4. 有的时候Dev也有玄学报错,总是提示文件相关的权限问题。这个可能是本地杀毒软件的贡献,你就把当前代码另存为另一个文件名,然后继续搞就没的问题。
  5. 报错信息中的英文,就反复出现那么几个,稍微记一下单词,就搞定了。

    代码风格建议

    关于代码风格,个人推荐Google C++ Style Guide, 这是我写的知乎

    坚持使用OJ

    很多培训机构,不教OJ的使用,甚至都不告诉学生有OJ这个东西的存在,导致很多孩子们并没有接受到专业的学习体验。比如,头文件的使用,本地Dev少写了#include ,并不会对printf( ) 报错。但到OJ上,会爆CE,编译错误。比如,局部变量的初始化问题。比如,开数组的地方。比如,数据范围的含义,测试点的设置,不同测试的数据强度,从不同角度考察你的程序的正确性,执行效率。

    Tips for C/C++ Contestants(比赛者)

    [参考]https://dmoj.ca/tips/#c-alloc

    Allocating

    Refrain from declaring big arrays as local variables, as it will often cause you to run out of stack space and fail with a Runtime Error.
    Instead of doing:
    1. int main()
    2. {
    3. int N;
    4. scanf("%d", &N);
    5. int arr[N];
    6. for(int i = 0; i < N; i++) scanf("%d", &arr[i]);
    7. }
    consider:
    1. int arr[100001];
    2. int main()
    3. {
    4. int N;
    5. scanf("%d", &N);
    6. for(int i = 0; i < N; i++) scanf("%d", &arr[i]);
    7. }
    Declaring big arrays in global scope is a much safer approach as long as you know the maximum bound of N (and almost all problems give you upper bounds). Be wary of out of bounds array indices, though.

    Input and Output

    It is recommended for C++ users to use C-style input and output, namely scanf and printf instead of cin and cout for performance reasons.
    If you must use cin and cout, you can put these two lines of code at the top of your main function:
    1. int main()
    2. {
    3. cin.sync_with_stdio(0);
    4. cin.tie(0);
    5. ...
    6. }
    to speed up the cin stream. This will unsync cin with scanf and cout. Note that you should not use scanf after unsyncing with stdio.
    Additionally, you should not use endl, but rather \n to output newlines when flushing is not required. endl’s flushing behavior can potentially cause your program to receive TLE instead of AC.

int, long, and long long

On the judge, int is 32-bit, long long is 64-bit, and long can be either 32- or 64-bit depending on which judge your submission is graded on. Therefore, it is recommended to use either int or long long, but not long.

大纲知识点要求

1.【1】计算机的基本构成(CPU、内存、I/O设 备等)

2.【1】Windows、 Linux等操作系统的基本概念及其常见操作

3.【1】计算机网络和Internet的基本概念

4.【1】计算机的历史及其在现代社会中的常见应用

5.【1】 NOI以及相关活动的历史

6.【1】进制的基本概念与进制转换、字节与字

7.【1】程序设计语言以及程序编译和运行的基本概念

8.【1】使用图形界面新建、复制、删除、移动文件或目录

9.【1】使用Windows系统下的集成开发环境(例如 Dev C++等)

10.【1】使用Linux系统下的集成开发环境(例如 Code::Blocks等)

11.【1】g++、gcc等常见编译器的基本使用