Ћекции.ќрг


ѕоиск:




 атегории:

јстрономи€
Ѕиологи€
√еографи€
ƒругие €зыки
»нтернет
»нформатика
»стори€
 ультура
Ћитература
Ћогика
ћатематика
ћедицина
ћеханика
ќхрана труда
ѕедагогика
ѕолитика
ѕраво
ѕсихологи€
–елиги€
–иторика
—оциологи€
—порт
—троительство
“ехнологи€
“ранспорт
‘изика
‘илософи€
‘инансы
’ими€
Ёкологи€
Ёкономика
Ёлектроника

 

 

 

 


—имвольные данные




 

 ак правило, в программах требуетс€ загружать данные в переменные программы, чтобы использовать эти переменные внутри программы. ƒанные загруженные в переменную могут быть скопированы в другие переменные или выведены в OUTPUT.

 

Ќовые идеи: оператор READ, VAR, символьные переменные, идентификаторы, декларативна€ часть, INPUT, оператор присваивани€, оператор присваивани€, символьные литералы, комментарии, аннотированный вывод, эхо ввода.

 

ѕеременна€ с символьным значением может быть описана в декларативной части программы. ƒекларативна€ часть программы Ц начинаетс€ заголовком, который содержит стандартное слово VAR (VARiables). ƒалее следуют описани€ переменных, которые состо€т из идентификаторов и стандартного слова CHAR, которое описывает тип данных переменной. “очка с зап€той отдел€ет декларативную часть от предложени€ BEGIN.

 

Ќапример:

 

VAR

Ch:CHAR;

 

ќписывает декларативную часть где идентификатор Ch. Ch Ц переменна€, CHAR Ц ее тип данных, в данном случае символьный. ќбычно говор€т, что в декларативной части мы описали переменную Ch типа CHAR.

 

–ассмотрим программу CopyChar

 

¬тора€ строка программы заключена в фигурные скобки. Ёто комментарий, он никак не вли€ет на выполнение программы ѕаскаль-машиной. ќбычно в комментари€х располагаетс€ информаци€, необходима€ дл€ понимани€ программы, например, другими программистами.

Ќаличие грамотных комментариев в программе €вл€етс€ элементом хорошего стил€ программировани€.

 

PROGRAM CopyChar (INPUT, OUTPUT);

{¬ыводит первый символ из INPUT в OUTPUT}

VAR

Ch: CHAR;

BEGIN

READ(Ch);

WRITELN(Ch)

END.

 

INPUT: ABC

OUTPUT: A

 

¬ символьную переменную Ch могут быть загружены данные размером в один символ, не более. ¬ программе CopyChar используетс€ оператор READ, который загружает данные из INPUT в переменную Ch. ƒругими словами, в предложении READ переменной Ch присваиваетс€ значение первого доступного символа в INPUT.

—ледующее далее оператор WRITELN помещает значение переменной Ch в OUTPUT.  ак мы видим, оператор WRITELN способен выводить значение переменных в OUTPUT. ¬ предыдущих примерах оператор WRITELN выводил символьные строки, заметьте, что Ch не заключено в апострофы.

 

“аблица выполнени€ дл€ программы CopyChar

 

  INPUT OUTPUT Ch
  PROGRAM CopyChar (INPUT, OUTPUT) VAR Ch: CHAR BEGIN READ(Ch) WRITELN(Ch) END.   ABC A BC   A BC   A B C A B C   _   _   _ A/_ A   ?   A A

 

“аблица имеет новые столбцы, показывающие данные в INPUT и значение переменной Ch.

INPUT содержит символьную строку ABC до того как началось выполнение программы.  урсор, изображенный символом подчеркивани€, создаетс€ первой строкой программы, он отмечает первый символ входной последовательности ABC, который может быть считан программой.

ѕеременна€ Ch не существует до выполнени€ третьей строки программы, содержащей объ€вление переменной Ch. ѕосле выполнени€ третьей строчки программы переменна€ Ch создаетс€, но ее значение неопределенно, там может быть любое символьное значение, поэтому мы обозначим его знаком вопроса. ѕочему так происходит, мы поговорим позднее. Ёто не означает, что Ch принимает значение '?', мы используем знак вопроса как специальный символ аналогично специальному символу / дл€ маркера конца строки.

ќператор READ(Ch); измен€ет состо€ние INPUT и переменной Ch. ¬ переменную Ch загружаетс€ из INPUT символ в позиции курсора (СAТ) и курсор в INPUT перемещаетс€ на одну позицию.

ќператор WRITELN выводит содержимое переменной Ch (СAТ) в OUTPUT и перемещает курсор на одну позицию. ѕосле выполнени€ последней строки курсоры в INPUT и OUTPUT пропадают, переменна€ Ch уничтожаетс€.

