free pascal 教程

作者&投稿:贾祥 (若有异议请与网页底部的电邮联系)
如何使用free pascal?~

右键——默认值——默认代码页——更改为‘437 (OEM - 美国)’——确定
其他的调试步骤:
例1. 1的调试:
1、Free Pascal程序的启动
双击桌面上的Free Pascal,启动后,界面如下:

2、第一次启动free pascal 时,用鼠标单击菜单不起作用,需用要进行设置。右击标题栏,选择属性:

3、在属性窗口中,去掉2个快速编辑模式和插入模式前的复选框的勾,再单击确定按纽,新弹出:将属性应用于快捷的设置,在该面板中选择:修改启动该窗口的快捷方式。设置好了,关闭free pascal窗口。再重新单击桌面上的free pascal,这时就可以用鼠标来操作了。

4、新建一程序文件:单击菜单File,选择new

5、输入代码,这里的writeln是writeLn,大小写不要紧。Writeln()后面接的是一对括号。

6、保存。按F2,或单击file/save,弹出一保存窗口。将文件保存为ex11.pas。该文件存储在free pascal的安装目录下:C:\FPC\2.0.4\bin\i386-win32


7、编译运行,按Ctrl+F9,编译后,再Alt+F5查看屏幕输出结果。















例1.2调试:
1、新建一程序文件:单击菜单File,选择new

2、以书本例1.2为例,在新建的窗口中输入如下代码:

3、代码写完后,单击file / save (或按F2),保存文件,存储为ex12.pas,该文件存储在free pascal的安装目录下:C:\FPC\2.0.4\bin\i386-win32

4、编译程序。按Ctrl+F9,弹出如下窗口:

在此窗口中输入a的值,比如输入5,输完后,敲回车键,回到程序窗口,再按Alt+F5,在屏幕上查看输出结果。

得到输出的结果值,再按回车健Enter,回到主程序界面。

可以看看孟建平的《pascal编程与算法设计》(第三版)
或者是张文双的pascal编程初中班, 适合打基础

第一章、pascal介绍
一、pascal的基本语法单位

1、基本符号
A——Z;a——z;0——9;+,-,*,/,=,<>,<=,>=,<,>,(,),[,],{,},:=,,,;,.,:,..,',^
注意:pascal语言除了能使用以上规定的基本符号外,不得使用任何其它符号。

2、保留字
AND,ARRAY,BEGIN,CASE,CONST,DIV,DO,DIWNTO,ELSE,END,FILE,FOR,FUNTION,GOTO,IF,LABEL,MOD,NIL,OF,OR,PACKED,PROCEDURE,PROGRAM,RECORD,REPEAT,SET,THEN,TO,TYPE,UNTIL,VAR,WHILE,WITH。
注意:所起的文件名不能与保留字相同。

3、标识符
以字母打头的字母数字串,长度小于等于8。
标准标识符(共三十九个):
标准常量:
false,true,maxint
标准类型:
integer,real,char,boolean,text
标准文件:
input,output
标准函数:
abs,arctan,chr,cos,eof,eoln,exp,ln,odd,ord,ored,round,sin,sqr,
sqrt,succ,trunc
标准过程:
get,new,pack,page,put,read,readln,reset,rewrite,unpack,write, writeln

二、程序结构
1、由三大部分组成:程序首部,说明部分,语句部分。
PROGRAM 程序名(input,output);
{……} 解释
CONST
pi=3.14159;
VAR
r,l,s:real;
BEGIN
write('input r:');
read(r);
l:=2*pi*r;
write('l=',l,'s=',s);
END;
2、大量使用标点符号,保留字后不加标点符号(END除外)。

第二章、顺序结构程序设计

一、标准数据类型
1、实型(real)
小数表示法、指数表示法
2、整型(integer)
正、负整数和零
maxint=32767
pred:前导;succ:后继
[例]:pred(3)=2;succ(3)=4;
pred(true)=false;
succ(false)=true
3、字符型(char)
是指在两个单引号中的一个字符。
ord:取序数
[例]:ord('A')=65
4、布尔型(boolean)
false;true
用于布尔型的运算:NOT、AND、OR
ord(true)=1;ord(false)=0

