Pascal程序设计(二级)——基础篇03了解内容
来源:互联网 发布:广联达电气预算软件 编辑:程序博客网 时间:2024/05/17 22:48
好,介绍本节课,还有个话题,就是阅读网页的技巧,你可以把网页全部复制到Word中保存阅读,这样,你会发现,图形和文字都变大了,行距等也变得有规则了,Word提供一个好的视图利于阅读!!
接着上节的环境谈,这里推荐作为教程的:
PASCAL程序设计 清华大学出版社出版 第2版 郑启华
PASCAL语言教程 机械工业出版社出版 程凯成编著
Delphi入门基础教程:ObjectPascal中文参考手册(可打印版) ezdelphi@hotmail.com 百度文库
Free Pascal语言与基础算法 舒春平、董永建
Delphi2010语法手册 作者:wellsmart@live.cn
Delphi XE3 入门教程 李维 www.edgc.org.cn
作为深入学习的:数据结构与算法设计:Pascal语言北京理工大学出版社
作为实验环境的:
Delphi编程教程(第二版) 电子工业出版社 郑阿奇 陈瑞芬
全国计算机等级考试二级Delphi语言程序设计 教育部考试中心组织编写
Delphi8入门与进阶 清华大学出版社 许哲平
因此,在以后的学习过程中,我们不会重复输入那些基本概念,需要学习复习,做习题的自行自习,我们只是列出开设的章节和学习进度,然后用实例演示,演示WIN7(64位)+Delphi2010编译环境所具有的特性!~
在学习之前除了上面的分配问题,还有就是我们先瞧瞧,我们能做什么,振奋一下:
1.简单的图形输出
program 输出菱形;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
TopX,TopY,LeftX,LeftY,BottomX,BottomY,x1,x2,y:Integer;
begin
TopX := 33;
TopY := 2;
LeftX := 1;
LeftY := 10;
if (LeftX > 0) and (LeftY > 0) and (TopX > 0) and (TopY > 0) and
(LeftX < TopX) and (LeftY > TopY) then
begin
{将光标定位到顶点所在行}
for y := 2 to TopY do
Writeln;
{输出菱形的上半部分}
for y := TopY to LeftY do
begin
x1 := Round(TopX - (TopX - LeftX) * (y - TopY) / (LeftY - TopY));
x2 := Round(TopX + (TopX - LeftX) * (y - TopY) / (LeftY - TopY));
Write('*':x2);
Write(#13);
Writeln('*':x1);
end;
{输出菱形的下半部分}
BottomX := TopX;
BottomY := LeftY * 2 - TopY;
for y := LeftY + 1 to BottomY do
begin
x1 := Round(BottomX - (BottomX - LeftX) * (y - BottomY) / (LeftY - BottomY));
x2 := Round(BottomX + (BottomX - LeftX) * (y - BottomY) / (LeftY - BottomY));
Write('*':x2);
Write(#13);
Writeln('*':x1);
end;
end;
Readln;
end.
上面是源代码,我们不用那个经典的Hello World了,显然它不能更有效的振奋人心了!~
打开,Delphi2010后,依次点击,File——>New——>Other——>选择Console Application,进入控制台编程,把里面的内容全部替换掉,复制粘贴,就行,呵呵,DOS做这些就麻烦点吧?好,注意了哈,我们的文件名是“输出菱形.dpr”,扩展名改了,不是pas,另外重要的是,我们用的是中文名,做文件名,很显然,这样是行滴!~支持多国语言,这样命名多好啊,我们一下就知道它是做什么的,DOS就不好用了吧!~
然后依次点击Project——>Compile(编译)——>Build(链接生成),再点击Run菜单——>Run Without Debugging瞧瞧运行结果
这是个简单的程序,不过仍然很有意思,对吧?呵呵,好,接着有的小基础们就激动了,这是DOS程序啊,和二级C一样,我们也是可以循序渐进的学习Pascal程序呀,自然了,不仅如此,以后我们会发现,控制台可以做的事多呢,它和DOS类似,但又有很多不同,以后谈,呵呵!~
2.我们不仅可以做些简单的图形,还可以进行变换,(我们说了,不需要重复码已经有的内容,包括书上的或者教程上的,有需要的自行了解,毕竟网络教程不需要像出版社一样,章节什么的都写那么细,这里由于是演示的,所以提供大家欣赏的东西仅供学习观赏,有的是我在了解中遇到的,由于现在还不能突然讲解给大家,以后我们会逐步的做出这些效果来,呵呵,但必须循序渐进,打好基础),下面是一个变换的效果图
这是一个倾斜的旋转变换图了,具体网址
http://blog.csdn.net/maozefa/article/details/5969283
不过我当初在了解这个文章后,目的是转化成控制台的效果,呵呵,以后再演示给大家!~
3.Delphi不仅可以解决我们的数学,几何,图形问题,各种学科问题都是可以解决的,如化学中的分子图,呵呵,是不是很漂亮,心情更激动了吧!~
具体参考网址是:
http://blog.csdn.net/zzwu/article/details/8283703 分子图形软件MOL4D(5)F增强型
http://blog.csdn.net/zzwu/article/details/8286827 分子图形软件MOL4D(7)for Windows
我当初了解参考这些学习资料时,发现这个软件挺大的,不过我做了些简单的化学图,和实验图作为试验,试过,呵呵,等在相应章节,我们在共同学习研究!~~
4.再瞧瞧这个,就像上面的例3,复杂程序,有时搭配上流程图,是不是更好??我们Delphi可以都自己做的
是不是感觉好棒,心情又上升了一个层次?学习网址:
http://www.delphiarea.com/products/delphi-components/simplegraph/
这个我们以后也会在相应章节,共同研修学习,并做些改进。
5.瞧瞧下面的图,你想到了什么??对,天体运行中的某些轨迹
它是可以用我们Delphi写作的,不过复杂了些,呵呵,研究它要很多天,我们自然演示的时候,做的是个小的图文并茂的演示,这里开列的是研究和学习方向的一个,网址:
http://blog.csdn.net/zzwu/article/details/25785967
6.有了数理化了,那生物学中的呢?当然可以了,我们可以画分类图,食物链图等等。
7.好了,是不是心里满满的,但是我们还是需要了解一些熟悉东西的,毕竟常用的才是主要的,例如第一节说的阶乘的问题,我们也是可以做的
控制台演示实例,和例1的输出菱形上机实验步骤类似
program factorial(input,output);
{$APPTYPE CONSOLE}
uses
SysUtils;
var
fac:int64;
n,i:integer;
begin
{输入n}
read(n);
{计算n!}
fac:=1;
for i:= 2 to n do
fac:=fac*i;
{输出结果}
writeln(n,'!=',fac);
readln;
readln;
end.
这个是计算n!的普通算法,和C一样,但是pascal,有个int64的类型,有了就要用,呵呵,你把int64换成real或是extended都行,不过它只能算到20的阶乘!虽然少,显然比C的简单的阶乘程序中的数大了一倍了吧,下面是个程序截图
自然了,Pascal程序也是可以加细改进的,瞧下面的一个程序
program fac;
{$APPTYPE CONSOLE}
uses
SysUtils;
var
i,j,n,len: integer;
rad,c,r: longint;
buff: array[1..16000] of integer;
num: string[5];
begin
writeln('calculate n!');
write('n=?');
read(n);
rad:=10000;
len:=1;
buff[1]:=1;
for i:=1 to n do
begin
c:=0;
for j:= 1 to len do
begin
r := buff[j] * i +c;
buff[j] := r mod rad;
c := r div rad;
end;
if c>0 then
begin
len:=len+1;
buff[len]:=c;
end;
end;
write('n!=',buff[len]);
for i:=len-1 downto 1 do
begin
str(buff[i],num);
if length(num)<4 then
write(copy('0000',1,4-length(num)));
write(buff[i]);
end;
readln;
readln;
END.
这里,虽然不比第一节举得C的第2个阶乘的程序,但是很显然Pascal程序理解简单,不用学到最后,我们就能写出个比较实用的程序,对吧。
8.好了,n!这个数学表达式太简单了,下面,我们再举个大学生们都熟悉的积分例题,这也是个常见的例题了:
我们要计算的两个简单的积分式
程序代码如下:
program integ(input,output);
{计算2个定积分}
{$APPTYPE CONSOLE}
uses
SysUtils;
var
s1,s2:real;
a,b,f:real;
function f1(x:real):real;
{函数f1的说明}
begin
f1:=1/(1+x)
end;
function f2(x:real):real;
{函数f2的说明}
begin
f2:=x*exp(-x*x);
end;
function simpson1(a,b:real):real;
{辛普生积分函数说明}
const
n=40;
var
h,s:real;
i:integer;
begin
h:=(b-a)/n;
s:=f1(a)+f1(b);
for i := 1 to n-1 do
if odd(i) then s:=s+4*f1(a+i*h)
else s:=s+2*f1(a+i*h);
simpson1:=h/3*s
end;
function simpson2(a,b:real):real;
{辛普生积分函数说明}
const
n=40;
var
h,s:real;
i:integer;
begin
h:=(b-a)/n;
s:=f2(a)+f2(b);
for i := 1 to n-1 do
if odd(i) then s:=s+4*f2(a+i*h)
else s:=s+2*f2(a+i*h);
simpson2:=h/3*s
end;
begin
s1:=simpson1(0,1);
s2:=simpson2(1,2.5);
writeln('s1=',s1,#13,#10,'s2=',s2);
readln;
readln;
end.
好了,欣赏这些以后,心情会兴奋不少吧,我们可以做很多事情,自然还有很多,例如图文并茂的演示计算一道物理高考的难题,统计一篇WORD文章的中文字数。。。等等,这些我们都可以在控制台下完成,更不用说在可视化编程环境了,呵呵,自然了,我们学习,最好还是像二级C一样循序渐进的模式,这样,我们更能了解语言特性,和深入学习并巩固好语言基础。
好了,这节课到这,下节就要继续基础知识的循序渐进的学习了。。。
- Pascal程序设计(二级)——基础篇03了解内容
- Pascal程序设计(二级)——基础篇01介绍课程
- Pascal程序设计(二级)——基础篇02介绍环境
- Pascal程序设计(二级)——基础篇04简单数据类型
- Pascal程序设计(二级)——基础篇05格式化输入输出
- PAT 《C/C++/Java/Pascal 程序设计基础》习题集 (1) IO
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题1
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题2
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题3
- 《C/C++/Java/Pascal 程序设计基础》习题集 解题4
- 学习历程—程序设计基础(一)
- 程序设计基础—入门知识点(一)
- GSON——基础了解
- Java — 图形程序设计基础
- CCF中学生计算机程序设计入门篇练习2.4.2(NOI 1002 三角形) pascal
- windows程序设计的最基础内容
- 深入了解Android蓝牙Bluetooth——《基础篇》
- 深入了解Android蓝牙Bluetooth——《基础篇》
- 关于百分位数的算法实现
- 数据结构(三)---双向循环链表的实现---java版
- spring cloud config使用
- kmp
- HDU 5889
- Pascal程序设计(二级)——基础篇03了解内容
- PAT 03-树2 List Leaves [JAVA实现]
- 动态树
- mysql/Java服务端对emoji的支持
- VC6.0 头文件与主文件不在同一个文件夹中的解决办法
- cdq
- 欢迎使用CSDN-markdown编辑器
- Unity 编辑状态下执行一个方法
- 冒泡排序