–езультаты выполнени€ программы Ц это изменение INPUT и OUTPUT.  онечно, в INPUT нет новых данных, но OUTPUT содержит результат выполнени€ программы. ѕеременна€ Ch не оставила никаких следов, потому что она существует только во врем€ выполнени€ программы.

ѕопробуем проследить несколько вариантов выполнени€ CopyChar с различным входными данными.

 

INPUT: ABC

OUTPUT: A

 

INPUT: A

OUTPUT: A

 

INPUT: XAABB

OUTPUT: X

 

“еперь попробуем помен€ть местами предложени€ READ и WRITELN

 

PROGRAM Garbage (INPUT, OUTPUT);

{ѕисать ничего не прочитав - ошибка}

VAR

Ch: CHAR;

BEGIN

WRITELN(Ch);

READ(Ch)

END.

 

INPUT: ABC

OUTPUT:?

 

INPUT: A

OUTPUT:?

 

INPUT: XYZ

OUTPUT:?

 

—имвол знака вопроса в OUTPUT означает, что результат не определен и в OUTPUT может оказатьс€ любой символ, поскольку при выполнении оператора WRITELN значение переменной Ch еще не определено. Ќеопределенные данные обычно называютс€ мусором (Garbage).

 

“аблица выполнени€ дл€ программы Garbage

  INPUT OUTPUT Ch
  PROGRAM Garbage (INPUT, OUTPUT) VAR Ch: CHAR BEGIN WRITELN(Ch) READ(Ch) END. ABC A BC   A BC   A BC A B C   _   _   ?/_ ?/_ ?   ?   ? A

 

ќшибочна€ программа Garbage преподает нам очень важный урок. ѕаскаль-программа выполн€ет инструкции именно в той последовательности, в которой они написаны и программист должен быть аккуратен, чтобы данные не были использованы неправильно или потер€ны, как в данном случает, где мы потер€ли данные в INPUT и вывели ошибочные данные в OUTPUT.

ѕрограмма CopyTwice дает нам еще один пример работы ѕаскаль-машины, вроде бы как она должна копировать два символа из INPUT в OUTPUT, но этого не происходит.

 

PROGRAM CopyTwice (INPUT, OUTPUT);

{ќшибочна€ попытка скопировать два символа из INPUT в OUTPUT}

VAR

Ch: CHAR;

BEGIN

READ(Ch);

READ(Ch);

WRITE(Ch);

WRITELN(Ch)

END.

 

INPUT: ABC

OUTPUT: BB

 

INPUT: XXY

OUTPUT: XX

 

≈сли построить таблицу выполнени€ дл€ программы CopyTwice, мы увидим, что первый символ из INPUT считанный в переменную Ch перекрываетс€ вторым символом, считываемым второй инструкцией READ в ту же переменную, поэтому в OUTPUT дважды выводитс€ одно и то же значение Ц второй символ в INPUT.

 

PROGRAM Copy2 (INPUT, OUTPUT);

{ опирует первые два символа из INPUT в OUTPUT}

VAR

Letter: CHAR;

BEGIN

READ(Letter);

WRITE(Letter);

READ(Letter);

WRITELN(Letter)

END.

 

INPUT: ZZ

OUTPUT:ZZ

 

INPUT:AZURE

OUTPUT:AZ

 

INPUT:3.14

OUTPUT:3.

 

¬ переменной Letter размещаютс€ различные значени€ в разное врем€, и не всегда буквы, поэтому она демонстрирует не очень удачный подход к именованию переменных.

 

ѕрограммы могут использовать несколько переменных.

 

PROGRAM CopyReversed (INPUT, OUTPUT);

{ опирует первые два символа из INPUT в OUTPUT в обратном пор€дке}

VAR

Ch1, Ch2: CHAR;

BEGIN

READ(Ch1, Ch2);

WRITELN(Ch2, Ch1)

END.

 

INPUT:ZA

OUTPUT:AZ

 

INPUT:AZURE

OUTPUT:ZA

 

 огда в операторах READ WRITE встречаетс€ более чем один элемент данных, эти предложени€ ведут себ€ как последовательность операторов READ и WRITE с одним элементом данных. ¬ариантов компоновки операторов WRITE и READ может быть множество.

 

READ(Ch1, Ch2) эквивалентно READ(Ch1); READ(Ch2)

WRITELN(Ch1, Ch2) эквивалентно WRITE(Ch1); WRITE(Ch2); WRITELN

 





ѕоделитьс€ с друзь€ми:


ƒата добавлени€: 2015-01-25; ћы поможем в написании ваших работ!; просмотров: 1366 | Ќарушение авторских прав


ѕоиск на сайте:

Ћучшие изречени€:

Ѕутерброд по-студенчески - кусок черного хлеба, а на него кусок белого. © Ќеизвестно
==> читать все изречени€...

600 - | 643 -


© 2015-2023 lektsii.org -  онтакты - ѕоследнее добавление

√ен: 0.023 с.