二、常量和变量的定义
常量的定义:CONST
pi=3.14159;
blank=' ';
变量的定义:VAR
r,l,s:read;
cl:char;

三、表达式及赋值语句
[例]:b2-4ac 写成:sqt(b)-4*a*c
赋值:<变量>:=<表达式>

四、输入输出语句
1、输入语句:read(<变量表>);readln(<变量表>)
注:表达式里面变量与变量之间用逗号隔开;
readln表示下一个语句将从下一行开始操作;
输入时,整型或实型用空格或回车隔开,字符型之间无需分隔,一个接一
个输入。
2、输出语句:write(<输出表>);writeln(<输出表>)
注:对real或integer限定场宽:write('a=',a:2:0) {a为real型}

第三章、选择结构程序设计

一、if 语句
格式:IF<条件>
THEN<语句1>
ESLE<语句2>
注:1、ELSE与最近的并且未被配对的ELSE配对;
2、复合,如果THEN或ELSE带有多个语句,则要用BEGIN——END括起来。

二、CASE语句
格式:CASE <表达式> OF
<值表1>:<语句1>
<值表2>:<语句2>
……
<值表n>:<语句n>
[ELSE<语句>]
END
注:1、值表的三种表达方式:“1:”;“2,4,6:”;“10..100:”
2、CHAR,INTEGER,BOOLEAN有序

第四章、循环结构程序设计

一、FOR语句
格式:1、FOR <循环变量>:=<初值> TO <终值> DO <语句>;
2、FOR<循环变量>:=<终值> DOWNTO <初值> DO <语句>。
[例1]:输入10个数,求最大值、最小值、和、及平均值。

PROGRAM ten(input,output);
VAR
a,s,max,min,avg:real;
i:integer;
BEGIN
write('please input:');
read(a);
s:=a;
max:=a;
min:=a;
FOR i:=2 TO 10 DO
BEGIN
read(a);
s:=s+a;
IF a>max THEN
max:=a
ELSE
IF a<min THEN min:=a
END;
avg:=s/i;
writeln(……);
END.

[例2]:求s=1!+2!+3!+……+10!
program sum_fac(input,output);
var
i,j,s,m:integer;
begin
s:=0:
for j:=1 to 10 do
begin
m:=1;
for j:=1 to i do
m:=m*j;
s:=s+m;
end;
write(……);
end;

二、while语句
格式:WHILE <条件> DO
<循环体>
[例1]:输入一串字符串,求第一个“,”前的大小写字母个数和其它字符个数。
program string(input,output);
var
ch:char;
c,s,o:integer;
begin
write(……);
read(ch);
c:=0;
s:=0;
o:=0;
while ch<>',' do
begin
if (ch>='A')and(ch<='Z') then
c:=c+1
else if (ch>='a')and(ch<='z') then
s:=s+1
else
o:=o+1;
read(ch);
end;
write(……);
end.

三、REPEAT语句
格式:REPEAT
<循环体>
UNTIL

[例]:以字符(char)的形式读入一实数,以实形(real)输出该数。

