FreePascal3.2
- 格式:doc
- 大小:44.00 KB
- 文档页数:5
Lazarus简明使用手册1介绍Lazarus是一个免费的使用Freepascal编译器作为后台编译器的pascal集成开发环境。
Lazarus由Pascal编写而成,界面风格类似Delphi,具有强大的程序开发功能。
图一是在运行中的Lazarus:图一图中,窗口1是主窗口,窗口2是对象属性窗口,窗口3是源码编辑窗口,窗口4是程序中的窗口布局。
在NOI比赛中,不会用到窗口2和窗口4。
2安装Lazarus2.1获取Lazarus的RedHat Linux 9.0安装文件当前版本Lazarus需要的安装文件有三个,它们是:fpc-1.9.8-0.i586.rpm、fpcsrc-1.9.8-050225.i386.rpm、lazarus-0.9.6-fpc_1.9.8_0.i386.rpm,这三个文件的下载地址分别为:/lazarus/fpc-1.9.8-0.i586.rpm?download/lazarus/fpcsrc-1.9.8-050225.i386.rpm?download /lazarus/lazarus-0.9.6-fpc_1.9.8_0.i386.rpm?down load2.2在RedHat Linux 9.0上安装Lazarus使用root用户登录Linux,在终端中进入安装文件所在目录,并输入如下命令安装Lazarus。
rpm –Uvh fpc-1.9.8-0.i586.rpmrpm –Uvh fpcsrc-1.9.8-050225.i386.rpmrpm –Uvh lazarus-0.9.6-fpc_1.9.8_0.i386.rpm2.3在RedHat Linux 9.0上安装高版本的gdb为使Lazarus在RedHat Linux 9.0下正确调试程序,需要安装高版本的gdb。
用户可以通过中国计算机学会的网站,下载gdb 6.3的RedHat Linux 9.0下的安装文件:gdb-6.3.0.0-1.10.i386.rpm。
Lazarus简明使用手册1介绍Lazarus是一个免费的使用Freepascal编译器作为后台编译器的pascal集成开发环境。
Lazarus由Pascal编写而成,界面风格类似Delphi,具有强大的程序开发功能。
图一是在运行中的Lazarus:图一图中,窗口1是主窗口,窗口2是对象属性窗口,窗口3是源码编辑窗口,窗口4是程序中的窗口布局。
在NOI比赛中,不会用到窗口2和窗口4。
2安装Lazarus2.1获取Lazarus的RedHat Linux 9.0安装文件当前版本Lazarus需要的安装文件有三个,它们是:fpc-1.9.8-0.i586.rpm、fpcsrc-1.9.8-050225.i386.rpm、lazarus-0.9.6-fpc_1.9.8_0.i386.rpm,这三个文件的下载地址分别为:/lazarus/fpc-1.9.8-0.i586.rpm?download/lazarus/fpcsrc-1.9.8-050225.i386.rpm?downl oad/lazarus/lazarus-0.9.6-fpc_1.9.8_0.i386.rpm?download2.2在RedHat Linux 9.0上安装Lazarus使用root用户登录Linux,在终端中进入安装文件所在目录,并输入如下命令安装Lazarus。
rpm –Uvh fpc-1.9.8-0.i586.rpmrpm –Uvh fpcsrc-1.9.8-050225.i386.rpmrpm –Uvh lazarus-0.9.6-fpc_1.9.8_0.i386.rpm2.3在RedHat Linux 9.0上安装高版本的gdb为使Lazarus在RedHat Linux 9.0下正确调试程序,需要安装高版本的gdb。
用户可以通过中国计算机学会的网站,下载gdb 6.3的RedHat Linux 9.0下的安装文件:gdb-6.3.0.0-1.10.i386.rpm。
freepascal语言与基础算法1. 引言1.1 概述本文将探讨Freepascal语言与基础算法的关系和应用。
Freepascal是一种强大且灵活的编程语言,被广泛应用于各个领域的软件开发中。
而基础算法则是计算机科学的核心内容,对于解决问题和优化程序至关重要。
通过结合这两者,我们可以深入理解Freepascal语言以及在实际项目中如何使用算法来提高效率和性能。
1.2 文章结构本文共分为五个部分。
首先,我们将介绍Freepascal语言的背景与发展历程,探讨其特性和优势,并列举一些应用领域和案例。
接着,我们会概述基础算法的基本概念和分类,并介绍算法设计与分析原则。
然后,我们会详细介绍几种常见的基础算法,并给出示例加以说明。
在第四部分中,我们将探讨Freepascal语言在基础算法中的具体应用,包括数据结构支持与实现方式、排序算法实现示例与性能分析以及查找算法实现示例与应用场景讨论。
最后,在结论部分,我们将总结Freepascal语言与基础算法的关系,并讨论其发展前景和实践意义,同时展望未来研究的方向。
1.3 目的本文的目的在于给读者提供有关Freepascal语言与基础算法之间联系的深入理解。
通过阐述Freepascal语言作为一种强大且广泛应用的编程语言以及基础算法作为解决问题和优化程序所必不可少的工具,我们希望读者能够了解如何利用Freepascal语言来实现各种常见的基础算法,并在实际项目中应用这些算法来提高效率和性能。
此外,本文还将探讨Freepascal语言与基础算法之间的潜在联系,以及可能产生的新思路和研究方向。
2. Freepascal语言介绍:2.1 背景与发展Freepascal是一种高级编程语言,最初由Anders Hejlsberg 发起并于1995年首次发布。
它是一种免费的、开源的、跨平台的编程语言,主要用于快速开发可靠、高效且易于维护的软件应用。
自推出以来,Freepascal得到了广泛的采用和用户社区支持。
第14周 Freepascal错误代码一览表任何一个天才都不敢说,他编的程序是100%正确的。
几乎每一个稍微复杂一点的程序都必须经过反复的调试、修改,最终才完成。
所以说,程序的调试是编程中的一项重要技术。
Free Pascal IDE提供了很强大的调试功能,能很方便的找出程序的错误。
1、程序错误(1)编译错误:即语法错误。
如:命令错写,少分号等等。
此种错误在程序编译执行就能发现,而把光标停留在错误行上,并显示出错误信息,由用户修改。
(2)运行错误:如果没有语法错误。
则程序可以运行,但在运行过程中也有可能出现错误,如程序结构不合理,打印语句错误等。
此时,程序将中止运行,光标停留在错误语句处,并显示错误信息,等待用户修改。
(3)逻辑错误:如:程序递归出口设置不正确,逻辑判断设置错误,这样程序虽然能够正常运行,但运行结果却不正确,这是用户最难发现有错误,也是最难查找的错误,此时计算机也无任何错误信息。
一、程序调试根据下面的错误代码表,检查Demo1.pas、Demo2.pas、Demo3.pas、Demo4.pas程序运行过程中的错误代码,并尝试解决。
二、实验设计。
编制程序,尝试模拟下面运行错误代码出现的情况。
205 Floating point overflow浮点数上溢你试图使用或产生一个太大实数.206 Floating point underflow你试图使用或产生一个太小实数.207 Invalid floating point operation错误的浮点数操作可能是你开平方根或者对数时使用负数.Free Pascal Run Time Errors 运行错误对照表1 Invalid function numberY ou tried to call a DOS function which doesn't exist.2 File not foundY ou can get this error when you tried to do an operation on a file which doesn't exist.3 Path not foundY ou can get this error when you tried to do an operation on a file which doesn't exist, or when you try to change to, or remove a directory that doesn't exist, or try to make a subdirectory of a subdirectory that doesn't exist.4 Too many open filesWhen attempting to open a file for reading or writing, you can get this error when your program has too many open files.5 File access deniedY ou don't have access to the specified file.6 Invalid file handleIf this happens, the file variable you are using is trashed; it indicates that your memory is corrupted.12 Invalid file access codeThis will happen if you do a reset or rewrite of a file when FileMode is invalid.15 Invalid drive numberThe number given to the Getdir function specifies a non-existent disk.16 Cannot remove current directoryY ou get this if you try to remove the current diirectory.17 Cannot rename across drivesY ou cannot rename a file such that it would end up on another disk or partition.100 Disk read errorDOS only. An error occurred when reading from disk. Typically when you try to read past the end of a file.101 Disk write errorDOS only. Reported when the disk is full, and you're trying to write to it.102 File not assignedThis is reported by Reset, Rewrite, Append, Rename and Erase, if you call them with an unassigne function as a parameter.103 File not openReported by the following functions : Close , Read, Write, Seek, EOf, FilePos, FileSize, Flush, BlockRead, and BlockWrite if the file isn't open.104 File not open for inputReported by Read, BlockRead, Eof, Eoln, SeekEof or SeekEoln if the file isn't opened with Reset. 105 File not open for outputReported by write if a text file isn't opened with Rewrite.106 Invalid numeric formatReported when a non-numerice value is read from a text file, when a numeric value was expected. 150 Disk is write-protected(Critical error, DOS only.)151 Bad drive request struct length(Critical error, DOS only.)152 Drive not ready(Critical error, DOS only.)154 CRC error in data(Critical error, DOS only.)156 Disk seek error(Critical error, DOS only.)157 Unknown media type(Critical error, DOS only.)158 Sector Not Found(Critical error, DOS only.)159 Printer out of paper(Critical error, DOS only.)160 Device write fault(Critical error, DOS only.)161 Device read fault(Critical error, DOS only.)162 Hardware failure(Critical error, DOS only.)200 Division by zeroY ou are dividing a number by zero.201 Range check errorIf you compiled your program with range checking on, then you can get this error in the following cases:An array was accessed with an index outside its declared range. 数组越界访问Y ou're trying to assign a value to a variable outside its range (for instance a enumerated type). 超出变量范围,例如i:=32768;其中i为integer类型202 Stack overflow errorThe stack has grown beyond itss maximum size. This error can easily occur if you have recursive functions.203 Heap overflow errorThe heap has grown beyond its boundaries, ad you are rying to get more memory. Please note that Free Pascal provides a growing heap, i.e. the heap will try to allocate more memory if needed. However, if the heap has reached the maximum size allowed by the operating system or hardware, then you will get this error.204 Invalid pointer operationThis you will get if you call dispose or Freemem with an invalid pointer (notably, Nil)205 Floating point overflowY ou are trying to use or produce too large real numbers.206 Floating point underflowY ou are trying to use or produce too small real numbers.207 Invalid floating point operationCan occur if you try to calculate the square root or logarithm of a negative number.210 Object not initializedWhen compiled with range checking on, a program will report this error if you call a virtal method without having initialized the VMT.211 Call to abstract methodY our program tried to execute an abstract virtual method. Abstract methods should be overridden, and the overriding method should be called.212 Stream registration errorThis occurs when an invalid type is registered in the objects unit.213 Collection index out of rangeY ou are trying to access a collection item with an invalid index. (objects unit)214 Collection overflow errorThe collection has reached its maximal size, and you are trying to add another element. (objects unit)215 数字超出范围(例如3000000000超出长整形范围)216 General Protection faultY ou are trying to access memory outside your appointed memory.217 Unhandled expetion occurredAn exception occurred, and there was no exception handler present. The sysutils unit installs a default exception handler which catches all excpetions and exits gracefully.。
Pascal常见问题解答The Plumes from the OI Angle ---- Pascal FAQ文档目录o前言o编程工具专题▪Pascal有哪几个版本?▪Turbo Pascal 7.0和Borland Pascal 7.0是同一个编程工具吗?▪在比赛中该如何选择合适的Pascal编程工具?▪如何把我的程序编译成.exe文件?o编译模式专题▪什么是编译模式?▪如何使用DOS保护模式?o编译指示专题▪什么是编译指示?▪有哪些编译指示?▪如何设置默认的编译指示?▪如何设置最优的编译指示?o内存分配专题▪为何我的程序在递归调用子程序时会出现栈溢出错误?▪为何当我声明的全局变量的总尺寸超过64KB时会出现编译错误?▪为何我不能定义大小超过64KB的数据类型和变量?▪我的程序可以申请多大的动态内存空间?o输入输出专题▪在进行文件输入输出操作时可否免去文件变量参数?▪函数SeekEoln、SeekEof和Eoln、Eof有什么区别?▪为何我的程序结束后其输出文件无内容?▪如何设置正文文件缓冲区的大小?o语法专题▪程序首部的参数Input和Output是什么意思?▪如何获得函数返回值的地址?▪数值参数、变量参数和常量参数有什么区别?▪如何使两个子程序可以互相调用?o数据类型专题▪如何设置字符串的长度?▪不同的实数类型有什么区别?▪如何在记录类型中声明一个类型为该记录指针类型的字段?o基本操作专题▪如何获取随机数?▪如何使用FillChar?▪如何使用Move?o特殊技振专题▪如何实现卡时?o结尾▪网上有哪些比较好的信息学奥林匹克站点?▪为何我无法理解此文的内容?▪如果我对此文有疑问?▪在哪里可以获得此文的最新版本?前言对于许多使用Pascal语言的信息学奥林匹克初学者乃至于相当部分的高手来说,Pascal语言似乎是十分简单、十分易学的。
他们专注于研究算法和数据结构,而对程序设计语言和程序设计方法则几乎不屑一顾。
FreePascal 简介Pascal 调试步骤(1)编写程序;(2)保存程序;(3)编辑程序(compile );(4)运行程序(run);(5)通过Debug 的output 或者是userscreen 查看运行结果.Pascal 菜单介绍一、file 菜单New :新建一个文件,文件名为noname.pas 。
Open …f3:装入一个已经存在于磁盘上的文件(也可以是非pascal 源程序文件,如文本文件)。
Save f2:当前编辑的文件存盘。
Save as …:把当前文件存成另外一个文件名。
Save all :保存已经打开的所有文件。
Change dir …:改变当前目录。
Print :打印当前文件。
Printer setup …:打印机设置。
command shell :dos 外壳,暂时退出集成环境,进入dos环境,可用exit 命令回到集成环境。
Exit Alt+x :退出turbo pascal 语言集成环境。
关闭窗口窗口名称窗口扩大还原窗光标所在处水平标尺放大缩小角二、edit菜单Undo(alt+backspace):取消刚才的操作。
Redo:重复进行刚才的操作。
Cut(shift+del):把定义的块删除,存放到剪贴板中。
(定义块:用鼠标拖曳或用shift+光标键)Copy(ctrl+ins):把定义的块拷贝到剪贴板中。
Paste(shift+ins):把剪贴板中语句粘贴到当前光标位置。
Clear(crtl+del):把定义的块删除掉。
Show clipboard:显示剪贴板中的语句。
三、search菜单Find:寻找。
Replace:寻找替换。
Search again:继续寻找。
Go to line number:到某个行号。
Show last compiler error:显示最后一次编译的错误。
Find error:查找当前文件的错误。
Find procedure:查找过程。
第二节repeat 循环Repeat循环是直到型循环。
试将上一节的例3.1(打印出1~20的平方数表)程序改为repeat 循环:Program Exam31_1;Var a: byte;Begina:=1;writeln ( ' a ' : 8 , ' a*a ' : 8 ) ;repeatwriteln ( a :8,a*a : 8);inc(a);{改变a的值}Until a>20;ReadlnEmd.程序中的Repeat循环格式为:repeat循环体语句;until 条件表达式;{直到条件为真}Repeat循环首先执行由Repeat和Until括起来的循环体语句,然后检查Until后面的条件表达式:如果表达式结果为假,则继续执行循环体,接着继续检查Until后面的条件表达式,如此反复执行直到这个表达式结果为真时结束循环。
Repeat循环体语句必须有能改变Until后面条件表达式值的语句,并最终使这个条件表达式的值为真,使循环自动结束。
程序中inc (a) 指令相当于a : =a+1,常用的同类指令格式如下:(1) inc(x) 等同x:=x+1;(2) inc(x, n) 等同x:=x+n;(3) dec(x) 等同x:=x—1;(4) dec(x,n) 等同x:=x—n;[例3.10]求两个自然数M和N的最大公约数。
解:若自然数a既是M和约数,又是N的约数,则称a为M和N的公约数,其中最大的称为最大公约数。
为了求得最大公约数,可以从最大可能的数(如M或N)向下寻找,找到的第一个公约数即是最大公约数。
Pascal程序:Program ex310;Begina := N+1;Repeata := a-1;Until (M mod a=0) and (N mod a=0);writeln(a);Readln;End.[例3.11]校体操队到操场集合,排成每行2人,最后多出1人;排成每行3人,也多出1人;分别按每行排4,5,6人,都多出1人;当排成每行7人时,正好不多。
求校体操队至少是多少人?解:①设校体操队为X人,根据题意X应是7的倍数,因此X的初值为7,以后用inc(x,7)改变X值;②为了控制循环, 用逻辑变量yes为真(True) 使循环结束;③如果诸条件中有一个不满足, yes 的值就会为假(false),就继续循环。
Pascal程序:program Exam311;var x: word; yes : boolean;beginx:=0;repeatyes :=true; inc(x,7);if x mod 2 < > 1 then yes:=false;if x mod 3 < > 1 then yes:=false;if x mod 4 < > 1 then yes:=false;if x mod 5 < > 1 then yes:=false;if x mod 6 < > 1 then yes:=false;until yes; {直到yes的值为真}writeln('All =', x) ; readlnend.程序中对每个X值,都先给Yes 赋真值,只有在循环体各句对X进行判断时,都得到“通过”(此处不赋假值)才能保持真值。
[例3.12]从键盘输入一个整数X(X不超过10000),若X的各位数字之和为7的倍数,则打印“Yes”,否则中打印“No”。
解:本题考察的是数字分离的方法,由于X的位数不定,所以以往的解法不能奏效,这是介绍一种取余求商法。
(1)用X mod 10分离出X的个位数字;(2)用X div 10将刚分离的个数数字删除,并将结果送回给X;(3)重复(1)(2)直到X=0。
Pascal程序:Program ex12;var x,a,s : integer;begins := 0;repeata := x mod 10;x := x div 10;s := s+a;until x=0;if s mod 7=0 then writeln(‘Yes’)else writeln(‘No’);Readln;end;[例3.13]求1992个1992的乘积的末两位数是多少?解:积的个位与十位数只与被乘数与乘数的个位与十位数字有关,所以本题相当于求1992个92相乘,而且本次的乘积主下一次相乘的被乘数,因此也只需取末两位参与运算就可以了。
Pascal程序:Program ex313;var a,t : integer;Begina := 1;t := 0;repeatt := t+1;a := (a*92) mod 100;until t=1992;writeln(a);Readln;End.[例3.14]尼科彻斯定理:将任何一个正整数的立方写成一组相邻奇数之和。
如: 33=7+9+11=27 43=13+15+17+19=64解:从举例中发现:(1) n3正好等于n个奇数之和;(2) n个奇数中的最小奇数是从1开始的奇数序列中的第m个奇数,与n 的关系为:m=n (n —1) / 2+1。
(3) 奇数序列中第m个奇数的值为x,且x= 2m—1,比如: n=3时,m=3(3-1)/2+1=4,即3个奇数中最小的奇数是奇数序列中的第4个,它的值为x=(2m-1)=7,所以:33=7+9+11。
(4) 从最小的奇数值x开始,逐个递增2,连续n个,用t从1开始计数,直到t=n为止。
Pascal程序:Program Exam35;Var n,m,x,t,s : integer;Beginwrite(’input n:’);readln(n);{输入N }m:=(n*(n-1) div 2)+1; {找到第m个奇数}x:=2*m-1;t:=1;{算出第m个奇数的值x,是所求的第一个}write(n’*’,n,’*’,n,’=’,x);{输出第一个}s:=x; {用S计算和}if n>1 thenRepeatinc(x,2);{ 计算下一个奇数}write (’+ ’,x) ;{加上下一个奇数}inc (t );inc (s,x);{ 计个数并累加和}Until t=n;{直到n个}Writeln (’= ’,s ) ;ReadlnEnd.[例3.15]猜价格:中央电视台的“幸运52”栏目深受观众喜爱,其中的“猜商品价格”的节目更是脍炙人口,现在请你编一个程序模拟这一游戏:由计算机随机产生200至5000之间的一个整数,作为某件商品的价格,然后由你去猜是多少,若你猜的数大了,则计算机输出提示“Gao”,若你猜的数小了,则计算机输出提示“Di”,然后你根据提示继续猜,直到你猜对了,计算机会提示“Ok”,并统计你猜的总次数。
解:本题的游戏规则大家都清楚,要完成程序,必须把处理步骤理清:(1)用随机函数Random产生200至5000之间的一个整数X;(2)你猜一个数A;(3)若A>X,则输出“Gao”;(4)若A<X,则输出“Di”;(5)若A=X则输出“Ok”;(6)重复(2)(3)(4)(5)直到A=X。
Pascal程序:Program ex315;Var t,X,a : integer;BeginRandomize;X := Random(4800)+200;t := 0;Repeatt := t+1;write(‘[‘,t,’] Qing cai yi ge zheng shu : ‘);readln(a);if a>x then writeln(‘Gao’);if a<x then writeln(‘Di’);if a=x then writeln(‘Ok’);Until A=X;Readln;End.习题3.21.求两个自然数M和N的最小公倍数。
(如果求三个或更多个数的最小公倍数呢?应如何解决)2.小会议室里有几条相同的长凳,有若干人参加开会。
如果每条凳子坐6人,结果有一条凳子只坐有3人;如果每条凳子坐5人,就有4人不得不站着。
求会议室里有多少人开会,有多少条长凳?3.某动物饲养中心用1700元专款购买小狗(每只31元)和小猫(每只21元)两种小动物。
要求专款专用,正好用完, 应当如何购买?请输出所有方案。
4.某整数X加上100就成为一个完全平方数,如果让X加上168 就成为另一个完全平方数。
求X?5.某次同学聚会,老同学见面个个喜气洋洋,互相握手问好。
参加此次聚会者每人都与老同学握了一次手,共握903次,试求参加聚会的人数?6.用自然数300,262,205,167分别除以某整数A,所得到的余数均相同。
求出整数A以及相除的余数?7.1600年前我国的一部经典数学著作中有题:“今有物,不知其数,三三数之,剩二;五五数之,剩三;七七数之,剩二,问物几何。
”求最小解。
8.编程求出所有不超过1000的数中,含有数字3的自然数,并统计总数。
9.阿姆斯特朗数:如果一个正整数等于其各个数字的立方和,则该数称为阿姆斯特朗数(也称自恋数),如407=43+03+73,试编程求出1000以内的所有阿姆斯特朗数。