Пожалуйста, объясните этот код Паскаля..?

Я хочу понять этот код перед экзаменом Паскаль лаборатории, особенно ПРОЦЕДУРА

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 ответ

В целом: Хорошо, этот код считает количество гласных, введенных во входной строке.

Давай начнем....

ТИП гласная =(a,e,i,o,u); VAR буфер:ARRAY[1..maxchar] из char; vowelcount:ARRAY[гласная] целого числа;

Этот код определяет список гласных на английском языке (a,e,i,o,u).

ПРОЦЕДУРА инициализации; VAR ch: гласный; НАЧАТЬ ДЛЯ ch:=a TO ВЫ ДЕЛАЕТЕ НАЧАТЬ vowelcount[ch]:=0; КОНЕЦ; КОНЕЦ;

Затем он определяет переменную для сбора номера каждого гласного, называемую vowelcount. Эта переменная является массивом, выглядит примерно так:

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

Затем процедура "Анализ" определяется. Это берет ввод с экрана (который будет вызван позже в программе) и проходит по каждой букве во вводе.

WHILE index<> maxchar + 1 DO BEGIN IF буфер [index] IN ['a','e', ​​'i','o','u'] THEN BEGIN CASE буфер [index] OF 'a':ch:= а; 'Е': ч: = е; 'I': ч: = я; 'О': ч: = о; 'И': ч: = и; КОНЕЦ;

Если какая-либо из этих букв окажется в списке букв, совпадающих с гласным, то она добавит один к числу в массиве vowelcount выше. (vowelcount[ch]:=vowelcount[ch]+1) где ch - совпавшая буква. Как вы можете видеть, это срабатывает только в том случае, если это действительный гласный (буфер IF [index] IN ['a','e', ​​'i','o','u'])

В заключение. Основной код программы или что на самом деле выполняется:

НАЧАЛО clrscr; WriteLn; writeln(' a e i o u'); FOR ch:=a TO, котор вы пишите (vowelcount[ch]:4); WriteLn; КОНЕЦ;

НАЧАТЬ инициализацию; ввод текста; анализ; vowelout; КОНЕЦ.

Это в основном связывает воедино приложение, начиная с очистки экрана (в приглашении dos) и затем выводя гласные на экран. Затем он добавляет некоторое форматирование и выводит текущий счетчик чисел vowelcount (как указано выше). Затем он запросит ваш ввод и, наконец, снова выведет содержимое vowelcount, которое было обновлено с помощью vowelcounts из введенного вами ввода.

Другие вопросы по тегам