请解释这些Pascal代码..?

时间:2011-01-07 02:01:30

标签: pascal

我想在pascal实验室考试之前理解这些代码,特别是PROCEDURE

PROGRAM vowels; 

USES crt; 

{Program that counts the number of vowels in a sentence} 

CONST space=' '; 
      maxchar=80; 

TYPE vowel=(a,e,i,o,u); 

VAR buffer:ARRAY[1..maxchar] of char; 
    vowelcount:ARRAY[vowel] of integer; 

PROCEDURE initialize; 

VAR ch:vowel; 

BEGIN 
     FOR ch:=a TO u DO 
     BEGIN 
          vowelcount[ch]:=0; 
     END; 
END; 

PROCEDURE textinput; 

VAR index:integer; 

BEGIN 
     writeln('Input a sentence'); 
     FOR index:=1 TO maxchar DO 
         IF eoln THEN buffer[index]:=space 
         ELSE read(buffer[index]); 
         readln; 
END; 

PROCEDURE analysis; 

VAR index:integer; 
    ch:vowel; 

BEGIN 
     index:=1; 
     WHILE index<>maxchar+1 DO 
     BEGIN 
          IF buffer[index] IN ['a','e','i','o','u'] THEN 
          BEGIN 
               CASE buffer[index] OF 
               'a':ch:=a; 
               'e':ch:=e; 
               'i':ch:=i; 
               'o':ch:=o; 
               'u':ch:=u; 
               END; 
               vowelcount[ch]:=vowelcount[ch]+1; 
          END; 
          index:=index+1; 
     END; 
END; 

PROCEDURE vowelout; 

VAR ch:vowel; 

BEGIN 
     clrscr; 
     writeln; 
     writeln('   a   e   i   o   u'); 
     FOR ch:=a TO u DO 
     write(vowelcount[ch]:4); 
     writeln; 
END; 

BEGIN 
     initialize; 
     textinput; 
     analysis; 
     vowelout; 
END. 

请帮帮我

1 个答案:

答案 0 :(得分:10)

总体而言:好的,这段代码正在计算输入字符串中提供的元音数量。

让我们开始......

  

TYPE元音=(a,e,i,o,u); VAR   缓冲区:char的ARRAY [1..maxchar];   vowelcount:整数的ARRAY [元音];

此代码用英语定义元音列表(a,e,i,o,u)。

  

PROCEDURE初始化; VAR ch:元音;   开始为ch:= a你要开始   vowelcount [CH]:= 0;结束; END;

然后定义一个变量来收集每个元音的数量,称为vowelcount。该变量是一个数组,看起来像这样:

vowelcount[a]=0;
vowelcount[e]=0;
vowelcount[i]=0; #... etc

然后定义“分析”程序。这将从屏幕输入(稍后将在程序中调用)并逐步执行输入中的每个字母。

  

WHILE index&lt;&gt; maxchar + 1 DO BEGIN IF   buffer [index] IN ['a','e','i','o','u']   那么BEGIN CASE缓冲区[index] OF   'A':CH:= A; 'e' 的CH:= E;的 'i':CH:= I;   'O':CH:= O; 'U':CH:= U; END;

如果这些字母中的任何一个恰好在字母列表中而不是与元音匹配,那么它将在上面的vowelcount数组中添加一个字母。 (vowelcount [ch]:= vowelcount [ch] +1)其中ch是匹配的字母。如你所见,只有当它是一个有效的元音时才触发(IF缓冲区[索引] IN ['a','e','i','o','u'])

最后。该程序的主要代码,或实际运行的内容:

  

BEGIN clrscr; writeln; writeln('e e i   你好); FOR ch:= a TO TO DO   写(vowelcount [CH]:4); writeln; END;

     

BEGIN初始化;的TextInput;分析;   vowelout; END。

这基本上将应用程序串联起来,首先清除屏幕(在dos提示符下),然后将元音输出到屏幕上。然后它添加一些格式并输出当前的vowelcount计数(如上所述)。 然后它将请求您的输入,最后它将再次输出vowelcount的内容,该内容已使用您输入的元音数据进行更新。