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语言版
数据结构与算法设计——Pascal语言(第2版)出版社:北京理工大学出版社

数据结构与算法设计: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一样循序渐进的模式,这样,我们更能了解语言特性,和深入学习并巩固好语言基础。

好了,这节课到这,下节就要继续基础知识的循序渐进的学习了。。。

0 0
原创粉丝点击