从0开始学习pascal--如何从菜鸟变成大神
pascal吧
全部回复
仅看楼主
level 5
zombie462
楼主
2017年06月23日 03点06分
1
level 5
zombie462
楼主
2楼自占
2017年06月23日 03点06分
2
level 5
zombie462
楼主
第一章:初步接受pascal
2017年06月23日 03点06分
3
level 5
zombie462
楼主
1-1如何进入pascal
在官方网站上下载pascal后,点击setup.exe,即可安装
安装过程十分简单,只要你用过电脑
建议全部选择默认项,否则会造成不必要的麻烦
如果你的电脑水平还不错,建议吧pascal安装在D盘目录下
同时建议安装2.0.4版本,较为稳定
2017年06月23日 03点06分
4
level 5
zombie462
楼主
1-2如何新建文档
进入pascal后,不需要管它是英文界面还是中文界面,如何切换这里就不详细说了
首先点击File,或者按下Alt+F
然后点击New,或者按下N
接着就会看见一片蓝色——如果你没有调过的话
旁边的一概不需要管,然后你就可以开始入门训练了!
2017年06月23日 03点06分
5
虚路徒跬步
该语言从设置里翻,建议用银鱼
2017年06月25日 13点06分
level 5
zombie462
楼主
1-3新的程序
初学者必须掌握pascal的结构,注意千万不要去加program **(input,output)想当年我也是被骗了,直接打下begin
同时建议按F2保存,否则将会引起不必要的麻烦
所有pascal程序将默认保存在pasal安装目录下的bin中,所以我们不能那么草率,最好在D盘目录下新建文件夹,在那个文件夹里放置程序
保存的方法很简单,只需要在name输入框内打上你的文件目录就行了
比如你要保存在D盘目录下,名字是aa,那么输入
D:\aa.pas
.pas可以省略
2017年06月23日 03点06分
6
虚路徒跬步
开头不加 program?
2017年06月25日 13点06分
zombie462
那是当然,去掉又不会错误
2017年06月26日 00点06分
level 5
zombie462
楼主
第二章:输入输出语句
2017年06月23日 03点06分
7
level 5
zombie462
楼主
2-1输入语句
输入语句非常简单,只要在主程序部分添加write或者writeln语句就可以了
来看一个样例程序
begin
writeln('1');
write('****');
end.
这个程序意义就是输出
1
****
那如果反一下呢?
begin
write('****');
writeln('1');
end.
输出结果应该是
****1
显然,这里的write就是输出一串内容但是不换行
writeln就是输出并换行
write/writeln语句语法知识
write(输出的内容);
writeln(输出的内容);
注意分号绝对不能漏掉!
2017年06月23日 03点06分
8
zombie462
不好意思写错了是输出
2017年06月23日 03点06分
level 5
zombie462
楼主
2-2如何查看结果、运行
查看结果很简单
只要键入Art+F5就可以了
然后就是这个界面
按任意键便可以退出
运行其实也很简单
按下Ctrl+F9就可以了,有些书上写着必须编译后才可以按这两个键,其实不然,运行的过程就是在编译,如果程序有错,就会有如下指示
如何纠错在下一章会提到的,不过现在的程序不容易错,所以不细细说明了
如果编译通过,就会有一个输入界面,与查看结果界面完全相同
如果你的程序没有输入界面,那么直接运行后退回到程序界面
接着就可以查看结果
2017年06月23日 03点06分
9
level 5
zombie462
楼主
2-3输入语句
输入语句远远比输出语句难,但不是没有办法
输入语句只有read和readln两项
很多初学者就败在这里,因为老师总是拿这个例子
6 2
3
程序
begin
readln(a);
read(b);
end.
求a和b是多少
的确,这种方法很难,但我不会用这种方法的
首先讲一下变量
在程序最顶端写上var
然后定义一个变量,直接换行输入
如
var
a:longint;
begin
end.
这个程序就是定义a为longint,长整型
整型有integer,longint,byte,word,int64,qword等
但是integer,byte一般不用
word用于部分函数当中
int64的范围是-2^63~2^63-1
这个定义一般在很大的数据中使用
longint的范围是-2^31~2^31-1
这个定义非常常用
qword没有负值,正值比int64高出1倍,也就是0~2^64-1,没有什么用途,但一般题目里说没有负值的时候,int64也可以改成qword
实型,有real,single,double等
一般用real,这是不用想的,但用extended也不是没有
同样可以 var a:real;
当然,插一句,var后面可以跟很多东西,比如
var a,b,c:longint;
d,f:real;
e:longint;
这是完全可行的
2017年06月23日 03点06分
10
level 5
zombie462
楼主
接上
string型也比较常用,但内存较大,在以后会提到的
array数组型反正以后有专门的一章
char型是ASCLL的转变,这在以后也会有讲到的
正题来了
read就是读入一个数据后,不换行,当到达行末尾时自动转变成readln
readln就是读入一个数据后,换行
比如你想读入
6
1 2 3 4 5 6
这里的所有数据,你可以
readln(a);
readln(b,c,d,e,f,g);
当然也可以
readln(a);
read(b);read(c);read(d);……
也可以
read(a);
read(b);
read(c);
……
但不可以
readln(a);
readln(b);
readln(c);
……
这样只能读入6和1
2017年06月23日 03点06分
11
level 5
zombie462
楼主
第三章,赋值语句
2017年06月23日 03点06分
12
level 5
zombie462
楼主
3-1赋值
赋值语句很简单,只需要
变量名:=运算式;
比如把a赋值成6,可以
a:=6;
注意当
begin
a:=1;
a:=2;
end.
这时a应该等于2
运算式中,可以出现四则运算,小括号,以及变量
比如如下完整程序
begin
readln(a);
readln(b);
a:=a+6;
b:=b+(a+1);
writeln(a+b);
end.
有些难懂
首先读入a和b,如果读入的是1和2,那就是
a=1 b=2
a:=a+6,那么a就等于7
b:=b+(a+1),那么b就等于2+2=4
输入a+b
也就是输出11
赋值语句不是很好理解吗
2017年06月23日 03点06分
13
level 5
zombie462
楼主
3-2交换变量
这里的交换变量是指:将a的值赋值到b,将b的值赋值到a
意思就是如果a本来是1,b本来是2
那么在程序结束时应当把a的值改成2,将b的值改成1
这里有一个完整程序
var a,b:longint;
begin
a:=1;b:=2;
a:=b;b:=a;
writeln(a,' ',b);
end.
这是个结果错误的程序,输出应该是2 2
涉及到输出语句的数串结合了,慢慢来
输出语句中的' '中的字符(通常蓝色)表示直接输出引号里面的东西,但不包括引号
顺便说一句,如果想输出110‘22,就可以writeln('110''22');要输出的引号用两个引号表示
输出语句中不是蓝色的部分(也就是不再引号中的部分),如果输出的是数字,就输出这个数字,如果这是个表达式,输出这个表达式,如果是变量,则输出这个变量
左边的引号之前必须有逗号,除非这是第一个输出的串
a=2时
比如 writeln(1+1,'aa',‘a’,a+2,a+a);输出结果应该是2aaa44
很神奇,比如writeln('abc',a+a+a);输出结果应该是abc6
也就是,引号部分直接输出,非引号部分按赋值语句的方式输出
这块部分稍微难懂,希望能够多看几遍
2017年06月23日 03点06分
14
level 5
zombie462
楼主
接上
切入正题,为什么这个程序会错呢?
var a,b:longint;
begin
a:=1;b:=2;
a:=b;b:=a;
writeln(a,' ',b);
end.
原因很简单
a:=b,a就等于2
b:=a,b也等于2
所以就有错误了
那怎么办呢?
只要加个新的变量,就可以解决了啊
var a,b,c:longint;
begin
a:=1;b:=1;
c:=a;a:=b;b:=c;
writeln(a,' ',b);
end;
这样c就好像一个寄存单位,问题就解决了啊
注意一下,所有整型,实型在未赋值时均为0,布尔型为false,字符串为 什么都没有,字符为空字符
当然这是针对全局变量(就是顶端定义的var),但对于局部变量(以后会提到)来说,必须给它赋值为0,否则会有很大的错误
2017年06月23日 03点06分
16
pascal呵呵
用加减法或者xor也可以做到
2017年06月23日 12点06分
1
2
尾页