FREEPASCAL调试技巧
- 格式:pdf
- 大小:230.78 KB
- 文档页数:3
Free Pascal编译系统的安装、配置、使用与调试目前,在信息学奥林匹克竞赛中,使用的编译系统为Free Pascal2.4,我们以Free Pascal2.0作为编译系统来讲解,下面我们就来简单介绍一下Free Pascal2.0系统的使用方法,仅供参考。
1、统的安装与配置双击”Free Pascal.exe”安装原文件就可以直接安装程序,安装FreePascal程序后,桌面上有个图标,如图(图0.1所示),选中本图标后点右键,选“属性”、点“选项”标题、将“编辑选项”中的“快速编辑模式”与“插入模式”的对勾去掉,“当前代码页”在下拉列表中选择“United States”,如图(图0.2所示)。
(图0.1)(图0.2)2、系统的启动双击图1.1的图标,即可启动系统,或者在开始程序中找到Free Pascal点击也可启动系统,启动后屏幕上出现如图0.3所示的集成环境。
(图0.3)3、新建程序窗口选择上图0.3中的菜单FILE,执行其中New命令。
就可建立一个新的程序窗口(默认文件名为noname01.pas等)。
4、Free Pascal系统集成环境简介最顶上一行为主菜单(图0.4所示)。
中间蓝色框内为编辑窗口,在它个编辑窗口内可以进行程序的编辑。
最底下一行为提示行(图0.5所示),显示出系统中常用命令的快捷键,如将当前编辑窗口中文件存盘的命令快捷键为F2,获得系统帮助的快捷键为F1等。
(图0.4所示)(图0.5所示)5、程序的输入、编辑与运行在当前程序窗口中,可以一行一行的输入程序。
事实上,程序窗口是一个全屏幕编辑器。
所以对程序的编辑与其它编辑器的编辑方法类似,这里不再重复,特别要强调的是,Free Pascal支持环境内部的剪切、复制、粘贴,但是不支持环境外部的剪切、复制、粘贴功能。
我们也可以借助记事本等编辑软件进行程序输入与编辑,最终保存的时候命名为*.pas,然后使用Free Pascal2.0菜单中的“OPEN”命令,找到该文件所在的位置,打开即可。
fp01freepascal教程1、对Pacal的基本认识=某=.e某e文件是二进制代码的可执行程序=某=.Pa文件是人们能读董的Pacal源程序。
我们通过Pacal源程序来控制计算机的运行。
=某=我们用Pacal这个程序来处理.Pa文件,Pacal会帮我们运行.Pa文件2、试一试circle画圆程序。
(将k盘的circle.pa拷贝到C:\\FPC\\2.4.0\\bin\\i386-win32\\A、双击桌面快捷方式FreePacalIDEB、选择菜单[File]-[Open]-circle.pa]现在,在freepacal的工作区里可以看到circle.pa源程序。
(快捷键F3)C、选择菜单[Run],看到红色的圆(快捷键ctrl+F9)D、按回车,回到Pacal编辑界面。
E、修改颜色:找到Setcolor(red);,将red改成greenF、选择菜单[Run],看到绿色的圆G、选择菜单[Save]保存刚才的修改H、选择[File]-[E某it]退出3、编写简单的程序例.1计算半径为R的圆面积SprogramArea;{程序首部——Area是本程序的名称}contpi=3.14159;{常量说明部分——用pi代表3.14159}var,r:real;{变量说明部分——用S,R为Real类型的变量}begin{执行部分}readln(r);{等待从键盘输入数字,并保存到变量r}:=pi某r某r;{先计算pi某r某r的值然后保存到变量S,}writeln('=',);{往屏幕写字符串‘=’以及变量S的值}end.{程序结束}试着编写以上的程序。
A、打开fpB、输入以上程序代码。
大括号里是说明部分,不会被执行不用写。
注意英文的拼写,每行最后的分号,:=冒号等号,S=,S的逗号,end后面有点,有些行前面要空2格。
C、保存文件[Save]文件保存,文件名Area.paD、运行该程序[Run]E、运行后输入6回车F、查看结果:[Debug-[OutPut]](Alt+F5)看结果是不是S=1.1309724000E+02Debug是“调试”的意思,Output是“输出”的意思,结果中E+02代表某10的2次方4、计算机最基本的功能是计算,我们先学会如何让FP为我们做一些计算题1、已知梯形的上底、下底和高,求梯形的面积。
FREEPASCAL编译时的出错信息Free pascal编译时的出错信息1.Out of memory[内存溢出]2.Identifier expected[缺标识符]3.Identifier not found[标识符未找到]*如:Identifier not found INTEGR[标识符INTEGER未找到] 4.Duplicate identifier[重复说明]*如:Duplicate identifier N[变量N重复说明]5.Syntax error[语法错误]*6.Error in real constant[实型常量错]7.Error in integer constant[整型常量错]8.String constant exceeds line[字符串常量跨行]9.Too many nested file[文件嵌套过多]10.Unexpected end of file[非正常文件结束]11.Line to long[行过长]12.Type Identifier expected[缺类型标识符]13.Too many open file[打开文件过多]14.Invalid file name[无效文件名]15.File not found[文件未找到]*16.Disk full[磁盘满]17.Invalid compiler directive[无效编译指示]18.Too many file[文件过多]19.Undefined type in pointer definition[指针定义中未定义类型]20.Variable identifier expected[缺变量标识符]21.Error in type definition[类型错误说明]*22.Stucture too large[结构过长]23.Set base type out of range[集合基类型越界]24.File components may not be files or object[FILE分量不能为文件或对象]25.Invalid string length[无效字符串长度]26.Type mismatch[类型不匹配]*27.Invalid subrange base type[无效子界基类型]28.Lower bound greater than upper bound[下界大于上界]29.Ordinal type expected[缺有序类型]30.Integer constant expected[缺整型常数]31.Constant expected[缺常量]32.Integer or real constant expected[缺整型或实型常量]33.Pointe type identifier expected[缺指针类型标识符]34.Invalid function result type[无效的函数结果类型]/doc/186557222.html,bel identifier expected[缺标号标识符]36.Begin expected[缺BEGIN]*37.End expected[缺END]*38.Integer expression expected[缺整型表达式]39.Ordinal expression expected[缺有序表达式]40.Boolean expression expected[缺布尔表达式]41.Operand type do not match operator[操作数与操作符不匹配]42.Error in expression[表达式错]43.Illegal expression[非法赋值]*44.Field identifier expected[缺域标识符]45.Object file too large[目标文件过大]46.Undefined external[未定义外部标识符]47.Invalid object file record[无效OBJ文件记录]48.Code segment too large[代码段过长]49.Data segment too large[数据段过长]*50.Do expected[缺DO]*51.Invalid PUBLIC definition[无效PUBLIC定义]52.Invalid EXTRN definition[无效EXTRN定义]53.Too many EXTRN definition[EXTRN定义过多]54.Of extected[缺0F]*55.INTERFACE expected[缺INTERFACE]56.Invalid relocatable reference[无效重定位引用]57.THEN expected[缺THEN]*58.TO(DOWNTO)expected[缺T0或DOWNTO]*59.Undefined forward[提前引用未定义的说明]60.Too many procedures[过程过多]61.Invalid typecast[无效类型转换]62.Division by zero[被零除]63.Invalid typecast[无效文件类型]64.Cannot Read or Write variable of this type[不能读写该类型的变量]*65.Ponter variable expected[缺指针变量]66.String variable expected[缺字符串变量]67.String expression expected[缺字符串表达式]68.Circular unit reference[单元循环引用]69.Unit name mismatchg[单元名不匹配]70.Unit version mismatch[单元版本不匹配]71.Duplicate unit name[单元重名]72.Unit file format error[单元文件格式错误]73.Implementation expected[缺IMPLEMENTATl0N]74.constant and case types do not match[常数与CASE类型不相匹配]75.Record variable expected[缺记录变量]76.Constant out of range[常量越界]77.File variable expected[缺文件变量]78.Pointer extression expected[缺指针变量]79.Integer or real expression expected[缺整型或实型表达式]/doc/186557222.html,ble not within currentblock[标号不在当前块中]/doc/186557222.html,ble already defined[标号已定义]82.Undefined lable in preceding statement part[在前面语句中标号未定义]83.Invalid@argument[无效的@参数]84.Unit expected[缺UNIT]85.“;”expected[缺“;”]*86.“:”expected[缺“:”]*87.“,”expected[缺“,”]*88.“(”expected[缺“(”)*89.“)”ex pected[缺“]”]*90.“=”expected[缺“=”]*91.“:=”expected[缺“:=”]*92.“[”or“(”expected[缺“[”或“(”)*93.“]”or“)”expected[缺“]”或“)”]*94.“..”expected[缺“.”]*95.“..”expected[缺“..”]*96.Too many variable[变量过多]97.Invalid FOR control variable[无效FOR控制变量]98.Integer variable expected[缺整型变量]99.File and procedure types are not allowed here[此处不允许用文件和过程类型] 100.Srting length mismatch[字符串长度不匹配] 101.Invalid ordering of fields[无效域顺序]102.String constant expected[缺字符串常量]103.Integer or real variable expected[缺整型或实型变量]104.Ordinal variable expected[缺顺序变量]105.INLINE error[INLINE错]106.Character expression expected[缺字符表达式]107.Too many relocation items[重定位项过多]112.Case constant out of range[CASE常量越界]113.Error in statement[语句错]114.Can’t call an interrupt procedute[不能调用中断过程]116.Must be in8087mode to complie this[必须在8087方式下编译]117.Target address not found[未找到目标地址]118.Include files are not allowed here[此处不允许包含INCLUDE文件]120.NIL expected[缺NIL]121.Invalid qualifier[无效限定符]122.Invalid variable reference[无效变量引用]123.Too many symbols[符号过多]124.Statement part too large[语句部分过长]126.Files must be var parameters[文件必须为变量参数]127.Too many conditional directive[条件符号过多]128.Misplaced conditional directive[条件指令错位]129.ENDIF directive missing[缺少ENDIF指令]130.Error in initial conditional defines[初始条件定义错]131.Header does not match previous definition[过程和函数头与前面定义的不匹配] 132.Critical disk error[严重磁盘错误] 133.Can’t evalute this expression[不能计算该表达式]*如:Can’t evalute constart expression[不能计算该常量表达式] 134.Expression incorrectly terminated[表达式错误结束]135.Invaild format specifier[无效格式说明符]136.Invalid indirect reference[无效间接引用]137.Structed variable are not allowed here[此处不允许结构变量]138.Can’t evalute without system unit[无SYSTEM单元不能计算]139.Can’t access this symbols[不能存取该符号]140.Invalid floating–point operation[无效浮点运算]141.Can’t compile overlays to memory[不能将覆盖模块编译至内存]142.Procedure or function variable expected[缺过程和函数变量]143.Invalid procedure or function reference.[无效过程或函数引用]144.Can’t overlay this unit[不能覆盖该单元]147.Object type expected[缺对象类型]148.Local object types are not allowed[不允许局部对象类型] 149.VIRTUAL expected[缺VIRTUAL]150.Method identifier expected[缺方法标识符]151.Virtual constructor are not allowed[不允许虚拟构造方法] 152.Constructor Identifier expected[缺构造函数标识符]153.Destructor Identifier expected[缺析构函数标识符]154.Fail only allowed within constructors[FAIL标准过程只允许在构造方法内使用] 155.Invalid combination of opcode and operands[无效的操作符和操作数组合] 156.Memory reference expected[缺内存引用]157.Can’t add or subtrace relocatable symbols[不能加减可重定位符号]158.Invalid register combination[无效寄存器组合]159.286/287Instructions are not enabled[未激活286/287指令]160.Invalid symbol reference[无效符号引用]161.Code generation error[代码生成错]162.ASM expected[缺ASM]。
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得到了广泛的采用和用户社区支持。
第四单元PASCAL 语言程序设计在上一册教材中,我们已经初步了解了PASCAL 语言的三种基本结构、程序设计的基本思想和方法。
本单元是在上册内容的基础上进一步深入学习PASCAL 语言的数组、子程序、字符串处理等基础知识。
随着学习的深入,程序设计的题目类型越来越广泛,难度也越来越大,程序设计者不能“完全”把求解的任务推给计算机,而应对题目作较充分的分析,用较优的算法去求解,因此在计算机上编程解题是一项极好的实践活动,它可以训练观察能力、逻辑思维能力、形式化描述问题能力、规划能力、动手动脑分析问题和解决问题的能力。
第一课循环结构的程序设计在程序设计中,经常处理一些需要重复执行某些操作的问题,这就需要循环结构程序设计,循环结构是程序设计的三种基本结构之一,循环结构是指当某个条件满足时反复执行某些语句,否则不执行。
利用循环结构,使得我们能用少而精的程序编码,来完成大量的重复计算。
在Pascal 语言中,实现循环程序设计的主要语句有For 语句(计数循环)、While 语句(当型循环)、Repeat 语句(直到型循环)。
上册教材已经介绍了For 语句,本节课介绍While 语句、Repeat 语句及多重循环结构。
一、While 语句结构For 循环语句适用于已知次数的循环结构,而在实际的问题中,有时我们并不能确切知道循环要执行多少次,我们判断是否结束循环的依据是某个条件是否满足,比如“当……时就做……”,或者是“一直做到……时为止”,这种循环我们称之为条件循环。
在Pascal 中条件循环语句有两种,分别是While 循环语句和Repeat 循环语句。
下面分别介绍这两种语句的使用方法。
While 语句用于“当满足某一条件时进行循环”的情况,因此它也被称为“当型循环”。
While 语句的语法格式如下:While <布尔表达式>do <循环体语句>;While 循环语句的执行流程如图1-1-1所示。
win10下FreePascal使⽤⽅法(从安装、消除乱码、编写个简单的hello谈起)⽬录⼀、安装1 、Whatis Pascal?2 、Frequently used compilers or IDE3、ChooseFPC and download it4、安装FPC5、确认是否安装成功⼆、消除乱码三、编写程序四、卸载FPC(选看)五、总结遇到的问题有限的思考:闲来⽆事,突然想“学”⼀门新的语⾔Pascal,不要求精通,只要求能安装、运⾏⼀些简单程序就⾏。
所以,抽出⼀个上午的时间来了解Pascal的历史,以及编译器以及它的IDE。
再⽤⼀个下午的时间来整理⼀下上午的所获所得,希望可以帮到⼀些⼊门者,能让他们少⾛弯路。
同时,我也要感谢那些给我帮助过的⽹友们。
来,开始正题。
⼀、安装1 、Whatis Pascal?⾸先,来看下什么是Pascal程序设计语⾔。
参考:(1) 维基百科:Pascal(2) 百度百科:Pascal⼩结:Pascal由Niklaus Wirth(不认识这⼈?他说过:程序=算法+数据结构。
有印象了吧-:))创建,纪念法国数学家Blaise Pascal。
Pascal起初是⼀个⾯向过程的程序设计语⾔,之后发展出Object Pascal。
Delphi是⼀个IDE,使⽤的核⼼就是Object Pascal。
2 、Frequently used compilers or IDE任何⼀个程序设计语⾔,都要有个编译器。
接下来,来看看Pascal常⽤的compilers有哪些。
当然,还有其他编译器,这⾥就不再过多介绍。
⾄于三者⽐较,有兴趣的⾃⼰百度。
3、ChooseFPC and download it考虑到我们⽤的是win10的兼容性、稳定性、⼝碑等因素,我们选择fpc3.0.0Free Pascal Compiler(pascal语⾔编译器) v3.2.2 64位类型:软件编辑⼤⼩:91MB语⾔:英⽂软件时间:2021-11-16查看详情如果下载的是,fpc2.4.0,则会出现⿊屏报错,同时,其它程序也跟着报错[6]。
索引:常量类型变量函数和过程常量:文件属性:文件属性中使用FindFirst常数,FindNext,以确定搜索什么样的特殊文件类型,除了正常的文件。
这些标志也用在SetFAttr和GetFAttr程序来设置和检索文件的属性。
对于他们的定义这些变量用于TextRec记录的Mode变量,提供文件输入输出操作中文件的模式,它们的定义如下表:以下变量不可移植,不应当被使用。
它们为了兼容而存在。
{Bitmasks for CPU Flags}fcarry = $0001;fparity = $0004;fauxiliary = $0010;fzero = $0040;fsign = $0080;foverflow = $0800;类型:以下字符串类型被定义用于易于操作的文件名:ComStr = String[255]; {用于命令行}PathStr = String[255]; {用于完整的文件路径}DirStr = String[255]; {用于目录和(DOS)驱动器字符串}NameStr = String[255]; {用于文件名}ExtStr = String[255]; {用于文件拓展名}SearchRec = Packed RecordFill : array[1..21] of byte;{ Fill在Linux下代替以下声明}Attr : Byte; {找到的文件属性}Time : LongInt; {找到的文件的最后修改日期}Size : LongInt; {找到的文件的大小}Reserved : Word; {将来使用}Name : String[255]; {找到的文件名}SearchSpec: String[255]; {搜索模式}NamePos: Word; {路径的结尾,文件名称的开始}End;在Linux下,Fill数组替换以下:SearchNum: LongInt; {追踪这是哪个搜索}SearchPos: LongInt; {目录位置}DirPtr: LongInt; {阅读目录的目录指针}SearchType: Byte; {0=normal, 1=open will close}SearchAttr: Byte; {我们在寻找的属性}Fill: Array[1..07] of Byte; {将来使用}这是因为Unix下的搜索机制和Dos的不同,所以以下要被模仿:constfilerecnamelength = 255;typeFileRec = Packed RecordHandle,Mode,RecSize : longint;_private : array[1..32] of byte;UserData : array[1..16] of byte;name : array[0..filerecnamelength] of char;End;FileRec用于类型化和非类型化文件的内部表示。
FP调试及其他注意事项
事先说明:调试并不是万能药,FP的调试系统有时并不稳定,如果感觉异常,或者变量一值处于无意义的随机值,或者F7单步模式下它拒绝进入自定义的函数或过程,一般需要你新启动FP再次开始重新调试,如果尝试多次仍然不行,那需要你重新安装Free pascal了,操作方法:先卸载FP,然后手工删除你FP的安装目录(一般是如C盘或D盘下的整个FPC文件夹),然后重新安装FP。
1.确定fp处于Debug (调试)模式下,否则将可能无法显示一些诸如越界等错误。
1查看修改方法:Options菜单下-->Mode...后面是否为Debug如果不是,请单击修改为Debug。
2.调试说明A:设置要观察变量:一般用Ctrl+F7可以添加需要查看的变量,也可以单击Debug菜单下-->Watches打开watches窗口右击进行添加修改删除。
可以直接添加变量名,也可添加数组名观察整个数组,甚至可以直接加a[i]的这种形式,观察数组中的某个元素。
B:调试方法(均在run菜单下):
F7单步模式,每次执行一条语句(确切的说是屏幕上的一行),运行时会在watches 窗口更新变量的值以供观察。
F8步进模式,每次执行一条语句,但不会深入到自定义的过程或函数中(F7会进入函数过程执行),只在主程序中按行调试执行。
F4Goto Cursor执行到光标处:调试前先将光标停在某行,然后按F4,程序自动在F4处停止,然后可以继续使用F7或F8进行调试,可以省下很多的时间。
复赛解题步骤
1、读题
2、构思策略方法
3、模拟样例数据
4、推举是否存在反例能推翻构思,如果是重新读题构思
5、建立数据结构,估算数据范围。
6、编制程序,使程序通过编译。
7、测试样例。
8、调试程序
根据源代码设计数据,尽可能让程序执行到每条语句(所有分支)。
调试数据选择:
a样例b手工构造随机数据c边界数据d特殊构造数据
调试方法:
(1)静态查错,直接即观察源代码,需要时打草稿。
(不要一出错就跟踪)
(2)动态跟踪,F7+Watches(仅在无法在静态差错中找到错误)
9、检查程序,调节优化,估算时间、空间使用情况,根据需要修改程序。
10、检查细节:输入文件名、文件夹。