‘壹’ NOI比赛用什么编译器TP还是FP,那里有下载
NOI比赛允许使用的语言是Pascal、C、C++
其中Pascal使用的编译器是FPC 2.0.4
也就是说使用的是Free Pascal的编译器
但需要说明的是,NOI全国赛不提供FP使用
因为NOI使用的是NOI Linux系统作为比赛环境
而Free Pascal在Linux下很不稳定
所以官方使用Lazarus和Guide作为Pascal语言的IDE
其中Guide是北京航空航天大学自行研制的IDE
Lazarus是FP制作团队制作的一款Object Pascal
个人推荐入门时使用FP,备战NOI时使用Lazarus
以下分别是FP和Lazarus的官网下载地址
Free Pascal 2.4.0
ftp://ftp.freepascal.org/pub/fpc/dist/2.4.0/i386-win32/fpc-2.4.0.i386-win32.exe
Lazarus 0.9.28.2
http://nchc.dl.sourceforge.net/project/lazarus/Lazarus%20Windows%2032%20bits/Lazarus%200.9.28.2/lazarus-0.9.28.2-fpc-2.2.4-win32.exe
上面两个版本都是Windows下32位的程序
如果无法下载或者无法使用,可以在官网选择合适版本下载
FP官网:www.freepascal.org
Lazarus官网:www.lazarus.freepascal.org
‘贰’ pascal是什么语言,有何优势
Pascal是种高阶的程序设计语言,由瑞士苏黎世理工学院的尼古拉斯·沃斯教授设计,ISO对Pascal进行修改以后,形成了标准Pascal语言。
Pascal语言还是一种自编译的语言,这就使它的可靠性大大提高了。在Pascal的各个版本中,尤以Turbo Pascal的功能最为强大。
Pascal具有简洁的语法,结构化的程序结构。它是结构化编程语言,于70年代在ALGOL基础上研制出来的。它具有丰富的数据类型并提供了数据类型定义设施,其控制结构体现了结构程序设计原则。
它最初是为系统地教授程序设计而设计的,特点是简明化和结构化,适合教学科学计算与系统软件的研制。如今,在许多学校的计算机语言课上,学的都是Pascal语言,用的都是Turbo Pascal。至今,Pascal还是国际信息学奥林匹克竞赛中最受欢迎的编程语言之一。
Pascal是最早出现的结构化编程语言,具有丰富的数据类型和简洁灵活的操作语句,适于描述数值和非数值的问题。
美国Borland公司于1983年推出了Turbo Pascal编译器。其后发展了Object Pascal,作为其Delphi开发工具的开发语言。Kylix是Borland公司Pascal产品的新成员,支持Delphi和C/C++,运行于Linux。
有何优势?
对于数学方面的问题,pascal很强大。
‘叁’ Pascal语言在什么软件上编写我是一点都不知道,比较菜鸟。。一直有个问题想问,JAVA和Pascal在什么上编
我是一个搞NOIP竞赛的人 也搞过一点开发,你可以听听我的意见(全手打的,很累啊)
我学的就是Pascal语言,面向过程,用的是Free Pascal
如果是面向对象,就用Delphi
至于Java的编译器,可以试试NetBeans或者sun公司的jdk
像C也有面向过程和面向对象
面向过程是GCC
面向对象就是VC之类的了
Pascal的确是一个起步很好的语言,一开始就学C或C++会很累的
语言一般分3种:机器语言 汇编语言 高级语言
机器语言:能直接被CPU执行,效率极高,但是可移植性极差(换台电脑可能就不行了),写起来也很麻烦
汇编语言:不能直接被CPU执行,加入了一些人性化的东西,如加法用ADD、减法用SUB,但还是很麻烦
高级语言:效率最低,但是很人性化,可移植性很强 像Pascal C C++ JAVA都是高级语言
高级语言不能直接被计算机执行,所以就需要编译器来帮忙,把这些语句翻译一下,让CPU能执行
高级语言执行方式分两种:解释执行和编译执行
解释执行:编译器运行一句翻译一句,调试的时候就是这样的
编译执行:编译器将源文件编译成.exe的可执行文件,然后执行
像Free Pascal、Delphi、VB、VC这种,都是IDE
不仅可以编辑源代码,编译源代码,还可以调试程序等等
要学好编程,个人觉得分三块(把我下面讲的东西全学透,要1-2年)
①语法:学好语法是基础!学好了语法,才知道语言如何使用,这个不用我说吧
②数据结构(数据结构是脱离语言的,也就是说这些数据结构每个语言都好实现):这是一个很抽象的东西,有 线性表、栈、队列、堆、数、图、串、集合 等等。
分为4种:线性结构(一对一,如 栈、队列)、树形结构(一对多,如 树)、离型结构(没有连接)、网状结构(多对多,如 图)
像栈就是一种FILO表,只运行在一头进行输入输出操作,应用在 表达式求值、撤销恢复操作上面
队列是FIFO表,允许在一头进行插入操作,另一头错删除操作
树 就复杂了 树和二叉树是两种概念,具体的自己去看书吧
二叉树有许多特殊形态,如满二叉树 完全二叉树 哈夫曼树 最优二叉树(哈夫曼树不等于最有二叉树!这点有许多人弄错。因为哈夫曼树不一定是二叉的)
二叉树的三种遍历方式一定要会:前序遍历(也称先根遍历)根左右, 中序遍历(也称中根遍历)左根右, 后序遍历(也称后根遍历)左右根
图就更复杂了,分 连通与不连通 带权与不带权 有向与无向,所以就有了 (不)连通有(无)向(不)带权图这种说法 还有什么强连通图,弱连通图的,自己看书吧!
③算法(算法是脱离语言的,也就是说这些算法每个语言都好写):
1.低级算法(立意上的,就像初等数学和高等数学):穷搜、深度优先搜索(DFS)、广度优先搜索(BFS,也称宽度优先搜索),是三种不同的遍历方式
2.高级算法:贪心,分支,动态规划(DP)。其他两个不介绍了,就介绍一下动态规划吧!
动态规划:记忆化搜索,利用以前搜索留下的数据,加快解决多阶段决策最优化问题的速度。要能动态规划,问题必须满足两个条件(我背了好长时间才背出来)
①:最优化原理(也称最优性原理):无论过去的状态或决策如何,对于当前的决策所形成的状态而言,余下的诸决策必须构成最优策略。
②:无后效性:一旦一个状态的决策确定,则此后过程的演变不再受此前各状态及决策的影响,当前状态时此前历史的完整总结,此前历史只能通过当前状态去影响过程未来的演变。
学DP一般从背包开始,背包一共有8个:01背包、完全背包、多重背包、混合三种背包、二维费用背包、分组背包、有依赖的背包、泛化物品背包。
然后再学树形动态规划
还有排序算法:冒泡排序,选择排序,插入排序,快速排序,堆排序,希尔排序,基数排序,序数排序,桶排序,鸽巢排序,二叉树排序(应用二叉排序树),鸡尾酒排序(就是双向冒泡,在一次初赛的完善程序里出现过)
还有数论算法(不展开介绍了)
图论算法:
最短路(顾名思义,就是一个点到另一个点的最短路程):迪杰斯特拉(Dijkstra)、弗洛伊德(Floyd)、SPFA(国人设计的,很不错)等等 还会要解决SPFA的负权回路问题 这几个算法都是解决单源最短路径问题的,就是一个点到所有点的最短路)
最小生成树(应用在无向连通图中,就是拿掉一些边,在保证图连通的情况下,使得剩下的边权值之和最小):普利姆(Prim)、克鲁斯卡尔(Kruskal)
关键路径(在生产生活中应用很广,注意关键路径之前一定要拓扑一次!)、拓扑排序(可用于是否有环路的检测)、网络流等等
如果以上你都会了,那么恭喜你,你已经可以算是一名初级程序员了!
可以继续学 双向深搜、双向广搜、周界搜索、迭代加深搜索、迭代加宽搜索、A*广度优先启发搜索、A*迭代加深搜索 等高级的算法。
‘肆’ PASCAL有哪些编译器(最好支持win7)
编译器有:x0dx0aFree Pascal 2.4.4x0dx0aDelphi 7.比较好用的文本编辑器有:(不能编译,只能打代码)x0dx0aGeditx0dx0aEmacs(大牛一般用Emacs...)