第五章、函数与过程程序设计
一、函数(包括标准函数和自定义函数)
1、函数的定义
格式:FUNCTION 函数名(<形参表>):返回值类型;
VAR
<变量说明>
BEGIN
<函数体>
END
[注]:1、形参表每个参数都写明其类型;
2、有且只有一个返回值,并且要将返回值赋值给函数名。
[例]:求五边形的面积
function area(a,b,c:real):real;
var
p:real;
begin
p:=(a+b+c)/2;
area:=sqrt(p*(p-a)*(p-b)*(p-c);
end;
2、函数的调用
1)、函数的调用必然出现在表达式中(等号的右边),不能以单独地在语句出现
2)、调用时,将每个实参传递给对应的形参
program ml_area(input,output);
var
l1,l2,l3,l4,l5,l6,l7,s:real;
function area(a,b,c:real):real;
var
p:real;
begin
p:=(a+b+c)/2;
area:=sqrt(p*(p-a)*(p-b)*(p-c);
end;
begin
write('input');
readln(l1,l2,l3,l4,l5,l6,l7);
s:=area(l1,l2,l6)+area(l2,l6,l7)+……;
writeln('s=',s:10:3);
end.

二、过程
格式:PROCEDURE<过程名>(<形式参数表>)
VAR
<说明部分>
BEGIN
<过程体>
END;

[例1]某过程的形参表为(var a,b:real;c,d:integer;var e:char);
主程序中有如下变量说明:x,y:real; m:integer; next:char;
则以下实参表中合法的有:(1、2、3)
1、(x,y,m+3,70,next)
2、(y,x,m,m,next)
3、(y,x,35,m DIV 10,next)
4、(m,x,30,10,next)
5、(x,y,m,10)
6、(35,0,y,m,10,next)
7、(x,y,m,m/10,next)
8、(A,B,30,10,next)

[例2]求程序输出的结果。
program ex(input,output);
var
x,y,z:integer;
procedure s(x:integer; var y:integer);
var
z:integer
begin
x:=5; y:=6; z:=7;
end;
begin
x:=1; y:=2; z:=3;
s(x,y);
writeln(x,y,z);
end.
输出结果:1 6 3

[例3]:求五个数中的最大值。
program max_in_5(input,output);
var
n1,n2,n3,n4,n5:integer;
procedure lagest_in_three(a,b,c:integer;var e:integer)
begin
e:=a;
if b>e then
e:=b;
if c>e then
e:=c;
end;
begin
write('……');
readln(n1,n2,n3,n4,n5);
lagest(n1,n2,n3,n1);
lagest(n1,n4,n5,n1);
write(n1);
end.

三、嵌套
[例]:计算、
program Cmn(input,output);
function fax(x:integer):integer:
var
i:integer;
begin
fac:=1;
for i:=1 to x do
fac:=fac*i;
end;
function c(a,b:integer):real;
begin
c:=fac(a)/fac(b)*fac(a-b)
end;
begin
writeln('c(9,3)=',c(9,3));
writeln('c(8,5=',c(8,5));
end.

四、递归
函数或过程调用它本身,称为递归。
[例1]、用递归计算n! {=m!/n!(m-n)!}
program fac_n(input,output);
var
n:integer;
function fac(n:integer):integer;
begin
if n=1 then fac:=1
else fac:=n*fac(n-1);
end;
[例2]、用递归计算

1)、function power(a,b:integer):integer;
begin
if b=1 then power:=a
else power:=a*power(a,b-1);
end;
2)、procedure power(a,b:integer;var c:integer);
begin
if b=1 then c:=a
else power(a,b-1,c);
c:=a*c;
end;

[例3]、输入一串字符串(以‘.’结束)按逆顺输出
program revers(input,output);
procedure rever;
var
c:char;
begin
read(c);
if c<>'.' then rever;
write(c);
end;
begin
rever;
end.

五、标识符的作用域
1、全局变量和局部变量
1)、全局变量:在主程序中被说明,作用域:整个程序;
2)、局部变量:在子程序中被说明,作用域:主程序及其下级的程序。
2、子程序(function、precedure)的作用域
一个子程序可以调用它的下一级了程序,或可以调用在它之前定义的同级子程序。
[例]写出程序运行的结果。
program range(input,output);
var
x,y:integer;
procedure p1;
var
x,z:integer;
begin
x:=10; y:=y+1; z:=10;
writeln(x,y,z);
end;
begin
x:=1; y:=1;
writeln(x,y);
p1;
writeln(x,y,z);
end.

结果为:
(x y z)
1 1
10 2 10
1 2 (error)

