请解释这些Pascal代码..?

MAN*_*NAL 0 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. 
Run Code Online (Sandbox Code Playgroud)

请帮我

Jas*_*son 10

总的来说:好的,这段代码正在计算输入字符串中提供的元音数量.

让我们开始....

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

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

程序初始化; VAR ch:元音; BEGIN FOR ch:= a to do do do BEGIN vowelcount [ch]:= 0; 结束; 结束;

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

vowelcount[a]=0;
vowelcount[e]=0;
vowelcount[i]=0; #... etc
Run Code Online (Sandbox Code Playgroud)

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

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; 结束;

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

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

BEGIN clrscr; writeln; writeln('aei o u'); 对于ch:= a你要写(vowelcount [ch]:4); writeln; 结束;

BEGIN初始化; 的TextInput; 分析; vowelout; 结束.

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