关于free pascal的实用性

我是上初中时接触FP编程的,一直还都算挺认真的在学。可在去年11月参加了17届NOIP后突然有了些困惑。一直认为学好了编程就能把自己心中所想用电脑表达出来,可学了两年FP... 我是上初中时接触FP编程的,一直还都算挺认真的在学。可在去年11月参加了17届NOIP后突然有了些困惑。一直认为学好了编程就能把自己心中所想用电脑表达出来,可学了两年FP后发现编程只是做些题而已。好像没有一点实用性。可后来我也接触了易语言(那个号称中文编程的),并且似乎有了些那种可以“自己创造”的感觉。但我又觉得不能中途放弃,所以现在还是在学着FP。请问是我想错了吗?求高人指点。 展开
 我来答
匿名用户
2012-02-26
展开全部
1、““学好了编程就能把自己心中所想用电脑表达出来,可学了两年FP后发现编程只是做些题而已””
有这种想法,说明free pascal没有学好。写不出诗能怪字不好写?写诗的功夫都在诗外。编程语言只是一个表达工具。说明还不能对fpc运用自如。说明你现在的能力,用pascal对电脑的大多数资源都不能操控,觉得束手。

2、“接触了易语言(那个号称中文编程的),并且似乎有了些那种可以“自己创造”的感觉”
恰恰说明你不是要自己创造,而是要更好“自己山寨”。易语言就是本地化支持更好、可用的方便控件和环境、文档更清晰。

3、图灵完备的语言环境(包括易、pascal)本质都是一样的。里面的算法原理本质一样。
你学其中一个也就在学另一个。为什么学一个会做另一个不会做?说明会做的那个你也没学原理。只是学着使用。就像用一个音箱。你学了个开电源调音量就说会创造了,没学电磁原理。
举个例说明原理的重要。老外一个20岁的小伙,他先用C写了一个BASIC编译器,然后用自己写BASIC写了这个BASIC编译器的新版,以后他的编译器就自己编译自己,逐渐加入对图形、数据库、高精计算、游戏影音等一些库。他开发的这个语言现在什么可以做。。他会觉得自己的当年这个简陋basic语言没实用性吗?这也就是近年从无到有的FreeBASIC语言。
huzhill
2012-02-26 · 超过31用户采纳过TA的回答
知道答主
回答量:78
采纳率:0%
帮助的人:58.6万
展开全部
如果你是参加NOIP 那肯定只是解一些数学题,不过这对你的编程思想是一个很好的锻炼。
你看到易语言有“自己创造”的感觉是因为可以写出图形界面的程序吗?那我更要推荐你Lazarus了,他是用Free Pascal 实现的一个类似Delphi的跨平台编程工具,这个肯定是比易语言强大更何况你学过Pascal 应该能很快掌握。
如果你想在大学更深一步的学习编程 那么一定不能错过C语言, 现在很多语言都是由C语言衍生出来的。而且C语言对于系统底层,更加紧密。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2012-02-26
知道答主
回答量:16
采纳率:0%
帮助的人:16.3万
展开全部
哈哈。我也是初中开始接触FP。当初我也以为可以做一些游戏之类的,结果学着学着发现与自己想像的差别颇大。不过也一直学了下去。最近拿了NOIP初赛一等复赛二等。
其实这种想法就有点像上课时候在想“这学来有什么用呢?”。我以前是玩FLASH的,当时一直弄不懂Action(也就是算法结构)。在学了FP以后,我慢慢就开始有点懂了。
大部分编程语言应该都差不多吧?个人觉得学FP最大的用处就是了解算法的结构。像什么动态规划啊,分支算法结构啊,递归啊之类的东西放之四海而皆准。就像学数学一样,不会什么时候都要用三角函数,但它锻炼的是脑子灵活性,对学别的东西总会有帮助的。
既然学了个头,不妨就学下去吧。我学校的编程班就有个同学学过FP开始学C语言。虽然书写方面当然完全不同,不过学过FP总会有帮助。就像跑过马拉松的人去学游泳,总比直接去学游泳的人要有经验得多。
写了不少貌似。总之一句,FP的作用(或者说所有这类语言的作用)就是为了更复杂的其他编程语言做准备,还有锻炼脑子。不学走,怎么学跑呢?
希望对你有帮助。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秦朝的海
2012-03-03 · TA获得超过109个赞
知道答主
回答量:127
采纳率:0%
帮助的人:82.1万
展开全部
等你看到delphi 时,你就知道pascal 还能干什么了,再者,锻炼思维,好处远不止你现在看靠到的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-03-03
展开全部
不要换,fp也有它的乐趣 你可以试着编个小游戏玩玩 给你看一个 fp能存在这么久 肯定有它的理由
uses crt;
const x=12;
var p:array[1..x,1..x] of string;
t:array[1..x,1..x] of boolean;
i,k,j,n,l,s,a,b,c,d,e,f,g,h,a1,a2,a3,a4,a5,a6,a7,a8,e3,a9,a10,shu,yin,v,w,ss,as,q12,pp,we,zet,vt:longint;
z:char;
q,doy:string;
vv:string;
b1,b2:boolean;
begin
vt:=1;
writeln('Welcome to <eat been> game');
readln;
writeln('How to play:');
writeln(' Do not go the same way(the starts means that you can''t go)');
writeln;
readln;
writeln(' w up');
writeln('a s d left down right');
writeln;
readln;
writeln('jump to the second place,and ''ss'' must>0');
writeln('(every 20 walks can make one''ss'',and every level will be higher)');
writeln(' i up');
writeln('j k l left down right ');
writeln;
readln;
writeln('p It means:I think I lose,and I want to go out');
readln;
writeln('There are 5 levels at all');
readln;
ss:=1;
l:=1;
we:=20;
repeat
begin
if l=6 then break;
if zet=1 then break;
//输入棋盘
gotoxy(1,1);
ClrScr;
Clreol;
shu:=0;
yin:=0;
gotoxy(1,1);
textbackground(green);
for i:=1 to 80 do
begin
for j:=1 to 15 do
write(' ');
writeln;
end;
gotoxy(1,1);
ClrScr;
Clreol;
if l=5 then
begin
for i:=1 to 10 do writeln;
for i:=1 to 30 do write(' ');
write('Level:',l,'(BOSS)');
delay(1200);
end;
ClrScr;
Clreol;
if l<>5 then
begin
for i:=1 to 10 do writeln;
for i:=1 to 35 do write(' ');
write('Level:',l);
delay(1200);
end;