3、在子程序中被改变值的变量可以回传的两种方法:
a、变量参数 procedure(var 变量名);
b、在上一级程序定义了的,且在下一级程序未被重新定义的。
[注]如果主程序的变量在子程序被重新定义,在子程序中主程序的变量被稳藏,在主程序中子程序的变量无效。

百度搜索 " 网罗设计 " 这4个字就有图文.电子书.书籍.光盘.素材.视频教程打包下载


龙江县13237201054: Freepascal使用步骤是什么?
夷图固邦: 3.新建程序窗口按F10进行主菜单,选择FILE菜单,执行其中New命令

龙江县13237201054: 如何使用free pascal?
夷图固邦: 右键——默认值——默认代码页——更改为'437 (OEM - 美国)'——确定其他的调试步骤:例1. 1的调试:1、Free Pascal程序的启动 双击桌面上的Free Pascal,启动后,界面如下:2、第一次启动free pascal 时,用鼠标单击菜单不起作用,...

龙江县13237201054: freepascal怎样使用? -
夷图固邦: 介绍: http://baike.baidu.com/view/914208.htm 下载:www.freepascal.org 使用:1.Free Pascal的安装 Free Pascal是用户快捷安装Free Pascal开发环境的工具,该工具可以从网上搜索下载,也可以从OI爱好者(OIFans.cn)下载最新的版本. ...

龙江县13237201054: Free Pascal IDE 的使用 -
夷图固邦: 基本步骤我会(1)进入与退出(注意:退出时必须使用文件菜单中的退出命令或Alt+X)(2)编辑程序光标移动键的使用Backspace键:删除光标前一个字符Ctrl+N:在光标前插入一行Ctrl+Y:删除光标所在行Home:光标移到行首End:...

龙江县13237201054: free pascal怎么使用 -
夷图固邦: Free pascal 简介 Free Pascal是个由国际组织开发的完全的win32的pascal语言编译器,类似delphi,可编写windows程序.Free Pascal理论上可以使用4GB内存.所以在利用Free Pascal编程的时候,可以改变原有思路,将大量时间转嫁给空间,提高效率.free pascal官方网站: www.freepascal.org free pascal2.2.0官方ftp下载地址:ftp://ftp.freepascal.org/pub/fpc/dist/i386-win32-2.2.0/fpc-2.2.0.i386-win32.exe 不晚啊,我是5年纪学的,学了5年了,有社么问题可以问我

龙江县13237201054: free pascal 教程
夷图固邦: 输入一个n输出n转换为2进制后的数. Var n:longint; s:string; Begin readln(n); while n>0 do Begin s:=chr((n mod 2)+48)+s; n:=n div 2; End; writeln(s); End.

龙江县13237201054: 怎样安装free pascal -
夷图固邦: 问题步骤 1: (2011/9/18 21:02:58) 在“名称 (可编辑文本)”(位于“编程”中)上用户左键双击 上一步 下一步 问题步骤 2: (2011/9/18 21:03:06) 在“Next > (按下按钮)”(位于“Setup - Free Pascal”中)上用户左键单击 上一步 下一步 问...

龙江县13237201054: free pascal函数COPY(st,a,b)如何使用
夷图固邦: copy(s,w,k) 复制s中从w开始的k位 例如: s:='123456789'; s1:=copy(s,3,5);{s1的值是'34567'}

龙江县13237201054: 如何使用Free Pascal for Mac -
夷图固邦: 桌面不是有快捷方式吗 程序可以在.pas文件中写,拖到快捷方式里

龙江县13237201054: 新手学Free Pascal求解,“1 + 2”(exitcode:106) -
夷图固邦: 其实这个很简单,因为char读入时不用输入空格,所以稍微改进一下就是: var c,d:char; a,b,h:real; begin read(c); a:=ord(c)-48; read(d); read(c); b:=ord(c)-48; case d of '+':h:=a+b; '-':h:=a-b; '*':h:=a*b; '/':h:=a/b; end; write(h:0:2); end. 不过因为不用...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网