Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
TURBO PASCAL.doc
Скачиваний:
41
Добавлен:
09.06.2015
Размер:
948.74 Кб
Скачать

Повторить действие? (y/n):

Здесь видно, что ввести нужно всего лишь одну букву - Y или N. Заводить для этого целую строку нецелесообразно, хотя и можно. Но при этом программа получается более громоздкой - целая строка используется для хранения всего лишь одного символа. При этом мы теряем память, засоряя ее; работа несколько замедляется, так как строки долго обрабатываются. В общем, здесь встает вопрос оптимизации, который волнует абсолютно всех программистов на свете.

Именно для таких целей - оптимизации - существует один тип, тоже символьный, он более простой, чем строки. Это тип Char.

Char - Переменная этого типа способна хранить всего лишь один символ. Это как бы строка, но с максимальной длиной, равной единице. Он очень удобен для некоторых случаев: невероятно экономит память, ускоряет работу и позволяет легче состалять программу.

Вот примеры присваивания значений переменной типа Char:

Program UseCHAR;

var

C: Char;

begin

C := 'Y';

Write(C);

C := ':';

Write(C);

Readln(C);

If C <> 'Y' Then Write('C не является буквой Y!');

Readln;

end.

Посмотрите внимательно на пример. Он очень простой, введите его в Паскале и посмотрите, что он делает. При его работе выводиться: Y: после чего программа ждет ввода. Если введенный символ не буква Y, то об этом сообщается пользователю. Необходимые пояснения к типу Char.

  1. Переменной типа Char можно прямо в программе присвоить значение. Это делается посредством знака присваивания: ":=", после которого должен находиться символ, заключенный в одиночные кавычки (апострофы): 'A'.

  2. Переменную можно с успехом использовать в конструкциях сравнения;

  3. Ее можно читать с клавиатуры. При этом если мы введем строку, состоящую из нескольких символов, то значением переменной Char станет только 1-й символ.

  4. Его можно прибавлять к строке:

Program UseCHAR;

var

C: Char;

S: String;

begin

Write('Введите строку: ');

Readln(S);

Write('Введите символ: ');

Readln(C);

S := S + C;

Write('Если это сложить, получиться: ',S);

Readln;

end.

Но вычитать нельзя!!! Запомните это.

  1. Переменная типа Char может хранить совершенно любой символ, в том числе и букву русского языка (знак кириллицы).

Ну а теперь, напоследок, напишем программу, которая будет очень хорошо демонстрировать использование строк, символов, сравнения и goto.

Программа будет читать символы с клавиатуры, пока не прочитает символ "!" - восклицательный знак. Он будет служить сигналом окончания ввода. Все читаемые символы будут записываться в строку, которая по окончанию действия выведстя на экран. Начнем?

Для начала, как всегда, запишем алгоритм программы, то есть определимся, что она будет делать и расскажем это простым человеческим языком. Условимся, что мы имеем две переменных

- S: String; - в нее будут записываться все вводимые символы;

- C: Char; - этот символ будет постоянно читаться с клавиатуры.

А теперь алгоритм:

  1. Читаем символ с клавиатуры;

  2. Проверяем - если это не "!", то:

    1. Добавляем введенный символ в строку (прибавляем его к строке);

    2. Переходим у вводу символа - пункту 1.

Иначе (символ = !):

  1. Выводим составленную строку на экран;

  2. Ставим Readln; тем самым затормаживая программу;

  3. Завершаем программу;

Вот вроде и все. Теперь текст программы:

Program Primer;

label

A;

var

C: Char;

S: String;

begin

A;

Write('Введите символ: ');

Readln(С);

If C <> '!' Then

begin

S := S + C;

Goto A;

end

else

Write('Вы ввели эти символы: ',S);

Readln;

end.

Введите эту программу и запустите. Как вам ее работа? Она делает все то, что и планировалось, помещает вводимые символы в строку и выводит ее на экран. Объяснять эту программу по шагам я не буду, разбирайтесь сами, это будет очень полезно. Советую написать что-нибудь самостоятельно в этом роде; придумайте условие и реализуйте его.

А пока на сегодня про Паскаль все, осталась небольшая практика.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]