gotoxy(1,1);
for i:=1 to x do
for j:=1 to x do p[i,j]:='. ';
randomize;
a1:=random(x-3);
a2:=random(x-2);
p[a1,a2]:='* ';
a3:=random(x-5);
a4:=random(x-4);
p[a3,a4]:='* ';

for i:=1 to x do
for j:=1 to x do
t[i,j]:=TRUE;
for i:=1 to x do
begin
t[1,i]:=FALSE;
t[i,1]:=FALSE;
t[x,i]:=FALSE;
t[i,x]:=FALSE;
p[1,i]:='__';
p[i,1]:=' |';
p[x,i]:='--';
p[i,x]:='| ';
end;
p[1,x]:=' ';
p[1,1]:=' ';
p[x,1]:=' ';
p[x,x]:=' ';
t[a1,a2]:=FALSE;
t[a3,a4]:=FALSE;

if l>2 then
begin
t[6,5]:=FALSE;
p[6,5]:='* ';
t[7,2]:=FALSE;
p[7,2]:='* ';
end;

if l>1 then
begin
p[4,9]:='* ';
t[4,9]:=FALSE;
end;

if l>3 then
begin
p[5,10]:='* ';
t[5,10]:=FALSE;
t[2,9]:=FALSE;
p[2,9]:='* ';
t[7,6]:=FALSE;
p[7,6]:='* ';
end;

if l>4 then
begin
we:=we+6;
t[3,2]:=FALSE;
p[3,2]:='* ';
t[4,2]:=FALSE;
p[4,2]:='* ';
t[6,4]:=FALSE;
p[6,4]:='* ';
t[10,8]:=FALSE;
p[10,8]:='* ';
t[8,8]:=FALSE;
p[8,8]:='* ';
end;

randomize;

a:=random(x-2); b:=random(x-2);
a:=a+2;
b:=b+2;
p[a,b]:='0 ';
t[a,b]:=FALSE;
repeat
begin
for v:=1 to x do
begin
for j:=1 to x do write(p[v,j]);
writeln;
end;

gotoxy(38,2);
write('Level:',l);
if l=5 then writeln('(BOSS)');
gotoxy(38,3);
writeln('ss:=',ss);
gotoxy(38,4);
writeln('walks:=',as,'/',we);
gotoxy(1,1);

while not keypressed do;
z:=readkey;
writeln(z);
if (z='w') and (a-1>0) and (t[a-1,b]=TRUE) then
begin
p[a,b]:='* ';
a:=a-1;
p[a,b]:='0 ';
t[a,b]:=FALSE;
pp:=pp+1;
end;
if (z='a') and (b-1>0) and (t[a,b-1]=TRUE) then
begin
p[a,b]:='* ';
b:=b-1;
p[a,b]:='0 ';
t[a,b]:=FALSE;
pp:=pp+1;
end;
if (z='s') and (a+1<x+1) and (t[a+1,b]=TRUE)then
begin
p[a,b]:='* ';
a:=a+1;
p[a,b]:='0 ';
t[a,b]:=FALSE;
pp:=pp+1;
end;
if (z='d') and (b+1<x+1) and (t[a,b+1]=TRUE)then
begin
p[a,b]:='* ';
b:=b+1;
p[a,b]:='0 ';
t[a,b]:=FALSE;
pp:=pp+1;
end;

