
- •1.0. Обработка данных на компьютере
- •1.0.1. Программирование
- •1.0.2. Систематическое программирование
- •1.1. Программа PrintHello
- •1.2 Последовательное выполнение
- •1.3. Символьные данные
- •1.3.1. Программа CopyChar
- •1.3.2. Оператор присвоения.
- •1.3.3. Аннотированный вывод и эхо ввода.
- •1.4. Условное выполнение
- •1.4.1. Условия
- •1.4.2. Оператор if
- •1.4.3. Оператор begin
- •1.5. Циклическое выполнение
- •1.5.1 Оператор while
- •1.5.2. Бесконечное выполнение
1.1. Программа PrintHello
PROGRAM PrintHello(INPUT, OUTPUT);
BEGIN
WRITELN(‘HELLO’)
END.
OUTPUT: HELLO
Форма, в которой представлена программа, называется синтаксисом.
Данная программа имеет заголовок и оператор ВEGIN. Эти части есть в синтаксисе любой Паскаль-программы. Слова PROGRAM, INPUT, OUTPUT, BEGIN, WRITELN, END – стандартные слова языка Pascal.
Знаки пунктуации и скобки должны размещаться именно так как размещаются.
Стандартное слово WRITELN указывает Паскаль-машине вывести строку текста.
Стандартное слово INPUT – имя входных данных программы, которые в данном случае не используются
Стандартное слово OUTPUT – имя выходных данных программы, которые будут распечатаны как результат работы программы
Стандартные слова PROGRAM BEGIN END указывают Паскаль-машине границы исполняемой части программы. Точка символизирует конец программы.
Название программы – идентификатор, начинается с буквы, не содержит пробелов. Название программы не влияет на результат выполнения но оно должно быть достаточно информативным для других программистов, которые будут читать эту программу.
‘HELLO’ символьная строка, апострофы, расположенные внутри символьной строки, удваиваются.
Выражение – комбинация стандартных слов языка Паскаль, переменных, литералов, знаков пунктуации, допустимая синтаксисом языка Паскаль.
Оператор – комбинация выражений, допустимая синтаксисом языка Паскаль.
1.2 Последовательное выполнение
На предыдущей лекции мы рассмотрели такие понятии как Паскаль-машина, Паскаль-программа, рассмотрели программу PrintHello и начали рассматривать последовательное выполнение Паскаль-программ.
Паскаль-программы выполняются Паскаль-машиной последовательно, в один момент времени может выполняться только один оператор. Паскаль-программы могут печатать символьные строки на одной и той же строке или на нескольких строках.
Новые идеи: оператор WRITE, таблица выполнения, продолжение печати на той же строке, новые строки, печать псевдографики.
На прошлом занятии мы рассмотрели программу PrintHello. Сегодня Вам предлагается ее модифицированная версия PrintHelloTwo
PROGRAM PrintHelloTwo(INPUT, OUTPUT);
BEGIN
WRITE(‘HE’);
WRITE(‘L’);
WRITELN(‘LO’)
END.
Данная программа демонстрирует последовательное выполнение, он выводит слово ‘HELLO’ по один-два символа. В программе встречается новое стандартное слово WRITE, с помощью которого задаются операторы WRITE. Оператор WRITE выводит данные в OUTPUT, но не закрывает строку текста, тогда как оператор WRITELN, рассмотренный нами на предыдущей лекции, выводит данные с закрытием строки, после предложения WRITELN данные будут выводиться на новой строке.
Шаги выполнения программы разделены точкой с запятой, этого достаточно, но мы разместили каждый оператор на отдельной строке для читаемости. Стандартные слова BEGIN и END не отделяются точкой с запятой от предложений заключенных внутри.
Опробуем определить OUTPUT для различных точек в последовательности выполнения программы:
WRITE(‘HE’);
OUTPUT: HE
WRITE(‘L’);
OUTPUT: HEL
WRITELN(‘LO’)
OUTPUT: HELLO
Одним иp способов описания последовательного выполнения программы является таблица выполнения, построим ее для программы PrintHelloTwo
В таблице показаны строки программы, поэтому мы не пишем разделители.
|
OUTPUT |
PROGRAM PrintHelloTwo(INPUT, OUTPUT) BEGIN WRITE(‘HE’) WRITE(‘L’) WRITELN(‘LO’) END. |
_ _ HE_ HEL_ HELLO/_ HELLO |
После выполнения первой строчки программы создается OUTPUT для данных являющимися результатами выполнения программы. Мы будем изображать OUTPUT как строку символов, заканчивающуюся символом курсора, указывающего место, где будет напечатан следующий символ.
В начале выполнения OUTPUT пуст, курсор в начале строки.
Вторая строка со словом BEGIN не изменяет OUTPUT, как мы уже говорили, оператор BEGIN служит для задания границ выполнения.
Третья строка с помощью оператора WRITE выводит символы ‘HE’ в OUTPUT в позицию курсора и сдвигает курсор на две позиции.
Четвертая строка выводит в OUTPUT ‘L’ и сдвигает курсор на одну позицию.
Аналогично, пятая строка выводит в OUTPUT ‘LO’ и закрывает строку и передвигает курсор. Закрытие строки мы показываем с помощью символа / - так будет изображаться в таблице выполнения маркер конца строки. Маркер конца строки – невидимый символ, результатом вывода которого в OUTPUT является появление новой строки.
Последняя строка программы, слово END, прекращает выполнение программы и возможность вывода данных в OUTPUT. Курсор и маркер конца строки пропадают, в OUTPUT остается строка HELLO как результат выполнения программы.
Мы можем поместить другие строки внутри предложений WRITE и WRITELN и, соответственно, получим другой OUTPUT
PROGRAM PrintGreeting(INPUT, OUTPUT);
BEGIN
WRITE(‘HELLO’);
WRITE(‘ ’);
WRITELN(‘THERE’)
END.
OUTPUT: HELLO THERE
Кому-то может показаться странным, но пробел является таким же символом как, например ‘L’ и он может быть напечатан в OUTPUT. Построим таблицу выполнения для программы PrintGreeting
|
OUTPUT |
PROGRAM PrintGreeting(INPUT, OUTPUT); BEGIN WRITE(‘HELLO’); WRITE(‘ ’); WRITELN(‘THERE’) END. |
_ _ HELLO_ HELLLO _ HELLO THERE/_ HELLO THERE |
Программа VerticalGreeting выводит более одной строчки в OUTPUT
PROGRAM VerticalGreeting(INPUT, OUTPUT);
BEGIN
WRITELN(‘HELLO’);
WRITELN(‘THERE’)
END.
Таблица выполнения для программы VerticalGreeting
|
OUTPUT |
PROGRAM VerticalGreeting(INPUT, OUTPUT) BEGIN WRITELN(‘HELLO’) WRITELN(‘THERE’) END
|
_ _ HELLO/_ HELLO/THERE/_ HELLO THERE |
OUTPUT в данном случае имеет два маркера конца строки, поскольку оператор WRITELN переводит курсор в начало новой строки, и он был использован дважды. После первого оператора WRITELN нет никакой возможности произвести вывод данных на первую строку, где напечатано HELLO.
Оператор WRITELN может быть использован без данных для того чтобы закрыть строку в OUTPUT. Таким образом с помощью оператора WRITELN мы можем разметить данные в OUTPUT на нескольких строках.