if z='p' then
begin
ClrScr;
Clreol;
writeln('Do you want to go out?(Y/N or YES/NO)');
readln(vv);
if (vv='Y') or (vv='y') or (vv='YES') or (vv='yes') or (vv='Yes') then
begin
shu:=shu+1;
zet:=1;
break;
end
else
begin
writeln('Go on!');
readln;
end;
end;

if (z='i') and (a-2>0) and (t[a-2,b]=TRUE) and (ss>0) then
begin
p[a,b]:='* ';
a:=a-2;
p[a,b]:='0 ';
t[a,b]:=FALSE;
ss:=ss-1;
end;
if (z='j') and (b-2>0) and (t[a,b-2]=TRUE) and (ss>0)then
begin
p[a,b]:='* ';
b:=b-2;
p[a,b]:='0 ';
t[a,b]:=FALSE;
ss:=ss-1;
end;
if (z='k') and (a+2<x+1) and (t[a+2,b]=TRUE) and (ss>0)then
begin
p[a,b]:='* ';
a:=a+2;
p[a,b]:='0 ';
t[a,b]:=FALSE;
ss:=ss-1;
end;
if (z='l') and (b+2<x+1) and (t[a,b+2]=TRUE) and (ss>0)then
begin
p[a,b]:='* ';
b:=b+2;
p[a,b]:='0 ';
t[a,b]:=FALSE;
ss:=ss-1;
end;

for v:=1 to x do
begin
for j:=1 to x do write(p[v,j]);
writeln;
end;
end;

w:=0;
//判断赢了;
for i:=2 to x-1 do
for j:=2 to x-1 do
begin
if t[i,j]=FALSE then w:=w+1;
end;
if w=(x-2)*(x-2) then
begin
sound(200);
ClrScr;
Clreol;
for i:=1 to 10 do writeln;
for i:=1 to 34 do write(' ');

writeln('You win!');
yin:=yin+1;
doy:='y';
l:=l+1;
we:=we+3;
e3:=1;
delay(800);
break;
end;
//判断输了;
if (t[a+2,b]=FALSE) and (t[a-2,b]=FALSE) and (t[a,b+2]=FALSE) and (t[a,b-2]=FALSE) and (t[a+1,b]=FALSE) and (t[a-1,b]=FALSE) and (t[a,b-1]=FALSE) and (t[a,b+1]=FALSE) then
begin
sound(200);
delay(800);
ClrScr;
Clreol;
for i:=1 to 10 do writeln;
for i:=1 to 34 do write(' ');
writeln('GAME OVER!');
shu:=shu+1;
doy:='s';
delay(800);
break;
end;

if (t[a+1,b]=FALSE) and (t[a-1,b]=FALSE) and (t[a,b-1]=FALSE) and (t[a,b+1]=FALSE) and (e3<>1) and (ss=0) then
begin
sound(200);
delay(800);
ClrScr;
Clreol;
for i:=1 to 10 do writeln;
for i:=1 to 34 do write(' ');
writeln('GAME OVER!');
shu:=shu+1;
doy:='s';
delay(800);
break;
end;

e3:=0;
if pp=1 then as:=as+1;
pp:=0;
if as=we then
begin
ss:=ss+1;
as:=0;
end;
ClrScr;
Clreol;
if zet=1 then break;
until 1+1<2;
if doy='y' then vt:=ss;
ClrScr;
Clreol;
if doy='s' then
begin
textbackground(black);
for i:=1 to 40 do
begin
for j:=1 to 20 do write(' ');
writeln;
end;
ClrScr;
writeln('Do you want to try again?(Y/N or YES/NO,small words is OK)');
readln(q);
if (q='Y') or (q='YES') or (q='y') or (q='yes') or (q='Yes')then
begin
writeln('OK!Try again!');
delay(800);
sound(200);
end;
if (q='N') or (q='NO') or (q='n') or (q='no') or (q='No')then break;
end;
doy:='';
textbackground(green);
ss:=vt;
end;
until 1+1<2;
ClrScr;
Clreol;
if l=6 then writeln('What a good boy!!You win the game!!!') else
begin
writeln('You win ',yin,' times,lose ',shu,' times.');
if yin<shu then writeln('What a pig!');
if yin=shu then writeln('Pig!');
if shu<yin then writeln('pig!!!!');
end;
readln;
end.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
皇族119
2012-03-01
知道答主
回答量:19
采纳率:0%
帮助的人:6.5万
展开全部
你要学下去,大学也要学,我小学6年级,我学了2年,好玩的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式